Commit Graph

163 Commits

Author SHA1 Message Date
Sucukdeluxe
84d8f37ba6 Release v1.4.28 with expanded bug audit fixes
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-28 19:47:46 +01:00
Sucukdeluxe
8700db4a37 Release v1.4.27 with bug audit hardening fixes 2026-02-28 14:12:16 +01:00
Sucukdeluxe
cbc423e4b7 Release v1.4.26 with remaining bug audit fixes
- AllDebrid: add HTML response detection to unrestrictLink
- Cleanup: skip symlinks/junctions in all directory traversals
- Blob URL: increase revoke delay from 0ms to 60s
- Extractor: per-package progress file to prevent collision
- ADD_CONTAINERS: reject path traversal and relative paths

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:09:59 +01:00
Sucukdeluxe
06a272ccbd Release v1.4.25 with hybrid extraction status fix
- Items extracted during hybrid extraction now show "Entpackt" instead of "Fertig"
- Only items belonging to the extracted archive set get status updates during hybrid extraction
- Final extraction preserves "Entpackt" status from prior hybrid passes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:01:49 +01:00
Sucukdeluxe
c1e614650a Release v1.4.24 with UI improvements
- Fix drag overlay appearing during internal package reorder
- Rename "Paket abbrechen" to "Paket löschen"
- Make package deletion instant (remove performQuickAction delay)
- Add A-Z / Z-A sorting buttons for packages

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 12:41:39 +01:00
Sucukdeluxe
9598fca34e Release v1.4.23 with critical bug audit fixes
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-28 12:16:08 +01:00
Sucukdeluxe
f70237f13d Release v1.4.22 with incremental hybrid extraction (JDownloader-style)
Implements hybrid extraction: when a package has multiple episodes with
multi-part archives, completed archive sets are extracted immediately
while the rest of the package continues downloading. Uses the existing
hybridExtract setting (already in UI/types/storage).

Key changes:
- Export findArchiveCandidates/pathSetKey from extractor.ts
- Add onlyArchives/skipPostCleanup options to ExtractOptions
- Add findReadyArchiveSets to identify complete archive sets
- Add runHybridExtraction for incremental extraction passes
- Requeue logic in runPackagePostProcessing for new completions
- Resume state preserved across hybrid passes (no premature clear)
- Guard against extracting incomplete multi-part archives
- Correct abort/toggle handling during hybrid extraction
- Package toggle now also aborts active post-processing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 07:25:18 +01:00
Sucukdeluxe
d7162592e0 Release v1.4.21 with download engine performance optimizations
- Cache itemCount as class property instead of O(n) Object.keys().length on every emit/persist/UI update
- Eliminate redundant iteration: hasQueuedItems now delegates to findNextQueuedItem
- Remove expensive cloneSession from getSnapshot (IPC serialization handles the copy)
- Increase speed events compaction threshold (50 → 200) to reduce array reallocations
- Time-based UI emit throttling instead of per-percent progress checks
- Avoid Array.from allocation in global stall watchdog
- Optimize markQueuedAsReconnectWait to iterate only run items instead of all items
- Cache pathKey computation in claimTargetPath loop (avoid path.resolve per iteration)
- Use packageOrder.length instead of Object.keys(packages).length in getStats

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:49:55 +01:00
Sucukdeluxe
b906d8a2bd Fix electron-builder: remove type:module, use vite.config.mts instead
The "type": "module" in package.json caused tsup to emit .cjs files instead
of .js, breaking the electron-builder entry point check. Using .mts extension
for vite config achieves ESM for Vite without affecting the rest of the package.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:28:45 +01:00
Sucukdeluxe
63fd402083 Release v1.4.20 with comprehensive audit fixes (140 issues) and expanded test coverage
- Speed calculation: raised minimum elapsed floor to 0.5s preventing unrealistic spikes
- Reconnect: exponential backoff with consecutive counter, clock regression protection
- Download engine: retry byte tracking (itemContributedBytes), mkdir before createWriteStream, content-length validation
- Fire-and-forget promises: all void promises now have .catch() error handlers
- Session recovery: normalize stale active statuses to queued on crash recovery, clear speedBps
- Storage: config backup (.bak) before overwrite, EXDEV cross-device rename fallback with type guard
- IPC security: input validation on all string/array IPC handlers, CSP headers in production
- Main process: clipboard memory limit (50KB), installer timing increased to 800ms
- Debrid: attribute-order-independent meta tag regex for Rapidgator filename extraction
- Constants: named constants for magic numbers (MAX_MANIFEST_FILE_BYTES, MAX_LINK_ARTIFACT_BYTES, etc.)
- Extractor/integrity: use shared constants, document password visibility and TOCTOU limitations
- Tests: 103 tests total (55 new), covering utils, storage, integrity, cleanup, extractor, debrid, update

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:23:24 +01:00
Sucukdeluxe
556f0672dc Release v1.4.19 with 4SF/4SJ auto-rename support
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-28 05:50:14 +01:00
Sucukdeluxe
b971a79047 Release v1.4.18 with performance optimization and deep bug fixes
- Optimize session cloning: replace JSON.parse/stringify with shallow spread (~10x faster for large queues)
- Convert blocking fs.existsSync/statSync to async on download hot path
- Fix EXDEV cross-device rename in sync saveSettings/saveSession (network drive support)
- Fix double-delete bug in applyCompletedCleanupPolicy (package_done + immediate)
- Fix dangling runPackageIds/runCompletedPackages in removePackageFromSession
- Fix AdmZip partial extraction: use overwrite mode for external fallback
- Add null byte stripping to sanitizeFilename (path traversal prevention)
- Add 5MB size limit for hash manifest files (OOM prevention)
- Add 256KB size limit for link artifact file content check
- Deduplicate cleanup code via centralized removePackageFromSession

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 05:30:28 +01:00
Sucukdeluxe
d4dd266f6b Release v1.4.17 with security fixes, stability hardening and retry improvements
- Fix ZIP path traversal vulnerability (reject entries escaping target dir)
- Add single instance lock (prevent data corruption from multiple instances)
- Add unhandled exception/rejection handlers (prevent silent crashes)
- Fix mainWindow reference cleanup on close
- Add second-instance handler to focus existing window
- Fix claimTargetPath infinite loop (add 10k iteration bound)
- Add duplicate startItem guard (prevent concurrent downloads of same item)
- Clone session in getSnapshot to prevent live-reference mutation bugs
- Clear stateEmitTimer on clearAll to prevent dangling timer emissions
- Add extraction timeout safety (4h deadline with logging)
- Add dedicated unrestrict retry system with longer backoff for Mega-Debrid errors
- Add log rotation (10MB max, keeps one .old backup)
- Fix writeExtractResumeState missing mkdir (prevents crash on deleted dirs)
- Fix saveSessionAsync EXDEV cross-device rename with copy fallback

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 05:04:21 +01:00
Sucukdeluxe
ea6301d326 Release v1.4.16 with crash prevention and hang protection
- Add 30s fetch timeouts to ALL API calls (Real-Debrid, BestDebrid, AllDebrid, Mega-Web)
- Fix race condition in concurrent worker indexing (runWithConcurrency)
- Guard JSON.parse in RealDebrid response with try-catch
- Add try-catch to fs.mkdirSync in download pipeline (handles permission denied)
- Convert MD5/SHA1 hashing to streaming (prevents OOM on large files)
- Add error handling for hash manifest file reading
- Prevent infinite hangs on unresponsive API endpoints

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 21:43:40 +01:00
Sucukdeluxe
147269849d Release v1.4.15 with deep performance optimizations and crash prevention
- Convert session persistence to async during downloads (prevents 50-200ms UI freezes)
- Avoid unnecessary Buffer.from() copy on Uint8Array chunks (zero-copy when possible)
- Cache effective speed limit for 2s (eliminates Date object creation per chunk)
- Replace O(n) speed event shift() with pointer-based pruning
- Throttle speed event pruning to every 1.5s instead of per chunk
- Optimize refreshPackageStatus to single-loop counting (was 4 separate filter passes)
- Fix global stall watchdog race condition (re-check abort state before aborting)
- Add coalescing for async session saves (prevents write storms)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 21:35:05 +01:00
Sucukdeluxe
cc887eb8a1 Release v1.4.14 with extraction performance optimization and bug fixes
- Add multi-threaded extraction via WinRAR -mt flag (uses all CPU cores)
- Fix -idq flag suppressing progress output, replaced with -idc
- Fix extraction timeout for multi-part archives (now calculates total size across all parts)
- Raise extraction timeout cap from 40min to 2h for large archives (40GB+)
- Add natural episode sorting (E1, E2, E10 instead of E1, E10, E2)
- Add split archive support (.zip.001, .7z.001) with proper cleanup
- Add write-stream drain timeout to prevent download freezes on backpressure
- Fix regex global-state bug in progress percentage parsing
- Optimize speed event pruning (every 1.5s instead of every chunk)
- Add performance flag fallback for older WinRAR versions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 21:28:03 +01:00
Sucukdeluxe
6d8ead8598 Release v1.4.13 with global stall watchdog and freeze recovery 2026-02-27 20:53:07 +01:00
Sucukdeluxe
0f85cd4c8d Release v1.4.12 with connection stall recovery and download freeze mitigation
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 20:35:10 +01:00
Sucukdeluxe
8b5c936177 Release v1.4.11 with stability hardening and full-function regression pass 2026-02-27 20:25:55 +01:00
Sucukdeluxe
6e72c63268 Release v1.4.10 with freeze mitigation and extraction throughput fixes
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 20:13:33 +01:00
Sucukdeluxe
e1286e02af Release v1.4.9 with extraction resume fix and faster update downloads
- Fix extraction status display after restart (shows "Entpacken ausstehend" instead of stale status)
- Fix Start button to trigger pending extractions for already-downloaded packages
- Fix extraction resume when archives already cleaned (recognizes completed state from resume file)
- Reduce update download connection timeout from 8min to 30s per candidate for faster fallback
- Add logging for update download candidates and failures
- Show manual download URL on update failure
- Sequential extraction preserved (one package at a time via queue)
- Extraction properly cancelled on shutdown, resumes on restart

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 19:47:53 +01:00
Sucukdeluxe
333a912d67 Release v1.4.8 with updater fallback recovery and extraction hardening
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 19:28:58 +01:00
Sucukdeluxe
3b9c4a4e88 Release v1.4.7 with ENOENT extraction recovery and lag optimizations
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 19:12:40 +01:00
Sucukdeluxe
dbf1c34282 Release v1.4.6 with extraction resume safety and smoother runtime
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 18:59:04 +01:00
Sucukdeluxe
05a75d0ac5 Release v1.4.5 with startup auto-recovery and lag hardening
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 18:37:32 +01:00
Sucukdeluxe
6a33e61c38 Release v1.4.4 with visible retries and HTTP 416 progress reset
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 18:24:44 +01:00
Sucukdeluxe
53212f45e3 Release v1.4.3 with unified controls and resilient retries
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 18:11:50 +01:00
Sucukdeluxe
01ed725136 Add start conflict prompts for existing extracted packages in v1.4.2 2026-02-27 17:54:56 +01:00
Sucukdeluxe
1c92591bf1 Release v1.4.1 2026-02-27 17:34:45 +01:00
Sucukdeluxe
4fc0ce26f3 Ship UI productivity upgrades and extraction progress flow in v1.4.0 2026-02-27 16:23:19 +01:00
Sucukdeluxe
7b5218ad98 Remove empty download package dirs after archive cleanup in v1.3.11 2026-02-27 15:55:43 +01:00
Sucukdeluxe
e2a8673c94 Harden extraction verification, cleanup safety, and logging in v1.3.10 2026-02-27 15:43:52 +01:00
Sucukdeluxe
ef821b69a5 Fix shutdown resume state and legacy extracted cleanup backfill v1.3.9 2026-02-27 15:29:49 +01:00
Sucukdeluxe
da51e03cef Backfill extracted archive cleanup on startup in v1.3.8 2026-02-27 15:15:16 +01:00
Sucukdeluxe
75fc582299 Fix split-archive cleanup after extraction and release v1.3.7 2026-02-27 15:07:12 +01:00
Sucukdeluxe
0a99d3c584 Fix stuck queue scheduling and auto-recover stalled streams v1.3.6 2026-02-27 14:55:31 +01:00
Sucukdeluxe
0de5a59a64 Stream filename scan updates and add provider fallback in v1.3.5 2026-02-27 14:45:42 +01:00
Sucukdeluxe
973885a147 Rescan queued hash names on startup and release v1.3.4 2026-02-27 14:32:07 +01:00
Sucukdeluxe
6fe7b7e7ee Fix rg.to filename scanning and release v1.3.3 2026-02-27 14:28:29 +01:00
Sucukdeluxe
447dd7feff Implement full UX upgrade and Rapidgator filename hardening in v1.3.2 2026-02-27 14:20:54 +01:00
Sucukdeluxe
7381e54f4f Fix update loop: read APP_VERSION from package.json v1.3.1
APP_VERSION was hardcoded as "1.1.29" in constants.ts causing the app
to always report the old version and re-trigger the update prompt.
Now reads version dynamically from package.json via import.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 13:43:33 +01:00
Sucukdeluxe
73c8b6e670 Replace 7zip-bin with WinRAR for archive extraction v1.3.0
- Remove 7zip-bin dependency and asarUnpack config
- Use WinRAR/UnRAR.exe from standard install paths with auto-detection
- Add resolver with probing to cache the found extractor command
- Add -y flag for auto-confirm and WinRAR.exe command support
- Update tests for WinRAR argument format

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 13:34:34 +01:00
Sucukdeluxe
d867c55e37 Fix extractor ENOENT stalls and add built-in archive passwords
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 12:53:56 +01:00
Sucukdeluxe
741a0d67cc Add archive password fallback and release v1.1.28
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 12:38:42 +01:00
Sucukdeluxe
88eb6dff5d Fix extraction recovery edge cases and release v1.1.27
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 12:23:54 +01:00
Sucukdeluxe
3525ecb569 Recover stalled extraction and add optional fallback providers
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 12:16:30 +01:00
Sucukdeluxe
0f61b0be08 Reduce cancel lag with non-blocking cleanup in v1.1.25
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 11:53:14 +01:00
Sucukdeluxe
4548d809f9 Polish settings UI and harden fetch-failed recovery
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 11:32:06 +01:00
Sucukdeluxe
6d777e2a56 Harden resume flows and ship v1.1.23 stability fixes
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 11:04:52 +01:00
Sucukdeluxe
583d74fcc9 Harden Mega web flow and smooth download runtime
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 06:17:15 +01:00
Sucukdeluxe
40bfda2ad7 Switch MegaDebrid to web-only flow and reduce UI lag
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 06:01:28 +01:00
Sucukdeluxe
b1b8ed4180 Switch Mega web fallback to real debrideur form flow and bump to 1.1.20
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 05:47:19 +01:00
Sucukdeluxe
0e898733d6 Restore in-app updater and add Mega web fallback path
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 05:28:50 +01:00
Sucukdeluxe
704826b421 Add Mega-Debrid unrestrict workarounds and bump to 1.1.18
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 05:06:05 +01:00
Sucukdeluxe
7ac61ce64a Fix provider selection persistence, queue naming, cancel removal, and update prompts
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 04:56:53 +01:00
Sucukdeluxe
3ef2ee732a Move provider settings to tab and improve DLC filename resolution
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 04:40:21 +01:00
Sucukdeluxe
02370a40b4 Restore update checks and startup notifications
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 04:22:00 +01:00
Sucukdeluxe
c7813c26a8 Normalize debrid filenames and bump to 1.1.14
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 04:16:14 +01:00
Sucukdeluxe
7fe7192bdb Fix packaged renderer asset paths and bump to 1.1.13
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 04:09:08 +01:00
Sucukdeluxe
cbc1ffa18b Add multi-provider fallback with AllDebrid and fix packaged UI path
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 04:02:31 +01:00
Sucukdeluxe
f27584d6ee Disable auto-publish in builder and bump to 1.1.11
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 03:32:02 +01:00
Sucukdeluxe
1049eb3c07 Fix Electron release metadata and bump version to 1.1.10
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 03:28:52 +01:00
Sucukdeluxe
b96ed1eb7a Migrate app to Node Electron with modern React UI
Some checks are pending
Build and Release / build (push) Waiting to run
2026-02-27 03:25:56 +01:00