Commit Graph

10 Commits

Author SHA1 Message Date
Brian Krabach f41061f85f fix: correct sidebar element IDs, add missing CSS classes, and align test mocks
Three-part consistency defect identified in code review:

1. HTML: Four sidebar elements missing CSS class attributes so all CSS
   rules targeting .session-sidebar, .sidebar-toggle-btn,
   .sidebar-collapse-btn, and .sidebar-list applied to zero elements.
   Added class= attributes to all four.

2. JS: initSidebar(), toggleSidebar(), and bindSidebarClickAway() called
   $('sidebar') and $('collapse-btn') — neither ID exists in the DOM.
   Corrected to $('session-sidebar') and $('sidebar-collapse-btn').

3. Tests: initSidebar/toggleSidebar mocks matched the wrong IDs, masking
   the defect. Updated all six mock conditions to match corrected IDs.

4. Coverage gap: test_html_element_classes did not verify new sidebar
   elements carry CSS classes. Added four entries for session-sidebar,
   sidebar-toggle-btn, sidebar-collapse-btn, and sidebar-list — these
   entries would have caught Defect 1 on Task 1's test run.

All 136 JS + 167 Python tests pass. Zero regressions.
2026-03-27 18:02:29 -07:00
Brian Krabach b62bd3e361 feat: add overlay click-away handler for sidebar on narrow screens 2026-03-27 17:49:07 -07:00
Brian Krabach cf6f7daf45 feat: wire renderSidebar into poll loop for live sidebar updates
Added renderSidebar(sessions, _viewingSession) call in pollSessions function after renderGrid(sessions) and before handleBellTransitions(prev, sessions), so sidebar updates on every poll tick alongside dashboard grid. Added test verifying sidebar-list innerHTML is set during pollSessions in fullscreen mode.

🤖 Generated with Amplifier

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
2026-03-27 17:44:19 -07:00
Brian Krabach 93dc92484b feat: pre-render sidebar on openSession before first poll tick 2026-03-27 17:38:36 -07:00
Brian Krabach 9f60ead3d2 feat: wire sidebar toggle button click handlers 2026-03-27 17:23:53 -07:00
Brian Krabach 0c39a79b8a feat: add initSidebar and toggleSidebar with localStorage persistence 2026-03-27 17:18:19 -07:00
Brian Krabach bba862fba3 feat: add renderSidebar — populates sidebar list from session data 2026-03-27 17:11:18 -07:00
Brian Krabach 730ed68a30 feat: add buildSidebarHTML — session card HTML builder for sidebar 2026-03-27 17:05:40 -07:00
Brian Krabach 604525e64c fix: bell badge sizing, text contrast, and empty timestamp display
- .tile-bell: inline-flex badge (min-width:16px height:16px) so it's a
  circle for single digits, pill for '9+'; was display:inline so
  width/height were ignored → oval shape
- .tile-bell color: #0D1117 (dark on amber) — was inheriting muted gray
  from .tile-meta, making count illegible
- formatTimestamp(null): return '' instead of em-dash '—' which rendered
  as a confusing glyph in the tile meta area
2026-03-27 15:32:39 -07:00
Brian Krabach 8234e2ec05 refactor: restructure project into muxplex/ subdir with brand integration
- Move coordinator/, frontend/, Caddyfile, pyproject.toml, requirements.txt,
  docs/ into muxplex/ subdir in prep for packaging/sharing
- Add brand assets to frontend/: favicon.ico, pwa-192/512.png,
  apple-touch-icon.png, wordmark-on-dark.svg
- Update app: title → muxplex, header → wordmark SVG, brand color tokens
  in style.css, manifest.json updated with muxplex name and brand icons
- Add design system: assets/branding/tokens.css (101 CSS custom properties),
  tokens.json (127 tokens), DESIGN-SYSTEM.md (856-line spec)
- Add assets/branding/: SVG sources, rendered PNGs (icons, favicons, PWA, OG)
- Add scripts/render-brand-assets.py for reproducible PNG generation
- Add muxplex/README.md
2026-03-27 15:06:00 -07:00