# Batoi Press 1.2.0

Batoi Press 1.2.0 makes themes a complete presentation contract and adds site-managed public branding while preserving existing 1.x themes and content.

## Branding

- Adds brand-logo upload, preview, replacement, removal, and accessible alt text to Settings.
- Supports text, logo, and logo-plus-text public header modes with site-name fallback.
- Validates SVG, PNG, WebP, JPG/JPEG, and GIF logo content with size and dimension limits.
- Stores site-owned branding in typed site asset paths and records semantic branding audit events.
- Preserves the Batoi Press logo and favicon for the Admin Console.

## Theme Contract

- Adds normalized schema-versioned theme manifests while accepting existing minimal manifests.
- Adds safe `/theme-assets/{theme}/{path}` delivery for bundled CSS, JavaScript, images, and fonts.
- Supports ordered manifest styles and scripts with media, defer, async, and module metadata.
- Passes documented `$theme` and `$branding` contexts to layouts and partials.
- Adds the base-path-aware `bp_theme_asset()` helper.
- Shows theme validation and bundled-asset status in Admin Themes.

## Theme Operations And Security

- Adds preview targets for home, page, post, blog, archive, and 404 layouts.
- Moves preview banner injection into the renderer so custom body classes remain compatible.
- Enforces manifest, required template, declared asset, archive count, file size, extracted size, duplicate path, traversal, link, encryption, and executable-file checks.
- Restricts theme PHP files to approved layout and partial directories.
- Publishes validated themes atomically.
- Supports same-slug theme upgrades with timestamped backups and rollback-safe replacement.
- Prevents activation of invalid themes.

## Static Export

- Renders pages, posts, blog, archive, and 404 output through the active theme.
- Includes the live header, footer, navigation, branding, favicon, application assets, active-theme assets, typed assets, libraries, and legacy media.
- Rewrites local links with depth-aware relative paths for subdirectory-safe static hosting.
- Verifies themed output and every expected active-theme asset in the generated ZIP.

## Compatibility

- Existing sites default to text branding when new settings are absent.
- Existing minimal theme manifests normalize to schema version 1.
- Existing template variables, public routes, content files, `/media/` paths, and library packages remain compatible.
- Existing favicon paths continue to resolve.

## Verification

- PHP syntax, smoke, update, asset library, media, security, access-control, theme, branding, static-export, and browser checks passed.
