Commit Graph
339 Commits
Author SHA1 Message Date
SucukdeluxeandClaude Opus 4.6 7e79bef8da Increase JVM extractor heap to 8GB max / 512MB initial
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 05:48:02 +01:00
SucukdeluxeandClaude Opus 4.6 30d216c7ca Fix extraction progress caching and JVM tuning
- Replace Map-based archive item cache with plain Object.create(null)
  to work around mysterious Map.has() returning false despite set()
  being called with the same key — this caused resolveArchiveItems
  to run on every 1.1s pulse instead of being cached, preventing
  extraction progress (Entpacken X%) from ever showing in the UI
- Apply same fix to both hybrid and full extraction paths
- Increase JVM heap from 512MB to 1GB for better extraction throughput
- Use SerialGC for faster JVM startup on short-lived extract processes
- Add download lifecycle logging (package add + item download start)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 05:42:23 +01:00
SucukdeluxeandClaude Opus 4.6 d80483adc2 Add download lifecycle logging for better diagnostics
- Log when packages are added (count + names)
- Log when individual item downloads start (filename, size, provider)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 05:32:44 +01:00
SucukdeluxeandClaude Opus 4.6 1cda391dfe Fix extraction speed and UI label updates
- Change OS priority from IDLE/BELOW_NORMAL to NORMAL/BELOW_NORMAL so
  extraction runs at full speed (matching manual 7-Zip/WinRAR performance)
- Use "high" priority in both hybrid and full extraction paths
- Increase hybrid extraction threads from hardcoded 2 to dynamic
  calculation (half CPU count, min 2, max 8)
- Fix emitState forced emit being silently dropped when a non-forced
  timer was already pending — forced emits now always replace pending
  timers to ensure immediate UI feedback during extraction transitions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 05:28:42 +01:00
SucukdeluxeandClaude Opus 4.6 4ad1c05444 Fix extraction UI labels and speed for final extraction pass
- Force immediate emitState when first resolving archive items so UI
  transitions from 'Ausstehend' to 'Entpacken X%' instantly
- Use BELOW_NORMAL priority (instead of IDLE) for final extraction
  when all downloads are complete — matches manual extraction speed
- Add diagnostic logging for resolveArchiveItems matching

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 05:08:09 +01:00
SucukdeluxeandClaude Opus 4.6 c6261aba6a Log when each item download completes
Add "Download fertig: filename (size), pkg=name" log line when an item
finishes downloading, enabling precise timing analysis of when archive
parts become available for extraction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 04:45:17 +01:00
SucukdeluxeandClaude Opus 4.6 af6547f254 Add MKV collection after hybrid extraction + detailed timing logs
- Run collectMkvFilesToLibrary in background after each hybrid extraction
  round so MKVs are moved to the library as episodes are extracted, not
  only after the entire package finishes
- Add timing logs to identify bottlenecks:
  - Post-process slot wait time
  - Per-round duration with requeue status
  - Recovery loop duration
  - Setup time in handlePackagePostProcessing
  - findReadyArchiveSets duration when > 200ms

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 04:41:01 +01:00
SucukdeluxeandClaude Opus 4.6 1bfde96e46 Self-requeue hybrid extraction to avoid missed archive sets
After a hybrid extraction round completes, set the requeue flag so the
do-while loop immediately checks for more ready archive sets. Previously,
if all items completed before the task started processing, the single
requeue flag was consumed and no new completions triggered re-extraction,
causing 25+ second gaps until the next download completion.

Also change runHybridExtraction return type from void to number
(extracted count) to enable conditional self-requeue only when archives
were actually extracted, preventing infinite requeue loops.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 04:37:03 +01:00
SucukdeluxeandClaude Opus 4.6 95cf4fbed8 Eliminate 10-15s pause between package extractions
Release post-process slot immediately after main extraction completes.
All slow post-extraction work (nested extraction, auto-rename, archive
cleanup, link/sample removal, empty directory cleanup, MKV collection)
now runs in background via runDeferredPostExtraction so the next package
can start unpacking without delay.

- Export hasAnyFilesRecursive, removeEmptyDirectoryTree, cleanupArchives
  from extractor.ts for use in deferred handler
- Import removeDownloadLinkArtifacts, removeSampleArtifacts from cleanup
- Expand runDeferredPostExtraction with full post-cleanup pipeline:
  nested extraction, rename, archive cleanup, link/sample removal,
  empty dir tree removal, resume state clearing, MKV collection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 04:22:20 +01:00
SucukdeluxeandClaude Opus 4.6 b9372f0ef0 Add ddownload to VALID_PRIMARY_PROVIDERS and VALID_FALLBACK_PROVIDERS
DDownload was missing from provider validation sets, preventing users
from configuring it as primary or fallback provider in settings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 04:04:31 +01:00
SucukdeluxeandClaude Opus 4.6 db97a7df14 Fix setPackagePriority type safety and add missing .catch() to IPC calls
- Use PackagePriority type instead of string/any in preload and app-controller
- Add .catch() to start(), extractNow(), setPackagePriority(), updateSettings(columnOrder), openLog(), openSessionLog()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 03:59:10 +01:00
SucukdeluxeandClaude Opus 4.6 a1c8f42435 Comprehensive bugfix release v1.6.45
Fix ~70 issues across the entire codebase including security fixes,
error handling improvements, test stabilization, and code quality.

- Fix TLS race condition with reference-counted acquire/release
- Bind debug server to 127.0.0.1 instead of 0.0.0.0
- Add overall timeout to MegaWebFallback
- Stream update installer to disk instead of RAM buffering
- Add path traversal protection in JVM extractor
- Cache DdownloadClient with credential-based invalidation
- Add .catch() to all fire-and-forget IPC calls
- Wrap app startup, clipboard, session-log in try/catch
- Add timeouts to container.ts fetch calls
- Fix variable shadowing, tsconfig path, line endings
- Stabilize tests with proper cleanup and timing tolerance
- Fix installer privileges, scripts, and afterPack null checks
- Delete obsolete _upload_release.mjs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 03:53:28 +01:00
SucukdeluxeandClaude Opus 4.6 a3c2680fec Show transitional label between archive extractions
After an archive finishes at 100%, show "Naechstes Archiv..." label
while the next archive initializes, eliminating the "dead" gap where
no activity was visible between consecutive extractions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 03:13:08 +01:00
SucukdeluxeandClaude Opus 4.6 2a528a126c Add detailed preparation labels and dash separator for post-process status
- Show "Entpacken vorbereiten..." while scanning archives and checking disk space
- Show "Archive scannen..." and "Speicherplatz prüfen..." phases from extractor
- Use dash separator in UI: "[10/10 - Done] - Entpacken 45% (3/6)"
- Handle new "preparing" phase in both hybrid and full extraction progress handlers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 02:57:23 +01:00
SucukdeluxeandClaude Opus 4.6 8839080069 Show live extraction progress in package postProcessLabel
Update postProcessLabel during extraction with detailed progress:
- Overall percentage and archive count (e.g. "Entpacken 45% (3/6)")
- Password cracking progress when testing passwords
- Works for both hybrid and full extraction modes

Previously the label was static "Entpacken..." with no detail about
what was happening during potentially long extraction phases.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 02:46:10 +01:00
SucukdeluxeandClaude Opus 4.6 8f66d75eb3 Show DDownload provider label instead of generic Debrid in status
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 02:42:19 +01:00
SucukdeluxeandClaude Opus 4.6 6db03f05a9 Fix DDownload downloads failing due to SSL certificate verification
DDownload's storage servers (dstorage.org) use certificates that fail
Node.js TLS verification. Add skipTlsVerify flag to UnrestrictedLink
and temporarily disable TLS verification for the download fetch when
the flag is set.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 02:32:59 +01:00
SucukdeluxeandClaude Opus 4.6 068da94e2a Auto-route DDownload URLs to DDownload provider before debrid chain
DDownload is a direct file hoster, not a debrid service. DDownload URLs
are now automatically handled by the DDownload provider when configured,
before trying any debrid providers. Remove DDownload from the
primary/secondary/tertiary provider dropdowns since it only handles its
own URLs and doesn't belong in the debrid fallback chain.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 02:25:34 +01:00
SucukdeluxeandClaude Opus 4.6 036cd3e066 Add DDownload provider, post-processing status labels, and update changelog
- DDownload (ddownload.com/ddl.to) as new hoster with web login
- Post-processing labels: Entpacken/Renaming/Aufräumen/MKVs
- Release notes shown in update confirmation dialog

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 02:05:16 +01:00
SucukdeluxeandClaude Opus 4.6 479c7a3f3f Fix hybrid extraction showing "Ausstehend" instead of "Warten auf Parts"
When hybrid extraction finds no ready archive sets (because remaining parts
are still downloading), completed items were incorrectly labeled as
"Entpacken - Ausstehend" instead of "Entpacken - Warten auf Parts".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 01:38:51 +01:00
SucukdeluxeandClaude Opus 4.6 c20d743286 Fix updater GetUserByName error, mask backup credentials, clean up old scripts
- Migrate deprecated updateRepo value (Sucukdeluxe/) to new default (Administrator/)
- Mask sensitive fields (tokens, passwords) in backup export with ***
- Preserve current credentials when importing backup with masked values
- Remove 22 obsolete release_v*.mjs scripts, release_codeberg.mjs, set_version_node.mjs
- Remove release:codeberg script from package.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 01:20:57 +01:00
Sucukdeluxe af00d69e5c Switch release/update docs and tooling to Gitea 2026-03-05 00:42:59 +01:00
SucukdeluxeandClaude Opus 4.6 74920e2e2f Round 8 bug fixes (20 fixes)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 22:14:03 +01:00
SucukdeluxeandClaude Opus 4.6 75775f2798 Round 7 bug fixes (13 fixes)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 21:59:42 +01:00
SucukdeluxeandClaude Opus 4.6 fad0f1060b Release v1.6.30
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 21:36:35 +01:00
SucukdeluxeandClaude Opus 4.6 0ca359e509 Round 6 bug fixes (pre-release)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 21:23:34 +01:00
SucukdeluxeandClaude Opus 4.6 1d0ee31001 Release v1.6.29
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 21:11:32 +01:00
SucukdeluxeandClaude Opus 4.6 20a0a59670 Release v1.6.28
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:54:49 +01:00
SucukdeluxeandClaude Opus 4.6 9a00304a93 Release v1.6.27
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:34:50 +01:00
SucukdeluxeandClaude Opus 4.6 55b00bf884 Release v1.6.26
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:18:47 +01:00
SucukdeluxeandClaude Opus 4.6 e85f12977f Fix extractedArchives.push -> .add (Set, not Array)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:03:40 +01:00
SucukdeluxeandClaude Opus 4.6 940346e2f4 Release v1.6.25
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:01:01 +01:00
SucukdeluxeandClaude Opus 4.6 1854e6bb17 Release v1.6.24
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 19:34:13 +01:00
SucukdeluxeandClaude Opus 4.6 26b2ef0abb Release v1.6.23
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 19:26:01 +01:00
SucukdeluxeandClaude Opus 4.6 9cceaacd14 Release v1.6.22
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 19:04:53 +01:00
SucukdeluxeandClaude Opus 4.6 1ed13f7f88 Release v1.6.21
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:57:18 +01:00
SucukdeluxeandClaude Opus 4.6 729aa30253 Release v1.6.20
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:09:13 +01:00
SucukdeluxeandClaude Opus 4.6 b8bbc9c32f Release v1.6.19
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 17:45:30 +01:00
SucukdeluxeandClaude Opus 4.6 a263e3eb2c Release v1.6.18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 17:31:20 +01:00
SucukdeluxeandClaude Opus 4.6 10bae4f98b Release v1.6.17
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 17:04:32 +01:00
SucukdeluxeandClaude Opus 4.6 b02aef2af9 Release v1.6.16
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:50:59 +01:00
SucukdeluxeandClaude Opus 4.6 56c0b633c8 Release v1.6.15
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:47:48 +01:00
SucukdeluxeandClaude Opus 4.6 4e8e8eba66 Release v1.6.14
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:30:49 +01:00
SucukdeluxeandClaude Opus 4.6 d5638b922d Release v1.6.13
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:18:15 +01:00
SucukdeluxeandClaude Opus 4.6 dc695c9a04 Release v1.6.12
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:07:08 +01:00
SucukdeluxeandClaude Opus 4.6 52909258ca Release v1.6.11
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:03:29 +01:00
SucukdeluxeandClaude Opus 4.6 e9b9801ac1 Release v1.6.10
Fix post-process slot counter going negative after stop(), allowing multiple
packages to extract simultaneously instead of one at a time.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 14:46:44 +01:00
SucukdeluxeandClaude Opus 4.6 86a358d568 Release v1.6.9
Fix extraction resume state / progress sync, abort labels, and hybrid pkg.status

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 14:43:31 +01:00
SucukdeluxeandClaude Opus 4.6 97c5bfaa7d Release v1.6.8
- Fix "Fertig" status on completed items: session recovery no longer resets
  "Entpacken - Ausstehend" to "Fertig (size)" — respects autoExtract setting
- Extraction continues during pause instead of being aborted
- Hybrid extraction recovery on start/resume: triggerPendingExtractions and
  recoverPostProcessingOnStartup now handle partial packages with hybridExtract
- Move Up/Down buttons: optimistic UI update so packages move instantly

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 14:23:29 +01:00
SucukdeluxeandClaude Opus 4.6 8d0c110415 Release v1.6.7
Add proactive disk-busy detection: lower STREAM_HIGH_WATER_MARK from 2 MB
to 512 KB so backpressure triggers sooner, and monitor stream.writableLength
to show "Warte auf Festplatte" after 300 ms of undrained writes — before
actual backpressure hits.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 14:13:14 +01:00