From d6b5d6a9448f64479af78247e399bc60890996f9 Mon Sep 17 00:00:00 2001 From: NimBold Date: Wed, 22 Jul 2026 16:49:39 +0330 Subject: [PATCH] chore(release): prepare Firelink 1.2.0 --- CHANGELOG.md | 38 +++++++---- Extensions/Browser | 2 +- README.md | 129 +++++++++++--------------------------- package-lock.json | 4 +- package.json | 2 +- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- 8 files changed, 71 insertions(+), 110 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08d47e4..f6a51c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,22 +5,36 @@ 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.1.2] - 2026-07-21 +## [1.2.0] - 2026-07-22 -This patch release hardens download lifecycle handling, localization, and packaged release checks. +This release makes everyday download management easier to organize, review, and trust across the desktop app and browser extension. -### New -- Add localized desktop UI coverage for Persian, Hebrew, Russian, Ukrainian, and Simplified Chinese. -- Add optional batch folders and safer reuse of unfinished downloads with matching filenames. +### New features -### Improved -- Make pause, resume, remove, redownload, queue, scheduler, and settings actions safer when operations overlap. -- Improve first-open navigation, RTL layout, browser-cookie recovery, and download metadata handling. -- Strengthen packaged engine, Windows portable, Linux package, and release-asset verification. +- **Localized desktop interface** for Persian, Hebrew, Russian, Ukrainian, and Simplified Chinese, including RTL layouts. These translations are currently produced with help from LLMs and need user review; please report corrections so they can improve. +- **Customizable download table** with selectable columns, drag-to-reorder controls, sorting, clearer size alignment, and better bulk actions. +- **Optional batch folders** for multi-link downloads, addressing [#27](https://github.com/nimbold/Firelink/issues/27). Firelink can suggest an editable folder name from the page title or common filename while keeping the existing category-based behavior as the default. +- **Remember the last Add-window directory**, with an opt-in setting so users remain in control of where it applies. +- **Per-download connection controls** for normal and media transfers, with the active aria2 connection count shown in the download table. +- **Latest Firelink Companion 2.0.6** in the `Extensions/Browser` submodule, including selected-link batch context and safer automatic capture recovery. -### Fixed -- Prevent stale or duplicate lifecycle work from deleting or resurrecting the wrong download. -- Keep missed completion events, localized state, and browser handoffs from leaving misleading UI state. +### Improvements + +- Make pause, resume, retry, remove, redownload, queue, scheduler, and settings actions safer when several operations overlap or background events arrive late. +- Reuse unfinished downloads when their filenames match, while reducing the chance of stale state creating duplicate or misleading rows. +- Improve first-open navigation, lazy page loading, table layout, drag interactions, sorting, and window-control placement. +- Improve RTL behavior while keeping the download table's physical file columns readable. +- Handle locked browser cookie databases more gracefully and keep browser metadata and authenticated captures on the correct path. +- Enforce startup consent before accessing saved credentials and make keychain-related startup behavior more predictable. +- Refresh dependencies and bundled engines, and strengthen checks for macOS, Windows portable, Linux packages, release assets, and release version identity. +- Refine localized wording, including Persian status labels. + +### Fixes + +- Prevent stale lifecycle work, duplicate terminal events, and overlapping controls from deleting, reviving, or leaving the wrong download in a misleading state. +- Keep missed completion events and connection-limit updates from leaving a finished or active download visually stuck. +- Bound backend connection counts so user-selected limits are respected instead of allowing overlapping settings to exceed them. +- Keep extension handoffs in the Add window and make selected-link batches retain their page context for folder suggestions. ## [1.1.1] - 2026-07-17 diff --git a/Extensions/Browser b/Extensions/Browser index 6bf5293..8a9a4c4 160000 --- a/Extensions/Browser +++ b/Extensions/Browser @@ -1 +1 @@ -Subproject commit 6bf52938c9692c14a0e69de507e9e5338529a6e6 +Subproject commit 8a9a4c4a6315441faa54fbffddaabfcd53f84b90 diff --git a/README.md b/README.md index d6efdb2..1b33c8e 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,14 @@ **A fast, focused desktop download manager for macOS, Windows, and Linux.** - [![Version](https://img.shields.io/badge/version-1.1.2-6f42c1?style=flat-square)](https://github.com/nimbold/Firelink/releases) - [![macOS](https://img.shields.io/badge/macOS-111111?style=flat-square&logo=apple&logoColor=white)](#platforms) - [![Windows](.github/badges/windows.svg)](#platforms) - [![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black)](#platforms) + [![Version](https://img.shields.io/badge/version-1.2.0-6f42c1?style=flat-square)](https://github.com/nimbold/Firelink/releases) + [![macOS](https://img.shields.io/badge/macOS-111111?style=flat-square&logo=apple&logoColor=white)](#supported-platforms) + [![Windows](.github/badges/windows.svg)](#supported-platforms) + [![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black)](#supported-platforms) [![License](https://img.shields.io/github/license/nimbold/Firelink?style=flat-square)](LICENSE) [![CI](https://img.shields.io/github/actions/workflow/status/nimbold/Firelink/ci.yml?branch=main&style=flat-square&label=CI)](https://github.com/nimbold/Firelink/actions/workflows/ci.yml) - [Features](#features) · [Install](#installation) · [Browser Extension](#browser-extension) · [Development](#development) · [Release Notes](CHANGELOG.md) + [Features](#features) · [Install](#installation) · [Browser Extension](#browser-extension) · [Development](#development) · [Changelog](CHANGELOG.md)
@@ -31,27 +31,25 @@ -## Why Firelink +## Overview -Firelink is a cross-platform desktop download manager for direct transfers, browser capture, media extraction, scheduling, and clear file placement. +Firelink manages direct downloads, browser captures, media extraction, playlists, scheduling, and file placement from one desktop app. It uses a Rust/Tauri backend with a React and TypeScript interface, and bundles the engines needed for its download and media workflows. -It combines a Rust/Tauri backend with a React and TypeScript interface. Bundled aria2, yt-dlp, FFmpeg, Deno, and SQLite support the download and media workflows. - -The current desktop release is **1.1.2**, paired with Firelink Companion **2.0.5**. - -This patch release hardens download lifecycle handling, localization, and packaged release checks. +The current desktop release is **1.2.0**, paired with [Firelink Companion 2.0.6](https://github.com/nimbold/Firelink-Extension/releases). The release focuses on a more dependable download table and queue, better browser handoffs, broader localization, and safer packaged builds. ## Features - **Segmented downloads** with aria2, retries, speed limits, and connection controls. - **Media downloads** with yt-dlp, FFmpeg, Deno, live progress, speed, and ETA. -- **Playlist downloads** for YouTube playlists with queueing and efficient large-list rendering. -- **Add window** for metadata, duplicates, location choices, captured links, clipboard-prefilled URLs, and live connection limits. -- **Persistent queues** with pause, resume, retry, redownload, sorting, multi-select, and bulk actions. -- **Scheduling** with start/stop windows, speed rules, and post-queue actions. -- **File organization** with categories, default folders, a collapsible Folders section, per-download overrides, and reveal/trash actions. -- **Browser handoff** through local pairing, signed requests, Add window review, replay protection, and server checks. +- **Playlist downloads** for YouTube playlists with queueing and efficient rendering for large lists. +- **Customizable download table** with selectable columns, sorting, drag-to-reorder, and bulk actions. +- **Add window** for metadata, duplicate handling, captured links, clipboard-prefilled URLs, save locations, and live connection limits. +- **Persistent queues** with pause, resume, retry, redownload, scheduling, and multi-select actions. +- **Optional batch folders** for grouping related multi-link downloads in a new, editable folder. +- **File organization** with categories, default folders, per-download overrides, and reveal/trash actions. +- **Browser handoff** through local pairing, signed requests, Add-window review, replay protection, and server checks. - **Desktop integration** with tray controls, notifications, sounds, sleep prevention, and secure credential storage. +- **Localization** for English, Simplified Chinese, Hebrew, Persian, Ukrainian, and Russian, with RTL support. Non-English translations are LLM-assisted and welcome user review. - **Diagnostics** with engine health checks, structured logs, and package verification. ## Installation @@ -62,24 +60,22 @@ Download desktop builds from [GitHub Releases](https://github.com/nimbold/Fireli | --- | --- | --- | | **macOS Apple silicon** | `.dmg` | Not notarized. If macOS blocks the first launch, approve Firelink in **System Settings -> Privacy & Security**. | | **Windows x64** | NSIS `.exe` installer | Unsigned. Windows SmartScreen may warn until code signing is added. | -| **Windows x64 portable** | `.zip` archive | Extract to a writable folder and launch `firelink.exe`. See the expandable notes below. | -| **Linux x64** | `.deb`, `.rpm`, or `.AppImage` | Use `.deb` for Debian-family systems, `.rpm` for Fedora/RPM-family systems, or AppImage as the self-contained package. AppImage may need executable permission. | +| **Windows x64 portable** | `.zip` archive | Extract to a writable folder and launch `firelink.exe`. See the notes below. | +| **Linux x64** | `.deb`, `.rpm`, or `.AppImage` | Choose the package for your distribution, or use AppImage as the self-contained option. | -Bundles include the required engines. Users do not need aria2, yt-dlp, FFmpeg, Deno, Python, Homebrew, or another package manager. - -The native packages use the distribution's normal desktop runtime dependencies. AppImage is self-contained but uses the normal per-user application-data locations. +All packages include aria2, yt-dlp, FFmpeg, Deno, and SQLite support. You do not need to install those engines separately.
Windows portable ZIP notes -The portable ZIP is an opt-in secondary distribution. Extract it to a writable folder and launch `firelink.exe`: +The portable ZIP is a secondary distribution. Extract it to a writable folder and launch `firelink.exe`: -- Keep the extracted folder writable; avoid `Program Files`, read-only media, and folders that block SQLite or WebView writes. -- Settings, queues, logs, and WebView data stay beside `firelink.exe` under `data/`. +- Keep it out of `Program Files`, read-only media, and folders that block SQLite or WebView writes. +- Settings, queues, logs, and WebView data stay beside the executable under `data/`. - Close Firelink before moving or copying the folder, and close the installed app before launching the portable copy. -- Credentials, browser cookies, and URL query/fragment data are not saved in portable queue records. Active downloads that depend on them must be added again after restart. +- Credentials, browser cookies, and URL query or fragment data are not saved in portable queue records. - Saved site passwords remain in the Windows credential store and are not copied into the archive. -- The folder contains the extension pairing credential, so treat it as sensitive and do not share it. +- The folder contains the extension pairing credential. Treat it as sensitive and do not share it. - Saved absolute download locations may need to be selected again after moving the folder to another drive. - The installer remains the supported path for `firelink://` browser launch registration. @@ -87,35 +83,25 @@ The portable ZIP is an opt-in secondary distribution. Extract it to a writable f ## Browser Extension +[Firelink Companion](https://github.com/nimbold/Firelink-Extension) connects browser downloads, links, and media pages to Firelink. Captured downloads always open Firelink's Add window so you can review them before starting or queuing them. + +It provides automatic capture for regular downloads, explicit **Fetch media** actions, link and selected-text context menus, Firefox and Chromium support, signed local requests, and a safe browser fallback when Firelink is unavailable. +

Install Firelink Companion from Firefox Add-ons    Read manual Chromium install instructions

-Firelink Companion connects browser links and downloads to the desktop app. +Install the extension, open Firelink, and pair it from **Settings -> Integrations**. Use the latest [Firelink Companion 2.0.6 release](https://github.com/nimbold/Firelink-Extension/releases) with Firelink 1.2.0. Chromium users can load `firelink-chromium.zip` by following the [manual installation instructions](https://github.com/nimbold/Firelink-Extension#manual-chromium-installation). -What it adds: - -- Automatic capture for regular browser downloads. -- Explicit Fetch media actions from the popup and page context menu. -- Context-menu actions for links and selected text. -- Firefox and Chromium support. -- Signed local requests using the token from **Settings -> Integrations**. -- Fallback to the browser download when Firelink is closed or rejects a handoff. -- Captured links always open Firelink's Add window before anything is added to the download list. - -Install the extension, open Firelink, then pair it from **Settings -> Integrations**. Firefox users can install it from Mozilla Add-ons. Chromium users can load `firelink-chromium.zip` from the [extension releases](https://github.com/nimbold/Firelink-Extension/releases) with the [manual Chromium instructions](https://github.com/nimbold/Firelink-Extension#manual-chromium-installation). - -Use the latest [Firelink Companion release](https://github.com/nimbold/Firelink-Extension/releases) with Firelink 1.1.2. The source is in the [Firelink-Extension repository](https://github.com/nimbold/Firelink-Extension), which this repo vendors as the `Extensions/Browser` submodule. - -## Platforms +## Supported Platforms | Target | Status | | --- | --- | -| **macOS arm64** | Supported. Native build, engine checks, launch smoke test, ad-hoc-signed DMG workflow. | -| **Windows x64** | Supported. Native build, engine checks, silent installer smoke test, NSIS installer. | -| **Linux x64** | Supported. Native build, bundled-engine checks, package/AppImage launch smoke tests, `.deb`, `.rpm`, and AppImage. | +| **macOS arm64** | Supported with a native build, bundled-engine checks, launch smoke test, and ad-hoc-signed DMG workflow. | +| **Windows x64** | Supported with a native build, engine checks, installer smoke test, NSIS installer, and portable ZIP. | +| **Linux x64** | Supported with native builds, bundled-engine checks, package/AppImage smoke tests, `.deb`, `.rpm`, and AppImage packages. | ## Development @@ -131,16 +117,10 @@ Clone the repository with its browser-extension submodule: ```sh git clone --recurse-submodules https://github.com/nimbold/Firelink.git cd Firelink -``` - -Install dependencies and launch the desktop app: - -```sh npm install -npm run tauri dev ``` -Run the core checks: +Launch the app with `npm run tauri dev`. Run the core checks with: ```sh node --test scripts/*.node-test.js @@ -150,49 +130,16 @@ cd src-tauri cargo test --all-targets ``` -Create a production bundle: - -```sh -npm run tauri build -``` - -macOS uses locked payloads in `src-tauri/binaries`. Provision Windows and Linux payloads from checksum-pinned archives: - -```sh -node scripts/provision-engines.js --target x86_64-pc-windows-msvc -node scripts/provision-engines.js --target x86_64-unknown-linux-gnu -``` - -Build staging includes only the current target. See `engines.lock.json`, `engine-sources.lock.json`, and [RELEASE.md](RELEASE.md). - -## Repository Structure - -```text -. -├── src/ React and TypeScript interface -├── src-tauri/ Rust backend, Tauri config, and native tests -├── scripts/ Engine provisioning, release, and smoke-test tooling -└── Extensions/Browser/ Firelink Companion submodule -``` +See [RELEASE.md](RELEASE.md) for engine provisioning, packaging, and release verification. ## Help and Project Status - Report bugs or request improvements in [GitHub Issues](https://github.com/nimbold/Firelink/issues). - Read [CHANGELOG.md](CHANGELOG.md) for release history. -- Review [RELEASE.md](RELEASE.md) for packaging policy and release verification. +- The project is actively maintained, but macOS builds are not notarized and Windows installers are not code-signed yet. -## Technology & Credits +## Technology and License -Firelink is made possible by these open-source projects: - -- **[Tauri 2](https://tauri.app/)** for the lightweight desktop runtime -- **[Rust](https://www.rust-lang.org/)** and **[Tokio](https://tokio.rs/)** for native application logic -- **[React](https://react.dev/)** and **[TypeScript](https://www.typescriptlang.org/)** for the interface -- **[Zustand](https://zustand-demo.pmnd.rs/)** for frontend state management -- **[SQLite](https://www.sqlite.org/)** for persistent local data -- **[aria2](https://aria2.github.io/)** for segmented downloading -- **[yt-dlp](https://github.com/yt-dlp/yt-dlp)**, **[FFmpeg](https://ffmpeg.org/)**, and **[Deno](https://deno.com/)** for media extraction and processing - -## License +Firelink is built with [Tauri 2](https://tauri.app/), [Rust](https://www.rust-lang.org/), [Tokio](https://tokio.rs/), [React](https://react.dev/), [TypeScript](https://www.typescriptlang.org/), [Zustand](https://zustand-demo.pmnd.rs/), [SQLite](https://www.sqlite.org/), [aria2](https://aria2.github.io/), [yt-dlp](https://github.com/yt-dlp/yt-dlp), [FFmpeg](https://ffmpeg.org/), and [Deno](https://deno.com/). Firelink is available under the [MIT License](LICENSE). diff --git a/package-lock.json b/package-lock.json index 6007576..ceb92ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "firelink", - "version": "1.1.2", + "version": "1.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "firelink", - "version": "1.1.2", + "version": "1.2.0", "license": "MIT", "dependencies": { "@formkit/auto-animate": "^0.10.0", diff --git a/package.json b/package.json index 3d5c851..48bf5ad 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "firelink", "private": true, - "version": "1.1.2", + "version": "1.2.0", "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 599516a..62e46cf 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1365,7 +1365,7 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "firelink" -version = "1.1.2" +version = "1.2.0" dependencies = [ "apple-native-keyring-store", "async-trait", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 0851649..4487402 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "firelink" -version = "1.1.2" +version = "1.2.0" 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 c8dc57e..41539e4 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.1.2", + "version": "1.2.0", "identifier": "com.nimbold.firelink", "build": { "beforeDevCommand": "node scripts/stage-engines.js && npm run dev",