Commit Graph

268 Commits

Author SHA1 Message Date
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
9ddc7d31bb Make update changelog collapsible in confirm dialog
Long changelogs made the update dialog unscrollable, preventing users
from reaching the install button. Changelog is now in a collapsed
<details> element. Dialog also has max-height with overflow scroll.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 04:12:47 +01:00
Sucukdeluxe
83626017b9 Fix btn-danger CSS class mismatch in history tab
CSS defines .btn.danger (two classes) but code used "btn btn-danger"
(one hyphenated class). History danger buttons now get correct red styling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 04:07:09 +01:00
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
12dade0240 Show compact changelog in update dialog, strip sub-items and long descriptions
Only top-level list items are shown in the updater changelog.
Indented sub-items, headings, and long descriptions are removed
for a clean, compact display. Detailed notes remain on the
Gitea release page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 03:02:41 +01:00
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
56ee681aec Strip markdown formatting from changelog in update dialog
The confirm dialog is plain text and cannot render markdown. Strip
headings, bold, italic, code backticks, and normalize list bullets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 02:37:18 +01:00
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
4b824b2d9f Fix crash when DDownload settings are missing from persisted config
Guard against undefined ddownloadLogin/ddownloadPassword in renderer
when upgrading from a version without DDownload support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 02:17:41 +01:00
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
1103df98c1 Analysiere Programm auf Bugs 2026-03-04 23:03:16 +01:00
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
fad0f1060b Release v1.6.30
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 21:36:35 +01:00
Sucukdeluxe
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
Sucukdeluxe
1d0ee31001 Release v1.6.29
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 21:11:32 +01:00
Sucukdeluxe
20a0a59670 Release v1.6.28
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:54:49 +01:00
Sucukdeluxe
9a00304a93 Release v1.6.27
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:34:50 +01:00
Sucukdeluxe
55b00bf884 Release v1.6.26
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:18:47 +01:00
Sucukdeluxe
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
Sucukdeluxe
940346e2f4 Release v1.6.25
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 20:01:01 +01:00
Sucukdeluxe
1854e6bb17 Release v1.6.24
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 19:34:13 +01:00
Sucukdeluxe
26b2ef0abb Release v1.6.23
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 19:26:01 +01:00
Sucukdeluxe
9cceaacd14 Release v1.6.22
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 19:04:53 +01:00
Sucukdeluxe
1ed13f7f88 Release v1.6.21
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:57:18 +01:00
Sucukdeluxe
729aa30253 Release v1.6.20
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:09:13 +01:00
Sucukdeluxe
b8bbc9c32f Release v1.6.19
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 17:45:30 +01:00
Sucukdeluxe
a263e3eb2c Release v1.6.18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 17:31:20 +01:00
Sucukdeluxe
10bae4f98b Release v1.6.17
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 17:04:32 +01:00
Sucukdeluxe
b02aef2af9 Release v1.6.16
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:50:59 +01:00
Sucukdeluxe
56c0b633c8 Release v1.6.15
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:47:48 +01:00
Sucukdeluxe
4e8e8eba66 Release v1.6.14
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:30:49 +01:00
Sucukdeluxe
d5638b922d Release v1.6.13
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:18:15 +01:00
Sucukdeluxe
dc695c9a04 Release v1.6.12
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:07:08 +01:00
Sucukdeluxe
52909258ca Release v1.6.11
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:03:29 +01:00
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
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
Sucukdeluxe
a131f4a11b Release v1.6.6
Fix hybrid extraction stalling: requeue loop now keeps the post-process
slot so the same package re-runs immediately without waiting behind other
packages.  Also skip already-extracted archives on requeue rounds.

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