The double-click fill/fit mode was hardcoded (image_canvas: _isFilled = true) and
reset on every image change, so it never survived a restart. It is now stored as
"filled" in window.json and restored on launch and on image switch.
WindowPersistence.saveSync() now merges with the existing file, otherwise the
startup/move/resize geometry writes would drop the mode key.
Also: version 1.5.0, CHANGELOG entry, dist/ ships imajviewer_1.5.0_amd64.deb
(replaces 1.4.2).
m[13] (blue alpha coefficient, always 0) was read as the blue offset instead of
m[14], so saved JPEGs lost the blue brightness/contrast offset and came out with a
color cast. Saturation/rotate were unaffected (no offsets).
Also: version 1.4.2, CHANGELOG entry, dist/ ships imajviewer_1.4.2_amd64.deb
(replaces 1.4.1).
- docs/ untracked: internal dev docs (reports, sessions, plans) stay local
- dist/: keep only latest .deb (1.3.1) and .exe (1.1.0); remove 4 old builds
- .gitignore: ignore /docs/ and all dist binaries except the two latest
- Save visible area at original resolution as JPEG q90 (title bar button or Ctrl+S)
- Output name: original name + _HHmmss suffix; no overwrite, warning shown
- Active color effects baked in; rotation saves bounding box
- New: crop_save_service, l10n strings TR/EN, docs/plan-crop-save.md
- Move all distribution binaries to dist/ (Linux .deb + Windows .exe)
- Remove release/ directory (redundant, merged into dist/)
- Remove root-level .deb and .tar.gz leftovers
- Update install.sh to reference dist/ instead of release/
- Update README.md with correct dist/ paths and .deb-first Linux install
- Update .gitignore: ignore root binaries, keep dist/*.deb and dist/*.exe