• v1.6.55 72642351d0

    v1.6.55 Stable

    Administrator released this 2026-03-05 06:25:20 +01:00 | 0 commits to main since this release

    • Use bulk IInArchive.extract() API instead of per-item extractSlow() for ~8x faster extraction throughput on solid RAR archives (from ~43 MB/s to near-native WinRAR speed ~375 MB/s)
    • Add BulkExtractCallback with proper ICryptoGetTextPassword support for password-protected archives during bulk extraction
    • Fix resolveArchiveItemsFromList: items were stuck on 'Ausstehend' because pattern matching returned empty arrays; added multi-level fallback (pattern → exact → stem-based → single-item)
    • Simplify extraction progress caching back to standard Map (the caching was never broken — the resolution function was)
    • Add 14 unit tests for archive item resolution covering multipart RAR, old-style RAR volumes, split ZIP/7z, generic splits, stem-based fuzzy matching, and cross-match isolation
    • Add 2 JVM extractor integration tests verifying progress callbacks and multi-archive extraction
    Downloads
  • v1.6.54 d9a78ea837

    v1.6.54 Stable

    Administrator released this 2026-03-05 05:59:50 +01:00 | 2 commits to main since this release

    • Add persistent JVM daemon mode: JVM extractor now starts once and stays alive across multiple archive extractions, eliminating the ~5s JVM boot overhead per archive (saves ~50s for a 10-episode package)
    • Fix extraction progress caching: replaced Object/Map-based caches with Set + linear Array scan — both Map.has() and the 'in' operator on Object.create(null) mysteriously returned false despite keys being just set, causing resolveArchiveItems to re-run on every 1.1s pulse tick instead of caching
    • Items now correctly show live extraction progress (Entpacken X%) and transition smoothly between archives instead of staying stuck at "Entpacken - Ausstehend"
    • Increase JVM extractor heap to 8GB max / 512MB initial for systems with ample RAM
    • Daemon JSON protocol: Node sends extraction requests as JSON lines to stdin, Java processes them sequentially and emits RD_PROGRESS/RD_REQUEST_DONE markers
    • Graceful daemon shutdown on app quit via before-quit handler
    Downloads
  • v1.6.53 c36549ca69

    v1.6.53 Stable

    Administrator released this 2026-03-05 05:48:41 +01:00 | 4 commits to main since this release

    • Increase JVM extractor heap from 1GB to 8GB max and 512MB initial heap for significantly faster extraction on systems with ample RAM
    Downloads
  • v1.6.52 e3b4a4ba19

    v1.6.52 Stable

    Administrator released this 2026-03-05 05:42:55 +01:00 | 6 commits to main since this release

    • Fix extraction progress cache: replaced Map with plain object — Map.has() was returning false despite set() being called with the same key, causing resolveArchiveItems to run on every 1.1s pulse tick instead of caching, which prevented extraction progress labels (Entpacken X%) from ever showing in the UI
    • Items now correctly show live extraction progress (0% → 50% → Done) instead of staying stuck at "Entpacken - Ausstehend"
    • Increase JVM extractor heap from 512MB to 1GB for better extraction throughput on large archives
    • Use SerialGC for faster JVM startup time on short-lived extraction processes
    • Add download lifecycle logging: log when packages are added and when individual downloads start (filename, size, provider)
    Downloads
  • v1.6.51 1cda391dfe

    v1.6.51 Stable

    Administrator released this 2026-03-05 05:28:42 +01:00 | 9 commits to main since this release

    • Fix extraction running at Windows IDLE priority instead of NORMAL, reducing extraction time from ~30s to ~4s per archive (matching manual 7-Zip/WinRAR speed)
    • Increase hybrid extraction thread count from hardcoded 2 to dynamic calculation (half CPU count, min 2, max 8) for better throughput during hybrid extraction
    • Fix forced UI state emissions being silently dropped when a non-forced timer was pending, ensuring extraction progress labels (Entpacken X%) appear immediately instead of items staying stuck at Ausstehend
    • Both hybrid and full extraction paths now use NORMAL OS priority for maximum extraction speed
    Downloads
  • v1.6.50 375ec36781

    v1.6.50 Stable

    Administrator released this 2026-03-05 05:09:24 +01:00 | 10 commits to main since this release

    • Fix extraction UI: items now immediately show 'Entpacken X%' instead of staying at 'Ausstehend' during active extraction (forced emitState on first archive resolve)
    • Fix extraction speed: final extraction pass (all downloads complete) now runs at BELOW_NORMAL priority instead of IDLE priority, significantly reducing extraction time
    • Add diagnostic logging for resolveArchiveItems to trace item-to-archive matching
    Downloads
  • v1.6.49 c88eeb0b12

    v1.6.49 Stable

    Administrator released this 2026-03-05 04:45:53 +01:00 | 12 commits to main since this release

    v1.6.49 — Download Completion Logging

    • Log when each item finishes downloading (Download fertig: filename (size), pkg=name) for precise timing analysis of when archive parts become available for extraction
    • Combined with v1.6.48 timing diagnostics, this enables full pipeline analysis from download completion through extraction start
    Downloads
  • v1.6.48 a010b967b9

    v1.6.48 Stable

    Administrator released this 2026-03-05 04:42:09 +01:00 | 14 commits to main since this release

    v1.6.48 — MKV Collection After Hybrid Extraction + Timing Diagnostics

    Features

    • MKV collection after each hybrid extraction round — Previously, MKVs were only moved to the library folder after the entire package finished downloading and extracting. Now, MKVs are collected in the background after each hybrid extraction round, so episodes appear in the library as they are extracted.

    Diagnostics (for optimization)

    Added detailed timing logs to identify bottlenecks in the extraction pipeline:

    • Post-process slot wait time (logged when > 100ms)
    • Per-round duration with requeue status
    • Item recovery loop duration
    • Setup time in handlePackagePostProcessing
    • findReadyArchiveSets duration (logged when > 200ms)

    These logs will help analyze and further optimize the extraction transitions in future releases.

    Downloads
  • v1.6.47 ba235b0b93

    v1.6.47 Stable

    Administrator released this 2026-03-05 04:37:42 +01:00 | 16 commits to main since this release

    v1.6.47 — Hybrid Extraction Self-Requeue Fix

    Bug Fix

    Fix 25+ second gaps between hybrid extraction rounds — When all archive parts completed downloading before the hybrid extraction task started processing, the single requeue flag was consumed by the first extraction round and never re-set. This caused the system to release the post-process slot after extracting only one archive set, then idle for 25+ seconds until the next download completion triggered a new extraction round.

    Now, after each hybrid extraction round that extracts at least one archive, the system self-requeues to immediately check for more ready archive sets. This ensures back-to-back extraction of all ready archives without waiting for external triggers.

    Technical Details

    • runHybridExtraction return type changed from void to number (extracted count)
    • After hybrid extraction returns with extracted > 0, hybridExtractRequeue flag is set
    • The do-while loop in runPackagePostProcessing picks this up and immediately runs the next round
    • Prevents infinite requeue loops: only self-requeues when archives were actually extracted (returns 0 when all archives already processed)
    Downloads
  • v1.6.46 e1f9b4b6d3

    v1.6.46 Stable

    Administrator released this 2026-03-05 04:24:22 +01:00 | 18 commits to main since this release

    v1.6.46 — Instant Package Transition & Additional Fixes

    Highlights

    Instant package extraction transitions — Previously, there was a 10–15 second pause between finishing one package's extraction and starting the next. The post-process slot is now released immediately after the main extraction completes. All slow post-extraction work (nested extraction, auto-rename, archive cleanup, link/sample artifact removal, empty directory cleanup, MKV collection) runs in the background so the next package starts unpacking without any delay.

    Extraction Pipeline

    • Post-process slot is released immediately after main extraction, eliminating idle gaps between packages
    • Nested extraction (archives found inside extracted output) now runs in background deferred handler
    • Archive source cleanup, link artifact removal, sample artifact removal, and empty directory tree removal all deferred to background
    • Resume state clearing happens in deferred handler after successful extraction
    • Hybrid extraction path: auto-rename changed from blocking await to fire-and-forget for faster slot release

    UI Fixes

    • Fix CSS class mismatch for danger buttons in history tab
    • Update dialog changelog is now collapsible to prevent long changelogs from pushing the install button off-screen
    • Modal card gets max-height and overflow-y auto to stay within viewport

    Bug Fixes

    • Add missing .catch() handlers to IPC calls: start(), extractNow(), setPackagePriority(), updateSettings(columnOrder), openLog(), openSessionLog(), removeHistoryEntry(), clearHistory()
    • Fix setPackagePriority type safety: parameter changed from string to PackagePriority in preload and app-controller
    • Add DDownload to valid primary and fallback provider lists in storage validation

    Internal

    • Export cleanupArchives, hasAnyFilesRecursive, removeEmptyDirectoryTree from extractor module
    • Import removeDownloadLinkArtifacts, removeSampleArtifacts in download-manager for deferred cleanup pipeline
    Downloads