Skip to content

FrameScout — Offline AI Search: v3.0.3 — Backend-Persistent Smart Folders, On-Demand OCR & Storage Cleanup

Choose a tag to compare

@bobgsning bobgsning released this 10 Aug 13:40
· 2 commits to main since this release

FrameScout — Offline AI Search: v3.0.3 — Backend-Persistent Smart Folders, On-Demand OCR & Storage Cleanup

Release date: 2026-08-10

This release brings three major improvements: fully backend-driven Smart Folders, on-demand OCR for selected files with custom languages, and complete removal of browser-local storage dependencies. Smart Folders are now truly persistent — surviving database backups, app reinstalls, and cross-machine transfers. OCR can be triggered independently on any indexed file with language-specific settings. Plus, we've fixed the misleading (0) badge on vector-only folders and cleaned up legacy localStorage remnants.

✨ What's New

📁 Backend-Driven Smart Folders

  • Smart Folder definitions are stored exclusively in SQLite (smart_folders table).
  • New backend command execute_smart_folder performs the search natively using the same engine as manual queries.
  • Frontend no longer caches any folder rules — no more lost folders after clearing browser data.
  • Each folder displays a live match_count badge. Pure vector folders show ? instead of 0 for honest indication.

🔍 On-Demand OCR for Selected Files

  • Run OCR on specific files with custom language codes (e.g., en, ch_sim, ja).
  • The run_ocr_for_selected_files command updates both SQLite and in-memory metadata instantly.
  • A dedicated OCR button appears on each search result card; click it to trigger OCR with your preferred language.
  • Language configuration is now fully separated from the scan/index process — you can index first, OCR later.

🧹 Complete Removal of Browser Storage

  • The savePath function and its associated localStorage.setItem calls have been deleted.
  • On startup, any remaining framescout_smart_folders or framescout_folder_path keys are cleared.
  • The folder path input no longer persists across sessions (future versions may add backend-based preference storage).

🐛 Bug Fixes

  • Smart Folder count showing 0 even when matching files exist (vector-only folders now display ?).
  • Runtime error caused by calling a commented-out savePath function.
  • Potential duplication of Smart Folders due to old localStorage data merging with backend data.
  • OCR results not reflected in in-memory metadata after on-demand update.

🔧 Under the Hood

  • get_smart_folders now computes match_count by scanning in-memory metadata for text matches.
  • SmartFolder struct extended with match_count: usize.
  • Frontend applySmartFolder delegates entirely to execute_smart_folder.
  • Template updated to conditionally render ? for pure vector folders.
  • run_ocr_for_selected_files now properly updates both SQLite and FlatVectorMatrix metadata.
  • Scan/index commands accept explicit enable_ocr and ocr_languages parameters.

📋 Upgrade Notes

  • No model re-download required — SigLIP 2 models from v3.0.1 remain unchanged.
  • Existing Smart Folders in the database are automatically compatible; no migration needed.
  • If you previously relied on localStorage for folder path memory, you'll need to re-enter the path after upgrading (we recommend using the Browse button).
  • On-demand OCR uses the same EasyOCR models already present in models/easyocr/.

🙏 Tech Stack

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

Full Changelog: v3.0.2...v3.0.3


The packaged exe is only about 5 MB.