Major bump. v5.0.0-GA umfasst:
Foundation
- vitest test infrastructure
- 11 neue Module in src/main/{infra,domain}/
- main.ts: -198 LoC pure helpers extracted
- 164 unit tests + full e2e:release suite gruen
Persistence (Pillar 3 — done)
- better-sqlite3 mit WAL + 5s busy_timeout
- schema v5 (9 tables: schema_meta, config_kv, queue_items, downloaded_vods,
streamers, archive_files, migrations_applied, oauth_accounts, chunk_index)
- Idempotenter JSON to SQLite Migrator (shadow-write, .v4-backup)
- Long-lived DB-Handle Singleton mit shutdown-close
Auth (Pillar 2 — scaffold done)
- SecureStorage (Electron safeStorage + Memory-Impl)
- token-store CRUD auf oauth_accounts (encrypted)
- PKCE pair + state generator
- Loopback HTTP server (127.0.0.1, ephemeral port)
- Twitch OAuth 2.1 Authorization Code Flow + PKCE module
- IPC wiring + Client ID config + Renderer button kommen in 5.1.x
Smart-Resume (Pillar 6 — foundation done)
- chunk_index table
- sha1 buffer + streaming file hash helpers
- chunk-index-store CRUD
- Integration in den Live-Recorder kommt in 5.1.x
Post-5.0 Roadmap
- Plan 04b: Resume in Recorder
- Plan 05: Live-Rec Polish + Sub-only (braucht Twitch Client ID)
- Plan 06: UI Power (virtual list, mini-player, command palette)
- Plan 07-09: Architektur-Split (Pillar 4 Rest)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
102 lines
5.4 KiB
Markdown
102 lines
5.4 KiB
Markdown
# v5.0.0 Roadmap (Reality-Aligned)
|
|
|
|
**Baseline:** v4.6.155
|
|
**Spec:** `tasks/v5.0.0-goal.md`
|
|
**Last verified:** 2026-05-11
|
|
|
|
---
|
|
|
|
## Reality Check vs. Goal
|
|
|
|
Beim Vergleich der echten Codebase (`src/main.ts` 7485 LoC mit 30+ Sektionen) gegen die Goal-Annahmen zeigt sich: einige "neu zu bauenden" Features existieren teilweise schon.
|
|
|
|
| Pillar | Goal sagt | Reality | Restarbeit % |
|
|
|---|---|---|---|
|
|
| P1 — Live Stream Recording | "neu" | Auto-Record-Poller, Live-Recording-Events-Log, Live-Chat-Capture existieren | ~30% (Polish + Sub-only-Pfad nach OAuth) |
|
|
| P2 — Twitch OAuth | "neu" | App nutzt nur public Web-Client-ID, keine User-Auth | 100% |
|
|
| P3 — SQLite-Migration | "Breaking" | Config + Queue + Stats sind JSON-Files | 100% |
|
|
| P4 — main.ts Split | "neu" | 7485 LoC Monolith, 30 Sektionen, schon klar getrennt | 100% (mechanische Arbeit) |
|
|
| P5 — UI Power-Features | "neu" | Vanilla DOM, keine Virtualisierung, kein Mini-Player, ein Theme | 90% |
|
|
| P6 — Smart-Resume | "neu" | `auto_resume_live_recording` Flag existiert, `auto_merge_resumed_parts`, Crash-Recovery rudimentaer | ~60% (Chunk-Hash + Integrity-Check fehlen) |
|
|
| P7 — Scheduled/Auto-Discovery | "neu" | Auto-VOD-Download-Poller + Live-Status-Batch-Poller schon implementiert | ~30% (Top-Clip-Crawler, Follow-Sync fehlen) |
|
|
|
|
**Konsequenz:** Reihenfolge der Plane orientiert sich am Restarbeits-Volumen und Dependencies.
|
|
|
|
---
|
|
|
|
## Execution Order (reordered post Plan 01)
|
|
|
|
```
|
|
Plan 01: Foundation — Vitest + Pure-Utility-Extraction [DONE — v5.0.0-alpha.0]
|
|
└─> Plan 02: SQLite-Foundation (P3) [DONE — v5.0.0-alpha.1]
|
|
└─> Plan 03: OAuth Foundation Storage (P2) [DONE — v5.0.0-alpha.2]
|
|
└─> Plan 04: Smart-Resume Foundation (P6) [DONE — v5.0.0-alpha.3]
|
|
└─> DB-Singleton Lift + Plan 03b: OAuth Flow Scaffold [DONE — v5.0.0]
|
|
|
|
Post-5.0 (5.1.x):
|
|
Plan 04b Resume Integration (recorder hook) — touches main.ts state
|
|
Plan 05 Live-Rec Polish + Sub-only — needs user-supplied Twitch Client ID
|
|
Plan 06 UI Power (virtual list, mini-player, command palette) — renderer work
|
|
Plan 07-09 Architektur-Split Rest (Pillar 4) — state-strategy zuerst
|
|
└─> Plan 04: Live-Recording Polish + Sub-only (P1)
|
|
├─> Plan 05: Auto-Discovery Erweiterung (P7)
|
|
└─> Plan 06: UI Power-Features (P5)
|
|
└─> Plan 07: Smart-Resume Finalisierung (P6)
|
|
└─> Plan 08: Architektur-Split Pt. 1 (state-coupled modules)
|
|
└─> Plan 09: Architektur-Split Pt. 2 (final split)
|
|
└─> Plan 10: v5.0.0-rc.1 → GA
|
|
```
|
|
|
|
**Begruendung der Umordnung:** Plan 01 hat das Pure-Extraktion-Pattern validiert (Pillar 4 Teil-1).
|
|
Weiter splitten der state-gekoppelten Module braucht zuerst eine State-Container-Strategie — das ist
|
|
besser informiert nachdem Features (SQLite, OAuth, Live-Rec) ins System gehen und die echten
|
|
Querverbindungen sichtbar sind. Bis dahin lebt das Pattern aus Plan 01 weiter (neue Module landen
|
|
in `src/main/{infra,domain}/`), nur die alten in main.ts steckenden Stateful-Funktionen bleiben dort.
|
|
|
|
Plan 02 = Pillar 3 (SQLite).
|
|
Plan 03 = Pillar 2 (OAuth).
|
|
Plan 04 = Pillar 1.
|
|
Plan 05 = Pillar 7.
|
|
Plan 06 = Pillar 5.
|
|
Plan 07 = Pillar 6.
|
|
Plan 08-09 = Pillar 4 Rest.
|
|
Plan 10 = Release.
|
|
|
|
---
|
|
|
|
## Plan Status
|
|
|
|
| # | Plan | Datei | Status |
|
|
|---|---|---|---|
|
|
| 01 | Foundation: Vitest + Pure-Utility-Extraction | `tasks/v5.0.0-plan-01-foundation.md` | **DONE** (v5.0.0-alpha.0) |
|
|
| 02 | SQLite-Foundation (Pillar 3) | `tasks/v5.0.0-plan-02-sqlite.md` | **DONE** (v5.0.0-alpha.1) |
|
|
| 03 | OAuth Foundation Storage (Pillar 2) | `tasks/v5.0.0-plan-03-oauth-foundation.md` | **DONE** (v5.0.0-alpha.2) |
|
|
| 03b | OAuth Flow Scaffold (Pillar 2) | `tasks/v5.0.0-plan-03b-oauth-flow.md` | **DONE** (v5.0.0) — PKCE + Loopback + Twitch flow modules, scaffold complete |
|
|
| 04 | Smart-Resume Foundation (Pillar 6) | `tasks/v5.0.0-plan-04-resume-foundation.md` | **DONE** (v5.0.0-alpha.3) |
|
|
| 04b | Smart-Resume Integration (Pillar 6) | (5.1.x) | post-5.0 — recorder integration |
|
|
| 05 | Live-Recording Polish (Pillar 1) | (5.1.x) | post-5.0 — needs OAuth Client ID + IPC + UI |
|
|
| 05 | Auto-Discovery Erweiterung (Pillar 7) | `tasks/v5.0.0-plan-05-auto-disc.md` | nach Plan 04 |
|
|
| 06 | UI Power (Pillar 5) | `tasks/v5.0.0-plan-06-ui-power.md` | nach Plan 04 |
|
|
| 07 | Smart-Resume Final (Pillar 6) | `tasks/v5.0.0-plan-07-smart-resume.md` | nach Plan 06 |
|
|
| 08 | Architektur-Split Pt. 1 (Pillar 4) | `tasks/v5.0.0-plan-08-split-pt1.md` | nach Plan 07 |
|
|
| 09 | Architektur-Split Pt. 2 (Pillar 4) | `tasks/v5.0.0-plan-09-split-pt2.md` | nach Plan 08 |
|
|
| 10 | Release 5.0.0 GA | `tasks/v5.0.0-plan-10-release.md` | nach Plan 09 |
|
|
|
|
---
|
|
|
|
## Versionsstrategie (post Reorder)
|
|
|
|
| Plan abgeschlossen | Version |
|
|
|---|---|
|
|
| Plan 01 | **5.0.0-alpha.0** Foundation, vitest + pure modules (DONE) |
|
|
| Plan 02 | 5.0.0-alpha.1 SQLite Migrator (Breaking, opt-in next-channel) |
|
|
| Plan 03 | 5.0.0-alpha.2 OAuth |
|
|
| Plan 04 | 5.0.0-beta.0 Live-Recording Polish + Sub-only |
|
|
| Plan 05 | 5.0.0-beta.1 Auto-Discovery |
|
|
| Plan 06 | 5.0.0-beta.2 UI Power |
|
|
| Plan 07 | 5.0.0-beta.3 Smart-Resume |
|
|
| Plan 08-09 | 5.0.0-rc.0 / rc.1 Architektur-Split |
|
|
| Plan 10 | 5.0.0 stable |
|
|
|
|
Pro Plan: ein Release-Tag, Auto-Updater Channel `next`. 4.6-User bleiben auf `stable`.
|