Skip to content

Release v3.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Sep 18:08
42ee697

This update brings 9 new features, 1 improvement, 6 fixes and 29 other changes.

New

  • In-process llama.cpp LLM provider (M0-M7)
  • MLX inference backend for Apple silicon
  • Add Dependabot configuration file
  • Add Windows & macOS build environment setup wiki page
  • Add Gemma 4 12B QAT to MLX model catalog
  • Add Ministral 3 8B to the llama.cpp and MLX model catalogs
  • Add progress reporting to keyword deduplication task
  • Add CodeQL security scanning workflow
  • Add a repowise report to pull requests

Improved

  • Re-enable KleidiAI kernels, ~3x faster indexing

Fixed

  • Install libprotobuf-dev for well-known-types protos
  • Fix keyword options, macOS installer, CI version parsing, and rejected-photos collection
  • Apply top-level keyword when hierarchy is disabled
  • Honor custom prompt and date_time on the index routes
  • Stop walking the catalog a photo at a time before any progress shows
  • Fix four places where a problem never reached the user

Other changes

  • Rewrite backend in Rust
  • Make keyword de-clutter and bilingual synonyms coexist
  • Remove note about developer's break from project
  • Rewrite release notes generation for end-user audience
  • Culling signal quality: subject sharpness, intentional sets, CLIP-IQA genre axes, and an evaluation harness
  • Cut tagging output tokens: leaner schema, positional keywords, and the instrumentation to prove it
  • Performance tips wiki page + health-check/warning cleanup
  • Send catalog keyword vocabulary to the LLM
  • Hide Vertex AI from the plugin GUI
  • Onboarding wizard: offer the MLX, llama.cpp and search model downloads
  • Guifactoring
  • Menu cleanup: reorder Plug-in Extras items, drop hash-ID generator button
  • AI Edit: fix four defects that broke the edit path, and start measuring the source image
  • Bump rusqlite from 0.37.0 to 0.40.2 in /server-rs
  • Bump the cargo-minor-and-patch group in /server-rs with 8 updates
  • Bug hunt: 20 defects, plus a docs guard so they stop hiding
  • Remove the dead photo_id migration and the Intel Mac caveats
  • Bound the indexing read-ahead, and split raw from non-raw in style training
  • Switch AI Edit to style engine only, remove LLM path
  • Identify species on-device with BioCLIP 2
  • Let a species-only run start
  • Bump tokenizers from 0.22.2 to 0.23.1 in /server-rs
  • Bump lancedb from 0.31.0 to 0.37.1 in /server-rs
  • Link identified species to iNaturalist and Wikipedia
  • Replace InsightFace buffalo_l with YuNet + FaceNet
  • Surface runs that silently lost a signal
  • Batch the non-LLM index-by-reference passes
  • Catch the remaining docs up with YuNet + FaceNet
  • Take arrow from lancedb's re-export, bump sha2 to 0.11

Download

If you are on Download
Windows (64-bit) LrGeniusAI-windows-x64-3.0.0.exe
macOS (Apple silicon) LrGeniusAI-macos-arm64-3.0.0.pkg
Your own server or Docker LrGeniusAI-plugin-docker-backend-v3.0.0.zip

Already have LrGeniusAI installed? This update changes parts that the in-Lightroom updater cannot replace on its own, so please install it with the full installer above. Your catalog, settings and everything already analysed stay as they are.

If your computer warns about the download

Both installers are downloaded rarely enough that Windows and macOS may not
recognise them yet. This is about how well known the file is, not about
anything found in it.

  • Windows — if SmartScreen says "Windows protected your PC", click
    More info, then Run anyway.
  • macOS — if the installer is blocked, open System Settings → Privacy &
    Security
    and click Open Anyway. In Terminal, xattr -d com.apple.quarantine <path to the .pkg> does the same thing.

Something not working? Please open an issue at
https://github.com/LrGenius/LrGeniusAI/issues — a description of what you did
and what happened is enough to get started.

Technical changelog

What's Changed

  • Rewrite backend in Rust by @bmachek in #218
  • fix(docker): install libprotobuf-dev for well-known-types protos by @bmachek in #220
  • Fix keyword options, macOS installer, CI version parsing, and rejected-photos collection by @bmachek in #222
  • Make keyword de-clutter and bilingual synonyms coexist by @bmachek in #224
  • fix(plugin): apply top-level keyword when hierarchy is disabled by @bmachek in #227
  • fix(server): honor custom prompt and date_time on the index routes by @bmachek in #228
  • perf(server): re-enable KleidiAI kernels, ~3x faster indexing by @bmachek in #231
  • feat: in-process llama.cpp LLM provider (M0-M7) by @bmachek in #236
  • fix(ci): install the Vulkan SDK and ship the ggml backends on Windows by @bmachek in #237
  • feat: MLX inference backend for Apple silicon by @bmachek in #238
  • docs: document the built-in llama.cpp and MLX local engines by @bmachek in #240
  • Add Dependabot configuration file by @bmachek in #241
  • Remove note about developer's break from project by @bmachek in #242
  • docs: record which wiki pages reach the website by @bmachek in #243
  • Rewrite release notes generation for end-user audience by @bmachek in #244
  • Culling signal quality: subject sharpness, intentional sets, CLIP-IQA genre axes, and an evaluation harness by @bmachek in #245
  • Cut tagging output tokens: leaner schema, positional keywords, and the instrumentation to prove it by @bmachek in #246
  • Add Windows & macOS build environment setup wiki page by @bmachek in #247
  • Performance tips wiki page + health-check/warning cleanup by @bmachek in #248
  • Add Gemma 4 12B QAT to MLX model catalog by @bmachek in #249
  • Send catalog keyword vocabulary to the LLM by @bmachek in #250
  • Add Ministral 3 8B to the llama.cpp and MLX model catalogs by @bmachek in #251
  • Hide Vertex AI from the plugin GUI by @bmachek in #253
  • Onboarding wizard: offer the MLX, llama.cpp and search model downloads by @bmachek in #252
  • docs: mark Vertex AI as removed by @bmachek in #254
  • Guifactoring by @bmachek in #255
  • Menu cleanup: reorder Plug-in Extras items, drop hash-ID generator button by @bmachek in #256
  • AI Edit: fix four defects that broke the edit path, and start measuring the source image by @bmachek in #257
  • Add progress reporting to keyword deduplication task by @bmachek in #259
  • Add CodeQL security scanning workflow by @bmachek in #260
  • ci: bump softprops/action-gh-release from 2.6.2 to 3.0.2 by @dependabot[bot] in #266
  • ci: bump JohnnyMorganz/stylua-action from 4.1.0 to 5.0.0 by @dependabot[bot] in #270
  • ci: bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #269
  • ci: bump actions/checkout from 4 to 7 by @dependabot[bot] in #268
  • ci: bump actions/stale from 9 to 11 by @dependabot[bot] in #267
  • deps: bump rusqlite from 0.37.0 to 0.40.2 in /server-rs by @dependabot[bot] in #263
  • deps: bump the cargo-minor-and-patch group in /server-rs with 8 updates by @dependabot[bot] in #261
  • Bug hunt: 20 defects, plus a docs guard so they stop hiding by @bmachek in #271
  • Remove the dead photo_id migration and the Intel Mac caveats by @bmachek in #272
  • Bound the indexing read-ahead, and split raw from non-raw in style training by @bmachek in #273
  • Switch AI Edit to style engine only, remove LLM path by @bmachek in #274
  • Identify species on-device with BioCLIP 2 by @bmachek in #275
  • Docs: catch README and the wiki up with AI Edit and species by @bmachek in #277
  • Let a species-only run start by @bmachek in #286
  • deps: bump tokenizers from 0.22.2 to 0.23.1 in /server-rs by @dependabot[bot] in #278
  • deps: bump lancedb from 0.31.0 to 0.37.1 in /server-rs by @dependabot[bot] in #279
  • ci: bump docker/build-push-action from 6.19.2 to 7.3.0 by @dependabot[bot] in #280
  • ci: bump github/codeql-action from 3 to 4 by @dependabot[bot] in #281
  • ci: bump astral-sh/setup-uv from 7.6.0 to 10.0.1 by @dependabot[bot] in #282
  • ci: bump docker/login-action from 3.7.0 to 4.6.0 by @dependabot[bot] in #283
  • ci: bump docker/setup-buildx-action from 3.12.0 to 4.2.0 by @dependabot[bot] in #284
  • Link identified species to iNaturalist and Wikipedia by @bmachek in #285
  • Replace InsightFace buffalo_l with YuNet + FaceNet by @bmachek in #287
  • Surface runs that silently lost a signal by @bmachek in #288
  • Stop walking the catalog a photo at a time before any progress shows by @bmachek in #290
  • Batch the non-LLM index-by-reference passes (#289) by @bmachek in #291
  • Fix four places where a problem never reached the user by @bmachek in #293
  • Add a repowise report to pull requests by @bmachek in #294
  • Catch the remaining docs up with YuNet + FaceNet by @bmachek in #295
  • deps: take arrow from lancedb's re-export, bump sha2 to 0.11 by @bmachek in #296
  • Pin the CodeQL Rust toolchain to 1.94 by @bmachek in #297
  • Survive a disk cleaner deleting the macOS log directory by @bmachek in #298
  • Group the HTTP API into domains under /v1 by @bmachek in #300
  • Fix database backup endpoint: change from GET to POST by @bmachek in #301
  • Rebuild People as a browser page, and make its clusters correctable by @bmachek in #299
  • Pin ONNX Runtime graph optimization level to prevent crashes by @bmachek in #302
  • Sanitize request-supplied strings in logs; move Gemini API key to header by @bmachek in #303
  • ci: bump actions/cache from 4 to 6 by @dependabot[bot] in #312
  • ci: bump docker/setup-qemu-action from 3.7.0 to 4.2.0 by @dependabot[bot] in #311
  • ci: bump actions/checkout from 4 to 7 by @dependabot[bot] in #310
  • ci: bump leafo/gh-actions-lua from 10.0.0 to 13.0.0 by @dependabot[bot] in #309
  • ci: bump docker/setup-buildx-action from 4.2.0 to 4.3.0 in the actions-minor-and-patch group by @dependabot[bot] in #308
  • deps: bump uuid from 1.24.0 to 1.24.1 in /server-rs in the cargo-minor-and-patch group by @dependabot[bot] in #305
  • deps: bump base64 from 0.22.1 to 0.23.1 in /server-rs by @dependabot[bot] in #306
  • deps: bump ndarray from 0.16.1 to 0.17.2 in /server-rs by @dependabot[bot] in #307
  • Fix LLM provider detection drift between health check and UI by @bmachek in #314
  • Fix NoKvCacheSlot by budgeting against one photo's share of the context by @bmachek in #318
  • Separate face tags from keywords to prevent misreading as scenery by @bmachek in #319
  • Support GPT-5 and o-series reasoning models with proper tuning by @bmachek in #325
  • Discard the species too when the review is discarded (#327) by @bmachek in #330
  • Let the species classifier, not the LLM, name the animal (#326) by @bmachek in #329
  • Get the place and the people into the title and the caption (#321) by @bmachek in #331
  • deps: bump the cargo-minor-and-patch group in /server-rs with 2 updates by @dependabot[bot] in #333
  • ci: bump leafo/gh-actions-luarocks from 4.3.0 to 6.1.0 by @dependabot[bot] in #334
  • Fix prompt picker state management and empty prompt handling by @bmachek in #335

New Contributors

Full Changelog: v2.21.0...v3.0.0