- Shell & UI: restore focus on sidebar reveal, guard window drag regions, contain context menu Escape keys, and fallback gracefully when a filtered queue is deleted. - Download table: fix sort order for estimated sizes, descending null values, 3-state sort cycle, and desktop keyboard row navigation. - Add window: harden duplicate resolution against unmanaged disk targets, draft id keying, and media credential isolation. - Properties window: add individual Torrent file path copy, horizontal scroll protection for narrow and RTL layouts, and strict numeric bounds on property edits. - Settings & scheduler: add draft buffering for integer inputs, sanitize persisted scheduler options, synchronize post-queue action countdown cancellation, and localize token regeneration. - Engine & backend: isolate loopback JSON-RPC from environment proxies with no_proxy, normalize media cookie sources, dispatch container formats case-insensitively, and preserve snake_case arguments in torrent Tauri commands. - Verification & packaging: isolate Companion git tag resolution from sandboxed git configs, and add regression tests for workflow normalization and portable packaging.
Headless Download Tests
Run the full Rust suite:
cd src-tauri
cargo test --all-targets
Run the queue-manager harness when changing aria2 scheduling, concurrency, and retry behavior:
cd src-tauri
cargo test --test queue_manager -- --nocapture
Run the media metadata smoke test with an explicit URL when changing yt-dlp integration:
cd src-tauri
FIRELINK_LIVE_YOUTUBE_URL='https://www.youtube.com/watch?v=dQw4w9WgXcQ' \
cargo test filters_live_youtube_metadata_from_env --lib -- --ignored --nocapture
Run the real local Torrent runtime smoke test against the host bundled Aria2 binary. It starts a local tracker and two Aria2 daemons, then covers magnet metadata resolution, saved-metadata hash validation, selected-file output, pause/resume, ownership reporting, and cancel/remove:
npm run smoke:torrent
Use node scripts/smoke-torrent.js --binary /path/to/aria2c when validating a
packaged or target-specific Aria2 binary.
Run the HTTP-boundary Torrent RPC integration test. It drives the production Aria2 RPC client through a local JSON-RPC server and verifies successful requests plus HTTP gateway errors:
npm run test:torrent:rpc
Run the deterministic unavailable-tracker and Aria2-daemon-exit checks with:
npm run smoke:torrent:failure-paths
Native CI runs this failure-path smoke after staging the target-specific
bundled engines on macOS, Windows, and Linux. Windows executes the Torrent RPC,
atomic-storage, canonical-cache, and web-seed normalization targets, while
compiling (but not executing) the queue-manager and library test binaries;
the Tauri mock harness exits before running on the Windows runner. The
headless production_contract target still executes queue admission,
normalization, credential-boundary, and retry contracts on Windows without
constructing a Tauri mock application.