uiAll notable changes to the ui container are documented in this file.
The format is based on Keep a Changelog, and the container adheres to Semantic Versioning.
The api and ui containers are versioned independently. The UI is
deliberately replaceable; bumping the major here implies a breaking
change to UI-internal surfaces (route paths under /app/*, Twig
templates, internal class names). The HTTP wire contract it speaks to
the api is owned by the api container's changelog.
Tags use the ui-v<MAJOR>.<MINOR>.<PATCH> form so they don't collide
with the api's tags in this monorepo.
POST /report and consumer GET /blocklist) without restarting the api. Posts to a new /app/settings/audit-toggles BFF route that PATCHes /api/v1/admin/app-settings.First stable release. Implements every milestone of SPEC.md from the
UI side (M8–M10, M12–M14) plus shared concerns from M13.
:8080. Twig 3 templates, Tailwind CSS 3 (build-time, no CDN), Alpine.js for interactions, htmx for forms, no client-side framework heavier than that.groups claim mapping); local admin login form with Argon2id password validation against LOCAL_ADMIN_PASSWORD_HASH.ApiClient (Guzzle) plus ImpersonationHeaderMiddleware adding Authorization: Bearer <UI_SERVICE_TOKEN> and X-Acting-User-Id: <user_id> to every outgoing api call.localStorage, defaults to system preference.<time class="irdb-dt" datetime="…">…</time> and a small client pass replaces the text after every page load and htmx swap, with UI_LOCALE BCP 47 fallback.md).GET /healthz) returns 200 even when the api is briefly unreachable, reporting {status, api_reachable, last_api_check_at}.SameSite=Lax/Secure in production.