Commit Graph
100 Commits
Author SHA1 Message Date
spinline 68b517a336 fix: use JavaScript for base64 decoding to avoid UTF-8 encoding issues (65 bytes expected) 2026-02-06 01:17:01 +03:00
spinline cd2a398b15 feat: request push notification permission when settings button clicked 2026-02-06 01:15:42 +03:00
spinline 1c3ee296f7 fix: skip auto push notification request on Safari (requires user gesture), add debug logs for VAPID key 2026-02-06 01:06:07 +03:00
spinline e9a82b289b fix: enable push notifications on macOS Safari 16+ (API-based detection instead of UA) 2026-02-06 00:59:52 +03:00
spinline 4dab66c234 fix: enable push notifications on Chrome/Firefox/Edge (all platforms), disable only macOS Safari 2026-02-06 00:55:56 +03:00
spinline 8ccc9e52f3 fix: skip push notifications on macOS Safari (only iOS supports web push) 2026-02-06 00:53:12 +03:00
spinline 7b7cb58871 fix: request notification permission before push subscription on iOS 2026-02-06 00:51:41 +03:00
spinline 3369853c06 fix: attempt push notification subscription when permission is default on iOS 2026-02-06 00:33:52 +03:00
spinline e8af1a1812 fix: Patch coarsetime for MIPS AtomicU64 support
- Vendor coarsetime crate with portable-atomic fallback
- Use portable-atomic on targets without 64-bit atomics
- Patch crates.io to use local coarsetime
- Fixes MIPS build failure (AtomicU64 missing)
2026-02-06 00:20:51 +03:00
spinline 25e2b6bec9 fix: Enable push on MIPS by switching web-push client
- Use hyper-client to avoid isahc/coarsetime (AtomicU64 on MIPS)
- Keep push notifications enabled for MIPS builds
- Update CI MIPS build to use default features
2026-02-06 00:14:27 +03:00
spinline 8cd4a998a8 fix: Make push notifications optional for MIPS compatibility
- Add push-notifications feature flag (enabled by default)
- Make web-push and openssl optional dependencies
- Conditionally compile push notification code
- Disable push notifications for MIPS builds in CI
- Fixes AtomicU64 error on 32-bit MIPS architecture
- x86_64/ARM builds still have full push notification support
2026-02-06 00:12:02 +03:00
spinline b41c3a2ecf fix: Add vendored OpenSSL for cross-compilation
- Add openssl dependency with vendored feature
- Fixes CI build for mips-unknown-linux-musl target
- Statically links OpenSSL instead of requiring system package
- Resolves openssl-sys build failures in cross-compile environment
2026-02-06 00:03:23 +03:00
spinline 2e37297a13 fix: Replace tracing with log in frontend
Frontend uses log crate, not tracing. Replaced all tracing:: calls with log:: calls to fix CI build.
2026-02-05 23:59:58 +03:00
spinline bffc72391a feat: Add iOS push notification support (iOS 16.4+)
- Platform detection utilities (is_ios, is_standalone, supports_push)
- iOS-specific meta tags and Apple touch icons
- Auto-detect iOS and show user-friendly message when not in standalone mode
- Enhanced Service Worker with iOS-compatible notification options
- Comprehensive iOS push notification documentation
- manifest.json scope for PWA compliance
- Only works when added to Home Screen (iOS Safari limitation)
2026-02-05 23:57:08 +03:00
spinline 373da566be feat: Add push notification support with VAPID keys
- Backend: web-push integration with VAPID keys
- Push subscription endpoints (GET /api/push/public-key, POST /api/push/subscribe)
- In-memory subscription store
- Frontend: Auto-subscribe to push after notification permission granted
- Service Worker: Push event handler
- Send push notifications when torrents complete
- Works even when browser is closed
2026-02-05 23:53:23 +03:00
spinline 60fc887327 fix(ios): add vibrate API feature detection for iOS Safari
- iOS Safari doesn't support navigator.vibrate()
- Added feature detection before calling vibrate
- Prevents TypeError on iOS devices
- Haptic feedback still works on Android/Chrome
2026-02-05 23:30:54 +03:00
spinline 7ad6455a1e chore: remove debug logging from browser notifications
- Cleaned up verbose notification logs
- Kept error logging for troubleshooting
- Notifications confirmed working on Chrome/macOS
2026-02-05 23:28:12 +03:00
spinline 17551af8b5 fix: remove on:close event from add torrent modal to prevent callback panic
- Dialog's on:close was calling callback after scope disposal
- Caused 'could not get stored value' error in leptos_reactive
- on_close callback still properly called via handle_close and submit success
2026-02-05 22:52:47 +03:00
spinline 614d6a3117 fix: remove manual notification.close() to prevent WASM crash
- Browser automatically closes notification after 5 seconds
- Manual close() was causing unreachable code error
- Changed to just create and let browser handle lifecycle
2026-02-05 22:45:51 +03:00
spinline 1361b5a228 debug: add detailed logging for browser notifications
- Log notification permission status
- Log critical event detection
- Log notification creation attempts
- Log notification failures with error details
- Help troubleshoot why notifications aren't showing
2026-02-05 22:39:00 +03:00
spinline 3efe60a0f0 feat(pwa): add PWA support and browser notifications for critical events 2026-02-05 22:25:31 +03:00
spinline 480604a97a fix(backend): detect torrent completion by percent_complete reaching 100%
- Changed detection from status change to percent_complete threshold
- Added logging for status changes (debugging)
- More reliable completion detection
2026-02-05 22:05:14 +03:00
spinline b1c7ff856e feat(backend): add toast notification when torrent completes
- Detects Downloading -> Seeding status transition
- Sends 'Torrent tamamlandı: <name>' notification via SSE
2026-02-05 21:55:13 +03:00
spinline ce6c3e01aa feat(frontend): add SSE auto-reconnect with toast notifications
- Automatic reconnection with exponential backoff (1s to 30s max)
- Toast when connection is lost: 'Sunucu bağlantısı kesildi'
- Toast when reconnected: 'Sunucu bağlantısı yeniden kuruldu'
- Backend rTorrent notifications still work via SSE
2026-02-05 21:46:20 +03:00
spinline 3bc4b0f364 fix(css): rebuild tailwind to include DaisyUI alert classes 2026-02-05 21:35:34 +03:00
spinline 88b2dddba0 fix(toast): use proper DaisyUI alert structure with SVG icons 2026-02-05 21:26:28 +03:00
spinline 579be70a5a fix(toast): make responsive for mobile screens 2026-02-05 21:20:49 +03:00
spinline ce32eadffd fix(toast): simplify style, remove duplicate backend notifications 2026-02-05 21:18:58 +03:00
spinline f2ca731827 fix(frontend): fix toast positioning with wrapper div and inline styles 2026-02-05 21:11:36 +03:00
spinline 0b935638af fix(frontend): disable broken service worker registration 2026-02-05 21:04:42 +03:00
spinline 718fed554f fix(frontend): fix toast positioning - move outside drawer, use fixed position 2026-02-05 21:02:47 +03:00
spinline e8da646a91 fix(frontend): prevent callback panic by deferring menu close to on_close 2026-02-05 20:55:14 +03:00
spinline 497b39e0ae fix(frontend): use signal-based toast for async contexts 2026-02-05 20:48:40 +03:00
spinline 6c7379483e feat(frontend): add clean-code toast notifications 2026-02-05 20:40:11 +03:00
spinline 6e4a9e2d51 fix: resolve frontend build errors and warnings 2026-02-05 18:49:51 +03:00
spinline e2a8e17eae feat: implement notification system and backoff strategy for rTorrent polling 2026-02-05 18:31:42 +03:00
spinline 97086bf33a refactor(backend): replace magic numbers with named constants for rTorrent fields 2026-02-05 18:11:53 +03:00
spinline 661d18979b fix(backend): replace blocking std::fs with async tokio::fs 2026-02-05 18:04:30 +03:00
spinline 4c728ad066 docs: update README with comprehensive tech stack and features 2026-02-05 00:41:41 +03:00
spinline 209b7ec2c3 fix(ui): format ETA to be human readable 2026-02-05 00:28:30 +03:00
spinline f4b3820600 fix(ui): prevent theme dropdown from being permanently interactive by removing block class 2026-02-05 00:22:04 +03:00
spinline 564d0c129b fix(ui): improve mobile view contrast by setting background to base-200 2026-02-05 00:19:24 +03:00
spinline ebd6d55468 fix(ui): ensure default theme is set correctly in incognito mode 2026-02-05 00:10:14 +03:00
spinline 76195584a3 feat(ui): add dedicated Paused filter 2026-02-04 23:45:58 +03:00
spinline 6cc0043111 feat(ui): add abyss theme 2026-02-04 23:38:44 +03:00
spinline 07cfd41cd1 fix(logic): exclude incomplete paused torrents from completed filter 2026-02-04 23:32:02 +03:00
spinline 97753762b4 fix(ui): update theme selector icon to paint-brush 2026-02-04 23:26:55 +03:00
spinline efcee71f56 feat(ui): add more themes (cupcake, dracula, cyberpunk, emerald, sunset) 2026-02-04 23:21:12 +03:00
spinline a6a40997fb fix(ui): replace mismatched upload icon with consistent arrow-up icon 2026-02-04 23:16:43 +03:00
spinline 75a0a37dba fix(ui): enable dim and nord themes by removing conflicting config 2026-02-04 23:09:33 +03:00
spinline 6e9af2b48a feat(ui): persist theme selection in local storage 2026-02-04 22:56:49 +03:00
spinline 8471fe0dc2 fix: resolve unused variable warning and revert tailwind config conflict 2026-02-04 20:30:43 +03:00
spinline db7c074ce3 fix(config): explicity add daisyui plugin and themes to tailwind config 2026-02-04 20:27:47 +03:00
spinline 7e7d6b17db chore(ui): update daisyui theme config to include dim and nord 2026-02-04 20:15:43 +03:00
spinline 874e24389e chore(ui): cleanup unused themes, keeping only light/dark/dim/nord 2026-02-04 20:04:13 +03:00
spinline 4b36123264 fix(ui): cleaner rewrite of torrent table without macro comments 2026-02-04 19:50:00 +03:00
spinline e4a8716502 fix(ui): restore table footer and fix syntax errors 2026-02-04 19:45:48 +03:00
spinline 3b63aa18ac fix(ui): remove accidentally duplicated code block in torrent table 2026-02-04 19:42:48 +03:00
spinline 9f44688a4f feat(ui): add mobile sorting dropdown with native focus implementation 2026-02-04 19:39:37 +03:00
spinline 6076637012 fix(ui): global touch blur listener for robust ios dropdown closing 2026-02-04 19:28:02 +03:00
spinline 0d9d6f3641 fix(ui): restore missing limits logic for statusbar 2026-02-04 19:20:45 +03:00
spinline c42ee6ce81 fix(ui): refactor to native css focus dropdowns for ios support 2026-02-04 19:14:20 +03:00
spinline a47bc38909 fix(ui): use blocks for show conditions to satisfy macro parser 2026-02-04 19:08:13 +03:00
spinline de0f85e81a fix(ui): resolave closure type mismatch and lint warnings 2026-02-04 19:02:01 +03:00
spinline 95b7535ff2 fix(ui): use global touchstart listener for ios dropdowns 2026-02-04 18:37:36 +03:00
spinline 79f18a4c39 fix(ui): adopt context menu backdrop pattern for robust ios dropdowns 2026-02-04 18:28:56 +03:00
spinline 05f813673b fix(ui): use global window listener for dropdowns, remove overlays, restore theme logic 2026-02-04 18:18:21 +03:00
spinline 3e806d37ae fix(ui): robust iOS dropdown handling and explicit active styles 2026-02-04 18:03:22 +03:00
spinline f0b3db9caf fix(ui): finalize iOS dropdown interactions and add selection checkmark 2026-02-04 17:53:22 +03:00
spinline 57da8b02c2 fix(ui): use standard button role for iOS overlays and escalate debug logs 2026-02-04 17:50:50 +03:00
spinline 4bcb998888 chore: force debug logging for speed limits 2026-02-04 17:42:12 +03:00
spinline 4949b756bd fix(ui): use opaque-but-invisible overlay for iOS click handling 2026-02-04 17:40:27 +03:00
spinline 0ac563bc6f chore: debug speed limit selection mismatch 2026-02-04 17:37:03 +03:00
spinline 978ca705a6 fix(ui): add prevent_default to dropdown overlays for iOS 2026-02-04 17:34:20 +03:00
spinline c972324705 fix(ui): use approximate comparison for speed limit active state 2026-02-04 17:31:55 +03:00
spinline 20a859e7c7 fix(ui): resolve iOS dropdown backdrop click issue 2026-02-04 17:25:34 +03:00
spinline 4fbb896ef8 fix: use throttle.global_*.max_rate.set_kb for setting speed limits
- Changed from buggy .set method to reliable .set_kb method
- Added empty string as first parameter (throttle name)
- Convert bytes to KB before sending to rTorrent
2026-02-04 17:22:48 +03:00
spinline 0a507c7d72 fix(frontend): add touch event handlers for ios dropdowns 2026-02-04 01:00:53 +03:00
spinline 54549d49d4 fix(backend): use set_kb rtorrent command for speed limits 2026-02-04 00:57:57 +03:00
spinline 2ae672c787 fix(frontend): improve dropdown closing behavior on ios touch devices 2026-02-04 00:53:18 +03:00
spinline 82c39b9633 fix(backend): use i4 instead of i8 for xmlrpc integer params 2026-02-04 00:49:50 +03:00
spinline f761c90448 refactor(backend): use typed XmlRpc parameters (int/string) to fix rtorrent calls 2026-02-04 00:39:21 +03:00
spinline 60ff075283 debug(frontend): log current limit on dropdown toggle 2026-02-04 00:28:06 +03:00
spinline 6657f2c16f style(frontend): refine statusbar limit dropdown ux 2026-02-04 00:17:29 +03:00
spinline a2c5c34744 feat(frontend): improve speed limit dropdown ui and ux 2026-02-04 00:14:03 +03:00
spinline b12f65ef00 feat(frontend): replace limit modal with statusbar dropdowns 2026-02-04 00:05:41 +03:00
spinline f3c49fb2cf fix(frontend): fix statusbar type errors and store logic 2026-02-03 23:36:05 +03:00
spinline 563ffad3ab feat: add global stats broadcasting and statusbar integration 2026-02-03 23:12:51 +03:00
spinline 6a5ce421b9 fix(backend): update router paths to axum 0.8 syntax 2026-02-03 22:58:08 +03:00
spinline 7dfa3cf890 feat(backend): add global speed limit apis 2026-02-03 22:53:32 +03:00
spinline 86ba4206b8 chore: remove unused Theme enum 2026-02-03 22:48:13 +03:00
spinline 78f232a909 feat(backend): add advanced torrent management apis (files, peers, trackers, priority, label) 2026-02-03 22:39:02 +03:00
spinline 8f16265107 chore(frontend): remove unused imports and variables 2026-02-03 22:30:43 +03:00
spinline f7d6ddb7a9 chore(backend): suppress unused ScgiError::Protocol warning 2026-02-03 22:11:22 +03:00
spinline 4a870d75dd fix(backend): parse rtorrent version string in health check logs 2026-02-03 22:09:22 +03:00
spinline 8162f0c9ae fix(backend): fix AppEvent::FullList syntax in sse.rs 2026-02-03 22:07:01 +03:00
spinline 33ee44e1f0 feat: add api docs and refactor AppEvent to struct variant 2026-02-03 22:02:28 +03:00
spinline 07f148ed4e fix(backend): handle port binding errors gracefully instead of panicking 2026-02-03 21:49:29 +03:00
spinline 251da58a82 refactor(backend): clean up sse mapping and handler logic 2026-02-03 21:45:24 +03:00
spinline c3431db35f feat(backend): add startup health check for rtorrent socket 2026-02-03 21:41:22 +03:00