NotesRelease

Lumeira 1.1.7

Image cache

Added

  • Marketing site (web/) built with Next.js, deployable on Vercel (vercel.json, project ignores).

Changed

  • App Sandbox enabled for the macOS app; bundle identifier set to net.qazana.lumeira.app and entitlements adjusted for sandboxed file access.

Performance

  • Image cache: O(1) LRU eviction and conservative memory cost across all NSImage representations so large sessions stay within budget predictably.
  • Thumbnails: O(1) LRU plus a bounded concurrent decode gate so the sidebar stays responsive on huge folders without spawning unbounded decodes.
  • Loads: Single CGImageSource path for decode plus EXIF on miss; lightweight metadata read on cache hits. Debug HUD shows this as one “decode + metadata” timing line.
  • Histograms: Large images are downsampled (max side 2048 px) before the RGB pass to cap memory and CPU.
  • Folders: After hitting the file listing cap, enumeration does a one-file peek instead of walking the remainder of the tree; sibling-folder “contains images” checks are cached per session.
  • UI: Coalesced Metal-to-SwiftUI zoom/pan binding updates; magnifier hover position updates throttled; debug HUD refreshes cache stats about once per second while visible.