Commit Graph
157 Commits
Author SHA1 Message Date
Sucukdeluxe 7f3030ecc5 Improve contextual help and download filter grouping
Open contextual help from wrapper hover and focus, close it only after pointer or focus exits the shared trigger-popover region, and make clicks open-only. Remove the standalone package title and present the existing download filters as the first compact neutral sidebar group without changing filter behavior. Extend the visual driver and manifest with hover, leave, focus, blur, internal-focus, and real headless Chromium regression coverage.
2026-08-22 11:46:56 +02:00
Sucukdeluxe 9cdd0310a5 Harden disclosure visuals and download toolbar tail
Replace the synthetic disclosure interpolation test with a real Chrome headless run against the existing visual harness, sampling rendered height, transform, opacity, and adjacent row geometry during collapse and expansion.

Group the global downloads disclosure action in a responsive toolbar tail, remove the horizontal toolbar scroll path, and keep the action pinned within the supported 1120 pixel layout while the schedule is open.

Disable the global disclosure action for a truly empty queue and cover the empty model plus responsive DOM boundaries.
2026-08-22 11:32:23 +02:00
Sucukdeluxe a101bd0bed Fix disclosure fading and global package toggles
Fade the shared virtual item group from transparent to opaque while expanding and reverse the opacity while collapsing, preserving the clipping row as the geometry owner.

Move the downloads package toggle to the far toolbar edge and add a collector toolbar toggle backed by raw unfiltered package IDs.

Cover opacity endpoints, intermediate frame geometry, toolbar ordering, and filter-independent collector toggle semantics.
2026-08-22 11:18:05 +02:00
Sucukdeluxe f57b513625 Align provider selection and abort observation
Share one pure provider selection plan between real unrestrict routing and cooldown projection, including direct 1Fichier and DDownload paths, disabled Mega aliases, and the secondary-provider exception used when Real-Debrid is cooling down. Attach terminal observers to raw serialized web jobs before evaluating already-aborted signals so late rejections stay handled while the queue remains available. Add RED-to-GREEN regressions for each provider-selection counterexample and pre-aborted Real-Debrid, AllDebrid, and BestDebrid jobs.
2026-08-22 11:05:42 +02:00
Sucukdeluxe ab31d04410 Fix lifecycle review findings
Advance each serialized web-provider queue when an aborted caller is released while retaining terminal observation of the underlying request. Preserve an accepted pending start across repeated stop requests and dispatch it exactly once after drain. Derive provider retry deadlines from eligible queued items, configured fallback chains, enabled accounts and keys, and matching provider or hoster cooldowns. Add RED-to-GREEN coverage for queue progress, repeated stop behavior, disabled accounts, alternative providers, unrelated hosters, and post-processing-only state.
2026-08-22 10:53:00 +02:00
Sucukdeluxe ad29239661 Complete provider waits and lifecycle visibility
Release aborted Real-Debrid, AllDebrid, and BestDebrid web callers even when underlying requests ignore cancellation while retaining terminal rejection observers. Publish provider cooldown deadlines and emit a fresh idle snapshot at the earliest expiry. Abort and visibly drain post-processing before dispatching one pending restart. Surface lifecycle phase, reason, retry countdown, and remaining work in the download controls. Add focused regressions for provider abort races, cooldown expiry, post-processing drain, pending start visibility, and the updated rapid stop contract.
2026-08-22 10:39:07 +02:00
Sucukdeluxe 1f97ce8b42 Harden download stop and restart lifecycle
Publish an explicit lifecycle snapshot with active download and post-processing counts. Guard asynchronous start recovery with a dedicated generation so a stop cannot revive an invalidated run. Keep starts requested during stopping pending until old work drains, then dispatch the accepted request once. Protect active task ownership and post-processing drain cleanup from stale finalizers. Cover recovery invalidation, pending restart dispatch, and late task cleanup with focused regression tests.
2026-08-22 10:26:43 +02:00
Sucukdeluxe 2e94484274 Validate daily schedule start times
Disable schedule activation until the local time input matches a strict HH:MM value.

Keep a defensive activation guard that surfaces a localized validation error and skips persistence when invoked with invalid state.

Add red-green coverage for empty, malformed, out-of-range hour, and out-of-range minute values.
2026-08-22 10:12:25 +02:00
Sucukdeluxe 30bedd17dd Add recurring daily schedule controls
Replace the one-time renderer schedule form with recurring local time and start-day settings while preserving legacy schedule visibility.

Keep the toolbar slot mounted and inaccessible while closed, animate width, opacity, and horizontal position through the global motion preference, and add localized labels.

Surface activation and cancellation failures, reconcile the authoritative snapshot after failed writes, and cover the behavior with focused red-green tests.
2026-08-22 10:02:29 +02:00
Sucukdeluxe 0ca00149eb fix(scheduler): harden daily start reconciliation
Preserve legacy one-time schedules across internal account state saves and clear them only for explicit renderer daily-rule updates.

Enforce monotone handled and pending calendar receipts across backward local-date changes, invalidate late in-flight start results on shutdown, and align queue eligibility with enabled non-cancelled packages.

Replace the in-memory restart assertion with real settings persistence and add RED/GREEN regression coverage for every reviewed behavior.
2026-08-22 09:50:37 +02:00
Sucukdeluxe 4eb95c92b9 feat(scheduler): persist recurring daily starts
Add a local-calendar daily start scheduler with pending receipts, per-day deduplication, DST-safe target calculation, missed-day recovery, and retryable account/start failure outcomes.

Persist and validate the daily rule, expose its next target to the renderer, preserve legacy one-time schedules until a daily rule is saved, and gate boot auto-resume on recorded active-run evidence.

Wire boot, settings, account, suspend, resume, interval, and shutdown lifecycle handling with focused RED/GREEN coverage for calendar, persistence, renderer, and controller boundaries.
2026-08-22 09:36:45 +02:00
Sucukdeluxe d7384c34d1 fix(notifications): preserve in-flight outbox events
Reserve the actively delivered outbox event while the external sender is pending so concurrent persistence cannot evict it through expiry or capacity enforcement. Apply the delivery outcome under the exclusive chain before normal cleanup resumes, preserving retry state, delivery acknowledgements, and cooldown timing without duplicate sends. Add deterministic concurrency regressions for expiry-success and capacity-failure races.
2026-08-22 09:09:54 +02:00
Sucukdeluxe 3ec9085444 fix(notifications): harden final delivery lifecycle
Enforce one shared shutdown deadline while persisting late digests during blocked sends. Start stall cooldowns from serialized delivery acknowledgements, atomically rewrite cleaned legacy outboxes, retain run summaries for 24 hours, and prevent duplicate history or synthetic post-process start times.
2026-08-22 08:58:36 +02:00
Sucukdeluxe 6715f42ff8 docs: document notification center v2 2026-08-22 08:32:54 +02:00
Sucukdeluxe 259fa7094b fix(notifications): redact failure details 2026-08-22 08:17:50 +02:00
Sucukdeluxe 1b8f6fe4b6 fix(support): expose notification health aggregates 2026-08-22 08:00:25 +02:00
Sucukdeluxe 16679e73b5 feat(settings): configure notification center 2026-08-22 07:51:01 +02:00
Sucukdeluxe b3f60eada8 fix(notifications): harden stall monitor lifecycle 2026-08-22 07:37:40 +02:00
Sucukdeluxe 311475c93b feat(notifications): detect persistent download stalls 2026-08-22 07:23:54 +02:00
Sucukdeluxe 4fd30802e5 fix(notifications): harden remaining threshold scope 2026-08-22 06:55:57 +02:00
Sucukdeluxe 2142ae8bf0 feat(notifications): alert on remaining volume 2026-08-22 06:42:13 +02:00
Sucukdeluxe f4c4fb2fac fix(notifications): isolate package result ownership
Prevent active and completed run contexts from being duplicated into standalone tracking during later starts. Scope start-triggered recovery reactivation to enabled, non-excluded packages so foreign stopped generations remain suppressed while explicit retries keep working.
2026-08-22 06:22:44 +02:00
Sucukdeluxe 26ebd931b7 fix(notifications): preserve stopped package suppression 2026-08-22 06:06:27 +02:00
Sucukdeluxe 96966c3eca fix(notifications): harden active run lifecycle tracking 2026-08-22 05:51:08 +02:00
Sucukdeluxe 514d1b1d86 fix(notifications): stabilize active and postprocess-only runs 2026-08-22 05:38:58 +02:00
Sucukdeluxe de97dd4bea fix(notifications): preserve run and package result identity 2026-08-22 05:27:04 +02:00
Sucukdeluxe 03da04b629 feat(notifications): finalize package and run results 2026-08-22 05:08:48 +02:00
Sucukdeluxe c7e48891bb fix(notifications): harden retries and shutdown 2026-08-22 04:32:53 +02:00
Sucukdeluxe 8b2320f771 feat(notifications): persist Discord outbox 2026-08-22 04:23:20 +02:00
Sucukdeluxe 4e7d4d6ccf fix(history): preserve legacy package telemetry 2026-08-22 04:10:23 +02:00
Sucukdeluxe ef7423134a feat(history): add package lifecycle telemetry 2026-08-22 04:04:42 +02:00
Sucukdeluxe 161e111c2f fix(notifications): validate success mode settings 2026-08-22 03:51:47 +02:00
Sucukdeluxe 754231d15c feat(notifications): add settings and migration 2026-08-22 03:44:11 +02:00
Sucukdeluxe 6a8a3828b8 release: prepare v2.0.55 metadata preview
Publish pre-download metadata resolution for 1Fichier and DDownload together with the rebuilt package-oriented link collector. Restore structured queue JSON imports and direct Ctrl+L/File-menu access to link analysis before creating release artifacts.
2026-08-22 03:03:19 +02:00
Sucukdeluxe b03f6ee1bc feat(collector): show hoster icons with tooltips
Render known hosters with their existing provider icons in collector package and file rows while retaining the full hoster name as a tooltip. Fall back to the compact text label if an icon cannot be loaded.
2026-08-22 02:54:14 +02:00
Sucukdeluxe b9a4f97681 feat(ddownload): resolve metadata before queueing
Inspect public ddownload.com and ddl.to links before download startup to resolve canonical filenames, exact sizes and availability without consuming a debrid account. Keep removed files offline, protected pages retryable, restored queues recheckable and previously resolved names safe from later download.bin responses. Reuse the metadata path in the link collector, queue import and direct DDownload login flow.
2026-08-22 02:38:29 +02:00
Sucukdeluxe 40428a69b4 feat(collector): rebuild link preview as package workspace
Inspect pasted links, text files and DLC containers before queue insertion and resolve supported hoster metadata without starting downloads. Group multipart files into expandable packages with size, status, availability, timestamps, filtering and stable selection. Add selected or complete transfer to Downloads while retaining entries on failed or partial handoff. Keep collector toolbar spacing consistent and show the full 1Fichier identity with its provider icon in Downloads.
2026-08-22 02:22:42 +02:00
Sucukdeluxe 5f391a35d6 fix(onefichier): resolve metadata during import
Batch 1Fichier link checks before downloads start, populate original filenames, exact sizes, and availability, preserve resolved names across generic debrid responses, and normalize all supported mirror domains under one hoster identity. Pace batches to the hoster's documented safe interval and cover offline, private, delayed, malformed, alias, and 100-link boundary cases.
2026-08-22 01:27:47 +02:00
Sucukdeluxe bc86c29d57 release: prepare v2.0.53 updater handoff
Launch the verified NSIS installer directly before application shutdown, wait for Windows to confirm process creation, and keep the application open on spawn failure. Move process waiting into NSIS with a bounded graceful and post-force termination check, and cover the handoff with updater regression tests.
2026-08-21 12:19:20 +02:00
Sucukdeluxe c375491c88 release: prepare v2.0.52 2026-08-21 10:42:24 +02:00
Sucukdeluxe 5aa0359a93 feat(statistics): keep large totals precise in gigabytes 2026-08-21 10:34:13 +02:00
Sucukdeluxe dc3d9dfc10 fix(statistics): preserve private account history safely 2026-08-21 08:37:04 +02:00
Sucukdeluxe 4de4f4a0be feat(statistics): show rolling account usage 2026-08-21 08:30:50 +02:00
Sucukdeluxe e24f685a71 feat(statistics): attribute rolling traffic to accounts 2026-08-21 08:28:09 +02:00
Sucukdeluxe 7121a334d2 feat(statistics): record rolling account traffic 2026-08-21 08:25:32 +02:00
Sucukdeluxe 6efdca6885 fix(update): verify and apply the actual latest version 2026-08-21 07:39:37 +02:00
Sucukdeluxe ce75012110 fix(update): launch installers after the current app exits 2026-08-21 02:35:53 +02:00
Sucukdeluxe 8fb92caa30 feat(downloads): explain unknown remaining sizes 2026-08-21 01:06:03 +02:00
Sucukdeluxe 869dbc25be fix(history): remove selections atomically 2026-08-21 00:59:45 +02:00
Sucukdeluxe 3a95136ef1 feat(history): update the open view live 2026-08-21 00:48:42 +02:00