Commit Graph
64 Commits
Author SHA1 Message Date
Sucukdeluxe 30ac5bf9db Harden hybrid extract readiness for partial archives
Require near-complete file size checks in Item-Recovery and hybrid ready-set detection so partially downloaded RAR parts are not marked completed and extracted prematurely.
2026-03-03 16:52:16 +01:00
SucukdeluxeandClaude Opus 4.6 de369f3bcd Replace extraction backend with SevenZipJBinding + Zip4j JVM sidecar
- New JVM sidecar (resources/extractor-jvm/) using SevenZipJBinding for
  RAR/7z/TAR and Zip4j for ZIP multipart, matching JDownloader 2 stack
- Auto/JVM/Legacy backend modes via RD_EXTRACT_BACKEND env variable
- Fallback to legacy UnRAR/7z when JVM runtime unavailable
- Fix isJvmRuntimeMissingError false positives on valid extraction errors
- Cache JVM layout resolution to avoid repeated filesystem checks
- Route nested ZIP extraction through JVM backend consistently

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 02:08:42 +01:00
SucukdeluxeandClaude Opus 4.6 375b9885ee Disk space pre-check, nested extraction, lower I/O priority for hybrid extraction
- Add disk space check before extraction (aborts if insufficient space)
- Add single-level nested archive extraction (archives inside archives)
- Blacklist .iso/.img/.bin/.dmg from nested extraction
- Set real Windows I/O priority (Very Low) on UnRAR via NtSetInformationProcess
- Reduce UnRAR threads to -mt1 during hybrid extraction
- Fix double episode renaming (s01e01e02 pattern)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 00:54:10 +01:00
Sucukdeluxe 7dc12aca0c Fix disk-backpressure stalls and improve episode-token parsing 2026-03-03 00:07:12 +01:00
SucukdeluxeandClaude Opus 4.6 e013c63c59 Fix long path extraction using subst drive mapping instead of \?\ prefix
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
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
Sucukdeluxe bf2b685e83 Add session backup restore and release v1.4.68 2026-03-01 20:13:16 +01:00
Sucukdeluxe e7f0b1d1fd Fix start-conflict skip behavior and release v1.4.67 2026-03-01 20:03:58 +01:00
Sucukdeluxe 647679f581 Fix Mega-Web unrestrict hangs and release v1.4.66 2026-03-01 19:06:34 +01:00
Sucukdeluxe 20c32d39c8 Harden updater candidate fallback on Codeberg 404s 2026-03-01 16:19:35 +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 2bddd5b3b2 Apply configurable retry limit and clean empty extract dirs more aggressively 2026-03-01 04:26:33 +01:00
Sucukdeluxe 3f17cc8cb4 Add configurable auto-retry limit with optional infinite retries 2026-03-01 04:18:41 +01:00
Sucukdeluxe 4bcb069ec7 Harden updater integrity checks with latest.yml SHA512 fallback 2026-03-01 03:57:23 +01:00
Sucukdeluxe 508977e70b Add update install progress feedback and collector metrics line 2026-03-01 03:33:18 +01:00
Sucukdeluxe 809aec69c2 Add optional flat MKV library collection per package 2026-03-01 03:23:26 +01:00
Sucukdeluxe 43bc95b7fc Switch updater and docs from GitHub to Codeberg 2026-03-01 02:40:11 +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 2026-03-01 01:39:51 +01:00
Sucukdeluxe ff1036563a Release v1.4.32 with intensive renamer hardening 2026-03-01 01:21:13 +01:00
Sucukdeluxe 6ac56c0a77 Release v1.4.31 with full bug-audit hardening 2026-03-01 00:33:26 +01:00
Sucukdeluxe 6ae687f3ab Release v1.4.30 with startup and UI race-condition fixes 2026-02-28 22:33:19 +01:00
Sucukdeluxe eda9754d30 Release v1.4.29 with downloader and API safety hardening 2026-02-28 21:31:42 +01:00
Sucukdeluxe 8700db4a37 Release v1.4.27 with bug audit hardening fixes 2026-02-28 14:12:16 +01:00
Sucukdeluxe 9598fca34e Release v1.4.23 with critical bug audit fixes 2026-02-28 12:16:08 +01:00
SucukdeluxeandClaude Opus 4.6 1ba635a793 Fix auto-rename double-episode bug and add 62 rename tests
Bug fixed: When a folder already contained the same episode token as
the source file (e.g. Show.S01E05.720p-4sf + s01e05.mkv), the episode
was inserted a second time producing Show.S01E05.720p.S01E05-4sf.

Root cause: The replace produced an identical string, the equality check
fell through to the suffix-insert branch which added the token again.
Fix: Use regex.test() first, then always apply the replacement when
an episode pattern exists in the folder name.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:34:46 +01:00
SucukdeluxeandClaude Opus 4.6 63fd402083 Release v1.4.20 with comprehensive audit fixes (140 issues) and expanded test coverage
- Speed calculation: raised minimum elapsed floor to 0.5s preventing unrealistic spikes
- Reconnect: exponential backoff with consecutive counter, clock regression protection
- Download engine: retry byte tracking (itemContributedBytes), mkdir before createWriteStream, content-length validation
- Fire-and-forget promises: all void promises now have .catch() error handlers
- Session recovery: normalize stale active statuses to queued on crash recovery, clear speedBps
- Storage: config backup (.bak) before overwrite, EXDEV cross-device rename fallback with type guard
- IPC security: input validation on all string/array IPC handlers, CSP headers in production
- Main process: clipboard memory limit (50KB), installer timing increased to 800ms
- Debrid: attribute-order-independent meta tag regex for Rapidgator filename extraction
- Constants: named constants for magic numbers (MAX_MANIFEST_FILE_BYTES, MAX_LINK_ARTIFACT_BYTES, etc.)
- Extractor/integrity: use shared constants, document password visibility and TOCTOU limitations
- Tests: 103 tests total (55 new), covering utils, storage, integrity, cleanup, extractor, debrid, update

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:23:24 +01:00
Sucukdeluxe 556f0672dc Release v1.4.19 with 4SF/4SJ auto-rename support 2026-02-28 05:50:14 +01:00
SucukdeluxeandClaude Opus 4.6 b971a79047 Release v1.4.18 with performance optimization and deep bug fixes
- Optimize session cloning: replace JSON.parse/stringify with shallow spread (~10x faster for large queues)
- Convert blocking fs.existsSync/statSync to async on download hot path
- Fix EXDEV cross-device rename in sync saveSettings/saveSession (network drive support)
- Fix double-delete bug in applyCompletedCleanupPolicy (package_done + immediate)
- Fix dangling runPackageIds/runCompletedPackages in removePackageFromSession
- Fix AdmZip partial extraction: use overwrite mode for external fallback
- Add null byte stripping to sanitizeFilename (path traversal prevention)
- Add 5MB size limit for hash manifest files (OOM prevention)
- Add 256KB size limit for link artifact file content check
- Deduplicate cleanup code via centralized removePackageFromSession

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 05:30:28 +01:00
SucukdeluxeandClaude Opus 4.6 cc887eb8a1 Release v1.4.14 with extraction performance optimization and bug fixes
- Add multi-threaded extraction via WinRAR -mt flag (uses all CPU cores)
- Fix -idq flag suppressing progress output, replaced with -idc
- Fix extraction timeout for multi-part archives (now calculates total size across all parts)
- Raise extraction timeout cap from 40min to 2h for large archives (40GB+)
- Add natural episode sorting (E1, E2, E10 instead of E1, E10, E2)
- Add split archive support (.zip.001, .7z.001) with proper cleanup
- Add write-stream drain timeout to prevent download freezes on backpressure
- Fix regex global-state bug in progress percentage parsing
- Optimize speed event pruning (every 1.5s instead of every chunk)
- Add performance flag fallback for older WinRAR versions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 21:28:03 +01:00
Sucukdeluxe 6d8ead8598 Release v1.4.13 with global stall watchdog and freeze recovery 2026-02-27 20:53:07 +01:00
Sucukdeluxe 0f85cd4c8d Release v1.4.12 with connection stall recovery and download freeze mitigation 2026-02-27 20:35:10 +01:00
Sucukdeluxe 6e72c63268 Release v1.4.10 with freeze mitigation and extraction throughput fixes 2026-02-27 20:13:33 +01:00
Sucukdeluxe 333a912d67 Release v1.4.8 with updater fallback recovery and extraction hardening 2026-02-27 19:28:58 +01:00
Sucukdeluxe 3b9c4a4e88 Release v1.4.7 with ENOENT extraction recovery and lag optimizations 2026-02-27 19:12:40 +01:00
Sucukdeluxe dbf1c34282 Release v1.4.6 with extraction resume safety and smoother runtime 2026-02-27 18:59:04 +01:00
Sucukdeluxe 05a75d0ac5 Release v1.4.5 with startup auto-recovery and lag hardening 2026-02-27 18:37:32 +01:00
Sucukdeluxe 6a33e61c38 Release v1.4.4 with visible retries and HTTP 416 progress reset 2026-02-27 18:24:44 +01:00
Sucukdeluxe 53212f45e3 Release v1.4.3 with unified controls and resilient retries 2026-02-27 18:11:50 +01:00
Sucukdeluxe 01ed725136 Add start conflict prompts for existing extracted packages in v1.4.2 2026-02-27 17:54:56 +01:00
Sucukdeluxe c83fa3b86a Bughunt: smooth UI actions and skip redundant settings updates 2026-02-27 17:15:20 +01:00
Sucukdeluxe 4fc0ce26f3 Ship UI productivity upgrades and extraction progress flow in v1.4.0 2026-02-27 16:23:19 +01:00
Sucukdeluxe 7b5218ad98 Remove empty download package dirs after archive cleanup in v1.3.11 2026-02-27 15:55:43 +01:00
Sucukdeluxe e2a8673c94 Harden extraction verification, cleanup safety, and logging in v1.3.10 2026-02-27 15:43:52 +01:00
Sucukdeluxe ef821b69a5 Fix shutdown resume state and legacy extracted cleanup backfill v1.3.9 2026-02-27 15:29:49 +01:00
Sucukdeluxe da51e03cef Backfill extracted archive cleanup on startup in v1.3.8 2026-02-27 15:15:16 +01:00
Sucukdeluxe 75fc582299 Fix split-archive cleanup after extraction and release v1.3.7 2026-02-27 15:07:12 +01:00
Sucukdeluxe 0a99d3c584 Fix stuck queue scheduling and auto-recover stalled streams v1.3.6 2026-02-27 14:55:31 +01:00
Sucukdeluxe 0de5a59a64 Stream filename scan updates and add provider fallback in v1.3.5 2026-02-27 14:45:42 +01:00