Read manifest.json from the configured update_source and show a dismissable
banner when a newer version is available. Notify-only — no install yet.
- services/update_service.py: version compare + check_for_update (pure, tested)
- config: add update_source key (empty = no check)
- main_window: top banner, background-thread check; open folder via os.startfile
(QDesktopServices.openUrl mishandles file:// folder URLs — ShellExecute err 2)
- tests: +15 covering version compare and check_for_update branches
- docs 02/05/10 + tasks 17.16
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Auto-preview the first image after a folder loads (both panels), so the
canvas isn't empty (§17.8).
- Group exports as <output_dir>/<timestamp>/<print_stem>/<garment_stem>.<ext>;
one timestamp per export run, shared across the batch (§17.9).
- Remember the last garment/print folders and reopen the picker there;
persisted via config, wired through main_window (§17.10).
- Shrink the 3 box templates further and lower them (chest placement).
- Fix: batch export ignored the chosen format/quality/output dir because the
queue never received ExportOptions. Export panel now emits
export_options_changed → queue.set_export_options (+ initial sync) (§17.11).
Docs: PRD 6.1/6.8/9, architecture 4.12, UI design 5.1, tasks.md 17.8–17.11.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
§17.1 Preferences persistence:
- Wire the previously-unused config_service; remember and restore the
last-selected template and last batch mode. main_window loads config,
distributes initial values, then persists on change (save-on-change).
- template_panel: template_changed signal, select_template,
current_template_state. queue_panel: set_batch_mode + batch_mode_changed.
§17.2 Independent resets:
- Replace the combined reset and 归零 with per-section 位置/尺寸/旋转 reset
buttons (quiet ghost styling) that restore only their own aspect to the
selected template. Size reset changes width/height only, leaving X/Y.
Button de-dup:
- Remove the export panel's 应用为模板 / 重置为模板 — literal duplicates of
the template panel's 另存为 / 重置为模板. Template actions now live only
in the template area; the export panel handles output only.
Docs: PRD (6.6/6.9/9/10), architecture (4.12), UI design (7.x/10),
development-rules (6, single-home actions + consistent naming), tasks.md (17).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>