![Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>](/assets/img/avatar_default.png) gronodandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
ee16fb3fae
|
Settings store, logging & settings dialog (#5)
- AppSettings: snake_case Codable model — argyll_binary_dir,
default_instrument (stored, never applied to argv), log_level (nil ->
Debug debug / Info release), delta_e thresholds (2.0/5.0),
custom_presets, enable_i1pro2_leds, calibration_stale_days 30,
default_install_location user, ask_before_overwrite_profile,
open_color_panel_after_install
- Validation with the exact contract strings; save() refuses invalid
settings; corrupt/missing JSON -> defaults; settingsDidChange
notification posted on save (for #20)
- LogSink: rolling file at ~/Library/Logs/com.gronod.iccery2/
iccery.log, 5 MiB x 5 segments, runtime setLevel applied at startup
and on save (#158); AppLogger gates os_log+file through it
- SettingsView sheet: Argyll dir picker, instrument (display-only
caveat), i1Pro2 LEDs, ΔE fields + inline errors, stale days, install
location, overwrite + ColorSync toggles, log level, open-log-folder /
copy-path / copy-excerpt
- v1 settings path never read; writes atomic via AtomicFileWriter
- 13 new tests; 60/60 green
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-09-08 19:14:14 +01:00 |
|