Commit Graph

885 Commits

Author SHA1 Message Date
NimBold 7310e28543 fix(media): harden browser cookie handling
- recognize yt-dlp wrapped cookie-load failures and isolate source fallbacks
- repair extension acknowledgements and Azure media manifest handoff
- improve responsive cookie settings guidance across locales
- pin the tested Companion fix
2026-09-23 23:48:36 +03:30
NimBold 15eb8a4423 chore(deps): refresh Firelink packages and engines
- Refresh compatible Tauri, React i18n, Rust, and FFmpeg dependencies.

- Migrate macOS integrations to objc2 with main-thread Automation execution.

- Buffer early Torrent launches and update Node 24-compatible CI actions.
2026-09-23 20:01:41 +03:30
NimBold c9cb02d157 fix(media): harden two-phase handoff and YouTube auth
- 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
2026-09-20 17:33:28 +03:30
NimBold 897e6a2da3 fix(deps): refresh locked packages and Deno runtime
- update Lucide, Vitest, compatible Cargo locks, and Deno 2.9.7 payloads

- remove unused frontend build dependencies

- make update checks fail closed with independent provider and hash status rows

- preserve FFmpeg, yt-dlp, and patched Aria2 payloads until verified artifacts exist
2026-09-19 13:50:25 +03:30
NimBold 7d54ba45b9 feat(settings): add cross-platform start-at-login
- 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.
2026-09-18 14:53:27 +03:30
NimBold f7db5df72e fix(media): recover from missing browser cookie databases
- 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.
2026-09-17 22:40:03 +03:30
NimBold c145d4dc9b feat(media): add safe manifest handoff and row routing
- 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.
2026-09-17 21:16:48 +03:30
NimBold 347812ef94 fix(extension): gate browser handoff on frontend readiness
- 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
2026-09-16 16:24:14 +03:30
NimBold 1e48335f85 chore(deps): refresh dependencies and engine locks
- update React, Vite, i18next, Cargo, reqwest, and rustls dependency floors
- refresh verified Windows and Linux FFmpeg source archives
- harden cleanup ownership, identity fencing, DNS classification, and cancellation safety
2026-09-15 04:25:44 +03:30
NimBold 56460e2ec7 docs(readme): fit browser install badges on one line 2026-09-11 12:03:37 +03:30
NimBold af1ebae712 docs(readme): link Edge Add-ons listing (#39) 2026-09-11 11:55:46 +03:30
NimBold 3c8800805f chore(release): prepare Firelink 1.4.2 v1.4.2 2026-09-08 22:30:27 +03:30
NimBold 6b42d878c2 fix(torrent): clarify peer threshold guidance
- 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
2026-09-08 21:49:24 +03:30
NimBold 8fd73a145e fix(extension): support browser-local torrent attachments
- 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.
2026-09-08 21:15:31 +03:30
NimBold 5f76277aaf fix(extension): capture automatic torrent downloads
- advance Companion to the pre-download torrent handoff fix

- keep the Firelink protocol and native desktop integration contract unchanged
2026-09-08 19:22:21 +03:30
NimBold 1cfda45334 fix(download): recover duplicate ownership and fail fast on aria2 startup
- 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.
2026-09-08 10:40:57 +03:30
NimBold 8cbc1c8768 fix(download): prevent persistence wipeout on startup and recover schema v3 downloads
- 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
2026-09-07 21:15:16 +03:30
NimBold eca4efb1ad fix(ci): optimize engine build times and add granular Aria2 caching
- 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
2026-09-07 19:58:49 +03:30
NimBold 33613e8679 fix(deps): refresh runtime dependencies and engine locks
- 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
2026-09-07 18:09:44 +03:30
NimBold d8a6440998 ci: cache verified engine payloads
- 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
2026-09-06 20:55:06 +03:30
NimBold 164f9f32a1 fix(engines): promote bundled Aria2 runtimes
- copy the Windows runtime directory into the provisioned payload

- keep the dependency manifest aligned with staged files
2026-09-06 16:56:22 +03:30
NimBold 74eb2f84cf fix(aria2): bundle MinGW runtime dependencies
- 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
2026-09-06 16:54:52 +03:30
NimBold 9ac3dc27a3 fix(ci): provide MinGW autotools pkg-config macros
- 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.
2026-09-06 16:24:26 +03:30
NimBold 752c86c89b fix(ci): keep hashed Aria2 patches canonical
- 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.
2026-09-06 16:07:56 +03:30
NimBold 2858b4c757 fix(aria2): include callback definition for gcc builds
- 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.
2026-09-06 15:55:48 +03:30
NimBold d3345d34e1 fix(ci): repair cross-platform cleanup 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.
2026-09-06 15:36:09 +03:30
NimBold 3624db280c fix(downloads): report torrent allocation and remove files asynchronously
- Add lifecycle-fenced Aria2 allocation telemetry and shared animated status presentation.
- Persist background removal jobs, retain Removing rows, and provide explicit retry after failures.
- Fence cleanup against stale dispatch, native controls, completion races, and replaced assets across restart.
- Preserve completed and seeding payloads through Trash and permit safe permission-repair retries.
- Require patched engine capabilities and reproducible Windows/Linux provisioning; isolate packaged smoke storage.
- Verify 561 frontend tests, 672 native tests, 72 script tests, i18n/build checks, and macOS package/engine smoke checks.
2026-09-06 15:26:59 +03:30
NimBold d4dcaf38b7 fix(window): restore clear Windows frame contours
- 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.
2026-09-06 07:54:22 +03:30
NimBold c3afc414a3 fix(window): harden frame geometry across window states
- 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.
2026-09-05 20:54:46 +03:30
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 f65d98bbd0 fix(ci): resolve Windows cross-drive engine workspace and strip verbatim paths
- 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
2026-09-05 10:28:31 +03:30
NimBold 006f941bae ci(release): invoke tauri-command directly to prevent argument stripping on Windows
- 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
2026-09-05 09:56:30 +03:30
NimBold 2606502293 fix(settings): resolve network section overlap and harden panel layouts
- 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
2026-09-05 09:24:31 +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 86c9c49be2 test(deps): migrate to Vitest 5
- 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
2026-09-05 07:47:53 +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