Skip to content

fix(console): slice 7 self-review — Debug drawer visible-when-hidden bug + polish - #90

Merged
brettchien merged 1 commit into
mainfrom
feat/console-nav-slice-7-review-fixes
Aug 18, 2026
Merged

fix(console): slice 7 self-review — Debug drawer visible-when-hidden bug + polish#90
brettchien merged 1 commit into
mainfrom
feat/console-nav-slice-7-review-fixes

Conversation

@brettchien

Copy link
Copy Markdown
Contributor

Slice 7/7 of console-navigation-ia ADR (#83) — usercron adr83-impl runbook. Self-review now that all six implementation slices (#84#89) are merged.

Per the runbook, this reads the full post-slice-6 console/ (not per-slice diffs) against the ADR §7 mockups and checks for the #82 class of bug — this time with a Playwright render check (headless Chromium + screenshots) rather than reading alone, since "does hidden actually hide it" isn't reliably answerable from source.

Found

  • #debug-drawer rendered from first paint, hidden attribute notwithstanding. .debug-drawer { display: flex; ... } (needed for its flex-column layout) and the [hidden] UA-stylesheet rule (display: none) have equal CSS specificity — the later author rule won the cascade, so the drawer (position: fixed, z-index: 50) covered the whole app before any [⚙] was ever clicked. Confirmed via getComputedStyle in a headless render (screenshot in the commit description reproduces it), fixed with .debug-drawer[hidden] { display: none }. Checked every other hidden-toggled element in the console (#deploy-wrap, #fleet-detail, #config-editor, #mcpio, #debug-config) the same way — none of them set their own display on the toggled element, so none have this problem.
  • The drawer also visually covered the topbar's right-side controls (cluster/poll status, theme/update buttons) while open — same render check. Gave .topbar its own stacking context (position: relative; z-index: 60, above the drawer's 50) so it stays on top, per Part E ("persistent chrome... spans every screen").
  • No duplicate ids or dangling getElementById references anywhere in console/ — checked exhaustively (every id= vs every getElementById("...") call), all clean (the two duplicate-id bugs of this class were already caught and fixed in feat(console): collapse Activity/MCP/Config into a Debug drawer (slice 6/6) #89).

Also cleaned up

Small residue from reading the whole file instead of per-slice diffs: dead .logs CSS (nothing has used that class since Activity/MCP/Config moved into the drawer), and two stale "Compose tab"/"Config tab" code comments left over from before Compose stopped being a tab and Config moved into the drawer.

Checked, no issues

Persistent management chat across all three drill-down depths, [+ New fleet]/[+ Add instance]/[⚙] wiring at every mockup location, class-naming reuse across the six independently-implemented slices (cfg-btn, fd-btn/fd-gear reused consistently rather than redefined per-slice).

Verification

  • tsc --noEmit — clean
  • vitest run — 107/107 passing
  • vite build — clean
  • Playwright (headless Chromium, manually run — not part of CI): confirmed drawer hiddendisplay: none again after the fix, confirmed topbar stays visually on top when the drawer opens

Progress table: this is 7/7 — all slices land after this merges.

🤖 Generated by Orca (ecs-claude), usercron adr83-impl.

…bug + polish

Self-review of console-navigation-ia (ADR #83) now that all six
implementation slices are merged — read the full post-slice-6 console/
(not per-slice diffs) against the ADR §7 mockups and checked for the
#82 class of bug (duplicate ids, getElementById grabbing the wrong
element, `hidden` not actually toggling).

Found via a Playwright render check (headless Chromium, screenshots),
not just reading:

- **`#debug-drawer` was visible from first paint, `hidden` attribute
  notwithstanding.** `.debug-drawer { display: flex; ... }` and the
  `[hidden]` UA-stylesheet rule have equal specificity — the later
  author rule won the cascade, so the drawer (position: fixed,
  z-index: 50) rendered on top of the whole app before any `[⚙]` was
  ever clicked. Fixed with a `.debug-drawer[hidden] { display: none }`
  override. Every other `hidden`-toggled element in the console
  (`#deploy-wrap`, `#fleet-detail`, `#config-editor`, `#mcpio`,
  `#debug-config`) was checked the same way and doesn't have this
  problem — none of them set their own `display` on the toggled
  element itself.
- The drawer also visually covered the topbar's right-side controls
  (cluster/poll status, theme/update buttons) while open, confirmed by
  the same render check. Gave `.topbar` its own stacking context
  (`position: relative; z-index: 60`, above the drawer's 50) so it
  stays on top, per Part E ("persistent chrome... spans every
  screen").
- No duplicate ids or dangling `getElementById` references anywhere in
  `console/` (checked exhaustively — every id is unique, every
  `getElementById` call target exists).

Also two small cleanups surfaced by reading the whole file instead of
per-slice diffs: `.logs` (dead CSS — nothing has used that class since
Activity/MCP/Config moved into the Debug drawer) and two "Compose
tab"/"Config tab" code comments left over from before Compose stopped
being a tab and Config moved into the drawer.

No other mockup-fidelity or cross-slice consistency issues found —
persistent chat, `[+ New fleet]`/`[+ Add instance]`/`[⚙]` wiring, and
class-naming reuse (`cfg-btn`, `fd-btn`/`fd-gear`) all check out
against ADR §7.
@brettchien
brettchien merged commit d78ed19 into main Aug 18, 2026
2 checks passed
@brettchien
brettchien deleted the feat/console-nav-slice-7-review-fixes branch August 18, 2026 22:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant