Commit Graph
100 Commits
Author SHA1 Message Date
Sucukdeluxe b769467d08 feat: add automatic account cooldown recovery
Replace session-long account failure pauses with classified 15, 30, 60, and 120 minute cooldowns for temporary account problems. Keep credential, OTP, banned, and disabled states manual while ignoring unknown, file, network, hoster, and bare WAF errors. Reset escalation after confirmed uploads, deduplicate parallel failures, publish revisioned pause snapshots, and show a stable localized countdown with automatic reactivation.
2026-08-22 18:18:02 +02:00
Sucukdeluxe e986c552dc release: prepare v2.1.32
CI / verify (push) Has been cancelled
Bump the desktop package and lockfile to v2.1.32 after the encrypted online backup key management, recovery hardening, and upload-speed graph fixes passed the complete release verification. Update the public README download version to match the new release.
2026-08-22 16:46:48 +02:00
Sucukdeluxe 15c363912f fix: bind removal plans to full key identity
Require both the current record ID and decrypted full key to match a prepared removal plan before deleting local state.

Invalidate mismatched plans before returning KEYRING_REMOVE_PLAN_INVALID so a replacement with the same canonical ID cannot be deleted and the stale plan cannot be reused.

Cover normal, idempotent, rebased, duplicate-ID, and same-ID replacement removal behavior while preserving the replacement generation.
2026-08-22 16:13:43 +02:00
Sucukdeluxe c5d4f4aef8 fix: separate legacy recovery from versioned keyring state
Keep a fully validated v1 primary authoritative over differing legacy recovery snapshots, recover missing or unusable v1 primaries from the best valid legacy candidate, and migrate the next mutation to v2 generation one.

Rebase prepared removals onto the current serialized keyring state so intervening creates survive, generations remain monotonic, and already absent targets complete idempotently.

Restrict canonical same-generation conflict blocking to true v2 documents and add separate legacy and v2 regression coverage without exposing key material.
2026-08-22 16:06:44 +02:00
Sucukdeluxe df96cc3011 fix: replace keyring ordering with committed generations
Read strict v1 keyrings as generation zero and write strict v2 documents with monotonically increasing safe integer generations. Select the highest fully validated generation and reject conflicting canonical payloads at the same generation.

Make a hidden, file-synced, disk-revalidated recovery staging file the rollback boundary. Publish it as a visible recovery candidate before treating the local transaction as committed, then keep primary, backup, and cleanup work best-effort.

Remove mtime and directory-fsync truth from recovery decisions and cover rollback-safe staging failures, post-commit publication failures, stale candidates, v1 migration, and generation conflicts.
2026-08-22 15:55:07 +02:00
Sucukdeluxe 82578b5f6e fix: establish durable keyring publication boundary
Fsync the keyring directory after both complete temporary files are written and synced, before replacing the primary document. Pre-publication directory failures now preserve the prior primary state and remain rollback-safe.

Keep the durable recovery temporary file available when later directory or backup publication work fails, and verify that it restores the committed keyring.

Rank equal-time recovery candidates deterministically with recovery temps before primary temps and backups, and consider equal-time commit temps alongside a valid primary.
2026-08-22 15:36:11 +02:00
Sucukdeluxe 8041aeead9 fix: complete managed backup key remediation
Recover from structurally valid but undecryptable primary keyrings by selecting a fully cryptographically validated backup or recovery temp and reporting KEYRING_RECOVERED.

Keep committed primary writes successful when best-effort post-publication cleanup fails, preventing ambiguous retries after durable local publication.

Intercept clipboard writes inside the hidden Electron Main-process integration probe, remove the duplicate key-created toast, and make authoritative refresh coverage differ from optimistic state.
2026-08-22 15:24:33 +02:00
Sucukdeluxe 49fa4518c9 fix: harden managed online backup key handling
Require canonical encrypted envelopes and surface typed sanitized keyring corruption states.

Persist crash-durable primary and recovery files, prevalidate removal plans, isolate renderer refresh authority, and cover the real hidden Windows DPAPI and IPC composition.
2026-08-22 13:28:47 +02:00
Sucukdeluxe 39e0dd104e feat: add secure online backup key management 2026-08-22 12:18:35 +02:00
Sucukdeluxe f7c6ee3bab fix: prioritize managed backup refreshes
Separate navigation and authoritative load generations so view refreshes cannot invalidate in-flight create or delete refreshes. Ignore navigation responses started during active operations, while allowing a later successful view load to replace old error state after the operation ends.
2026-08-22 12:04:02 +02:00
Sucukdeluxe 5ebeea3220 fix: preserve managed backup operation status
Bind list state and status updates to matching load generations and operation contexts so delayed settings-navigation responses cannot clear newer busy or error states or replace newer managed-key data. Keep create and delete post-success refreshes authoritative and single-shot.
2026-08-22 11:53:46 +02:00
Sucukdeluxe f2c6630866 fix: serialize managed backup actions
Queue copy and delete operations by sanitized backup ID so confirmations survive renderer refreshes and deletes follow in-flight copies without silent cancellation. Reload the managed list exactly once after successful create and delete mutations, and invalidate stale UI state when the authoritative refresh fails.
2026-08-22 11:42:29 +02:00
Sucukdeluxe f741edaf2f feat: manage online backup keys in settings 2026-08-22 11:25:45 +02:00
Sucukdeluxe e99bb2a255 fix: restrict managed backup IPC senders 2026-08-22 11:03:54 +02:00
Sucukdeluxe 774a06fc0b feat: expose managed online backup actions 2026-08-22 10:54:11 +02:00
Sucukdeluxe 2bfa153136 fix: preserve committed backup creation success 2026-08-22 10:46:23 +02:00
Sucukdeluxe 6fc516433f feat: coordinate managed online backup keys 2026-08-22 10:38:47 +02:00
Sucukdeluxe 84032e0e68 refactor: expose online backup deletion outcome 2026-08-22 10:29:31 +02:00
Sucukdeluxe b55f99de24 fix: enforce strict online backup keyring entries 2026-08-22 10:25:32 +02:00
Sucukdeluxe 5a059670f6 feat: add encrypted online backup keyring 2026-08-22 10:20:23 +02:00
Sucukdeluxe 1edc571686 fix: align German online backup controls
Use compact German key labels and a shared fixed label column so both online-backup inputs and actions align consistently across languages. Restore the narrow one-column breakpoint after later settings overrides and cover translations plus real hidden CSS geometry.
2026-08-22 10:07:46 +02:00
Sucukdeluxe 2c1e0046ff fix: remove duplicate upload speed baseline
Keep the static first-paint speed line only until the canvas renders its first frame, then remove the placeholder so active upload telemetry shows one curve. Extend the hidden real-renderer regression to verify the transition without opening a visible window.
2026-08-22 09:35:18 +02:00
Sucukdeluxe 1546c7664b release: prepare v2.1.31
CI / verify (push) Has been cancelled
Carry the validated Windows Server and Remote Desktop compositor correction into the publishable release while calibrating the hidden regression to the actual CI display work area. Preserve the strict greater-than-2048 assertion on capable displays and update public version metadata.
2026-08-21 08:30:25 +02:00
Sucukdeluxe e86472fdbf test: adapt compositor gate to display limits
Keep the hard greater-than-2048 surface assertion on displays that can provide it while allowing smaller hosted CI desktops to verify renderer command-line safety, exact viewport geometry, and both painted edges at their available resolution.
2026-08-21 08:28:11 +02:00
Sucukdeluxe 549f3c2f19 release: prepare v2.1.30
CI / verify (push) Has been cancelled
Publish the Windows Server and Remote Desktop compositor correction after 20 successful launches on the affected Windows Server 2022 host. Update package metadata and the public README release pointer while keeping the verified startup regression gates in place.
2026-08-21 08:15:16 +02:00
Sucukdeluxe aa7ae774e6 fix: preserve remote-session compositor rendering
Remove the RDP-specific hardware acceleration shutdown that forced Chromium renderers into software compositing on Windows Server sessions. Add a production-wide startup invariant and a hidden full-width Electron compositor regression covering renderer switches, viewport geometry, and both painted edges.
2026-08-21 07:51:11 +02:00
Sucukdeluxe b899a6b7f3 release: prepare v2.1.29
CI / verify (push) Has been cancelled
Set the application, lockfile, and public README version to 2.1.29 for the update experience, queue filtering, account status, and diagnostics release.
2026-08-21 02:29:12 +02:00
Sucukdeluxe 8373f3ff7b feat: copy sanitized upload failure details
Expose a contextual copy action only for failed uploads, target the exact right-clicked job during multi-selection, and defensively redact URLs and credential-shaped values from clipboard diagnostics.
2026-08-21 02:24:40 +02:00
Sucukdeluxe d58854c6c9 feat: show the last account check time
Carry session-local check timestamps through bulk, single, OTP, and save validation paths, terminate missing responses cleanly, and render localized checked times on account cards.
2026-08-21 01:30:00 +02:00
Sucukdeluxe 3c863d6623 revert: remove the batch completion summary
Remove the dedicated completion toast and failure action after user review while leaving all other update and queue improvements intact.
2026-08-21 01:16:15 +02:00
Sucukdeluxe 04bd4b396c feat: summarize completed upload batches
Capture real batch duration and show a dedicated localized completion summary with success, failure, and skipped counts plus a direct action to open failed uploads.
2026-08-21 01:10:53 +02:00
Sucukdeluxe fb544efe2f feat: show the active queue filter count
Add a fixed filter summary that counts sidebar, filename, host, and status constraints, highlighting nonzero counts without changing the toolbar geometry.
2026-08-21 01:06:16 +02:00
Sucukdeluxe a1ff19cc30 copy: clarify the unfiltered status option
Use Any status for the English queue filter option so the absence of a status restriction reads naturally.
2026-08-21 01:03:26 +02:00
Sucukdeluxe 010b148141 fix: keep the queue filter layout stable
Reserve the reset action permanently inside the filter group, disabling and dimming it when no filter is active so typing never changes the toolbar width.
2026-08-21 01:01:17 +02:00
Sucukdeluxe e742a74f6d style: integrate queue filters into the command bar
Move search, host, status, and reset controls into one framed filter group beside the upload actions, preserving responsive wrapping within the same toolbar.
2026-08-21 00:59:23 +02:00
Sucukdeluxe 503cb26615 feat: reset all queue filters together
Add one contextual reset action that clears the upload sidebar, filename search, host filter, and status filter in a single render while restoring selection and scroll state consistently.
2026-08-21 00:55:26 +02:00
Sucukdeluxe d3c6475321 refine: align positive update presentation
Display the primary release heading as What's new?, render the install and active download states in the success palette, and reserve red exclusively for cancellation and failure.
2026-08-21 00:48:10 +02:00
Sucukdeluxe 44fb93e7ea fix: optically center the ETA separator
Right-align the speed before the separator and left-align ETA after it so the second metric divider sits exactly between the visible values.
2026-08-21 00:42:37 +02:00
Sucukdeluxe 71207d98eb style: highlight the primary changelog heading
Use the update success color for the top-level release-notes heading while retaining white typography for subordinate categories.
2026-08-21 00:42:09 +02:00
Sucukdeluxe 6539db5d52 feat: emphasize update changelog sections
Render release-note headings, categories, items, and body lines as safe structured text with larger typography for section labels and compact spacing for details.
2026-08-21 00:40:08 +02:00
Sucukdeluxe aea0b22a4f fix: center update metric separators
Place both metric separators in identical fixed-width grid columns and center them explicitly so size, speed, and ETA maintain balanced spacing.
2026-08-21 00:38:48 +02:00
Sucukdeluxe e7947f7486 style: extend the update changelog viewport
Increase the release-notes area by another twenty percent while constraining it to the viewport so more changelog content remains visible without hiding update controls.
2026-08-21 00:37:26 +02:00
Sucukdeluxe 97f444e188 fix: hide inactive update metric separators
Honor the hidden state of the structured download telemetry container so its decorative separators never remain visible outside an active download.
2026-08-21 00:36:12 +02:00
Sucukdeluxe 631a20c9b3 fix: stabilize update telemetry layout
Render size, speed, and ETA in dedicated fixed-width columns with tabular numerals so rapidly changing values no longer shift neighboring metrics horizontally.
2026-08-21 00:33:56 +02:00
Sucukdeluxe f05030278e fix: clear stale update metrics after cancellation
Hide downloaded size, throughput, and ETA once an update download is canceled while preserving the red progress position and cancellation status.
2026-08-21 00:31:27 +02:00
Sucukdeluxe 4d3a4f1a8a feat: show update download telemetry
Calculate download throughput and remaining time from verified installer bytes and display downloaded size, total size, speed, and ETA beneath the progress track while retaining the last values after cancellation.
2026-08-21 00:28:48 +02:00
Sucukdeluxe e7d30edab5 style: increase update dialog height
Give the release-notes viewport a responsive 220-pixel target height so the update dialog gains visible vertical room while remaining bounded on smaller windows.
2026-08-21 00:25:01 +02:00
Sucukdeluxe a9a17bf08f style: enlarge the update dialog
Increase the responsive update dialog width and changelog viewport by twenty percent so release notes remain readable with less scrolling.
2026-08-21 00:23:13 +02:00
Sucukdeluxe e73143e2b7 fix: center the update action tooltip
Remove the duplicate native title tooltip and center the single custom update hint directly below the available-update action.
2026-08-21 00:21:33 +02:00
Sucukdeluxe e09cbcad8d refine: simplify update notifications
Open known updates directly without redundant searching or found toasts, retain failure and no-update feedback, and render the update dialog close action in red with a destructive hover state.
2026-08-21 00:14:47 +02:00
Sucukdeluxe ccf60db15f feat: reveal available updates beside speed
Collapse the header update action completely when no update exists and animate the green action outward to the left of the fixed bandwidth widget only after a real update is detected.
2026-08-21 00:12:17 +02:00
Sucukdeluxe de64499c12 fix: preserve update version subtitle
Keep the available target version visible throughout download, verification, cancellation, and failure states while reserving the progress footer for runtime status. Add the requested emphasis to the update dialog heading.
2026-08-21 00:08:14 +02:00
Sucukdeluxe 4accf68915 fix: avoid duplicate update status copy
Keep the availability subtitle exclusive to the pre-download state and show download, cancellation, and detailed failure status only below the progress track.
2026-08-21 00:06:21 +02:00
Sucukdeluxe 5211372fc1 feat: clarify update progress states
Use a full-width green download track, preserve completed progress in red when cancellation or failure occurs, move status copy below the track, and smooth percentage transitions.
2026-08-21 00:04:35 +02:00
Sucukdeluxe 82ad5db7a5 style: emphasize update download cancellation
Render the active download cancellation action with a red background and black text, retaining the danger styling while cancellation is pending.
2026-08-21 00:01:03 +02:00
Sucukdeluxe 577e1dd9c9 feat: allow active update downloads to be canceled
Keep the dialog cancel action available during update downloads, abort the active network stream, and surface a clean canceled state with retry support. Normalize cancellation across updater, main process, renderer, and translations with regression coverage.
2026-08-20 23:57:54 +02:00
Sucukdeluxe bbdfc37fdc release: prepare v2.1.28
CI / verify (push) Has been cancelled
Set the application, lockfile, and public README version to 2.1.28 for the incremental update-download progress release.
2026-08-20 14:02:13 +02:00
Sucukdeluxe 990d4c4ffa fix: render update download progress incrementally
Use the verified manifest size for percentage calculations, suppress duplicate percentage events, and yield between buffered download updates so Electron can paint intermediate progress before completion. Add a regression test that proves renderer-observable progress during an immediately buffered download.
2026-08-20 14:01:07 +02:00
Sucukdeluxe 7074e6662d release: prepare v2.1.27
CI / verify (push) Has been cancelled
Set the application, lockfile, and public README version to 2.1.27 for the native first-paint and update-action release.
2026-08-20 13:47:56 +02:00
Sucukdeluxe e18c629741 fix: highlight available updates in green
Use the success palette and black text for the available-update header action, including its hover state. Add regression coverage for the visual state.
2026-08-20 13:47:42 +02:00
Sucukdeluxe ff1593be81 fix: gate native window reveal on renderer load
Keep BrowserWindow hidden until both ready-to-show and did-finish-load are complete, preventing the incomplete header from reaching the screen.

Render a static upload-speed baseline beneath the transparent canvas so the zero line exists independently of renderer timers.

Add regression coverage for both reveal event orders, load failures, and the script-independent header baseline.
2026-08-20 13:45:02 +02:00
Sucukdeluxe f3001828a0 release: prepare v2.1.26
CI / verify (push) Has been cancelled
Bump the application and lockfile metadata to v2.1.26 and update the public README release reference for the stable first-frame header release.
2026-08-20 13:30:27 +02:00
Sucukdeluxe 6d458e37f3 fix: stabilize the header on first paint
Pass the installed version with the startup language so the renderer can display it before asynchronous initialization.

Seed and start the upload sparkline immediately, keep a fixed update-action slot across all update states, and remove the delayed automatic update check.

Add first-frame regression coverage for version, speed baseline, update geometry, and startup query behavior.
2026-08-20 13:27:55 +02:00
Sucukdeluxe c4c7907686 feat: improve live update and upload feedback
CI / verify (push) Has been cancelled
Refresh release metadata immediately before downloading an update and keep automatic checks current while the app remains open.

Accept desktop file drops from the first renderer frame, preserve early and rapid drops until initialization completes, and show the live remaining upload size in the sidebar.

Add regression coverage for update freshness, startup drag-and-drop ordering, localization, and remaining-byte retry behavior. Bump the application to v2.1.25.
2026-08-20 10:40:58 +02:00
Sucukdeluxe d7c9f287e4 release: restore v2.1.19 baseline for v2.1.24
CI / verify (push) Has been cancelled
Restore the v2.1.19 application baseline and retain only the focused import preflight summary with duplicate, unavailable, destination, job, and size-limit visibility.
2026-08-17 04:25:22 +02:00
Sucukdeluxe 9a213a7395 chore: prepare v2.1.23 release
CI / verify (push) Has been cancelled
Publish the complete English release notes for import preflight, host health, upload schedules, batch completion reporting, and cross-forge installer metadata verification.
2026-08-17 03:34:17 +02:00
Sucukdeluxe 6a2eda1252 fix: accept equivalent installer metadata names
Allow updater manifests from the Gitea and GitHub release pipelines to use different separator characters in the same installer filename while preserving exact version, size, checksum, and executable validation.
2026-08-17 03:29:00 +02:00
Sucukdeluxe 329d22e5b7 feat: add secure batch completion reports
Generate immutable post-cleanup summaries only after queue, history, and recovery finalization. Add bilingual accessible report UI, host and cleanup metrics, report-bound JSON and sanitized error CSV exports, renderer reload recovery, duplicate-filename-safe accounting, and public-source verification coverage.
2026-08-17 00:18:20 +02:00
Sucukdeluxe c8170b8556 feat: add upload schedule windows
Add local weekly upload windows with overnight support, live settings updates, and a shared abortable upload gate.

Keep active transfers running while queued jobs wait outside the window without consuming attempts or parallel slots. Validate and localize the automation settings in German and English, including next-start status and hidden Electron coverage.
2026-08-16 23:56:13 +02:00
Sucukdeluxe 2eaa30c0a8 fix: reload authoritative host health history
Refresh host health from the persisted retention-filtered history after batch completion, allowing the existing generation guard to reject stale responses and removing the competing local merge path.
2026-08-16 23:25:42 +02:00
Sucukdeluxe 5ace779b14 fix: correct host health sampling
Keep the complete loaded history snapshot, sample only valid non-future recent batches, count seven-day failures independently, ignore disabled accounts in issue counters, and preserve loading and error states across batch completion.
2026-08-16 23:03:18 +02:00
Sucukdeluxe 0ee749617c feat: add host health overview
Summarize up to fifty recent batches and current account state into a local host health table with success rates, effective historical throughput, recent failures, last success, and bilingual accessible empty states.
2026-08-16 22:46:15 +02:00
Sucukdeluxe 287363aee7 fix: block empty import confirmations
Disable and guard host selection confirmation whenever the current preflight produces zero jobs, preserving pending files and plan state for empty destination and fully size-limited selections.
2026-08-16 22:16:57 +02:00
Sucukdeluxe 3da1b08514 fix: harden import preflight admission
Keep configured size-limit counts identical to real queue admission, invalidate cancelled import generations, preserve explicit empty destination choices, normalize Windows namespace aliases, inspect files through one read handle, and retain exact rejection balances.
2026-08-16 22:01:16 +02:00
Sucukdeluxe 88a3ee0937 feat: add import preflight summaries
Inspect every manual file, folder, and drag-and-drop import before queue admission. Report exact duplicate, filename-filter, filesystem, destination, configured size-limit, and resulting job counts in the host selection dialog with live bilingual updates.
2026-08-16 21:31:56 +02:00
Sucukdeluxe 16f6f93a72 Polish account interactions and settings layout
CI / verify (push) Successful in 5m2s
Add smooth account editor transitions with immediate input release, keep the cursor visible in development and production windows, align host option descriptions, and ensure localized settings search placeholders fit at narrow widths. Bump the application to v2.1.22 and extend hidden Electron regression coverage.
2026-08-15 22:35:51 +02:00
Sucukdeluxe f1774b50f8 Add configurable filename import filters
CI / verify (push) Failing after 14m47s
Add include and exclude filename conditions across every new import path, show accepted and excluded counts before destination selection, and keep restored queues unchanged.

Refine the settings layout and reorder upload telemetry for faster status reading.
2026-08-15 05:13:14 +02:00
Sucukdeluxe b286574902 Harden upload finalization and release verification
CI / verify (push) Failing after 21m12s
Preserve uncertain remote commits and destructive source-cleanup requirements across cancellation, persistence failures, retries, and restart recovery. Revalidate account availability after admission waits and prevent late upload results from bypassing cancellation state. Strengthen release argument, CI tag, source allowlist, and secret scanning gates. Run the Electron smoke suite in a fully hidden offscreen harness that cannot reveal, focus, or elevate native windows.
2026-08-15 04:06:53 +02:00
Sucukdeluxe 692d994037 Isolate backup import queue persistence smoke 2026-08-15 02:29:20 +02:00
Sucukdeluxe 0845016efe Close post-upload and admission race gaps
Treat fallback result fetch and body failures as uncertain Doodstream commits, and coordinate interval timing with slot acquisition so upload starts remain spaced without occupying another host's global slot during the wait.
2026-08-14 00:07:27 +02:00
Sucukdeluxe 28094414a8 Harden terminal upload finalization recovery 2026-08-14 00:07:13 +02:00
Sucukdeluxe e681338631 Harden public release gates 2026-08-14 00:06:29 +02:00
Sucukdeluxe 21840cef94 Harden cross-auth recovery and upload admission
Use stable Doodstream API identities across separate Web and API profiles, serialize ambiguous VOE and Doodstream mixed-auth recovery paths, and fail closed after uncertain post-upload response failures. Enforce host upload intervals only after recovery and concurrency admission, and clear batch-scoped recovery caches when the batch settles.
2026-08-13 23:59:00 +02:00
Sucukdeluxe cfa138198f Buffer startup drops until renderer readiness
Keep a bounded FIFO of drop payloads while the startup or recovery document is not validated. Flush each payload exactly once only after the generation-checked renderer Ready signal, retain immediate delivery for a ready renderer, and discard stale payloads when the main window is destroyed or replaced.

Wire renderer block, Ready, and window-close transitions through main and cover recovery, safe failure visibility, stale Ready signals, ordered multi-drop delivery, queue bounds, lifecycle cleanup, and duplicate prevention.
2026-08-13 23:35:04 +02:00
Sucukdeluxe 3767a8b81f Harden cross-auth upload recovery claims
Route VOE API and login uploads through one batch-scoped account claim registry so direct identities and uncertain outcomes are shared across authentication paths.

Fail closed for ambiguous Doodstream web uploads after POST, use canonical account identities across web and API paths, and singleflight derived API-key resolution outside upload semaphore admission.

Preserve distinct symbol-only recovery titles with a stable code-point fallback while matching Unicode-equivalent presentation forms. Add deterministic regression coverage for duplicate identities, uncertain successors, concurrent key resolution, and mixed auth paths.
2026-08-13 23:31:04 +02:00
Sucukdeluxe c800cbe02f Cover live legacy upload identity routing
Verify that a live indexed upload identity remains authoritative while removed legacy identities are rejected before any visible-name fallback.
2026-08-13 23:26:03 +02:00
Sucukdeluxe 3cb34f8039 Gate external window reveals on renderer readiness
Route second-instance activation, tray clicks, tray menu activation, and drop-target restores through one startup reveal gate. External focus and restore requests now remain queued until the active renderer generation reports Ready or the coordinator exposes the branded failure surface.

Block the gate and reset close-handshake readiness synchronously before every renderer recovery navigation and failure-document load. This keeps early loadFile rejection from leaving the terminal failure surface subject to the normal renderer close-preparation handshake.

Add production-like event binding regressions for all four external reveal paths, authorized Ready and failsafe reveals, and direct closing of the safe failure surface after an early recovery rejection.
2026-08-13 23:24:29 +02:00
Sucukdeluxe e124ab2923 Sanitize strict diagnostics storage failures
The strict ConfigStore readers previously propagated native filesystem and JSON parser errors. On Node 24, malformed JSON can be quoted in the parser message, so an opaque value from a corrupt history file could cross the collector and diagnostics-agent boundary unchanged when it was not one of the configured secrets.

Map strict config and history read, parse, and shape failures to a closed set of constant content-free errors. Keep separate invalid, read-failed, and history-not-found codes so the pre-migration history fallback remains limited to a genuinely absent dedicated file. Do not retain native errors or raw input as causes, while leaving credential decryption failures and the recovery-oriented UI readers unchanged.

Add boundary coverage for corrupt config JSON, invalid shapes, and read failures, plus an end-to-end ConfigStore-to-collectors-to-agent regression proving get_history, list_errors, and server_health never return a planted opaque history value.
2026-08-13 23:21:08 +02:00
Sucukdeluxe a8065a2313 Reject deleted legacy upload identities 2026-08-13 23:15:24 +02:00
Sucukdeluxe f95e68bdb3 Fail closed on diagnostic config and history reads
Diagnostics previously reused the recovery-oriented ConfigStore readers. A missing, unreadable, or corrupt primary config could therefore be replaced by cached, backup, or default data, leaving diagnostics without a trustworthy decrypted secret set. Dedicated history failures and invalid payloads could likewise become a healthy empty result or stale config history.

Add explicit diagnostic config and history reader contracts. The config path bypasses caches and recovery fallbacks, validates the primary document, decrypts its current credentials, and propagates read, parse, validation, and decryption failures. The history path accepts a valid empty array, rejects unreadable or malformed dedicated data, and uses strict legacy config history only when no dedicated file exists. Keep the normal UI recovery readers unchanged and wire diagnostics to the strict contracts.

Cover primary recovery isolation, decryption failure propagation, valid empty history, corrupt and unreadable history, stale-history fallback prevention, pre-migration compatibility, and main-process wiring. Existing collector tests continue to prove successful responses, response-boundary redaction, shared history semantics, and snapshot non-mutation.
2026-08-13 23:10:05 +02:00
Sucukdeluxe c78160a521 Harden batch-wide recovery identity claims
Scope remote code ownership to normalized hoster and account identities while retaining title-only recovery serialization and canonical Unicode title matching.

Mark post-upload ambiguity and duplicate identities as uncertain so retries, account fallback, and later same-title jobs fail closed instead of reporting unsafe success.

Acquire recovery title leases before hoster and global semaphores, revalidate failed-account overrides before upload, and clear claim state at batch boundaries.

Add deterministic concurrent coverage for same-code rejection, distinct-code parallel success, uncertainty propagation, semaphore fairness, account isolation, Unicode equivalence, and registry lifetime.
2026-08-13 23:09:03 +02:00
Sucukdeluxe dd14381e43 Fix generation-safe renderer startup recovery
Bind renderer Ready and initialization-failure IPC to per-navigation document URLs and main-frame identity so stale documents cannot cancel the active deadline or reset the recovery budget.

Serialize initial-load retries with crash, initialization, and timeout recovery behind one bounded navigation budget. Keep the main window hidden until a validated Ready signal while allowing the branded failsafe to become visible.

Move production lifecycle wiring into the startup handlers and add event-driven regressions for stale Ready signals, pre-finish initialization failures, timeout recovery, visibility, and crashes during the initial navigation.
2026-08-13 22:58:48 +02:00
Sucukdeluxe 097fe3e237 Clarify source cleanup audit logging 2026-08-13 22:55:39 +02:00
Sucukdeluxe c54cf6b22e Harden renderer modal and upload races 2026-08-13 22:52:19 +02:00
Sucukdeluxe 1c8e9067ee fix: fail closed for diagnostic history reads
Require the decrypted configuration and its complete secret set before loading or returning any diagnostic history data. Propagate configuration failures so the agent response boundary falls back to its generic safe error instead of emitting unredacted history content.

Reject thrown and non-array dedicated history reader failures as unhealthy operations without consulting stale config history. Preserve redaction of reader errors at the agent boundary.

Keep caller-owned history snapshots unchanged by isolating the per-hoster summarizer from the reader array, and cover get_history, list_errors, and server_health with focused red-green regressions.
2026-08-13 22:48:21 +02:00
Sucukdeluxe f03e0c8c22 Keep the public source manifest exact
Allow the committed remote input regression test in the positive-list source verifier. The verifier still rejects every unlisted path and now accepts the complete v2.1.20 source snapshot without broadening any directory or extension rules.
2026-08-13 22:37:26 +02:00
Sucukdeluxe c209abdbbc Fix duplicate VOE and Vidmoly recovery claims
Share account-scoped recovery claims with login uploader instances and serialize same-title recovery windows. Reserve direct and recovered file codes consistently, reject reused identities, and cover concurrent singleton recovery plus distinct-code and parallel-success cases.
2026-08-13 22:30:27 +02:00
Sucukdeluxe acb43d982e fix: unify diagnostics history access
Resolve diagnostic history through the injected loadHistory dependency whenever it is available, retaining config history only for legacy collectors without a dedicated reader.

Build server_health error and batch summaries from one validated snapshot so migrated installations cannot combine current batches with stale errors or parse the external history twice.

Add focused regressions for migrated history consistency and fail-closed handling of invalid dedicated history results.
2026-08-13 22:28:26 +02:00
Sucukdeluxe a4d0854e76 Harden renderer startup readiness recovery
Require a bounded Ready signal after each main-document load, cancel the deadline on successful readiness or window disposal, and keep recovery limited to one reload before the branded failure surface.

Route renderer initialization failures through production startup handlers and reject malformed authenticated remote keyboard payloads without throwing or logging.
2026-08-13 22:25:28 +02:00
Sucukdeluxe d5ff45644c Preserve recovered terminal upload results 2026-08-13 22:18:18 +02:00