# Changelog

All notable changes to this project will be documented in this file.

## [0.7.1] - 2025-09-09

### 🐛 Bug Fixes

- *(exif)* Let SDL handle conversion of the timestamp to a date time.
- *(exif)* Loading metadata also with the LibRaw fallback.
- *(bindings)* Map contrast turning point to R instead of V.
- *(macos)* Icons for Ctrl, Option, Command fixed.

### 📈 Improvements

- *(logging)* Halide specific logger for errors and messages.

## [0.7.0] - 2025-09-03

### 🚀 Features

- *(develop)* Add a histogram of the current view (reacts to zoom).
- *(ui)* Added icons in many places.
- *(bindings)* Special binding for crop-in with the scroll wheel.

### 🐛 Bug Fixes

- *(grid)* Crash when filtering options where changed but no files are loaded.
- *(develop)* Crash when the image size went to zero.
- *(fuji)* EXIF data loading for file width and file height fixed.
- *(preview)* Correctly position the popup in the window.
- *(export)* Auto export now uses the global queue.
- *(grid)* Fix crash with assert when changing folder when not scrolled to the top.

### 📈 Improvements

- *(crash-report)* Add version information for SilverNode and NeonRAW to the crash file.
- *(bindings)* Contrast turning point is now mapped to C;V.
- *(ui)* Disable AI panel black square.
- *(settings)* Overhaul the settings view with icons and better descriptions.

## [0.6.4] - 2025-08-29

### 🚀 Features

- *(bindings)* Remap ` to give a zero rating, instead of toggle before/after.
- *(grid)* Scrolling is now animated.
- *(export)* Show the current number of queued and running export jobs.

### 🐛 Bug Fixes

- *(performance)* Stop rerendering every mouse movement.
- *(grid)* Fix that scrolling to the very top didn't update the thumbnails.

### 📈 Improvements

- *(bindings)* Before after toggler now only works on Escape.

## [0.6.3] - 2025-08-29

### 🚀 Features

- *(halide)* Add ability to select a compute API via --compute command line argument.
- *(export)* Export_album command to export selected pictures as JPEGs with a filename prefix and sequence number.
- *(export)* Write EXIF data to JPEG files with neonEXIF.

### 🐛 Bug Fixes

- *(zig)* Fix the compute API selection, caused by a misconfigured path in the zig build.

### 📈 Improvements

- *(logging)* Minimize spdlog logger pattern.
- *(engine)* Use jrs::SemaphoreToken for most jobs to prevent explosions in memory usage.
- *(windows)* Crash handler handles more hardware exceptions.

## [0.6.2] - 2025-08-25

### 🚀 Features

- *(ai)* Fix positioning of features on the photo in the develop module.
- *(ai)* Allow "features" command from the grid.
- *(crop)* Add 16:9 and 21:9 aspect ratios.
- *(config)* Add tags to all settings. This will be cool for filtering/sorting later.
- *(develop)* Option to disable sharpening and denoise while animating.
- *(develop)* Before after toggler for sharpening/denoising.

### 🐛 Bug Fixes

- *(halide)* Replace usage of old COPY_TO_HOST macro.
- *(ai)* Do proper sequencing of AI inference using a jrs::semaphore.
- *(develop)* Temporary fix for missing frame at end of animations. Needs cleanup.
- *(gui)* Fix User input visualizer.

### 🚜 Refactor

- *(logging)* Have separate loggers for AI related stuff.
- *(logging)* Store the logger globals in SetupLogger.cpp.

### 📈 Improvements

- *(logging)* Use more appropriate logging levels for AI stuff.
- *(develop)* Rerender/dirty logic looks correct now.
- *(zoom)* Zoom bindings slightly better.

### ⚡ Performance

- *(ai)* Use small_vector for facial landmarks.

## [0.6.0] - 2025-08-13

### 🚀 Features

- *(grid)* Select directory in filebrowser when passing directory as command line argument.
- *(photo)* Allow more known extensions for RAW file formats.
- *(libraw)* Add support for loading raw files throuhg LibRaw (slow).
- *(bindings)* Disable Vim and Lightroom bindings.
- *(crash)* Crash handler that will try to gather useful information about a crash.

### 🐛 Bug Fixes

- *(halide)* API selection is now sequential to avoid incorrect behavior later on.
- *(thumbdb)* Fix race condition in dealing with the Thumbnail database.
- *(debug)* Fix the rerender indicator.
- *(file-browser)* Don't reselect a folder programatically when manually opening it.
- *(fuji)* Accept RAF files. Probably won't demosaick still.
- *(grid)* Don't crash when the file/folder is not readable.

### 📈 Improvements

- *(error)* Transition to the Result/Error system for proper error handling.
- *(photo)* Use SmartDataSource which tries both RawSpeed and LibRaw.
- *(crash)* Crash reporter includes thread ID and process ID in filename.
- *(grid)* Preview popup shows hint on how to close it.
- *(develop)* Try to improve zoom bindings a little, break them a little.

### ⚡ Performance

- *(thumbdb)* Use Halide pipelines for the conversion of interleaved to planar.

## [0.5.6] - 2025-07-29

### 🚀 Features

- *(develop)* Scroll to activated sliders in Blender bindings.
- *(bindings)* Blender Develop bindings drastically improved with two-level bindings.
- *(file-browser)* Select folder when dropping file or folder.
- *(file-browser)* Open folders through the file browser.
- *(drag-n-drop)* Open folders and photos with drag-n-drop.

### 🐛 Bug Fixes

- *(thumbdb)* Do proper copying of the buffers to both prevent crashes and reduce lock contention.
- *(grid)* The Grid layout issue when toggling fullscreen.
- *(grid)* The Grid layout issue is fixed.
- *(grid)* Disable layout optimization for now, to prevent layout glitch.

### 📈 Improvements

- *(thumbdb)* Store larger thumbnails.
- *(thumbdb)* Prevent creating thumbnail database on a filesystem that has less than 2GB of space left.
- *(blender)* Improving Blender bindings: new toggle pair with same key.
- *(thumbnails)* Ability to have multiple ThumbnailProviders from different folders.
- *(thumbnails)* Database checks better for cache hits.

## [0.5.5] - 2025-07-12

### 🚀 Features

- *(develop)* Resolution multiplier to trade of speed with performance.

### 🐛 Bug Fixes

- *(develop)* MSAA factor in crop mode was broken.
- *(crop)* PhotoCanvas gets the correct _total_ pixel ratio.

### ⚡ Performance

- Small optimization.
- *(memory)* Several heap allocations removed.
- *(copy)* Several needless object copies removed.

## [0.5.4] - 2025-07-07

### 🚀 Features

- *(crop)* Show grid lines and third-lines in crop mode.

### 🐛 Bug Fixes

- *(develop)* Temp/tint sliders not updating on reset of chromaticity picker.
- *(crop)* Preset sidebar now respects crop.

## [0.5.3] - 2025-07-06

### 🚀 Features

- *(crop)* Crop-in

## [0.5.2] - 2025-07-05

### 🚀 Features

- *(crop)* Aspect ratio.

## [0.5.1] - 2025-07-04

### 🚀 Features

- *(crop)* Implement the grab tool to recenter the photo.

### 🐛 Bug Fixes

- *(exif)* Fixed a crash upon failed loading of exif data.
- *(crop)* Temporary workaround for a crash when size information is not yet available.h

## [0.5.0] - 2025-07-03

### 🚀 Features

- *(develop)* Straighten image (rotate + perspective correction).
- Toggle fullscreen with F11, Alt-Enter, or :fs, or :fullscreen.

### 🎨 Styling

- Icon for Windows exe file.

## [0.4.1] - 2025-06-23

### 🚀 Features

- *(debug)* Backtrace command.

### 🐛 Bug Fixes

- *(windows)* Enable VT processing on the ConsoleMode.

### 🚜 Refactor

- *(halide)* Use my own HalideBuffer wrapper struct.

## [0.4.0] - 2025-06-16

### 🚀 Features

- *(denoiser)* New continuous denoiser setting for noise amplitude.
- Version command.
- *(settings)* Settings saving and loading.
- *(thumb-db)* ThumbDB seems to work!
- Initial drop-folder/file support (has memory leak).
- *(develop)* Gray background in Develop.
- *(bindings)* Reworked the Blender Bindings. Can now cycle through groups under the same letter. Also tweaked some UI aspects.
- *(bindings)* Implemented different variants of blender bindings.

### 🐛 Bug Fixes

- *(thumbdb)* Fix loading of ColorInfo to respect the rules of the JRS.
- *(bindings)* Cancel adjusting for blender bindings now resetss all selected images.
- *(thumb-db)* Fix bug in ThumbDB destroying device allocations in a race condition.
- *(thumb-db)* Return full mipmap chain from thumb db loader.
- Small fixes.
- *(bindings)* Small fix in Blender Develop Bindings for cycling pairs.
- *(ai)* Fix initialization of ai::PhotoFeatures.
- *(ai)* Potential fix for the AI-crashes. #224
- *(linux)* Fix #230. Prefer wayland, but fallback on X11.
- *(linux)* Potentially fixes #231. Rerender window when it becomes visible again.
- *(ui)* Fix #232. Color wheel distribution.
- *(settings)* Fix small configuration editor bug.

### 🚜 Refactor

- *(engine)* No more unknown LODs.

### 📈 Improvements

- *(thumb-db)* ThumbDB improvements.
- *(grid)* Improve the GridThumbnailManager
- GridThumbnailManager and ThumbDB.

### ⚡ Performance

- *(grid)* Improve grid priority setting performance.

### 🎨 Styling

- *(develop)* Shade adjustments panel and AI panel.

## [0.3.0] - 2025-06-02

### 🚀 Features

- *(ui)* Light theme.
- *(ui)* Add version string to window title.
- *(debug)* Setting for making debug commands show up in keyboard help.
- *(bindings)* Add select/deselect all.
- *(grid)* Masonry zoom with ctrl-scroll.
- *(photo)* Use RawSpeed for parsing metadata.
- *(develop)* Sharpening and Color denoising.

### 🐛 Bug Fixes

- Merge include/ into src/. Promote all warnings to errors and fix them.
- *(ui)* Fix alignment of textbox in commandbar.
- *(ui)* Fixed non-portable keyboard shortcuts in reference to #186.
- *(bindings)* Fix shortcuts in Grid.
- *(ai)* Fix AI when running on CUDA.
- *(bindings)* Fix activating sliders and blender bindings.
- *(photo)* Fix saving Denoiser settings.
- *(develop)* Fix UI scaling issue with Zoom plugin.
- Fix SilverNode not exiting when photos weren't loaded.
- *(develop)* Fix zoom bug.
- Fix icon pixel data layout.

### 🚜 Refactor

- Fix for updated vg-renderer
- *(libfacedetection)* Cleanup libfacedetection.

### ⚡ Performance

- *(ui)* Move UI widget background generators to separate file with -O3 flag.

### 🎨 Styling

- *(ui)* Work on the light colorscheme.
- *(grid)* Improve design of the tiles in the grid and preset bar.

## [0.2.0] - 2025-06-02

First working denoiser

### 🚀 Features

- *(denoiser)* A metric shitton of work on the denoiser.
- *(filebrowser)* Added a file brower in the grid (does nothing yet).
- *(develop)* Implemented new contrast function, which is shown in the curve as background monitor function.
- *(bindings)* Blender hold-and-drag option.
- *(ui)* Support fractional scaling.
- *(bindings)* Blender develop bindings for multi-select in grid.
- *(debug)* Add tracy self-profiling support.
- Export queue (per plugin for now).
- *(bindings)* Zoom Bindings.
- *(settings)* Descriptions for settings.
- Support failing images.
- *(logo)* Polished Logo. wip(neonraw): Rewrite Texture/FrameBuffer stuff. Close to finished.

### 🐛 Bug Fixes

- *(linux)* Fiddling to make Wayland work.
- Small tweaks/fixes.
- *(ui)* Bugfix HiDPI
- *(photo)* Fix Saving of edits.
- *(ui)* Also Fix Clamp UV for rendering in vg-renderer.
- *(ui)* Fix key name in user input visualizer.
- *(ui)* Fix background of UserVisualization.
- *(develop)* Fixed effect strength toggling. Also seperated base exposure and exposure.
- *(bindings)* Small tweaks to game controller handling.
- *(jrs)* A few bugfixes regarding jrs::ResRef::is_ready that should have been is_ready_and_not_failed.
- Fix rotation of images.
- Hopefully fix the render-loop for real this time.
- Fix dt for plugins after pause.
- Q'n'D fix for exporting JPGs from Ctrl-E. We need a proper export queue with visualization in the UI.
- Tweak the render loop logic to fix a CPU usage bug.
- Bugfix main render loop for slow hardware.
- Fix render loop.
- *(jrs)* Fix JRS bug where blocked jobs were not revived.

### 🚜 Refactor

- Migrated to SDL3
- *(libfacedetection)* Switch to my fork of libfacedetection.
- *(plugins)* On-demand continuous plugin update mode.
- Updated to the Layered rendering of nui.
- Semaphores are managed by ref-counted SemaphoreTokens, which hold a 'taken' state.
- Remove fallback from to-dot, so I implemented all to-dot providers.
- Fixed some more bugs regarding transitioning to vg-renderer. I think it might be finished.
- Almost done with transitioning to vg-renderer instead of nanovg.
- Notify Finished Jobs queue is now moodycamel::concurrentqueue.
- Ditched ghc/filesystem in favor of std::filesystem.

### 📈 Improvements

- *(bindings)* Adjust blender bindings for contrast and saturation. Closes #212.
- Frame rate estimation outlier clamping.
- More tweaking on the main render loop.
- Tweak contrast.
- *(ui)* Improve rendering loop.
- *(develop)* Improve dirty-marking for failed pictures.
- *(ui)* Estethics improvements (target white point, filter label).
- *(settings)* Improved settings workspace.
- Made darknet optional.
- Grid thumbnail rendering supports being dirty and automatically refreshing itself.
- Change render loop timing to use SDL Performance Counter instead of SDL Ticks.
- Lots of improvements.
- Reduced aggresiveness of preloading.

### ⚡ Performance

- Optimize startup time.
- Grid thumbnail keep aliver now also keeps gpu-buffers on cpu side ready for the thumbnail (need to evaluate memory impact).
- Prevent retriggering thumbnail render in the grid if the previous one is not displayed yet.
- *(ui)* Speed up generation of background textures for the HSL curve editors.
- Ditch perfrep as a seperate project and bake it into NeonRAW with a decent rewrite using foonathan::memory;

### 🎨 Styling

- *(settings)* Improve configuration workspace with info about settings.

<!-- generated by git-cliff -->
