fix(desktop): set dev script to tauri dev instead of vite - #2
cole-hackman wants to merge 7 commits into
Conversation
ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
📝 WalkthroughWalkthroughMigration of Rekordbox IDs from integers to strings across schema, Rust types, queries, and frontend types; addition of a Claude CLI streaming bridge (claude_agent), new Tauri commands and IPC wrappers, agent hook refactor for three auth modes, waveform UI, playlist browser, tests, and docs. ChangesID Type Migration: Integer to String Identifiers
Claude CLI Agent Integration
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Poem
Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
Tauri requires RGBA icons. Previous PNG was RGB-only (color type 2). https://claude.ai/code/session_01W6AyniFKJQsw9Pyv1Q6yST
Rekordbox 7 stores every ID column as TEXT (UUID-like strings such as
"000uQGol0000001V"). Our schema assumed INTEGER, causing rusqlite to
panic with "Invalid column type Text at index: 0, name: ID" on a real
master.db.
Changes:
- schema.sql: all ID / foreign-key columns → TEXT PRIMARY KEY / TEXT
- types.rs: Track.id, Playlist.id/.parent_id, HotCue.id/.content_id,
PlaylistEntry.playlist_id/.content_id → String
- queries/{tracks,playlists,cues}.rs: by_id/entries/for_track take &str;
row reads use String; test call-sites updated
- connection.rs: track_by_id/playlist_entries/hot_cues_for_track → &str
- tests/integration.rs: all ID literals → string literals
- apps/desktop/src-tauri/src/lib.rs: get_track_cues track_id: i64 → String
- TypeScript: Track.id, HotCue.id/.content_id, Playlist.id/.parent_id → string
- ipc.ts, useTrackCues.ts, TrackTable.tsx: trackId/selectedTrackId → string
- test fixtures updated throughout
16 rekordbox-db tests + 71 vitest tests pass; cargo fmt applied.
https://claude.ai/code/session_01W6AyniFKJQsw9Pyv1Q6yST
- New Rust `claude_agent` module spawns `claude --print --output-format stream-json` and streams text chunks back to the frontend via uniquely named Tauri events, maintaining session continuity across messages. - `useAgent.ts` auto-detects on mount: uses claude CLI if available (`claude-cli` mode), falls back to Anthropic SDK + API key, or shows a clear error if neither is configured. - `ChatPanel` header shows a green "subscription" badge in claude-cli mode and a grey "api key" badge in api-key mode. - `SettingsPanel` shows a live auth-status indicator and hides the API key form when the claude CLI is active. - New IPC helpers: `claudeAvailable` and `chatWithClaude`. - Tests updated: SettingsPanel mock adds `claudeAvailable`; ChatPanel mock adds `mode`. https://claude.ai/code/session_01W6AyniFKJQsw9Pyv1Q6yST
34b8803 to
8f44c41
Compare
- Install wavesurfer.js v7. - Enable `core:asset:allow-asset` Tauri capability so the WebView can load local audio files via the `asset://` protocol. - New `useWaveform` hook creates a WaveSurfer instance pointed at the track's `folder_path` (converted to `asset://` URL via `convertFileSrc`). Renders waveform bars and overlays yellow markers at each cue timestamp. Syncs play/pause cursor to the rodio player. - New `WaveformDisplay` component wraps the hook in a clean 64px-tall container. Replaces the "Waveform — Phase 1" placeholder. - TrackDetailPanel now imports and renders WaveformDisplay with the sorted cue timestamps. - TrackDetailPanel tests mock WaveformDisplay (WaveSurfer can't run in jsdom) and assert the component mounts. https://claude.ai/code/session_01W6AyniFKJQsw9Pyv1Q6yST
Update STATUS.md to Phase 2 and add release note for v0.1.0. All Phase 1 checklist items are now done. https://claude.ai/code/session_01W6AyniFKJQsw9Pyv1Q6yST
- Add 8 agent tools: library search/get_track/list_playlists/list_playlist_entries/list_cues + health orphan/duplicate/broken_link scans - Add PlaylistBrowser component with recursive folder expand/collapse - Add usePlaylists hook with buildPlaylistTree helper - Add Tauri commands: list_playlist_entries, get_track_by_id, health_duplicate_scan, health_broken_link_scan - Extend types: PlaylistEntry, DuplicateGroup, BrokenTrack; fix Playlist.id to TEXT - Add corresponding IPC wrappers and agent type payloads https://claude.ai/code/session_01W6AyniFKJQsw9Pyv1Q6yST
Covers Custom Tags, Genre/Artist Cleanup, Smart Fixes, Sync/Write-back, Tracks sub-views (Incoming + Archive), and Track Matcher — with data models, Tauri command signatures, UI spec, and implementation order. https://claude.ai/code/session_01W6AyniFKJQsw9Pyv1Q6yST
The
devscript was set tovite, which launches a browser-only frontend with no Rust backend, no IPC bridge, and no native window.tauri devwraps Vite internally and starts the full Tauri shell — which is whatpnpm devneeds to do.Generated by Claude Code
Summary by CodeRabbit
New Features
Tests
Documentation