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).
3.8 KiB
3.8 KiB
Changelog
All notable changes to imajViewer are documented in this file.
[Unreleased]
[1.5.0] - 2026-10-12
Added
- Fill/fit mode (double-click) is now persisted in
window.jsonand restored on the next launch and when switching images, instead of always resetting to fill.
[1.4.2] - 2026-10-12
Fixed
- Crop save dropped the blue channel's brightness/contrast offset (matrix index
m[13], the alpha coefficient, instead ofm[14]), so saved JPEGs came out with a color cast whenever brightness or contrast was applied. Saturation/rotate were unaffected.
[1.4.1] - 2026-10-11
Fixed
- Crop save always writes JPEG (previously kept the source extension, e.g. PNG) — quality 93
- Crop save with rotation now saves the rotated view 1:1 instead of an unrotated bounding box
[1.4.0] - 2026-10-11
Added
- Crop save: saves the visible area at original resolution as JPEG quality 90 — title bar save button or Ctrl+S
- Output name: original name +
_HHmmsstime suffix (e.g.photo.jpg→photo_143025.jpg) - If a file with the same name exists, nothing is written and a warning is shown
- Active color effects (contrast/saturation/brightness) are baked into the output
- With rotation active, the bounding box around the visible area is saved
- Output name: original name +
[1.3.2] - 2026-08-28
Fixed
- Window position/size persistence under Wayland — forces X11 backend (XWayland) when an X server is available
[1.3.1] - 2026-08-14
Fixed
- Aspect ratio distortion on image switch — downsample now uses
ResizeImagePolicy.fit(wasexact, which forced 2048×2048 square and stretched non-square images)
[1.3.0] - 2026-08-14
Fixed
_imageSizenow resets on image switch (wrong swap threshold on navigation)- Downsample now caps both dimensions, not just width (tall images no longer full-res decode)
- Image size listener leak in
loadingBuilder— replaced with single_readImageSize - Old downsample provider now evicted on full-res swap
- Removed
imageCache.clear()that also dropped the live image (gallery flash)
[1.2.0] - 2026-08-14
Added
- Downsampling: large images decode at max 2048px on first load (RAM ~1.6MB)
- Full-res swap: zooming in past 1.5x stretch swaps to original resolution
- Internationalization: Turkish + English, auto-detected from system locale
- Zoom decodes at original resolution while zooming in (crisp details)
- Max zoom increased to 20x
Fixed
- RAM leak on image switch — old providers now evicted +
ImageCache.evict() - Black screen flash during zoom (gapless playback)
Changed
- App ID
com.example.imajviewer→com.softmediadesign.imajviewer - CI now runs
flutter analyzeandflutter teston every push pubspec.yamldescription in English (open-source ready)
[1.1.0] - 2026-08-06
Fixed
Ctrl+Qnow closes the window reliably (onKeyEventrework)- Pan freeze regression on effect-applied images (root cause analysis)
Added
- Navigation arrows (visible on hover)
- Settings window: folder sorting by time/name, print, shortcut info
- Print support (printing package, A4 fit)
- Title bar hover transparency
- Shader warmup — right-click effects no longer stutter on first use
[1.0.1] - 2026-07-27
Fixed
- Zoom/pan issues on large images
- Image provider memoize — repeated opens no longer reload from disk
Changed
- Version now sourced from
pubspec.yaml(single source of truth)
[1.0.0] - 2026-07-22
Added
- Initial release: ultra-lightweight image viewer
- Formats: PNG, JPEG, JFIF, WebP, BMP, GIF, WBMP
- Pan (left drag), zoom (wheel, cursor-centered), fill/fit toggle (double click)
- Contrast / saturation / brightness / rotate gestures
- Drag & drop, window position memory, set-as-default-viewer
- Linux (.deb) and Windows (setup.exe) installers