feat(admin): fullscreen cards, responsive sizing, navbar/sidebar polish (v26.05.12)#23
Merged
Merged
Conversation
…sh (v26.05.12) Addresses dashboard feedback on fixed-height cards, the navbar, and the metric list. Fullscreen / responsive: - New reusable components/fullscreen.js: a maximize button that expands a card to fill the viewport (Escape exits). It re-parents the card to <body> so it escapes the view-enter wrapper's transform containing-block; cancels its pending resize rAF on teardown so no stale onResize fires after cleanup. - Bean Graph: SVG height was hardcoded 600 → now viewport-relative (min(72vh, 820px)), re-lays out on window resize + fullscreen toggle, plus a Reset view control. resizeGraph guards on _destroyed/isConnected; cleanup cancels the resize rAF. - Log Viewer: .logfile-output grows with the viewport (was a fixed 600px) and fills in fullscreen. Loggers / Metrics: - Loggers: Effective Level Distribution bar; table scrolls within a viewport-relative height (sticky header). Distribution includes non-standard levels so segments sum to 100%. - Metrics: the metric-list card stretches to the detail panel's full height (was capped 520px) and scrolls internally. Navbar / sidebar: - Sidebar brand is exactly the navbar height so the two top bars align; shows the pyfly wordmark only (removed the "Admin Dashboard" label). - Navbar: live auto-refresh status pill + a divider + tidier grouped controls. Layering: bean detail panel raised above fullscreen cards; ⌘K palette (1300) and toasts (1400) already sit above the fullscreen layer (1200). Reviewed via adversarial workflow (5 findings fixed). Verified live with Playwright: fullscreen fills the viewport + detail panel layers on top, Escape exits, no orphan overlay on navigation, navbar/brand heights aligned, metric list fills height, zero console errors. Gates green: ruff, format, mypy --strict.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Addresses dashboard feedback: fixed-height cards, the navbar design, and the metric list not using available height.
Fullscreen + responsive
components/fullscreen.js— a maximize button that expands a card to fill the viewport (Escape exits). It re-parents the card to<body>to escape theview-enterwrapper'stransformcontaining-block, and cancels its pending resizerAFon teardown so no stale callback runs after cleanup.600; now viewport-relative (min(72vh, 820px)), re-lays out on window resize + fullscreen toggle, with a Reset view control.resizeGraphguards on_destroyed/isConnected; cleanup cancels the resize frame..logfile-outputgrows with the viewport (was a fixed600px) and fills in fullscreen.Loggers / Metrics
520px) and scrolls internally.Navbar / sidebar
Layering
Bean detail panel raised above fullscreen cards (1260); the ⌘K palette (1300) and toasts (1400) already sit above the fullscreen layer (1200).
Rigor
Reviewed via an adversarial workflow (4 dimensions): 5 findings confirmed and fixed — the highest being a pending-
rAFleak that could restart the D3 simulation after navigation, and the bean detail panel hiding behind a fullscreen graph. (The workflow also rejected two z-index findings I'd already pre-fixed.)Verified live with Playwright: fullscreen fills the viewport and the detail panel layers on top, Escape exits, no orphan overlay when navigating away mid-fullscreen, brand/navbar heights aligned (56px), metric list fills height, zero console errors across all affected views (dark + light, mobile).
Gates
ruff✓ ·ruff format --check✓ ·mypy --strict(577 files) ✓. JS/CSS-only (no Python changes).Version
Bumps to v26.05.12 (pyproject
26.5.12,__version__, uv.lock). CHANGELOG updated.