- make browser media handoff immediate with bounded, replay-safe discovery
- fence native and frontend acknowledgement, rejection, lifecycle, and stale retry paths
- add secure yt-dlp cookie-file authentication with read-only arguments and cache identity
- wire settings, metadata, queue, i18n, bindings, and the published Companion gitlink
- add regression coverage for delayed, failed, ambiguous, and replayed media flows
- Register per-user startup on Windows, XDG autostart on Linux, and SMAppService with a macOS fallback.
- Keep login launches hidden with tray recovery and synchronize OS-backed state through typed IPC.
- Add accessible localized settings UI and regression coverage.
- Refs #40: recognize yt-dlp missing browser cookie databases on macOS, Linux, and Windows.
- Preserve the one-shot fallback across metadata, playlist metadata, and final downloads.
- Add positive and negative classifier coverage without changing explicit auth or format errors.
- Detect direct HLS, DASH, and Smooth Streaming manifests with explicit Add-window media modes.
- Harden duplicate replacement, browser-handoff lifecycle, and native media-header/referrer validation.
- Integrate the reviewed Companion discovery implementation at Extensions/Browser.
- Issue #40: implement the short-term media-download plan.
- Issue #39: keep the related handoff work linked for follow-up.
- return identified 503 responses until pairing-token hydration and frontend readiness
- preserve terminal invalid-token and ambiguous-delivery status boundaries
- advance the Companion submodule to the hardened Firefox capture implementation
- explain that the threshold triggers aggregate-speed peer discovery
- separate threshold and maximum-peer help in Properties
- document Aria2 defaults and speed units across all supported locales
- Cache signed browser-local torrent bytes in the desktop handoff server.\n- Preserve managed torrent identity through Add-window inspection and rekey.\n- Advance the tested browser companion submodule to the published capture fix.
- Repair ownership-backed and malformed download rows from migration backups.
- Preserve nonterminal removal intent and completed tombstones during recovery.
- Reject unrelated backup names and keep incomplete repairs retryable.
- Surface known Aria2 startup failures before range probes and retry loopback RPC port conflicts.
- Add regression coverage for duplicate recovery and startup failure paths.
- Prevent premature persistence activation by installing the subscription only after download state initialization finishes
- Guard persistence subscription and flush handlers against emitting snapshots before database hydration completes
- Preserve array and set reference equality in applyRemovalJob when target job ID is absent, avoiding spurious persistence triggers
- Merge removal jobs monotonically during initDB and suppress redundant identical removal events
- Recover missing downloads, ownership records, and custom queues from schema v3 migration backup when SQLite downloads table is empty
- Add resilience against corrupt backup candidates and maintain referential integrity by excluding tombstoned download paths
- Add unit and regression tests covering persistence hydration barriers, removal job deduplication, and backup recovery
- replace hardcoded make -j2 with dynamic CPU core detection in aria2 build.sh
- isolate Aria2 source build cache from prebuilt engine downloads
- add atomic cache validation, restoration, and promotion in scripts/engine-aria2-cache.js
- add Rust dependency and target caching with Swatinem/rust-cache@v2
- raise Desktop checks timeout to 45 minutes to prevent job aborts
- harden temporary directory cleanup on Windows process abort
- update Lucide, rustls, and compatible Cargo lock dependencies
- refresh target-specific Windows and Linux FFmpeg archives and checksums
- prevent UTF-8 media stderr truncation from panicking download workers
- correct bundled payload provenance and Aria2 build notices
- cache target-scoped engine payloads with exact lock and toolchain keys\n- validate manifest provenance, checksums, and paths before reuse\n- restrict cache writes to trusted main pushes while allowing release restores\n- fall back to source provisioning when a cache is absent or invalid\n- harden release checksum generation against pipeline races
- collect the Windows DLL dependency closure into the staged Aria2 payload
- expose the trusted runtime directory to native and CI Aria2 processes
- keep OpenSSL provider modules available for Windows smoke and packaged runs
- Install the MSYS pkgconf package for Aria2 source provisioning.\n- Expose MSYS and MinGW aclocal directories before autoreconf.\n- Keep release provisioning aligned with the CI dependency contract.
- Force the Aria2 patch checkout to LF on every platform.\n- Keep Windows patch verification aligned with the checked-in digest.\n- Preserve the existing source-build and provenance checks.
- Include DHTMessageCallback.h before namespace aria2 so GCC can instantiate unique_ptr defaults.\n- Refresh the checked-in Aria2 patch and all platform patch digests.\n- Validate the clean-source patch application and local engine checks.
- Remove the duplicate Windows filesystem flag import and add the missing file identity import.\n- Make the Linux replacement-file regression deterministic while retaining permission-repair coverage.\n- Re-run the native test suite before publishing the corrective commit.
- Apply stronger active and inactive renderer contours only on Windows.
- Keep native shadows disabled for main and Properties windows to prevent rectangular corner bleed.
- Lock platform configuration and maximized-frame invariants with regression tests.
- Remove rounded renderer corners from opaque Linux window surfaces.
- Track maximized state with race-safe native reads for main and Properties windows.
- Flatten maximized Windows frames without changing macOS AppKit zoom contours.
- Make early platform detection explicit, testable, and fail closed on unsupported targets.
- Set shadow: false on Windows main and Properties window builders to prevent rectangular DWM shadow bleed behind rounded corners.
- Refine active and inactive window frame tokens across themes for subtle, non-glaring boundaries.
- Apply a 0.5px hairline window border rule specifically on macOS to match native Retina AppKit window strokes.
- Synchronize document platform dataset attribute on app boot across main and Properties windows.
- Update and extend window configuration and platform synchronization test suites.
- Prevent listener leaks on synchronous registration errors and handle non-function native disposers safely.
- Add immediate DOM focus listener fallback and deduplicate consecutive identical window focus updates.
- Synchronize React focus state immediately when the underlying focus source changes.
- Align Linux Properties window builder with platform policy by disabling unsupported transparency and shadows.
- Restore full caption button opacity on hover and implement native monochrome styling for inactive macOS traffic lights.
- Enable native elevation on macOS and Windows with theme-aware active and inactive contours.
- Track native window focus with race-safe registration and cleanup across main and Properties shells.
- Disable unsupported Linux shadows explicitly and cover focus and platform policies with regression tests.
- allocate engine workspace on the repository drive when os.tmpdir() is cross-drive on Windows
- resolve RUNNER_TEMP on GitHub Actions to align workspace drive with checkout
- strip Win32 \\?\ verbatim prefixes to ensure Tauri resource normalizer compatibility
- execute node scripts/tauri-command.js build directly instead of npm run tauri build --
- prevent PowerShell from consuming -- on Windows runners and triggering npm version print
- maintain cross-platform build parity across macOS, Linux, and Windows
- Restore 24px bottom margin on .settings-network-panel .mac-settings-group and add defensive top margin on subsequent section titles to prevent card collision with section headings
- Unify Identity section within the network-settings-panel-general tabpanel to fix ARIA containment and layout hierarchy
- Guard system proxy status note to avoid empty border rows during idle and display contextual status icons with settings-network-note styling
- Align Site Logins validation error messages to the input column in the two-column grid
- Make Integrations step guide cards flexible with min-h-[190px] to prevent vertical text clipping across translations and large font sizes
- discover active macOS dynamic store proxies via scutil before networksetup
- treat missing registry keys and unavailable probe tools as clean absence instead of hard error
- support two-part versions and tag-exact asset patterns in BtbN FFmpeg updates
- normalize BtbN n-prefixed FFmpeg versions in sidecar status checks
- require Node 22.12 across local and CI execution
- make lifecycle and persistence suites repeat-safe
- add a five-repeat race gate with filesystem module caching
- update supported npm packages and compatible Cargo locks
- move direct base64 encoding to scalar-only 0.23.1
- preserve Aria2 torrent payload encoding with an exact regression test
- Bundle updated aria2c binary with TUN/Fake-IP address translation matching and default DHT bootstrap nodes
- Fallback to 32-bit transaction ID correlation for UDP tracker replies and DHT messages when upstream rewrites return IP
- Cache UDP tracker connection IDs for both rewritten and original addresses to unblock pending announces
- Default to public DHT bootstrap routers on startup to eliminate zero-node routing table starvation
- Update engines.lock.json checksum for the staged aarch64-apple-darwin aria2c sidecar
- keep magnet probe cleanup and resolver fallback inside absolute deadlines
- route provider media and playlists only through HTTP(S)
- enforce scheduler ID, time-format, and running-state invariants across persistence
- isolate Companion release tag checks from ambient Git configuration
- Use NativeAsyncResolver as primary for queue transfers and magnet probes when route contract is available
- Fall back to standard system resolver options on stock Aria2 builds without custom flags
- Guarantee minimum 5s cleanup reserve budget to prevent zero-duration probe cleanup timeouts
- Prevent Aria2 single-threaded main loop freezing under TUN proxies (ref #38)
- update BtbN FFmpeg autobuild URLs and SHA-256 digests in engine-sources.lock.json to 2026-09-02 release
- upgrade sha1 to 0.11 to deduplicate with tungstenite and eliminate duplicate sha1 0.10.7 and digest 0.10.7 crates
- bump rustls (0.23.43), sysinfo (0.39.6), thiserror (2.0.20), keepawake (0.6.1), rusqlite (0.40.2), and log (0.4.34) in Cargo.toml
- update platform-specific native keyring store dependencies for macOS (1.0.2) and Linux (1.0.1)
- update Cargo.lock transitive dependencies including trash (5.2.7), mio (1.2.3), open (5.4.3), sigchld (0.2.5), and toml (1.1.5)
- keep base64 pinned to 0.22 to preserve alignment with the Tauri and Hyper ecosystem
- Keep normal and Torrent transfers on the system resolver while preserving proxy routing.\n- Gate the alternate magnet resolver on the optional Firelink capability and disable its default target policy for system-route transfers.\n- Allow stock Windows/Linux engine payloads and make the metadata timeout regression deterministic.