Convert the two TODO items into append-mode phases (Protocol B): 18_nav_hamburger (TODO L3) and 19_ups_events_expandable (TODO L4), numbered after the existing todo phases. TODO.md is cleared to an empty list; its items now live in .agents/phases/todo/. LLM-Generated: true
3.0 KiB
3.0 KiB
Task 01 — The hamburger button markup
Phase: 18_nav_hamburger · Source: TODO.md:3 — "The nav bar needs to collapse into a hamburger like brain of reese does"
Story: n/a
Objective
The seven pages that carry the tab nav each gain the hamburger button and the nav id, so the (later task's) CSS and binding have stable anchors to work on. The markup is identical on every page, and /login — which deliberately renders only the brand link and the theme toggle — stays untouched.
Work
src/dashboards/web/pages/index.html·system.html·disks.html·llm.html·ups.html·settings.html·certs.html— in each masthead, immediately beforenav class="tabs", add the toggle:and give the nav its id:<button class="ghost nav-toggle" id="nav-toggle" type="button" aria-expanded="false" aria-controls="nav-tabs" aria-label="Toggle navigation">☰</button><nav class="tabs" id="nav-tabs" aria-label="Dashboards">. The button sits between.brandandnav.tabs, inside the same<header class="masthead">— one element per page, no script changes in this task.src/dashboards/web/static/dash.css— add the one base rule beside the otherbutton.ghost, a.ghostfamily (the masthead section):.nav-toggle { display: none; }— the button is invisible on every width until task 02's ≤640px block shows it, so the project stays exactly as it looks today after this task.src/dashboards/web/pages/login.html— no change. Verify bygrep -c 'id="nav-toggle"'returning 0 (the pin lands in task 04).ASSUMPTION:the TODO named brain of reese's behaviour, not its breakpoint or glyph. This task takes the 640px breakpoint (brain's(max-width: 640px)anddash.css's existing 640px block) and the☰glyph witharia-label="Toggle navigation"; the CSS task owns the visual.ASSUMPTION:only the tab nav collapses on phones. Themasthead-rightcluster (#nav-statusdots, pause,⚷ Certs,⚙ Account, theme toggle) stays visible; the masthead wraps to two rows at ≤640px (task 02).
Testing & Quality
- Integration: the served pages still pass the untouched masthead pins (
test_the_disks_tab_is_in_the_masthead_of_every_page,test_every_page_links_to_both_admin_pages) and the orphan-idaudit —#nav-toggleis referenced by the (task 02) stylesheet rule andaria-controls, so the audit must not flag it - Coverage: >90% on modified code (HTML only — the gate's
node --checkand pytest suite are the checks)
Completion Criteria
grep -l 'id="nav-toggle"' src/dashboards/web/pages/*.htmllists exactly the seven tabbed pages, neverlogin.html- every one of the seven carries the identical button block and the
navid (diff of the blocks across pages is empty) uv run pytest -qgreen;bash .agents/validate.shgreen- no behavior change: at every width the pages render exactly as before after this task (the button is
display:nonefrom the base rule shipped with it)