Skip to content

feat(ui): UI overhaul — consolidates #305-#309 into single PR#620

Open
natiixnt wants to merge 5 commits into
ruvnet:mainfrom
natiixnt:feat/ui-overhaul
Open

feat(ui): UI overhaul — consolidates #305-#309 into single PR#620
natiixnt wants to merge 5 commits into
ruvnet:mainfrom
natiixnt:feat/ui-overhaul

Conversation

@natiixnt
Copy link
Copy Markdown

Consolidates the five stacked UI PRs (#305, #306, #307, #308, #309) into a single comprehensive PR, per discussion on #305 about merge strategy.

Why one PR

All five stacked PRs touched the same shared files (ui/.eslintrc.json, ui/app.js, ui/components/TabManager.js, ui/index.html, ui/style.css) and were forked from older main, so they pairwise-conflicted. Squashing into one comprehensive PR with a single test plan is cleaner than rebasing the stack.

The .claude-flow/agents/* and .claude/agents/* changes flagged in #305 are NOT included here — only ui/ scope.

What's included

Base UX layer (was #305)

  • Keyboard shortcuts manager (with ? help overlay)
  • Performance monitor (FPS, memory, render time)
  • Toast notification system
  • Theme toggle (light/dark, system preference)
  • WCAG accessibility passes (focus rings, ARIA, color contrast)

Power-user tooling (was #306)

  • Command palette (Ctrl+K)
  • Activity log (live event stream)
  • Data export dialog (JSON/CSV)
  • Fullscreen mode
  • Connection status widget

Mobile + PWA (was #307)

  • Hamburger nav drawer for small screens
  • PWA support: service worker, manifest, icons
  • 40 unit tests (ui/tests/unit-tests.html)

Navigation + ambient (was #308)

  • URL hash router (bookmarkable tabs)
  • First-run onboarding tour
  • Idle detection (pauses health polling)
  • Notification center (bell icon)

Localization + display options (was #309)

  • i18n EN/PL with data-i18n attributes
  • Screenshot tool (S key)
  • Quick settings panel (reduced motion, high contrast, compact)
  • Uptime / session clock
  • prefers-reduced-motion support

Test plan

  • Open ui/index.html in Chromium-based browser, confirm app boots without console errors
  • ? opens keyboard shortcuts overlay; all listed bindings fire their actions
  • Ctrl+K opens command palette; fuzzy search hits all registered commands
  • Theme toggle persists across reload (localStorage)
  • Toggle reduced motion in quick settings → animations cease
  • Switch language to PL → all data-i18n strings update
  • Resize to <768px → hamburger appears, drawer opens/closes; desktop nav hidden
  • Service worker registers (DevTools > Application > Service Workers)
  • Tab change updates URL hash; deep-link via hash restores tab
  • Onboarding tour shows on first visit; dismissal persists
  • Idle for >60s with focus elsewhere → health polling pauses (visible in activity log); resume on focus
  • S triggers screenshot of active tab (clipboard or PNG download)
  • Activity log captures connect/disconnect/info/warning/error entries
  • Data export dialog produces valid JSON and CSV for the selected range
  • Run ui/tests/unit-tests.html in browser → 40/40 pass
  • Lighthouse a11y score ≥ 95 on dashboard tab

Replaces

Closing #305, #306, #307, #308, #309 in favor of this PR.

natiixnt added 5 commits May 18, 2026 10:40
…oggle, and WCAG accessibility

- Keyboard shortcuts overlay (press ? for help, 1-8 for tabs, T for theme, P for perf)
- Real-time performance monitor with FPS, memory, latency sparklines (draggable)
- Enhanced toast notification system with stacking, auto-dismiss, progress bars
- Dark/light theme toggle with localStorage persistence and system preference detection
- WCAG accessibility: skip-to-content link, ARIA roles/attributes on tabs and panels,
  arrow key navigation in tab bar, focus-visible outlines
- ESLint config for UI directory with security and quality rules
…mode, connection status

- Command palette (Ctrl+K / Cmd+K) with fuzzy search across tabs and actions
- Activity log panel (L key) with real-time console interception, filters, resizable
- Data export utility (E key) for sensor data as JSON/CSV with dialog
- Fullscreen mode (F key / F11) for visualization tabs with exit button
- Connection status widget in header showing WebSocket state and reconnect
- Mobile hamburger navigation: slide-out drawer replacing tab bar on <768px,
  swipe-to-close, animated hamburger icon, auto-sync with tab manager
- PWA manifest + service worker: installable dashboard, offline shell caching
  (cache-first for static, network-first for API), auto-cleanup of old caches
- 40 unit tests for ToastManager, ThemeToggle, KeyboardShortcuts, PerfMonitor,
  TabManager - browser-based test runner at ui/tests/unit-tests.html
- PWA meta tags: theme-color, apple-mobile-web-app-capable, manifest link
- Icon generator page for creating PWA icons (ui/icons/generate.html)
…ion center

- Hash router: tabs are bookmarkable/shareable via URL (#demo, #sensing, etc.),
  syncs with TabManager, supports browser back/forward navigation
- Onboarding tour: interactive 6-step first-run walkthrough with spotlight
  highlighting, step indicators, skip/back/next controls, localStorage persistence
- Idle detection: pauses health polling and reduces CSS animations after 3 min
  of inactivity, resumes on user interaction, integrates with Page Visibility API
- Notification center: bell icon in header with unread badge, event history panel
  with mark-read/clear, persists across page views via sessionStorage
…motion, uptime clock

- i18n: English/Polish translations with auto-detection, language selector
  in header, data-i18n attributes on dashboard elements, localStorage persistence
- Screenshot tool (S key): captures active tab to clipboard or downloads PNG,
  flash effect, canvas rendering with watermark, fallback for tainted canvases
- Quick settings panel (gear icon): reduced motion toggle, high contrast mode,
  compact layout mode, health polling toggle, clear data, reset onboarding
- Uptime clock: current time + session duration in header
- prefers-reduced-motion: system-level and manual toggle, disables all
  animations and transitions for vestibular accessibility
- High contrast mode: WCAG AAA compliant colors for both light and dark themes
- Compact mode: condensed layout for dense information display
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