1.2.0 (2026-07-29)
Highlights
- GUI modularization (#88): split the monolithic app into a
gui/package — tab builders, widgets, mixins, browse dialogs, andmain_window.py— with a slimapp.pyentry point. - Documentation (#79, #81): user and maintainer docs, README screenshots, and architecture guides aligned with the new layout.
- CLI parity hardening:
flags.tomlas the single source of truth for CLI flags; improved command emission, launcher environment, and regression coverage.
🚀 Features & UI
- Inline field validation, diagnostics menus, and a global exception handler for clearer runtime errors.
- Config, log, and diagnostics actions moved to the File menu.
- macOS
.icnsbuild icons; icon generation consolidated intoscripts/generate_build_icons.py. - Unsaved-changes prompt only appears when configuration actually changed.
🐛 Bug fixes
- Windows profile config migration and save feedback (#81).
- Propagate global skip-SSL setting to the upload-immich source tab.
- Pre-release hardening for pause-jobs, SHA256 verification, and CLI defaults.
- Multi-resolution Windows icon and high-DPI SVG icon rendering.
- Nuitka packaging updated to include
assets/correctly. - Dependency security: resolve pip-audit findings in requests/urllib3/idna (#95).
🔧 Refactoring & architecture
- Theme stylesheet extracted to
assets/theme.qss. - Tests split from a single
test_app.pyinto focused modules; added coverage for terminal launcher, AdvancedFlagRow bounds, config quarantine, and serverless tabs. - Repo hygiene: leaner AI bundles, CLI help fixtures shipped from
core/fixtures.