-
v1.6.49 Stable
released this
2026-03-05 04:45:53 +01:00 | 610 commits to main since this releasev1.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
- Log when each item finishes downloading (
-
v1.6.48 Stable
released this
2026-03-05 04:42:09 +01:00 | 612 commits to main since this releasev1.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 Stable
released this
2026-03-05 04:37:42 +01:00 | 614 commits to main since this releasev1.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
runHybridExtractionreturn type changed fromvoidtonumber(extracted count)- After hybrid extraction returns with extracted > 0,
hybridExtractRequeueflag is set - The do-while loop in
runPackagePostProcessingpicks 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 Stable
released this
2026-03-05 04:24:22 +01:00 | 616 commits to main since this releasev1.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
-
v1.6.45 Stable
released this
2026-03-05 04:12:47 +01:00 | 618 commits to main since this releaseComprehensive bugfix release addressing ~70 issues across the entire codebase.
Security & Stability (Critical)
- Fix TLS certificate bypass race condition: replaced save/restore pattern with reference-counted acquire/release to prevent concurrent download interference
- Bind debug server to 127.0.0.1 instead of 0.0.0.0 to prevent LAN exposure
- Add 180-second overall timeout to MegaWebFallback to prevent indefinite hangs
- Stream update installer to disk instead of buffering entire file in RAM
- Add path traversal protection and symlink rejection in JVM extractor
- Sanitize Windows special characters in extracted filenames
DDownload Provider
- Cache DdownloadClient instances on DebridService with credential-based invalidation to preserve session cookies
- Add ddownload provider to normalizeSessionStatuses provider check
- Include ddownloadLogin/ddownloadPassword in backup sensitive keys list
- Add ddownload.com and ddl.to to Content Security Policy connect-src
Error Handling & Resilience
- Add .catch() to all fire-and-forget IPC calls in renderer (togglePause, startPackages, startItems, togglePackage, resetPackage, resetItems, skipItems, clearHistory, removeHistoryEntry, clipboard operations)
- Wrap app.whenReady() chain with .catch() to handle startup failures gracefully
- Wrap clipboard.readText() in try/catch to handle Wayland/permission errors
- Wrap session log directory creation in try/catch to prevent crash on permission errors
- Add AbortSignal.timeout(30000) to all container.ts fetch calls (DLC decrypt, dcrypt.it upload/paste)
- Add actionBusy guard to backup import/export to prevent concurrent operations
UI Fixes
- Fix toast notification z-index to appear above all overlays
- Fix emptySnapshot() missing ddownloadLogin/ddownloadPassword fields
- Add CSP connect-src entries for git.24-music.de, ddownload.com, ddl.to
Code Quality
- Fix fs variable shadowing in download-manager.ts (fs -> fullSt)
- Fix tsconfig.json include path (vite.config.ts -> vite.config.mts)
- Fix storage.ts line ending normalization to handle bare CR
- Delete obsolete _upload_release.mjs (replaced by release_gitea.mjs)
Installer
- Change PrivilegesRequired from admin to lowest (no longer requires elevation)
- Remove ignoreversion flag from file installation
- Fix output filename to use spaces instead of hyphens
Scripts
- release_gitea.mjs: add dry-run safety, streaming uploads, version collision handling, credential timeout
- provider_smoke_check.mjs: fix cookie parsing with getSetCookie(), add login verification
- mega_web_generate_download_test.mjs: fix cookie parsing, add login check
- debrid_service_smoke.ts: add .catch() and try/finally for dispose
- afterPack.cjs: add null check for productFilename, wrap rcedit in try/catch
Tests
- Fix extractor-jvm.test.ts: use describe.skipIf instead of silent return
- Fix extractor.test.ts: use it.skipIf, add afterEach cleanup for statfs/env mocks
- Fix session-log.test.ts: add shutdownSessionLog in afterEach, increase timing tolerance
- Fix mega-web-fallback.test.ts: increase abort timeout from 30ms to 200ms
- Fix debrid.test.ts: increase abort timeout from 25ms to 200ms
- Fix auto-rename.test.ts: add positive assertions to all test cases
- Fix self-check.ts: add missing await to manager2.start()
Java Extractor (JBindExtractorMain.java)
- Fix resource leaks: close InputStream, RandomAccessFile, and volume handles in finally blocks
- Remove path traversal vulnerability in resolveVolumeFile
- Add symlink rejection before extraction
- Precompile regex pattern for performance
- Fix safeSize() to return 0 for empty files
Additional fixes (post-release)
- Fix setPackagePriority type safety: use PackagePriority type instead of string/any in preload and app-controller
- Add .catch() to remaining uncaught IPC calls: start(), extractNow(), setPackagePriority(), updateSettings(columnOrder), openLog(), openSessionLog()
Additional fixes (post-release update 2)
- Add ddownload to VALID_PRIMARY_PROVIDERS and VALID_FALLBACK_PROVIDERS (was missing, preventing DDownload from being set as primary or fallback provider)
Additional fixes (post-release update 3)
- Fix btn-danger CSS class mismatch: history tab danger buttons now get correct red styling (.btn.danger instead of .btn-danger)
Additional fixes (post-release update 4)
- Make update changelog collapsible: long changelogs no longer block the install button, changelog is in a collapsed details element
- Modal dialog is now scrollable with max-height constraint
Downloads
-
v1.6.44 Stable
released this
2026-03-05 03:13:08 +01:00 | 624 commits to main since this releaseImprovements
- Show transitional "Naechstes Archiv..." label between archive extractions, eliminating the dead gap where no status was visible
- Compact changelog in update dialog: only top-level items shown, sub-items stripped (from v1.6.43)
Downloads
-
v1.6.43 Stable
released this
2026-03-05 03:02:41 +01:00 | 625 commits to main since this releaseImprovements
- Compact changelog in update dialog: only top-level items are shown, sub-items and long descriptions are stripped for a clean display
- Detailed post-processing status labels with live extraction progress (from v1.6.41/v1.6.42):
- Entpacken vorbereiten / Archive scannen / Speicherplatz pruefen phases
- Live extraction percentage and archive count
- Password cracking progress
- Renaming / Aufraeumen / MKV collection phases
- DDownload provider label in download status (from v1.6.40)
- DDownload SSL certificate fix for storage servers (from v1.6.38)
- DDownload auto-routing before debrid chain (from v1.6.37)
Downloads
-
v1.6.42 Stable
released this
2026-03-05 02:57:23 +01:00 | 626 commits to main since this releaseImprovements
- Detailed post-processing status labels: The package status now shows exactly what is happening at every phase, eliminating "dead" periods where no activity was visible:
[10/10 - Done] - Entpacken vorbereiten...� initial preparation[10/10 - Done] - Archive scannen...� discovering archive files[10/10 - Done] - Speicherplatz pr�fen...� disk space verification[10/10 - Done] - Entpacken 45% (3/6)� live extraction progress[10/10 - Done] - Passwort knacken: 60%� password testing[10/10 - Done] - Renaming...� auto-rename phase[10/10 - Done] - Aufr�umen...� archive cleanup[10/10 - Done] - Verschiebe MKVs...� MKV library collection
- Dash separator in status: Status format changed from
[10/10] Entpackento[10/10 - Done] - Entpacken 45% (3/6)for better readability
Downloads
- Detailed post-processing status labels: The package status now shows exactly what is happening at every phase, eliminating "dead" periods where no activity was visible:
-
v1.6.41 Stable
released this
2026-03-05 02:46:10 +01:00 | 627 commits to main since this releaseImprovements
- Live extraction progress in package status: The package-level status label now shows detailed, real-time extraction progress instead of a static "Entpacken..." label:
- Overall percentage and archive count:
Entpacken 45% (3/6) - Password cracking progress:
Passwort knacken: 60% - Works for both hybrid (during download) and full extraction modes
- Previously there were phases where the package showed no activity detail, making it unclear what was happening
- Overall percentage and archive count:
Downloads
- Live extraction progress in package status: The package-level status label now shows detailed, real-time extraction progress instead of a static "Entpacken..." label:
-
v1.6.40 Stable
released this
2026-03-05 02:42:19 +01:00 | 628 commits to main since this releaseFixes
- Show "DDownload" instead of "Debrid" in download status: Status column now correctly shows "Download l�uft (DDownload)" instead of the generic "Download l�uft (Debrid)" for DDownload downloads.
- Strip markdown from update changelog (from v1.6.39): Changelog in update dialog now displays as clean plain text.
Downloads