I3229 — Every version badge says whose version it is and how it stands to the latest release
Label the navbar's version badge on the site (the release it published), on /ui and /cockpit (the executable serving the page) and on the snapshots (the commit read), and when the executable differs from the latest published (offered) release say 'ahead of' or 'behind' it, from distribution.releases and the compiled version, never release.version, through new slots of the shared navbar.
PŘIPRAVENO vlna 1 · p3 · profil implementation · bezpečné paralelně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3229 bude přijato.
Cíl
Label the navbar's version badge on the site (the release it published), on /ui and /cockpit (the executable serving the page) and on the snapshots (the commit read), and when the executable differs from the latest published (offered) release say 'ahead of' or 'behind' it, from distribution.releases and the compiled version, never release.version, through new slots of the shared navbar.
Proč
On 2026-10-12 the homepage showed v0.20.0 while /ui declared executable v0.22.0 and the latest release was v0.21.0, with nothing telling a visitor why (dated observation). Sources: chatgpt-majordomus:c235#2.
Aktuální stav
apps/majordomus-cli/src/ui/navbar.rs fills the badge with the executable's version; site/templates/partials/navbar.html names the release the site published; rule the-site-offers-the-release-it-published holds homepage, installer and release equal; neither badge names its kind.
Cílový stav
The badge's accessible name and title say which version it is; the comparison is derived.
Rozsah
- apps/majordomus-cli/src/ui/navbar.rs
- site/templates/partials/navbar.html
- scripts/ui
- scripts/lib/ui-navbar.mjs
- apps/majordomus-cli/src/ui/navbar.html
- apps/majordomus-cli/src/cockpit/view.rs
- apps/majordomus-cli/src/web/report/snapshot.rs
- docs/MAJORDOMUS_UI.md
- .ai/repo/project/intents
Mimo rozsah
- Changing which version each surface shows
Závislosti
Kritéria přijetí
- Each surface's badge names its kind
- An executable ahead of the latest release says so on /ui
- The labelled badge and its ahead/behind phrase fit the bar at 390 px with no horizontal scroll (scripts/ui audit at phone width)
- docs/MAJORDOMUS_UI.md says whose version each surface's badge shows
- The kind label and the ahead/behind phrase are new slots in site/templates/partials/navbar.html and ui-navbar.mjs fragmentOf; ui/navbar.html is regenerated and `scripts/ui navbar` passes
- The comparison reads distribution.releases (records only) and the compiled version, never release.version, and every /ui screen keeps its 100 ms warm p95 budget
- 'Latest release' means the published (offered) release, as the site's badge does; the data-release attribute no longer labels the executable's version as a release
- The PR adds apps/majordomus-cli/tests/ui_version_badge.rs and rewrites criterion a-version-says-whose-it-is to `evidence: test` with that ref
Validace
- scripts/ui navbar
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib ui::navbar
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test ui_version_badge
- majordomus bench --check
Požadované důkazy
- apps/majordomus-cli/tests/ui_version_badge.rs
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3229.yaml. Read it back with majordomus plan show I3229.