From 3c8800805fe425905e524e765df7d337f176bffb Mon Sep 17 00:00:00 2001 From: NimBold Date: Tue, 8 Sep 2026 22:30:27 +0330 Subject: [PATCH] chore(release): prepare Firelink 1.4.2 --- CHANGELOG.md | 79 +++++++++++++-------------------- Extensions/Browser | 2 +- README.md | 6 +-- package-lock.json | 4 +- package.json | 2 +- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- src/components/SettingsView.tsx | 4 +- 9 files changed, 42 insertions(+), 61 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8119622..ff8d31a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,75 +5,56 @@ All notable changes to Firelink will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [1.4.1] - 2026-09-03 +## [1.4.2] - 2026-09-08 -This release resolves Windows WebView2 startup crashes and focus deadlocks, adds route-aware transfers and native asynchronous DNS resolution for TUN proxies, isolates engine staging workspaces, and prepares Firelink Companion 2.2.1 for Microsoft Edge Add-ons. - -### Fixes - -- Prevent Windows WebView2 startup crashes and focus recursion by deferring window activation, isolating AppData junctions, and gating renderer IPC behind post-load event ticks, addressing [#37](https://github.com/nimbold/Firelink/issues/37). -- Prevent Properties window deadlocks on Windows by serializing child WebViews and excluding custom caption rails from drag hit-testing, addressing [#37](https://github.com/nimbold/Firelink/issues/37). -- Restore immediate credential recovery for edited downloads without stale keychain password conflicts. -- Implement route-aware transfers with native asynchronous DNS resolution (`firelink-native-dns-v1`) to prevent Aria2 loop freezes under TUN/VPN proxies (such as Shadowrocket or Sing-box), while preserving fallback for stock Aria2 daemons, addressing [#38](https://github.com/nimbold/Firelink/issues/38). -- Harden route-aware Torrent metadata resolution and magnet probe cleanup on active proxy routes. - -### Improvements - -- Isolate engine staging per build invocation with atomic workspaces (`FIRELINK_ENGINE_OUTPUT_ROOT`), avoiding shared staging locks. -- Update locked engine sources: BtbN FFmpeg autobuild to 2026-09-02, yt-dlp to 2026.08.19, Deno to 2.9.6, and Aria2 to 1.37.0. -- Stabilize cross-platform CI replacement fingerprints and Linux Torrent probe test harnesses. -- Advance Firelink Companion submodule to `2.2.1` with localization metadata and Edge Add-ons support, addressing [#39](https://github.com/nimbold/Firelink/issues/39). - -### Compatibility - -- Use [Firelink Companion `2.2.1`](https://github.com/nimbold/Firelink-Extension/releases/tag/v2.2.1), or the [latest Companion release](https://github.com/nimbold/Firelink-Extension/releases/latest), with Firelink `1.4.1`. - -## [1.4.0] - 2026-08-27 - -This release adds built-in Torrent downloads and a dedicated Properties window, while making regular downloads, browser handoffs, and cross-platform packages more dependable. +This is the stable follow-up to the 1.4.0 pre-release and includes all work since 1.3.1. It is a major release focused on built-in Torrents, clearer transfer controls, safer recovery, and better browser and VPN support. ### New features -- **Torrent downloads** +- **BitTorrent downloads and browser handoff** - Add `.torrent` files and magnet links from the Add window, file associations, `magnet:` links, and Firelink Companion. - - Resolve remote metadata before enqueueing and safely reuse validated Torrent metadata. - - Select files, prioritize pieces, preallocate or allocate as needed, verify existing data, remove unselected files safely, and add per-file web seeds. - - Manage trackers and exclusions, tracker timing, DHT/IPv6/PEX/LPD discovery, encryption, peer limits, network identity, and resource limits. - - View file progress, piece availability, connected and listed peers, seeders, upload totals and speed, and the info hash. - - Set upload limits, seed time or ratio, stop timeout, concurrent seed slots, and move Torrent data to a new location. - - Use a dedicated Torrents category with pause, resume, retry, redownload, and safe cleanup. + - Review remote metadata before queueing; choose files and priorities, allocate or preallocate data, verify existing files, remove unselected files safely, and add per-file web seeds. + - Configure trackers and exclusions, tracker timing, DHT/IPv6/PEX/LPD discovery, encryption, peer limits, network identity, and resource limits. + - See per-file and piece progress, availability, peers, seeders, info hash, and upload activity. + - Set upload and seeding limits, seed time or ratio, stop timeout, concurrent seed slots, and move Torrent data. + - Manage Torrents in a dedicated category with pause, resume, retry, redownload, and safe cleanup. + - Send browser magnets, direct `.torrent` links, and browser-local Torrent attachments to the Add window for review. - **Download and Torrent Properties windows** - Open a selected download in its own window with overview, transfer, and advanced controls. - Use Torrent tabs for file selection, trackers, peers, options, and live diagnostics. - - Edit supported settings while a transfer is active, including speed, connections, Torrent upload and peer limits, seeding, verification, allocation, and encryption. - - Inspect allocation, exact progress, resume failures, destinations, and current diagnostics; copy long URLs or paths and export magnet links where available. - - Keep the window size during the app session while the window follows the current theme and locale. + - Change supported transfer, Torrent, seeding, verification, allocation, and encryption settings while work is active. + - Inspect exact progress, allocation, destinations, resume failures, and diagnostics; copy long URLs or paths and export magnet links. + - Keep the Properties window size during the session while theme and locale follow the app. - **Adaptive mirror selection** - - Optionally use recent transfer performance to choose among multiple mirrors. Mirror statistics stay private on this device. + - Optionally choose among mirrors using recent transfer performance; history remains private on this device. - **Transfer and layout visibility** - - Show the file-allocation phase while a normal download prepares its destination. + - See when a normal download is allocating its destination. - Remember the main-window size and position and the Folders collapse preference between launches. ### Improvements -- Improve normal-download recovery across restarts, stale transfers, redirects, mirrors, connection-pool slowdowns, retries, and resume operations without saved credentials. -- Improve media recovery and resume messaging, preserve exact progress at the end of a transfer, and restore adaptive YouTube formats. This responds to the interrupted-YouTube-download report in [#36](https://github.com/nimbold/Firelink/issues/36). -- Make browser and deep-link inputs arrive in order, keep magnet clipboard handoffs usable, and make Add-window destination and metadata validation clearer. -- Improve the download table, sidebar, Add window, Settings, RTL keyboard navigation, and accessibility behavior at narrow window sizes. -- Add clear guidance for the macOS first-launch security warning and safe approval steps, responding to [#34](https://github.com/nimbold/Firelink/issues/34). -- Refresh bundled engines and dependencies, resume interrupted engine downloads safely, and strengthen package, release, and cross-platform verification. +- Make normal downloads recover more reliably across restarts, redirects, retries, resumed transfers, missing credentials, and connection slowdowns. +- Improve media recovery and resume behavior, preserve exact final progress, and restore adaptive YouTube formats after interruptions, addressing [#36](https://github.com/nimbold/Firelink/issues/36). +- Keep browser and deep-link inputs in order; make magnet clipboard handoffs and Add-window destination and metadata validation clearer. +- Make the download table, sidebar, Add window, Settings, RTL keyboard navigation, and accessibility behavior more usable at narrow window sizes. +- Document the macOS first-launch security warning and safe approval steps after the report in [#34](https://github.com/nimbold/Firelink/issues/34). +- Refresh bundled engines and dependencies, resume interrupted engine downloads safely, and strengthen cross-platform package and release verification. ### Fixes -- Retry affected transfers through the system resolver when a VPN or network tunnel leaves aria2 unable to resolve a host, addressing [#35](https://github.com/nimbold/Firelink/issues/35). -- Prevent late or duplicate lifecycle events from reviving, removing, or misreporting a download after a newer action has already won. -- Keep replacement, removal, and pre-admission cleanup from leaving stale queue entries, partial files, or misleading progress behind. -- Keep completed, paused, failed, and retrying downloads authoritative while allocation and progress updates arrive asynchronously. -- Make scheduled actions, speed limits, logs, persisted settings, and browser credentials safer when several changes happen close together. +- Fix the Windows 1.4.0 startup failure, focus recursion, and Properties-window deadlock reported in [#37](https://github.com/nimbold/Firelink/issues/37) and [#41](https://github.com/nimbold/Firelink/issues/41). +- Fix immediate download failures after the Add window showed **Ready** when a VPN or TUN's DNS path could not reach its servers; retry through the system resolver for affected transfers, addressing [#35](https://github.com/nimbold/Firelink/issues/35). +- Fix false **Unsafe URL** failures under V2RayN, Proxifier, and other TUN or proxy setups by letting hostname lookups follow the active network route while continuing to block literal local and private targets, addressing [#38](https://github.com/nimbold/Firelink/issues/38). +- Protect persisted downloads during startup and recover schema-v3 records instead of wiping or losing them. +- Prevent stale or duplicate pause, resume, retry, completion, and removal actions from reviving items, misreporting progress, or leaving queue ownership behind. +- Make replacements and cleanup safe when downloads are queued, retried, canceled, paused, completed, or removed, including multi-file assets. +- Prevent browser capture races from duplicating a download, resuming it too early, or applying cleanup to the wrong item. +- Fix network and Settings panel overlap plus Windows frame, shadow, focus, and cross-platform control issues. +- Restore edited-download credentials without stale keychain conflicts. ### Compatibility -- Use [Firelink Companion `2.2.0`](https://github.com/nimbold/Firelink-Extension/releases/tag/v2.2.0), or the [latest Companion release](https://github.com/nimbold/Firelink-Extension/releases/latest), with Firelink `1.4.0`. +- Use [Firelink Companion `2.2.2`](https://github.com/nimbold/Firelink-Extension/releases/tag/v2.2.2), or the [latest Companion release](https://github.com/nimbold/Firelink-Extension/releases/latest), with Firelink `1.4.2`. The Companion includes the shared Chromium package and localized Edge Add-ons submission material requested in [#39](https://github.com/nimbold/Firelink/issues/39); the public Edge listing still requires Microsoft's certification. ## [1.3.1] - 2026-07-30 diff --git a/Extensions/Browser b/Extensions/Browser index 84672ab..f20954f 160000 --- a/Extensions/Browser +++ b/Extensions/Browser @@ -1 +1 @@ -Subproject commit 84672ab6bceb669859382eea2c182b0656edd76c +Subproject commit f20954fe0af212bdbe357285087f0ed4ff7f99be diff --git a/README.md b/README.md index d1c177c..42286d5 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,9 @@ It uses a Rust and Tauri backend with a React and TypeScript interface. Required ## Status -Firelink `1.4.1` is the latest desktop release. +Firelink `1.4.2` is the latest desktop release. -Use [the latest Firelink Companion release, `2.2.1`](https://github.com/nimbold/Firelink-Extension/releases/tag/v2.2.1) with Firelink. The Companion is maintained in the [Firelink-Extension repository](https://github.com/nimbold/Firelink-Extension). +Use [the latest Firelink Companion release, `2.2.2`](https://github.com/nimbold/Firelink-Extension/releases/tag/v2.2.2) with Firelink. The Companion is maintained in the [Firelink-Extension repository](https://github.com/nimbold/Firelink-Extension). The project is actively maintained. See the [changelog](CHANGELOG.md) for release history and current work. @@ -99,7 +99,7 @@ Only use these steps for Firelink downloaded from the [official GitHub release p ## Browser integration -[Firelink Companion `2.2.1`](https://github.com/nimbold/Firelink-Extension/releases/tag/v2.2.1) connects browser downloads, links, media pages, magnets, and Torrent metadata to Firelink. Use the [latest Companion release](https://github.com/nimbold/Firelink-Extension/releases/latest) with the [latest Firelink release](https://github.com/nimbold/Firelink/releases/latest). +[Firelink Companion `2.2.2`](https://github.com/nimbold/Firelink-Extension/releases/tag/v2.2.2) connects browser downloads, links, media pages, magnets, and Torrent metadata to Firelink. Use the [latest Companion release](https://github.com/nimbold/Firelink-Extension/releases/latest) with the [latest Firelink release](https://github.com/nimbold/Firelink/releases/latest). Captured links open Firelink's Add window for review before they are started or queued. diff --git a/package-lock.json b/package-lock.json index 80fa463..10da293 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "firelink", - "version": "1.4.1", + "version": "1.4.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "firelink", - "version": "1.4.1", + "version": "1.4.2", "license": "MIT", "dependencies": { "@fontsource-variable/inter": "^5.3.0", diff --git a/package.json b/package.json index d86b7ac..ec88f92 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "firelink", "private": true, - "version": "1.4.1", + "version": "1.4.2", "description": "A fast cross-platform desktop download manager powered by Rust, Tauri, React, aria2, and yt-dlp.", "license": "MIT", "homepage": "https://github.com/nimbold/Firelink", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 0aea1c7..99c1d9e 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1409,7 +1409,7 @@ checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d" [[package]] name = "firelink" -version = "1.4.1" +version = "1.4.2" dependencies = [ "apple-native-keyring-store", "async-trait", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 2e92bdb..f73183f 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "firelink" -version = "1.4.1" +version = "1.4.2" description = "A fast cross-platform desktop download manager powered by Rust and Tauri" authors = ["NimBold"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index ff2d9d9..455e9da 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Firelink", - "version": "1.4.1", + "version": "1.4.2", "identifier": "com.nimbold.firelink", "build": { "beforeDevCommand": "node scripts/stage-engines.js && npm run dev", diff --git a/src/components/SettingsView.tsx b/src/components/SettingsView.tsx index 848a284..7366336 100644 --- a/src/components/SettingsView.tsx +++ b/src/components/SettingsView.tsx @@ -1744,7 +1744,7 @@ runEngineChecks(false); value={settings.torrentPeerIdPrefix} label={t($ => $.settings.network.torrentPeerIdPrefix)} description={t($ => $.settings.network.torrentPeerIdPrefixDescription)} - placeholder="-FL-1-4-0-" + placeholder="-FL-1-4-2-" maxLength={20} onCommit={settings.setTorrentPeerIdPrefix} onError={showTorrentNetworkInputError} @@ -1754,7 +1754,7 @@ runEngineChecks(false); value={settings.torrentPeerAgent} label={t($ => $.settings.network.torrentPeerAgent)} description={t($ => $.settings.network.torrentPeerAgentDescription)} - placeholder="Firelink/1.4.0" + placeholder="Firelink/1.4.2" maxLength={128} onCommit={settings.setTorrentPeerAgent} onError={showTorrentNetworkInputError}