Running Cuemark
Development mode
cargo tauri dev # starts the Vite dev server + Tauri window
npm run check # TypeScript + Svelte type check
npm test # beat-grid / BPM algorithm tests
cd src-tauri && cargo check # Rust type check only
Frontend files hot-reload instantly. Rust changes under
src-tauri/ trigger a full recompile, and the old binary
keeps running until that finishes — give it a moment after editing
backend code.
Two windows, two displays
Cuemark opens a control window (deck previews, crossfader, media browser, MIDI status) and a separate output window that does the actual GPU compositing and is meant to run fullscreen on a second display — the projector. Move the output window to display 2 and press fullscreen; layout is currently manual (automatic display selection is on the roadmap).
Logging
Backend logs — the audio pipeline, MIDI events, device enumeration, GStreamer bus messages — are always written to a log file, regardless of how the app was launched:
tail -f ~/.local/share/com.cuemark.app/logs/cuemark.log
Loading media
Decks are video-only: load a video file onto a deck, loop it, and control playback rate. Audio and video stay in sync off the audio clock, so pitch-preserving rate changes (via the jog wheel or tempo fader) don't need a seek.