refactor(app): Phase B.2 — split App() into MiniPlayerApp + MainApp (#557)

The 186-LOC default export shrinks to a thin window-kind switch with
shared document-attribute hooks. The mini-player tree and the main-app
tree each move into their own module under src/app/.

  - src/app/MiniPlayerApp.tsx (48 LOC):
      DragDropProvider + MiniPlayer + cross-window storage sync
  - src/app/MainApp.tsx (129 LOC):
      BrowserRouter + Routes + main-only lifecycle hooks
      (audio listeners, hot cache, global shortcuts, mini-player
      bridge, easter egg, scrollbar auto-hide)

AppShell + RequireAuth + TauriEventBridge are now named exports from
App.tsx so MainApp can compose them; Phase C/D will extract those into
their own modules.

App.tsx: 1453 -> 1308 LOC. Behaviour-preserving.
This commit is contained in:
Frank Stellmacher
2026-05-12 02:08:39 +02:00
committed by GitHub
parent 0cd8998dc9
commit f09da2d2a3
5 changed files with 320 additions and 159 deletions
+3
View File
@@ -42,5 +42,8 @@ src/utils/buildInfiniteQueueCandidates.ts
src/app/windowKind.ts
src/app/bootstrap.ts
# ── Phase B.2: mini-player webview tree (2026-05-12) ─────────────────
src/app/MiniPlayerApp.tsx
# ── stores (added as their tests grew past the floor) ────────────────
src/store/previewStore.ts