Commit Graph
100 Commits
Author SHA1 Message Date
Sucukdeluxe 01e0f27841 Release v1.7.69 2026-03-09 01:44:15 +01:00
Sucukdeluxe 47742ad7a4 Skip startup cleanup for extract errors 2026-03-09 01:43:43 +01:00
Sucukdeluxe 58e2612306 Release v1.7.68 2026-03-09 01:36:47 +01:00
Sucukdeluxe c898c6de65 Mirror extractor logs to item logs 2026-03-09 01:36:08 +01:00
Sucukdeluxe 9449788e56 Release v1.7.67 2026-03-09 01:21:54 +01:00
Sucukdeluxe 56ce7c2aea Add remote host and item diagnostics 2026-03-09 01:21:11 +01:00
Sucukdeluxe 90a06d2926 Release v1.7.66 2026-03-09 00:53:51 +01:00
Sucukdeluxe 3320f38e47 Adjust unrestrict retry status wording 2026-03-09 00:53:23 +01:00
Sucukdeluxe c225df0bcd Release v1.7.65 2026-03-09 00:33:26 +01:00
Sucukdeluxe 87212ddf76 Fix Real-Debrid resume size mismatch handling 2026-03-09 00:32:41 +01:00
Sucukdeluxe 157feb8eb7 Release v1.7.64 2026-03-09 00:03:43 +01:00
Sucukdeluxe e86c9576e7 Fix Real-Debrid web login session reuse 2026-03-09 00:03:05 +01:00
Sucukdeluxe 3774511654 Release v1.7.63 2026-03-08 22:37:40 +01:00
Sucukdeluxe 5ef9575b95 Improve rename and extractor diagnostics 2026-03-08 22:37:07 +01:00
Sucukdeluxe 9fd4dd452a Release v1.7.62 2026-03-08 22:16:30 +01:00
Sucukdeluxe bd3c14ad3c Use fixed AllDebrid slot countdowns 2026-03-08 22:15:52 +01:00
Sucukdeluxe d542ea0bf6 Release v1.7.61 2026-03-08 22:02:57 +01:00
Sucukdeluxe 83c0c18dca Hide generic waiting states in queue 2026-03-08 22:02:27 +01:00
Sucukdeluxe fff0589154 Release v1.7.60 2026-03-08 21:47:45 +01:00
Sucukdeluxe 8b941a2777 Limit visible AllDebrid start countdowns 2026-03-08 21:47:11 +01:00
Sucukdeluxe fdb575b0c1 Release v1.7.59 2026-03-08 21:39:39 +01:00
Sucukdeluxe 239154a2c8 Fix AllDebrid paced start scheduling 2026-03-08 21:39:00 +01:00
Sucukdeluxe 178b743163 Release v1.7.58 2026-03-08 21:18:52 +01:00
Sucukdeluxe 63f404285f Tighten idle queue and disk busy status display 2026-03-08 21:18:18 +01:00
Sucukdeluxe 102dbb7da3 Release v1.7.57 2026-03-08 21:08:44 +01:00
Sucukdeluxe 066ef14806 Fix AllDebrid start reservation pacing 2026-03-08 21:08:13 +01:00
Sucukdeluxe 9d6e1ad795 Release v1.7.56 2026-03-08 21:01:31 +01:00
Sucukdeluxe 320518dc58 Fix AllDebrid Rapidgator parallel start limit 2026-03-08 21:00:55 +01:00
Sucukdeluxe eb41b87344 Release v1.7.55 2026-03-08 20:39:31 +01:00
Sucukdeluxe df8cbcf1c9 Fix Debrid-Link notDebrid handling 2026-03-08 20:39:00 +01:00
Sucukdeluxe e19cdf247c Release v1.7.54 2026-03-08 20:31:18 +01:00
Sucukdeluxe 6a0079f9d0 Harden Debrid-Link cooldown and quota handling 2026-03-08 20:30:33 +01:00
Sucukdeluxe fa0f85acb0 Release v1.7.53 2026-03-08 20:08:04 +01:00
Sucukdeluxe 78b06f2975 Rewrite Debrid-Link v2 unrestrict flow 2026-03-08 20:07:28 +01:00
Sucukdeluxe f828a871e2 Release v1.7.52 2026-03-08 19:37:29 +01:00
Sucukdeluxe 8224910091 Harden Debrid-Link HTTP 416 recovery and rename coverage 2026-03-08 19:36:54 +01:00
Sucukdeluxe 09d757782f Release v1.7.51 2026-03-08 17:08:52 +01:00
Sucukdeluxe c62e3ced0c Fix resume preflight recovery and rename regression coverage 2026-03-08 17:08:09 +01:00
Sucukdeluxe 63b412a43f Release v1.7.50 2026-03-08 04:49:53 +01:00
Sucukdeluxe 2123a48bea Fix resume completion and rar fallback handling 2026-03-08 04:49:13 +01:00
Sucukdeluxe 4a27fd72c7 Release v1.7.49 2026-03-08 03:58:11 +01:00
Sucukdeluxe 2bd7a187f8 Fix resume retry fallback for truncated direct links 2026-03-08 03:57:37 +01:00
Sucukdeluxe 7c2c8def51 Release v1.7.48 2026-03-08 03:42:39 +01:00
Sucukdeluxe 38c9058beb Fix session stats, extraction UX, and queue UI issues 2026-03-08 03:42:06 +01:00
Sucukdeluxe 842933e748 Release v1.7.47 2026-03-08 02:55:03 +01:00
Sucukdeluxe ef7905eeb4 Fix legacy extractor path handling 2026-03-08 02:54:37 +01:00
Sucukdeluxe 6c1db14e24 Release v1.7.46 2026-03-08 02:49:23 +01:00
Sucukdeluxe 935f05e214 Fix RAR native extractor fallback 2026-03-08 02:48:49 +01:00
Sucukdeluxe 53c411f635 Release v1.7.45 2026-03-08 02:36:11 +01:00
Sucukdeluxe 28113f57f3 Release v1.7.44 2026-03-08 02:28:51 +01:00
Sucukdeluxe 2a51c443b8 Release v1.7.43 2026-03-08 02:18:53 +01:00
Sucukdeluxe 4dd43c8d91 Release v1.7.42 2026-03-08 02:03:17 +01:00
Sucukdeluxe e4b0f9001e Fix extraction retry loop on CRC/password failures 2026-03-08 02:02:39 +01:00
Sucukdeluxe 9eb28cee2e Add per-package detailed logs 2026-03-08 01:41:23 +01:00
Sucukdeluxe ecfaf52ce9 Release v1.7.40 2026-03-08 01:04:05 +01:00
SucukdeluxeandClaude Opus 4.6 6b22c93554 Fix auto-recovery re-download for encrypted RAR5 archives
- Always force re-download once when both JVM and legacy extractors fail
  (suggestRedownload=true), regardless of valid archive signature
- Add autoRecoveredForRedownload Set for loop protection (one attempt per archive)
- Clear loop protection on package reset (clearHybridArchiveState)
- Previous sibling-items check failed when other episodes were already
  cleaned up after hybrid extraction
- Lower mini-download retry threshold from 100KB to 5KB

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 01:03:37 +01:00
Sucukdeluxe cd5c0c5e7b Release v1.7.39 2026-03-08 00:50:33 +01:00
SucukdeluxeandClaude Opus 4.6 9e255d8110 Fix extraction failures on encrypted RAR5 archives with correct file content
- Retry extraction with 2.5s delay on CRC/password errors (Windows file handle race)
- Improve auto-recovery: force re-download when known password fails (content corruption)
- Expand auto-recovery to wrong_password category for encrypted RAR5
- Add fsync after download for pre-allocated files
- Fix permanent extraction failure loop for archives with valid headers but corrupt content

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 00:50:03 +01:00
Sucukdeluxe 94126943d5 Release v1.7.38 2026-03-08 00:03:34 +01:00
SucukdeluxeandClaude Opus 4.6 27d75153b9 Boost hybrid extraction speed: G1GC, more threads, larger heap
- Switch JVM GC from SerialGC to G1GC with MaxGCPauseMillis=50
  for shorter pause times in long-lived daemon
- Increase JVM heap from 512m/8g to 1g/32g to reduce GC pressure
  on systems with plenty of RAM
- Raise hybrid thread cap from floor(cpuCount/2) capped 8
  to ceil(cpuCount*0.75) capped 12 — downloads are I/O-bound
  and don't need much CPU headroom
- Refresh daemon process priority before each request so hybrid
  extraction gets correct CPU priority even if daemon was started
  with a different priority level

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 00:02:59 +01:00
Sucukdeluxe fd3b5033a4 Release v1.7.37 2026-03-07 23:46:53 +01:00
SucukdeluxeandClaude Opus 4.6 d2689aa425 Fix stall-timeout for providers without fileSize (Mega-Debrid Web)
- Early-exit now also uses raw Content-Length as fallback when
  totalBytes is unknown (provider returned fileSize=0)
- Stall handler checks if file is already complete on disk before
  deleting and retrying — prevents re-download loop for files that
  finished but server delayed closing the connection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 23:46:16 +01:00
Sucukdeluxe 143d0921fc Release v1.7.36 2026-03-07 23:35:17 +01:00
SucukdeluxeandClaude Opus 4.6 00d873445c Fix stall-timeout false positives on fully downloaded small archive parts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 23:34:46 +01:00
Sucukdeluxe 46a64f9e95 Release v1.7.35 2026-03-07 23:15:42 +01:00
SucukdeluxeandClaude Opus 4.6 307dcf0815 Fix stop→start race conditions causing potential hang
- Add scheduler generation counter to prevent stale scheduler from
  continuing after stop/start cycle
- Guard processItem stop-abort handler: skip status overwrite when a
  new start() has already re-activated the session
- Yield in start() after recoverRetryableItems to let pending abort
  handlers complete before evaluating item states
- Add test: rapid stop → disable provider → start must resolve

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 23:15:05 +01:00
Sucukdeluxe 3032604496 Release v1.7.34 2026-03-07 22:33:46 +01:00
SucukdeluxeandClaude Opus 4.6 291c80c7fc Fix auto-recovery re-download loop: check archive magic bytes before forcing re-download
Files with valid RAR/7z/ZIP signature are not corrupt (wrong password),
only files with invalid signature get force-redownloaded.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 22:33:10 +01:00
Sucukdeluxe 3ab7b6c9a3 Release v1.7.33 2026-03-07 22:27:22 +01:00
SucukdeluxeandClaude Opus 4.6 556cbd1d85 Fix auto-recovery for CRC-corrupt archives with correct file sizes
- Trust extractor CRC verdict over file size checks
- Re-queue incomplete downloads instead of just warning

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 22:26:49 +01:00
Sucukdeluxe 2a429b49c0 Release v1.7.32 2026-03-07 22:14:24 +01:00
Sucukdeluxe 5c29355e9a Prevent repeated hybrid extraction retries 2026-03-07 22:13:51 +01:00
Sucukdeluxe 960b1fa046 Release v1.7.31 2026-03-07 21:53:49 +01:00
Sucukdeluxe 9bc9c984cb Fix hybrid auto recovery loops 2026-03-07 21:53:10 +01:00
Sucukdeluxe 1222cb08b5 Release v1.7.30 2026-03-07 21:27:42 +01:00
Sucukdeluxe fb036733e3 Fix auto-recovery for stale archive parts 2026-03-07 21:27:03 +01:00
Sucukdeluxe a322a16b7b Release v1.7.29 2026-03-07 21:09:28 +01:00
Sucukdeluxe 16bfbfc106 Fix archive underflow and extraction readiness 2026-03-07 21:08:43 +01:00
Sucukdeluxe 0f2e8d5567 Release v1.7.27 2026-03-07 20:34:46 +01:00
SucukdeluxeandClaude Opus 4.6 b8bf9c491c Fallback to UnRAR when 7-Zip fails on encrypted RAR archives
If the primary extractor (7-Zip) fails with wrong_password/checksum
error on a .rar file, automatically try the alternative extractor
(UnRAR/WinRAR) which handles RAR format natively and more reliably.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 20:34:17 +01:00
Sucukdeluxe ed0070c711 Release v1.7.26 2026-03-07 20:26:10 +01:00
SucukdeluxeandClaude Opus 4.6 167c28f945 Show base provider name in status text instead of key details
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 20:25:32 +01:00
Sucukdeluxe a3b72d4cbf Release v1.7.25 2026-03-07 20:18:59 +01:00
SucukdeluxeandClaude Opus 4.6 934f24ae22 Add shift-click range selection for downloads list
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 20:18:27 +01:00
Sucukdeluxe c7c6134d48 Release v1.7.24 2026-03-07 20:14:48 +01:00
SucukdeluxeandClaude Opus 4.6 24e457d84d Revalidate completed items on startup, fix stale session data
Items incorrectly marked as "completed" by the old 50% recovery threshold
persist in the session file across updates. On startup, check all completed
items: if the file on disk is smaller than expected totalBytes, reset to
"queued" so it gets re-downloaded. Also reset items whose files are missing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 20:14:11 +01:00
Sucukdeluxe afef8dae6f Release v1.7.23 2026-03-07 20:10:39 +01:00
SucukdeluxeandClaude Opus 4.6 e80948df54 Fix disk-fallback in hybrid extract allowing partial files
Two bugs in findReadyArchiveSets disk-fallback:

1. Failed items were explicitly excluded from the blocking check
   (status !== "failed"), so partial downloads with "failed" status
   would not block extraction. Now ANY non-completed item blocks.

2. The disk size check was only > 10 KB, allowing 627 MB partial
   files of 1001 MB archives to pass. Now requires the file to be
   within one allocation unit of the item's expected totalBytes.

Added findItemByDiskPath helper to look up the owning item for a
file on disk and get its expected size.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 20:10:04 +01:00
Sucukdeluxe 7d09479b44 Release v1.7.22 2026-03-07 19:48:54 +01:00
SucukdeluxeandClaude Opus 4.6 0f2823bdc2 Fix premature hybrid extraction of incomplete archive parts
Item-Recovery incorrectly marked partially downloaded files as "completed"
when the file size was >= 50% of expected size. A 627 MB partial download
of a 1001 MB file (62.7%) would pass the check and trigger hybrid
extraction on incomplete RAR archives.

Fix: require file to be within one allocation unit (4 KB) of the expected
size instead of 50%. Also add a pre-allocation guard: if the file appears
to be at the expected size but downloadedBytes is significantly behind
(< 95%), skip recovery (likely a pre-allocated sparse file from a crash).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:48:22 +01:00
Sucukdeluxe 99074464fb Release v1.7.21 2026-03-07 19:37:07 +01:00
SucukdeluxeandClaude Opus 4.6 927ff5c21a Auto-fix legacy (N) suffix filenames on startup
Detect items whose targetPath has a " (N)" suffix from the previous
duplicate filename bug and rename them back to the original filename.
This fixes extraction failures for RAR split archives that were
downloaded with (1) suffix before v1.7.19.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:36:30 +01:00
Sucukdeluxe 135ba8616f Release v1.7.20 2026-03-07 19:34:13 +01:00
SucukdeluxeandClaude Opus 4.6 afbd425227 Fix Debrid-Link key selection: always use first available key
Replace shared currentKeyIndex round-robin with sequential scan from
first key. All parallel items now consistently use the same key (e.g.
Key 3) until it hits a quota/error, then all move to Key 4, etc.

Previously, currentKeyIndex was shared across parallel unrestrict calls,
causing items to scatter across keys (3, 5, 7) even when Key 3 still
had capacity.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:33:40 +01:00
Sucukdeluxe fef9ff6318 Release v1.7.19 2026-03-07 19:27:04 +01:00
SucukdeluxeandClaude Opus 4.6 0e0c211d35 Restore target path reservations on startup to prevent (1) duplicates
After restart, reservedTargetPaths (in-memory) was empty so claimTargetPath
could not distinguish between "file belongs to this item" and "file belongs
to another item". The naive fix (allow overwrite if unclaimed) would have
risked overwriting completed files from other items.

Proper fix: restore reservedTargetPaths from persisted session data on init.
This way each item's targetPath is correctly claimed, and claimTargetPath
can safely reuse the item's own file while protecting other items' files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:26:29 +01:00
Sucukdeluxe dadc2d1b57 Release v1.7.18 2026-03-07 19:21:00 +01:00
SucukdeluxeandClaude Opus 4.6 cb02dd3aac Fix duplicate (1) filenames after app restart with partial downloads
When the app restarts (or updates) while downloads are in progress,
partial files remain on disk but reservedTargetPaths (in-memory) is empty.
claimTargetPath treated the unclaimed-but-existing file as a conflict and
appended (1) to the filename, breaking RAR split archive extraction.

Fix: if a file exists on disk but no other item has reserved the path,
allow overwriting instead of creating a duplicate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:20:26 +01:00
Sucukdeluxe 31a579f07c Release v1.7.17 2026-03-07 18:03:05 +01:00
SucukdeluxeandClaude Opus 4.6 a0800045ec Fix Debrid-Link key rotation: skip broken keys immediately, add cooldown cache
- Add "notDebrid", "disabledServerHost", "notFree" as immediate-skip errors
  (no 3x retry per key, break to next key instantly like quota errors)
- Add per-key cooldown cache (2 min) so parallel items skip recently-failed keys
  instead of all starting at the same broken key
- Set cooldown on quota errors too, preventing repeated checks on exhausted keys

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:02:34 +01:00