Add Unsorted folder auto-sort with keyword matching

Scans an Unsorted folder at the library root and proposes destinations
for new courses by matching keywords against the existing category
tree, suggesting new subfolders when nothing matches closely, and
flagging items for manual review when nothing matches at all. Review
and apply happen on a dedicated /unsorted page linked from Settings;
nothing moves until the user confirms.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-24 09:10:19 -04:00
co-authored by Claude Sonnet 5
parent 52371dd02f
commit 4eda493e00
4 changed files with 778 additions and 1 deletions
+14
View File
@@ -91,6 +91,16 @@ silently stay blank instead of erroring.
- Hide courses/folders from the browser without touching anything on disk;
bulk-select to hide or queue several at once
- Bulk rename across course/folder names (find & replace)
- **Sort Unsorted** ([/unsorted](templates/unsorted.html), linked from
Settings): drop new/incoming courses into an `Unsorted` folder at the
library root, then scan proposes a destination for each one by keyword
overlap against the *existing* category tree - read fresh from disk every
scan, so it adapts to whatever folders you actually have rather than any
hardcoded subject list. Three outcomes per item: a confident match to an
existing folder, a suggested new subfolder under a broader category match,
or "needs review" (unchecked by default) when nothing overlaps at all.
Every destination is editable before applying, and nothing on disk moves
until you review and hit Apply.
**Dashboard**
- Library-wide stats (courses, lessons completed, time watched, time
@@ -185,6 +195,10 @@ MyCourse/
No metadata files needed — course/section/lesson names come straight from
folder and file names.
An `Unsorted/` folder at the library root (alongside the real category
folders) is the drop point for new/incoming courses — see Sort Unsorted
above.
## Supported file types
| Type | Extensions |