Commit Graph

12 Commits

Author SHA1 Message Date
xRangerDE
379048f191 harden: defensive parsing for config + queue, normalize stale downloading
- loadConfig now checks isPlainObject(parsed) before spreading over
  defaults. Non-object JSON (array, primitive, null) is logged and the
  app falls back to defaults instead of silently polluting the config
  with array indices or dropping values.

- loadQueue runs every entry through sanitizeQueueItem which validates
  the status enum, clamps progress to [0, 100], validates customClip
  and mergeGroup shapes (with sanitizeCustomClip / sanitizeMergeGroup
  helpers), and demotes stale status="downloading" entries to "pending"
  with progress=0 on cold start. The previous filter only checked
  typeof id/url/status === "string" and let through whatever shape
  customClip / mergeGroup happened to have.

- The stale-downloading normalisation fixes a real user trap: after a
  hard kill mid-download, the queue persisted status="downloading", but
  no download was running on next launch and start-download only resumed
  paused items, leaving "downloading" entries stuck.

- Bonus: CustomClip and MergeGroupItem imports now have call sites
  (previously unused-import warnings).

docs/IMPROVEMENT_LOG.md gains a Cycle 2 dated section.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 15:29:28 +02:00
xRangerDE
feebfc86a1 ui: data-id queue lookup + persisted active tab + Esc/Ctrl+N shortcuts
Renderer-side polish bundle.

- updateQueueItemProgress now looks up items by [data-id] selector instead
  of array index. Resilient against queue/DOM divergence between renders.
  Determinate vs indeterminate progress logic tightened.

- Active tab persisted to localStorage on every showTab; restored on init
  via loadPersistedActiveTab (whitelisted to known tab IDs so a future
  rename cannot strand the user on a missing tab). Page title now only
  shows the streamer name on the VODs tab — it no longer leaks into
  Settings / Cutter / Merge.

- Escape closes the topmost open modal regardless of focus (clip dialog,
  template guide, update modal — in that priority order).

- Ctrl+1..5 (Cmd+1..5 on macOS) jumps directly to a tab. The existing Del
  (delete selected) and S (start/pause) shortcuts still work and remain
  blocked while typing in inputs.

Adds docs/IMPROVEMENT_LOG.md (new, single dated section for this cycle).

Build: tsc clean. Full smoke suite green (failures: [], runtimeIssues: []).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 15:10:28 +02:00
xRangerDE
6aae84cac7 docs: add VOD merge+split implementation plan
12-task step-by-step plan with exact code, file paths, and line numbers.
Reviewed and fixed 5 issues (locale schema, language-awareness, TypeScript
union types, execSync import, cleanup scope).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:10:15 +01:00
xRangerDE
1abc87d17d docs: add VOD merge+split feature design spec
Comprehensive design for combining multiple queue VODs into a merge group,
downloading them, merging via FFmpeg, and splitting into time-based parts.
Reviewed through two spec-review iterations fixing 14 issues.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:56:38 +01:00
xRangerDE
2631924ef5 chore: migrate repository to Codeberg, bump version to 4.2.0, update update logic 2026-03-01 20:23:21 +01:00
xRangerDE
9609c6e767 Add smart optimization suite with telemetry and guardrails (v4.1.0) 2026-02-16 14:24:09 +01:00
xRangerDE
e4ab08cd88 Add template-guide E2E test and release validation gate (v4.0.7) 2026-02-16 13:30:55 +01:00
xRangerDE
e261ca5281 Add full end-to-end test command and runner
Introduce a longer smoke-test-full workflow for validating queue, media tools, localization, and reliability flows in one pass, and document both quick and full test commands for contributors.
2026-02-14 22:59:29 +01:00
xRangerDE
3d404d75e1 Auto-install missing runtime tools (v3.8.0)
Download and extract streamlink/ffmpeg dependencies into ProgramData when unavailable so fresh server installs can start downloads without manual tool setup, while preserving detailed debug logging for failures.
2026-02-13 12:20:36 +01:00
xRangerDE
78378b9812 Improve live download status and add debug logging (v3.7.8)
Keep queue visibility synced while downloads run, show richer per-item progress/error states in the sidebar, and write backend downloader diagnostics to ProgramData debug.log so instant start/stop failures can be traced on user systems.
2026-02-13 12:10:11 +01:00
xRangerDE
7f208cf369 Add public VOD mode, queue sync fixes, and full docs
Allow streamer/VOD browsing without Twitch credentials via public GraphQL fallback, harden queue visibility by syncing renderer state with backend updates, and ship a comprehensive Astro/MDX documentation set similar to established downloader projects.
2026-02-13 12:01:09 +01:00
xRangerDE
301132c9ee Add Astro + MDX docs workspace
Create a separate docs project with Astro and MDX so product documentation can evolve independently from the Electron app while supporting the planned TS/MDX migration.
2026-02-13 10:00:12 +01:00