Commit Graph
100 Commits
Author SHA1 Message Date
SucukdeluxeandClaude Opus 4.6 e90e731eaa Fix app freezes and false provider cooldowns
- Make saveSettings async to stop blocking the event loop during downloads
- Add 120ms minimum gap for forced state emissions to prevent rapid-fire IPC
- Fix circuit breaker feedback loop: reset failure count after cooldown expires
- Add 120s time-decay for failure counter (transient bursts don't snowball)
- Raise circuit breaker threshold from 5 to 8 consecutive failures
- Stop counting network stalls as provider failures
- Items without a provider only check primary provider cooldown, not all

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:02:09 +01:00
SucukdeluxeandClaude Opus 4.6 0b73ea1386 Add "Jetzt entpacken" context menu, fix start freeze on large queues
Build and Release / build (push) Has been cancelled
- New "Jetzt entpacken" right-click option: triggers extraction for
  completed packages regardless of paused/stopped state
- Fix 5-10s freeze when pressing Start after Pause: recoverRetryableItems
  was calling fs.stat on every item (474+); now only checks failed/completed
- Full IPC pipeline: extractNow in manager, controller, preload, renderer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:40:49 +01:00
SucukdeluxeandClaude Opus 4.6 e013c63c59 Fix long path extraction using subst drive mapping instead of \?\ prefix
Build and Release / build (push) Has been cancelled
WinRAR doesn't support \?\ prefix (interprets it as UNC network path).
Replace with subst drive mapping: maps targetDir to a short drive letter
(Z:, Y:, etc.) before extraction, then removes mapping after. This keeps
total paths under 260 chars even when archives contain deep internal
directory structures.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:32:23 +01:00
SucukdeluxeandClaude Opus 4.6 2ae22f942e Fix extraction failure on long paths (>260 chars) with \?\ prefix
Build and Release / build (push) Has been cancelled
Add longPathForWindows() helper that prefixes extract target directories
with \?\ on Windows, bypassing the 260-char MAX_PATH limit. Applied to
both WinRAR/UnRAR and 7z arguments. Fixes "Die Syntax für den
Dateinamen, Verzeichnisnamen" errors when archive internal directories
create deeply nested output paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:24:55 +01:00
SucukdeluxeandClaude Opus 4.6 a22a90adf3 Add retry extraction context menu, increase error text limit
- Right-click packages with extraction errors shows "Extraktion
  wiederholen" option to manually retry
- Increase WinRAR error text from 240 to 500 chars for better
  diagnostics in logs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:15:00 +01:00
SucukdeluxeandClaude Opus 4.6 ecf56cb977 Retry failed extractions on unpause, fix delete callback deps
- triggerPendingExtractions() now runs when unpausing, so packages
  with extraction errors are automatically retried
- executeDeleteSelection no longer depends on snapshot objects
  (prevents unnecessary re-renders with large queues)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:58:01 +01:00
SucukdeluxeandClaude Opus 4.6 430ec7352b Fix session download counter resetting when packages are removed
Session counter now uses sessionDownloadedBytes (in-memory counter)
instead of summing completed items. Removing packages after extraction
no longer resets the session total.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:33:58 +01:00
SucukdeluxeandClaude Opus 4.6 bc70ff94cc Persist totalDownloadedAllTime across restarts
- Save settings every 30s during active downloads (not just session)
- Force settings save on shutdown and run finish
- Preserve live totalDownloadedAllTime when user saves settings
  (app-controller's stale copy no longer overwrites the counter)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:29:32 +01:00
SucukdeluxeandClaude Opus 4.6 549328893e Separate pause/resume buttons, fix hybrid extraction during pause
- Pause button is now one-way (orange glow when paused, disabled when
  already paused). Start button resumes from pause.
- Fix hybrid extraction attempting incomplete multi-part archives when
  paused: disk-fallback now blocks any non-terminal item status, not
  just downloading/validating/integrity_check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:22:58 +01:00
SucukdeluxeandClaude Opus 4.6 e6c17393fb Fix chart label clipping, persist speed history across tabs, fix pause button
- Dynamic left padding based on measured label width (no more cut-off numbers)
- Speed history ref lifted to App so chart data survives tab switches
- Pause button uses optimistic UI update for instant visual feedback

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:11:36 +01:00
SucukdeluxeandClaude Opus 4.6 ba673b9e53 Fix bandwidth chart growing infinitely
Use container.clientWidth/clientHeight instead of getBoundingClientRect
and stop overriding canvas style dimensions. CSS 100% handles display
sizing, canvas.width/height handles DPR-scaled render resolution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:04:06 +01:00
SucukdeluxeandClaude Opus 4.6 3c510fc265 Add persistent all-time download counter, session vs total stats
- Track totalDownloadedAllTime in settings (persists across restarts)
- Track sessionDownloadedBytes for current app session
- Status bar shows both: Session + Gesamt
- Statistics section shows Heruntergeladen (Session) + (Gesamt)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:00:17 +01:00
SucukdeluxeandClaude Opus 4.6 4ea3a75dc0 Fix bandwidth chart not updating, fix pause button blocked by actionBusy
- Bandwidth chart drawChart effect now runs on every re-render instead
  of only when running/paused changes (chart was stuck showing empty)
- Pause button no longer wrapped in performQuickAction/actionBusy guard,
  so it works immediately even during ongoing operations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:55:27 +01:00
SucukdeluxeandClaude Opus 4.6 670c2f1ff5 Unified package/total speed calculation, confirm dialog for context menu delete, show progress bar when collapsed
- Track packageId in speed events so package speed uses same 3-second
  window as global speed (fixes mismatch between package and status bar)
- Add packageSpeedBps to UiSnapshot, computed from speed events
- Context menu delete actions now respect confirmDeleteSelection setting
- Progress bar visible even when package is collapsed

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:45:40 +01:00
SucukdeluxeandClaude Opus 4.6 0d1deadb6f Fix tab action button hover clipping into search bar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:33:09 +01:00
SucukdeluxeandClaude Opus 4.6 f11190ee25 Fix Ctrl+Click selection, add Delete key with confirmation dialog
- Fix Ctrl+Click: mousedown no longer immediately adds item, preventing
  onClick from toggling it back off. Drag-select still works via mouseenter.
- Delete key removes selected items/packages with JDownloader-style
  confirmation dialog showing count and remaining items.
- "Nicht mehr anzeigen" checkbox disables future confirmations.
- New setting "Vor dem Löschen bestätigen" under Allgemein.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:31:45 +01:00
SucukdeluxeandClaude Opus 4.6 eb42fbabfd Fix update retry: reset abort controller on early return errors
Build and Release / build (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:06:11 +01:00
SucukdeluxeandClaude Opus 4.6 84d5c0f13f JDownloader 2-style UI overhaul, multi-select, hoster display, settings sidebar
Build and Release / build (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 17:56:54 +01:00
SucukdeluxeandClaude Opus 4.6 09bc354c18 Detect dead links as permanent errors, fix last-episode extraction race
Build and Release / build (push) Has been cancelled
Dead link detection:
- Mega-Web: parse hoster error messages (hosterNotAvailable, etc.) from HTML
  and throw specific error instead of returning null
- MegaDebridClient: stop retrying on permanent hoster errors
- download-manager: isPermanentLinkError() immediately fails items with dead
  links instead of retrying forever

Extraction race condition:
- package_done cleanup policy checked if all items were "completed" (downloaded)
  but not if they were "extracted" — removing the package before the last
  episode could be extracted
- Both applyCompletedCleanupPolicy and applyPackageDoneCleanup now guard
  against premature removal when autoExtract is enabled

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:28:23 +01:00
SucukdeluxeandClaude Opus 4.6 3ed31b7994 Fix core download bugs: resume corruption, 416 handling, stream leak, drain timeout
Build and Release / build (push) Has been cancelled
- HTTP 200 on resume: detect server ignoring Range header, write in truncate mode
  instead of appending (prevents doubled/corrupted files)
- HTTP 416 without Content-Range: assume complete if >1MB exists instead of
  deleting potentially multi-GB finished files
- Stream handle leak: explicit destroy() after finally to prevent fd exhaustion
- Drain timeout: don't abort controller on disk backpressure, let inner retry
  loop handle it instead of escalating to full stall pipeline

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:12:33 +01:00
SucukdeluxeandClaude Opus 4.6 550942aad7 Overhaul download retry pipeline: circuit breaker, escalating backoff, shelve logic
- Provider circuit breaker: track consecutive failures per provider with
  escalating cooldowns (30s/60s/120s/300s), auto-invalidate Mega-Debrid
  session on cooldown
- Escalating backoff: retry delays now scale up to 120s (was 30s max),
  unrestrict backoff exponential instead of linear 15s cap
- Shelve logic: after 15 consecutive failures, item pauses 5 min with
  counter halving for gradual recovery
- Periodic soft-reset: every 10 min, reset stale retry counters (>10 min
  queued) and old provider failures (>15 min), acts like mini-restart
- Mega-Debrid queue timeout: 90s wait limit in runExclusive to prevent
  cascade blocking behind stuck calls
- Provider-cooldown-aware retry delays: items wait for provider cooldown
  instead of retrying against broken service
- Fix: reconnect/package_toggle now persist retry counters (previously
  lost on interruption, defeating shelve logic)
- Mega-Debrid generate: tighter timeouts, progressive reload backoff,
  hoster retry limit (5x max)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:00:17 +01:00
SucukdeluxeandClaude Opus 4.6 a9c8ee2ff4 Sort active packages by completion percentage, not absolute count
Build and Release / build (push) Has been cancelled
1/6 (16.7%) now ranks above 5/153 (3.3%) since it's further along.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:03:43 +01:00
SucukdeluxeandClaude Opus 4.6 10b4f18d33 Split progress bar: blue for download, green for extraction
Build and Release / build (push) Has been cancelled
Left half (blue) shows download progress, right half (green) shows
extraction progress. When no extraction is active, full bar is blue.
Full bar = 50% blue (all downloaded) + 50% green (all extracted).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 12:57:11 +01:00
SucukdeluxeandClaude Opus 4.6 45b0d71dd0 Sort pinned packages by progress: most completed items first
Build and Release / build (push) Has been cancelled
Active packages are now sorted by completed item count (descending),
then by downloaded bytes, so packages with real download progress
appear above packages still in link resolution phase.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 12:53:54 +01:00
SucukdeluxeandClaude Opus 4.6 e0eb3f0453 Pin actively downloading packages to top of list
Build and Release / build (push) Has been cancelled
Packages with items in downloading/validating/extracting/integrity_check
state are always shown at the top regardless of sort order (A-Z or Z-A).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 12:50:14 +01:00
SucukdeluxeandClaude Opus 4.6 daf70211ac Add total download speed to stats bar
Build and Release / build (push) Has been cancelled
Show current aggregate speed (all active downloads) in the stats bar
next to Pakete/Dateien/Gesamt. Only visible while session is running.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 12:47:11 +01:00
SucukdeluxeandClaude Opus 4.6 c28384e78d Detect hoster error-page downloads (<512 B) and trigger retry
Build and Release / build (push) Has been cancelled
Some hosters return tiny error responses (e.g. 9 bytes) with HTTP 200.
- downloadToFile: detect files <512 B, log content, delete and throw for retry
- Post-download: catch <512 B files even when totalBytes is unknown
- Logs the error-page content for debugging

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 12:44:02 +01:00
SucukdeluxeandClaude Opus 4.6 122c797652 Fix 9-byte download regression: revert download.bin change, add size guards
Build and Release / build (push) Has been cancelled
- Revert v1.4.79 download.bin filename logic that caused broken downloads
- Item-recovery: require file ≥10 KB (or ≥50% of expected size) instead of >0
- Post-download: reject files <1 KB when expected size >10 KB
- Disk-fallback: require parts ≥10 KB before considering archive ready

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 12:31:40 +01:00
SucukdeluxeandClaude Opus 4.6 14d5a3abb4 Fix zip volume cleanup regex and atomic progress file writes
Build and Release / build (push) Has been cancelled
- Fix .z001/.z002 split zip volumes not deleted after extraction
  (regex matched only 2-digit, now matches 2-3 digit volumes)
- Make extract progress file writes atomic (write to .tmp then rename)
  to prevent corruption on crash during extraction

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:51:49 +01:00
SucukdeluxeandClaude Opus 4.6 ca05fa184d Fix download.bin filename flickering during unrestrict
Build and Release / build (push) Has been cancelled
Keep existing good filename when debrid API returns "download.bin"
or opaque name. Only overwrite item.fileName if the resolved name
is actually better (not opaque, not download.bin).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:43:29 +01:00
SucukdeluxeandClaude Opus 4.6 13ff41aa95 Add item-recovery for stuck downloads with completed files on disk
Build and Release / build (push) Has been cancelled
When post-processing runs, detect items in idle states (queued/paused)
whose target file already exists on disk with non-zero size, and
auto-recover them to "completed" status. This ensures allDone becomes
true, triggering final extraction with archive cleanup (delete mode).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:40:28 +01:00
SucukdeluxeandClaude Opus 4.6 d8a53dcea6 Fix hybrid extraction skipping archives when item status stuck
Build and Release / build (push) Has been cancelled
Add disk-fallback to findReadyArchiveSets: when all archive parts
physically exist on disk with non-zero size and none are actively
downloading/validating, consider the archive ready for extraction.
This fixes episodes being skipped when a download item's status
was not updated to "completed" despite the file being fully written.

Also improve debug server: raise log limit to 10000 lines,
add grep filter, add /session endpoint for raw session data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 10:36:08 +01:00
SucukdeluxeandClaude Opus 4.6 9f589439a1 Add debug HTTP server for remote monitoring
Build and Release / build (push) Has been cancelled
Starts an HTTP server on port 9868 (configurable via debug_port.txt)
when debug_token.txt exists in the app runtime directory. Provides
/health, /log, /status, and /items endpoints for live monitoring.
Token-based auth required.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:58:54 +01:00
SucukdeluxeandClaude Opus 4.6 5bb984d410 Fix validating-stuck watchdog aborting before unrestrict timeout
Build and Release / build (push) Has been cancelled
The validating-stuck timeout (45s) was shorter than the unrestrict
timeout (60s), causing items to be endlessly aborted and retried
before the debrid API call could complete. Now uses unrestrict
timeout + 15s buffer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:51:17 +01:00
SucukdeluxeandClaude Opus 4.6 1825e8ba04 ️ perf: improve extraction status, stuck detection, and retry logic
Build and Release / build (push) Has been cancelled
- Extraction status: "Entpackt - Done" / "Entpacken - Ausstehend"
- Per-item extraction progress (no cross-contamination)
- Validating-stuck watchdog: abort items stuck >45s in "Link wird umgewandelt"
- Global stall timeout reduced 90s → 60s, unrestrict timeout 120s → 60s
- Unrestrict retry: longer backoff (5/10/15s), reset partial downloads
- Stall retry: reset partial downloads for fresh link
- Mega-Web generate: max 30 polls (was 60), 45s overall timeout
- Mega-Web session refresh: 10min (was 20min)
- Comprehensive logging on all retry/failure paths

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:38:46 +01:00
SucukdeluxeandClaude Opus 4.6 0e55c28142 feat: replace default Electron icon with custom app icon
Build and Release / build (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:18:34 +01:00
SucukdeluxeandClaude Opus 4.6 e485cf734b Async FS optimizations, exponential backoff, cleanup dedup and release v1.4.72
Build and Release / build (push) Has been cancelled
- Convert all sync FS ops (existsSync, readdirSync, statSync, writeFileSync,
  rmSync, renameSync) to async equivalents across download-manager, extractor,
  cleanup, storage, and logger to prevent UI freezes
- Replace linear retry delays with exponential backoff + jitter to prevent
  retry storms with many parallel downloads
- Deduplicate resolveArchiveItems into single shared function
- Replace Array.shift() O(N) in bandwidth chart with slice-based trimming
- Make logger rotation async in the async flush path

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 21:53:07 +01:00
SucukdeluxeandClaude Opus 4.6 520ef91d2d Fix duplicate extraction and release v1.4.71
Build and Release / build (push) Has been cancelled
- Don't clear extraction resume state during hybrid mode (skipPostCleanup)
- Mark ALL completed items as "Entpackt" after successful hybrid extraction
  to prevent full extraction from re-extracting already-extracted archives

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 21:09:53 +01:00
SucukdeluxeandClaude Opus 4.6 674cf101da Fix extraction status cross-contamination with filename pattern matching, release v1.4.70
Previous fix used pathKey-based maps which failed due to path resolution
mismatches on Windows. New approach matches items to archives using
filename regex patterns directly (e.g. prefix.part\d+.rar), which is
robust regardless of path casing/resolution.

Also marks items as "Entpackt" immediately when their archive finishes
instead of waiting for all archives to complete, so completed episodes
show correct status while later episodes are still extracting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 20:57:56 +01:00
SucukdeluxeandClaude Opus 4.6 4371e53b86 Fix retry recovery, extraction status cross-contamination and UI freezes, release v1.4.69
- togglePause: clear retry delays and abort stuck tasks on unpause so
  Pause/Start actually recovers stuck downloads
- Fix retry display showing Number.MAX_SAFE_INTEGER instead of "inf"
  for unrestrict and generic error retries
- Fix extraction status applied to ALL items in package instead of only
  the items belonging to the currently extracting archive
- Make persistNow always async and item-completion stat async to reduce
  UI freezes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 20:42:03 +01:00
Sucukdeluxe bf2b685e83 Add session backup restore and release v1.4.68
Build and Release / build (push) Has been cancelled
2026-03-01 20:13:16 +01:00
Sucukdeluxe e7f0b1d1fd Fix start-conflict skip behavior and release v1.4.67
Build and Release / build (push) Has been cancelled
2026-03-01 20:03:58 +01:00
Sucukdeluxe 647679f581 Fix Mega-Web unrestrict hangs and release v1.4.66
Build and Release / build (push) Has been cancelled
2026-03-01 19:06:34 +01:00
SucukdeluxeandClaude Opus 4.6 237bf6731d Move Statistiken tab to the right of Einstellungen
Build and Release / build (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 18:11:41 +01:00
Sucukdeluxe 25af89d7a0 Release v1.4.64 to test new buffer download method
Build and Release / build (push) Has been cancelled
2026-03-01 17:23:52 +01:00
SucukdeluxeandClaude Opus 4.6 e384199c6e Replace streaming download with chunked buffer download to fix corruption
Build and Release / build (push) Has been cancelled
- Replace Readable.fromWeb() + pipeline with ReadableStream.getReader() loop
- Collect chunks in memory, verify size, then write to disk in one shot
- Add Accept-Encoding: identity to prevent content encoding issues
- Eliminates stream conversion bugs that caused file corruption on some servers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:20:02 +01:00
Sucukdeluxe 98425764d3 Release v1.4.62 to test updater fix
Build and Release / build (push) Has been cancelled
2026-03-01 17:15:08 +01:00
SucukdeluxeandClaude Opus 4.6 8f186ad894 Fix updater SHA512 mismatch by patching latest.yml filenames and adding integrity retry
Build and Release / build (push) Has been cancelled
- Patch latest.yml during release to use actual filenames (spaces) instead of electron-builder's dashed names
- Add download size validation before SHA512 check to catch incomplete downloads
- Retry download on integrity mismatch (up to 3 passes) with API refresh
- Re-resolve digest from latest.yml on each retry pass

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:04:12 +01:00
Sucukdeluxe 8b153bdabe Release v1.4.60 for update-path testing
Build and Release / build (push) Has been cancelled
2026-03-01 16:51:16 +01:00
Sucukdeluxe 401ad3b9f9 Release v1.4.58 to replace stale updater assets
Build and Release / build (push) Has been cancelled
2026-03-01 16:44:26 +01:00
Sucukdeluxe 5e1e62d5b6 Release v1.4.57 for updater validation
Build and Release / build (push) Has been cancelled
2026-03-01 16:31:09 +01:00
Sucukdeluxe afc70e6a10 Release v1.4.56 with updater 404 fallback fixes
Build and Release / build (push) Has been cancelled
2026-03-01 16:19:39 +01:00
Sucukdeluxe 20c32d39c8 Harden updater candidate fallback on Codeberg 404s 2026-03-01 16:19:35 +01:00
Sucukdeluxe 73cd2ea6b9 Release v1.4.55 for updater path testing
Build and Release / build (push) Has been cancelled
2026-03-01 16:06:53 +01:00
Sucukdeluxe c5c862b516 Release v1.4.54 with bandwidth statistics tab
Build and Release / build (push) Has been cancelled
2026-03-01 15:57:28 +01:00
Sucukdeluxe a0cdac87e8 Add bandwidth statistics tab with live chart
- Add new Statistics tab between Downloads and Settings
- Implement real-time bandwidth chart using Canvas (60s history)
- Add session overview with 8 stats cards (speed, downloaded, files, packages, etc.)
- Add provider statistics with progress bars
- Add getSessionStats IPC endpoint
- Support dark/light theme in chart rendering
2026-03-01 15:56:57 +01:00
Sucukdeluxe f5d7ee4d1a Release v1.4.53 with updater verification fallback
Build and Release / build (push) Has been cancelled
2026-03-01 15:51:16 +01:00
Sucukdeluxe 43950014b2 Retry updater candidates after hash mismatch 2026-03-01 15:51:13 +01:00
Sucukdeluxe ec45983810 Release v1.4.51 with MKV post-cleanup and updater fixes
Build and Release / build (push) Has been cancelled
2026-03-01 05:04:31 +01:00
Sucukdeluxe 7795208332 Fix MKV collection cleanup and updater digest verification 2026-03-01 05:01:11 +01:00
Sucukdeluxe b0dc7b80ab Release v1.4.50 with infinite retry default
Build and Release / build (push) Has been cancelled
2026-03-01 04:32:27 +01:00
Sucukdeluxe ab9b3e87b1 Set default auto-retry limit to infinite 2026-03-01 04:31:04 +01:00
Sucukdeluxe 116135289c Release v1.4.49 with retry-limit and extract-folder cleanup updates
Build and Release / build (push) Has been cancelled
2026-03-01 04:27:42 +01:00
Sucukdeluxe 2bddd5b3b2 Apply configurable retry limit and clean empty extract dirs more aggressively 2026-03-01 04:26:33 +01:00
Sucukdeluxe 5f2eb907b6 Release v1.4.48 with configurable retry limit setting
Build and Release / build (push) Has been cancelled
2026-03-01 04:19:40 +01:00
Sucukdeluxe 3f17cc8cb4 Add configurable auto-retry limit with optional infinite retries 2026-03-01 04:18:41 +01:00
Sucukdeluxe 33e2e126f1 Release v1.4.47 with stuck-download watchdog improvements
Build and Release / build (push) Has been cancelled
2026-03-01 04:08:16 +01:00
Sucukdeluxe 467d4bbc58 Add watchdogs for stuck unrestrict and low-throughput downloads 2026-03-01 04:07:23 +01:00
Sucukdeluxe e1e7f63f50 Release v1.4.46 for updater verification
Build and Release / build (push) Has been cancelled
2026-03-01 04:01:29 +01:00
Sucukdeluxe 18fdbcba18 Release v1.4.45 with updater integrity hardening
Build and Release / build (push) Has been cancelled
2026-03-01 03:58:15 +01:00
Sucukdeluxe 4bcb069ec7 Harden updater integrity checks with latest.yml SHA512 fallback 2026-03-01 03:57:23 +01:00
Sucukdeluxe bfbaee8e5c Release v1.4.44 with extraction smoothness and rename fixes
Build and Release / build (push) Has been cancelled
2026-03-01 03:49:11 +01:00
Sucukdeluxe 282c1ebf1d Reduce extract lag and improve long-path auto-rename stability 2026-03-01 03:47:18 +01:00
Sucukdeluxe 6e50841387 Release v1.4.43 with update progress and collector metrics
Build and Release / build (push) Has been cancelled
2026-03-01 03:34:28 +01:00
Sucukdeluxe 508977e70b Add update install progress feedback and collector metrics line 2026-03-01 03:33:18 +01:00
Sucukdeluxe cb1e4bb0c1 Release v1.4.42 with flat MKV collection support
Build and Release / build (push) Has been cancelled
2026-03-01 03:24:56 +01:00
Sucukdeluxe 809aec69c2 Add optional flat MKV library collection per package 2026-03-01 03:23:26 +01:00
Sucukdeluxe 71aa9204f4 Add one-command Codeberg release workflow 2026-03-01 02:54:13 +01:00
Sucukdeluxe 65cf4c217f Release v1.4.41 for updater validation on Codeberg
Build and Release / build (push) Has been cancelled
2026-03-01 02:47:53 +01:00
Sucukdeluxe 2d3a1df21d Release v1.4.40 with Codeberg updater migration
Build and Release / build (push) Has been cancelled
2026-03-01 02:42:06 +01:00
Sucukdeluxe 43bc95b7fc Switch updater and docs from GitHub to Codeberg 2026-03-01 02:40:11 +01:00
Sucukdeluxe fe59e064f0 Translate README to English and refine wording 2026-03-01 02:29:37 +01:00
Sucukdeluxe 67fc7a9226 Revise README with modern feature and setup overview 2026-03-01 02:28:15 +01:00
Sucukdeluxe 474ff8cd26 Release v1.4.39 with Multi Debrid Downloader title format
Build and Release / build (push) Has been cancelled
2026-03-01 02:25:17 +01:00
SucukdeluxeandClaude Opus 4.6 310f4dc58a Release v1.4.38 with version display formatting tweak
- Change header to "Multi Debrid Downloader - vX.X.X" (dash separator)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 02:17:33 +01:00
SucukdeluxeandClaude Opus 4.6 d491c21b97 Release v1.4.37 with DLC filenames, instant delete, version display
- Parse <filename> tags from DLC XML for proper file names instead of
  deriving from opaque URLs (fixes download.bin display)
- Optimistic UI removal for package/item delete (instant feedback)
- Show app version in header ("Multi Debrid Downloader vX.X.X")

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 02:12:06 +01:00
SucukdeluxeandClaude Opus 4.6 a0c58aad2c Release v1.4.36 with tolerant DLC padding
- Local DLC decryption no longer throws on invalid PKCS7 padding
- Instead tries to parse the decrypted data as-is (Node.js base64
  decoder is lenient with trailing garbage bytes)
- This fixes large DLCs that previously failed locally and then
  hit dcrypt.it's 413 size limit on both endpoints
- Empty decryption result returns [] instead of throwing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 02:03:37 +01:00
SucukdeluxeandClaude Opus 4.6 48c89713ba Release v1.4.35 with 413 handling for both dcrypt endpoints
- Handle 413 from paste endpoint (not just upload)
- Show clear German error "DLC-Datei zu groß für dcrypt.it" when both
  endpoints reject the file due to size
- Add tests for dual-413 and upload-413+paste-500 scenarios

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 02:00:52 +01:00
SucukdeluxeandClaude Opus 4.6 778124312c Release v1.4.34 with DLC import package-name and 413 fixes
- Use DLC filename as package name in dcrypt fallback instead of
  inferring from individual URLs (fixes mangled package names)
- Add paste endpoint fallback when dcrypt upload returns 413
- Split decryptDlcViaDcrypt into tryDcryptUpload/tryDcryptPaste
- Add DCRYPT_PASTE_URL constant
- Expand container tests for 413 fallback and dual-failure scenarios

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 01:51:40 +01:00
Sucukdeluxe edbfba6663 Release v1.4.33 with DLC import and stats hotfixes
Build and Release / build (push) Has been cancelled
2026-03-01 01:39:51 +01:00
Sucukdeluxe ff1036563a Release v1.4.32 with intensive renamer hardening
Build and Release / build (push) Has been cancelled
2026-03-01 01:21:13 +01:00
Sucukdeluxe 6ac56c0a77 Release v1.4.31 with full bug-audit hardening
Build and Release / build (push) Has been cancelled
2026-03-01 00:33:26 +01:00
Sucukdeluxe 6ae687f3ab Release v1.4.30 with startup and UI race-condition fixes
Build and Release / build (push) Has been cancelled
2026-02-28 22:33:19 +01:00
Sucukdeluxe eda9754d30 Release v1.4.29 with downloader and API safety hardening
Build and Release / build (push) Has been cancelled
2026-02-28 21:31:42 +01:00
Sucukdeluxe 84d8f37ba6 Release v1.4.28 with expanded bug audit fixes
Build and Release / build (push) Has been cancelled
2026-02-28 19:47:46 +01:00
SucukdeluxeandClaude Opus 4.6 05a0c4fd55 Fix PackageCard memo comparator to include callback props
Prevents stale closures when callback identities change but data props remain the same.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 18:09:51 +01:00
Sucukdeluxe 8700db4a37 Release v1.4.27 with bug audit hardening fixes 2026-02-28 14:12:16 +01:00
SucukdeluxeandClaude Opus 4.6 cbc423e4b7 Release v1.4.26 with remaining bug audit fixes
- AllDebrid: add HTML response detection to unrestrictLink
- Cleanup: skip symlinks/junctions in all directory traversals
- Blob URL: increase revoke delay from 0ms to 60s
- Extractor: per-package progress file to prevent collision
- ADD_CONTAINERS: reject path traversal and relative paths

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:09:59 +01:00
SucukdeluxeandClaude Opus 4.6 06a272ccbd Release v1.4.25 with hybrid extraction status fix
- Items extracted during hybrid extraction now show "Entpackt" instead of "Fertig"
- Only items belonging to the extracted archive set get status updates during hybrid extraction
- Final extraction preserves "Entpackt" status from prior hybrid passes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:01:49 +01:00
SucukdeluxeandClaude Opus 4.6 c1e614650a Release v1.4.24 with UI improvements
- Fix drag overlay appearing during internal package reorder
- Rename "Paket abbrechen" to "Paket löschen"
- Make package deletion instant (remove performQuickAction delay)
- Add A-Z / Z-A sorting buttons for packages

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 12:41:39 +01:00