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.
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.