framework/lib/sqlite.ts | 49 +- lib/log.ts | 25 +- lib/progress.test.ts | 25 + lib/progress.ts | 47 +- lib/queue.ts | 9 +- lib/subprocess/ffmpeg.ts | 3 + run.js | 1 + src/backend.ts | 1 + src/bin/download-db.ts | 15 +- src/bin/tail-progress.ts | 50 ++ src/file-viewer/backend.ts | 4 +- src/file-viewer/bin/file-scan.ts | 1035 ++------------------------------ src/file-viewer/bin/file-trim.ts | 17 - src/file-viewer/bin/migrate-db.ts | 331 ++++++++++ src/file-viewer/indexer/dirmeta.ts | 108 ++++ src/file-viewer/indexer/processors/compress.ts | 35 ++ src/file-viewer/indexer/processors/media.ts | 352 +++++++++++ src/file-viewer/indexer/processors/text.ts | 56 ++ src/file-viewer/indexer/registry.ts | 100 +++ src/file-viewer/indexer/scan.ts | 559 +++++++++++++++++ src/file-viewer/indexer/scrub.ts | 160 +++++ src/file-viewer/indexer/service.ts | 297 +++++++++ src/file-viewer/models/FilePermissions.ts | 12 +- src/file-viewer/models/MediaFile.ts | 139 +++-- src/file-viewer/models/ProcessorState.ts | 146 +++++ src/file-viewer/models/derived.ts | 62 +- src/file-viewer/rules.ts | 6 + src/file-viewer/sync.ts | 160 +++++ src/file-viewer/tags/media-dir.marko | 2 +- src/file-viewer/tags/media-panel.marko | 2 +- src/file-viewer/tags/view-audio.marko | 2 +- src/file-viewer/tags/view-code.marko | 3 +- src/file-viewer/tags/view-download.marko | 2 +- src/file-viewer/tags/view-text.marko | 27 +- src/source-of-truth.dockerfile | 44 +- src/source-of-truth.ts | 168 +++++- src/tags/clover-media.marko | 52 +- src/tags/clover-video.client.ts | 70 ++- src/tags/clover-video.marko | 19 +- 39 files changed, 2995 insertions(+), 1200 deletions(-)