Commit Graph

275 Commits

Author SHA1 Message Date
Sucukdeluxe
7446e07a8c Release v1.6.4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 09:54:37 +01:00
Sucukdeluxe
693f7b482a Release v1.6.3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 05:54:41 +01:00
Sucukdeluxe
1d4a13466f Release v1.6.2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 05:41:40 +01:00
Sucukdeluxe
17844d4c28 Release v1.6.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 05:27:10 +01:00
Sucukdeluxe
55d0e3141c Release v1.6.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 05:13:07 +01:00
Sucukdeluxe
a967eb1080 Release v1.5.99
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 04:43:46 +01:00
Sucukdeluxe
21ff749cf3 Release v1.5.98
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 04:31:45 +01:00
Sucukdeluxe
18862bb8e0 Release v1.5.97
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 04:24:45 +01:00
Sucukdeluxe
27833615b7 Release v1.5.96
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 04:17:22 +01:00
Sucukdeluxe
00fae5cadd Release v1.5.95
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 04:08:29 +01:00
Sucukdeluxe
4fcbd5c4f7 Release v1.5.94
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 03:51:10 +01:00
Sucukdeluxe
bb8fd0646a Release v1.5.93
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 03:35:11 +01:00
Sucukdeluxe
1218adf5f2 Release v1.5.92
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 03:21:48 +01:00
Sucukdeluxe
818bf40a9c Release v1.5.91
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 03:15:54 +01:00
Sucukdeluxe
254612a49b Release v1.5.90
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 03:04:49 +01:00
Sucukdeluxe
92101e249a Release v1.5.89
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 02:57:33 +01:00
Sucukdeluxe
a18ab484cc Release v1.5.88
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 02:50:16 +01:00
Sucukdeluxe
7af9d67770 Release v1.5.87
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 02:38:05 +01:00
Sucukdeluxe
d63afcce89 Release v1.5.86
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 00:58:30 +01:00
Sucukdeluxe
15d0969cd9 Release v1.5.85
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 00:31:13 +01:00
Sucukdeluxe
5574b50d20 Add visual online/offline status dot indicator for Rapidgator links
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 00:23:20 +01:00
Sucukdeluxe
662c903bf3 Add Rapidgator link online/offline check when links are added
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 00:19:21 +01:00
Sucukdeluxe
545043e1d6 Add multi-select, Ctrl+A, right-click context menu with link viewer to history tab
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 00:06:58 +01:00
Sucukdeluxe
8f10ff8f96 Show TB for sizes >= 1 TiB in humanSize formatter
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 00:00:43 +01:00
Sucukdeluxe
62f3bd94de Remove speed limit toolbar button, fix hoster stats grouping, add Ctrl+A select all, fix context menu clipping
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 23:56:35 +01:00
Sucukdeluxe
253b1868ec Release v1.5.79
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 23:46:06 +01:00
Sucukdeluxe
c4aefb6175 Release v1.5.78
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:17:37 +01:00
Sucukdeluxe
956cad0da4 Release v1.5.77
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 22:58:34 +01:00
Sucukdeluxe
83d8df84bf Release v1.5.76
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 22:50:51 +01:00
Sucukdeluxe
0c058fa162 Release v1.5.75
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 22:28:40 +01:00
Sucukdeluxe
21dbf46f81 Release v1.5.74
- 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>
2026-03-03 22:13:58 +01:00
Sucukdeluxe
af6eea8253 Release v1.5.73
- Show full passwords (unmasked) in extraction logs for easier debugging

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 21:55:36 +01:00
Sucukdeluxe
7029271999 Release v1.5.72
- 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>
2026-03-03 21:50:35 +01:00
Sucukdeluxe
5dabee332e Parallel archive extraction within packages
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>
2026-03-03 21:43:34 +01:00
Sucukdeluxe
d9fe98231f Extract packages sequentially instead of in parallel
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>
2026-03-03 21:35:12 +01:00
Sucukdeluxe
6ee98328fb Fix JVM extractor not falling back to legacy UnRAR on codec errors
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>
2026-03-03 21:28:47 +01:00
Sucukdeluxe
3dbb94d298 Release v1.5.68: Extractor optimizations inspired by JDownloader
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 21:25:02 +01:00
Sucukdeluxe
1956be0c71 Release v1.5.67
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:54:40 +01:00
Sucukdeluxe
d87b74d359 Release v1.5.66
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:43:08 +01:00
Sucukdeluxe
d23740eac7 Release v1.5.65
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:31:58 +01:00
Sucukdeluxe
31ce1e6618 Release v1.5.64
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:25:09 +01:00
Sucukdeluxe
9747cabb14 Release v1.5.63
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 18:16:42 +01:00
Sucukdeluxe
8cc1f788ad Release v1.5.62
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 18:03:50 +01:00
Sucukdeluxe
cab550a13c Release v1.5.61 2026-03-03 17:54:15 +01:00
Sucukdeluxe
ca4392fa8b Release v1.5.60 2026-03-03 17:33:33 +01:00
Sucukdeluxe
02bd4a61fb Release v1.5.59 2026-03-03 16:56:06 +01:00
Sucukdeluxe
87e0a986e6 Release v1.5.58 2026-03-03 16:37:14 +01:00
Sucukdeluxe
f9b0bbe676 v1.5.57
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 16:15:49 +01:00
Sucukdeluxe
26bf675a41 v1.5.56
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 16:03:06 +01:00
Sucukdeluxe
462fc0397e v1.5.55
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 15:54:17 +01:00
Sucukdeluxe
d3ec000da5 v1.5.54
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 14:59:08 +01:00
Sucukdeluxe
804fbe2bdc v1.5.53
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 14:52:39 +01:00
Sucukdeluxe
0cf5ebe5e9 Release v1.5.52 2026-03-03 14:37:59 +01:00
Sucukdeluxe
e6ec1ed755 Add Mega-Debrid account info check (web scraping)
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>
2026-03-03 14:06:19 +01:00
Sucukdeluxe
ac479bb023 Add backup encryption (AES-256-GCM) and directory existence check
- 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>
2026-03-03 13:47:56 +01:00
Sucukdeluxe
9ac557b0a8 Fix app icon: use rcedit afterPack hook to embed custom icon in EXE
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 03:17:47 +01:00
Sucukdeluxe
19a588a997 Show "Jetzt entpacken" context menu when any item is completed, re-enable paused packages
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 02:52:19 +01:00
Sucukdeluxe
fa30e738d9 Fix UNSUPPORTEDMETHOD: init SevenZipJBinding native libs, pass password to extractSlow
Some checks are pending
Build and Release / build (push) Waiting to run
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>
2026-03-03 02:35:19 +01:00
Sucukdeluxe
eefb536cb3 Fix path traversal false positive: skip subst drive mapping for JVM backend
Some checks are pending
Build and Release / build (push) Waiting to run
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>
2026-03-03 02:25:10 +01:00
Sucukdeluxe
02b136dac7 Fix JVM extractor: asarUnpack for class/jar files, add unpacked path candidate, default to jvm mode
Some checks are pending
Build and Release / build (push) Waiting to run
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>
2026-03-03 02:19:26 +01:00
Sucukdeluxe
b712282f62 Log which extraction backend was used (7zjbinding/zip4j/legacy)
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 02:12:48 +01:00
Sucukdeluxe
de369f3bcd Replace extraction backend with SevenZipJBinding + Zip4j JVM sidecar
Some checks are pending
Build and Release / build (push) Waiting to run
- 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>
2026-03-03 02:08:42 +01:00
Sucukdeluxe
3ee3af03cf Match JDownloader 2 extraction behavior: normal I/O, -mt2 hybrid
Some checks are pending
Build and Release / build (push) Waiting to run
- Remove setWindowsBackgroundIO entirely (JD2 uses normal I/O priority)
- Keep only CPU priority IDLE (os.setPriority)
- Hybrid threads fixed at -mt2 (matches JD2's ~16 MB/s controlled throughput)
- Final extraction uses full thread count (unchanged)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 01:14:47 +01:00
Sucukdeluxe
9a646d516b Fix extraction speed: I/O priority only in hybrid mode, more threads
Some checks are pending
Build and Release / build (push) Waiting to run
- 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>
2026-03-03 01:08:40 +01:00
Sucukdeluxe
311fb00430 Release v1.5.40
Some checks are pending
Build and Release / build (push) Waiting to run
2026-03-03 01:01:46 +01:00
Sucukdeluxe
4008e20278 Reset stale status texts on session load and stop
Some checks are pending
Build and Release / build (push) Waiting to run
- 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>
2026-03-03 00:58:28 +01:00
Sucukdeluxe
375b9885ee Disk space pre-check, nested extraction, lower I/O priority for hybrid extraction
Some checks are pending
Build and Release / build (push) Waiting to run
- 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>
2026-03-03 00:54:10 +01:00
Sucukdeluxe
ce01512537 Release v1.5.37
Some checks are pending
Build and Release / build (push) Waiting to run
2026-03-03 00:08:06 +01:00
Sucukdeluxe
a6c65acfcb Release v1.5.36
Some checks are pending
Build and Release / build (push) Waiting to run
2026-03-02 23:50:31 +01:00
Sucukdeluxe
7fe7d93e83 Fix dark text on package header progress bars (CSS specificity override)
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:35:22 +01:00
Sucukdeluxe
19769ea0bb Fix combined progress display during extraction, fix pause showing Warte auf Daten
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:32:30 +01:00
Sucukdeluxe
c9bace1e5a Fix dual-layer text: use clip-path inset instead of wrapper for pixel-perfect alignment
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:29:28 +01:00
Sucukdeluxe
2d1b6de51a Fix dual-layer text alignment: use clip wrapper for proper text centering
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:25:59 +01:00
Sucukdeluxe
c07c0fbdf7 Dual-layer text on progress bars: dark text on bar, light text on track (JDownloader style)
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:21:21 +01:00
Sucukdeluxe
578d050926 Merge Größe/Geladen into single progress bar column (JDownloader 2 style)
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:16:45 +01:00
Sucukdeluxe
cb66661d9b Redesign history tab with package-card style, collapsible details, right-align remove button
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:05:23 +01:00
Sucukdeluxe
e35fc1f31a v1.5.28: Visuelle Fortschrittsanzeigen (JDownloader 2 Style)
Some checks are pending
Build and Release / build (push) Waiting to run
2026-03-02 22:17:59 +01:00
Sucukdeluxe
0d6053fa76 Increase column widths for Fortschritt/Größe/Geladen spacing
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:51:43 +01:00
Sucukdeluxe
546d6af598 Fix Fortschritt/Geladen display: show progress for all items with totalBytes, hide 0 B
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:42:11 +01:00
Sucukdeluxe
2b12bd8c42 Add Fortschritt and Geladen columns to download grid
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:35:57 +01:00
Sucukdeluxe
05dc0ca1c6 Clear stale status texts on session load
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>
2026-03-02 21:24:58 +01:00
Sucukdeluxe
5023a99f91 Fix circuit breaker triggering from parallel download failures
- Debounce: simultaneous failures within 2s count as 1 failure
  (prevents 8 parallel unrestrict failures from instant-triggering)
- Raise threshold from 8 to 20 consecutive failures before cooldown
- Escalation tiers: 20→30s, 35→60s, 50→120s, 80+→300s

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:21:47 +01:00
Sucukdeluxe
b2b62aeb52 Reduce stall timeout to 10s for faster retry
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:15:56 +01:00
Sucukdeluxe
ba7fe24a0a Fix pause bugs, faster stall retry
- Pause now aborts active extractions (previously extraction continued
  during pause, showing wrong status like Provider-Cooldown)
- Unpause clears provider circuit breaker for fresh start
- Post-processing status checks account for global pause state
- Reduce stall detection timeout from 30s to 15s for faster retry
- Reduce stall retry base delay from 500ms to 300ms

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:15:00 +01:00
Sucukdeluxe
55e5b0079a Fix pause showing Provider-Cooldown, lower extraction I/O priority
- Add pause check at top of processItem retry loop so items show
  "Pausiert" instead of "Provider-Cooldown" when paused
- Lower extraction process priority from BELOW_NORMAL to IDLE
  (IDLE_PRIORITY_CLASS on Windows also lowers I/O priority, reducing
  disk contention between extraction and active downloads)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:06:00 +01:00
Sucukdeluxe
e90e731eaa Fix app freezes and false provider cooldowns
- Make saveSettings async to stop blocking the event loop during downloads
- Add 120ms minimum gap for forced state emissions to prevent rapid-fire IPC
- Fix circuit breaker feedback loop: reset failure count after cooldown expires
- Add 120s time-decay for failure counter (transient bursts don't snowball)
- Raise circuit breaker threshold from 5 to 8 consecutive failures
- Stop counting network stalls as provider failures
- Items without a provider only check primary provider cooldown, not all

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 21:02:09 +01:00
Sucukdeluxe
0b73ea1386 Add "Jetzt entpacken" context menu, fix start freeze on large queues
Some checks are pending
Build and Release / build (push) Waiting to run
- New "Jetzt entpacken" right-click option: triggers extraction for
  completed packages regardless of paused/stopped state
- Fix 5-10s freeze when pressing Start after Pause: recoverRetryableItems
  was calling fs.stat on every item (474+); now only checks failed/completed
- Full IPC pipeline: extractNow in manager, controller, preload, renderer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:40:49 +01:00
Sucukdeluxe
e013c63c59 Fix long path extraction using subst drive mapping instead of \?\ prefix
Some checks are pending
Build and Release / build (push) Waiting to run
WinRAR doesn't support \?\ prefix (interprets it as UNC network path).
Replace with subst drive mapping: maps targetDir to a short drive letter
(Z:, Y:, etc.) before extraction, then removes mapping after. This keeps
total paths under 260 chars even when archives contain deep internal
directory structures.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:32:23 +01:00
Sucukdeluxe
2ae22f942e Fix extraction failure on long paths (>260 chars) with \?\ prefix
Some checks are pending
Build and Release / build (push) Waiting to run
Add longPathForWindows() helper that prefixes extract target directories
with \?\ on Windows, bypassing the 260-char MAX_PATH limit. Applied to
both WinRAR/UnRAR and 7z arguments. Fixes "Die Syntax für den
Dateinamen, Verzeichnisnamen" errors when archive internal directories
create deeply nested output paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:24:55 +01:00
Sucukdeluxe
a22a90adf3 Add retry extraction context menu, increase error text limit
- Right-click packages with extraction errors shows "Extraktion
  wiederholen" option to manually retry
- Increase WinRAR error text from 240 to 500 chars for better
  diagnostics in logs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 20:15:00 +01:00
Sucukdeluxe
ecf56cb977 Retry failed extractions on unpause, fix delete callback deps
- triggerPendingExtractions() now runs when unpausing, so packages
  with extraction errors are automatically retried
- executeDeleteSelection no longer depends on snapshot objects
  (prevents unnecessary re-renders with large queues)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:58:01 +01:00
Sucukdeluxe
430ec7352b Fix session download counter resetting when packages are removed
Session counter now uses sessionDownloadedBytes (in-memory counter)
instead of summing completed items. Removing packages after extraction
no longer resets the session total.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:33:58 +01:00
Sucukdeluxe
bc70ff94cc Persist totalDownloadedAllTime across restarts
- Save settings every 30s during active downloads (not just session)
- Force settings save on shutdown and run finish
- Preserve live totalDownloadedAllTime when user saves settings
  (app-controller's stale copy no longer overwrites the counter)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:29:32 +01:00
Sucukdeluxe
549328893e Separate pause/resume buttons, fix hybrid extraction during pause
- Pause button is now one-way (orange glow when paused, disabled when
  already paused). Start button resumes from pause.
- Fix hybrid extraction attempting incomplete multi-part archives when
  paused: disk-fallback now blocks any non-terminal item status, not
  just downloading/validating/integrity_check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:22:58 +01:00
Sucukdeluxe
e6c17393fb Fix chart label clipping, persist speed history across tabs, fix pause button
- Dynamic left padding based on measured label width (no more cut-off numbers)
- Speed history ref lifted to App so chart data survives tab switches
- Pause button uses optimistic UI update for instant visual feedback

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:11:36 +01:00
Sucukdeluxe
ba673b9e53 Fix bandwidth chart growing infinitely
Use container.clientWidth/clientHeight instead of getBoundingClientRect
and stop overriding canvas style dimensions. CSS 100% handles display
sizing, canvas.width/height handles DPR-scaled render resolution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:04:06 +01:00
Sucukdeluxe
3c510fc265 Add persistent all-time download counter, session vs total stats
- Track totalDownloadedAllTime in settings (persists across restarts)
- Track sessionDownloadedBytes for current app session
- Status bar shows both: Session + Gesamt
- Statistics section shows Heruntergeladen (Session) + (Gesamt)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 19:00:17 +01:00
Sucukdeluxe
670c2f1ff5 Unified package/total speed calculation, confirm dialog for context menu delete, show progress bar when collapsed
- Track packageId in speed events so package speed uses same 3-second
  window as global speed (fixes mismatch between package and status bar)
- Add packageSpeedBps to UiSnapshot, computed from speed events
- Context menu delete actions now respect confirmDeleteSelection setting
- Progress bar visible even when package is collapsed

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:45:40 +01:00
Sucukdeluxe
f11190ee25 Fix Ctrl+Click selection, add Delete key with confirmation dialog
- Fix Ctrl+Click: mousedown no longer immediately adds item, preventing
  onClick from toggling it back off. Drag-select still works via mouseenter.
- Delete key removes selected items/packages with JDownloader-style
  confirmation dialog showing count and remaining items.
- "Nicht mehr anzeigen" checkbox disables future confirmations.
- New setting "Vor dem Löschen bestätigen" under Allgemein.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:31:45 +01:00
Sucukdeluxe
eb42fbabfd Fix update retry: reset abort controller on early return errors
Some checks are pending
Build and Release / build (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 18:06:11 +01:00