Vellum/migrations
mithral 5458b0a28a Phase 2: libraries and the file scanner
- library: CRUD with root-path resolution (absolute, symlink-free, must be
  readable). A library name is unique; the root is validated at creation.
- registry: media types declare their extensions; the core never imports a
  module. RegisterType is the extension point.
- scanner: walks a root, reconciles media_items/media_files in one
  transaction, skips unchanged files by size+mtime, and marks vanished files
  missing rather than deleting them (progress is the one thing here that
  cannot be regenerated). A single unreadable file never fails a scan.
- migration 0002: `missing` flags on items and files, plus indexes.
- endpoints: media-types, library list/get/create/delete, per-library items,
  and scan. Library reads go through the same grant chokepoint as everything
  else; an unauthorised library 404s rather than 403s so its existence is not
  leaked.
2026-10-09 16:33:56 -04:00
..
0001_core.sql Phase 0: skeleton, config, migrations, health check, container 2026-10-09 16:26:08 -04:00
0002_missing.sql Phase 2: libraries and the file scanner 2026-10-09 16:33:56 -04:00
embed.go Phase 0: skeleton, config, migrations, health check, container 2026-10-09 16:26:08 -04:00