I2770 — majordomus ui a Cockpit nosí navigační lištu webu: jeden renderer, stejné styly a skripty a porovnání v prohlížeči, které odmítne rozdíl
Udělat z majordomus.dev referenci vzhledu produktu tím, že každá obrazovka majordomus ui a každá stránka Cockpitu dostane vlastní navbar webu: lištu, kterou vykresluje partial webu nad site/data/nav.toml, vyříznutou ze sestaveného webu a zkompilovanou do spustitelného souboru, stylovanou stejným sestavením Tailwindu nad stejnými tokeny, řízenou vlastními skripty webu a držící laťku webu podle srovnání v prohlížeči v obou motivech a při každé deklarované šířce.
HOTOVO vlna 0 · p1 · profil implementation · bezpečné souběžně
Cíl
Udělat z majordomus.dev referenci vzhledu produktu tím, že každá obrazovka majordomus ui a každá stránka Cockpitu dostane vlastní navbar webu: lištu, kterou vykresluje partial webu nad site/data/nav.toml, vyříznutou ze sestaveného webu a zkompilovanou do spustitelného souboru, stylovanou stejným sestavením Tailwindu nad stejnými tokeny, řízenou vlastními skripty webu a držící laťku webu podle srovnání v prohlížeči v obou motivech a při každé deklarované šířce.
Proč
Vlastník, 2026-10-16: oficiální web majordomus.dev je referencí pro pravidla stylu a UI/UX; /ui a Cockpit musí být z něj odvozeny, se stejným rozložením a pixelově shodnou navigační lištou. Změřeno toho dne: lišta webu je vysoká 73 px při 1440 a 65 px při 390, písmo 16 px, se značkou a releasem, čtyřmi menu, hledáním, přepínačem motivu, produktem, GitHubem a výzvou k akci; lišta UI byla 67 px vysoká nástrojová lišta vedle 240 px postranního panelu s vlastní značkou (119 px vysoký při 390), písmo 14 px, bez jediné položky webu; lišta Cockpitu třetí, 53 px, písmo 13,5 px. Tokeny byly sdílené (jeden otisk --mj-design) a lišty byly tři.
Aktuální stav
Web vykresluje svůj navbar ze site/data/nav.toml přes site/templates/partials/navbar.html; apps/majordomus-cli/src/ui/shell.rs kreslí vlastní značku v postranním panelu a horní lištu, apps/majordomus-cli/src/cockpit/view.rs třetí; nic je neporovnává.
Cílový stav
scripts/ui navbar --write vyřízne lištu z buildu webu do apps/majordomus-cli/src/ui/navbar.html, který ui/navbar.rs zkompiluje a vyplní verzí executable, přičemž položku produktu vede na živé UI, pro shell UI i Cockpitu; share/ui/src/ui.css a share/cockpit/src/cockpit.css kompilují utility, které tento soubor jmenuje; nav.js a theme.js pod share/ui/ a share/cockpit/ jsou bajtové kopie webových, zapisované a kontrolované scripts/cockpit-assets; scripts/ui navbar, spouštěný jako první v scripts/ui audit (kontrola ui-audit), odmítne zastaralou kopii i jakýkoli rozdíl mezi lištou webu a lištou /ui či /cockpit v elementu, boxu nebo vypočteném stylu; project.the-ui-wears-the-sites-navbar to stanoví.
Rozsah
- site/templates/partials/navbar.html
- apps/majordomus-cli/src/ui/navbar.rs
- apps/majordomus-cli/src/ui/navbar.html
- apps/majordomus-cli/src/ui/shell.rs
- apps/majordomus-cli/src/ui/mod.rs
- apps/majordomus-cli/src/cockpit/html.rs
- apps/majordomus-cli/src/cockpit/view.rs
- apps/majordomus-cli/src/cockpit/mod.rs
- share/cockpit/src/cockpit.css
- share/cockpit/cockpit.css
- share/cockpit/cockpit.js
- share/cockpit/nav.js
- share/cockpit/theme.js
- scripts/lib/cockpit-probe.mjs
- docs/COCKPIT.md
- apps/majordomus-cli/src/design/render.rs
- share/ui/src/ui.css
- share/ui/ui.css
- share/ui/ui.js
- share/ui/nav.js
- share/ui/theme.js
- scripts/ui
- scripts/lib/ui-navbar.mjs
- scripts/lib/ui.test.mjs
- scripts/cockpit-assets
- .ai/repo/rules/project/the-ui-wears-the-sites-navbar.v1.md
- docs/DESIGN_SYSTEM.md
- docs/MAJORDOMUS_UI.md
- .ai/repo/project/issues/I2770.yaml
Mimo rozsah
- Publikovaný snímek Cockpitu nemá žádný skript, takže jeho kopie lišty tam nemá funkční nabídky; dát snímku dva skripty lišty je změna předmětu exportéru
- Druhá deklarace navigace nebo druhý renderer lišty pro jakýkoli povrch
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
Kritéria přijetí
- Každá obrazovka UI a stránka Cockpitu nese právě jeden nav[aria-label=Main], ten webový, s verzí spustitelného souboru a položkou produktu vedoucí na /ui
- scripts/ui navbar nehlásí žádný rozdíl mezi lištou na titulní stránce webu a na /ui a /cockpit v každé deklarované šířce, světlé a tmavé, zavřené i s otevřenou nabídkou
- Kopie, která není sestavenou lištou, a skript ze share/ui, který nemá bajty webu, každý selže při své kontrole
Validace
- scripts/site-build && scripts/ui navbar
- scripts/ui test
- scripts/cockpit-assets --check
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib -- ui::navbar ui::shell cockpit::html
Požadované důkazy
- navbar_parity_run
- navbar_unit_tests
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| navbar_parity_run | test | scripts/site-build --no-data && scripts/ui navbar --port 8811; scripts/ui test; scripts/cockpit-assets --check | navbar: 40 porovnání lišty webu s /ui a /cockpit při 320, 390, 1024, 1280, 1600 px, světlý a tmavý, zavřený a otevřený: 0 rozdílů; test ui 39 prošel; cockpit-assets čisté (kód od 3a8ca854904, předka 4a4573690f8; znovu spuštěno na 4a4573690f8) | 4a45736 |
| navbar_unit_tests | test | cargo test --lib -- ui::navbar ui::shell cockpit::html | prošlo (56 v kombinovaném běhu s mesh::journal), vč. the_compiled_bar_is_the_sites (kód od 3a8ca854904, předek 4a4573690f8; znovu spuštěno na 4a4573690f8) | 4a45736 |
Časová osa
- zahájeno
- 2026-10-17T18:26:19Z
- ověřeno
- 2026-10-17T18:26:31Z
- dokončeno
- 2026-10-17T18:26:36Z
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.
Kanonický záznam: .ai/repo/project/issues/I2770.yaml. Přečtěte jej zpět přes majordomus plan show I2770.