https://github.com/nwund/vault-project
Vault is a powerful, privacy-focused desktop application for organizing, viewing, and enjoying your adult media collection. Built with Electron and React, it offers a sleek, immersive experience with AI-powered features, customizable visual effects, and comprehensive library management.
https://github.com/nwund/vault-project
adult-ai aggregator ai downloader editor gallery library media nsfw nsfw-detection pmv stash tagging video
Last synced: about 12 hours ago
JSON representation
Vault is a powerful, privacy-focused desktop application for organizing, viewing, and enjoying your adult media collection. Built with Electron and React, it offers a sleek, immersive experience with AI-powered features, customizable visual effects, and comprehensive library management.
- Host: GitHub
- URL: https://github.com/nwund/vault-project
- Owner: Nwund
- License: other
- Created: 2026-01-25T00:26:56.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-05-23T00:30:54.000Z (about 1 month ago)
- Last Synced: 2026-05-23T01:12:42.444Z (about 1 month ago)
- Topics: adult-ai, aggregator, ai, downloader, editor, gallery, library, media, nsfw, nsfw-detection, pmv, stash, tagging, video
- Language: TypeScript
- Homepage:
- Size: 26 MB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# ๐ VAULT
### *Your Private Media Sanctuary*
[](https://github.com/Nwund/vault-project/releases)
[](https://github.com/Nwund/vault-project)
[](https://electronjs.org)
[](https://react.dev)
[](https://typescriptlang.org)
**The ultimate private media library for discerning adults.**
*AI-powered โข Privacy-first โข Beautifully designed*
[**โฌ๏ธ Download**](https://github.com/Nwund/vault-project/releases) ยท [**๐ Documentation**](#features) ยท [**๐ Quick Start**](#quick-start)
---

## ๐ v2.8.5 โ AI Review scheduler + tagger sanity + regen-anywhere (2026-06-18)
Bug-fix + small-feature release. Most of these came out of a long live-review session where the user surfaced model failure modes the calibration layer wasn't catching.
- **Content-ratio scheduler in the AI processing queue** โ animated/hentai content currently produces worse Tier 2 titles + descriptions than IRL, so the review backlog was clogging with garbage. The queue now interleaves at 50 real : 10 animated per cycle. Detection uses a media-tag check (any of `hentai` / `animation` / `3d` / `sfm` / `cartoon` / `drawn` on the item) plus filename/path keywords (`hentai`, `anime`, `koikatsu`, `honey select`, `mmd`, `blender`, `rule34`, etc.). If a bucket is empty the scheduler falls back to the other so the worker never idles.
- **Trans/transgender/shemale/futa never auto-apply** โ bare `trans` was firing on cis-female content constantly. The model overuses it. New `isAutoApplyBlocked()` in `canonical-tags.ts` runs the never-auto-apply checks **before** the canonical-wins shortcut in `isJunkTag()` (which was letting `trans` through because the tag exists in canonical for manual selection). Same gate catches "implied X" hedge forms that slipped past the prefix-strip. Used in tier3-tag-matcher, description-tag-extractor, and the Tier 2 richTags filter โ but NOT in the cleanup IPC, so existing manually-applied `trans` tags survive. `mtf` and `ftm` still auto-apply, gated by the existing corroboration rule (must have another trans indicator OR conf โฅ 0.85).
- **Description no longer concatenates JoyCaption local caption** โ Venice's description was getting a `[Local caption]` block appended from the JoyCaption sidecar, intended for backend tag-mining but ugly in the UI. The companion JoyCaption `tags-danbooru` call already feeds tag candidates directly into rich_tags, so removing the description concat doesn't lose tag-extraction signal. Sidecar still runs; user just sees one clean description.
- **`ai:regenerate-title` / `ai:regenerate-description` work on never-analyzed media** โ both IPCs were throwing "No analysis record found" because they `INNER JOIN`'d on `ai_analysis_results`. Switched to `LEFT JOIN media` and an `INSERT โฆ ON CONFLICT(media_id) DO UPDATE` so the row gets created on first regen instead of silently no-op'ing. Tier 1 hints just stay empty when there's no prior context.
## ๐ v2.8.4 โ Theme reactivity + AI Review polish + LAION installer (2026-05-25)
Follow-up patch addressing five user-reported issues, plus a new install script for the LAION aesthetic predictor.
- **Theme text no longer pink across every theme** โ Tailwind `text-pink-*` / `-rose-*` / `-fuchsia-*` / `-violet-*` / `-purple-*` classes now remap to `var(--primary)` globally so they flow with the active theme (was hardcoded #f9a8d4 etc.).
- **Quick Actions sidebar block removed** โ collapsed dropdown at the bottom of the sidebar. Cycle Theme / Rescan Library / etc. are reachable from the Command Palette (Ctrl+K) instead.
- **AI Review sort now actually works** โ uncertainty sort was scoring 0 on rows with no `rich_tags` JSON (most older items), so the list looked identical to newest sort. Added an `nsfw_confidence`-based fallback so the toggle re-orders even on legacy rows.
- **AI Review preview is click-to-play with full timeline** โ replaced the hover-preview with a click-to-play `` so reviewers can pause, scrub, and seek frame-by-frame to verify tags against specific moments.
- **AI Review frame grid spreads across the whole video** โ `mpdecimate` dedup was clustering tiles from a narrow window on slow-pan videos ("first 10 seconds 12 times" symptom). Disabled for the review contact-sheet. Plus an ffmpeg-side duration probe for videos missing `durationSec` in DB โ was falling to `select=not(mod(n,30))` which packs frames from t=0.
- **New `npm run install:aesthetic`** โ Node script that downloads the LAION aesthetic-predictor `.pth` from GitHub and converts it to the JSON schema Vault's loader expects, writing to `%APPDATA%\vault\models\aesthetic-linear.json` directly. Supports the 1-layer linear MSE (default) and the 5-layer MLP variant (`--variant=mlp`). No PyTorch dependency โ parses the .pth zip + raw float32 tensors in pure Node.
## ๐ v2.8.2 โ Unified optional-models UI + one-click installers (2026-05-24)
Replaces the previous two-card split (ModelFileCard grid + ExtraDetectorsCard) with one consolidated **Optional models & sidecars** panel under AI Tools โ Setup. Same models, organized by capability instead of file type, with one-click installers where the upstream URL is stable. Per-model download progress bars stream live.
- **One-click installers** for JoyTag (model.onnx + top_tags.txt from HuggingFace), Real-ESRGAN x4 upscaler, and Chromaprint fpcalc.
- **Categorized rows**: Vision ยท Faces & people ยท Text ยท Audio ยท Voice. Scaffold-only detectors (wrappers without inference paths wired yet) collapsed behind a toggle so the main view stays scannable.
- **Three install affordances**: `Install` button when we know the URL; `Setup guide` for Python sidecars (WhisperX, F5-TTS); `Manual` for models with no canonical community ONNX (AI-image, deepfake, AdaFace, PaddleOCR, BEATs, PANNs).
- **No more duplicate rows** โ the v2.7.1 split had `ai-image` and `deepfake` listed in both cards with different framings.
- **No more stuck-on-Checkingโฆ** โ the bug that the v2.8.1 ModelFileCard fix addressed is preserved in the new card's tristate `loading | ok | error | empty` status.
- **Progress streaming**: `models:install-progress` event lets the UI show real `N MB / N MB ยท 73%` instead of a generic spinner.
## ๐ v2.8.1 โ Build-fix + freeze-perf patch (2026-05-24)
Followup to v2.8.0. No new features; two fixes for stability.
- **Build fix**: an upstream electron-vite bug (PR #838, still open) was splicing the CJS-shim header mid-line in the bundled main.js, breaking the build. The `media:importBuffer` IPC for Brainwash clipboard paste was moved into its own file (`src/main/ipc-media-import.ts`) with all comment patterns that could trip the regex stripped out.
- **Perf โ AI Review autocomplete didn't freeze, but felt that way**: the Custom Tag autocomplete's render-time substring scan walked the entire tag DB on every keystroke without an early break, and the SQLite writes in `approveEdited` weren't transactioned. Both fixed: hard break once 6 visible matches are gathered, and tag inserts wrapped in a single transaction (~200ms โ ~5ms on 20-tag approves).
- React 19 `fetchPriority` casing fix in CaptionsPage (was `fetchpriority`, lowercase โ Chromium worked, React 19 logged a dev warning).
## ๐ v2.8.0 โ UX & perf polish (2026-05-23)
A ~50-item polish + perf release on top of v2.7.1. Headline numbers:
**53 features / fixes shipped**, **~30 new keyboard shortcuts**, **1 new
visibility-gated polling hook** that cut background IPC chatter to ~zero
when the app is in the background.
- **Voice Intake fix** โ `getIntakeStatus()` was returning only 3 of the 8 fields the renderer card reads, so the panel rendered "Stopped" with "undefined done ยท undefined failed" even while the watcher was active. All counters now wire through.
- **Theme text reactivity** โ hardcoded Tailwind `text-white` / `text-zinc-*` / `text-gray-*` / `text-slate-*` now follow the active theme's `--text` variable in **every** theme (was only doing so in `light`).
- **Library**: Untagged / Recent 24h / `<5min` / `5โ20min` / `>20min` quick-filter pills ยท vim `gg`/`G`/`/`/`d` shortcuts ยท PageUp/PageDown paging ยท selection-bar additions (`+Tag` / `-Tag` / AI re-tag / Generate Thumbs / Open up to 4) ยท TopBar subtitle showing `N items ยท X GB` (or `N selected` in selection mode) ยท Random Pick excludes Continue Watching items ยท Library count badge in sidebar.
- **Floating Player**: Ctrl+S saves current frame as PNG ยท `r` rotates 90ยฐ ยท `q`/Ctrl+W close ยท Shift+Q closes all ยท `[`/`]` rate ยฑ10% (rate persists) ยท floating speed badge when rate โ 1ร ยท Shift+S / Shift+E explicit A-B loop endpoints ยท Skip-intro overlay (configurable offset) ยท pause-on-blur (default ON) ยท Retry button on error overlay.
- **AI Tools**: bare `a` approves / `x` rejects + auto-advance ยท Approve โฅ85% bulk-confidence button ยท 1-4 keys swap tabs ยท ETA line in queue status.
- **Sessions**: 1-5 keys swap sub-tabs ยท top-right End Session button (broadcasts `sessions:end-all`; verifier, stroke tempo, HR band, lockout all listen and stop themselves).
- **Browse**: `sortBy` persists across sessions ยท vim `gg` / `G` jump to top / bottom.
- **GoonWall**: `p` pauses all tiles ยท `1`-`9` set tile count.
- **Performers**: `j`/`k` cluster navigation with focus ring + scroll-into-view ยท sort dropdown (by size / name / recent).
- **Playlists**: search field ยท Cmd/Ctrl+N focuses new-playlist input.
- **Brainwash**: Tab ping-pongs topโbottom text inputs ยท **clipboard paste imports the image into your library** via new `media:importBuffer` IPC.
- **Toast**: Logs button on error toasts ยท Dismiss-all when โฅ3 stacked ยท dimmed during Zen mode.
- **Settings**: Open userData folder ยท Reload from disk ยท API key reveal toggles.
- **Command palette** gained 5 new entries: Pause/Resume AI Queue, Reload Settings, Open Logs Folder, Close All Floating Players.
- **Perf**: new `useVisibilityInterval` hook applied to 10 polling cards (QueueDashboard 2s, DevicesView 2s, LiveSessionView 5s, CrossDeviceCard 5s, SidecarWatcherBadge 5s, VaultMlSidecarCard 8s, HomeAssistantCard 10s, ExtraDetectorsCard 30s, SubscriptionsBellButton 60s, App-level untagged count 30s) so polls pause when the tab is hidden. App-level AI status poll backs off 5s โ 30s while hidden.
See [CHANGELOG.md](CHANGELOG.md) for the full v2.8.0 notes.
## ๐ v2.7.0 โ The integration sweep (2026-05-17)
The largest release since v2.6.0. Every preload bridge that had no UI surface now has one. **32 new components**, **23 new Settings cards**, **6 player overlay buttons**, **8 Library Tools entries**, plus React 19 + React Compiler.
- **Settings โ Services tab** gained 23 cards across themed sections: Decentralized (Iroh / Hyperswarm / Helia / Syncthing), Privacy (Veilid / Tor / WebTransport / Nostr), Social (Bluesky labeler / UnifiedPush / IMAP), AI gen (Video Diffusion / VaultMl sidecar), Tag intelligence (Tag implications / Folder actions), Security (WebAuthn / Shamir / ntfy), Content imports (Coomer / AudioErotica / CaptionPool / yt-dlp profiles)
- **Library page** got Stack Mode pager, Quick Look (hold-Q), Color Palette filter chip, Duplicate Triage modal, Animated sub-library facet picker, Sprite-sheet Chapter editor, Export Pipeline recipe builder, SidecarWatcher status badge in TopBar
- **Floating player** gained a right-edge overlay rail with 7 toggles: LUT grade ยท Subtitles ยท Scopes ยท Beats (Cock-Hero) ยท Heatmap ยท Quick Look ยท Capture moment
- **Right-click context menu** added Share via Iroh, Pin to IPFS, Open Export Pipeline, Auto-tease, Deny for, Feature less
- **MediaInfoModal** gained an Obsidian-style backlinks panel
- **AI Tools** added JoyTag + Real-ESRGAN cards + an Audits section (Quality auditor + Clip similarity)
- **MessagePort scrub-thumb fast-path** โ ffmpeg-backed disk-cached thumbnails, second-pass scrubbing is near-instant
- **View Transitions API** wrapping page navigation for GPU-accelerated cross-page morph
- **React 19.2 + React Compiler** in annotation mode, 21 v2.7 components opted in
- **Bug fixes**: watch-history `m.rating` SQL error, PlaylistsPage `allMedia.filter` crash, bridge access paths corrected across 9 files
See [CHANGELOG.md](CHANGELOG.md) for the full v2.7.0 notes.
## ๐ v2.6.1 โ Polish patch
- **One-click installs** โ CLIP BPE vocab + NudeNet model (Nano / Medium) now install with a single click from AI Tools. No more "open DevTools and drop a file."
- **8 more detector status cards** โ SFace, Person ReID, DB+CRNN OCR, LAION aesthetic, deepfake / AI-face, AI-image, WhisperX sidecar, F5-TTS sidecar โ all probe their own state and show install path + size in AI Tools.
- **WhisperX auto-start + consumer** โ when the WhisperX Python sidecar is configured + opted in, transcripts route through it for word-level + speaker-diarized output instead of whisper.cpp.
- **TS sweep** โ `npx tsc --noEmit` clean across the codebase.
- **Booru video CDN fix** โ gray-frame playback on xbooru / gelbooru / realbooru / tbib / hypnohub / paheal solved at the network layer via Electron `webRequest.onBeforeSendHeaders` Referer strip.
- **ML wrapper backlog doc** โ `docs/ML_WRAPPER_BACKLOG.md` is the single index of every optional ML add-on with status (shipped / functional / scaffold).
See [CHANGELOG.md](CHANGELOG.md) for full v2.6.1 notes.
## ๐ v2.6.0 โ What's new
- **Browse aggregator** โ 27-source parallel search across boorus, AI-gen platforms, tube sites, and social feeds (e621, rule34.xxx, Danbooru, AIBooru, Civitai, Gelbooru, Pixiv R-18, RedGifs, PornHub, RedTube, Eporner, xnxx, Bluesky, PullPush/Reddit archive, and more). Multi-select bulk save, custom filename templates, in-library duplicate detection, Vault-tag-blacklist application, source-family tabs, and a filter popover with active-count badge.
- **ML detector stack** โ six ONNX models wired into the AI tagging queue: YuNet face detection, SFace face recognition (with face_clusters table), Person ReID body embeddings, MoveNet pose detection, NudeNet v3 body-part detection, and a gender classifier. Plus whisper.cpp transcription, JoyCaption sidecar, and LAION aesthetic predictor.
- **Performers page** โ face-cluster grid driven by SFace. Name a cluster once and every video featuring that face auto-gets a `performer:NAME` tag.
- **HLS-aware video lightbox** โ xnxx + other tube playback now works via `hls.js` with yt-dlp as the universal fallback resolver.
- **Tag autocomplete** โ Vault's canonical-tags vocabulary now drives in-place autocomplete in the Browse search bar.
- **Migrations v17 โ v23** โ face_clusters, face_embeddings, body_embeddings, multi-frame pHash, ai_analysis_results repairs, whisper transcripts (FTS5), CLIP embeddings.
See [CHANGELOG.md](CHANGELOG.md) for the full v2.6.0 release notes.
---
## โจ Why Vault?
### ๐ฏ **Built for Privacy**
Your collection stays on YOUR machine. No cloud uploads, no tracking, no telemetry. Panic key instantly hides everything.
### ๐ง **AI That Understands**
3-tier AI system auto-tags content, generates captions, and learns your preferences. Works offline too.
### ๐จ **Immersive Experience**
20+ visual overlays, 15+ themes, multiple view modes. From focused browsing to immersive walls.
### ๐ฑ **Everywhere Access**
Stream to smart TVs via DLNA. Control from your phone. Your library, your way.
---
## ๐ผ๏ธ Screenshots
| Library View | Goon Wall | Brainwash Editor |
|:---:|:---:|:---:|
| *Organize thousands of files* | *Multi-video immersive grid* | *AI captions & filters* |
| Feed Mode | PMV Editor | Mobile Sync |
|:---:|:---:|:---:|
| *TikTok-style navigation* | *Beat-synced video creation* | *Control from your phone* |
---
## ๐ Quick Start
```bash
# Clone & Install
git clone https://github.com/Nwund/vault-project.git
cd vault-project
npm install --legacy-peer-deps
npx electron-builder install-app-deps
# Launch
npm run dev
```
**That's it!** Add your media folders in Settings and start exploring.
---
## ๐ฌ Features
### ๐ Library Management
| | Feature | Description |
|:---:|---|---|
| ๐ | **Smart Scanning** | Auto-imports from watched folders |
| ๐ค | **AI Auto-Tagger** | Venice AI + ONNX analyzes content |
| ๐ท๏ธ | **Tag Categories** | Hierarchical organization system |
| ๐ | **Tag Aliases** | Synonyms auto-resolve |
| ๐พ | **Custom Filters** | Save complex filter combos |
| ๐ฏ | **Duplicate Finder** | Hash, size, or name matching |
| โก | **Batch Operations** | Bulk tag, rate, delete, organize |
| ๐ | **Watch Later** | Priority queue with reminders |
### ๐ฅ Viewing Modes
๐
Library
Grid browsing with filters
๐ฑ
Feed
TikTok-style swipe
๐งฑ
Goon Wall
Multi-video grid
๐ง
Brainwash
Caption editor
๐ต
PMV Editor
Beat-synced edits
### ๐ค AI Intelligence (3-Tier System)
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ TIER 3: Synonym โ canonical-tag mapping โ
โ โข Maps free-text into Vault's porn-site tag vocab โ
โ โข Atomic tags only, deny-listed clinical/anime meta โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ๏ธ TIER 2: Venice vision LLM (qwen3-vl-235b) โ
โ โข Multi-frame scene understanding โ
โ โข Title + description + rich-tag generation โ
โ โข Library-wide rejection-pattern soft prior โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โก TIER 1: Local ONNX (offline, instant) โ
โ โข Multi-tagger ensemble (WD-Tagger variants + consensus)โ
โ โข NSFWJS, NudeNet v3, CLIP โ
โ โข 16 ML detector wrappers (face, pose, ReID, audioโฆ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
### ๐จ Visual Experience
| ๐ Themes | ๐ซ Overlays | ๐ญ Effects |
|---|---|---|
| Obsidian, Neon Dreams, Ember | Film Grain, CRT, Matrix Rain | Vignette, Chromatic, Glitch |
| Velvet, Sapphire, Midnight | Bokeh, Hearts, Aurora | Thermal, Dreamy, VHS |
| Arctic, Mint, Peach Blossom | Sparkles, Fire, Neon Drip | Pixelate, Strobe, Shake |
| *+ Goon themes: Hypno, Latex* | *20+ total overlays* | *15+ PMV transitions* |
### ๐ฌ PMV/HMV Editor
Create professional-quality beat-synced videos:
- **๐ต BPM Detection** - Auto-detect beats from any audio
- **โ๏ธ Smart Cuts** - 6 built-in templates (Classic, Hypno, Romantic...)
- **๐ 16 Transitions** - Flash, Glitch, Zoom, VHS, Pixelate...
- **๐ Beat Text** - Synced text overlays with 6 animation styles
- **๐ Audio Burner** - Extract audio from any video
### ๐ฒ Mobile & Streaming
| Feature | Description |
|:---:|---|
| ๐บ **DLNA Streaming** | Cast to smart TVs with full queue control |
| ๐ฑ **Mobile Sync** | Browse & control from your phone |
| ๐ **QR Pairing** | Instant device connection |
| ๐ฎ **Remote Control** | Playback controls from anywhere |
### ๐ Gamification
> *Turn your sessions into achievements*
- **50 Achievements** to unlock
- **Daily Challenges** for XP rewards
- **Personal Records** & streaks
- **Weekly Stats** tracking
- **Streak Protection** warnings
---
## ๐ ๏ธ Tech Stack
| Layer | Technology |
|:---:|:---:|
| **Framework** | Electron 32 |
| **Frontend** | React 19 + TypeScript + React Compiler |
| **Styling** | Tailwind CSS |
| **Database** | SQLite (better-sqlite3) |
| **Media** | FFmpeg + FFprobe |
| **AI** | ONNX Runtime + Venice vision LLM |
| **Browse** | 27-source booru / tube / social aggregator |
| **Downloads** | yt-dlp (bundled) |
---
## ๐ By the Numbers
| | |
|:---:|:---:|
| **134** Backend Services | **140+** UI Components |
| **19** Database Tables | **23** Migrations |
| **27** Browse Sources | **16** ML Detector Wrappers |
| **23** Services-tab cards | **7** Player overlays |
| **58** Achievements | **20+** Visual Overlays |
| **16** PMV Transitions | **15+** Themes |
---
## โจ๏ธ Keyboard Shortcuts
| Key | Action | | Key | Action |
|:---:|---|---|:---:|---|
| `Space` | Play/Pause | | `L` | Like/Favorite |
| `โ` `โ` | Navigate/Seek | | `B` | Bookmark |
| `โ` `โ` | Volume/Scroll | | `D` | Downloader |
| `F` | Fullscreen | | `Ctrl+K` | Command Palette |
| `M` | Mute | | `Ctrl+Z` | Undo Delete |
| `H` | Hide UI | | `Esc` | **Panic Key** |
---
## ๐ Privacy & Security
๐พ
100% Local
All data on your machine
๐ซ
No Telemetry
Zero data collection
๐จ
Panic Key
Instant hide (Esc)
๐ป
Incognito Mode
No history recording
๐
Encrypted Backup
Secure data export
๐ก๏ธ
Context Isolation
Secure Electron config
---
## ๐ Recent Updates
### v2.6.0 *(Latest)*
**๐ Browse Aggregator + ๐ง ML Detector Stack + ๐ค Performers UI**
- โจ **Browse Aggregator** - 27 sources parallel-searched: e621, rule34, Danbooru, AIBooru, Civitai, Gelbooru, Pixiv R-18, RedGifs, PornHub, RedTube, Eporner, xnxx, Bluesky, PullPush (Reddit archive), and more
- โจ **Multi-select + bulk save** with floating action bar and spring animations
- โจ **Tag autocomplete** from Vault's canonical-tag vocabulary, with โโ Tab Enter keyboard nav
- โจ **Recent + saved searches** dropdown with star-to-pin
- โจ **Source family tabs** (Booru / Tube / AI-gen / Social) narrow both the chip list and the fan-out
- โจ **HLS-aware lightbox** via hls.js + universal yt-dlp fallback for all tube URLs
- โจ **Filter chips**: rating, min-resolution (720p+/1080p+/4K), min-score, SFW-only, Vault-blacklist
- โจ **6 ML detectors** - YuNet face + SFace recognition + Person ReID body + MoveNet pose + NudeNet v3 + gender classifier, all folding into the AI tagging queue
- โจ **Performers page** - SFace face clusters, inline rename auto-applies `performer:NAME` tags
- โจ **Whisper.cpp transcription** (opt-in) with FTS5-indexed dialogue search
- โจ **JoyCaption sidecar** for high-quality VLM captioning
- โจ **8 new achievements** for Browse + Performers + AI usage (First Crate Dig, Browse Explorer, Face Namer, AI Pioneer, Tag Curator, Performer Dossier, Bulk Dropper, Crate Digger)
- โจ **XMP sidecar export** for Darktable / Lightroom / Immich interop
- โจ **Stash interop** (`.stash.json` import/export)
- โจ **Custom filename templates** + in-library duplicate badges + auto-tag `source:browse` on save
- โจ **Multi-tagger ensemble** - load multiple WD-style tagger ONNX models simultaneously (`wdTaggerVariants` setting); tags merged with consensus boost (+10% on 2-variant agreement, +20% on 3+)
- โจ **Browse UI condensed** - secondary filters collapsed into a single popover with active-count badge; double-click any source chip to mute it from "All sources" fan-out
- โจ **PullPush Reddit-archive source** - replaces the gated Reddit Data API entirely (no auth required); NSFW-subreddit-name filter + dead-image URL pattern blocklist + tile auto-hide on load failure
- โจ **Pixiv referer injection** - Electron `webRequest.onBeforeSendHeaders` interceptor rewrites Referer/Origin for `pximg.net` requests so Pixiv's hotlink-protected CDN serves images in the lightbox
- โจ **Bluesky AT Protocol auth** - app-password session token, queries the user's PDS instead of the public appview to avoid 403s
- โจ **xnxx playback** via `yt-dlp` universal fallback when all RapidAPI providers 403; bundled binary, HLS playback via `hls.js`
- โจ **11 new ML wrappers** scaffolded โ InsightFace ArcFace, TransNet V2 shot detection, VideoMAE Kinetics-400 actions, X-CLIP zero-shot video, Chromaprint audio fingerprint, YAMNet 521-class events, LAION CLAP zero-shot audio, Demucs stem separation, WhisperX word-level transcripts (Python sidecar), F5-TTS voice cloning (Python sidecar), JoyTag + idolsankaku-eva02 (via the multi-tagger ensemble). Each has an in-source ACTIVATION block with download URLs and target paths.
- โจ **6 UI library installs** ready for future integration: `@dnd-kit/*` (reorder/merge UX), `@base-ui-components/react` (a11y primitives), `echarts` + `echarts-for-react` (big-data dashboards), `masonic` (variable-aspect virtualized grid), `photoswipe` (standard lightbox)
### v2.4.0
**๐ Stability, Performance & Polish Release**
- โจ **GoonWall Stability** - Improved video slot limiting and playback recovery
- โจ **URL Downloader UX** - Quality selector, auto-import, toast notifications
- โจ **Native Notifications** - OS notifications when downloads complete
- โจ **Database Performance** - New indexes for faster duplicate detection and filtering
- โจ **Memory Optimizations** - Fixed timer/listener leaks, improved cleanup
- โจ **Code Quality** - Removed 935 lines of dead code, improved type safety
- โจ **PMV Editor Polish** - Live preview, improved BPM detection
- โจ **GIF Thumbnails** - Better GIF thumbnail generation with fallbacks
### v2.3.0
**๐ฌ 30 Professional Video Editing & Media Management Components**
- โจ **Scene Detector** - AI-powered scene detection with frame analysis
- โจ **Video Chapters** - Chapter navigation with custom markers and thumbnails
- โจ **Color Grading** - Professional color grading with 5 cinematic presets
- โจ **Loop Region** - A/B loop region selector with saved loops
- โจ **Bookmark Manager** - Video timestamp bookmarks with notes/categories
- โจ **Subtitle Editor** - Full subtitle editor with SRT import/export
- โจ **Thumbnail Strip** - Video timeline with hover thumbnail preview
- โจ **Audio Visualizer** - Real-time visualization (bars, wave, circular, spectrum)
- โจ **PiP Controller** - Picture-in-Picture with position presets
- โจ **Keyframe Extractor** - Extract keyframes at configurable intervals
- โจ **Video Filters** - Real-time filters (vivid, warm, cool, noir, vintage, dreamy)
- โจ **Split Screen** - Multi-video split screen player (2-6 videos)
- โจ **Smart Crop** - AI-assisted cropping with aspect ratio presets
- โจ **Metadata Editor** - Advanced metadata editor with custom fields
- โจ **Playlist Sorter** - Advanced sorting with drag-reorder
- โจ **Watch Progress** - Continue watching tracker with progress bars
- โจ **Media Exporter** - Export with format conversion (mp4, webm, mkv, gif)
- โจ **AI Tagger** - AI-powered auto-tagging with confidence thresholds
- โจ **Thumbnail Selector** - Select/generate custom thumbnails from any frame
- โจ **Related Media** - Smart related media suggestions
- โจ **Media Timeline** - Timeline view by date (day/week/month)
- โจ **Quick Note** - Quick notes with colors, pinning, and timestamps
- โจ **View Mode Selector** - 7 view modes (grid, list, masonry, timeline, carousel...)
- โจ **Auto Playlist** - Auto-generated playlists based on behavior
- โจ **Media Merger** - Merge multiple videos with transitions
- โจ **Media Rotator** - Rotate and flip with undo history
- โจ **Watermark Adder** - Add text/image watermarks with 9 positions
- โจ **Speed Ramp** - Variable speed ramping with graph editor
- โจ **Media Queue** - Playback queue with shuffle and repeat modes
- โจ **Aspect Ratio Switcher** - Quick aspect ratio switching with zoom/pan
Previous Versions
### v2.2.0
**๐ฏ 35 New Components for Ultimate Experience**
- โจ **Command Palette** - Spotlight-style launcher (Ctrl+K)
- โจ **Watch History Timeline** - Visual timeline with session groupings
- โจ **Content Queue** - Smart queue with drag-reorder and shuffle
- โจ **Discovery Engine** - AI-powered suggestions that learn preferences
- โจ **Edge Mode** - Timer-based intensity sessions with 5 presets
- โจ **Immersive Mode** - Distraction-free fullscreen with gesture controls
- โจ **Quick Actions Panel** - Floating panel with Alt+key shortcuts
- โจ **Session Summary** - Post-session stats and insights
- โจ **Smart Playlist Builder** - Visual rule-based playlist creation
- โจ **Ambient Mode** - Dynamic lighting from video frame colors
- โจ **Video Preloader** - Smooth transitions with smart preloading
- โจ **Streaks & Achievements** - Gamification with 50+ achievements
- โจ **Gesture Controls** - Touch/swipe controls for mobile-like navigation
- โจ **Theater Mode Controller** - Enhanced theater mode settings
- โจ **Slideshow Controller** - Advanced slideshow with 8+ transitions
- โจ **Quick Rating** - Star rating with hover preview
- โจ **Playback Speed Control** - Speed selector with custom presets
- โจ **Media Info Overlay** - Detailed media metadata panel
- โจ **Search History** - Search suggestions with recent history
- โจ **Playlist Quick Add** - Quick add to playlists with search
- โจ **Tag Autocomplete** - Smart tag input with suggestions
- โจ **Screenshot Capture** - Capture frames with format/scale options
- โจ **Hotkey Help** - Full keyboard shortcut reference (press ?)
- โจ **Context Menu** - Right-click menus with submenus
- โจ **Media Preview** - Hover preview with video scrubbing
- โจ **Batch Actions** - Bulk operations with confirmation dialogs
- โจ **Import Progress** - Import queue with progress tracking
- โจ **Folder Watcher** - Watch folder management with status
- โจ **Volume Normalizer** - Audio normalization with compressor/limiter
- โจ **Media Comparison** - Side-by-side comparison with sync playback
- โจ **Duplicate Finder** - Find duplicates with hash comparison
- โจ **Media Stats** - Analytics dashboard with trends
- โจ **Quick Search** - Instant search with keyboard navigation
- โจ **Performer Tagger** - Actor tagging with AI suggestions
- โจ **Collection Manager** - Hierarchical collections with drag-drop
### v2.1.7
- Floating Labels - Draggable text anywhere on images
- Vignette Effect - Cinematic borders with slider control
- Beat-Synced Text - PMV text overlays synced to music
- 9 New Transitions - VHS, Spin, Blur, Pixelate, Wipe...
- 6 New Effects - Chromatic, Strobe, Thermal, Dreamy...
- Home Dashboard - Today's Picks, Trending, Unwatched sections
- Series Modal - View and play full series in order
### v2.1.6
- Audio Burner in PMV Editor
- GoonWall auto-shuffle control
- Climax point toggle
### v2.1.5
- Smart Playlists
- Venice AI Captions
- Welcome Tutorial
- Video Frame Capture
- Image Cropping
- Settings Search
---
## ๐บ๏ธ Roadmap
| Version | Features |
|:---:|---|
| **v2.7** | JoyTag + idolsankaku second-opinion taggers โข InsightFace ArcFace face ID upgrade โข TransNet V2 + VideoMAE action labels |
| **v2.8** | WhisperX word-level timestamps โข Demucs vocal isolation โข LAION CLAP zero-shot audio search |
| **v2.9** | F5-TTS voice cloning UI โข Vidstack player core โข dnd-kit reorder โข ECharts analytics |
| **v3.0** | Plugin system โข Cloud sync โข Watch parties โข Multi-user library |
---
## ๐ฅ Get Started
[](https://github.com/Nwund/vault-project/releases/latest)
**Requirements:** Node.js 20+ (Node 22 recommended) โข npm 10+ โข Windows 10+ / macOS 11+ / Linux
---
*Built with obsession by developers who understand the mission.*
๐ Vault v2.7.0 โข 134 backend services โข 27 Browse sources โข 140+ components โข 16 ML detector wrappers โข 23 v2.7 Settings cards