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).
97 lines
3.6 KiB
Markdown
97 lines
3.6 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to imajViewer are documented in this file.
|
||
|
||
## [Unreleased]
|
||
|
||
## [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 of `m[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 + `_HHmmss` time 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
|
||
|
||
## [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` (was `exact`, which forced 2048×2048 square and stretched non-square images)
|
||
|
||
## [1.3.0] - 2026-08-14
|
||
|
||
### Fixed
|
||
- `_imageSize` now 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 analyze` and `flutter test` on every push
|
||
- `pubspec.yaml` description in English (open-source ready)
|
||
|
||
## [1.1.0] - 2026-08-06
|
||
|
||
### Fixed
|
||
- `Ctrl+Q` now closes the window reliably (`onKeyEvent` rework)
|
||
- 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
|