catacomb/src
Luna e840d55332 Index transcripts into library search (FTS), both UIs
The 🔍 library search now matches spoken words, not just titles /
channels / descriptions.

- database.rs: add a `transcript` column to the `video_search` FTS5 index.
  Fresh DBs get it directly; existing ones are migrated (FTS5 has no ADD
  COLUMN, so the table is recreated and search_meta cleared to force a
  one-time reindex). `sync_search_index` reads each video's first subtitle
  (mtime-gated like the description), flattens it via the shared `vtt`
  parser (`transcript_text`, capped at 256 KB), and indexes it. Search
  snippets now use column -1 so the excerpt comes from whichever column
  matched (description or transcript).
- library.rs: `build_search_entries` passes the first subtitle path.
- Both UIs: search copy updated to mention transcripts.

Tests: a unit test (a word only in the .vtt is found), a migration test
(seed an old 5-column index + stale meta, open, confirm the recreated
index indexes transcript text), and the search integration test now seeds
a subtitle and asserts a spoken-only word hits. Also bumped the test
server's startup budget so the ffmpeg-heavy dedup test can't starve a
sibling server into a flaky timeout. 120 tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 06:55:00 -07:00
..
web_ui Index transcripts into library search (FTS), both UIs 2026-06-07 06:55:00 -07:00
app.rs Index transcripts into library search (FTS), both UIs 2026-06-07 06:55:00 -07:00
config.rs Enhance comment viewer + make SponsorBlock configurable (3.6 + parity) 2026-06-07 03:53:49 -07:00
crash.rs Stability hardening: crash.log + disk-full preflight (2.5) 2026-05-27 02:53:56 -07:00
database.rs Index transcripts into library search (FTS), both UIs 2026-06-07 06:55:00 -07:00
disk_space.rs Stability hardening: crash.log + disk-full preflight (2.5) 2026-05-27 02:53:56 -07:00
download_options.rs Enhance comment viewer + make SponsorBlock configurable (3.6 + parity) 2026-06-07 03:53:49 -07:00
downloader.rs Enhance comment viewer + make SponsorBlock configurable (3.6 + parity) 2026-06-07 03:53:49 -07:00
error_class.rs Classify YouTube captcha wall as rate-limited, not "not found" 2026-06-01 08:47:14 -07:00
fingerprint.rs Perceptual-hash dedup: desktop UI + shared pipeline (3.7, part 3) 2026-06-07 06:23:59 -07:00
library.rs Index transcripts into library search (FTS), both UIs 2026-06-07 06:55:00 -07:00
main.rs Perceptual-hash dedup: fingerprint engine + storage (3.7, part 1) 2026-06-07 06:03:53 -07:00
maintenance.rs Add bundled yt-dlp, music library, Plex metadata, sort by date; security + perf hardening 2026-05-23 04:54:26 -07:00
platform.rs Nest all platforms under channels_root (was: siblings) 2026-05-27 10:38:01 -07:00
plex.rs Add multi-platform support: TikTok, Twitch, Vimeo, Bandcamp, SoundCloud, Odysee 2026-05-24 22:16:40 -07:00
pot_provider.rs Fix POT provider: install version-matched plugin, not PyPI upstream 2026-05-31 22:24:01 -07:00
stats.rs Add statistics view, editable source_url, rewrite security audit 2026-05-23 05:34:29 -07:00
theme.rs Desktop: shuffle + library backup + theme contrast fixes 2026-05-26 03:09:50 -07:00
tray.rs Add system tray with minimize-to-tray (Tartube parity 1.6) 2026-05-27 02:17:10 -07:00
util.rs Robustness: recover from poisoned locks instead of cascading panics (2.5) 2026-06-06 23:49:56 -07:00
vtt.rs Transcript viewer + search, in both UIs (3.x) 2026-06-07 05:44:33 -07:00
web.rs Perceptual-hash dedup: desktop UI + shared pipeline (3.7, part 3) 2026-06-07 06:23:59 -07:00
ytdlp_bin.rs Bundled yt-dlp: install nightly (--pre) to fix broken impersonation 2026-06-01 04:22:56 -07:00