- The folder input no longer remembers every file forever.
data/folder_ingest.json
keeps one fingerprint per processed file so a restart does not re-read the whole folder,
but nothing ever pruned it — and the whole file is rewritten on every recording, so the
per-file cost grew with everything before it. Measured: 453 bytes per entry, 160 ms per
save at 50,000 entries, 660 ms at 200,000. At a thousand recordings a day that is over a
second of pure bookkeeping per file after a year. Reported on the HA forum. - New
folder.max_indexed_files, default 5000,0disables the cap. Oldest entries go
first; a file still being processed is never evicted. Dropping an entry costs nothing
beyond reading that file once more if it is still there. - Settable at runtime as Remember at most in the settings tab, which shows how many
files are currently indexed against the limit. - Enrolled faces are not affected. The gallery lives in
data/personsand never
expires — this cap only bounds the "already seen this file" notebook. - Eviction happens once when a scan finishes, never in the middle of one: trimming between
files would throw away entries the same scan had just written and re-process them.
A folder that permanently holds more files than the cap now logs a warning, since every
scan re-reads whatever fell out. - Entries left in
processingby a crash or a restart are reset for retry when the index
is loaded. They are exempt from eviction, so without that they would accumulate until the
cap could never be met again. - The settings tab applies the limit through a locked, non-blocking path — it runs on the
HTTP thread while the folder worker may be writing the same state. - Documented that the folder input reads still images (
.jpg,.jpeg,.png,.webp),
not just video. It always could; the defaultextensionslist is video-only and nothing
said so, so a folder of images was skipped in silence.