Commit Graph

416 Commits

Author SHA1 Message Date
NimBold 1ddfaec338 fix(window): refine cross-platform window frames and eliminate Windows shadow bleed
- 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.
2026-09-05 20:02:31 +03:30
NimBold bbe5445933 fix(window): harden focus lifecycle and cross-platform controls
- 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.
2026-09-05 16:11:07 +03:30
NimBold f5e228a589 fix(window): clarify cross-platform window boundaries
- 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.
2026-09-05 15:46:58 +03:30
NimBold bbfc6e9eb1 fix(network): harden native proxy discovery and FFmpeg provider matching
- 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
2026-09-05 08:41:10 +03:30
NimBold d329a5ad91 fix(deps): harden proxy and Cargo update audits
- bound complete native proxy discovery and reject oversized service sets

- reject malformed proxy endpoints while preserving valid IPv6 hosts

- report Cargo graph additions and removals as compatible resolution drift
2026-09-05 08:17:05 +03:30
NimBold 0b620b46f3 chore(engines): standardize FFmpeg 9.0.1 2026-09-05 08:03:13 +03:30
NimBold efe9ffa3c2 chore(deps): refresh compatible application dependencies
- 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
2026-09-05 07:45:02 +03:30
NimBold 6440d8ad40 fix(deps): make update and advisory checks complete
- resolve FFmpeg against complete cross-platform stable provider tuples
- report Cargo lock drift through isolated resolver metadata
- gate vulnerabilities and document upstream informational advisories
2026-09-05 07:42:31 +03:30
NimBold ddde763133 fix(network): replace legacy system proxy fallback
- replace sysproxy with bounded asynchronous native platform probes
- preserve deterministic proxy precedence and environment fallback
- cover native parsing, output bounds, and macOS service selection
2026-09-05 07:36:16 +03:30
NimBold 69a818d621 fix(torrent): resolve TUN proxy stalls with DHT bootstrap and UDP translation matching
- 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
2026-09-04 09:37:31 +03:30
NimBold ec3bd05547 fix(app): enforce media and scheduler lifecycle boundaries
- 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
2026-09-03 20:54:32 +03:30
NimBold 248b4ac460 fix(app): harden release contracts across shell, queue, and engine boundaries
- 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.
2026-09-03 19:28:27 +03:30
NimBold 41b525ea18 chore(release): prepare Firelink 1.4.1 2026-09-03 09:52:45 +03:30
NimBold 3f4f344620 fix(network): restore native async resolver for route-aware transfers (#38)
- 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)
2026-09-03 08:55:36 +03:30
NimBold 4814c8e92b chore(deps): update cargo crates and ffmpeg engine source locks
- 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
2026-09-03 07:58:43 +03:30
NimBold c87d4a5ec5 fix(deps): refresh packages and engine payloads
- Update compatible Tauri, i18next, React i18next, and Lucide dependencies.
- Refresh Rust plugin locks and target-specific FFmpeg source metadata.
- Replace the macOS arm64 FFmpeg payload with a verified snapshot.
2026-09-02 02:53:32 +03:30
NimBold 050932dc27 fix(ci): support stock Aria2 route fallback (#38)
- 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.
2026-08-31 08:50:13 +03:30
NimBold 4777f1e3c3 fix(network): harden TUN-aware DNS routing (#38)
- Keep hostname resolution on the active OS, TUN, proxy, or Aria2 route while blocking literal local targets.\n- Propagate and attest the Firelink Aria2 resolver and network-policy contract across normal, Torrent, and magnet paths.\n- Fence magnet probe cleanup, redirect/range policy, lifecycle races, and engine staging with regression and smoke coverage.
2026-08-31 07:36:24 +03:30
NimBold 725f5e40ec fix(build): isolate engine staging per invocation
- remove shared staging locks and the repository engine tree
- stage verified target payloads in private atomic workspaces
- fence Tauri bundles and process-tree cleanup across platforms
- align CI, AppImage packaging, smoke checks, and release docs
2026-08-31 01:11:56 +03:30
NimBold b564e92532 fix(network): harden route-aware torrent resolution
- keep reqwest metadata on its supported proxy route and require Aria2 asynchronous DNS
- fence magnet probe ownership and delayed RPC cleanup without cross-transfer removal
- validate Torrent DHT nodes, web seeds, proxy inputs, and literal IPv4/IPv6 targets
- extend regression and smoke coverage for issue #38

Refs: #38
2026-08-30 14:58:01 +03:30
NimBold 1d629873b5 fix(deps): refresh packages and harden engine staging
- update npm, Cargo, Deno, and FFmpeg lockfiles
- refresh verified cross-platform engine payload metadata
- serialize staging, verification, and Tauri packaging across concurrent runs
- recover interrupted lock records and cover crash and ownership races
2026-08-30 10:22:38 +03:30
NimBold 09ad412047 fix(ci): harden cross-platform replacement fingerprints
- Bind new replacement fingerprints to file contents and open-handle identity.\n- Preserve legacy recovery state and keep hashing off async and IPC threads.\n- Refs: #39
2026-08-28 21:13:01 +03:30
NimBold f3cf70ab20 test(ci): stabilize Linux torrent probe harness
- Bound scripted RPC waits and prevent notification races.\n- Use runner-safe budgets for HTTP probe tests after deadline semantics changed.\n- Refs: #39
2026-08-28 20:41:44 +03:30
NimBold 9bf02f2ee2 fix(network): make DNS routing TUN-aware (issue #38)
- Share literal-target policy and route selection across metadata, Aria2, Torrent, and yt-dlp paths.
- Start direct Aria2 resolution with system DNS and fence a bounded alternate resolver fallback.
- Validate Torrent trackers/web seeds and harden magnet probe cleanup and lifecycle handling.
- Add route, resolver, fallback, and smoke coverage without changing browser IPC payloads.

Refs: #38
2026-08-28 17:25:52 +03:30
NimBold 9d1e8d994a fix(windows): repair properties chrome and credential recovery
Refs #37.

- Keep the transparent Properties window renderer-owned at its rounded corners without native shadow bleed.
- Keep the complete custom caption-control rail outside Tauri drag hit-testing so every button area receives clicks.
- Retry credential-marked downloads through a fresh lifecycle with restored keychain credentials or a safe credentialless request.
- Preserve keychain consent boundaries, sanitize unavailable request credentials, and retain retryable errors when recovery fails.
- Remove the obsolete manual credentialless retry confirmation and keep all start/resume entry points consistent.
2026-08-28 05:07:54 +03:30
NimBold 7477a26378 fix(properties): avoid Windows WebView deadlock (#37)
- Create Properties WebView windows from an async Tauri command
- Serialize open, close, and removal lifecycle operations
- Refs #37
2026-08-28 02:45:15 +03:30
NimBold e4a698eb7f fix(startup): further split Windows invoke handlers (#37) 2026-08-28 01:00:47 +03:30
NimBold 6b9919c5a1 fix(startup): split Windows invoke handlers (#37) 2026-08-28 00:22:19 +03:30
NimBold 97f15dee37 fix(startup): gate renderer IPC on document load (#37)
- Issue #37: Windows 1.4.0 exited with STATUS_STACK_OVERFLOW before showing the main window.
- Gate lazy entrypoint imports, Zustand persistence, logger initialization, and console forwarding until WebView2 document load.
- Preserve the native Ready reveal and pending-window restore lifecycle across platforms.
- Show a closeable startup error if the main entrypoint cannot load.

Fixes #37.
2026-08-27 22:26:53 +03:30
NimBold 8d1cde8d2c fix(startup): restore Windows renderer startup (#37)
- Issue #37: Windows 1.4.0 exited before showing its main window.\n- Keep the logger state read independent of WebViewWindow extraction during WebView2 bootstrap.\n- Preserve main-window authorization for logging mutations and keep the process-wide pause state consistent across renderers.\n\nFixes #37.
2026-08-27 21:23:00 +03:30
NimBold a5cecb3777 fix(startup): block Windows activation during WebView2 init (#37)
- Issue #37: keep the Windows host hidden, unfocused, and non-activatable while WebView2 is constructed.\n- Restore focusability and reveal the main window only after Tauri reports Ready.\n- Preserve queued startup restores on non-Windows instead of clearing them before servicing.\n\nFixes #37.
2026-08-27 17:34:04 +03:30
NimBold 9c0ba106d6 fix(startup): defer Windows window activation (#37)
- Keep the Windows WebView host hidden and unfocused during native construction.\n- Queue deep-link, torrent, single-instance, and extension restore requests until Tauri is ready.\n- Reveal and focus the main window through one startup-safe path.\n\nFixes #37.
2026-08-27 17:00:57 +03:30
NimBold 8163e2241a fix(startup): avoid reentrant Windows focus (#37)
- Keep the main WebView2 window unfocused during native construction.
- Remove the synchronous post-build focus request that caused the Windows stack overflow.
- Refs #37.
2026-08-27 15:58:47 +03:30
NimBold 0c65837360 fix(startup): prevent Windows WebView2 focus crash (#37)
- Create the main Windows WebView without requesting focus until the native window exists.\n- Keep hidden Properties WebViews unfocused until their reveal path.\n- Make packaged smoke checks observe startup stability and clean up lingering Unix helpers.\n- Refs #37
2026-08-27 15:27:04 +03:30
NimBold 201bb1e07c fix(startup): support redirected Windows storage paths (#37)
- Issue #37: allow Windows AppData junctions to resolve before the main window starts.
- Keep reparse-point rejection for user-selected download and recovery paths.
- Add Windows junction coverage and v1.3.1 schema migration data-preservation coverage.
2026-08-27 13:21:46 +03:30
NimBold e79c0c1446 chore(release): prepare Firelink 1.4.0
Document the Torrent and Properties release, align desktop version metadata, and pin the published Companion 2.2.0.
2026-08-27 08:26:57 +03:30
NimBold cfe929680c fix(torrents): harden unfinished asset cleanup
- recursively prune empty Torrent output directories without deleting unrelated content
- handle metadata-named directories and fail closed on links or substitutions
- flush current persisted status after in-flight dispatch before Delete File removal
- add recursive cleanup and persistence race regressions
2026-08-27 07:48:38 +03:30
NimBold c2a6e3d113 chore(deps): refresh packages and bundled engines
- update Lucide and compatible transitive Rust locks

- refresh Windows/Linux FFmpeg payloads with verified source hashes

- verify macOS release checks against the mounted DMG artifact
2026-08-26 21:39:29 +03:30
NimBold 4d33f9790f fix(torrent): remove unstarted magnets safely
- allow pre-admission staged and paused magnets to remove without ownership
- inspect exact cached Torrent outputs and sidecars before bypassing the guard
- fail closed for malformed metadata and admitted lifecycles
- cover missing, unrelated, partial, and malformed asset cases
2026-08-26 11:25:58 +03:30
NimBold 51db4fc6b7 fix(torrent): repair magnet handoff and TUN discovery
- recognize direct magnet schemes and keep metadata parents out of terminal completion
- adopt validated followed payload GIDs with bounded, lifecycle-fenced reconciliation
- route direct Torrent DNS through the system resolver for TUN clients
- make magnet preview optional and repair stale fallback drafts
- release paused handoff permits and show peer-wait state consistently
- cover the lifecycle and failure paths with Torrent smokes and regression tests
2026-08-25 02:29:18 +03:30
NimBold b5ee53140d fix(torrent): harden lifecycle and properties state
- admit valid magnets immediately while keeping metadata refresh optional
- fence Torrent recovery, diagnostics, and allocation presentation by lifecycle
- avoid false peer-wait claims when telemetry is missing or malformed
- stabilize Properties metric label/value layout for narrow and RTL windows

Tests:
- npm test -- --run
- npm run build
- npm run check:i18n
- node --test scripts/*.node-test.js
- cargo test --all-targets
- npm run smoke:torrent
- npm run smoke:torrent:failure-paths
- git diff --check
2026-08-24 15:51:24 +03:30
NimBold a6b341f9e3 fix(downloads): allow staged replacements to remove their own target
- Treat the persisted staged row as its own legacy ownership claim
- Keep cross-download and ambiguous ownership conflicts fail-closed
- Cover persisted self-claim cleanup and changed-target protection
2026-08-24 13:44:18 +03:30
NimBold 9a7894a3e2 fix(downloads): clean up pre-admission replacements
- Authorize exact fingerprint-matched cleanup for staged replacements
- Revalidate lifecycle, ownership, paths, and identity changes
- Add race and regression coverage
2026-08-24 09:05:26 +03:30
NimBold b56ec0a3a8 fix(downloads): allow removing unadmitted queue items
- treat pre-admission rows without exact assets as metadata-only cleanup
- retain fail-closed ownership checks for admitted and ambiguous lifecycles
- add regression coverage for normal, media, and Torrent artifact cases
2026-08-24 08:31:07 +03:30
NimBold 627e24da0f chore(deps): refresh packages and bundled engines
- update React DOM types and compatible Rust lock dependencies
- refresh Windows and Linux FFmpeg source URLs and checksums
- cover aria2 asset hashes and Windows npm command execution
- verify Firelink and Companion across tests, builds, and engine payloads
2026-08-24 06:57:16 +03:30
NimBold c34f2d2ae6 fix(ci): correct Windows handle initialization
- pass the Win32 null template handle with the binding's pointer type
- keep stable file-identity lookup compilable on the MSVC target
2026-08-23 04:02:09 +03:30
NimBold 0ff0b28e9f fix(ci): repair cross-platform native checks
- make cleanup tests configure an explicit approved root instead of relying on platform download-directory discovery
- replace unstable Windows metadata extensions with stable Win32 file identity lookup
- preserve exact replacement fingerprint validation across enqueue, quarantine, recovery, and cleanup paths
2026-08-23 03:53:37 +03:30
NimBold d49c7bd292 fix(downloads): harden recovery, replacement, and cleanup
- make media credential recovery durable and explicit across lifecycle entry points
- protect exact output replacement with platform-aware ownership, fingerprints, locks, and crash-safe quarantine
- permanently remove unfinished assets while preserving safe completed and Torrent cleanup
- add frontend, native, and localization regressions
2026-08-23 03:24:55 +03:30
NimBold e88425833f fix(handoff): close browser credential boundaries
- Filter custom credential headers and cookies at restricted handoff consumers.
- Preserve ordinary single-file capture credentials for Add-window review.
- Extend native and renderer redaction coverage with focused regressions.
2026-08-22 05:02:04 +03:30
NimBold 3bcad639e2 fix(persistence): harden cross-layer ownership
- Validate and sanitize renderer event payloads before UI projection
- Fence stale enqueue cleanup by native lifecycle generation
- Canonicalize empty startup hydration and harden SQLite backup durability
- Add real-postcondition IPC, restart, storage, and queue regressions
2026-08-22 04:11:02 +03:30