On some keymaps the R key resolves to a different logical key (observed on a Turkish remote-desktop setup: the R key arrives as logical T), so the Ctrl+R shortcut never fired even though the key events reached the app. The shortcut now matches PhysicalKeyboardKey.keyR as well; a regression test covers the wrong-layout case.
4.5 KiB
4.5 KiB
Changelog
All notable changes to imajViewer are documented in this file.
[Unreleased]
[1.6.1] - 2026-10-14
Fixed
- Horizontal flip shortcut (
Ctrl+R) never fired when the keyboard layout resolves the R key to a different logical key (reported with a Turkish/remote-desktop setup where the R key arrives as logicalT). The shortcut now matches the physical R key position as well.
[1.6.0] - 2026-10-14
Added
- Horizontal flip (
Ctrl+R): mirrors the image left-right about the viewport centre and clears the active effects (same reset as double right click); pressingCtrl+Ragain restores the original orientation. Zoom/pan are kept. - Crop save (
Ctrl+S) now bakes the flip into the output as well, so the saved JPEG matches the mirrored view (also in combination with rotation).
[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