You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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>
Copy file name to clipboardExpand all lines: docs/superpowers/plans/2026-09-08-navbar-redesign.md
+22Lines changed: 22 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2173,5 +2173,27 @@ Before opening a PR, confirm each of these ran and passed — not that it should
2173
2173
2174
2174
## Known follow-ups, deliberately not in this plan
2175
2175
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
+
2176
2198
- Landing-page heroes for `/langgraph`, `/render`, `/chat`, `/ag-ui`, each adding its own route to `HERO_ROUTES` in the same change.
2177
2199
- 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