veza/apps/web/src/features/player/components
senke 8e9ee2f3a5 fix: stabilize builds, tests, and lint across all stacks
Complete stabilization pass bringing all 3 stacks to green:

Frontend (apps/web/):
- Fix TypeScript nullability in useSeason.ts, useTimeOfDay.ts hooks
- Disable no-undef in ESLint config (TypeScript handles it; JSX misidentified)
- Rename 306 story imports from @storybook/react to @storybook/react-vite
- Fix conditional hook call in useMediaQuery.ts useIsTablet
- Move useQuery to top of LoginPage.tsx component
- Remove useless try/catch in GearFormModal.tsx
- Fix stale closure in ResetPasswordPage.tsx handleChange
- Make Storybook decorators (withRouter, withQueryClient, withToast, withAudio)
  no-ops since global StorybookDecorator already provides these — prevents
  nested Router / duplicate provider crashes in vitest-browser
- Fix nested MemoryRouter in 3 page stories (TrackDetail, PlaylistDetail, UserProfile)
- Update i18n initialization in test setup (await init before changeLanguage)
- Update ~30 test assertions from English to French to match i18n translations
- Update test assertions to match SUMI V3 design changes (shadow vs border)
- Fix remaining story type errors (PlayerError, PlaylistBatchActions,
  TrackFilters, VirtualizedChatMessages)

Backend (veza-backend-api/):
- Fix response_test.go RespondWithAppError signature (2 args, not 3)
- Fix TestErrorContractAuthEndpoints expected error codes
  (ErrCodeUnauthorized vs ErrCodeInvalidCredentials)
- Fix TestTrackHandler_GetTrackLikes_Success missing auth middleware setup
- Fix TestPlaybackAnalyticsService_GetTrackStats k-anonymity threshold
  (needs 5 unique users, not 1)
- Replace NOW() PostgreSQL function with time.Now() parameter in marketplace
  service for SQLite test compatibility
- Add missing AutoMigrate entries in marketplace_test.go
  (ProductImage, ProductPreview, ProductLicense, ProductReview)

Results:
- Frontend TypeCheck: 617 errors -> 0 errors
- Frontend ESLint: 349 errors -> 0 errors
- Frontend Vitest: 196 failing tests -> 1 skipped (3396/3397 passing)
- Backend go vet: 1 error -> 0 errors
- Backend tests: 5 failing -> all 13 packages passing
- Rust: 150/150 tests passing (unchanged)
- Storybook audit: 0 errors across 1244 stories

Triage report: docs/TRIAGE_REPORT.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 16:48:07 +02:00
..
audio-player feat(player): integrate HLS streaming with ABR quality switching 2026-02-22 21:24:40 +01:00
player-bar feat: player — controls, audio analyser, spectrum, queue 2026-03-23 15:45:59 +01:00
AudioPlayer.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
AudioPlayer.test.tsx [FE-TEST-008] test: Add component tests for player components 2025-12-25 17:23:39 +01:00
AudioPlayer.tsx refactor(player): decompose AudioPlayer into audio-player module 2026-02-06 13:37:04 +01:00
AudioSettingsPanel.tsx feat(v0.13.1): conformité audio & player — gapless, crossfade, normalization 2026-03-12 22:38:44 +01:00
AudioVisualizer.test.tsx feat(v0.13.4): polish audio & player — PiP canvas, visualizer, Cast/AirPlay stubs 2026-03-13 13:59:30 +01:00
AudioVisualizer.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
GlobalPlayer.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
GlobalPlayer.tsx feat: player — controls, audio analyser, spectrum, queue 2026-03-23 15:45:59 +01:00
MiniPlayer.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
MiniPlayer.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
MiniPlayer.tsx a11y: skip link exists in App, ChatInput aria-label, sidebar focus trap, MiniPlayer aria-live 2026-02-12 21:55:25 +01:00
NextPreviousButtons.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
NextPreviousButtons.test.tsx test(web): player, playlists, tracks tests; feat(playlists): permissions utils 2026-02-11 22:19:24 +01:00
NextPreviousButtons.tsx style(player): elevate player components to SaaS Premium 2026-02-07 16:01:56 +01:00
PlaybackSpeedControl.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
PlaybackSpeedControl.test.tsx feat(player): Lot F - PlaybackSpeedControl, useMediaSession, waveform 2026-02-20 00:40:53 +01:00
PlaybackSpeedControl.tsx feat: player — controls, audio analyser, spectrum, queue 2026-03-23 15:45:59 +01:00
PlayerControls.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
PlayerControls.tsx feat(web): update all features, stories, e2e tests, and auth interceptor 2026-03-31 19:16:36 +02:00
PlayerError.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
PlayerError.test.tsx test: fix and improve unit tests across multiple features 2026-03-25 23:34:42 +01:00
PlayerError.tsx chore(dx): add .cursorrules and design system audit documentation 2026-02-05 14:20:06 +01:00
PlayerExpanded.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
PlayerExpanded.tsx feat: player — controls, audio analyser, spectrum, queue 2026-03-23 15:45:59 +01:00
PlayerLoading.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
PlayerLoading.test.tsx refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
PlayerLoading.tsx Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy 2026-02-14 17:23:32 +01:00
PlayerQueue.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
PlayerQueue.tsx feat: player — controls, audio analyser, spectrum, queue 2026-03-23 15:45:59 +01:00
PlayPauseButton.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
PlayPauseButton.test.tsx test(web): player, playlists, tracks tests; feat(playlists): permissions utils 2026-02-11 22:19:24 +01:00
PlayPauseButton.tsx style(player): elevate player components to SaaS Premium 2026-02-07 16:01:56 +01:00
ProgressBar.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
ProgressBar.test.tsx test(web): player, playlists, tracks tests; feat(playlists): permissions utils 2026-02-11 22:19:24 +01:00
ProgressBar.tsx style(player): elevate player components to SaaS Premium 2026-02-07 16:01:56 +01:00
QualitySelector.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
QualitySelector.test.tsx test: fix and improve unit tests across multiple features 2026-03-25 23:34:42 +01:00
QualitySelector.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
RepeatShuffleButtons.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
RepeatShuffleButtons.test.tsx test(web): player, playlists, tracks tests; feat(playlists): permissions utils 2026-02-11 22:19:24 +01:00
RepeatShuffleButtons.tsx feat(ui): tooltip adoption + search highlighting & skeleton loading 2026-02-09 23:14:00 +01:00
TimeDisplay.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
TimeDisplay.test.tsx refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
TimeDisplay.tsx style(player): elevate player components to SaaS Premium 2026-02-07 15:33:31 +01:00
TrackInfo.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
TrackInfo.test.tsx refactor(ui): replace gray colors with Sumi tokens 2026-02-17 17:03:57 +01:00
TrackInfo.tsx refactor(ui): replace gray colors with Sumi tokens 2026-02-17 17:03:57 +01:00
VolumeControl.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
VolumeControl.test.tsx test(web): player, playlists, tracks tests; feat(playlists): permissions utils 2026-02-11 22:19:24 +01:00
VolumeControl.tsx feat(ui): tooltip adoption + search highlighting & skeleton loading 2026-02-09 23:14:00 +01:00
WaveformDisplay.stories.tsx fix: stabilize builds, tests, and lint across all stacks 2026-04-05 16:48:07 +02:00
WaveformDisplay.tsx fix: stabilize frontend — 98 TS errors to 0, align API endpoints, optimize bundle 2026-03-24 21:18:49 +01:00