docs(readme): bring feature list and architecture up to date
Adds everything shipped since the last README pass: live file tracking with rename-aware watching, Timeline view, batched notifications with mute/pause, the custom lightbox video player, in-view folder scoping for Explore/Timeline/Duplicates, three-phase duplicate scanning, maintenance tools (database compaction, thumbnail cleanup), per-folder worker pausing, and the strict-priority background worker pipeline. Features are now grouped by area, and the stack/how-it-works sections mention mozjpeg scaled decoding, EXIF capture dates, and the watcher.
This commit is contained in:
@@ -4,16 +4,30 @@ A local-first desktop media library for browsing, filtering, and curating image
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
### Library
|
||||||
- Add and remove media folders; background indexing with live progress
|
- Add and remove media folders; background indexing with live progress
|
||||||
|
- **Live file tracking** — a filesystem watcher keeps the library in sync as files are added, changed, or removed; renames and moves are handled in place, preserving thumbnails and embeddings
|
||||||
- Browse all media or filter by folder, type (image/video), favorites, or star rating
|
- 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`)
|
- Sort by date added, date taken (EXIF), name, size, rating, or duration
|
||||||
- **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)
|
- Grid density controls (compact / comfortable / detail)
|
||||||
|
- Desktop notifications, batched per folder, with per-folder mute and a global pause
|
||||||
|
|
||||||
|
### Search & discovery
|
||||||
|
- **Filename search**, **semantic search** (`/s query`), and **tag search** (`/t tag`)
|
||||||
|
- **Similar image search** — find visually similar media by image or a selected region
|
||||||
|
- **Explore view** — visual cluster map and tag cloud for browsing by theme
|
||||||
|
- **Timeline view** — media grouped chronologically by capture date (EXIF)
|
||||||
|
- **Duplicate finder** — three-phase exact-duplicate scan (size → sample hash → full hash) with live progress and bulk delete
|
||||||
|
- Explore, Timeline, and Duplicates are folder-scopable directly from their headers — no need to bounce through the sidebar
|
||||||
|
|
||||||
|
### Viewing & curation
|
||||||
|
- Lightbox with keyboard navigation, zoom, inline tag editing, and rating controls
|
||||||
|
- **Custom video player** — immersive edge-to-edge playback with scrubbing, volume, playback speed, loop, and fullscreen; auto-hiding controls and full keyboard support
|
||||||
|
- **AI tagging** via WD tagger (ONNX, CPU/DirectML) with confidence threshold, batch size, and per-folder queue targeting
|
||||||
|
|
||||||
|
### Maintenance
|
||||||
|
- Database compaction and orphaned-thumbnail cleanup from Settings, with live size/reclaimable stats
|
||||||
|
- Per-folder pausing of background work (thumbnails, metadata, embeddings, tagging)
|
||||||
|
|
||||||
## Supported formats
|
## Supported formats
|
||||||
|
|
||||||
@@ -26,9 +40,10 @@ A local-first desktop media library for browsing, filtering, and curating image
|
|||||||
|
|
||||||
- Tauri 2 + Rust backend
|
- Tauri 2 + Rust backend
|
||||||
- React 19 + TypeScript + Zustand
|
- React 19 + TypeScript + Zustand
|
||||||
- SQLite + `sqlite-vec` (vector search)
|
- SQLite + `sqlite-vec` (vector search) + HNSW index
|
||||||
- ONNX Runtime (`ort`) for AI tagging
|
- ONNX Runtime (`ort`) for AI tagging
|
||||||
- Candle (Rust ML) for visual embeddings
|
- Candle (Rust ML) for CLIP visual embeddings
|
||||||
|
- mozjpeg for fast scaled JPEG decoding
|
||||||
- FFmpeg sidecar for video thumbnails and metadata
|
- FFmpeg sidecar for video thumbnails and metadata
|
||||||
- Vite + Tailwind CSS v4
|
- Vite + Tailwind CSS v4
|
||||||
|
|
||||||
@@ -47,12 +62,16 @@ pnpm dev:vite
|
|||||||
|
|
||||||
# Production build
|
# Production build
|
||||||
pnpm build:app
|
pnpm build:app
|
||||||
|
|
||||||
|
# Type-check the frontend
|
||||||
|
pnpm build:vite
|
||||||
```
|
```
|
||||||
|
|
||||||
## How it works
|
## How it works
|
||||||
|
|
||||||
1. Add a folder from the sidebar — the Rust indexer walks it recursively.
|
1. Add a folder from the sidebar — the Rust indexer walks it recursively.
|
||||||
2. Supported files are written to SQLite with metadata (path, dimensions, media type, etc.).
|
2. Supported files are written to SQLite with metadata (path, dimensions, media type, EXIF capture date, etc.).
|
||||||
3. Background workers generate thumbnails, compute visual embeddings, and run AI tagging.
|
3. Background workers process the queue as a strict priority pipeline — thumbnails first, then video metadata, then visual embeddings, then AI tags — so each stage runs at full speed instead of competing for CPU, disk, and the database.
|
||||||
4. Progress events stream back to the UI while the gallery updates incrementally.
|
4. Progress events stream back to the UI while the gallery updates incrementally.
|
||||||
5. Embeddings power semantic search and the similar images feature via an HNSW index.
|
5. A filesystem watcher picks up later changes (new files, edits, deletions, renames) and keeps the index current without rescans.
|
||||||
|
6. Embeddings power semantic search and the similar-images feature via an HNSW index.
|
||||||
|
|||||||
Reference in New Issue
Block a user