diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 2ae5b33..02312f3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -140,10 +140,17 @@ jobs:
needs: build
runs-on: ubuntu-22.04
steps:
+ - uses: actions/checkout@v7
- uses: actions/download-artifact@v8
with:
path: release-assets
merge-multiple: true
+ - name: Extract changelog release notes
+ shell: bash
+ run: |
+ VERSION="${GITHUB_REF_NAME#v}"
+ awk '/^## \['"$VERSION"'\]/{flag=1; next} /^## \[/{if(flag) exit} flag' CHANGELOG.md > release_notes.md
+ test -s release_notes.md
- name: Generate checksums
run: |
cd release-assets
@@ -151,4 +158,4 @@ jobs:
- uses: softprops/action-gh-release@v3
with:
files: release-assets/**
- generate_release_notes: true
+ body_path: release_notes.md
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 12fd9c7..c8ff89d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,19 +1,43 @@
# Changelog
-All notable changes to this project will be documented in this file.
+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).
-## [Unreleased]
+## [1.0.0] - 2026-07-04
-### Changed
-- Promote the Rust, Tauri, React, and TypeScript application to the repository root.
-- Archive the original SwiftUI implementation under `legacy/swift`.
-- Refresh project documentation, package metadata, CI, and the in-app About section for the current architecture and migration status.
+### Highlights
+- Firelink is now a cross-platform desktop download manager built with Rust, Tauri, React, and TypeScript.
+- macOS, Windows, and Linux release builds are prepared through native GitHub Actions runners.
+- The older macOS-only Swift app has been removed from the active product and replaced by the new desktop app.
-### Removed
-- Delete obsolete template assets, scratch files, duplicate icon exports, and unused backend helpers.
+### New
+- Add full browser-to-desktop integration through Firelink Companion, including signed local requests, desktop identity checks, and automatic-capture protection.
+- Add a complete Add window for links captured from the browser, pasted manually, or extracted from media pages.
+- Add segmented direct downloads, media downloads, queue controls, scheduling, speed limits, and duplicate handling.
+- Add persistent downloads, categories, save-location settings, site logins, and safe redownload behavior.
+- Add native tray controls, notifications, completion sounds, sleep prevention, file reveal/open/trash actions, and OS keychain support where available.
+- Add built-in diagnostics for media engines, app logs, packaged-engine validation, and release smoke checks.
+
+### Improved
+- Rework the main window, settings, logs, Add window, download list, toasts, context menus, and table interactions for the new desktop interface.
+- Improve media extraction with better YouTube metadata loading, format filtering, size estimates, output names, progress, retries, and cleanup.
+- Improve download reliability on rate-limited servers, servers with broken range support, interrupted app sessions, and queue-concurrency changes.
+- Improve extension captures so browser downloads are resumed unless Firelink confirms the handoff.
+- Improve cross-platform packaging by bundling target-specific aria2, yt-dlp, FFmpeg, and Deno payloads.
+- Improve privacy by avoiding startup keychain prompts, redacting secrets from local persistence, and narrowing when browser cookies are forwarded.
+
+### Fixed
+- Fix stuck queued/downloading/completed states, stale aria2 dispatches, queue shrink behavior, retry caps, scheduler actions, and post-queue system actions.
+- Fix many Windows, Linux, and macOS packaging issues, including hidden helper consoles, AppImage engine handling, installer validation, and smoke-test timing.
+- Fix media child-process cleanup so paused, canceled, failed, or removed downloads do not leave stray processes or partial files behind.
+- Fix UI hangs, overflow, sorting, selection, animation, and contrast issues across the main list, Add window, settings, and log viewer.
+- Fix security issues around local server authentication, request signing, replay protection, private IP metadata checks, path ownership, header sanitization, and command execution boundaries.
+
+### Notes
+- This is a major release from `0.7.3`. Older Firelink Companion builds are not compatible with every 1.0 capture path; update the extension together with the desktop app.
+- macOS builds are unsigned and not notarized. Windows builds are unsigned. See [RELEASE.md](RELEASE.md) for distribution details.
## [0.7.3] - 2026-06-11
diff --git a/Extensions/Firefox b/Extensions/Firefox
index 71d26ef..42b28fa 160000
--- a/Extensions/Firefox
+++ b/Extensions/Firefox
@@ -1 +1 @@
-Subproject commit 71d26efc34bd1858d73854856d18d9dfec3fc5da
+Subproject commit 42b28fa4f6352d3a412d2b3daa540512a08f1231
diff --git a/README.md b/README.md
index f9645c6..0816b4b 100644
--- a/README.md
+++ b/README.md
@@ -3,81 +3,93 @@
# Firelink
- **A fast, focused desktop download manager powered by Rust and Tauri.**
+ **A fast, focused desktop download manager for macOS, Windows, and Linux.**
- [](https://github.com/nimbold/Firelink/releases)
- [](#project-status)
- [](#project-status)
- [](#project-status)
+ [](https://github.com/nimbold/Firelink/releases)
+ [](#platforms)
+ [](#platforms)
+ [](#platforms)
[](https://tauri.app/)
[](https://www.rust-lang.org/)
+ [](https://react.dev/)
[](LICENSE)
[](https://github.com/nimbold/Firelink/actions/workflows/ci.yml)
- [Features](#features) · [Install](#installation) · [Development](#development) · [Project status](#project-status)
+ [Features](#features) · [Install](#installation) · [Browser Extension](#browser-extension) · [Development](#development) · [Release Notes](CHANGELOG.md)
-
+## Why Firelink
-Firelink brings segmented downloads, media extraction, scheduling, and browser integration into one native-feeling desktop application. The application is built with a Rust backend and a React/TypeScript interface, providing excellent cross-platform support.
+Firelink is built for people who want a real desktop download manager again: fast segmented transfers, browser capture, media extraction, scheduling, recovery, and clear control over where files land. Version 1.0.0 completes the move from the earlier macOS-only Swift app to a modern Rust/Tauri application with a React and TypeScript interface.
+
+The app keeps the heavy work native. Downloads are coordinated by a Rust backend, accelerated with aria2, enriched with yt-dlp and FFmpeg for media workflows, and persisted locally with SQLite so queues survive restarts and app updates.
## Features
-- **Fast transfers** with segmented downloading powered by aria2
-- **Media downloads** through yt-dlp, FFmpeg, and Deno
-- **Persistent queues** with configurable concurrency and speed limits
-- **Download scheduling** with optional post-queue system actions
-- **Pause, resume, retry, and duplicate-file handling**
-- **Smart organization** with categories and configurable destinations
-- **Browser integration** through the Firelink Companion extension
-- **Secure local handoff** using authenticated extension pairing
-- **System integration** including tray controls, notifications, and sleep prevention
-- **Built-in update checks** backed by GitHub Releases
+- **Fast segmented downloads** powered by aria2 with configurable connections, retries, and speed limits.
+- **Media extraction** with yt-dlp, FFmpeg, and Deno for video/audio links and richer format selection.
+- **A real Add window** for manual, extension-captured, and media downloads, including metadata, duplicate handling, and save-location choices before downloads start.
+- **Persistent queue management** with safe concurrency limits, pause/resume, retry, redownload, sorting, multi-select, and bulk controls.
+- **Download scheduling** with start/stop windows, speed-limiter tools, and optional post-queue actions.
+- **Smart organization** through categories, default folders, per-download overrides, and open/reveal/trash actions.
+- **Private browser handoff** through authenticated local pairing with replay protection and desktop-server proof checks.
+- **Native desktop integration** including tray controls, notifications, completion sounds, sleep prevention, and OS keychain support where available.
+- **Diagnostics built in** with engine health checks, structured logs, and packaged-engine verification.
## Installation
-> [!IMPORTANT]
-> The cross-platform rust implementation is completing release packaging for macOS, Windows, and Linux. The current `v0.7.3` macOS asset on GitHub Releases belongs to the archived SwiftUI implementation.
+Download the latest desktop build from [GitHub Releases](https://github.com/nimbold/Firelink/releases).
-For now, run the maintained application from source using the development instructions below. New packaged builds will be published through [GitHub Releases](https://github.com/nimbold/Firelink/releases) once the packaging CI workflow is fully ready.
+| Platform | Package | Notes |
+| --- | --- | --- |
+| **macOS Apple silicon** | `.dmg` | Unsigned and not notarized. Open through Finder or approve once in **System Settings -> Privacy & Security**. |
+| **Windows x64** | NSIS `.exe` installer | Unsigned. Windows SmartScreen may warn until code signing is added. |
+| **Linux x64** | `.AppImage` | Make executable before launching if your desktop environment does not do that automatically. |
-Production bundles include target-specific media engines, so packaged releases do not require separate aria2, yt-dlp, FFmpeg, Deno, Python, or package-manager installations.
+Production bundles include the required media engines for the target platform. Users do not need to install aria2, yt-dlp, FFmpeg, Deno, Python, Homebrew, or a package manager for normal app usage.
-macOS builds are distributed without Apple code signing or notarization. Users must approve the downloaded app through Finder or **System Settings → Privacy & Security**. Firelink does not claim Gatekeeper trust.
+## Browser Extension
-## 🧩 Browser Extension
+
+

+
-[](https://addons.mozilla.org/en-US/firefox/addon/firelink-companion/)
+Firelink Companion connects your browser to the desktop app so links and browser downloads can open in Firelink instead of disappearing into the browser's default download shelf.
-Install the companion extension to send browser downloads directly to Firelink. Pair the extension from **Settings → Integrations** using the generated local token.
+What it adds:
-## Project Status
+- **Automatic capture** for normal browser downloads, while still routing every captured link through Firelink's Add window.
+- **Context-menu actions** for "Download with Firelink" and selected links.
+- **Signed local requests** using the pairing token from **Settings -> Integrations**.
+- **Server identity checks** so the extension only trusts the real local Firelink app.
+- **Offline-safe behavior** that resumes browser downloads when Firelink is closed or rejects a handoff.
+- **Protocol-aware compatibility** so older desktop builds are rejected before automatic capture can cancel a browser download.
-The cross-platform audit has been successfully completed. Firelink implements robust OS-specific behaviors to ensure native integration and stability across all platforms.
+Install the extension, open Firelink, then pair it from **Settings -> Integrations**. The Firefox add-on is maintained in the [Firelink-Extension](https://github.com/nimbold/Firelink-Extension) repository and is also vendored here as the `Extensions/Firefox` submodule.
+
+## Platforms
| Target | Status |
| --- | --- |
-| **macOS arm64** | Fully supported. Automated build, engine validation, and unsigned DMG packaging complete. |
-| **Windows x64** | Fully supported. Native CI and NSIS packaging configured. |
-| **Linux x64** | Fully supported. Native CI and AppImage packaging configured. |
-
-See the [changelog](CHANGELOG.md) for release history and recent work.
+| **macOS arm64** | Supported. Automated native build, engine validation, packaged launch smoke test, and unsigned DMG packaging. |
+| **Windows x64** | Supported. Native GitHub Actions build, engine validation, silent installer smoke test, and NSIS packaging. |
+| **Linux x64** | Supported. Native GitHub Actions build, engine validation, AppImage repackaging, and xvfb launch smoke test. |
## Development
@@ -102,9 +114,11 @@ npm install
npm run tauri dev
```
-Run the frontend build and backend tests:
+Run the core checks:
```sh
+node --test scripts/*.node-test.js
+npm test -- --run
npm run build
cd src-tauri
cargo test --all-targets
@@ -130,21 +144,28 @@ Build staging includes only the current target. See `engines.lock.json`, `engine
```text
.
├── src/ React and TypeScript interface
-├── src-tauri/ Rust backend and Tauri configuration
+├── src-tauri/ Rust backend, Tauri config, and native tests
+├── scripts/ Engine provisioning, release, and smoke-test tooling
└── Extensions/Firefox/ Firelink Companion submodule
```
+## 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.
+
## Technology & Credits
-Firelink is made possible by these incredible open-source projects:
+Firelink is made possible by these open-source projects:
-- **[Tauri 2](https://tauri.app/)** for the lightweight, secure desktop runtime
-- **[Rust](https://www.rust-lang.org/)** and **[Tokio](https://tokio.rs/)** for high-performance native application logic
-- **[React](https://react.dev/)** and **[TypeScript](https://www.typescriptlang.org/)** for the responsive user interface
-- **[Zustand](https://zustand-demo.pmnd.rs/)** for simplified frontend state management
-- **[SQLite](https://www.sqlite.org/)** for reliable, persistent application data
-- **[aria2](https://aria2.github.io/)** for blazing fast segmented downloading
-- **[yt-dlp](https://github.com/yt-dlp/yt-dlp)**, **[FFmpeg](https://ffmpeg.org/)**, and **[Deno](https://deno.com/)** for unmatched media extraction and processing capabilities
+- **[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
diff --git a/package-lock.json b/package-lock.json
index ce8192d..4b66aff 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "firelink",
- "version": "0.7.3",
+ "version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "firelink",
- "version": "0.7.3",
+ "version": "1.0.0",
"license": "MIT",
"dependencies": {
"@formkit/auto-animate": "^0.9.0",
diff --git a/package.json b/package.json
index caf0e65..4c0c555 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
{
"name": "firelink",
"private": true,
- "version": "0.7.3",
- "description": "A fast desktop download manager powered by Rust, Tauri, React, and TypeScript.",
+ "version": "1.0.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",
"repository": {
@@ -20,6 +20,7 @@
"typescript",
"aria2",
"yt-dlp",
+ "ffmpeg",
"desktop"
],
"engines": {
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index 02ae434..b0517b6 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -1310,7 +1310,7 @@ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
[[package]]
name = "firelink"
-version = "0.7.3"
+version = "1.0.0"
dependencies = [
"async-trait",
"axum",
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index 73229d0..32b07d5 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -1,13 +1,13 @@
[package]
name = "firelink"
-version = "0.7.3"
-description = "A fast desktop download manager powered by Rust and Tauri"
+version = "1.0.0"
+description = "A fast cross-platform desktop download manager powered by Rust and Tauri"
authors = ["NimBold"]
edition = "2021"
license = "MIT"
repository = "https://github.com/nimbold/Firelink"
homepage = "https://github.com/nimbold/Firelink"
-keywords = ["download-manager", "tauri", "aria2", "yt-dlp"]
+keywords = ["download-manager", "tauri", "aria2", "yt-dlp", "ffmpeg"]
categories = ["network-programming"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index 637f2b8..86d7295 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": "0.7.3",
+ "version": "1.0.0",
"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 3f3d5d3..beeaf70 100644
--- a/src/components/SettingsView.tsx
+++ b/src/components/SettingsView.tsx
@@ -269,7 +269,7 @@ const [engineStatus, setEngineStatus] = useState(null
const [expandedEngine, setExpandedEngine] = useState(null);
const [isRecheckingEngines, setIsRecheckingEngines] = useState(false);
const engineRunId = useRef(0);
-const [appVersion, setAppVersion] = useState('0.7.3');
+const [appVersion, setAppVersion] = useState('1.0.0');
const [extensionServerPort, setExtensionServerPort] = useState(null);
// Local state for adding site login