Changelog

Announcing v(Nelson's Sparrow)

A stability, resilience, and developer-experience release built on top of the Gambel's Quail pipeline. Nelson's Sparrow adds a new fast wildlife detector (MegaDetector v1000-cedar), resilient ONNX execution that recovers from GPU/driver failures, OS-shutdown detection that finally silences phantom crash dialogs, major expansion of camera/RAW format support, and the largest test-suite expansion in the project's history (~350 tests). Several latent performance and accuracy bugs are also fixed, including a duplicated SpeciesNet batch pass that was silently reducing Gambel's Quail speedup.

Major Changes

  • Resilient ONNX execution recovers from GPU and driver failures across all six ML models.
    • Detects DirectML (Windows) and CoreML (macOS) inference failures and transparently falls back to CPU, preserving partial results.
    • A new "Re-attempt analysis on errored images" action re-queues just the failed files without touching successful work.
    • New GPU-resilience settings in the Analyze Folders dialog let you tune fallback behavior.
  • Major RAW-format expansion — adds first-class decode and EXIF-timestamp extraction for 11 additional camera formats, plus an embedded-preview fallback for compression schemes LibRaw can't yet decompress.
    • Newly supported: Nikon NRW (Coolpix, Z), Hasselblad 3FR/FFF, Phase One IIQ, Leaf MOS, Leica RWL, Epson ERF, Kodak DCR/KDC, Mamiya MEF, Minolta MRW.
    • Now extracts EXIF timestamps: Fujifilm RAF and Sigma X3F (they previously decoded but were timestamp-blind).
    • Nikon Z8 / Z9 / Zf / Z6III "High Efficiency" (HE/HE*/NRAW) NEFs — where LibRaw can't decompress the proprietary TicoRAW codec — now load via the full-resolution embedded JPEG preview. Detection and classification accuracy are unaffected at Kestrel's ML input resolution; only sensor-level highlight recovery is disabled, and the Live analysis dialog displays a "⚠ preview fallback" notice for affected files.
  • New "Fast" wildlife detector — MegaDetector v1000-cedar replaces the older mdv6-mit-yolov9 family. The Accurate option (mdv5a) is retained after edge-case testing in Gambel's Quail confirmed it was the better default for thorough analysis.
  • Real-crash vs. OS-shutdown detection — PC reboots, logoffs, and power loss no longer trigger the alarming "did not shut down cleanly" dialog.
    • Platform-specific listeners on Windows, macOS, and Linux distinguish OS-driven exits from real crashes.
    • Crash reports now carry an exit_reason field so genuine crashes are no longer drowned out by shutdown noise.
  • Full command-line parity with the in-app Advanced Analysis Settings dialog — every analysis knob is now exposed on analyzer/cli.py for power users and scripted workflows.
  • New quality normalization curve (v3) rebalances star ratings: the lower tail moves up and the upper tail compresses slightly. Older .kestrel/ folders are flagged and re-rated against the new curve on next visit.
  • Massive test-suite expansion — ~350 tests reorganized under unit / integration / compat / UI / security directories, with backward-compat tests for every legacy database schema and a real-binary UI probe in CI.
  • Build attestation for official builds — a signed build bundle is now used for in-app updater authentication, replacing the legacy fallback for official releases.

Minor Changes

  • Removed a duplicate SpeciesNet batch-classifier block that was running the ONNX classifier twice per image and erasing roughly half of the Gambel's Quail batch-processing speedup.
  • Culling-preview RAW decode no longer runs postprocess() twice on non-zero exposure correction (saves ~1–2 seconds per 45MP RAW per slider movement).
  • Build attestation now keeps trying candidate paths instead of giving up on the first malformed bundle.
  • The clean-exit handler no longer clobbers an already-set OS-shutdown / crash exit reason on the way out.
  • The max-bird-crops cap is now applied before SAM-HQ runs, so segmentation work is skipped for discarded detections.
  • SAM-HQ now runs in batched mode with updated weights; SpeciesNet classifier is also batched.
  • Model label files now decode with explicit BOM-tolerant UTF-8, fixing mojibake on Spanish, Japanese, and Chinese Windows installs.
  • Per-image analysis errors now emit a full Python traceback to the runtime log so future crash reports identify the offending library and call site.
  • Species-detection UI improvements with taxonomy mapping (cleaner labels, better tag suggestions).
  • Dropped unused PyQt6 dependency (~100 MB off the dev install); bumped rawpy, pyinstaller, pywebview, requests, pillow, and numpy.

Feedback? Please visit projectkestrel.org/contact or use the in-app feedback feature!

Download Project Kestrel All changelogs