----
+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
-
-
-
-
-
- A premium native experience, from batch linking to advanced settings.
-
+> [!IMPORTANT]
+> The Rust and Tauri application is still completing release packaging. The
+> current `v0.7.3` macOS asset on GitHub Releases belongs to the archived SwiftUI
+> implementation.
-
-Light Theme Screenshots
-
+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
+migration is complete.
-
-
-
-
-
+Firelink is currently developed and tested on macOS. Production bundles include
+the media engines, so packaged releases will not require separate aria2, yt-dlp,
+FFmpeg, or Deno installations.
-
+### 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.
-- ๐ช **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.
+The migration from SwiftUI to Rust, Tauri, React, and TypeScript is in its final
+stage. The new application is the maintained implementation at the repository
+root.
----
+| 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
-
+### 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)
-
-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
+```sh
+git clone --recurse-submodules https://github.com/nimbold/Firelink.git
+cd Firelink
```
-Or build a production `.app` bundle:
-```bash
-make app && open build/Firelink.app
+Install dependencies and launch the desktop 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:
-- **[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.
+Create a production bundle:
----
+```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).
diff --git a/apps/desktop/.gitignore b/apps/desktop/.gitignore
deleted file mode 100644
index a547bf3..0000000
--- a/apps/desktop/.gitignore
+++ /dev/null
@@ -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?
diff --git a/apps/desktop/README.md b/apps/desktop/README.md
deleted file mode 100644
index 102e366..0000000
--- a/apps/desktop/README.md
+++ /dev/null
@@ -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)
diff --git a/apps/desktop/app-icon-padded.png b/apps/desktop/app-icon-padded.png
deleted file mode 100644
index 4d5d0c9..0000000
Binary files a/apps/desktop/app-icon-padded.png and /dev/null differ
diff --git a/apps/desktop/app-icon-small.png b/apps/desktop/app-icon-small.png
deleted file mode 100644
index e71efa0..0000000
Binary files a/apps/desktop/app-icon-small.png and /dev/null differ
diff --git a/apps/desktop/app-icon-transparent.png b/apps/desktop/app-icon-transparent.png
deleted file mode 100644
index d646ee6..0000000
Binary files a/apps/desktop/app-icon-transparent.png and /dev/null differ
diff --git a/apps/desktop/public/tauri.svg b/apps/desktop/public/tauri.svg
deleted file mode 100644
index 31b62c9..0000000
--- a/apps/desktop/public/tauri.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/apps/desktop/public/vite.svg b/apps/desktop/public/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/apps/desktop/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/desktop/src-tauri/src/fetch_test.rs b/apps/desktop/src-tauri/src/fetch_test.rs
deleted file mode 100644
index 60c38c4..0000000
--- a/apps/desktop/src-tauri/src/fetch_test.rs
+++ /dev/null
@@ -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());
-}
diff --git a/apps/desktop/src/assets/app-icon.png b/apps/desktop/src/assets/app-icon.png
deleted file mode 100644
index 872bbec..0000000
Binary files a/apps/desktop/src/assets/app-icon.png and /dev/null differ
diff --git a/apps/desktop/src/assets/react.svg b/apps/desktop/src/assets/react.svg
deleted file mode 100644
index 6c87de9..0000000
--- a/apps/desktop/src/assets/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/desktop/test_download.js b/apps/desktop/test_download.js
deleted file mode 100644
index ae37383..0000000
--- a/apps/desktop/test_download.js
+++ /dev/null
@@ -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);
diff --git a/apps/desktop/index.html b/index.html
similarity index 89%
rename from apps/desktop/index.html
rename to index.html
index c2c2a84..4cde6fc 100644
--- a/apps/desktop/index.html
+++ b/index.html
@@ -2,7 +2,7 @@
-
+
Firelink Download Manager
diff --git a/.github/workflows/release.yml b/legacy/swift/.github/workflows/release.yml
similarity index 100%
rename from .github/workflows/release.yml
rename to legacy/swift/.github/workflows/release.yml
diff --git a/legacy/swift/CHANGELOG.md b/legacy/swift/CHANGELOG.md
new file mode 100644
index 0000000..9221447
--- /dev/null
+++ b/legacy/swift/CHANGELOG.md
@@ -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.
diff --git a/Makefile b/legacy/swift/Makefile
similarity index 100%
rename from Makefile
rename to legacy/swift/Makefile
diff --git a/Package.swift b/legacy/swift/Package.swift
similarity index 100%
rename from Package.swift
rename to legacy/swift/Package.swift
diff --git a/legacy/swift/README.md b/legacy/swift/README.md
new file mode 100644
index 0000000..33440d6
--- /dev/null
+++ b/legacy/swift/README.md
@@ -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.
+
+
+
+
Firelink
+
The modern, blazing-fast download manager built natively for Apple Silicon macOS.
+
+
+
+
+
+
+
+
+
+
+---
+
+**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
+
+
+
+
+
+
+ A premium native experience, from batch linking to advanced settings.
+
+
+
+Light Theme Screenshots
+
+
+
+
+
+
+
+
+
+
+---
+
+## โจ 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.
+
+
+
+*(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.
diff --git a/Resources/AppIcon.icns b/legacy/swift/Resources/AppIcon.icns
similarity index 100%
rename from Resources/AppIcon.icns
rename to legacy/swift/Resources/AppIcon.icns
diff --git a/Resources/AppIcon.png b/legacy/swift/Resources/AppIcon.png
similarity index 100%
rename from Resources/AppIcon.png
rename to legacy/swift/Resources/AppIcon.png
diff --git a/Resources/GitHubTemplate.png b/legacy/swift/Resources/GitHubTemplate.png
similarity index 100%
rename from Resources/GitHubTemplate.png
rename to legacy/swift/Resources/GitHubTemplate.png
diff --git a/Resources/Screenshots/Dark/AddWindow.png b/legacy/swift/Resources/Screenshots/Dark/AddWindow.png
similarity index 100%
rename from Resources/Screenshots/Dark/AddWindow.png
rename to legacy/swift/Resources/Screenshots/Dark/AddWindow.png
diff --git a/Resources/Screenshots/Dark/MainPage.png b/legacy/swift/Resources/Screenshots/Dark/MainPage.png
similarity index 100%
rename from Resources/Screenshots/Dark/MainPage.png
rename to legacy/swift/Resources/Screenshots/Dark/MainPage.png
diff --git a/Resources/Screenshots/Dark/Settings.png b/legacy/swift/Resources/Screenshots/Dark/Settings.png
similarity index 100%
rename from Resources/Screenshots/Dark/Settings.png
rename to legacy/swift/Resources/Screenshots/Dark/Settings.png
diff --git a/Resources/Screenshots/Light/AddWindow.png b/legacy/swift/Resources/Screenshots/Light/AddWindow.png
similarity index 100%
rename from Resources/Screenshots/Light/AddWindow.png
rename to legacy/swift/Resources/Screenshots/Light/AddWindow.png
diff --git a/Resources/Screenshots/Light/MainPage.png b/legacy/swift/Resources/Screenshots/Light/MainPage.png
similarity index 100%
rename from Resources/Screenshots/Light/MainPage.png
rename to legacy/swift/Resources/Screenshots/Light/MainPage.png
diff --git a/Resources/Screenshots/Light/Settings.png b/legacy/swift/Resources/Screenshots/Light/Settings.png
similarity index 100%
rename from Resources/Screenshots/Light/Settings.png
rename to legacy/swift/Resources/Screenshots/Light/Settings.png
diff --git a/Resources/new_icon_source.png b/legacy/swift/Resources/new_icon_source.png
similarity index 100%
rename from Resources/new_icon_source.png
rename to legacy/swift/Resources/new_icon_source.png
diff --git a/Scripts/create_app_bundle.sh b/legacy/swift/Scripts/create_app_bundle.sh
similarity index 100%
rename from Scripts/create_app_bundle.sh
rename to legacy/swift/Scripts/create_app_bundle.sh
diff --git a/Scripts/create_dmg.sh b/legacy/swift/Scripts/create_dmg.sh
similarity index 100%
rename from Scripts/create_dmg.sh
rename to legacy/swift/Scripts/create_dmg.sh
diff --git a/Scripts/fetch_media_engines.sh b/legacy/swift/Scripts/fetch_media_engines.sh
similarity index 100%
rename from Scripts/fetch_media_engines.sh
rename to legacy/swift/Scripts/fetch_media_engines.sh
diff --git a/Scripts/verify.sh b/legacy/swift/Scripts/verify.sh
similarity index 100%
rename from Scripts/verify.sh
rename to legacy/swift/Scripts/verify.sh
diff --git a/Sources/Firelink/AddDownloadsView.swift b/legacy/swift/Sources/Firelink/AddDownloadsView.swift
similarity index 100%
rename from Sources/Firelink/AddDownloadsView.swift
rename to legacy/swift/Sources/Firelink/AddDownloadsView.swift
diff --git a/Sources/Firelink/AppSettings.swift b/legacy/swift/Sources/Firelink/AppSettings.swift
similarity index 100%
rename from Sources/Firelink/AppSettings.swift
rename to legacy/swift/Sources/Firelink/AppSettings.swift
diff --git a/Sources/Firelink/Aria2DownloadEngine.swift b/legacy/swift/Sources/Firelink/Aria2DownloadEngine.swift
similarity index 100%
rename from Sources/Firelink/Aria2DownloadEngine.swift
rename to legacy/swift/Sources/Firelink/Aria2DownloadEngine.swift
diff --git a/Sources/Firelink/Assets.xcassets/GitHub.imageset/Contents.json b/legacy/swift/Sources/Firelink/Assets.xcassets/GitHub.imageset/Contents.json
similarity index 100%
rename from Sources/Firelink/Assets.xcassets/GitHub.imageset/Contents.json
rename to legacy/swift/Sources/Firelink/Assets.xcassets/GitHub.imageset/Contents.json
diff --git a/Sources/Firelink/Assets.xcassets/GitHub.imageset/github-mark.png b/legacy/swift/Sources/Firelink/Assets.xcassets/GitHub.imageset/github-mark.png
similarity index 100%
rename from Sources/Firelink/Assets.xcassets/GitHub.imageset/github-mark.png
rename to legacy/swift/Sources/Firelink/Assets.xcassets/GitHub.imageset/github-mark.png
diff --git a/Sources/Firelink/Assets.xcassets/MenuBarIcon.imageset/Contents.json b/legacy/swift/Sources/Firelink/Assets.xcassets/MenuBarIcon.imageset/Contents.json
similarity index 100%
rename from Sources/Firelink/Assets.xcassets/MenuBarIcon.imageset/Contents.json
rename to legacy/swift/Sources/Firelink/Assets.xcassets/MenuBarIcon.imageset/Contents.json
diff --git a/Sources/Firelink/Assets.xcassets/MenuBarIcon.imageset/MenuBarIconTemplate.png b/legacy/swift/Sources/Firelink/Assets.xcassets/MenuBarIcon.imageset/MenuBarIconTemplate.png
similarity index 100%
rename from Sources/Firelink/Assets.xcassets/MenuBarIcon.imageset/MenuBarIconTemplate.png
rename to legacy/swift/Sources/Firelink/Assets.xcassets/MenuBarIcon.imageset/MenuBarIconTemplate.png
diff --git a/Sources/Firelink/ChunkMapView.swift b/legacy/swift/Sources/Firelink/ChunkMapView.swift
similarity index 100%
rename from Sources/Firelink/ChunkMapView.swift
rename to legacy/swift/Sources/Firelink/ChunkMapView.swift
diff --git a/Sources/Firelink/ContentView.swift b/legacy/swift/Sources/Firelink/ContentView.swift
similarity index 100%
rename from Sources/Firelink/ContentView.swift
rename to legacy/swift/Sources/Firelink/ContentView.swift
diff --git a/Sources/Firelink/DownloadController.swift b/legacy/swift/Sources/Firelink/DownloadController.swift
similarity index 100%
rename from Sources/Firelink/DownloadController.swift
rename to legacy/swift/Sources/Firelink/DownloadController.swift
diff --git a/Sources/Firelink/DownloadMetadataFetcher.swift b/legacy/swift/Sources/Firelink/DownloadMetadataFetcher.swift
similarity index 100%
rename from Sources/Firelink/DownloadMetadataFetcher.swift
rename to legacy/swift/Sources/Firelink/DownloadMetadataFetcher.swift
diff --git a/Sources/Firelink/DownloadPropertiesView.swift b/legacy/swift/Sources/Firelink/DownloadPropertiesView.swift
similarity index 100%
rename from Sources/Firelink/DownloadPropertiesView.swift
rename to legacy/swift/Sources/Firelink/DownloadPropertiesView.swift
diff --git a/Sources/Firelink/DownloadTable.swift b/legacy/swift/Sources/Firelink/DownloadTable.swift
similarity index 100%
rename from Sources/Firelink/DownloadTable.swift
rename to legacy/swift/Sources/Firelink/DownloadTable.swift
diff --git a/Sources/Firelink/DuplicateResolutionView.swift b/legacy/swift/Sources/Firelink/DuplicateResolutionView.swift
similarity index 100%
rename from Sources/Firelink/DuplicateResolutionView.swift
rename to legacy/swift/Sources/Firelink/DuplicateResolutionView.swift
diff --git a/Sources/Firelink/FileClassifier.swift b/legacy/swift/Sources/Firelink/FileClassifier.swift
similarity index 100%
rename from Sources/Firelink/FileClassifier.swift
rename to legacy/swift/Sources/Firelink/FileClassifier.swift
diff --git a/Sources/Firelink/FirelinkApp.swift b/legacy/swift/Sources/Firelink/FirelinkApp.swift
similarity index 100%
rename from Sources/Firelink/FirelinkApp.swift
rename to legacy/swift/Sources/Firelink/FirelinkApp.swift
diff --git a/Sources/Firelink/KeychainCredentialStore.swift b/legacy/swift/Sources/Firelink/KeychainCredentialStore.swift
similarity index 100%
rename from Sources/Firelink/KeychainCredentialStore.swift
rename to legacy/swift/Sources/Firelink/KeychainCredentialStore.swift
diff --git a/Sources/Firelink/LocalExtensionServer.swift b/legacy/swift/Sources/Firelink/LocalExtensionServer.swift
similarity index 100%
rename from Sources/Firelink/LocalExtensionServer.swift
rename to legacy/swift/Sources/Firelink/LocalExtensionServer.swift
diff --git a/Sources/Firelink/MediaDetector.swift b/legacy/swift/Sources/Firelink/MediaDetector.swift
similarity index 100%
rename from Sources/Firelink/MediaDetector.swift
rename to legacy/swift/Sources/Firelink/MediaDetector.swift
diff --git a/Sources/Firelink/MediaDownloadEngine.swift b/legacy/swift/Sources/Firelink/MediaDownloadEngine.swift
similarity index 100%
rename from Sources/Firelink/MediaDownloadEngine.swift
rename to legacy/swift/Sources/Firelink/MediaDownloadEngine.swift
diff --git a/Sources/Firelink/MediaEngineManager.swift b/legacy/swift/Sources/Firelink/MediaEngineManager.swift
similarity index 100%
rename from Sources/Firelink/MediaEngineManager.swift
rename to legacy/swift/Sources/Firelink/MediaEngineManager.swift
diff --git a/Sources/Firelink/MediaExtractionEngine.swift b/legacy/swift/Sources/Firelink/MediaExtractionEngine.swift
similarity index 100%
rename from Sources/Firelink/MediaExtractionEngine.swift
rename to legacy/swift/Sources/Firelink/MediaExtractionEngine.swift
diff --git a/Sources/Firelink/Models.swift b/legacy/swift/Sources/Firelink/Models.swift
similarity index 100%
rename from Sources/Firelink/Models.swift
rename to legacy/swift/Sources/Firelink/Models.swift
diff --git a/Sources/Firelink/ProcessTreeTerminator.swift b/legacy/swift/Sources/Firelink/ProcessTreeTerminator.swift
similarity index 100%
rename from Sources/Firelink/ProcessTreeTerminator.swift
rename to legacy/swift/Sources/Firelink/ProcessTreeTerminator.swift
diff --git a/Sources/Firelink/ReleaseUpdateChecker.swift b/legacy/swift/Sources/Firelink/ReleaseUpdateChecker.swift
similarity index 100%
rename from Sources/Firelink/ReleaseUpdateChecker.swift
rename to legacy/swift/Sources/Firelink/ReleaseUpdateChecker.swift
diff --git a/Sources/Firelink/SchedulerController.swift b/legacy/swift/Sources/Firelink/SchedulerController.swift
similarity index 100%
rename from Sources/Firelink/SchedulerController.swift
rename to legacy/swift/Sources/Firelink/SchedulerController.swift
diff --git a/Sources/Firelink/SchedulerView.swift b/legacy/swift/Sources/Firelink/SchedulerView.swift
similarity index 100%
rename from Sources/Firelink/SchedulerView.swift
rename to legacy/swift/Sources/Firelink/SchedulerView.swift
diff --git a/Sources/Firelink/Settings/AboutSettingsPane.swift b/legacy/swift/Sources/Firelink/Settings/AboutSettingsPane.swift
similarity index 100%
rename from Sources/Firelink/Settings/AboutSettingsPane.swift
rename to legacy/swift/Sources/Firelink/Settings/AboutSettingsPane.swift
diff --git a/Sources/Firelink/Settings/DownloadSettingsPane.swift b/legacy/swift/Sources/Firelink/Settings/DownloadSettingsPane.swift
similarity index 100%
rename from Sources/Firelink/Settings/DownloadSettingsPane.swift
rename to legacy/swift/Sources/Firelink/Settings/DownloadSettingsPane.swift
diff --git a/Sources/Firelink/Settings/EngineSettingsPane.swift b/legacy/swift/Sources/Firelink/Settings/EngineSettingsPane.swift
similarity index 100%
rename from Sources/Firelink/Settings/EngineSettingsPane.swift
rename to legacy/swift/Sources/Firelink/Settings/EngineSettingsPane.swift
diff --git a/Sources/Firelink/Settings/IntegrationSettingsPane.swift b/legacy/swift/Sources/Firelink/Settings/IntegrationSettingsPane.swift
similarity index 100%
rename from Sources/Firelink/Settings/IntegrationSettingsPane.swift
rename to legacy/swift/Sources/Firelink/Settings/IntegrationSettingsPane.swift
diff --git a/Sources/Firelink/Settings/KeychainAccessCard.swift b/legacy/swift/Sources/Firelink/Settings/KeychainAccessCard.swift
similarity index 100%
rename from Sources/Firelink/Settings/KeychainAccessCard.swift
rename to legacy/swift/Sources/Firelink/Settings/KeychainAccessCard.swift
diff --git a/Sources/Firelink/Settings/LocationsSettingsPane.swift b/legacy/swift/Sources/Firelink/Settings/LocationsSettingsPane.swift
similarity index 100%
rename from Sources/Firelink/Settings/LocationsSettingsPane.swift
rename to legacy/swift/Sources/Firelink/Settings/LocationsSettingsPane.swift
diff --git a/Sources/Firelink/Settings/LookAndFeelSettingsPane.swift b/legacy/swift/Sources/Firelink/Settings/LookAndFeelSettingsPane.swift
similarity index 100%
rename from Sources/Firelink/Settings/LookAndFeelSettingsPane.swift
rename to legacy/swift/Sources/Firelink/Settings/LookAndFeelSettingsPane.swift
diff --git a/Sources/Firelink/Settings/NetworkSettingsPane.swift b/legacy/swift/Sources/Firelink/Settings/NetworkSettingsPane.swift
similarity index 100%
rename from Sources/Firelink/Settings/NetworkSettingsPane.swift
rename to legacy/swift/Sources/Firelink/Settings/NetworkSettingsPane.swift
diff --git a/Sources/Firelink/Settings/PowerSettingsPane.swift b/legacy/swift/Sources/Firelink/Settings/PowerSettingsPane.swift
similarity index 100%
rename from Sources/Firelink/Settings/PowerSettingsPane.swift
rename to legacy/swift/Sources/Firelink/Settings/PowerSettingsPane.swift
diff --git a/Sources/Firelink/Settings/SettingsContainer.swift b/legacy/swift/Sources/Firelink/Settings/SettingsContainer.swift
similarity index 100%
rename from Sources/Firelink/Settings/SettingsContainer.swift
rename to legacy/swift/Sources/Firelink/Settings/SettingsContainer.swift
diff --git a/Sources/Firelink/Settings/SiteLoginsSettingsPane.swift b/legacy/swift/Sources/Firelink/Settings/SiteLoginsSettingsPane.swift
similarity index 100%
rename from Sources/Firelink/Settings/SiteLoginsSettingsPane.swift
rename to legacy/swift/Sources/Firelink/Settings/SiteLoginsSettingsPane.swift
diff --git a/Sources/Firelink/Settings/ToastNotification.swift b/legacy/swift/Sources/Firelink/Settings/ToastNotification.swift
similarity index 100%
rename from Sources/Firelink/Settings/ToastNotification.swift
rename to legacy/swift/Sources/Firelink/Settings/ToastNotification.swift
diff --git a/Sources/Firelink/SidebarView.swift b/legacy/swift/Sources/Firelink/SidebarView.swift
similarity index 100%
rename from Sources/Firelink/SidebarView.swift
rename to legacy/swift/Sources/Firelink/SidebarView.swift
diff --git a/Sources/Firelink/SpeedLimiterView.swift b/legacy/swift/Sources/Firelink/SpeedLimiterView.swift
similarity index 100%
rename from Sources/Firelink/SpeedLimiterView.swift
rename to legacy/swift/Sources/Firelink/SpeedLimiterView.swift
diff --git a/Sources/Firelink/StatusBar.swift b/legacy/swift/Sources/Firelink/StatusBar.swift
similarity index 100%
rename from Sources/Firelink/StatusBar.swift
rename to legacy/swift/Sources/Firelink/StatusBar.swift
diff --git a/Sources/Firelink/Theme.swift b/legacy/swift/Sources/Firelink/Theme.swift
similarity index 100%
rename from Sources/Firelink/Theme.swift
rename to legacy/swift/Sources/Firelink/Theme.swift
diff --git a/Sources/Firelink/TrayMenuView.swift b/legacy/swift/Sources/Firelink/TrayMenuView.swift
similarity index 100%
rename from Sources/Firelink/TrayMenuView.swift
rename to legacy/swift/Sources/Firelink/TrayMenuView.swift
diff --git a/Sources/Firelink/_internal/.gitkeep b/legacy/swift/Sources/Firelink/_internal/.gitkeep
similarity index 100%
rename from Sources/Firelink/_internal/.gitkeep
rename to legacy/swift/Sources/Firelink/_internal/.gitkeep
diff --git a/apps/desktop/package-lock.json b/package-lock.json
similarity index 54%
rename from apps/desktop/package-lock.json
rename to package-lock.json
index 0a98cf7..927a39d 100644
--- a/apps/desktop/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,13 @@
{
- "name": "tauri-app",
+ "name": "firelink",
"version": "0.7.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "tauri-app",
+ "name": "firelink",
"version": "0.7.3",
+ "license": "MIT",
"dependencies": {
"@tailwindcss/vite": "^4.3.0",
"@tauri-apps/api": "^2",
@@ -22,710 +23,46 @@
"@tauri-apps/cli": "^2",
"@types/react": "^19.1.8",
"@types/react-dom": "^19.1.6",
- "@vitejs/plugin-react": "^4.6.0",
+ "@vitejs/plugin-react": "^6.0.2",
"autoprefixer": "^10.5.0",
"postcss": "^8.5.15",
"tailwindcss": "^4.3.0",
"typescript": "~5.8.3",
- "vite": "^7.0.4"
+ "vite": "^8.0.16"
+ },
+ "engines": {
+ "node": ">=22"
}
},
- "node_modules/@babel/code-frame": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
- "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
- "dev": true,
+ "node_modules/@emnapi/core": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
+ "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
"license": "MIT",
+ "optional": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.29.7",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.1.1"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@emnapi/wasi-threads": "1.2.1",
+ "tslib": "^2.4.0"
}
},
- "node_modules/@babel/compat-data": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
- "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz",
- "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
- "dev": true,
+ "node_modules/@emnapi/runtime": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
+ "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
"license": "MIT",
+ "optional": true,
"dependencies": {
- "@babel/code-frame": "^7.29.7",
- "@babel/generator": "^7.29.7",
- "@babel/helper-compilation-targets": "^7.29.7",
- "@babel/helper-module-transforms": "^7.29.7",
- "@babel/helpers": "^7.29.7",
- "@babel/parser": "^7.29.7",
- "@babel/template": "^7.29.7",
- "@babel/traverse": "^7.29.7",
- "@babel/types": "^7.29.7",
- "@jridgewell/remapping": "^2.3.5",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@babel/generator": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz",
- "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==",
- "dev": true,
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz",
+ "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==",
"license": "MIT",
+ "optional": true,
"dependencies": {
- "@babel/parser": "^7.29.7",
- "@babel/types": "^7.29.7",
- "@jridgewell/gen-mapping": "^0.3.12",
- "@jridgewell/trace-mapping": "^0.3.28",
- "jsesc": "^3.0.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
- "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.29.7",
- "@babel/helper-validator-option": "^7.29.7",
- "browserslist": "^4.24.0",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-globals": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
- "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
- "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.29.7",
- "@babel/types": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
- "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.29.7",
- "@babel/helper-validator-identifier": "^7.29.7",
- "@babel/traverse": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
- "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
- "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
- "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
- "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
- "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.29.7",
- "@babel/types": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz",
- "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.29.7"
- },
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz",
- "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz",
- "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
- "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.29.7",
- "@babel/parser": "^7.29.7",
- "@babel/types": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz",
- "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.29.7",
- "@babel/generator": "^7.29.7",
- "@babel/helper-globals": "^7.29.7",
- "@babel/parser": "^7.29.7",
- "@babel/template": "^7.29.7",
- "@babel/types": "^7.29.7",
- "debug": "^4.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz",
- "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.29.7",
- "@babel/helper-validator-identifier": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@esbuild/aix-ppc64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz",
- "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==",
- "cpu": [
- "ppc64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz",
- "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==",
- "cpu": [
- "arm"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz",
- "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz",
- "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz",
- "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz",
- "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz",
- "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz",
- "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz",
- "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==",
- "cpu": [
- "arm"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz",
- "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz",
- "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==",
- "cpu": [
- "ia32"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz",
- "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==",
- "cpu": [
- "loong64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz",
- "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==",
- "cpu": [
- "mips64el"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz",
- "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==",
- "cpu": [
- "ppc64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz",
- "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==",
- "cpu": [
- "riscv64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz",
- "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==",
- "cpu": [
- "s390x"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz",
- "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/netbsd-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz",
- "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz",
- "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/openbsd-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz",
- "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz",
- "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/openharmony-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz",
- "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "openharmony"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz",
- "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz",
- "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz",
- "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==",
- "cpu": [
- "ia32"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz",
- "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=18"
+ "tslib": "^2.4.0"
}
},
"node_modules/@jridgewell/gen-mapping": {
@@ -773,30 +110,37 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@rolldown/pluginutils": {
- "version": "1.0.0-beta.27",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
- "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.1.tgz",
- "integrity": "sha512-JnBB8MdXj45cajvTuO5FmPlvFVJRQgvrz1uSEl3NwqFnReAPGwb8EanbGi4z2nRaqLzjJSv5/JmycoTKlRZxHA==",
- "cpu": [
- "arm"
- ],
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz",
+ "integrity": "sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==",
"license": "MIT",
"optional": true,
- "os": [
- "android"
- ]
+ "dependencies": {
+ "@tybys/wasm-util": "^0.10.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "peerDependencies": {
+ "@emnapi/core": "^1.7.1",
+ "@emnapi/runtime": "^1.7.1"
+ }
},
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.1.tgz",
- "integrity": "sha512-Jx2g7iSjw4AOT0HDPHM9RV3GNjRXwybWtSFZiZAYUTjUwjVrYIwq3kBf+LnhqJlzXFAqTAh2F7IGI+O568exPw==",
+ "node_modules/@oxc-project/types": {
+ "version": "0.133.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz",
+ "integrity": "sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ }
+ },
+ "node_modules/@rolldown/binding-android-arm64": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz",
+ "integrity": "sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==",
"cpu": [
"arm64"
],
@@ -804,12 +148,15 @@
"optional": true,
"os": [
"android"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.1.tgz",
- "integrity": "sha512-0F1L/Z3Eqv8mT2n3dCpeO8GcTvHvVqkP5/t6DMsn0KzhYVcg+s7Ncl5DS8qjKYEeio6Az0Gt6nyBORay5qIlCA==",
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz",
+ "integrity": "sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==",
"cpu": [
"arm64"
],
@@ -817,12 +164,15 @@
"optional": true,
"os": [
"darwin"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.1.tgz",
- "integrity": "sha512-qLttcH871ujY4YcVfUSShhOw+CsoTatYz8gRbHO7Bb92QH059/P0y5do1KMs41fY0BpD2x4AJH/gID0zFiqVKQ==",
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz",
+ "integrity": "sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==",
"cpu": [
"x64"
],
@@ -830,25 +180,15 @@
"optional": true,
"os": [
"darwin"
- ]
- },
- "node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.1.tgz",
- "integrity": "sha512-fUI4RapGE0Oh3mb8mgfvC1O2nU1RpDZUKnDQm3xB1Ipg7C2wTs5Kstz7G2uWK99a8S2yTMq8/P4uycwNa0nJyw==",
- "cpu": [
- "arm64"
],
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.1.tgz",
- "integrity": "sha512-H5YrdvJaDtI/U9/emrD4b++xkvp3y/JvOe4rizHbxvkyMfRS/CiRYdji+Pl8D0brEaNFWUh1drQxgAGIl6Xudw==",
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz",
+ "integrity": "sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==",
"cpu": [
"x64"
],
@@ -856,44 +196,31 @@
"optional": true,
"os": [
"freebsd"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.1.tgz",
- "integrity": "sha512-Q8CBCCQtDFrYtXoeUXSrnFXKOnyUhx6bz+SkL6A0E7V8kAiCJ5pamq1WtbfpVGhR5TSpXY6ak3avmDc5fHTyJA==",
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz",
+ "integrity": "sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==",
"cpu": [
"arm"
],
- "libc": [
- "glibc"
- ],
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.1.tgz",
- "integrity": "sha512-nwnhk1581l0FBVellGcVCAT0Oi06onEA3WB53sf01VO3I0UPBkMH9sXONYME2K0ovXcNayJfNtHfm6mpJElatQ==",
- "cpu": [
- "arm"
],
- "libc": [
- "musl"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.1.tgz",
- "integrity": "sha512-x5Xr49hwt3hdW75UOZm3395YwwzPyauktslv29KpWL/T+vVAzoT3azLcTWv0eMciBNrx+DYjH4paehHoLpPvpg==",
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz",
+ "integrity": "sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==",
"cpu": [
"arm64"
],
@@ -904,12 +231,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.1.tgz",
- "integrity": "sha512-unMS3H73DpaoPyyEVPjGKleM/s0mkmsauTENpw4INQY8y4+IuLNjkueQ5QCtC0D3N38Y38yhAU8OoZ20S2Tm6w==",
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz",
+ "integrity": "sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==",
"cpu": [
"arm64"
],
@@ -920,44 +250,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.1.tgz",
- "integrity": "sha512-zNZzGRnAhwjFEYmvphJRV5XaQGjs62cCmeYYHUT//NbvEnHauw+I85nGG+SiVg5ld4GX8D1IbKIX+ozITQnhMQ==",
- "cpu": [
- "loong64"
- ],
- "libc": [
- "glibc"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-loong64-musl": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.1.tgz",
- "integrity": "sha512-LdpWGL8X209B2SIvWjqlc8VZgM6PKfontSerGepuldQmHYrAOtnMCXeJkxXGbC+PPZVOuu5czJo7fNV6aeW8rQ==",
- "cpu": [
- "loong64"
- ],
- "libc": [
- "musl"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.1.tgz",
- "integrity": "sha512-EC5kTtNaNGOmbMGqar8dvJy6y/hg99GAwjfBz++pxZhQATXGcRjd6c5en5wcbru0vkRmiMGsQKdMJOOf6sza4g==",
+ "node_modules/@rolldown/binding-linux-ppc64-gnu": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz",
+ "integrity": "sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==",
"cpu": [
"ppc64"
],
@@ -968,60 +269,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-ppc64-musl": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.1.tgz",
- "integrity": "sha512-8hiwp6D4acEcNK78I4rP0/XtS1sknWIAMJBPdR4l6zUtyTm5KiTDr5bXmWt4foY7nAN7AThDHgkLIEZOWKbzWw==",
- "cpu": [
- "ppc64"
- ],
- "libc": [
- "musl"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.1.tgz",
- "integrity": "sha512-10dh/h/BqA7DuMPWSxkR8uks18FRwnwOEqr5zOTEl+NOwP/OMzKX8OFR/Of9xxDA7D5qef1Nzar5WDD2kCCr1g==",
- "cpu": [
- "riscv64"
- ],
- "libc": [
- "glibc"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.1.tgz",
- "integrity": "sha512-YKJ5lg35DP17gcAOggnihe+APw9HLyj1Xn7gsmGumBJAUDa6NGXNixJzmkWLhcK9TOuuyQjdamzvJefkO7qHZQ==",
- "cpu": [
- "riscv64"
- ],
- "libc": [
- "musl"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.1.tgz",
- "integrity": "sha512-Mlil5G2Jj6a7B3LWGctg+XPL9vdXYuzCtNXfxOQ0nPjc2m6ueUktocPGH9bnAM0bNRKb/bAWTujUU7IJQdQA+g==",
+ "node_modules/@rolldown/binding-linux-s390x-gnu": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz",
+ "integrity": "sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==",
"cpu": [
"s390x"
],
@@ -1032,12 +288,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.1.tgz",
- "integrity": "sha512-bVWIOIk6pV01p4CdUbPP7CJ/434z+OooYjDuFcR+44N35YvKUC66G8MGnvcWx5mWKW3g61J+t74l3Kj15Kwn2Q==",
+ "node_modules/@rolldown/binding-linux-x64-gnu": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz",
+ "integrity": "sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==",
"cpu": [
"x64"
],
@@ -1048,12 +307,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.1.tgz",
- "integrity": "sha512-qy5pBvZbqNFheBz61R1rzsezjm0J7O2oNGoWtGoY89SZYLUfxAJTBAqDChqAIdB4rCiIbi9nF7yZ83GnNiLwSw==",
+ "node_modules/@rolldown/binding-linux-x64-musl": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz",
+ "integrity": "sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==",
"cpu": [
"x64"
],
@@ -1064,25 +326,15 @@
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-openbsd-x64": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.1.tgz",
- "integrity": "sha512-E83TXjI4zm0+5f2qO+UOudaCYIhYwpJ5jq6YCZNIZ+6CbfhKrkAGezeiASBL9ElxAxFsRS9ZhESv8mfnj6TKeg==",
- "cpu": [
- "x64"
],
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.1.tgz",
- "integrity": "sha512-fbWnKqVkjrJN38vNe3ahkbk6iejS/3b0Nt7EEtPpE6RBacZcGXNKbzfHN3GUUlXOPghUg0j6XUGrtjX9z1sIvA==",
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz",
+ "integrity": "sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==",
"cpu": [
"arm64"
],
@@ -1090,12 +342,33 @@
"optional": true,
"os": [
"openharmony"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.1.tgz",
- "integrity": "sha512-ArMl38iVAbk0New1ogihQNY6iphLi4ZaRsa037gUzv5yeKPY8TD3Dmy4x2RNC1VztU/uqm+G+/RwFrSka3Oy2g==",
+ "node_modules/@rolldown/binding-wasm32-wasi": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz",
+ "integrity": "sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "1.10.0",
+ "@emnapi/runtime": "1.10.0",
+ "@napi-rs/wasm-runtime": "^1.1.4"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz",
+ "integrity": "sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==",
"cpu": [
"arm64"
],
@@ -1103,25 +376,15 @@
"optional": true,
"os": [
"win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.1.tgz",
- "integrity": "sha512-0mYtjHS9ucAbcATycCNK9IGBk/cCe/ma7EmSLGZdsxnOA8cjRIyU04wDpVAD9NiOfLUR9KTxdiO53uOkherqjQ==",
- "cpu": [
- "ia32"
],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.61.1.tgz",
- "integrity": "sha512-gK1iCEPfpoSG9wfBihXxvBMi8ZfcWffYkEsC/Eih+iFENTaewvNcrEQ69lIOWYO5pePHKLHHO7nq5AILGO/HQQ==",
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz",
+ "integrity": "sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==",
"cpu": [
"x64"
],
@@ -1129,20 +392,16 @@
"optional": true,
"os": [
"win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.61.1.tgz",
- "integrity": "sha512-X+zaP2x+j4RXGfbp/seSoRHWnPxzApilDszisZxbYH5C/jTxFhCtDNdPGZb9lJyYPs24wGxruPF7Y+sIXt9Gzw==",
- "cpu": [
- "x64"
],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz",
+ "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==",
+ "license": "MIT"
},
"node_modules/@tailwindcss/node": {
"version": "4.3.0",
@@ -1682,57 +941,16 @@
"@tauri-apps/api": "^2.11.0"
}
},
- "node_modules/@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.2",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
+ "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==",
"license": "MIT",
+ "optional": true,
"dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@types/babel__generator": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
- "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
- "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.28.2"
- }
- },
- "node_modules/@types/estree": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
- "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
- "license": "MIT"
- },
"node_modules/@types/react": {
"version": "19.2.17",
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz",
@@ -1754,24 +972,29 @@
}
},
"node_modules/@vitejs/plugin-react": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
- "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.2.tgz",
+ "integrity": "sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/core": "^7.28.0",
- "@babel/plugin-transform-react-jsx-self": "^7.27.1",
- "@babel/plugin-transform-react-jsx-source": "^7.27.1",
- "@rolldown/pluginutils": "1.0.0-beta.27",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.17.0"
+ "@rolldown/pluginutils": "^1.0.0"
},
"engines": {
- "node": "^14.18.0 || >=16.0.0"
+ "node": "^20.19.0 || >=22.12.0"
},
"peerDependencies": {
- "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
+ "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0",
+ "babel-plugin-react-compiler": "^1.0.0",
+ "vite": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@rolldown/plugin-babel": {
+ "optional": true
+ },
+ "babel-plugin-react-compiler": {
+ "optional": true
+ }
}
},
"node_modules/autoprefixer": {
@@ -1879,13 +1102,6 @@
],
"license": "CC-BY-4.0"
},
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/csstype": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
@@ -1893,24 +1109,6 @@
"devOptional": true,
"license": "MIT"
},
- "node_modules/debug": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
@@ -1940,47 +1138,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/esbuild": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz",
- "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==",
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=18"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.27.7",
- "@esbuild/android-arm": "0.27.7",
- "@esbuild/android-arm64": "0.27.7",
- "@esbuild/android-x64": "0.27.7",
- "@esbuild/darwin-arm64": "0.27.7",
- "@esbuild/darwin-x64": "0.27.7",
- "@esbuild/freebsd-arm64": "0.27.7",
- "@esbuild/freebsd-x64": "0.27.7",
- "@esbuild/linux-arm": "0.27.7",
- "@esbuild/linux-arm64": "0.27.7",
- "@esbuild/linux-ia32": "0.27.7",
- "@esbuild/linux-loong64": "0.27.7",
- "@esbuild/linux-mips64el": "0.27.7",
- "@esbuild/linux-ppc64": "0.27.7",
- "@esbuild/linux-riscv64": "0.27.7",
- "@esbuild/linux-s390x": "0.27.7",
- "@esbuild/linux-x64": "0.27.7",
- "@esbuild/netbsd-arm64": "0.27.7",
- "@esbuild/netbsd-x64": "0.27.7",
- "@esbuild/openbsd-arm64": "0.27.7",
- "@esbuild/openbsd-x64": "0.27.7",
- "@esbuild/openharmony-arm64": "0.27.7",
- "@esbuild/sunos-x64": "0.27.7",
- "@esbuild/win32-arm64": "0.27.7",
- "@esbuild/win32-ia32": "0.27.7",
- "@esbuild/win32-x64": "0.27.7"
- }
- },
"node_modules/escalade": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
@@ -2036,16 +1193,6 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -2061,39 +1208,6 @@
"jiti": "lib/jiti-cli.mjs"
}
},
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jsesc": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
- "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/lightningcss": {
"version": "1.32.0",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
@@ -2355,16 +1469,6 @@
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
"node_modules/lucide-react": {
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.17.0.tgz",
@@ -2383,13 +1487,6 @@
"@jridgewell/sourcemap-codec": "^1.5.5"
}
},
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/nanoid": {
"version": "3.3.12",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz",
@@ -2492,58 +1589,37 @@
"react": "^19.2.7"
}
},
- "node_modules/react-refresh": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
- "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/rollup": {
- "version": "4.61.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.1.tgz",
- "integrity": "sha512-I4KW6iuRpuu2uHBLraZ1wNZe0DP7lnRha+VJ9tNaYVaVgKhW0aI3h4RYnoRPeql0flHm/Co55b7snEDcOfOJrA==",
+ "node_modules/rolldown": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.3.tgz",
+ "integrity": "sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==",
"license": "MIT",
"dependencies": {
- "@types/estree": "1.0.9"
+ "@oxc-project/types": "=0.133.0",
+ "@rolldown/pluginutils": "^1.0.0"
},
"bin": {
- "rollup": "dist/bin/rollup"
+ "rolldown": "bin/cli.mjs"
},
"engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
+ "node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.61.1",
- "@rollup/rollup-android-arm64": "4.61.1",
- "@rollup/rollup-darwin-arm64": "4.61.1",
- "@rollup/rollup-darwin-x64": "4.61.1",
- "@rollup/rollup-freebsd-arm64": "4.61.1",
- "@rollup/rollup-freebsd-x64": "4.61.1",
- "@rollup/rollup-linux-arm-gnueabihf": "4.61.1",
- "@rollup/rollup-linux-arm-musleabihf": "4.61.1",
- "@rollup/rollup-linux-arm64-gnu": "4.61.1",
- "@rollup/rollup-linux-arm64-musl": "4.61.1",
- "@rollup/rollup-linux-loong64-gnu": "4.61.1",
- "@rollup/rollup-linux-loong64-musl": "4.61.1",
- "@rollup/rollup-linux-ppc64-gnu": "4.61.1",
- "@rollup/rollup-linux-ppc64-musl": "4.61.1",
- "@rollup/rollup-linux-riscv64-gnu": "4.61.1",
- "@rollup/rollup-linux-riscv64-musl": "4.61.1",
- "@rollup/rollup-linux-s390x-gnu": "4.61.1",
- "@rollup/rollup-linux-x64-gnu": "4.61.1",
- "@rollup/rollup-linux-x64-musl": "4.61.1",
- "@rollup/rollup-openbsd-x64": "4.61.1",
- "@rollup/rollup-openharmony-arm64": "4.61.1",
- "@rollup/rollup-win32-arm64-msvc": "4.61.1",
- "@rollup/rollup-win32-ia32-msvc": "4.61.1",
- "@rollup/rollup-win32-x64-gnu": "4.61.1",
- "@rollup/rollup-win32-x64-msvc": "4.61.1",
- "fsevents": "~2.3.2"
+ "@rolldown/binding-android-arm64": "1.0.3",
+ "@rolldown/binding-darwin-arm64": "1.0.3",
+ "@rolldown/binding-darwin-x64": "1.0.3",
+ "@rolldown/binding-freebsd-x64": "1.0.3",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.3",
+ "@rolldown/binding-linux-arm64-gnu": "1.0.3",
+ "@rolldown/binding-linux-arm64-musl": "1.0.3",
+ "@rolldown/binding-linux-ppc64-gnu": "1.0.3",
+ "@rolldown/binding-linux-s390x-gnu": "1.0.3",
+ "@rolldown/binding-linux-x64-gnu": "1.0.3",
+ "@rolldown/binding-linux-x64-musl": "1.0.3",
+ "@rolldown/binding-openharmony-arm64": "1.0.3",
+ "@rolldown/binding-wasm32-wasi": "1.0.3",
+ "@rolldown/binding-win32-arm64-msvc": "1.0.3",
+ "@rolldown/binding-win32-x64-msvc": "1.0.3"
}
},
"node_modules/scheduler": {
@@ -2552,16 +1628,6 @@
"integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
"license": "MIT"
},
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -2606,6 +1672,13 @@
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD",
+ "optional": true
+ },
"node_modules/typescript": {
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
@@ -2652,17 +1725,16 @@
}
},
"node_modules/vite": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.5.tgz",
- "integrity": "sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==",
+ "version": "8.0.16",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.16.tgz",
+ "integrity": "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==",
"license": "MIT",
"dependencies": {
- "esbuild": "^0.27.0",
- "fdir": "^6.5.0",
- "picomatch": "^4.0.3",
- "postcss": "^8.5.6",
- "rollup": "^4.43.0",
- "tinyglobby": "^0.2.15"
+ "lightningcss": "^1.32.0",
+ "picomatch": "^4.0.4",
+ "postcss": "^8.5.15",
+ "rolldown": "1.0.3",
+ "tinyglobby": "^0.2.17"
},
"bin": {
"vite": "bin/vite.js"
@@ -2678,9 +1750,10 @@
},
"peerDependencies": {
"@types/node": "^20.19.0 || >=22.12.0",
+ "@vitejs/devtools": "^0.1.18",
+ "esbuild": "^0.27.0 || ^0.28.0",
"jiti": ">=1.21.0",
"less": "^4.0.0",
- "lightningcss": "^1.21.0",
"sass": "^1.70.0",
"sass-embedded": "^1.70.0",
"stylus": ">=0.54.8",
@@ -2693,15 +1766,18 @@
"@types/node": {
"optional": true
},
+ "@vitejs/devtools": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
"jiti": {
"optional": true
},
"less": {
"optional": true
},
- "lightningcss": {
- "optional": true
- },
"sass": {
"optional": true
},
@@ -2725,13 +1801,6 @@
}
}
},
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/zustand": {
"version": "5.0.14",
"resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.14.tgz",
diff --git a/apps/desktop/package.json b/package.json
similarity index 58%
rename from apps/desktop/package.json
rename to package.json
index 19012a3..33343d0 100644
--- a/apps/desktop/package.json
+++ b/package.json
@@ -1,7 +1,30 @@
{
- "name": "tauri-app",
+ "name": "firelink",
"private": true,
"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",
"scripts": {
"dev": "vite",
@@ -25,11 +48,11 @@
"@tauri-apps/cli": "^2",
"@types/react": "^19.1.8",
"@types/react-dom": "^19.1.6",
- "@vitejs/plugin-react": "^4.6.0",
+ "@vitejs/plugin-react": "^6.0.2",
"autoprefixer": "^10.5.0",
"postcss": "^8.5.15",
"tailwindcss": "^4.3.0",
"typescript": "~5.8.3",
- "vite": "^7.0.4"
+ "vite": "^8.0.16"
}
}
diff --git a/apps/desktop/src-tauri/.gitignore b/src-tauri/.gitignore
similarity index 100%
rename from apps/desktop/src-tauri/.gitignore
rename to src-tauri/.gitignore
diff --git a/apps/desktop/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
similarity index 99%
rename from apps/desktop/src-tauri/Cargo.lock
rename to src-tauri/Cargo.lock
index fcebbcd..548e25d 100644
--- a/apps/desktop/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -1229,6 +1229,45 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
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]]
name = "flate2"
version = "1.1.9"
@@ -4409,45 +4448,6 @@ dependencies = [
"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]]
name = "tauri-build"
version = "2.6.2"
diff --git a/apps/desktop/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
similarity index 83%
rename from apps/desktop/src-tauri/Cargo.toml
rename to src-tauri/Cargo.toml
index af055b7..11e960d 100644
--- a/apps/desktop/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -1,9 +1,14 @@
[package]
-name = "tauri-app"
+name = "firelink"
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"]
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
@@ -11,7 +16,7 @@ edition = "2021"
# The `_lib` suffix may seem redundant but it is necessary
# 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
-name = "tauri_app_lib"
+name = "firelink_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
diff --git a/apps/desktop/src-tauri/binaries/_internal/.gitkeep b/src-tauri/binaries/_internal/.gitkeep
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/.gitkeep
rename to src-tauri/binaries/_internal/.gitkeep
diff --git a/apps/desktop/src-tauri/binaries/_internal/81d243bd2c585b0f4821__mypyc.cpython-314-darwin.so b/src-tauri/binaries/_internal/81d243bd2c585b0f4821__mypyc.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/81d243bd2c585b0f4821__mypyc.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/81d243bd2c585b0f4821__mypyc.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_ARC4.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_ARC4.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_ARC4.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_ARC4.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_Salsa20.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_Salsa20.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_Salsa20.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_Salsa20.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_chacha20.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_chacha20.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_chacha20.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_chacha20.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_pkcs1_decode.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_pkcs1_decode.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_pkcs1_decode.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_pkcs1_decode.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_aes.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_aes.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_aes.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_aes.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_arc2.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_arc2.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_arc2.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_arc2.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_blowfish.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_blowfish.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_blowfish.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_blowfish.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cast.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cast.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cast.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cast.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cbc.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cbc.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cbc.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cbc.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cfb.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cfb.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cfb.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_cfb.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ctr.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ctr.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ctr.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ctr.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_des.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_des.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_des.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_des.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_des3.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_des3.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_des3.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_des3.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ecb.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ecb.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ecb.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ecb.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_eksblowfish.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_eksblowfish.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_eksblowfish.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_eksblowfish.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ocb.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ocb.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ocb.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ocb.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ofb.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ofb.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ofb.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Cipher/_raw_ofb.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_BLAKE2b.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_BLAKE2b.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_BLAKE2b.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_BLAKE2b.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_BLAKE2s.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_BLAKE2s.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_BLAKE2s.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_BLAKE2s.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_MD2.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_MD2.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_MD2.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_MD2.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_MD4.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_MD4.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_MD4.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_MD4.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_MD5.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_MD5.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_MD5.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_MD5.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_RIPEMD160.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_RIPEMD160.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_RIPEMD160.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_RIPEMD160.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA1.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA1.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA1.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_SHA1.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA224.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA224.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA224.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_SHA224.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA256.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA256.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA256.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_SHA256.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA384.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA384.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA384.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_SHA384.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA512.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA512.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_SHA512.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_SHA512.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_ghash_portable.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_ghash_portable.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_ghash_portable.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_ghash_portable.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_keccak.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_keccak.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_keccak.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_keccak.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_poly1305.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Hash/_poly1305.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Hash/_poly1305.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Hash/_poly1305.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Math/_modexp.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Math/_modexp.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Math/_modexp.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Math/_modexp.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Protocol/_scrypt.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Protocol/_scrypt.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Protocol/_scrypt.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Protocol/_scrypt.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/PublicKey/_curve25519.abi3.so b/src-tauri/binaries/_internal/Cryptodome/PublicKey/_curve25519.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/PublicKey/_curve25519.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/PublicKey/_curve25519.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/PublicKey/_curve448.abi3.so b/src-tauri/binaries/_internal/Cryptodome/PublicKey/_curve448.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/PublicKey/_curve448.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/PublicKey/_curve448.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/PublicKey/_ec_ws.abi3.so b/src-tauri/binaries/_internal/Cryptodome/PublicKey/_ec_ws.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/PublicKey/_ec_ws.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/PublicKey/_ec_ws.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/PublicKey/_ed25519.abi3.so b/src-tauri/binaries/_internal/Cryptodome/PublicKey/_ed25519.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/PublicKey/_ed25519.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/PublicKey/_ed25519.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/PublicKey/_ed448.abi3.so b/src-tauri/binaries/_internal/Cryptodome/PublicKey/_ed448.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/PublicKey/_ed448.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/PublicKey/_ed448.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Util/_cpuid_c.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Util/_cpuid_c.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Util/_cpuid_c.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Util/_cpuid_c.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Cryptodome/Util/_strxor.abi3.so b/src-tauri/binaries/_internal/Cryptodome/Util/_strxor.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Cryptodome/Util/_strxor.abi3.so
rename to src-tauri/binaries/_internal/Cryptodome/Util/_strxor.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/Python b/src-tauri/binaries/_internal/Python
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Python
rename to src-tauri/binaries/_internal/Python
diff --git a/apps/desktop/src-tauri/binaries/_internal/Python.framework/Python b/src-tauri/binaries/_internal/Python.framework/Python
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Python.framework/Python
rename to src-tauri/binaries/_internal/Python.framework/Python
diff --git a/apps/desktop/src-tauri/binaries/_internal/Python.framework/Resources/Info.plist b/src-tauri/binaries/_internal/Python.framework/Resources/Info.plist
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Python.framework/Resources/Info.plist
rename to src-tauri/binaries/_internal/Python.framework/Resources/Info.plist
diff --git a/apps/desktop/src-tauri/binaries/_internal/Python.framework/Versions/3.14/Python b/src-tauri/binaries/_internal/Python.framework/Versions/3.14/Python
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Python.framework/Versions/3.14/Python
rename to src-tauri/binaries/_internal/Python.framework/Versions/3.14/Python
diff --git a/apps/desktop/src-tauri/binaries/_internal/Python.framework/Versions/3.14/Resources/Info.plist b/src-tauri/binaries/_internal/Python.framework/Versions/3.14/Resources/Info.plist
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Python.framework/Versions/3.14/Resources/Info.plist
rename to src-tauri/binaries/_internal/Python.framework/Versions/3.14/Resources/Info.plist
diff --git a/apps/desktop/src-tauri/binaries/_internal/Python.framework/Versions/Current/Python b/src-tauri/binaries/_internal/Python.framework/Versions/Current/Python
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Python.framework/Versions/Current/Python
rename to src-tauri/binaries/_internal/Python.framework/Versions/Current/Python
diff --git a/apps/desktop/src-tauri/binaries/_internal/Python.framework/Versions/Current/Resources/Info.plist b/src-tauri/binaries/_internal/Python.framework/Versions/Current/Resources/Info.plist
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/Python.framework/Versions/Current/Resources/Info.plist
rename to src-tauri/binaries/_internal/Python.framework/Versions/Current/Resources/Info.plist
diff --git a/apps/desktop/src-tauri/binaries/_internal/_brotli.cpython-314-darwin.so b/src-tauri/binaries/_internal/_brotli.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/_brotli.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/_brotli.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/_cffi_backend.cpython-314-darwin.so b/src-tauri/binaries/_internal/_cffi_backend.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/_cffi_backend.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/_cffi_backend.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/base_library.zip b/src-tauri/binaries/_internal/base_library.zip
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/base_library.zip
rename to src-tauri/binaries/_internal/base_library.zip
diff --git a/apps/desktop/src-tauri/binaries/_internal/certifi/py.typed b/src-tauri/binaries/_internal/certifi/py.typed
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/certifi/py.typed
rename to src-tauri/binaries/_internal/certifi/py.typed
diff --git a/apps/desktop/src-tauri/binaries/_internal/charset_normalizer/cd.cpython-314-darwin.so b/src-tauri/binaries/_internal/charset_normalizer/cd.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/charset_normalizer/cd.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/charset_normalizer/cd.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/charset_normalizer/md.cpython-314-darwin.so b/src-tauri/binaries/_internal/charset_normalizer/md.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/charset_normalizer/md.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/charset_normalizer/md.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/INSTALLER b/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/INSTALLER
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/INSTALLER
rename to src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/INSTALLER
diff --git a/apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/METADATA b/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/METADATA
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/METADATA
rename to src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/METADATA
diff --git a/apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/RECORD b/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/RECORD
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/RECORD
rename to src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/RECORD
diff --git a/apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/REQUESTED b/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/REQUESTED
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/REQUESTED
rename to src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/REQUESTED
diff --git a/apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/WHEEL b/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/WHEEL
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/WHEEL
rename to src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/WHEEL
diff --git a/apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/direct_url.json b/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/direct_url.json
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/direct_url.json
rename to src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/direct_url.json
diff --git a/apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/entry_points.txt b/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/entry_points.txt
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/entry_points.txt
rename to src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/entry_points.txt
diff --git a/apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/licenses/LICENSE b/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/licenses/LICENSE
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/licenses/LICENSE
rename to src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/licenses/LICENSE
diff --git a/apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/top_level.txt b/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/top_level.txt
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/top_level.txt
rename to src-tauri/binaries/_internal/curl_cffi-0.15.0.dist-info/top_level.txt
diff --git a/apps/desktop/src-tauri/binaries/_internal/curl_cffi/_wrapper.abi3.so b/src-tauri/binaries/_internal/curl_cffi/_wrapper.abi3.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/curl_cffi/_wrapper.abi3.so
rename to src-tauri/binaries/_internal/curl_cffi/_wrapper.abi3.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/libcrypto.3.dylib b/src-tauri/binaries/_internal/libcrypto.3.dylib
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/libcrypto.3.dylib
rename to src-tauri/binaries/_internal/libcrypto.3.dylib
diff --git a/apps/desktop/src-tauri/binaries/_internal/libssl.3.dylib b/src-tauri/binaries/_internal/libssl.3.dylib
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/libssl.3.dylib
rename to src-tauri/binaries/_internal/libssl.3.dylib
diff --git a/apps/desktop/src-tauri/binaries/_internal/libzstd.1.dylib b/src-tauri/binaries/_internal/libzstd.1.dylib
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/libzstd.1.dylib
rename to src-tauri/binaries/_internal/libzstd.1.dylib
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_asyncio.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_asyncio.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_asyncio.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_asyncio.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_bisect.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_bisect.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_bisect.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_bisect.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_blake2.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_blake2.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_blake2.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_blake2.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_bz2.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_bz2.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_bz2.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_bz2.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_cn.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_cn.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_cn.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_cn.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_hk.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_hk.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_hk.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_hk.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_iso2022.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_iso2022.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_iso2022.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_iso2022.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_jp.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_jp.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_jp.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_jp.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_kr.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_kr.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_kr.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_kr.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_tw.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_tw.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_tw.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_codecs_tw.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_csv.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_csv.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_csv.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_csv.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_ctypes.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_ctypes.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_ctypes.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_ctypes.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_decimal.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_decimal.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_decimal.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_decimal.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_elementtree.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_elementtree.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_elementtree.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_elementtree.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_hashlib.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_hashlib.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_hashlib.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_hashlib.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_heapq.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_heapq.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_heapq.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_heapq.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_hmac.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_hmac.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_hmac.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_hmac.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_interpqueues.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_interpqueues.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_interpqueues.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_interpqueues.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_interpreters.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_interpreters.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_interpreters.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_interpreters.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_json.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_json.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_json.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_json.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_lzma.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_lzma.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_lzma.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_lzma.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_md5.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_md5.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_md5.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_md5.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_multibytecodec.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_multibytecodec.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_multibytecodec.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_multibytecodec.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_multiprocessing.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_multiprocessing.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_multiprocessing.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_multiprocessing.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_pickle.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_pickle.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_pickle.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_pickle.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_posixshmem.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_posixshmem.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_posixshmem.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_posixshmem.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_posixsubprocess.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_posixsubprocess.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_posixsubprocess.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_posixsubprocess.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_queue.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_queue.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_queue.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_queue.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_random.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_random.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_random.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_random.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_scproxy.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_scproxy.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_scproxy.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_scproxy.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_sha1.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_sha1.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_sha1.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_sha1.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_sha2.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_sha2.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_sha2.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_sha2.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_sha3.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_sha3.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_sha3.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_sha3.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_socket.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_socket.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_socket.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_socket.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_sqlite3.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_sqlite3.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_sqlite3.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_sqlite3.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_ssl.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_ssl.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_ssl.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_ssl.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_statistics.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_statistics.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_statistics.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_statistics.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_struct.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_struct.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_struct.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_struct.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_uuid.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_uuid.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_uuid.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_uuid.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_zstd.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/_zstd.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/_zstd.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/_zstd.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/array.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/array.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/array.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/array.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/binascii.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/binascii.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/binascii.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/binascii.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/fcntl.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/fcntl.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/fcntl.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/fcntl.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/grp.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/grp.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/grp.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/grp.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/math.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/math.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/math.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/math.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/mmap.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/mmap.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/mmap.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/mmap.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/pyexpat.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/pyexpat.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/pyexpat.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/pyexpat.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/readline.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/readline.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/readline.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/readline.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/resource.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/resource.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/resource.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/resource.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/select.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/select.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/select.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/select.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/syslog.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/syslog.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/syslog.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/syslog.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/termios.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/termios.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/termios.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/termios.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/unicodedata.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/unicodedata.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/unicodedata.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/unicodedata.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/zlib.cpython-314-darwin.so b/src-tauri/binaries/_internal/python3.14/lib-dynload/zlib.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/python3.14/lib-dynload/zlib.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/python3.14/lib-dynload/zlib.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/INSTALLER b/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/INSTALLER
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/INSTALLER
rename to src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/INSTALLER
diff --git a/apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/METADATA b/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/METADATA
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/METADATA
rename to src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/METADATA
diff --git a/apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/RECORD b/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/RECORD
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/RECORD
rename to src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/RECORD
diff --git a/apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/REQUESTED b/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/REQUESTED
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/REQUESTED
rename to src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/REQUESTED
diff --git a/apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/WHEEL b/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/WHEEL
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/WHEEL
rename to src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/WHEEL
diff --git a/apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/licenses/LICENSE b/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/licenses/LICENSE
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/licenses/LICENSE
rename to src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/licenses/LICENSE
diff --git a/apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/top_level.txt b/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/top_level.txt
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/top_level.txt
rename to src-tauri/binaries/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/top_level.txt
diff --git a/apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt b/src-tauri/binaries/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt
rename to src-tauri/binaries/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt
diff --git a/apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/INSTALLER b/src-tauri/binaries/_internal/websockets-16.0.dist-info/INSTALLER
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/INSTALLER
rename to src-tauri/binaries/_internal/websockets-16.0.dist-info/INSTALLER
diff --git a/apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/METADATA b/src-tauri/binaries/_internal/websockets-16.0.dist-info/METADATA
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/METADATA
rename to src-tauri/binaries/_internal/websockets-16.0.dist-info/METADATA
diff --git a/apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/RECORD b/src-tauri/binaries/_internal/websockets-16.0.dist-info/RECORD
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/RECORD
rename to src-tauri/binaries/_internal/websockets-16.0.dist-info/RECORD
diff --git a/apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/REQUESTED b/src-tauri/binaries/_internal/websockets-16.0.dist-info/REQUESTED
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/REQUESTED
rename to src-tauri/binaries/_internal/websockets-16.0.dist-info/REQUESTED
diff --git a/apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/WHEEL b/src-tauri/binaries/_internal/websockets-16.0.dist-info/WHEEL
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/WHEEL
rename to src-tauri/binaries/_internal/websockets-16.0.dist-info/WHEEL
diff --git a/apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/direct_url.json b/src-tauri/binaries/_internal/websockets-16.0.dist-info/direct_url.json
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/direct_url.json
rename to src-tauri/binaries/_internal/websockets-16.0.dist-info/direct_url.json
diff --git a/apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/entry_points.txt b/src-tauri/binaries/_internal/websockets-16.0.dist-info/entry_points.txt
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/entry_points.txt
rename to src-tauri/binaries/_internal/websockets-16.0.dist-info/entry_points.txt
diff --git a/apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/licenses/LICENSE b/src-tauri/binaries/_internal/websockets-16.0.dist-info/licenses/LICENSE
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/licenses/LICENSE
rename to src-tauri/binaries/_internal/websockets-16.0.dist-info/licenses/LICENSE
diff --git a/apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/top_level.txt b/src-tauri/binaries/_internal/websockets-16.0.dist-info/top_level.txt
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/websockets-16.0.dist-info/top_level.txt
rename to src-tauri/binaries/_internal/websockets-16.0.dist-info/top_level.txt
diff --git a/apps/desktop/src-tauri/binaries/_internal/websockets/speedups.cpython-314-darwin.so b/src-tauri/binaries/_internal/websockets/speedups.cpython-314-darwin.so
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/websockets/speedups.cpython-314-darwin.so
rename to src-tauri/binaries/_internal/websockets/speedups.cpython-314-darwin.so
diff --git a/apps/desktop/src-tauri/binaries/_internal/yt_dlp_ejs/yt/solver/core.min.js b/src-tauri/binaries/_internal/yt_dlp_ejs/yt/solver/core.min.js
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/yt_dlp_ejs/yt/solver/core.min.js
rename to src-tauri/binaries/_internal/yt_dlp_ejs/yt/solver/core.min.js
diff --git a/apps/desktop/src-tauri/binaries/_internal/yt_dlp_ejs/yt/solver/lib.min.js b/src-tauri/binaries/_internal/yt_dlp_ejs/yt/solver/lib.min.js
similarity index 100%
rename from apps/desktop/src-tauri/binaries/_internal/yt_dlp_ejs/yt/solver/lib.min.js
rename to src-tauri/binaries/_internal/yt_dlp_ejs/yt/solver/lib.min.js
diff --git a/apps/desktop/src-tauri/binaries/aria2-libs/libcares.2.dylib b/src-tauri/binaries/aria2-libs/libcares.2.dylib
similarity index 100%
rename from apps/desktop/src-tauri/binaries/aria2-libs/libcares.2.dylib
rename to src-tauri/binaries/aria2-libs/libcares.2.dylib
diff --git a/apps/desktop/src-tauri/binaries/aria2-libs/libcrypto.3.dylib b/src-tauri/binaries/aria2-libs/libcrypto.3.dylib
similarity index 100%
rename from apps/desktop/src-tauri/binaries/aria2-libs/libcrypto.3.dylib
rename to src-tauri/binaries/aria2-libs/libcrypto.3.dylib
diff --git a/apps/desktop/src-tauri/binaries/aria2-libs/libintl.8.dylib b/src-tauri/binaries/aria2-libs/libintl.8.dylib
similarity index 100%
rename from apps/desktop/src-tauri/binaries/aria2-libs/libintl.8.dylib
rename to src-tauri/binaries/aria2-libs/libintl.8.dylib
diff --git a/apps/desktop/src-tauri/binaries/aria2-libs/libsqlite3.dylib b/src-tauri/binaries/aria2-libs/libsqlite3.dylib
similarity index 100%
rename from apps/desktop/src-tauri/binaries/aria2-libs/libsqlite3.dylib
rename to src-tauri/binaries/aria2-libs/libsqlite3.dylib
diff --git a/apps/desktop/src-tauri/binaries/aria2-libs/libssh2.1.dylib b/src-tauri/binaries/aria2-libs/libssh2.1.dylib
similarity index 100%
rename from apps/desktop/src-tauri/binaries/aria2-libs/libssh2.1.dylib
rename to src-tauri/binaries/aria2-libs/libssh2.1.dylib
diff --git a/apps/desktop/src-tauri/binaries/aria2-libs/libssl.3.dylib b/src-tauri/binaries/aria2-libs/libssl.3.dylib
similarity index 100%
rename from apps/desktop/src-tauri/binaries/aria2-libs/libssl.3.dylib
rename to src-tauri/binaries/aria2-libs/libssl.3.dylib
diff --git a/apps/desktop/src-tauri/build.rs b/src-tauri/build.rs
similarity index 100%
rename from apps/desktop/src-tauri/build.rs
rename to src-tauri/build.rs
diff --git a/apps/desktop/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json
similarity index 100%
rename from apps/desktop/src-tauri/capabilities/default.json
rename to src-tauri/capabilities/default.json
diff --git a/apps/desktop/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/128x128.png
rename to src-tauri/icons/128x128.png
diff --git a/apps/desktop/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/128x128@2x.png
rename to src-tauri/icons/128x128@2x.png
diff --git a/apps/desktop/src-tauri/icons/32x32.png b/src-tauri/icons/32x32.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/32x32.png
rename to src-tauri/icons/32x32.png
diff --git a/apps/desktop/src-tauri/icons/64x64.png b/src-tauri/icons/64x64.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/64x64.png
rename to src-tauri/icons/64x64.png
diff --git a/apps/desktop/src-tauri/icons/Square107x107Logo.png b/src-tauri/icons/Square107x107Logo.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/Square107x107Logo.png
rename to src-tauri/icons/Square107x107Logo.png
diff --git a/apps/desktop/src-tauri/icons/Square142x142Logo.png b/src-tauri/icons/Square142x142Logo.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/Square142x142Logo.png
rename to src-tauri/icons/Square142x142Logo.png
diff --git a/apps/desktop/src-tauri/icons/Square150x150Logo.png b/src-tauri/icons/Square150x150Logo.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/Square150x150Logo.png
rename to src-tauri/icons/Square150x150Logo.png
diff --git a/apps/desktop/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/Square284x284Logo.png
rename to src-tauri/icons/Square284x284Logo.png
diff --git a/apps/desktop/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/Square30x30Logo.png
rename to src-tauri/icons/Square30x30Logo.png
diff --git a/apps/desktop/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/Square310x310Logo.png
rename to src-tauri/icons/Square310x310Logo.png
diff --git a/apps/desktop/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/Square44x44Logo.png
rename to src-tauri/icons/Square44x44Logo.png
diff --git a/apps/desktop/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/Square71x71Logo.png
rename to src-tauri/icons/Square71x71Logo.png
diff --git a/apps/desktop/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/Square89x89Logo.png
rename to src-tauri/icons/Square89x89Logo.png
diff --git a/apps/desktop/src-tauri/icons/StoreLogo.png b/src-tauri/icons/StoreLogo.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/StoreLogo.png
rename to src-tauri/icons/StoreLogo.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml b/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml
rename to src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png
rename to src-tauri/icons/android/mipmap-hdpi/ic_launcher.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png
rename to src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png
rename to src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png
rename to src-tauri/icons/android/mipmap-mdpi/ic_launcher.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png
rename to src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png
rename to src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png
rename to src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png
rename to src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png
rename to src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png
rename to src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png
rename to src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png
rename to src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png
rename to src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png
rename to src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png
diff --git a/apps/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png
rename to src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png
diff --git a/apps/desktop/src-tauri/icons/android/values/ic_launcher_background.xml b/src-tauri/icons/android/values/ic_launcher_background.xml
similarity index 100%
rename from apps/desktop/src-tauri/icons/android/values/ic_launcher_background.xml
rename to src-tauri/icons/android/values/ic_launcher_background.xml
diff --git a/apps/desktop/src-tauri/icons/icon.icns b/src-tauri/icons/icon.icns
similarity index 100%
rename from apps/desktop/src-tauri/icons/icon.icns
rename to src-tauri/icons/icon.icns
diff --git a/apps/desktop/src-tauri/icons/icon.ico b/src-tauri/icons/icon.ico
similarity index 100%
rename from apps/desktop/src-tauri/icons/icon.ico
rename to src-tauri/icons/icon.ico
diff --git a/apps/desktop/src-tauri/icons/icon.png b/src-tauri/icons/icon.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/icon.png
rename to src-tauri/icons/icon.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-20x20@1x.png b/src-tauri/icons/ios/AppIcon-20x20@1x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-20x20@1x.png
rename to src-tauri/icons/ios/AppIcon-20x20@1x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/src-tauri/icons/ios/AppIcon-20x20@2x-1.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-20x20@2x-1.png
rename to src-tauri/icons/ios/AppIcon-20x20@2x-1.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-20x20@2x.png b/src-tauri/icons/ios/AppIcon-20x20@2x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-20x20@2x.png
rename to src-tauri/icons/ios/AppIcon-20x20@2x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-20x20@3x.png b/src-tauri/icons/ios/AppIcon-20x20@3x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-20x20@3x.png
rename to src-tauri/icons/ios/AppIcon-20x20@3x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-29x29@1x.png b/src-tauri/icons/ios/AppIcon-29x29@1x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-29x29@1x.png
rename to src-tauri/icons/ios/AppIcon-29x29@1x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/src-tauri/icons/ios/AppIcon-29x29@2x-1.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-29x29@2x-1.png
rename to src-tauri/icons/ios/AppIcon-29x29@2x-1.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-29x29@2x.png b/src-tauri/icons/ios/AppIcon-29x29@2x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-29x29@2x.png
rename to src-tauri/icons/ios/AppIcon-29x29@2x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-29x29@3x.png b/src-tauri/icons/ios/AppIcon-29x29@3x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-29x29@3x.png
rename to src-tauri/icons/ios/AppIcon-29x29@3x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-40x40@1x.png b/src-tauri/icons/ios/AppIcon-40x40@1x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-40x40@1x.png
rename to src-tauri/icons/ios/AppIcon-40x40@1x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-40x40@2x-1.png b/src-tauri/icons/ios/AppIcon-40x40@2x-1.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-40x40@2x-1.png
rename to src-tauri/icons/ios/AppIcon-40x40@2x-1.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-40x40@2x.png b/src-tauri/icons/ios/AppIcon-40x40@2x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-40x40@2x.png
rename to src-tauri/icons/ios/AppIcon-40x40@2x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-40x40@3x.png b/src-tauri/icons/ios/AppIcon-40x40@3x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-40x40@3x.png
rename to src-tauri/icons/ios/AppIcon-40x40@3x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-512@2x.png b/src-tauri/icons/ios/AppIcon-512@2x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-512@2x.png
rename to src-tauri/icons/ios/AppIcon-512@2x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-60x60@2x.png b/src-tauri/icons/ios/AppIcon-60x60@2x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-60x60@2x.png
rename to src-tauri/icons/ios/AppIcon-60x60@2x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-60x60@3x.png b/src-tauri/icons/ios/AppIcon-60x60@3x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-60x60@3x.png
rename to src-tauri/icons/ios/AppIcon-60x60@3x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-76x76@1x.png b/src-tauri/icons/ios/AppIcon-76x76@1x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-76x76@1x.png
rename to src-tauri/icons/ios/AppIcon-76x76@1x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-76x76@2x.png b/src-tauri/icons/ios/AppIcon-76x76@2x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-76x76@2x.png
rename to src-tauri/icons/ios/AppIcon-76x76@2x.png
diff --git a/apps/desktop/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png
rename to src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png
diff --git a/apps/desktop/src-tauri/icons/trayTemplate.png b/src-tauri/icons/trayTemplate.png
similarity index 100%
rename from apps/desktop/src-tauri/icons/trayTemplate.png
rename to src-tauri/icons/trayTemplate.png
diff --git a/apps/desktop/src-tauri/src/db.rs b/src-tauri/src/db.rs
similarity index 79%
rename from apps/desktop/src-tauri/src/db.rs
rename to src-tauri/src/db.rs
index 6aac5a1..57f7bf5 100644
--- a/apps/desktop/src-tauri/src/db.rs
+++ b/src-tauri/src/db.rs
@@ -53,22 +53,6 @@ pub fn insert_download(conn: &Connection, id: &str, status: &str, queue_id: &str
Ok(())
}
-pub fn update_download_status(conn: &Connection, id: &str, status: &str) -> Result<()> {
- conn.execute(
- "UPDATE downloads SET status = ?1 WHERE id = ?2",
- params![status, id],
- )?;
- Ok(())
-}
-
-pub fn update_download_data(conn: &Connection, id: &str, data: &str) -> Result<()> {
- conn.execute(
- "UPDATE downloads SET data = ?1 WHERE id = ?2",
- params![data, id],
- )?;
- Ok(())
-}
-
pub fn delete_download(conn: &Connection, id: &str) -> Result<()> {
conn.execute("DELETE FROM downloads WHERE id = ?1", params![id])?;
Ok(())
@@ -84,16 +68,6 @@ pub fn get_all_downloads(conn: &Connection) -> Result> {
Ok(res)
}
-pub fn get_downloads_by_status(conn: &Connection, status: &str) -> Result> {
- let mut stmt = conn.prepare("SELECT data FROM downloads WHERE status = ?1")?;
- let iter = stmt.query_map(params![status], |row| row.get(0))?;
- let mut res = Vec::new();
- for data in iter {
- res.push(data?);
- }
- Ok(res)
-}
-
// Settings CRUD
pub fn get_settings(conn: &Connection) -> Result