Commit Graph

220 Commits

Author SHA1 Message Date
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
NimBold 59a1fa5cd5 docs: add cross-platform evolution progress section to README 2026-06-12 16:28:00 +03:30
NimBold d6690c7769 feat: initial tauri desktop app rewrite with ui and settings wired 2026-06-12 16:21:16 +03:30
NimBold e6ab997b00 chore: clean up scratch files 2026-06-11 19:05:01 +03:30
NimBold 32c6dcc2d6 chore(release): prepare 0.7.3 v0.7.3 2026-06-11 18:26:41 +03:30
NimBold 79f4c8f0e9 fix: pad overall progress total for first track to prevent 100% snapback
- When yt-dlp underestimates the total bytes (which often excludes audio), the first track download would prematurely hit 100% and then snap back to a lower percentage when the second track started.
- Added a 20% padding to the overall expected size during the first file download to leave room for potential secondary tracks.
- Also added a safeguard to ensure the visually reported overall progress fraction never decreases during a download.
2026-06-11 14:38:29 +03:30
NimBold 2ab3325f30 feat: accumulate track sizes to present a unified overall progress bar
- Removed track-specific status messages in favor of a simpler generic message.
- Passed initial `sizeBytes` estimation into the progress parser.
- YTDLPProgressParser now accumulates sizes across multiple sequential downloads (like video then audio).
- The progress fraction and displayed size are correctly computed relative to the overall expected size, preventing the progress bar from resetting to 0% mid-download.
2026-06-11 14:31:29 +03:30
NimBold 4856b3f3b2 fix: emit distinct status messages for individual tracks during download
- yt-dlp downloads video and audio streams sequentially, causing the progress bar to reset when switching streams.
- The status message was previously hardcoded to 'Downloading Media' and overwrote track change indicators.
- Now, when yt-dlp starts a new stream, the status message clearly reads 'Downloading Video Track', 'Downloading Audio Track', etc., explaining the progress reset to the user.
2026-06-11 14:19:59 +03:30
NimBold 99500254a1 feat: enhance speed and ETA display logic during pause and drop
- Keep the ETA visible even when the download is paused so the user knows how much time is left.
- When the connection drops, show the last known speed for 3 seconds. If the connection isn't restored, show '0 KiB/s' instead of 'Unknown'.
- Clear speed and ETA fields when a download is completed, queued, or canceled.
2026-06-11 14:12:16 +03:30
NimBold aa9b3aad2a fix: resolve unknown speed flickering and ultra-wide high-resolution detection
- Ignore 'Unknown' or '-' speed/ETA updates if a valid speed is already known to prevent UI flickering.
- Improve high-resolution video detection by checking 'format_note', parsing the 'resolution' string, and using more relaxed height tolerances to correctly identify ultra-wide formats (e.g., 2160p with a 1920 height).
2026-06-11 14:04:57 +03:30
NimBold 1c8f189b54 feat(ui): add Deno to about credits and engines list v0.7.2 2026-06-11 13:39:53 +03:30
NimBold 11b030f66a chore(release): prepare 0.7.2 2026-06-11 13:30:06 +03:30
NimBold e165366820 fix(media): stabilize bundled download engines 2026-06-11 13:15:19 +03:30
NimBold 7b3d620efa fix(build): revert to one-file yt-dlp binary to bypass macOS Gatekeeper Library Validation
Gatekeeper enforces Library Validation and prevents `dlopen` of quarantined ad-hoc signed dynamic libraries on ARM64. Because the `_internal` folder was shipped inside the DMG, the user's system flagged it with the com.apple.quarantine attribute, causing the Python shared library to fail to load inside `yt-dlp`.

By reverting back to the single-file PyInstaller binary (which is now properly code-signable without corruption on macOS), PyInstaller extracts the `_internal` folder at runtime to `/var/folders/...`. These extracted files do not inherit the quarantine flag, allowing AMFI to successfully load them and completely bypassing the dlopen system policy rejection.
v0.7.1
2026-06-11 05:20:07 +03:30
NimBold db293a2613 chore: re-release 0.7.1 2026-06-11 05:06:39 +03:30
NimBold 49a4358212 fix: increase yt-dlp timeout for YouTube JS PoW
The latest yt-dlp release (2026.06.09) requires heavy JavaScript execution to solve YouTube's PoW challenges. This takes ~35s on most machines, which exceeded the hardcoded 30s timeout, causing 'Failed to load options'. Increased the timeout to 120s and improved the UI to show actual errors instead of hardcoding 'Failed to load options'.
2026-06-11 05:00:39 +03:30
NimBold a916ff3f92 fix: prevent youtube metadata extraction timeout
This fixes an issue where node child processes spawned by yt-dlp would keep standard output pipes open, preventing the EOF event from firing and causing the application to hang until a 30s timeout occurred.
2026-06-11 04:24:40 +03:30
NimBold b4185306ce chore(release): prepare 0.7.1 2026-06-11 04:03:03 +03:30
NimBold 39355f8d2d fix: resolve correct filename for auto-captured downloads 2026-06-11 03:32:14 +03:30
NimBold 55c6dbf41b docs: prepare v0.7.1 release 2026-06-11 03:17:34 +03:30
NimBold ae3476293e fix(security): address v0.7.0 security audit vulnerabilities
- fix(media): use temp config file for yt-dlp credentials
- fix(rpc): exclude rpcSecret and rpcPort from serialization
- fix(ssrf): validate private hosts for all fetches
- fix(uri): add rate limiting to firelink scheme
- fix(auth): implement HMAC-SHA256 request signing for LocalExtensionServer
- fix(fs): prevent path traversal during file deletion
- fix(fs): apply strict 0o600 permissions to aria2.conf
- fix(crypto): remove insecure UUID fallback for pairing token
- fix(http): strip CRLF characters from custom headers
- fix(network): use POSIX socket to eliminate port-finding race window
- fix(ui): limit text input lengths in Add Downloads view
- fix(concurrency): implement thread-safe temp directory cleanup
- feat(ui): modernize sidebar and download table components
2026-06-11 03:13:47 +03:30
NimBold facab68237 chore(release): bump version to 0.7.0 and update changelog v0.7.0 2026-06-11 00:04:51 +03:30
NimBold 3a7c594d7c ci: restore macOS SDK 26 check per project requirements
- Ensure SDK version is at least 26 to avoid UI issues with older SDKs
2026-06-10 23:45:46 +03:30
NimBold 0ace3e4111 fix: resolve additional bugs identified in code review
- core: remove DispatchGroup from MediaExtractionEngine to fix hanging on yt-dlp launch failure
- core: clear readabilityHandlers in Aria2DownloadEngine if process fails to launch
- core: fix TOCTOU type warning for findFreePort
- build: fix inverted logic in Mach-O validation script
- ci: fix hardcoded macOS SDK version check in release workflow
- ci: prevent workflow_dispatch from failing on verify-tag
2026-06-10 23:43:10 +03:30
NimBold 7e2e0eeb77 fix: resolve critical download bugs and configuration issues
- proxy: Prevent SOCKS5 proxy type from being silently converted to HTTP.
- core: Remove DispatchGroup from MediaDownloadEngine to fix a hang caused by unclosed output pipes when child processes inherit file descriptors.
- settings: Fix keychain primer logic to prevent wiping extension credentials on debug builds.
- ui: Resolve a batch rename collision in AddDownloadsView by properly checking new filenames against the current batch sequence.
2026-06-10 23:36:16 +03:30
NimBold 2a5452b7c6 fix: resolve multiple critical bugs identified in code review
- fix(engine): resolve aria2 port TOCTOU race and secure conf file

- fix(server): eliminate main queue deadlock risk in local extension server

- fix(controller): ensure synchronous state save on app termination

- fix(ui): fix table skipping new items by diffing identity instead of count

- fix(scheduler): use 2-letter abbreviations to resolve day name collisions

- fix(settings): purge keychain orphans when primer access is denied

- fix(metadata): prevent synchronous DNS resolution from blocking async pool

- refactor: clean up dead code and unused variables
2026-06-10 19:25:06 +03:30
NimBold fdbacb8a7f feat(ui): overhaul context menu and toolbar for modern hig
- Flattened playback controls in context menu
- Added 'Copy File Path' context action for completed downloads
- Reorganized context menu to prioritize Open/Finder actions and pin Properties to bottom
- Removed ControlGroup and explicit placements in toolbar for clean borderless style
- Renamed Start/Stop toolbar items to Resume/Pause with proper SF Symbols
- Added informative tooltips to toolbar actions
2026-06-10 18:49:55 +03:30
NimBold ffba883961 feat(ui): modernize download list and sidebar styling
- Reintroduce Speed and ETA columns with dedicated rendering
- Restructure Status column to align progress bar natively
- Enhance typography with rounded fonts and monospaced digits
- Move Settings shortcut back into sidebar for faster access
- Optimize download list sorting performance by removing dynamic sortedItems
2026-06-10 17:38:16 +03:30
NimBold 3b695169d6 feat(ui): add stop time to scheduler and unit picker to speed limiter
This commit overhauls the UI of the Scheduler and Speed Limiter tools using modern GroupBox designs. It also adds a highly-requested Stop Time feature to the scheduler to pause queues, and introduces a dynamic unit selection (KB/s, MB/s) to the Speed Limiter.
2026-06-10 12:40:31 +03:30
NimBold a5828ec586 chore: remove temporary test file 2026-06-10 12:28:07 +03:30
NimBold efb4446739 fix(security): track executable modification date for primer detection
Includes the executable's modification date in the version hash to ensure ad-hoc and local recompilations correctly trigger the keychain primer UI, preventing unexpected system prompts on boot.
2026-06-10 12:27:48 +03:30
NimBold fd90055ccd fix(security): prevent eager keychain password fetch on startup
Defers fetching site login passwords until they are strictly needed (when a download starts or when viewing properties) to prevent the OS from showing the keychain prompt before the in-app primer UI.
2026-06-10 12:03:11 +03:30
NimBold 14924cf254 feat(settings): improve UI for Site Logins, Engine, and About panes
- Refactor Site Logins pane to use a data Table with search and a dedicated editor sheet
- Add 'Reveal in Finder' buttons for bundled engines in Engine pane
- Fix alignment of 'Bundled' labels and 'Browser Cookies' picker in Engine pane
- Remove build number from the version display in About pane
2026-06-10 06:21:35 +03:30
NimBold 85f55db66f feat(settings): add ask where to save option and overhaul Locations and Downloads UI 2026-06-10 05:43:13 +03:30
NimBold cc89f48221 feat: overhaul settings panes and add global configuration options
- Overhauled Downloads, Look & Feel, and Network settings panes to match modern UI guidelines.

- Implemented global User-Agent spoofing for all download engines to bypass restrictions.

- Added new configuration options: dock badge toggle, notification controls, completion sound, auto-retries, and "ask where to save" prompt.

- Integrated NSApp.dockTile.badgeLabel for tracking active downloads in the macOS Dock.

- Ensured newly added options correctly persist through AppSettings.
2026-06-10 05:26:45 +03:30