924 Commits

Author SHA1 Message Date
NimBold df0b20928b test(release): refresh runtime checksum assertion v1.5.0 2026-10-20 19:52:17 +04:00
NimBold 9ff865d26e fix(release): refresh pinned AppImage runtime 2026-10-20 19:50:11 +04:00
NimBold 0b115db402 chore(release): prepare Firelink 1.5.0 2026-10-20 19:08:11 +04:00
NimBold 15514b11e7 test(ci): run Windows queue manager integration tests 2026-10-20 19:08:05 +04:00
NimBold 05c8849370 chore(deps): refresh application locks and audit notes 2026-10-20 19:08:02 +04:00
NimBold 08c8d5820a fix(torrent): reject zero-piece-length metadata
Guard malformed Torrent metadata before it can disrupt the daemon. Refresh the locked engine hashes and keep regression coverage for a concurrent active transfer.
2026-10-20 19:08:00 +04:00
NimBold 9b4dcb2446 fix(downloads): harden transfer lifecycle and startup recovery
- Fence progress events with download lifecycle and Aria2 control epochs.
- Keep queue ownership, retries, and connection handling consistent through transfer races.
- Preserve browser and deep-link inputs through startup, including login-item query failures.
- Report allocation from native evidence and improve tray lifecycle handling.
- Add queue, transfer, UI, and packaged smoke regressions.
2026-10-20 17:54:20 +04:00
NimBold b024089800 fix(downloads): harden transfer and recovery lifecycles
- Persist valid progress checkpoints and reject stale media events across restarts.
- Fence shutdown and daemon recovery by exit generation; retain interrupted media IDs until recovery completes.
- Preserve queue order and ignore stale proxy failures during queue starts.
- Serialize torrent cache cleanup with active cache and probe ownership.
- Add regression coverage for persistence, queue, shutdown, and recovery races.
2026-10-19 16:57:52 +04:00
NimBold a888731c6e fix(media): restore paused progress after restart
- Persist validated progress fractions for paused media
- Cover serialized hydration, legacy rows, and invalid fraction boundaries
2026-10-18 13:04:16 +04:00
NimBold 05ff37df22 chore(deps): refresh compatible packages and FFmpeg sources
- update i18next, React i18n, Lucide, and compatible npm and Cargo locks

- refresh Windows and Linux FFmpeg 9.0.2 archives with verified hashes

- report compatible npm wanted versions and handle nested, duplicate, and optional packages

- update Node and Rust CI pins and document Windows 10 22H2 qualification
2026-10-18 12:09:43 +04:00
NimBold 971af3cd2c fix: resolve post-v1.4.2 regressions
- Pin the deep-link Linux compatibility fix and reject unsupported Safari cookie sources.

- Preserve and serialize scheduler run boundaries, stop acknowledgements, and shutdown journal admission.

- Serialize macOS LaunchAgent plists and manage only Firelink-owned entries.

- Fix Companion cross-frame media ranking and keep request context attached to the winning observation.
2026-10-16 16:06:14 +04:00
NimBold a6706df9a2 chore(deps): refresh Firelink runtime packages
- Update Tauri, React, i18n, and test tooling packages
- Use secret-aware clipboard writes for pairing tokens
- Refresh Windows and Linux FFmpeg sources
2026-10-16 11:22:09 +04:00
NimBold 25d7f7817a chore(deps): refresh packages and FFmpeg sources
- Upgrade i18next, Lucide, Rustls, and the reviewed Cargo lock entries.
- Refresh verified Windows/Linux FFmpeg artifacts and restrict provisioning to native hosts.
- Add locale fallback and concurrency coverage; document the Tauri 3 alpha spike.
2026-10-14 20:08:56 +04:00
NimBold eeb6127617 fix(ci): embed manifest in Windows integration tests
- Embed Common Controls v6 in integration-test binaries using Tauri's mock runtime.
- Keep the packaged app manifest owned by tauri-build.
- Refs #44
2026-10-13 13:45:25 +03:30
NimBold 061c9c45ec fix: isolate Windows process-group regression coverage
- Run descendant cancellation in a dedicated integration test executable.
- Use Windows process-handle state to verify descendant termination.
- Refs #44
2026-10-13 13:35:59 +03:30
NimBold eaced700bd fix: harden runtime updates and shutdown handling
- Upgrade frontend and Tauri dependencies; use process-group kills for yt-dlp descendants.

- Refresh verified Windows/Linux FFmpeg sources and add HLS byte-range coverage.

- Fence Aria2 handoffs across shutdown, retry, seeding, recovery, and user controls; fix expired queue-hold wakeups.

- Preserve Linux AppImage autostart for install paths containing '='.

- Refs #44
2026-10-13 13:18:55 +03:30
NimBold d91728bebb fix: address regressions since v1.4.2
- Encode Linux autostart Exec paths and preserve Add row selection across discovery.

- Queue media discovery updates during busy flows and bound session registries.

- Journal terminal completions across shutdown and restore Aria2 dispatch state safely.

- Add accessible Add row controls and lifecycle regression coverage.

Refs #44
2026-10-11 21:56:38 +03:30
NimBold fbf01fabeb feat(media): support custom browser cookie profiles
- Add persisted browser-specific profile paths for issue #44.

- Carry profile identity through metadata, playlist, enqueue, and media retry paths.

- Validate paths and show translated path-redacted errors while retaining Netscape fallback.
2026-10-11 11:24:57 +03:30
NimBold 33b61448bc fix(download): harden queue and lifecycle recovery
- Preserve selected queue priority during bulk starts and sparse moves
- Reconcile ambiguous Aria2 admission and bound metadata retries
- Snapshot scheduled stops and keep pause/completion state authoritative
- Bound shutdown waits and retain recoverable tray actions
- Cover staged pauses, queue races, and retry boundaries
2026-10-10 01:49:52 +03:30
NimBold 1c5895156a fix(release): inspect AppImage SquashFS at runtime offset
- Read SquashFS permissions after locating the embedded filesystem.
- Reject malformed and unsafe AppImage offsets.
- Cover offset parsing with regression tests.
2026-10-10 00:11:51 +03:30
NimBold eea313b45f fix(release): verify AppImage permissions and inputs
- Inspect launcher permissions from stored SquashFS metadata.
- Pin and checksum the runtime embedded during AppImage packaging.
- Cover metadata validation and release tool inputs with regression tests.
2026-10-09 23:48:54 +03:30
NimBold 63bcbd5eeb ci(release): refresh AppImage tool integrity pin
- Match the pinned digest to the current official appimagetool asset.
- Record the continuous release commit so future digest changes are reviewable.
2026-10-09 23:13:19 +03:30
NimBold 9c724b6c2d ci(test): preserve the Windows library test split
- Keep the Tauri mock regression off Windows runners that cannot launch the harness.
- Retain Windows compilation and supported native integration coverage.
2026-10-09 22:55:29 +03:30
NimBold 5187c96471 ci(test): run shell output regression on Windows
- Execute the fast-exit shell regression on native Windows CI.
- Keep the broader Windows library test split unchanged.
2026-10-09 22:48:31 +03:30
NimBold 05f8a5a219 ci(release): verify assets on non-publishing runs
- Download built artifacts after the platform matrix completes on dry runs.
- Require one non-empty package for each supported artifact format.
2026-10-09 22:43:55 +03:30
NimBold 6ba28f2d78 chore(deps): refresh packages and bundled engines
- Update npm and compatible Cargo locks; refresh pinned CI actions.
- Advance Windows/Linux FFmpeg payloads and add Vorbis/remux smoke coverage.
- Preserve yt-dlp final output across fast shell child exits.
2026-10-09 22:39:50 +03:30
NimBold 7ec6d41fbb fix(downloads): release stale folder prompt state
- Finish a stale picker request when it still owns submission state.

- Leave busy state untouched when a newer request has taken ownership.
2026-10-06 17:46:14 +03:30
NimBold cbac6b3f78 fix(downloads): harden save folder prompt lifecycle
- Capture request identity before async work and reject stale picker flows before and after every async prompt step.

- Preserve selected directory paths with meaningful whitespace while treating blank picker values as cancellation.

- Add coverage for the single batch prompt, cancellation values, and stale request races.
2026-10-06 17:44:53 +03:30
NimBold be652a81ed fix(downloads): prevent folder prompt loop when starting downloads
Addresses an issue reported by a user on X where starting downloads with "Ask where to save when adding downloads" enabled caused repeated folder selection prompts in an apparent loop for multi-item additions.

- Replace per-item folder picker loop in AddDownloadsModal with a single prompt per submission transaction
- Add resolveAddWindowPromptOptions and resolveAddWindowPromptRoot helpers to determine dialog title and avoid category scatter or duplicate nested batch folders
- Robustly handle string, array, and whitespace picker return values
- Guard against zombie completion across modal unmounts or stale requests
- Correctly propagate approved path to finalLocation, useSharedDestination, and modal state
- Add unit tests covering prompt options and root resolution
2026-10-06 04:18:13 +03:30
NimBold 6bbf1681f8 chore(deps): update npm packages, cargo dependencies, and engine locks
- update lucide-react to ^1.52.0 and @vitejs/plugin-react to ^6.1.2
- align native Rust Tauri plugins with frontend companion packages (tauri-plugin-opener 2.7.0, tauri-plugin-dialog 2.8.1, tauri-plugin-shell 2.4.0, tauri-plugin-notification 2.5.1, tauri-plugin-clipboard-manager 2.4.1, tauri-plugin-deep-link 2.6.1, tauri-plugin-single-instance 2.5.2, tauri-plugin-log 2.10.0, and tauri-build 2.7.1)
- upgrade core Cargo dependencies (regex 1.13.1, tower-http 0.7.1, futures-util 0.3.34, and chrono 0.4.45)
- resolve compatible locked transitive crates in Cargo.lock (ctutils, mio, objc2, powerfmt, signal-hook, want, zerocopy)
- update BtbN FFmpeg Windows and Linux source URLs and SHA-256 digests in engine-sources.lock.json to 2026-10-05 autobuild
2026-10-06 03:26:42 +03:30
NimBold 59bcf2d90f test(queue): harden lifecycle race coverage
- Gate addUri to exercise completion before GID registration.

- Assert retry and stale-GID outcomes through lifecycle postconditions.
2026-10-03 19:15:40 +03:30
NimBold 31720954e8 chore(deps): refresh Firelink packages
- Refresh npm and Rust dependency lockfiles to compatible stable versions
- Require Tauri 2.12.1 for macOS Properties transparency
- Pin verified Windows/Linux FFmpeg builds in the engine source lock
2026-10-03 19:00:52 +03:30
NimBold 6ea40292ad fix(downloads): harden recovery and shutdown lifecycles
Harden browser handoff, tray, scheduler, and downloader recovery paths.

- Add an explicit yt-dlp default-format choice after eligible metadata failures

- Fence startup and Add-window work against pause, persistence, and exit races

- Persist scheduler tracking before acknowledging triggers and surface tray failures

- Preserve final download state through Aria2 shutdown and prevent stale tray replay

- Cover restart, allocation, queue, scheduler, and exit lifecycle regressions
2026-09-29 22:05:50 +03:30
NimBold ce31dccd88 fix(appimage): harden packaging for catalog compatibility
- Normalize and verify launcher, AppDir, and GTK hook permissions before and after repacking.

- Reject unsupported target triples before deriving or deleting payload paths.

- Align the published AppImage filename with catalog discovery and document the host glibc floor.

- Add regression coverage for permission, layout, symlink, and target traversal failures.
2026-09-29 14:14:54 +03:30
NimBold f4baad6fca chore(deps): refresh Tauri dependencies and CI toolchains
- Update Tauri 2 JavaScript and Cargo dependencies; remove unused JS filesystem plugin.

- Refresh verified Windows/Linux FFmpeg sources and pin workflow actions.

- Test supported Node lines, move native jobs to Node 24, and target the macOS 27 runner.

- Build patched Windows Aria2 with MSYS2 UCRT64 and fingerprint the selected environment.
2026-09-29 08:45:39 +03:30
NimBold 15f42b64f4 fix(app): address regressions reported in #42
- Wrap status summaries without clipping on narrow workspaces.
- Preserve sidebar row identity and update category counts only with download state changes.
- Serialize Speed Limiter updates after settings hydration and await durable persistence.
- Isolate the live-limit and settings-save commands in a small IPC handler.
- Keep Issue #42 open for follow-up runtime validation.
2026-09-25 22:10:44 +03:30
NimBold a1ca7a92fd fix(test): resolve FFmpeg fixture segments portably
- Run FFmpeg in the temporary workspace with relative media paths.\n- Keep HLS and DASH manifests beside their generated segments.
2026-09-25 20:25:41 +03:30
NimBold 7511bea00c test(engines): exercise FFmpeg media pipelines
- Generate an isolated audio/video fixture and verify split, merge, and decoding.\n- Package, read, remux, and decode HLS and DASH streams.\n- Run the smoke against each staged FFmpeg in the native CI matrix.
2026-09-25 20:09:52 +03:30
NimBold a16d32bb5b chore(deps): refresh packages and FFmpeg artifacts
- Update lucide-react, Vite, Vitest, and thiserror dependency locks.\n- Refresh Windows and Linux FFmpeg locks to verified upstream archives.\n- Keep transitive updates within supported dependency ranges.
2026-09-25 19:44:52 +03:30
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