Commit Graph
265 Commits
Author SHA1 Message Date
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 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 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 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 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 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 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 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 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 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 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 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 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 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