Add application settings management, USB instrument auto-detection, and configure Tauri's bundler for production builds targeting Windows, macOS, and Linux.
Toolchain Context
Backend: Rust (Tauri 2) — settings stored via JSON file in app data directory
Bundler: Tauri's built-in bundler configured in tauri.conf.json bundle section
Sidecar bundling: ArgyllCMS binaries bundled per-platform from argyll/<platform>/ directories
Implementation Plan
Settings System (Rust + Frontend)
Persistent settings: Use tauri::api::path::app_data_dir() + a settings.json file:
argyll_binary_dir: Override path to ArgyllCMS binaries (default: bundled sidecar)
default_instrument: Preferred instrument preset
default_page_size: Preferred page size
default_quality: Preferred profile quality
project_directory: Default working directory for output files
Settings dialog: Accessible from sidebar menu. Form for all configurable values with save/reset buttons.
Instrument Auto-Detection
New Tauri commandcommands::detect_instruments(app, state):
Spawn ArgyllCMS instlist (or chartread -u -c list if available) to query USB devices
Parse JSON or text output to extract connected instrument names and ports
Return as JSON array: [{ name: "i1Pro2", port: "usb:001:003" }]
Frontend: Instrument dropdowns in Stages 2 and 3 auto-populate from detect_instruments(). Manual override always available.
Cross-Platform Packaging
tauri.conf.json bundle configuration:
Windows: .msi installer with argyll/windows-x86_64/ binaries
macOS: .dmg bundle with argyll/macos-aarch64/ binaries
Linux: .deb and .AppImage with argyll/linux-x86_64/ binaries
Platform-aware binary resolution: Update commands::resolve_binary() to use std::env::consts::OS and std::env::consts::ARCH to select the correct sidecar directory at runtime:
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Description
Add application settings management, USB instrument auto-detection, and configure Tauri's bundler for production builds targeting Windows, macOS, and Linux.
Toolchain Context
tauri.conf.jsonbundle sectionargyll/<platform>/directoriesImplementation Plan
Settings System (Rust + Frontend)
tauri::api::path::app_data_dir()+ asettings.jsonfile:argyll_binary_dir: Override path to ArgyllCMS binaries (default: bundled sidecar)default_instrument: Preferred instrument presetdefault_page_size: Preferred page sizedefault_quality: Preferred profile qualityproject_directory: Default working directory for output filesload_settings(),save_settings(settings),reset_settings()Instrument Auto-Detection
commands::detect_instruments(app, state):instlist(orchartread -u -c listif available) to query USB devices[{ name: "i1Pro2", port: "usb:001:003" }]detect_instruments(). Manual override always available.Cross-Platform Packaging
tauri.conf.jsonbundle configuration:.msiinstaller withargyll/windows-x86_64/binaries.dmgbundle withargyll/macos-aarch64/binaries.deband.AppImagewithargyll/linux-x86_64/binariescommands::resolve_binary()to usestd::env::consts::OSandstd::env::consts::ARCHto select the correct sidecar directory at runtime:New/Modified Files
[MODIFY]src-tauri/src/commands.rs— add settings commands,detect_instruments, updateresolve_binary[NEW]src-tauri/src/settings.rs— settings persistence logic[MODIFY]src-tauri/src/lib.rs— register new module and commands[MODIFY]src-tauri/tauri.conf.json— bundle targets and signing config[MODIFY]src/index.html— settings dialog panel[NEW]src/js/settings.js— settings UI logic[NEW].gitea/workflows/release.yml— CI build workflow (future)Acceptance Criteria
resolve_binary()correctly selects platform-specific sidecar at runtimetauri buildproduces installable packages for Linux (.deb, .AppImage)References
tauri.conf.json→bundle.resources