TODO
Completed
- Scaffold Tauri 2.0 project with React + TypeScript
- Configure Tailwind CSS 4 with custom broadcast-style variables
- Create Rust backend module structure
- Implement CasparCG XML parser/generator (
quick-xml) - Implement Global Config JSON format for profiles
- Implement AMCP TCP client with async commands
- Implement DeckLink device enumeration (mock data)
- Implement system version detection (NDI, Scanner)
- Create React frontend components
- Build Zustand store for state management
- Create TypeScript types matching Rust structures
- Fix Tauri 2.0 command visibility constraints (remove
pubfrom commands) - Fix dialog plugin configuration error
- Verify
pnpm tauri devruns successfully
In Progress
- Integrate DeckLink SDK for Windows builds
- Copy SDK headers to
src-tauri/sdk/decklink/ - Create C wrapper for COM API
- Configure
build.rsfor Windows compilation - Update Rust bindings to use real SDK
- Copy SDK headers to
Pending
High Priority (Windows Release)
- Windows DeckLink SDK integration
- Test Windows build (
pnpm tauri build --target x86_64-pc-windows-msvc) - Code signing for Windows
- Installer configuration (NSIS/WiX)
Medium Priority (Feature Complete)
- Profile import/export functionality
- Channel configuration UI (add/remove/reorder)
- Consumer configuration forms (decklink, ndi, screen)
- Video mode dropdown with all supported formats
- AMCP connection status polling
- Auto-reconnect on connection loss
Key/Fill Test Pattern Integration
Integrate the test/key-fill-identifier.html test pattern into the GUI for one-click channel verification without requiring the CasparCG client.
-
Test Pattern Server
- Embed static HTTP server in Tauri backend (or use Tauri’s asset protocol)
- Serve
test/key-fill-identifier.htmlat predictable URL - Support dynamic port configuration
-
Channel Test UI
- Add “Test Channels” button to toolbar/menu
- Toggle button sends AMCP commands to all configured channels:
CG {ch}-20 ADD 0 "http://localhost:{port}/key-fill-identifier.html?mode=fill&id={ch}" 1CG {ch}-19 ADD 0 "http://localhost:{port}/key-fill-identifier.html?mode=key&id={ch}" 1MIXER {ch}-19 KEYER 1
- “Stop Test” clears all test layers
- Per-channel test toggle in channel list
-
Audio Ident System
- Implement Web Speech API ident in test pattern
- Voice synthesis (rate 0.9, pitch 0.9)
- Stereo test tones via Web Audio API with
StereoPannerNode - Timed announcement schedule:
Time Left Channel Right Channel :00 Intro + left ident Intro :15 — Right ident :30 Left short — :45 — Right short - Enable via
?audio=1URL parameter - Feed number in announcements matches channel ID
-
Preview Panel
- Embedded WebView showing preview mode of test pattern
- Dropdown to select channel for preview
- Visual confirmation without SDI monitoring
Low Priority (Polish)
- Application icon and branding
- Dark/light theme toggle
- Keyboard shortcuts
- Undo/redo for config changes
- Config validation with error highlighting
- Cross-platform testing (Linux, macOS)
Known Issues
-
Unused code warnings — Many helper functions in DeckLink and system modules are unused until SDK integration is complete
-
XML parser incomplete — Currently parses basic structure; needs full consumer type support
-
AMCP client blocking — Should add timeout handling for unresponsive servers
Technical Debt
- Add proper error types instead of
Stringerrors - Add logging with
logandenv_loggercrates - Add unit tests for config parsing
- Add integration tests for AMCP client
- Clean up unused imports and dead code