refactor: remove legacy single-root APIs, defer filesystem I/O, enforce POSIX paths

- Remove legacy endpoints: /api/change-folder, /api/index, /api/scan, /api/status,
  /api/playback/resume-positions
- Remove legacy global scanner module-level API from hivescan/scanner.py
- Defer all filesystem validation to background task in server lifespan (macOS-safe)
- CLI and winmain pass raw paths via MEDIAHIVE_ROOTS; no pre-startup validation
- Enforce POSIX paths everywhere (as_posix(), no backslash leakage)
- Remove MEDIAHIVE_PATH and MEDIAHIVE_DEFER_INITIAL_ROOT env vars
- Update frontend api.ts to use per-root resume positions
- Update docs/API.md and docs/multi-index-plan.md
- Fix Python 2 style except clauses in hivescan/utils.py and scanning.py
This commit is contained in:
2026-05-23 22:21:35 +00:00
parent 2f83193ff4
commit 9c75fa4569
25 changed files with 1963 additions and 1150 deletions
+3 -3
View File
@@ -92,16 +92,16 @@ const posterImageUrl = computed(() => {
if (!props.item.cover_path || isVideoPath(props.item.cover_path)) {
return null;
}
return getCoverUrl(props.item.cover_path);
return getCoverUrl(props.item.cover_path, props.item.root_id);
});
const posterVideoUrl = computed(() => {
if (props.item.cover_path && isVideoPath(props.item.cover_path)) {
return getCoverUrl(props.item.cover_path);
return getCoverUrl(props.item.cover_path, props.item.root_id);
}
const fallbackVideo = props.item.showreel_images?.find(path => isVideoPath(path));
return fallbackVideo ? getCoverUrl(fallbackVideo) : null;
return fallbackVideo ? getCoverUrl(fallbackVideo, props.item.root_id) : null;
});
const rating = computed(() => {