Skip to content

Commit ecb86d0

Browse files
bloveclaude
andcommitted
docs(plans): write down the three deferrals that were only in reviewers' heads
The panel-shape duplication, the NavMobile -> NavDesktop import direction, and MobileLevel.id being an untyped string were all deliberate calls, but none was recorded. An undocumented deferral reads as an oversight later. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 7e0ffd7 commit ecb86d0

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

docs/superpowers/plans/2026-09-08-navbar-redesign.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2173,5 +2173,27 @@ Before opening a PR, confirm each of these ran and passed — not that it should
21732173
21742174
## Known follow-ups, deliberately not in this plan
21752175
2176+
These were all decided during implementation and left alone on purpose. Recorded so a
2177+
later reader can tell a deferral from an oversight.
2178+
2179+
- **The panel column/footer shape is written twice** — `NavDesktop.tsx`'s `Panel` and
2180+
`NavMobile.tsx`'s inline panel render both do column loop → optional heading → items →
2181+
optional footer-with-lead, differing only in the wrapper class. Per-item rendering
2182+
already funnels through the shared `NavPanelItem`, so drift is confined to the wrapper.
2183+
Not fixed here because a clarity refactor of working code is what produced this
2184+
branch's worst defect (the dead Escape key), and repeating it immediately before a
2185+
merge is a bad trade.
2186+
- **`NavMobile.tsx` imports `NavPanelItem` from `NavDesktop.tsx`.** That import is what
2187+
keeps the two surfaces from drifting — the right behaviour through the wrong door. It
2188+
and the duplication above are the same fix: move `NavPanelItem` and the panel body to a
2189+
neutral module.
2190+
- **`MobileLevel.id` is an untyped `string`**, so `{kind:'panel', id:'nonsense'}` type-checks.
2191+
Unreachable today — every call site passes a `trigger.id` from `NAV_TRIGGERS` or a
2192+
module constant — and it degrades gracefully rather than crashing (`mobilePanel()` and
2193+
the ref lookup both return `undefined`, so `?.focus()` no-ops and the level renders
2194+
empty). Constraining it needs `nav-config.ts`'s own `NavTrigger` to expose literal ids
2195+
first, which is pre-existing looseness this branch did not introduce.
2196+
2197+
21762198
- Landing-page heroes for `/langgraph`, `/render`, `/chat`, `/ag-ui`, each adding its own route to `HERO_ROUTES` in the same change.
21772199
- Any analytics dashboard or saved query filtering on `nav_demo_langgraph` / `nav_demo_ag_ui`. Those ids retire here; the demos are reached as `nav_docs_demo_langgraph` and `nav_docs_demo_ag_ui`.

0 commit comments

Comments
 (0)