refactor(repo): promote tauri app to repository root
@@ -0,0 +1,37 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
desktop:
|
||||||
|
name: Desktop checks
|
||||||
|
runs-on: macos-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 22
|
||||||
|
cache: npm
|
||||||
|
|
||||||
|
- name: Install frontend dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Build frontend
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Test Rust backend
|
||||||
|
working-directory: src-tauri
|
||||||
|
run: cargo test --all-targets
|
||||||
@@ -1,14 +1,46 @@
|
|||||||
|
# OS and editor files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.build/
|
.idea/
|
||||||
build/
|
|
||||||
dist/
|
|
||||||
*.dmg
|
|
||||||
DerivedData/
|
|
||||||
.vscode/
|
.vscode/
|
||||||
|
*.suo
|
||||||
|
*.sw?
|
||||||
*.xcuserdata/
|
*.xcuserdata/
|
||||||
*.xcuserstate
|
*.xcuserstate
|
||||||
|
|
||||||
# Local secrets and exported signing keys
|
# Frontend output and logs
|
||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
dist-ssr/
|
||||||
|
logs/
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
*.local
|
||||||
|
|
||||||
|
# Rust and Tauri output
|
||||||
|
target/
|
||||||
|
src-tauri/target/
|
||||||
|
src-tauri/gen/
|
||||||
|
|
||||||
|
# Locally provisioned native engines
|
||||||
|
src-tauri/binaries/aria2c
|
||||||
|
src-tauri/binaries/deno
|
||||||
|
src-tauri/binaries/ffmpeg
|
||||||
|
src-tauri/binaries/yt-dlp
|
||||||
|
src-tauri/binaries/_internal/certifi/cacert.pem
|
||||||
|
|
||||||
|
# Packaged artifacts
|
||||||
|
build/
|
||||||
|
*.dmg
|
||||||
|
*.AppImage
|
||||||
|
*.deb
|
||||||
|
*.msi
|
||||||
|
*.exe
|
||||||
|
|
||||||
|
# Local secrets and signing material
|
||||||
.env
|
.env
|
||||||
.env.*
|
.env.*
|
||||||
*.key
|
*.key
|
||||||
@@ -22,15 +54,17 @@ sparkle_private_key*
|
|||||||
SparklePrivateKey*
|
SparklePrivateKey*
|
||||||
private-key*
|
private-key*
|
||||||
private_key*
|
private_key*
|
||||||
yt-dlp
|
|
||||||
deno
|
# Legacy Swift build output and downloaded engines
|
||||||
ffmpeg
|
legacy/swift/.build/
|
||||||
aria2c
|
legacy/swift/DerivedData/
|
||||||
Sources/Firelink/*-version.txt
|
legacy/swift/Sources/Firelink/*-version.txt
|
||||||
Sources/Firelink/_internal/
|
legacy/swift/Sources/Firelink/yt-dlp
|
||||||
Sources/Firelink/aria2-libs/
|
legacy/swift/Sources/Firelink/deno
|
||||||
Sources/Firelink/aria2-licenses/
|
legacy/swift/Sources/Firelink/ffmpeg
|
||||||
Sources/Firelink/aria2-cacert.pem
|
legacy/swift/Sources/Firelink/aria2c
|
||||||
!Sources/Firelink/_internal/
|
legacy/swift/Sources/Firelink/_internal/*
|
||||||
Sources/Firelink/_internal/*
|
legacy/swift/Sources/Firelink/aria2-libs/
|
||||||
!Sources/Firelink/_internal/.gitkeep
|
legacy/swift/Sources/Firelink/aria2-licenses/
|
||||||
|
legacy/swift/Sources/Firelink/aria2-cacert.pem
|
||||||
|
!legacy/swift/Sources/Firelink/_internal/.gitkeep
|
||||||
|
|||||||
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
- Delete obsolete template assets, scratch files, duplicate icon exports, and unused backend helpers.
|
||||||
|
|
||||||
## [0.7.3] - 2026-06-11
|
## [0.7.3] - 2026-06-11
|
||||||
|
|
||||||
### New Features & Improvements
|
### New Features & Improvements
|
||||||
|
|||||||
@@ -1,110 +1,135 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<img src="Resources/AppIcon.png" alt="Firelink Icon" width="128" height="128" />
|
<img src="src/assets/app-icon.png" alt="Firelink" width="112" height="112" />
|
||||||
<h1>Firelink</h1>
|
|
||||||
<p><strong>The modern, blazing-fast download manager built natively for Apple Silicon macOS.</strong></p>
|
|
||||||
|
|
||||||
<a href="https://swift.org"><img src="https://img.shields.io/badge/Swift-6.0-orange?logo=swift&logoColor=white" alt="Swift Version" /></a>
|
# Firelink
|
||||||
<a href="https://apple.com"><img src="https://img.shields.io/badge/macOS-14.0%2B-blue?logo=apple&logoColor=white" alt="Platform Support" /></a>
|
|
||||||
<a href="https://aria2.github.io/"><img src="https://img.shields.io/badge/Engine-aria2c-red?logo=terminal&logoColor=white" alt="Engine" /></a>
|
**A fast, focused desktop download manager powered by Rust and Tauri.**
|
||||||
<a href="https://github.com/yt-dlp/yt-dlp"><img src="https://img.shields.io/badge/Engine-yt--dlp-red?logo=youtube&logoColor=white" alt="yt-dlp Engine" /></a>
|
|
||||||
<a href="https://ffmpeg.org/"><img src="https://img.shields.io/badge/Engine-ffmpeg-red?logo=ffmpeg&logoColor=white" alt="ffmpeg Engine" /></a>
|
[](https://github.com/nimbold/Firelink/releases)
|
||||||
<a href="https://deno.com/"><img src="https://img.shields.io/badge/Engine-deno-blue?logo=deno&logoColor=white" alt="Deno Engine" /></a>
|
[](#project-status)
|
||||||
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green" alt="License" /></a>
|
[](https://tauri.app/)
|
||||||
|
[](https://www.rust-lang.org/)
|
||||||
|
[](LICENSE)
|
||||||
|
[](https://github.com/nimbold/Firelink/actions/workflows/ci.yml)
|
||||||
|
|
||||||
|
[Features](#features) · [Install](#installation) · [Development](#development) · [Project status](#project-status)
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
---
|
Firelink brings segmented downloads, media extraction, scheduling, and browser
|
||||||
|
integration into one native-feeling desktop application. The current app uses a
|
||||||
|
Rust backend with a React and TypeScript interface, replacing the original
|
||||||
|
SwiftUI implementation.
|
||||||
|
|
||||||
**Firelink** reimagines macOS file downloading by wrapping legendary open-source engines (`aria2c`, `yt-dlp`, and `ffmpeg`) in a beautifully crafted, highly polished SwiftUI interface. Enjoy high-speed segmented downloads, native media extraction, seamless browser integration, and intelligent file organization without compromising on the aesthetics of your Mac.
|
## 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
|
||||||
|
|
||||||
## 📸 Screenshots
|
## Installation
|
||||||
|
|
||||||
<div align="center">
|
> [!IMPORTANT]
|
||||||
<img src="Resources/Screenshots/Dark/MainPage.png" alt="Firelink main window" width="32%" />
|
> The Rust and Tauri application is still completing release packaging. The
|
||||||
<img src="Resources/Screenshots/Dark/AddWindow.png" alt="Add downloads window" width="32%" />
|
> current `v0.7.3` macOS asset on GitHub Releases belongs to the archived SwiftUI
|
||||||
<img src="Resources/Screenshots/Dark/Settings.png" alt="Settings" width="32%" />
|
> implementation.
|
||||||
<br/>
|
|
||||||
<sub>A premium native experience, from batch linking to advanced settings.</sub>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<details>
|
For now, run the maintained application from source using the development
|
||||||
<summary><b>Light Theme Screenshots</b></summary>
|
instructions below. New packaged builds will be published through
|
||||||
<br/>
|
[GitHub Releases](https://github.com/nimbold/Firelink/releases) once the
|
||||||
|
migration is complete.
|
||||||
|
|
||||||
<div align="center">
|
Firelink is currently developed and tested on macOS. Production bundles include
|
||||||
<img src="Resources/Screenshots/Light/MainPage.png" alt="Firelink main window light theme" width="32%" />
|
the media engines, so packaged releases will not require separate aria2, yt-dlp,
|
||||||
<img src="Resources/Screenshots/Light/AddWindow.png" alt="Add downloads window light theme" width="32%" />
|
FFmpeg, or Deno installations.
|
||||||
<img src="Resources/Screenshots/Light/Settings.png" alt="Settings light theme" width="32%" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</details>
|
### Browser Extension
|
||||||
|
|
||||||
---
|
Install [Firelink Companion for Firefox](https://addons.mozilla.org/en-US/firefox/addon/firelink-companion/)
|
||||||
|
to send browser downloads directly to Firelink. Pair the extension from
|
||||||
|
**Settings → Integrations** using the generated local token.
|
||||||
|
|
||||||
## ✨ Features
|
## Project Status
|
||||||
|
|
||||||
- ⚡ **Multi-Segmented Engine:** Ultra-fast parallel downloading powered by `aria2c` with configurable speed limits and a built-in download scheduler.
|
The migration from SwiftUI to Rust, Tauri, React, and TypeScript is in its final
|
||||||
- 🪄 **Media Downloader:** Instantly extract high-quality media (4K, 1080p, MP3) with smart cascading format pickers, powered by bundled `yt-dlp` and `ffmpeg`.
|
stage. The new application is the maintained implementation at the repository
|
||||||
- 🎨 **Premium Native UI:** A responsive, frosted-glass SwiftUI interface strictly adhering to Apple Human Interface Guidelines, featuring a visual chunk map and dynamic progress tracking.
|
root.
|
||||||
- 🌐 **Seamless Browser Integration:** Send downloads directly from your browser via the secure Firelink Companion extension.
|
|
||||||
- 🛡️ **Privacy & Security:** Zero-configuration setup with deferred Keychain integration and secure HMAC-SHA256 authenticated local API endpoints ensure your system remains strictly isolated and protected from malicious scripts.
|
|
||||||
- 🗂️ **Smart Organization:** Auto-categorizes incoming files and remembers your preferred download locations.
|
|
||||||
- 🔄 **Native Updater:** Built-in seamless GitHub release checking for lightweight and transparent app updates.
|
|
||||||
|
|
||||||
---
|
| Target | Status |
|
||||||
|
| --- | --- |
|
||||||
|
| macOS | Active development and automated testing |
|
||||||
|
| Windows | Core architecture prepared; packaging and validation pending |
|
||||||
|
| Linux | Core architecture prepared; packaging and validation pending |
|
||||||
|
| Legacy SwiftUI app | Archived in [`legacy/swift`](legacy/swift) |
|
||||||
|
|
||||||
## 🧩 Browser Integration
|
See the [changelog](CHANGELOG.md) for release history and recent work.
|
||||||
|
|
||||||
We are live! Send downloads directly from your browser to the Firelink app with zero friction.
|
## Development
|
||||||
|
|
||||||
<a href="https://addons.mozilla.org/en-US/firefox/addon/firelink-companion/"><img src="https://img.shields.io/badge/Install%20on%20Firefox-FF7139?logo=firefox-browser&logoColor=white&style=for-the-badge" alt="Install on Firefox" /></a>
|
### Requirements
|
||||||
|
|
||||||
*(Check out the [Firelink-Extension source code](https://github.com/nimbold/Firelink-Extension) to contribute or learn more.)*
|
- Node.js 22 or newer
|
||||||
|
- npm
|
||||||
|
- Rust and Cargo
|
||||||
|
- [Tauri 2 platform prerequisites](https://v2.tauri.app/start/prerequisites/)
|
||||||
|
|
||||||
---
|
Clone the repository with its browser-extension submodule:
|
||||||
|
|
||||||
## 🌍 Cross-Platform Evolution (Firelink Reborn)
|
```sh
|
||||||
|
git clone --recurse-submodules https://github.com/nimbold/Firelink.git
|
||||||
I'm currently rewriting Firelink from the ground up using **Tauri, React, and Rust** to bring our blazing-fast native experience to Windows and Linux, while maintaining our standard of excellence on macOS.
|
cd Firelink
|
||||||
|
|
||||||
### 🚀 Development Progress
|
|
||||||
- [x] **Core Engine Port:** `aria2c` and `yt-dlp` integration in Rust
|
|
||||||
- [x] **UI Foundation:** Pixel-perfect React + Tailwind interface
|
|
||||||
- [x] **Settings & State:** Fully wired frontend-to-backend communication
|
|
||||||
- [ ] **Cross-Platform Binaries:** Automated builds for Windows (`.exe`) and Linux (`.AppImage`)
|
|
||||||
- [ ] **Feature Parity:** Porting remaining media extraction and scheduler features
|
|
||||||
|
|
||||||
*Stay tuned as we prepare our first true cross-platform beta release!*
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🛠️ Quick Start
|
|
||||||
|
|
||||||
**OS Support:** macOS 14.0 or newer (Apple Silicon natively).
|
|
||||||
|
|
||||||
Run the application directly:
|
|
||||||
```bash
|
|
||||||
swift run Firelink
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Or build a production `.app` bundle:
|
Install dependencies and launch the desktop app:
|
||||||
```bash
|
|
||||||
make app && open build/Firelink.app
|
```sh
|
||||||
|
npm install
|
||||||
|
npm run tauri dev
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
Run the frontend build and backend tests:
|
||||||
|
|
||||||
## 🏆 Credits
|
```sh
|
||||||
|
npm run build
|
||||||
|
cd src-tauri
|
||||||
|
cargo test --all-targets
|
||||||
|
```
|
||||||
|
|
||||||
Firelink stands on the shoulders of giants. A massive thank you to the contributors of these phenomenal open-source projects:
|
Create a production bundle:
|
||||||
- **[aria2](https://aria2.github.io/)** - The legendary multi-protocol download utility driving our core engine.
|
|
||||||
- **[yt-dlp](https://github.com/yt-dlp/yt-dlp)** - The definitive command-line audio/video downloader.
|
|
||||||
- **[FFmpeg](https://ffmpeg.org/)** - The industry standard for media stream manipulation and merging.
|
|
||||||
- **[Deno](https://deno.com/)** - The secure runtime for JavaScript and TypeScript solving complex media extraction challenges.
|
|
||||||
|
|
||||||
---
|
```sh
|
||||||
|
npm run tauri build
|
||||||
|
```
|
||||||
|
|
||||||
## 📄 License
|
Native media executables and runtime files are expected in
|
||||||
|
`src-tauri/binaries` when running or packaging the application locally.
|
||||||
|
|
||||||
Firelink is released under the MIT License. See [LICENSE](LICENSE) for details.
|
## Repository Structure
|
||||||
|
|
||||||
|
```text
|
||||||
|
.
|
||||||
|
├── src/ React and TypeScript interface
|
||||||
|
├── src-tauri/ Rust backend and Tauri configuration
|
||||||
|
├── Extensions/Firefox/ Firelink Companion submodule
|
||||||
|
└── legacy/swift/ Archived SwiftUI application
|
||||||
|
```
|
||||||
|
|
||||||
|
## Technology
|
||||||
|
|
||||||
|
- [Tauri 2](https://tauri.app/) for the 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
|
||||||
|
- [SQLite](https://www.sqlite.org/) for persistent application data
|
||||||
|
- [aria2](https://aria2.github.io/), [yt-dlp](https://github.com/yt-dlp/yt-dlp),
|
||||||
|
[FFmpeg](https://ffmpeg.org/), and [Deno](https://deno.com/) for download and media processing
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Firelink is available under the [MIT License](LICENSE).
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
# Logs
|
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
pnpm-debug.log*
|
|
||||||
lerna-debug.log*
|
|
||||||
|
|
||||||
node_modules
|
|
||||||
dist
|
|
||||||
dist-ssr
|
|
||||||
*.local
|
|
||||||
|
|
||||||
# Editor directories and files
|
|
||||||
.vscode/*
|
|
||||||
!.vscode/extensions.json
|
|
||||||
.idea
|
|
||||||
.DS_Store
|
|
||||||
*.suo
|
|
||||||
*.ntvs*
|
|
||||||
*.njsproj
|
|
||||||
*.sln
|
|
||||||
*.sw?
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
# Tauri + React + Typescript
|
|
||||||
|
|
||||||
This template should help get you started developing with Tauri, React and Typescript in Vite.
|
|
||||||
|
|
||||||
## Recommended IDE Setup
|
|
||||||
|
|
||||||
- [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
|
|
||||||
|
Before Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 164 KiB |
@@ -1,6 +0,0 @@
|
|||||||
<svg width="206" height="231" viewBox="0 0 206 231" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path d="M143.143 84C143.143 96.1503 133.293 106 121.143 106C108.992 106 99.1426 96.1503 99.1426 84C99.1426 71.8497 108.992 62 121.143 62C133.293 62 143.143 71.8497 143.143 84Z" fill="#FFC131"/>
|
|
||||||
<ellipse cx="84.1426" cy="147" rx="22" ry="22" transform="rotate(180 84.1426 147)" fill="#24C8DB"/>
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M166.738 154.548C157.86 160.286 148.023 164.269 137.757 166.341C139.858 160.282 141 153.774 141 147C141 144.543 140.85 142.121 140.558 139.743C144.975 138.204 149.215 136.139 153.183 133.575C162.73 127.404 170.292 118.608 174.961 108.244C179.63 97.8797 181.207 86.3876 179.502 75.1487C177.798 63.9098 172.884 53.4021 165.352 44.8883C157.82 36.3744 147.99 30.2165 137.042 27.1546C126.095 24.0926 114.496 24.2568 103.64 27.6274C92.7839 30.998 83.1319 37.4317 75.8437 46.1553C74.9102 47.2727 74.0206 48.4216 73.176 49.5993C61.9292 50.8488 51.0363 54.0318 40.9629 58.9556C44.2417 48.4586 49.5653 38.6591 56.679 30.1442C67.0505 17.7298 80.7861 8.57426 96.2354 3.77762C111.685 -1.01901 128.19 -1.25267 143.769 3.10474C159.348 7.46215 173.337 16.2252 184.056 28.3411C194.775 40.457 201.767 55.4101 204.193 71.404C206.619 87.3978 204.374 103.752 197.73 118.501C191.086 133.25 180.324 145.767 166.738 154.548ZM41.9631 74.275L62.5557 76.8042C63.0459 72.813 63.9401 68.9018 65.2138 65.1274C57.0465 67.0016 49.2088 70.087 41.9631 74.275Z" fill="#FFC131"/>
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M38.4045 76.4519C47.3493 70.6709 57.2677 66.6712 67.6171 64.6132C65.2774 70.9669 64 77.8343 64 85.0001C64 87.1434 64.1143 89.26 64.3371 91.3442C60.0093 92.8732 55.8533 94.9092 51.9599 97.4256C42.4128 103.596 34.8505 112.392 30.1816 122.756C25.5126 133.12 23.9357 144.612 25.6403 155.851C27.3449 167.09 32.2584 177.598 39.7906 186.112C47.3227 194.626 57.153 200.784 68.1003 203.846C79.0476 206.907 90.6462 206.743 101.502 203.373C112.359 200.002 122.011 193.568 129.299 184.845C130.237 183.722 131.131 182.567 131.979 181.383C143.235 180.114 154.132 176.91 164.205 171.962C160.929 182.49 155.596 192.319 148.464 200.856C138.092 213.27 124.357 222.426 108.907 227.222C93.458 232.019 76.9524 232.253 61.3736 227.895C45.7948 223.538 31.8055 214.775 21.0867 202.659C10.3679 190.543 3.37557 175.59 0.949823 159.596C-1.47592 143.602 0.768139 127.248 7.41237 112.499C14.0566 97.7497 24.8183 85.2327 38.4045 76.4519ZM163.062 156.711L163.062 156.711C162.954 156.773 162.846 156.835 162.738 156.897C162.846 156.835 162.954 156.773 163.062 156.711Z" fill="#24C8DB"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.5 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,13 +0,0 @@
|
|||||||
use reqwest;
|
|
||||||
|
|
||||||
#[tokio::main]
|
|
||||||
async fn main() {
|
|
||||||
let url = "https://speed.hetzner.de/100MB.bin";
|
|
||||||
let client = reqwest::Client::builder()
|
|
||||||
.user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")
|
|
||||||
.build()
|
|
||||||
.unwrap();
|
|
||||||
let res = client.head(url).send().await.unwrap();
|
|
||||||
println!("Status: {}", res.status());
|
|
||||||
println!("Headers: {:?}", res.headers());
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 211 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.0 KiB |
@@ -1,2 +0,0 @@
|
|||||||
import { invoke } from '@tauri-apps/api/core';
|
|
||||||
invoke('start_media_download', { id: "test", url: "https://www.youtube.com/watch?v=1PBRhm5ZnjU", destination: "/tmp", filename: "test.mp4", formatSelector: null }).then(console.log).catch(console.error);
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
<link rel="icon" type="image/png" href="/src/assets/app-icon.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Firelink Download Manager</title>
|
<title>Firelink Download Manager</title>
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
@@ -0,0 +1,364 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project 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]
|
||||||
|
|
||||||
|
## [0.7.3] - 2026-06-11
|
||||||
|
|
||||||
|
### New Features & Improvements
|
||||||
|
- Add Deno to about credits and engines list.
|
||||||
|
- Enhance speed and ETA display logic during pause and drop.
|
||||||
|
- Accumulate track sizes to present a unified overall progress bar.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Resolve unknown speed flickering and ultra-wide high-resolution detection.
|
||||||
|
- Emit distinct status messages for individual tracks during download.
|
||||||
|
- Pad overall progress total for first track to prevent 100% snapback.
|
||||||
|
|
||||||
|
## [0.7.2] - 2026-06-11
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Prevented yt-dlp and JavaScript child processes from keeping metadata fetches or canceled downloads alive indefinitely.
|
||||||
|
- Replaced the repeatedly extracted one-file yt-dlp build with a stable prewarmed runtime cache.
|
||||||
|
- Bundled Deno so YouTube JavaScript challenges and formats above 720p do not depend on system-installed tools.
|
||||||
|
- Stopped masking empty-format extraction failures and removed brittle forced YouTube client selection.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Pinned and checksum-verified yt-dlp, Deno, FFmpeg, aria2, and aria2's libraries for matching local and GitHub Actions builds.
|
||||||
|
- Removed aria2's runtime dependency on Homebrew and configured its bundled CA certificate for direct and yt-dlp-delegated HTTPS downloads.
|
||||||
|
- Added bounded network retries and optional aria2c acceleration for large direct media downloads.
|
||||||
|
|
||||||
|
## [0.7.1] - 2026-06-11
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Increased the `yt-dlp` metadata extraction timeout to 120 seconds to properly handle YouTube's new JavaScript Proof-of-Work bot protection challenges.
|
||||||
|
- Improved the `AddDownloadsView` UI to display the exact underlying error message during extraction failures rather than a generic masked string.
|
||||||
|
|
||||||
|
### Security Fixes
|
||||||
|
- Addressed multiple vulnerabilities identified in the v0.7.0 security audit.
|
||||||
|
- Moved `yt-dlp` credential passing from CLI arguments to secure temporary configuration files to prevent process list leakage.
|
||||||
|
- Enforced strict `0o600` POSIX permissions on `aria2c` temporary configuration files to protect generated RPC secrets.
|
||||||
|
- Replaced the unauthenticated local connection protocol with a secure HMAC-SHA256 signature validation.
|
||||||
|
- Excluded sensitive properties like `rpcSecret` and `rpcPort` from `DownloadItem` serialization so they are never saved to disk in plaintext.
|
||||||
|
- Mitigated SSRF (Server-Side Request Forgery) by strictly validating metadata fetch requests against private IP addresses and loopback ranges.
|
||||||
|
- Prevented potential path traversal vulnerabilities by validating destination file URLs during duplicate resolution.
|
||||||
|
- Sanitized custom HTTP headers to prevent CR/LF injection vectors.
|
||||||
|
- Re-architected `aria2c` port-finding with POSIX sockets to eliminate a known race-condition window.
|
||||||
|
- Applied rate-limiting and text length bounds to the custom `firelink://` scheme to mitigate DoS and injection attempts.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fixed a metadata extraction timeout when downloading from YouTube by preventing child processes from holding process pipes open.
|
||||||
|
- Resolved an issue to correctly assign filenames for auto-captured downloads.
|
||||||
|
- Restored the UUID fallback for token generation to prevent silent failures if secure random byte generation fails.
|
||||||
|
- Hardened local API security by immediately rejecting requests if the expected pairing token is completely empty.
|
||||||
|
- Implemented a thread-safe cleanup mechanism for temporary directories to resolve a concurrency race condition during engine cancellation.
|
||||||
|
|
||||||
|
## [0.7.0] - 2026-06-11
|
||||||
|
|
||||||
|
### New Features & Improvements
|
||||||
|
- Complete UI modernization for the context menu, toolbar, download list, and sidebar to adhere strictly to Apple's Human Interface Guidelines (HIG).
|
||||||
|
- Overhaul of the Settings panes including Site Logins, Engine, About, Locations, and Downloads for a unified, cleaner look.
|
||||||
|
- Introduce an "Ask where to save" global configuration option for manual location picking per download.
|
||||||
|
- Add "Stop Time" option to the Scheduler and unit picker for the global Speed Limiter.
|
||||||
|
- Enhance the Integration pane with a visible step counter and an up-to-date status icon.
|
||||||
|
- Optimize `yt-dlp` execution for noticeably faster media extraction speeds.
|
||||||
|
- Defer Keychain access prompts and track executable modification dates for a more secure "priming" mechanism.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix issues regarding proxy environment propagation into media download processes.
|
||||||
|
- Resolve multiple critical bugs related to configuration storage and download stability.
|
||||||
|
- Address multiple underlying issues identified during comprehensive code reviews to improve overall resilience.
|
||||||
|
|
||||||
|
## [0.6.6] - 2026-06-10
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
- Add cascading media format pickers with inline loading states during metadata extraction.
|
||||||
|
- Redesign the Integration settings pane for a more modern experience.
|
||||||
|
- Overhaul the built-in update checker UI to integrate seamlessly into the settings.
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- Implement keychain permission priming to defer secure access until explicitly granted, preventing unexpected macOS prompts.
|
||||||
|
- Optimize core UI components to significantly improve rendering performance and overall app stability.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix layout and dynamic sizing bugs in the Add Downloads window.
|
||||||
|
- Fix formatting inconsistencies in media options selection.
|
||||||
|
- Fix toast notification rendering glitches.
|
||||||
|
|
||||||
|
## [0.6.5] - 2026-06-09
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix GitHub Actions build failure caused by an ambiguous bundle format when attempting to codesign `yt-dlp`'s embedded PyInstaller `Python.framework`.
|
||||||
|
|
||||||
|
## [0.6.4] - 2026-06-09
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
- Replace Sparkle with a lightweight native GitHub release checker for seamless and reliable updates.
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- Polish the browser extension pairing UI with a secure masked token field and improved styling.
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Remove stale references to the legacy static token from the Firelink Companion extension.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix an issue where the app failed to detect newer padded version numbers (e.g., `1.0` vs `1.0.0`).
|
||||||
|
- Fix missing macOS code signatures for `yt-dlp`'s embedded Python runtime, resolving potential Gatekeeper rejections.
|
||||||
|
|
||||||
|
## [0.6.3] - 2026-06-09
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- Upgrade pairing token generation to use a 32-byte cryptographically secure random sequence.
|
||||||
|
- Migrate pairing token storage from UserDefaults to KeychainCredentialStore for enhanced security.
|
||||||
|
- Redesign the "Connect Browser Extension" settings pane to be browser-agnostic with links to both Firefox and Chrome extension stores.
|
||||||
|
- Add a "Regenerate" button to instantly invalidate and recreate the pairing token.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix CORS preflight failures for the new `/ping` extension connection check by allowing `GET` methods in the local server.
|
||||||
|
|
||||||
|
## [0.6.2] - 2026-06-08
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fix a bug where confirming a duplicate resolution failed to close the Add Downloads window, misleading users into thinking the download didn't start.
|
||||||
|
- Fix keyboard shortcut collision that caused the main window to intercept Enter/Escape keys when the duplicate resolution sheet was open.
|
||||||
|
- Fix UI freeze when checking release notes for an update by parsing HTML asynchronously on a background thread.
|
||||||
|
- Improve update changelog formatting by converting release note markup to clean Markdown instead of stripping it into an unreadable block of text.
|
||||||
|
- Change the internal `Process xxxxx` status message to a cleaner `Starting...` message when queueing a new download.
|
||||||
|
- Fix `EXC_BREAKPOINT` crash on app launch in production builds by prioritizing `Bundle.main` over `Bundle.module` when accessing resources.
|
||||||
|
|
||||||
|
## [0.6.1] - 2026-06-08
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
- No new user-facing features in this patch release.
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
- Package bundled `yt-dlp` and `ffmpeg` executables into the macOS app bundle so media extraction works in release builds.
|
||||||
|
- Resolve bundled media engines from both app resources and SwiftPM resources to support packaged apps and local development builds.
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Fetch release-time media engine binaries in GitHub Actions instead of storing large binaries in git.
|
||||||
|
- Use the changelog entry for GitHub release page descriptions so published release notes match the source tree.
|
||||||
|
- Remove stale media add-on update language now that media engines are bundled with the app.
|
||||||
|
- Update Firelink Companion to `1.0.8`.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Replace the stale pinned FFmpeg download URL with Martin Riedl's latest macOS ARM64 release redirect.
|
||||||
|
- Fail release builds early when `yt-dlp` or `ffmpeg` cannot be fetched or made executable.
|
||||||
|
- Remove unused media inspector and media download entry-point code left behind by the removed engine update flow.
|
||||||
|
- Prevent Firelink Companion global capture from canceling browser downloads unless the native app confirms the local API handoff.
|
||||||
|
|
||||||
|
## [0.6.0] - 2026-06-08
|
||||||
|
|
||||||
|
### New features
|
||||||
|
- Enhance mixed media support and add duplicate resolution.
|
||||||
|
- Redesign settings panes and enhance update flows.
|
||||||
|
- Improve yt-dlp fetching speed and redesign media detection UI.
|
||||||
|
- Enhance media engine settings with cookie extraction and update checks.
|
||||||
|
- Modernize Integration settings UI and add official install button.
|
||||||
|
- Integrate yt-dlp to DownloadController and add global queue support.
|
||||||
|
- Implement smart progressive disclosure UI and media extraction engine.
|
||||||
|
- Implement gatekeeper architecture for on-demand media engine binaries.
|
||||||
|
- Inline update checks to avoid unnecessary modals.
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Add backward compatibility support for extension tokens.
|
||||||
|
- Update Firelink-Extension submodule to latest.
|
||||||
|
- Update app icons and icon generation scripts.
|
||||||
|
- Tone down icon gradient to 1.9x for modern subtle look.
|
||||||
|
- Increase gradient contrast for stronger lighting effect.
|
||||||
|
- Switch to lighter gradient (+1 to 0).
|
||||||
|
- Revert to plain mode without gradient.
|
||||||
|
- Apply premium gradient to the correct new icon and app icon.
|
||||||
|
- Remove redundant version string from up-to-date message.
|
||||||
|
- Update release metadata for the framework-embedded dmg.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Cap max height of download links text editor.
|
||||||
|
- Harden media download flow.
|
||||||
|
- Pass extractor arguments to yt-dlp download process.
|
||||||
|
- Restore single click selection by removing simultaneousGesture.
|
||||||
|
- Restore Download Properties routing and gestures.
|
||||||
|
- Pass UUID as String for download properties WindowGroup to prevent routing failures.
|
||||||
|
- Size column fallback and table row interactions.
|
||||||
|
- Media download UX and table row selection.
|
||||||
|
- Media downloads connections, progress parsing, file size, and selection highlight.
|
||||||
|
- Stabilize yt-dlp metadata and add-on updates.
|
||||||
|
- Block automatic metadata fetch for private IP addresses (security).
|
||||||
|
- Actually update extension icons with the 1.9x gradient icon.
|
||||||
|
- Correctly remove black padding and mask corners.
|
||||||
|
- Harden release metadata.
|
||||||
|
- Correct no-update handling to prevent false error messages.
|
||||||
|
|
||||||
|
## [0.5.7] - 2026-06-06
|
||||||
|
|
||||||
|
### New features
|
||||||
|
- Replaced the basic in-app update checker with an integrated release-checking flow.
|
||||||
|
- Added secure update metadata checks before presenting new releases in the app.
|
||||||
|
|
||||||
|
## [0.5.6] - 2026-06-05
|
||||||
|
|
||||||
|
### New features
|
||||||
|
- Added the official transparent GitHub icon to the Source Code link in the About page.
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Compacted the About settings pane to reduce vertical padding, placing the app identity and updates prominently at the top.
|
||||||
|
- Consolidated developer, credits, and legal links into a single unified footer section in the About pane.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fixed a build script bug that prevented bundled images (like the GitHub icon) from being copied into the final app bundle.
|
||||||
|
|
||||||
|
## [0.5.5] - 2026-06-05
|
||||||
|
|
||||||
|
### New features
|
||||||
|
- Added a compact Download Properties inspector with a persistent progress summary and redownload-aware transfer settings.
|
||||||
|
- Added authenticated metadata probing so batch previews can use custom or saved credentials.
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Updated Download Properties disclosure sections so their full title row opens and closes them.
|
||||||
|
- Compacted Add Downloads with a smaller summary strip, queue picker, and clearer per-file speed limit wording.
|
||||||
|
- Expanded download table hit areas so double-clicks register across empty cell space.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fixed active downloads that could remain stuck at 99% until manually stopped by detecting `aria2` completion through RPC.
|
||||||
|
- Fixed Chunk Map layout overlap in Download Properties.
|
||||||
|
- Fixed Download Properties controls that implied completed or active file identity edits would apply immediately.
|
||||||
|
|
||||||
|
## [0.5.4] - 2026-06-04
|
||||||
|
|
||||||
|
### New features
|
||||||
|
- Added direct double-click access to Download Properties for unfinished downloads.
|
||||||
|
- Added a `make verify` command for local build and Firefox extension manifest checks.
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Updated Firefox integration to probe the same local fallback ports used by the app.
|
||||||
|
- Updated global speed limiting so changes apply to active downloads through `aria2` RPC.
|
||||||
|
- Declared SwiftPM resources and added development fallbacks for app icons and Firefox extension copying.
|
||||||
|
- Narrowed saved site-login matching so plain host patterns match exact hosts unless a wildcard is used.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fixed browser handoff failures when the default local extension port is unavailable.
|
||||||
|
- Fixed dropped `Referer` headers from browser extension requests.
|
||||||
|
- Fixed scheduler configurations that could be enabled without any runnable queue target.
|
||||||
|
- Fixed unsafe file names from URLs, metadata responses, and manual property edits.
|
||||||
|
- Fixed a possible duplicate-open glitch when double-clicking unfinished downloads.
|
||||||
|
|
||||||
|
## [0.5.3] - 2026-06-04
|
||||||
|
|
||||||
|
### New features
|
||||||
|
- Added `ChunkMapView` to visualize active segmented downloads using `aria2` RPC with minimal performance overhead.
|
||||||
|
- Added seamless drag-and-drop support for URLs and text files in the main window and dock icon.
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Refactored all Settings panes to use standard macOS HIG `Form` and `.toolbar` layouts.
|
||||||
|
- Updated the "Add Downloads" dialog to use native macOS `.toolbar` with integrated cancel actions.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fixed a DNS rebinding vulnerability by rigorously validating the `Host` header within the local extension server.
|
||||||
|
- Fixed a potentially unbounded memory leak in the download console buffer by introducing a strict 512KB cap.
|
||||||
|
- Fixed an intermittent UI hang during the `aria2c` version check by fully decoupling the process execution into a detached background task.
|
||||||
|
|
||||||
|
## [0.5.2] - 2026-06-04
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fixed the hit-testing area on Settings tabs so the entire tab frame is clickable, not just the text/icon.
|
||||||
|
- Re-architected the Settings tab bar layout to perfectly distribute available horizontal space, ensuring symmetric right/left padding.
|
||||||
|
|
||||||
|
## [0.5.1] - 2026-06-04
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Added sleek SF Symbol icons to the Settings capsule tabs to improve visual scannability and modernize the interface.
|
||||||
|
|
||||||
|
## [0.5.0] - 2026-06-04
|
||||||
|
|
||||||
|
### New features
|
||||||
|
- Added a dedicated Speed Limiter UI to the main sidebar for instant global bandwidth throttling.
|
||||||
|
- Integrated Settings directly into the main application window instead of a separate macOS scene, paving the way for future Windows/Linux cross-platform parity.
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Modernized Settings with a sleek horizontal tab bar layout.
|
||||||
|
- Added persistent state retention across views (remembers the last visited settings tab and custom speed limits).
|
||||||
|
- Compacted the README file to be more concise and user-friendly.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fixed a critical memory crash (`EXC_BAD_ACCESS`) inside the Download Table caused by ephemeral string sorting during active downloads.
|
||||||
|
- Fixed sidebar layout glitches to prevent text overlap during scroll.
|
||||||
|
|
||||||
|
## [0.4.3] - 2026-06-03
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Refined About page UI and simplified the delete confirmation dialog.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Optimized disk writes and UI state updates to significantly reduce main thread CPU usage and SSD wear during concurrent downloads and table resizing.
|
||||||
|
|
||||||
|
## [0.4.2] - 2026-06-03
|
||||||
|
|
||||||
|
### Features added
|
||||||
|
- Added double-click to open completed files directly from the download table.
|
||||||
|
- Added redownload functionality for completed or failed items.
|
||||||
|
- Added 'Copy Address' context menu action.
|
||||||
|
- Added a monochrome template tray icon loaded explicitly with precise dimensions.
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Improved context menu organization and conditionally displayed actions based on download status.
|
||||||
|
|
||||||
|
## [0.4.1] - 2026-06-03
|
||||||
|
|
||||||
|
### Features added
|
||||||
|
- Added app theming engine with Look and Feel settings.
|
||||||
|
- Added Font Size, List Row Density, and Menu Bar Icon settings.
|
||||||
|
- Added tray icon and context menu for main window and queues.
|
||||||
|
- Added site logins integration directly into the Add Downloads window.
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Updated the paste hint to use a visual Command icon.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Resolved SwiftUI infinite layout freeze caused by MenuBarExtra binding.
|
||||||
|
- Fixed a bug with Light/System theme appearance.
|
||||||
|
- Fixed phantom state issues with Menu Bar Icon setting and conditionally applied theme backgrounds to preserve native macOS translucency.
|
||||||
|
|
||||||
|
## [0.4.0] - 2026-06-03
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Reorganized Settings sections so related download preferences sit together and app diagnostics live under App.
|
||||||
|
- Hardened the release workflow with explicit macOS 26 SDK checks, newer GitHub Actions, and app signature verification.
|
||||||
|
- Prefer the bundled `aria2c` binary inside release builds.
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
- Fixed queue-specific starts so one queue no longer starts unrelated queued downloads.
|
||||||
|
- Fixed scheduler completion handling so empty queues do not trigger post-download system actions.
|
||||||
|
- Fixed queue drag reordering when moving items downward.
|
||||||
|
- Fixed scheduler Automation permission prompting.
|
||||||
|
|
||||||
|
### Features added
|
||||||
|
- Added scheduler controls with explicit Automation permission UI.
|
||||||
|
- Added global and per-download speed limits.
|
||||||
|
- Added advanced transfer options for checksums, headers, cookies, and mirror URLs.
|
||||||
|
|
||||||
|
## [0.3.0] - 2026-06-02
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- **Zero-Config Setup:** Firelink now automatically bundles the `aria2c` engine and all of its dynamic library dependencies internally via `dylibbundler`. End-users no longer need to install Homebrew or `aria2c` manually!
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- **README Redesign:** Modernized the README with a clean layout, centered App Icon header, and updated roadmap.
|
||||||
|
- **CI Releases:** The GitHub Actions DMG release pipeline now automatically fetches and packages dependencies during builds.
|
||||||
|
|
||||||
|
## [0.2.1] - 2026-06-02
|
||||||
|
### Changed
|
||||||
|
- Fixed CI release runner specifying macOS 26.
|
||||||
|
|
||||||
|
## [0.2.0] - 2026-06-01
|
||||||
|
### Added
|
||||||
|
- **In-App Update Checker:** Built-in GitHub release checks inside the Settings About pane.
|
||||||
|
- **Queue Management:** Advanced drag-and-drop priority ordering and queue management controls.
|
||||||
|
- **Download Recovery:** Built-in download recovery and automated retry policies.
|
||||||
|
- Initial core download engine with `aria2c` support.
|
||||||
|
- Native macOS Settings pane.
|
||||||
|
- Smart file categorization and organization based on extension detection.
|
||||||
|
- Keychain-secured authentication integration.
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
> [!NOTE]
|
||||||
|
> This is the archived SwiftUI implementation. The maintained Rust, Tauri,
|
||||||
|
> React, and TypeScript application now lives at the repository root.
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="Resources/AppIcon.png" alt="Firelink Icon" width="128" height="128" />
|
||||||
|
<h1>Firelink</h1>
|
||||||
|
<p><strong>The modern, blazing-fast download manager built natively for Apple Silicon macOS.</strong></p>
|
||||||
|
|
||||||
|
<a href="https://swift.org"><img src="https://img.shields.io/badge/Swift-6.0-orange?logo=swift&logoColor=white" alt="Swift Version" /></a>
|
||||||
|
<a href="https://apple.com"><img src="https://img.shields.io/badge/macOS-14.0%2B-blue?logo=apple&logoColor=white" alt="Platform Support" /></a>
|
||||||
|
<a href="https://aria2.github.io/"><img src="https://img.shields.io/badge/Engine-aria2c-red?logo=terminal&logoColor=white" alt="Engine" /></a>
|
||||||
|
<a href="https://github.com/yt-dlp/yt-dlp"><img src="https://img.shields.io/badge/Engine-yt--dlp-red?logo=youtube&logoColor=white" alt="yt-dlp Engine" /></a>
|
||||||
|
<a href="https://ffmpeg.org/"><img src="https://img.shields.io/badge/Engine-ffmpeg-red?logo=ffmpeg&logoColor=white" alt="ffmpeg Engine" /></a>
|
||||||
|
<a href="https://deno.com/"><img src="https://img.shields.io/badge/Engine-deno-blue?logo=deno&logoColor=white" alt="Deno Engine" /></a>
|
||||||
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green" alt="License" /></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Firelink** reimagines macOS file downloading by wrapping legendary open-source engines (`aria2c`, `yt-dlp`, and `ffmpeg`) in a beautifully crafted, highly polished SwiftUI interface. Enjoy high-speed segmented downloads, native media extraction, seamless browser integration, and intelligent file organization without compromising on the aesthetics of your Mac.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📸 Screenshots
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="Resources/Screenshots/Dark/MainPage.png" alt="Firelink main window" width="32%" />
|
||||||
|
<img src="Resources/Screenshots/Dark/AddWindow.png" alt="Add downloads window" width="32%" />
|
||||||
|
<img src="Resources/Screenshots/Dark/Settings.png" alt="Settings" width="32%" />
|
||||||
|
<br/>
|
||||||
|
<sub>A premium native experience, from batch linking to advanced settings.</sub>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Light Theme Screenshots</b></summary>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="Resources/Screenshots/Light/MainPage.png" alt="Firelink main window light theme" width="32%" />
|
||||||
|
<img src="Resources/Screenshots/Light/AddWindow.png" alt="Add downloads window light theme" width="32%" />
|
||||||
|
<img src="Resources/Screenshots/Light/Settings.png" alt="Settings light theme" width="32%" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ Features
|
||||||
|
|
||||||
|
- ⚡ **Multi-Segmented Engine:** Ultra-fast parallel downloading powered by `aria2c` with configurable speed limits and a built-in download scheduler.
|
||||||
|
- 🪄 **Media Downloader:** Instantly extract high-quality media (4K, 1080p, MP3) with smart cascading format pickers, powered by bundled `yt-dlp` and `ffmpeg`.
|
||||||
|
- 🎨 **Premium Native UI:** A responsive, frosted-glass SwiftUI interface strictly adhering to Apple Human Interface Guidelines, featuring a visual chunk map and dynamic progress tracking.
|
||||||
|
- 🌐 **Seamless Browser Integration:** Send downloads directly from your browser via the secure Firelink Companion extension.
|
||||||
|
- 🛡️ **Privacy & Security:** Zero-configuration setup with deferred Keychain integration and secure HMAC-SHA256 authenticated local API endpoints ensure your system remains strictly isolated and protected from malicious scripts.
|
||||||
|
- 🗂️ **Smart Organization:** Auto-categorizes incoming files and remembers your preferred download locations.
|
||||||
|
- 🔄 **Native Updater:** Built-in seamless GitHub release checking for lightweight and transparent app updates.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧩 Browser Integration
|
||||||
|
|
||||||
|
We are live! Send downloads directly from your browser to the Firelink app with zero friction.
|
||||||
|
|
||||||
|
<a href="https://addons.mozilla.org/en-US/firefox/addon/firelink-companion/"><img src="https://img.shields.io/badge/Install%20on%20Firefox-FF7139?logo=firefox-browser&logoColor=white&style=for-the-badge" alt="Install on Firefox" /></a>
|
||||||
|
|
||||||
|
*(Check out the [Firelink-Extension source code](https://github.com/nimbold/Firelink-Extension) to contribute or learn more.)*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌍 Cross-Platform Evolution (Firelink Reborn)
|
||||||
|
|
||||||
|
I'm currently rewriting Firelink from the ground up using **Tauri, React, and Rust** to bring our blazing-fast native experience to Windows and Linux, while maintaining our standard of excellence on macOS.
|
||||||
|
|
||||||
|
### 🚀 Development Progress
|
||||||
|
- [x] **Core Engine Port:** `aria2c` and `yt-dlp` integration in Rust
|
||||||
|
- [x] **UI Foundation:** Pixel-perfect React + Tailwind interface
|
||||||
|
- [x] **Settings & State:** Fully wired frontend-to-backend communication
|
||||||
|
- [ ] **Cross-Platform Binaries:** Automated builds for Windows (`.exe`) and Linux (`.AppImage`)
|
||||||
|
- [ ] **Feature Parity:** Porting remaining media extraction and scheduler features
|
||||||
|
|
||||||
|
*Stay tuned as we prepare our first true cross-platform beta release!*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Quick Start
|
||||||
|
|
||||||
|
**OS Support:** macOS 14.0 or newer (Apple Silicon natively).
|
||||||
|
|
||||||
|
Run the application directly:
|
||||||
|
```bash
|
||||||
|
swift run Firelink
|
||||||
|
```
|
||||||
|
|
||||||
|
Or build a production `.app` bundle:
|
||||||
|
```bash
|
||||||
|
make app && open build/Firelink.app
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🏆 Credits
|
||||||
|
|
||||||
|
Firelink stands on the shoulders of giants. A massive thank you to the contributors of these phenomenal open-source projects:
|
||||||
|
- **[aria2](https://aria2.github.io/)** - The legendary multi-protocol download utility driving our core engine.
|
||||||
|
- **[yt-dlp](https://github.com/yt-dlp/yt-dlp)** - The definitive command-line audio/video downloader.
|
||||||
|
- **[FFmpeg](https://ffmpeg.org/)** - The industry standard for media stream manipulation and merging.
|
||||||
|
- **[Deno](https://deno.com/)** - The secure runtime for JavaScript and TypeScript solving complex media extraction challenges.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 License
|
||||||
|
|
||||||
|
Firelink is released under the MIT License. See [LICENSE](LICENSE) for details.
|
||||||
|
Before Width: | Height: | Size: 211 KiB After Width: | Height: | Size: 211 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 372 KiB After Width: | Height: | Size: 372 KiB |
|
Before Width: | Height: | Size: 510 KiB After Width: | Height: | Size: 510 KiB |
|
Before Width: | Height: | Size: 599 KiB After Width: | Height: | Size: 599 KiB |
|
Before Width: | Height: | Size: 367 KiB After Width: | Height: | Size: 367 KiB |
|
Before Width: | Height: | Size: 460 KiB After Width: | Height: | Size: 460 KiB |
|
Before Width: | Height: | Size: 552 KiB After Width: | Height: | Size: 552 KiB |
|
Before Width: | Height: | Size: 896 KiB After Width: | Height: | Size: 896 KiB |
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -1,7 +1,30 @@
|
|||||||
{
|
{
|
||||||
"name": "tauri-app",
|
"name": "firelink",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.7.3",
|
"version": "0.7.3",
|
||||||
|
"description": "A fast desktop download manager powered by Rust, Tauri, React, and TypeScript.",
|
||||||
|
"license": "MIT",
|
||||||
|
"homepage": "https://github.com/nimbold/Firelink",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/nimbold/Firelink.git"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/nimbold/Firelink/issues"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"download-manager",
|
||||||
|
"tauri",
|
||||||
|
"rust",
|
||||||
|
"react",
|
||||||
|
"typescript",
|
||||||
|
"aria2",
|
||||||
|
"yt-dlp",
|
||||||
|
"desktop"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=22"
|
||||||
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@@ -25,11 +48,11 @@
|
|||||||
"@tauri-apps/cli": "^2",
|
"@tauri-apps/cli": "^2",
|
||||||
"@types/react": "^19.1.8",
|
"@types/react": "^19.1.8",
|
||||||
"@types/react-dom": "^19.1.6",
|
"@types/react-dom": "^19.1.6",
|
||||||
"@vitejs/plugin-react": "^4.6.0",
|
"@vitejs/plugin-react": "^6.0.2",
|
||||||
"autoprefixer": "^10.5.0",
|
"autoprefixer": "^10.5.0",
|
||||||
"postcss": "^8.5.15",
|
"postcss": "^8.5.15",
|
||||||
"tailwindcss": "^4.3.0",
|
"tailwindcss": "^4.3.0",
|
||||||
"typescript": "~5.8.3",
|
"typescript": "~5.8.3",
|
||||||
"vite": "^7.0.4"
|
"vite": "^8.0.16"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1229,6 +1229,45 @@ version = "0.1.9"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
|
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "firelink"
|
||||||
|
version = "0.7.3"
|
||||||
|
dependencies = [
|
||||||
|
"axum",
|
||||||
|
"chrono",
|
||||||
|
"cocoa",
|
||||||
|
"futures-util",
|
||||||
|
"hmac",
|
||||||
|
"keepawake",
|
||||||
|
"keyring",
|
||||||
|
"objc",
|
||||||
|
"regex 1.12.4",
|
||||||
|
"reqwest 0.12.28",
|
||||||
|
"rusqlite",
|
||||||
|
"semver",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"sha2",
|
||||||
|
"sysinfo",
|
||||||
|
"sysproxy",
|
||||||
|
"system_shutdown",
|
||||||
|
"tauri",
|
||||||
|
"tauri-build",
|
||||||
|
"tauri-plugin-deep-link",
|
||||||
|
"tauri-plugin-dialog",
|
||||||
|
"tauri-plugin-notification",
|
||||||
|
"tauri-plugin-opener",
|
||||||
|
"tauri-plugin-single-instance",
|
||||||
|
"tempfile",
|
||||||
|
"thiserror 2.0.18",
|
||||||
|
"tokio",
|
||||||
|
"tokio-tungstenite",
|
||||||
|
"tower-http",
|
||||||
|
"ts-rs",
|
||||||
|
"url",
|
||||||
|
"uuid",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flate2"
|
name = "flate2"
|
||||||
version = "1.1.9"
|
version = "1.1.9"
|
||||||
@@ -4409,45 +4448,6 @@ dependencies = [
|
|||||||
"windows 0.61.3",
|
"windows 0.61.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tauri-app"
|
|
||||||
version = "0.7.3"
|
|
||||||
dependencies = [
|
|
||||||
"axum",
|
|
||||||
"chrono",
|
|
||||||
"cocoa",
|
|
||||||
"futures-util",
|
|
||||||
"hmac",
|
|
||||||
"keepawake",
|
|
||||||
"keyring",
|
|
||||||
"objc",
|
|
||||||
"regex 1.12.4",
|
|
||||||
"reqwest 0.12.28",
|
|
||||||
"rusqlite",
|
|
||||||
"semver",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"sha2",
|
|
||||||
"sysinfo",
|
|
||||||
"sysproxy",
|
|
||||||
"system_shutdown",
|
|
||||||
"tauri",
|
|
||||||
"tauri-build",
|
|
||||||
"tauri-plugin-deep-link",
|
|
||||||
"tauri-plugin-dialog",
|
|
||||||
"tauri-plugin-notification",
|
|
||||||
"tauri-plugin-opener",
|
|
||||||
"tauri-plugin-single-instance",
|
|
||||||
"tempfile",
|
|
||||||
"thiserror 2.0.18",
|
|
||||||
"tokio",
|
|
||||||
"tokio-tungstenite",
|
|
||||||
"tower-http",
|
|
||||||
"ts-rs",
|
|
||||||
"url",
|
|
||||||
"uuid",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tauri-build"
|
name = "tauri-build"
|
||||||
version = "2.6.2"
|
version = "2.6.2"
|
||||||
@@ -1,9 +1,14 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tauri-app"
|
name = "firelink"
|
||||||
version = "0.7.3"
|
version = "0.7.3"
|
||||||
description = "A native download manager for fast, organized, segmented transfers"
|
description = "A fast desktop download manager powered by Rust and Tauri"
|
||||||
authors = ["NimBold"]
|
authors = ["NimBold"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
license = "MIT"
|
||||||
|
repository = "https://github.com/nimbold/Firelink"
|
||||||
|
homepage = "https://github.com/nimbold/Firelink"
|
||||||
|
keywords = ["download-manager", "tauri", "aria2", "yt-dlp"]
|
||||||
|
categories = ["network-programming"]
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
@@ -11,7 +16,7 @@ edition = "2021"
|
|||||||
# The `_lib` suffix may seem redundant but it is necessary
|
# The `_lib` suffix may seem redundant but it is necessary
|
||||||
# to make the lib name unique and wouldn't conflict with the bin name.
|
# to make the lib name unique and wouldn't conflict with the bin name.
|
||||||
# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519
|
# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519
|
||||||
name = "tauri_app_lib"
|
name = "firelink_lib"
|
||||||
crate-type = ["staticlib", "cdylib", "rlib"]
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||