feat: iOS support, torrent search & downloads, media player, podcast pipeline#5
Open
rodolfo-arg wants to merge 12 commits into
Open
feat: iOS support, torrent search & downloads, media player, podcast pipeline#5rodolfo-arg wants to merge 12 commits into
rodolfo-arg wants to merge 12 commits into
Conversation
Major feature additions: - iOS target: Tauri iOS init, Xcode project generation, cfg gate refactoring (android → mobile/desktop), iOS stubs for all platform-gated subsystems, Apple Developer team config (365KJHJCW7), Swift compatibility linker fix for Xcode 26 - TorrentClaw integration: search/autocomplete/file-listing commands, aria2 sequential downloading (bt-prioritize-piece), file selection UI with TorrentSearch, TorrentDetail, TorrentFilePicker components - Podcast pipeline: YouTube transcript via yt-dlp (replaces whisper), VTT-to-plaintext parser, Claude CLI script generation, edge-tts narration, PodcastSettings UI component, auto-generate on download - edge-tts dependency: pip-based install via podcast-venv, full dep spec with check/install/uninstall, progress events - Platform detection: isIOS()/isMobile() frontend helpers, updated all mobile-vs-desktop guards across 15+ components/stores - Mobile capabilities: shared Android+iOS capability file Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…gs padding - sizeBytes: Option<String> → Option<u64> to match API integer response - Removed explicit #[serde(rename = "type")] — let camelCase handle contentType - Added response text logging on parse failure for debugging - Mobile logs: 96px bottom padding (clears floating nav), 5px entry gap Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…eue type fix - Rewrite media_stream.rs: temp file approach with multi-connection support, FFmpeg stderr logging, pre-buffer verification, CancellationToken shutdown - Add librqbit backend for native torrent/magnet support (lazy session init, Priority::Absolute on iOS where aria2 is unavailable) - Fix queue type bug: Added event now patches item type from backend (fixes play button not appearing for torrent downloads) - iOS: use dirs::document_dir() for default download path, play all formats via convertFileSrc (WebView handles MKV through system codecs) - Player: mobile uses direct playback, desktop uses FFmpeg streaming for non-HTML5 formats (MKV, AVI, etc.) - TorrentDetail, DownloadItem, MediaPlayer UI enhancements Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lyrics - Transcode HEVC/x265 video to H.264 for WebKit compatibility (ffprobe codec detection) - Add Whisper as managed dependency sharing podcast-venv with edge-tts - Smart subtitle language fallback: configured lang → all languages → Whisper transcription - Update podcast Claude prompt for English output, no meta-commentary - Add Spotify-style live lyrics overlay for podcast playback (LyricsView component) - Word timing interpolation from phrase-level VTT cues with O(log n) binary search - Auto-detect SRT content in .vtt files (edge-tts format mismatch fix) - Fix lyrics spacing and centering alignment Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Match Select row height to 36px (was 40px) so sort button fits toolbar - Remove vertical padding from TableHeader to match chip button height - Change speed sparkline from absolute to relative positioning so it pushes content down instead of covering the first download entry Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rsistence, UI fixes - Open video files in VLC instead of system default (macOS: open -a VLC) - Fix torrent downloads stuck at 99% by adding --seed-time=0 to aria2 - Add iOS local network entitlements for localhost server access - Persist torrent search state (query, filters, results, scroll) across navigation - Individual torrent file downloads instead of bundled - Torrent downloads always open in system player (VLC) - MKV files delegate to VLC on desktop - Fix MKV player error/loading overlay overlap - Fix torrent file picker background to match dynamic theme - Add padding between torrent file picker items Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Skip [MEMORY] metadata lines in extract_output_path to prevent counting torrent metadata as a real file completion - When final path is a directory with exactly one file, resolve to the actual file instead of the directory Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add title/thumbnail fields to EnqueueOverrides so the backend knows the episode name when downloading individual torrent files - Set prefetched title/thumbnail on Job in enqueue_url - Pass prefetchedInfo through toOverrides to the backend - Add Enter key handler on home page search input Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Instead of scanning the torrent directory (which fails when multiple files exist from previous downloads), use the actual file path from aria2's FILE: output lines. This correctly resolves to the .mp4/.mkv file, preserving extension and filename in history. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
MP4 files store metadata (moov atom) at the end, which can be 10-30MB for large files. Increasing tail priority from 1M to 32M ensures VLC can read codec info and play while still downloading. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…iles app - Fix iOS WKWebView bottom black bar via ObjC +load viewport fix (edgesForExtendedLayout, contentInsetAdjustmentBehavior) - Add ComineLiveActivity widget extension for Dynamic Island/Lock Screen download progress display - Add background audio keep-alive (silent audio + background task cycling) to prevent iOS from suspending downloads - Enable Files app visibility (UIFileSharingEnabled, LSSupportsOpeningDocumentsInPlace) - Fix torrent format badge showing full directory name (cap extension at 8 chars) - Add Live Activity start/update/finish/stop via Rust-Swift FFI (dlsym) - Add viewport-fit=cover for edge-to-edge display - Add safe area padding for content areas - Add XcodeGen widget extension target with proper embedding - Add Claude Code tooling (agents, skills, CLAUDE.md files) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tension fix - Add mobile torrent file listing via librqbit list_only mode (SharedLibrqbitSession) - Implement iOS "Open In…" sheet via UIDocumentInteractionController for file sharing - Add EMA speed smoothing for librqbit to reduce iOS network buffering jitter - Fix file extension parsing for bracketed filenames like [YTS.MX] (use known ext list) - Hide codec/score columns on mobile torrent table to prevent overflow - Show VLC overlay button during active torrent downloads on mobile - Update CLAUDE.md with iOS build sequence (xcodegen + ios build --debug + ios-deploy) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
iOS Support
Torrent Search and Downloads
Media Player
Podcast Pipeline
UI Fixes
Backend
Test plan