cd7dd89f003c8cfe58185f3f260c49bd90809354
Complete presentation rework of the Settings modal away from the card-based tablet look: - Dialog now sizes proportionally (85vw x 85vh, capped at 1400x900) and resizes with the app window instead of a fixed centred square. - Content rebuilt as flat form rows in the VS Code preferences style: uppercase group headings with hairline-divided label/control rows — no nested cards, panels, or boxed strips. Sidebar retained. - Duplicated content header removed; close button floats top-right. - Folder selection restyled from bordered chips to flat divider rows; model path and runtime check render as plain monospace text. Also fixes two maintenance-section bugs: thumbnail-cache stats no longer blank to em-dashes while a cleanup is running, and the Compact now button disables immediately after compaction instead of allowing pointless re-runs until the section remounted.
Phokus
A local-first desktop media library for browsing, filtering, and curating image and video folders.
Features
- Add and remove media folders; background indexing with live progress
- Browse all media or filter by folder, type (image/video), favorites, or star rating
- Filename search, semantic search (
/s query), and tag search (/t tag) - Similar image search — find visually similar media by image or selected region
- AI tagging via WD tagger (ONNX, CPU/DirectML) with confidence threshold control
- Explore view — visual cluster map and tag cloud for browsing by theme
- Duplicate finder — scan for exact duplicates by file hash with bulk delete
- Lightbox preview with keyboard navigation, inline tag editing, and rating controls
- Sort by date, name, size, rating, or duration
- Grid density controls (compact / comfortable / detail)
Supported formats
| Images | Videos |
|---|---|
| jpg, jpeg, png, gif, bmp | mp4, mov, m4v |
| tiff, tif, webp, avif, heic, heif | webm |
Stack
- Tauri 2 + Rust backend
- React 19 + TypeScript + Zustand
- SQLite +
sqlite-vec(vector search) - ONNX Runtime (
ort) for AI tagging - Candle (Rust ML) for visual embeddings
- FFmpeg sidecar for video thumbnails and metadata
- Vite + Tailwind CSS v4
Development
Prerequisites: Node.js 20+, pnpm, Rust toolchain, Tauri system prerequisites for Windows.
pnpm install
# Run with hot-reload (frontend + Rust)
pnpm dev:app
# Frontend only
pnpm dev:vite
# Production build
pnpm build:app
How it works
- Add a folder from the sidebar — the Rust indexer walks it recursively.
- Supported files are written to SQLite with metadata (path, dimensions, media type, etc.).
- Background workers generate thumbnails, compute visual embeddings, and run AI tagging.
- Progress events stream back to the UI while the gallery updates incrementally.
- Embeddings power semantic search and the similar images feature via an HNSW index.
Languages
TypeScript
60.4%
Rust
37.5%
CSS
1.3%
Shell
0.4%
JavaScript
0.2%
Other
0.2%