Commit Graph
100 Commits
Author SHA1 Message Date
xRangerDEandClaude Opus 4.7 707c98e19d release: 4.5.8 fsync atomic writes, parallel filename race, UI persistence
Stability + UX cycle.

- saveConfig and writeQueueToDisk now use openSync+writeSync+fsyncSync+
  closeSync+renameSync via writeFileAtomicSync. Survives power loss
  between write and rename (used to leave the renamed file empty and
  silently reset config / queue on next launch).
- Per-item claimedFilenames map fixes the parallel-download race where
  one item finishing wiped sibling claims and let a third item collide
  on the same output path.
- Renderer queue lookup by [data-id] (no more index drift), active tab
  persisted in localStorage, Escape closes the topmost open modal,
  Ctrl/Cmd+1..5 jumps tabs.

See docs/IMPROVEMENT_LOG.md for the dated rationale and regression run.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 15:11:14 +02:00
xRangerDEandClaude Opus 4.7 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
xRangerDEandClaude Opus 4.7 8d0cb4cefd harden: atomic fsync writes + per-item filename claims
Two server-side correctness fixes for parallel downloads and crash recovery.

1. Atomic file writes survive power loss / crash mid-write.
   saveConfig and writeQueueToDisk used writeFileSync + renameSync. Node's
   writeFileSync does NOT fsync — a power loss between write and rename can
   leave the renamed file empty or truncated, and the next launch silently
   falls back to defaults / empty queue.
   New writeFileAtomicSync helper: openSync + writeSync + fsyncSync +
   closeSync + renameSync (with the existing Windows copy fallback). fsync
   failure is non-fatal (some FS reject it) but file ordering is preserved.

2. Per-item claimed filenames fix the parallel-download race.
   With max 2 parallel downloads, processOneQueueItem.finally was calling
   claimedFilenames.clear() — wiping every parallel item's claims when any
   one finished. In the window between an active item claiming a filename
   and streamlink actually writing the first bytes, a third item could
   compute the same filename and both downloads would race the same path.
   New Map<itemId, Set<filename>> tracks claims per active download.
   ensureUniqueFilename(path, itemId) registers per-item;
   releaseClaimedFilenamesForItem(itemId) removes only that item's claims.
   splitMergedFile gained an itemId parameter for the same reason. The
   dead releaseClaimedFilename(path) function was removed.

Build: tsc clean. Tests: smoke + smoke-template-guide + smoke-full + merge-split
+ update-version-logic all pass. No new ESLint warnings.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 15:10:15 +02:00
xRangerDEandClaude Opus 4.6 54197af863 release: 4.5.7 fix notification app name
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 04:20:21 +02:00
xRangerDEandClaude Opus 4.6 37d75fac24 fix: Windows notification shows 'Twitch VOD Manager' instead of 'electron.app.Electron'
Set app.setAppUserModelId('com.twitch.vodmanager') on startup so Windows
notifications display the correct app name.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 04:18:34 +02:00
xRangerDEandClaude Opus 4.6 f9a0fdcf3d release: 4.5.6 guard formatDuration against NaN/Infinity
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 15:27:52 +01:00
xRangerDEandClaude Opus 4.6 da1d14d458 fix: guard formatDuration against NaN/Infinity input
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 15:23:21 +01:00
xRangerDEandClaude Opus 4.6 18940d0640 chore: add ESLint with security plugin, fix code quality warnings
- Install eslint, typescript-eslint, eslint-plugin-security
- Add eslint.config.mjs with project-tuned rules
- Fix redundant catch assignment in cutVideo
- Fix let→const for promise dedup patterns
- No security bugs found — all regex warnings are false positives (anchored patterns)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:55:35 +01:00
xRangerDEandClaude Opus 4.6 d9bdf744fd release: 4.5.5 fix ETA showing video duration instead of actual remaining time
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:54:44 +01:00
xRangerDEandClaude Opus 4.6 d8f0836165 fix: ETA calculation was using video duration instead of download progress
The old formula (avgSpeed * expectedDurationSeconds) simplified to just
(videoDuration - elapsedTime), showing 59min ETA for a 60min part after
1min of downloading. Now uses streamlink's actual progress percentage:
ETA = (elapsed / percent) * (100 - percent), which reflects real download
speed rather than video length.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:47:19 +01:00
xRangerDEandClaude Opus 4.6 a07ec1f958 release: 4.5.4 hardening — clip validation, cutter check, pagination guard, atomic writes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:39:55 +01:00
xRangerDEandClaude Opus 4.6 5f2e85e455 fix: clip time validation, cutter 0-byte check, pagination guard, atomic config write
H1: Add NaN/negative/zero-duration validation to clip dialog before IPC call
H2: Reject cut video output <= 256 bytes as effectively empty
H3: Add paginated VOD fetching with MAX_VOD_PAGES=50 safety guard
H4: Atomic write (tmp+rename) for config and queue persistence

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:33:31 +01:00
xRangerDEandClaude Opus 4.6 39fa5065d2 release: 4.5.3 bugfixes — selector overflow, drag safety, filename claims, details persist, progress stability
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:20:11 +01:00
xRangerDEandClaude Opus 4.6 2b379e5e6a fix: correct dragstart cancel method and release claimed filenames after download
- Use dataTransfer.effectAllowed='none' instead of preventDefault() for dragstart
  (preventDefault does not cancel dragstart events per HTML spec)
- Clear claimedFilenames Set in processOneQueueItem finally block to prevent
  stale claims from blocking re-downloads of same VODs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:19:30 +01:00
xRangerDEandClaude Opus 4.6 cf9d7b8334 fix: selector overflow for 10+ items, drag-drop status guard, filename claim set for parallel safety
- Queue selector uses min-width instead of fixed width for double-digit numbers
- Drag-start handler validates item is still pending before allowing drag
- ensureUniqueFilename uses in-memory claim set to prevent TOCTOU race

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:15:25 +01:00
xRangerDEandClaude Opus 4.6 6c47c63fa8 fix: clamp ETA bounds, store stats interval, add activeDownloads finally-cleanup, prevent progress backward jump
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:04:59 +01:00
xRangerDEandClaude Opus 4.6 4607ba9cc6 fix: persist expanded details across re-renders, guard drag-drop init against duplicates
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:03:20 +01:00
xRangerDEandClaude Opus 4.6 1e81b889f9 release: 4.5.2 compact queue buttons
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 10:30:50 +01:00
xRangerDEandClaude Opus 4.6 00d35f1b1c fix(ui): reduce queue action button height for compact layout
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 10:10:02 +01:00
xRangerDEandClaude Opus 4.6 8132e062fa release: 4.5.1 fix numbered selector visual update
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 10:07:51 +01:00
xRangerDEandClaude Opus 4.6 0133569104 fix: include selection state in queue render fingerprint so numbered selectors update visually
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 10:06:42 +01:00
xRangerDEandClaude Opus 4.6 6b97039471 release: 4.5.0 ETA, shortcuts, stats, drag&drop, expandable items, light theme, parallel downloads, code split
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 10:02:32 +01:00
xRangerDEandClaude Opus 4.6 66afaba0ea refactor: extract tool discovery functions to src/tools.ts
Move streamlink/ffmpeg path discovery, bundled tool management,
auto-install logic, and related caches (~430 lines) into a
dedicated tools module. main.ts uses dependency injection for
debug logging and directory paths to keep the module decoupled.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 10:00:51 +01:00
xRangerDEandClaude Opus 4.6 54d04d4f73 feat: support parallel downloads (up to 2 simultaneous)
Add parallel_downloads config option (1 or 2) with Settings UI dropdown.
Refactor processQueue to run concurrent download slots using Promise.race,
extracting per-item logic into processOneQueueItem. Add per-item process
tracking via activeDownloads Map and cancelledItemIds Set so cancel/pause
correctly terminates all active downloads.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:54:20 +01:00
xRangerDEandClaude Opus 4.6 63aafae85d feat: add light theme with toggle in settings
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:46:26 +01:00
xRangerDEandClaude Opus 4.6 424b312551 refactor: extract shared interfaces to src/types.ts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:44:37 +01:00
xRangerDEandClaude Opus 4.6 fbcf3935d0 feat: add drag & drop queue reordering and expandable queue item details
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:42:35 +01:00
xRangerDEandClaude Opus 4.6 2481230983 feat: add keyboard shortcuts (Del/S) and download statistics bar
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:40:39 +01:00
xRangerDEandClaude Opus 4.6 c96fd13aff feat: add ETA calculation for download progress display
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:39:27 +01:00
xRangerDEandClaude Opus 4.6 6a32387add release: 4.4.0 performance optimizations, collision detection, notifications
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:28:42 +01:00
xRangerDEandClaude Opus 4.6 3537d28eb2 test: add filename collision detection unit tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:28:06 +01:00
xRangerDEandClaude Opus 4.6 a4ca410641 feat: filename collision detection, queue JSON validation, download-complete notification
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:27:19 +01:00
xRangerDEandClaude Opus 4.6 76ecbc652d perf: parallel init with Promise.all, targeted DOM updates for download progress
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:26:19 +01:00
xRangerDEandClaude Opus 4.6 b7499c87a3 release: 4.3.4 fix queue buttons overflow
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:06:52 +01:00
xRangerDEandClaude Opus 4.6 00cf7781d3 fix(ui): prevent queue buttons from being pushed off-screen by long queue
Queue section now uses flex layout with flex-shrink:0 on action buttons,
so they stay visible regardless of queue list length.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:06:10 +01:00
xRangerDEandClaude Opus 4.6 46dc29a226 release: 4.3.3 numbered merge selection, user-defined order
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 08:57:26 +01:00
xRangerDEandClaude Opus 4.6 0e6b219455 feat(merge-split): numbered selection instead of checkboxes, user-defined merge order
Replace checkboxes with numbered selectors (1, 2, 3...) that show the
merge order. Click order determines VOD sequence in the merged result.
Chronological auto-sort removed — user controls the order.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 08:55:35 +01:00
xRangerDEandClaude Opus 4.6 674041a603 release: 4.3.2 bugfix — config flush on quit, processQueue concurrency guard
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 08:47:15 +01:00
xRangerDEandClaude Opus 4.6 86c80acf28 fix: flush config on quit, verify temp cleanup, add missing spawn error handlers
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 19:42:35 +01:00
xRangerDEandClaude Opus 4.6 33730fd372 fix: guard processQueue against concurrent invocations, fix stale process kill reference
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 19:41:11 +01:00
xRangerDEandClaude Opus 4.6 3af159f8e7 release: 4.3.0 add VOD merge+split feature
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 18:23:40 +01:00
xRangerDEandClaude Opus 4.6 6c082a87ab fix(merge-split): fix premature 100% progress, add ffmpeg preflight, clean partial splits, use locale metaLabel
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 18:12:50 +01:00
xRangerDEandClaude Opus 4.6 30c94b550e test(merge-split): add unit tests for merge-split logic
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:57:21 +01:00
xRangerDEandClaude Opus 4.6 ad4e540952 feat(merge-split): add queue checkboxes and merge-group selection UI
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:55:33 +01:00
xRangerDEandClaude Opus 4.6 c1a72ebd66 feat(merge-split): add Merge & Split button and queue checkbox/merge-group styles
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:55:14 +01:00
xRangerDEandClaude Opus 4.6 409c976df0 feat(merge-split): integrate merge-group pipeline into processQueue and cleanup handlers
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:53:55 +01:00
xRangerDEandClaude Opus 4.6 8501bd17f7 feat(merge-split): add processDownloadMergeGroup() 4-phase pipeline
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:52:41 +01:00
xRangerDEandClaude Opus 4.6 03f47a7240 feat(merge-split): add splitMergedFile() function using FFmpeg stream-copy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:49:15 +01:00
xRangerDEandClaude Opus 4.6 5a20c1c6a4 fix(merge): fix progress formula for long videos, add optional totalDurationSec param, normalize Windows paths
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:48:02 +01:00
xRangerDEandClaude Opus 4.6 645d2f147b feat(merge-split): add createMergeGroup IPC handler
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:47:36 +01:00
xRangerDEandClaude Opus 4.6 4750af2f97 feat(merge-split): add MergeGroup type definitions to all interface locations
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:46:20 +01:00
xRangerDEandClaude Opus 4.6 03c6e68da0 feat(merge-split): add EN and DE localization strings for merge group
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:46:20 +01:00
xRangerDEandClaude Opus 4.6 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
xRangerDEandClaude Opus 4.6 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 d1579cb281 release: 4.2.5 2026-03-06 02:55:47 +01:00
xRangerDE 47df9664a4 release: 4.2.4 improve updater and queue persistence 2026-03-06 02:48:07 +01:00
xRangerDE b7cd8fbec2 release: 4.2.3 improve updates and startup UX 2026-03-06 02:34:16 +01:00
xRangerDE 1005b583bd release: 4.2.2 add full settings autosave 2026-03-06 02:05:23 +01:00
xRangerDE 8d52df23c7 docs: add AI release runbook for gitea 2026-03-05 01:04:18 +01:00
xRangerDE 99f71a8aab release: 4.2.1 switch updater fully to gitea 2026-03-05 00:58:11 +01:00
xRangerDE 935125a83e chore: switch updater and release flow to gitea 2026-03-05 00:49:30 +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 d1fcbfaadb Add updater skip-version regression coverage and shared version utils (v4.1.13) 2026-02-21 01:24:25 +01:00
xRangerDE 9c7de22c3a Always surface latest available update version across checks (v4.1.12) 2026-02-21 01:01:16 +01:00
xRangerDE 8d656772fc Optimize debug log I/O and settings auto-refresh polling (v4.1.11) 2026-02-21 00:47:20 +01:00
xRangerDE 9392398db7 Prevent updater check UI lockups with timeout safeguards (v4.1.10) 2026-02-21 00:30:24 +01:00
xRangerDE 3695c096ba Smooth auto-updater flow with background downloads and status events (v4.1.9) 2026-02-21 00:16:47 +01:00
xRangerDE 4ade0a46ac Harden queue lifecycle and auth/update check concurrency (v4.1.8) 2026-02-20 23:54:55 +01:00
xRangerDE 8b508177b5 Reduce queue IPC churn and cancel removed active downloads (v4.1.7) 2026-02-20 21:59:37 +01:00
xRangerDE 10b80b3f48 Automate background update detection while app is open (v4.1.6) 2026-02-20 21:47:56 +01:00
xRangerDE d04779d0ac Optimize renderer scheduling and batched logging pipeline (v4.1.5) 2026-02-20 21:36:23 +01:00
xRangerDE 7412e7aa16 Optimize tool path caching and streamer load race handling (v4.1.4) 2026-02-17 23:53:37 +01:00
xRangerDE 014c8ecf74 Optimize queue rendering and fix settings toggle layout (v4.1.3) 2026-02-17 23:35:50 +01:00
xRangerDE e83b23bd79 Optimize metadata cache concurrency and memory bounds (v4.1.2) 2026-02-16 15:17:46 +01:00
xRangerDE 64fb0f416f Harden queue retries and export metrics tooling (v4.1.1) 2026-02-16 14:51:12 +01:00
xRangerDE 9609c6e767 Add smart optimization suite with telemetry and guardrails (v4.1.0) 2026-02-16 14:24:09 +01:00
xRangerDE 886500ad8e Hide native menu bar and remove legacy root artifacts (v4.0.8) 2026-02-16 13:37:53 +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 1e5e9137ff Add in-app template guide with live examples (v4.0.6) 2026-02-16 13:07:49 +01:00
xRangerDE 1306309e6e Add global filename templates for VODs, parts, and clips (v4.0.5) 2026-02-16 12:49:44 +01:00
xRangerDE 9845b25d03 Add advanced clip filename templates with live preview (v4.0.4) 2026-02-16 12:25:00 +01:00
xRangerDE a29c252606 Use real flag icons in language picker and polish locale UX (v4.0.3)
Replace unreliable emoji flags in the native select with a custom language picker that renders real CSS flag icons, improve retry button naming/tooltips, and keep quick/full e2e coverage green after the UI change.
2026-02-16 12:06:13 +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 0d23b01800 Initial commit 2026-02-14 08:47:06 +01:00
xRangerDE 614e5cd20f Add npm test:e2e command and harden smoke checks (v4.0.2)
Expose a single runnable end-to-end test command for fast regression sweeps and update the smoke test to validate preflight and localization-aware clip errors reliably across language modes.
2026-02-14 06:17:02 +01:00
xRangerDE 089e0085ee Fix post-v4.0.0 regressions from full feature sweep (v4.0.1)
After exhaustive end-to-end validation, fix clip error localization in English mode and confirm full cutter/merge reliability with regenerated local media tests, then ship a patch release for immediate auto-update rollout.
2026-02-14 06:13:01 +01:00
xRangerDE 8f44211115 Launch v4.0.0 with reliability center and advanced queue controls
Ship a major update that adds in-app preflight diagnostics with health badge, live debug log tooling, retry management, pause/resume downloads, queue reordering support, locale polish (flags + clearer retry wording), and extensive backend hardening for day-to-day stability.
2026-02-14 06:07:36 +01:00
xRangerDE 551690d09c Ship v3.9.0 system reliability and UX toolkit
Add an in-app preflight diagnostics center with optional auto-fix, introduce backend retry handling for failed downloads, provide live debug log viewing in settings, and expand queue controls with retry-failed actions while keeping language switching instant and locale data organized.
2026-02-14 05:53:42 +01:00
xRangerDE 2579198e8b Split locales into dedicated files and default to English (v3.8.8)
Move DE/EN translation content into separate renderer locale files, keep instant language switching, add locale-aware date/number formatting helpers, and set English as the default language for fresh installs.
2026-02-14 05:43:21 +01:00
xRangerDE 5749214a62 Set English as default locale for first install (v3.8.7)
Make English the initial language for fresh installations while keeping live DE/EN switching, and split locale dictionaries into dedicated per-language files for cleaner long-term translation maintenance.
2026-02-14 05:36:59 +01:00
xRangerDE 7fb7e4b03b Add live DE/EN language switching without restart (v3.8.6)
Introduce a centralized renderer text dictionary with German and English locales, add a language selector in settings, and apply translations instantly across UI sections and dynamic status labels without requiring app restart.
2026-02-14 05:31:28 +01:00
xRangerDE 59b507115c Normalize remaining UI wording to German (v3.8.5)
Polish mixed-language labels across tabs by replacing leftover English terms (views, queue, cutter naming, clip heading) with consistent German wording so the interface reads uniformly end-to-end.
2026-02-13 13:04:14 +01:00
xRangerDE 00249bcbed Germanize queue/download wording and clip errors (v3.8.4)
Align visible queue and clip messages to German terminology, remove remaining mixed English labels, and reuse resilient streamlink command resolution for clip downloads to keep behavior consistent across environments.
2026-02-13 13:00:27 +01:00
xRangerDE e91a397a5c Simplify queue labels and show speed clearly (v3.8.3)
Remove duplicate part-progress wording in the queue by keeping part index in the meta line and using the progress line for transferred data/percent, while labeling throughput as Geschwindigkeit for clearer download monitoring.
2026-02-13 12:56:56 +01:00
xRangerDE 885eec4741 Refine live download status messages (v3.8.2)
Improve first-phase download feedback by emitting explicit preflight/start statuses from the backend so the queue no longer appears to jump between ambiguous placeholder texts during active transfers.
2026-02-13 12:39:23 +01:00
xRangerDE 159f442d43 Fix startup stall and queue status flicker (v3.8.1)
Defer heavy tool auto-install checks from startup to first-use paths to avoid long launch stalls, and merge backend queue snapshots with in-flight renderer progress state so download status text no longer jumps between placeholder states.
2026-02-13 12:30:07 +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 a3c3c6d225 Add streamlink command fallback and improve ENOENT errors (v3.7.9)
Resolve streamlink execution more robustly by trying direct binary and Python module launchers, then return actionable error messages when streamlink is missing on server environments.
2026-02-13 12:14:42 +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