Skip to content

Frontend UX, mobile/PWA and performance overhaul #828

Description

@Serph91P

Goal

Overhaul the StreamVault frontend incrementally into a consistent, touch-safe, accessible, performant desktop/mobile/PWA experience without a framework rewrite or feature loss.

Audited baseline

Audit base: develop at 0375667104c9c27523703fea0e6fc6a3c2e26fd0.

Confirmed findings:

  • Global mobile swipe navigation installs duplicate touch listeners on the main content area.
  • Streamer cards combine a full-card link, custom scroll suppression, a 500 ms long-press action menu and capture-phase click suppression.
  • Stream-history rows are too compressed, especially on mobile. The mobile outer row measured about 34 px while the clickable compact area measured about 48 px, with no semantic keyboard contract.
  • Several controls and text links miss the 44 px product target-size standard.
  • Dark mode has contrast failures in streamer detail and videos.
  • The build runs type-check and Vite in parallel against dist, which can leave emitted dist/src files.
  • Settings bypasses the mock/API abstraction in several paths and produces six console errors in the production mock.
  • Two conflicting PWA manifests are linked at runtime.
  • The live-player route contains a 589 kB minified chunk and measured mobile Lighthouse performance 90 with LCP 3.3 s.
  • There are no committed frontend unit or Playwright regression suites.

Positive baseline:

  • Core routes showed no document-level horizontal overflow at 1440, 768, 390 and 360 px.
  • Mobile dashboard Lighthouse measured 98 performance, 95 accessibility and 100 best practices in the local production mock.
  • Desktop streamer detail measured 100/100/100.
  • The service worker and offline shell work in the production mock.

Delivery slices

  1. Deterministic frontend build and automated UX baseline.
  2. Touch, pointer and scroll stabilization.
  3. Enforced UI primitives, typography, spacing and hit-target standards.
  4. Streamer overview and stream-history redesign.
  5. Remaining views, forms, dialogs and responsive shell alignment.
  6. API, store, polling, listener and mock-contract consolidation.
  7. CSS, bundle and PWA optimization.
  8. Cross-platform final acceptance.

Each slice must be delivered as a separate reviewable Draft PR against develop. Later slices must start from the then-current develop; they must not be stacked blindly on an unmerged predecessor.

Global acceptance criteria

  • Scrolling on cards never navigates, expands, opens actions, vibrates or shows a press effect.
  • Primary and icon controls meet the 44 px default target and 48 px mobile target unless an explicit documented exception applies.
  • Streamer and stream-history layouts are readable and comfortably spaced on desktop and mobile.
  • Core flows retain feature parity.
  • Axe has no serious or critical findings on the agreed route/theme matrix.
  • No document-level horizontal overflow exists at 360, 390, 768, 1024 and 1440 px.
  • Mock mode and real API paths follow the same frontend service contracts.
  • No owned listener, timer or reconnect loop survives unmount.
  • The build is deterministic and never emits dist/src source output.
  • Bundle, CSS and PWA budgets are enforced in CI.
  • Android Chrome/PWA, iOS Safari/PWA, Windows Edge/Chrome, macOS Safari and Linux Firefox/Chrome receive explicit acceptance evidence.

Execution policy

Use TDD where practical, keep one writer per file scope, preserve unrelated work and use isolated worktrees. Review and security gates must inspect an immutable PR head in clean detached checkouts. Do not merge, release or deploy without separate authorization.

All soft effort limits are lifted for this program. Correctness, migration safety, compatibility and complete verification take priority. Hard runtime, security, single-writer, review and authorization boundaries remain in force.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions