Skip to content

FrameScout — Offline AI Search: v3.0.2 — Stable Browsing, Index-Time Ordering & “Show All” Mode

Choose a tag to compare

@bobgsning bobgsning released this 09 Aug 11:17
· 2 commits to main since this release

FrameScout — Offline AI Search: v3.0.2 — Stable Browsing, Index-Time Ordering & “Show All” Mode

This release focuses on predictability and stability. It introduces index-time ordering so newly scanned files always appear first, a “Show All” mode for viewing every file at once, and numerous defensive fixes against unexpected UI changes.

✨ What’s New

  • 📋 “Show All” Mode
    Click the “📋 Show All” button in the pagination bar (or the search toolbar) to load every indexed file in one flat list. A hint bar shows the total count; click “📄 Paginated View” to return to paginated browsing. Works seamlessly with the incoming-file banner and ghost cleaning.

  • ⏱️ Index-Time Sorting
    Each indexed file now carries a precise index_time (Unix timestamp). The browse-mode listing (list_all_files) sorts by index_time DESC, so newly added files always appear at the top. No more confusing order after scanning.

🛡️ Stability Improvements

  • Request debouncing in performSearch: only the latest search/ page-turn takes effect – no more flickering from stale responses.
  • clean_ghosts returns detailed info: frontend accurately removes ghost paths from the current view and reloads appropriately.
  • acceptIncomingFiles behaves intuitively: clicking the banner now enters browse mode (first page) or refreshes “Show All” mode – never disrupts your current context.
  • Page boundary protection for changePage and doJump.
  • clearImageSearch safety guard: does nothing unless actually in image-search mode.
  • toggleClustering fixed: exiting clustering now correctly restores the previous result set.

🔧 Under the Hood

  • AppState.memory_db upgraded to RwLock – concurrent searches don’t block each other.
  • request_vector creates a fresh ZMQ socket per call – eliminates shared-socket race conditions.
  • New backend command get_all_files – returns all records in one go, used by “Show All”.
  • Database migration: frame_vectors gains index_time REAL column (auto‑migrated on startup).

📋 Upgrade Notes

  • No model re‑download required – SigLIP 2 models from v3.0.1 remain unchanged.
  • Existing records get index_time = 0.0 after migration. To give them proper timestamps, simply re‑scan your folders. They will then sort correctly.
  • Recommended: run a full scan after upgrading to enjoy the best browsing experience.

🙏 Tech Stack

Google SigLIP 2 · ONNX Runtime · EasyOCR · Tauri · ZeroMQ · Protobuf · Rust + Vue 3

Full Changelog: v3.0.1...v3.0.2

The packaged exe is only about 5 MB.