Commit Graph

254 Commits

Author SHA1 Message Date
NimBold 601b04c4cb fix: implement aria2 polling to prevent UI from sticking on queued 2026-06-15 17:51:32 +03:30
NimBold 58f0f0dfb1 fix(security): remediate SSRF, path traversal, and command injection vulnerabilities 2026-06-15 14:38:02 +03:30
NimBold 1b04860c94 fix: resolve P3 audit findings 2026-06-15 14:24:34 +03:30
NimBold 789a8161b2 fix: resolve P2 and P3 audit findings 2026-06-15 14:18:16 +03:30
NimBold 285ec0a81d fix: resolve P0 and P1 audit findings
- Fix state corruption on deleted queues in frontend
- Prevent concurrent dispatch of duplicate downloads
- Fix file paths when deleting native downloads
- Ensure pausing and resuming items persist state to database
- Remove duplicate IPC invocations for speed limits
- Stop PropertiesModal from resetting inputs during download progress
- Switch aria2 secret to use secure v4 UUID
- Fix SSRF vulnerability in fetch_metadata via DNS rebinding block
- Resolve race condition when reading media download logs
- Gracefully handle panics when acquiring prevent sleep lock
- Rate limit native downloads respecting global settings
- Enforce TLS certificate validation in backend requests
2026-06-15 14:10:45 +03:30
NimBold 22d59e3c11 chore: fix cargo warnings and remove unused import 2026-06-15 13:41:53 +03:30
NimBold 503e69a499 fix: remove unused imports causing CI failure 2026-06-15 13:35:58 +03:30
NimBold 9e26be5b2c fix: app nap ipc drop and implement delete modal 2026-06-15 13:29:20 +03:30
NimBold d046c95c28 fix(security): add notification plugin permissions to capabilities 2026-06-15 12:33:14 +03:30
NimBold 6cf360bce0 fix: address codebase review issues
- refactor(backend): use tokio::sync::Mutex for DbState and update commands to async
- fix(backend): remove unconditional post-queue system action in scheduler
- refactor(backend): remove dead WebSocket aria2 progress loop
- fix(backend): use character count for deep link payload length check
- fix(backend): implement dynamic port fallback for extension server
- build(backend): apply macos codesigning step for release builds
- security(backend): add explicitly defined Content-Security-Policy
- fix(frontend): replace pause_download API call with remove_download for file cleanup
- fix(frontend): resolve bug ignoring 0% progress reporting
- fix(frontend): append instead of overwrite deep link URLs when Add Modal is open
- style(frontend): append standard .dark class for dark mode themes
- style(frontend): remove ghost row layout hack from download table
- build: decouple typescript binding generation from build step
2026-06-15 11:53:24 +03:30
NimBold 2ddcd2d99a fix(scheduler): wire post queue action on stop time and remove unused field warning 2026-06-15 11:13:11 +03:30
NimBold e7608dc8b4 fix(ci): support clean checkout builds 2026-06-15 10:43:31 +03:30
NimBold 6593f9e76a refactor(repo): promote tauri app to repository root 2026-06-15 10:33:40 +03:30
NimBold ab7550d39e test(desktop): add headless download integration harness 2026-06-15 00:57:19 +03:30
NimBold 20dcb69ae2 feat(desktop): integrate native deep links and tray lifecycle 2026-06-15 00:50:42 +03:30
NimBold f806fd2cbf feat(desktop): modernize download core and type IPC
Replace shared download locking with a Tokio coordinator actor and async streamed file writes.

Generate TypeScript IPC payload types from Rust and route frontend commands and events through typed wrappers.
2026-06-14 17:38:16 +03:30
NimBold 77fdc30b80 style(ui): polish desktop interface design and interactions
- Replace abrupt sidebar toggle with modern negative-margin swipe animation
- Match stripe styling to original macOS native application with pill-shaped rows and proper faint opacity
- Remove borders between rows and background stripes
- Add dynamic flex-1 CSS clipping trick to perfectly fill viewport with stripes without causing infinite scroll
- Enhance empty state text with physical-looking shortcut keycaps, Lucide icons, OS detection, and accent colors
- Fix background color seam behind sidebar panel in Dark theme
- Restore bright accent colors for active navigation items
2026-06-14 13:11:41 +03:30
NimBold b1b17b7ad8 fix(desktop): secure extension ping handler & fix UI alignment in settings 2026-06-14 12:26:17 +03:30
NimBold 4cfd59b45b fix(settings): wire UI settings to backend and ensure cross-platform binary paths 2026-06-14 12:10:05 +03:30
NimBold 34f51884bb fix(ui): restore theme variants and selector layout 2026-06-14 10:21:19 +03:30
NimBold 58cbd0567d feat(ui): align settings with SwiftUI 2026-06-14 10:04:53 +03:30
NimBold 0e588fa360 fix(engine): restore bundled aria2 daemon 2026-06-14 09:40:57 +03:30
NimBold c82757fc2e feat(ui): match Swift download workspace 2026-06-14 09:40:57 +03:30
NimBold 7ab592b3d4 fix(ui): align macOS window chrome 2026-06-14 09:03:11 +03:30
NimBold 796d00d527 style(ui): redesign app layout to native macOS density and refine visual theme
- Adjusted overall layout scale to perfectly match original native macOS density.

- Refined sidebar into a floating rounded slab with proper padding, border, and toggle button placement.

- Fixed drag region overlap preventing button interactions in the title bar.

- Removed artificial shadow lines and scrollbars from the sidebar.

- Updated Tauri backend configuration, dependencies, and scheduler functions for improved stability.
2026-06-14 08:36:53 +03:30
NimBold 4ec1c4fdf6 fix(core): resolve aria2c daemon leak and tokio io blocking
This commit patches a critical resource leak by managing the aria2c child process using an idiomatic RAII Drop guard inside Tauri's managed state. It also purges the legacy `open` crate from Cargo.toml in favor of tauri-plugin-opener, and fully migrates all asynchronous file system operations to tokio::fs to unblock the Tokio async runtime.
2026-06-13 22:49:37 +03:30
NimBold ae19f69e7b feat(core): phase 2 native modernization
This commit removes the remaining osascript processes and implements native bindings using cocoa and objc crates for macOS dock badges and TCC automation prompts. It also migrates synchronous integration tests to tokio::process::Command.
2026-06-13 22:44:40 +03:30
NimBold d6fa8b6865 feat(core): modernize backend with rusqlite and tokio scheduler
This commit migrates Firelink to use native Rust implementations for state persistence (SQLite) and background scheduling (tokio::spawn + chrono). React's interval pollers are completely removed.
2026-06-13 22:40:19 +03:30
NimBold a2b64aa6d1 refactor(frontend): replace manual react queue state throttling with native tokio concurrency 2026-06-13 22:13:23 +03:30
NimBold 240f62bc6e refactor(backend): replace legacy manual proxy scraping with native sysproxy crate 2026-06-13 22:07:35 +03:30
NimBold 79cad4213b refactor(backend): replace legacy manual queue with native tokio semaphore concurrency 2026-06-13 22:03:34 +03:30
NimBold 6284a0a8d6 refactor(backend): modernize extension server to use axum web framework 2026-06-13 21:55:11 +03:30
NimBold f0859cb4cd refactor(backend): modernize download architecture to use global aria2c daemon with rpc 2026-06-13 21:51:33 +03:30
NimBold 19e366089e feat(desktop): modernize dark theme and update flow 2026-06-13 18:08:42 +03:30
NimBold ba37d78cba style(ui): overhaul background and themes for modern minimalist aesthetics 2026-06-13 14:45:59 +03:30
NimBold f6c7a0b8d2 feat(backend): implement cross-platform proxy resolution
- Update get_system_proxy to support Windows (via registry) and Linux (via env vars and gsettings) without external dependencies
2026-06-13 12:41:57 +03:30
NimBold 88b97862c3 feat(backend): add final phase 5 parity integration handlers
- Add get_system_proxy to resolve macOS system proxy via scutil
- Port FileClassifier to get_file_category mapping extensions accurately
- Implement check_for_updates fetching GitHub API releases with semver checking
2026-06-13 12:39:41 +03:30
NimBold c79dcfa74d feat(backend): implement download queue and resolve legacy parity gaps
- Add SSRF protection and migrate sensitive credentials to tempfiles
- Refactor aria2c process management to use ephemeral JSON-RPC
- Implement sysinfo recursive process termination for graceful stopping
- Add DownloadManager and MPSC queue for strict concurrency limits
- Configure yt-dlp to delegate download chunking to aria2c
2026-06-13 12:19:05 +03:30
NimBold f8c89e2f88 feat(desktop): modernize browser extension integration 2026-06-13 12:00:28 +03:30
NimBold 9119cafdcd feat(desktop): implement advanced transfer, tray icon, media cookies, and extension tcp server 2026-06-13 11:24:41 +03:30
NimBold 6de0cd268c feat: implement duplicate download resolution 2026-06-13 00:09:51 +03:30
NimBold dc9289fece feat: refine sidebar UI and update download categories
- Restructured layout so the sidebar acts as an edge-to-edge curved layer with a shadow
- Replaced old download categories with Musics, Movies, Compressed, Documents, Pictures, Applications, and Other
- Updated Settings > Locations tab to handle the new categories
- Added extensive predefined file extensions for smart auto-categorization of downloads
2026-06-13 00:02:07 +03:30
NimBold 610eda203e feat: implement native OS keyring for site logins
- Replaced plaintext local storage password fields with keyring v3 OS native integration.
- Tauri backend securely sets, gets, and deletes credentials via system keychains.
- Dynamic password injection occurs seamlessly on download start and metadata parsing.
2026-06-12 23:27:57 +03:30
NimBold 8cd6c1972d feat: implement site logins, queues parity, and engine settings updates
- Implemented Site Logins parity by integrating auth credentials to Rust backend (Aria2 and yt-dlp) and fetching metadata.
- Implemented Queues functionality including context menu actions (start, pause, rename, delete).
- Updated Engine settings UI to include Deno and render clean version output without extra trademark info.
2026-06-12 23:19:21 +03:30
NimBold f378fc0d8d feat(desktop): implement scheduler and speed limiter 2026-06-12 21:17:34 +03:30
NimBold 4c21a36083 feat(desktop): align UI with SwiftUI 2026-06-12 20:59:49 +03:30
NimBold a5022fbf8a feat(desktop): modernize download management 2026-06-12 20:33:17 +03:30
NimBold 3074438147 chore: remove tauri build workflow 2026-06-12 19:13:57 +03:30
NimBold c3ad5c3c75 feat(desktop): implement media extraction engine, sys integrations, and UI polish
- Implement get_free_space and set_prevent_sleep in Rust backend
- Add robust media extraction UI and format parser in AddDownloadsModal.tsx
- Wire application settings to Zustand store
- Add global user-select: none for native text feel
- Fix window dragging in Sidebar.tsx
- Add GitHub Actions CI workflow for Tauri cross-platform build
2026-06-12 19:12:34 +03:30
Nima 90b5397a46 Rename project to 'Firelink Reborn' and update description 2026-06-12 16:32:09 +03:30