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.**
- [](https://github.com/nimbold/Firelink/releases)
- [](#platforms)
- [](#platforms)
- [](#platforms)
+ [](https://github.com/nimbold/Firelink/releases)
+ [](#supported-platforms)
+ [](#supported-platforms)
+ [](#supported-platforms)
[](LICENSE)
[](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.
+
-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",