Improve configuration persistence and recovery UX
Goal
Prevent loss of unsaved experiment settings while keeping portable configuration separate from QSettings UI preferences.
Unsaved changes should be persisted in a temp recovery JSON, which the user can access.
This is to prevent settings being buried in QSettings, and allow for better inspection.
Persist in the recovery JSON
Autosave the complete portable experiment configuration:
multi_camera
- Camera list, including single-camera setups
- Backend and device identity
- Resolution, FPS, exposure, gain, crop, rotation
- Trigger and backend-specific properties
dlc
- Model path and type
- Device, precision, resize, dynamic crop
- Additional processor options
recording
- Output directory
- Filename and container
- Codec and CRF
- Fast encoding
bbox
visualization
- Not part of the schema yet:
- Selected inference camera
- Selected processor and enabled state
Keep in QSettings
- Last explicit configuration path
- Recovery config JSON path and maybe metadata
- Recent configuration paths
- Last directory used by file dialogs
- Window geometry, dock layout, and theme (maybe)
- Session name
- Timestamp-based versus indexed run folder preference (or according to Session scope rework)
- Other local UI preferences
Recovery behavior
- Autosave modified configuration to a readable temporary JSON file
- Include:
- Schema version
- Autosave timestamp
- Associated explicit configuration path
- Never overwrite the user’s explicit JSON file automatically
- On startup, load the last valid explicit configuration best-effort
- If a newer or different recovery file exists, offer:
- Restore recovered configuration
- Use saved configuration
- Save recovery as...
- Provide a way to open the recovery JSON file location
Unsaved config changes UX
Track whether the current UI differs from the last explicit save.
Before closing, loading another configuration, or replacing the current setup, show a warning message.
Additional low-effort UX improvements
- Add a Recent configurations menu
- Improve Save As for duplicating an experiment configuration
- Extra validation?
- Later consider a Start experiment action that starts preview, initializes inference, and optionally begins recording in a single click
Improve configuration persistence and recovery UX
Goal
Prevent loss of unsaved experiment settings while keeping portable configuration separate from QSettings UI preferences.
Unsaved changes should be persisted in a temp recovery JSON, which the user can access.
This is to prevent settings being buried in QSettings, and allow for better inspection.
Persist in the recovery JSON
Autosave the complete portable experiment configuration:
multi_cameradlcrecordingbboxvisualizationKeep in QSettings
Recovery behavior
Unsaved config changes UX
Track whether the current UI differs from the last explicit save.
Before closing, loading another configuration, or replacing the current setup, show a warning message.
Additional low-effort UX improvements