Files
ersatztv/web
timothy 99fab8e0bb refactor(spa): extract LibrariesScreen from App.tsx (#202 slice S4)
Move the Libraries domain verbatim out of web/src/App.tsx into
web/src/screens/LibrariesScreen.tsx (zero-prop, self-sufficient), mirroring the
ChannelsScreen extraction (#244). Pure structural move: no API, route, CSS, or
visual change. App.tsx retains only the import + the <LibrariesScreen /> dispatch.

- 10 symbols moved (LibrariesLoadingState -> sourceLastScanLabel); App.tsx's
  formatDateTime is inlined into the moved screen so it has no import back into
  App.tsx (behavior-identical), matching the Channels precedent.
- Libraries behavior tests moved to a colocated LibrariesScreen.test.tsx with its
  own scoped fetch mock (renders <LibrariesScreen /> directly); App.test.tsx keeps
  one nav-smoke test for the route.
- Pruned now-dead App.tsx imports (Server, MonitorPlay, Music, FileImage, Folder,
  HardDrive icons; useLibrariesScreenQuery, LibraryScanStatus/MediaSource/
  MediaSourceLibrary types) and the now-dead runPollTick test helper (its doc
  comment named it Libraries-specific).
- Disabled "Add Source"/gear/"Scan All" affordances are unchanged (wired in later
  S5/S6 slices, not here).

Verified: web vitest 584 passed, eslint clean, tsc/vite build clean, check:api no
drift.

refs #202
2026-07-11 15:29:15 +02:00
..
2026-07-07 10:05:39 +02:00
2026-07-02 18:36:56 +02:00
2026-07-07 10:05:39 +02:00