- Fix hybrid extract not using maxParallelExtract setting (was hardcoded to 1)
- Fix "Warten auf Parts" label shown for items whose downloads are already complete
- Update hybrid extract progress handler to support parallel archive tracking
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- WRONG_PASSWORD JVM error now falls back to legacy UnRAR extractor
- Added masked password logging for JVM and legacy extractors
- Per-attempt password logging shows which passwords are tried and in what order
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
maxParallelExtract now controls how many archives extract simultaneously
within a single package (e.g. 4 episodes at once). Packages still
extract sequentially (one package at a time) to focus I/O. Progress
handler updated to track multiple active archives independently.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously maxParallelExtract allowed multiple packages to extract
simultaneously, splitting I/O across packages. Now packages extract
one at a time in packageOrder so each package finishes faster.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When SevenZipJBinding reports "Archive file can't be opened with any
of the registered codecs", the extractor now falls back to legacy
UnRAR instead of failing immediately. Previously, backend mode "jvm"
(the production default) only allowed fallback for UNSUPPORTEDMETHOD.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hoster column now shows only the file hoster (e.g. rapidgator.net),
new Account column shows the debrid service used (e.g. Mega-Debrid).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fortschritt column is now clickable/sortable (ascending/descending by package %)
- Extraction queue respects packageOrder: top packages get extracted first
- Packages currently extracting are auto-expanded so user can see progress
- Increased Fortschritt column width for better spacing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New setting maxParallelExtract in AppSettings
- UI input in Entpacken tab: "Parallele Entpackungen"
- Replaces hardcoded maxConcurrent=2 in acquirePostProcessSlot
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each JVM extractor process now gets its own temp directory via
-Djava.io.tmpdir so parallel SevenZipJBinding instances don't fight
over the same lib7-Zip-JBinding.dll file lock on Windows.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The previous targetPath-only matching missed items whose targetPath
differed from the on-disk filename. Now matches by basename and
fileName for reliable archive-part to item association.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace serial packagePostProcessQueue with semaphore (max 2 concurrent)
- Hybrid-extract: items waiting for parts show "Entpacken - Warten auf Parts"
- Failed hybrid extraction shows "Entpacken - Error" instead of "Fertig"
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
findNextQueuedItem(), hasQueuedItems(), hasDelayedQueuedItems() and
countQueuedItems() now skip packages not in runPackageIds when the set
is non-empty. This ensures "Ausgewählte Downloads starten" only
processes selected packages instead of all enabled ones.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Restore all source files from v1.5.49 (proven stable on both servers)
- Add startPackages() IPC method that starts only specified packages
- Fix context menu "Ausgewählte Downloads starten" to use startPackages()
instead of start() which was starting ALL enabled packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
- Add automatic retry with 3s delay when JVM extractor fails with
"codecs" or "can't be opened" error during hybrid-extract mode
(handles transient Windows file locks after download completion)
- Log archive file size before JVM extraction in hybrid mode
- Remove unused ArchiveFormat import, RAR_MULTIPART_RE/RAR_OLDSPLIT_RE
patterns, and hasOldStyleRarSplits() method from Java extractor
- Keep simple openSevenZipArchive with currentVolumeName tracking
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The previous fix blocked ALL multi-part extractions when any item in the
package was pending. Now checks only parts of the SAME archive (by prefix
match on fileName/targetPath), so E01 can extract while E06 downloads.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- findReadyArchiveSets: for .part1.rar, require ALL package items
to be terminal before allowing extraction (prevents premature
extraction when later parts have no targetPath/fileName yet)
- JVM extractor: remove CRCERROR from isPasswordFailure() — only
DATAERROR indicates wrong password. CRCERROR on archives where
7z-JBinding falsely reports encrypted no longer triggers password
cycling.
- looksLikeWrongPassword: remove CRC text matching, keep only
explicit "data error" for encrypted archives.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Account Manager: table UI with add/remove/check for all 4 providers
(Real-Debrid, Mega-Debrid, BestDebrid, AllDebrid)
- Backend: checkRealDebridAccount, checkAllDebridAccount, checkBestDebridAccount
- Hybrid-Extract fix: check item.fileName for queued items without targetPath,
disable disk-fallback for multi-part archives, extend disk-fallback to catch
active downloads by fileName match (prevents CRC errors on incomplete files)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Scrapes the Mega-Debrid profile page to display username, premium status,
remaining days, and loyalty points. New "Account prüfen" button in Settings > Accounts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Encrypt sensitive credentials (tokens, passwords) in backup exports
using AES-256-GCM with PBKDF2 key derivation from OS username
- Backup format v2 with backwards-compatible v1 import
- Show dialog to create non-existent directories when changing
outputDir, extractDir, or mkvLibraryDir settings
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Root cause: SevenZip.initSevenZipFromPlatformJAR() was never called, so
native compression codecs (RAR5, LZMA2, etc.) were not loaded. Archives
could be opened (header parsing is pure Java) but all extractSlow() calls
returned UNSUPPORTEDMETHOD because no native decoder was available.
- Add ensureSevenZipInitialized() with lazy init before extraction
- Pass password to extractSlow(outStream, password) for RAR5 compatibility
- Add UNSUPPORTEDMETHOD -> legacy fallback in extractor.ts as safety net
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Java's getCanonicalFile() resolves subst drives inconsistently,
causing secureResolve() to falsely block valid filenames. JVM handles
long paths natively so subst is only needed for legacy UnRAR/7z.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The JVM sidecar class files were packed inside app.asar where Java
cannot access them. asarUnpack extracts them to app.asar.unpacked/.
Default backend changed from auto to jvm (no legacy fallback).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- setWindowsBackgroundIO (Very Low I/O) now only applied in hybrid mode,
not for all extractions (was causing massive slowdown)
- Hybrid threads changed from -mt1 to half CPU count (e.g. -mt4 on 8-core)
- Move retry count (R9, R22 etc.) from status text to tooltip only
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- normalizeSessionStatuses: reset all queued items to "Wartet" instead of
only checking a few specific patterns (missed Retry, Unrestrict-Fehler etc.)
- Reset completed items with stale extraction status to "Fertig (size)"
- stop(): reset all non-finished items to queued/"Wartet" and packages to queued
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
Items with transient status texts like Provider-Cooldown, Warte auf
Daten, Verbindungsfehler are reset to "Wartet" when the app restarts,
so they don't show misleading status from a previous session.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>