feat(web): settings view for roots and policies

Own route beside library and queues. Roots edit kind, audience, path
and their policy; policies get a form over the real fields — size
bands as number inputs, score and source weights as numbers,
resolution preference and audio/HDR rules as validated lists. Delete
arms before firing; a 409 from a referenced policy or occupied root
surfaces its message.
This commit is contained in:
Miguel Palhas
2026-08-23 15:14:34 +01:00
parent 9fa1f0cc51
commit 71c2741d08
6 changed files with 891 additions and 10 deletions
+6 -1
View File
@@ -52,6 +52,7 @@ import {
searchTitles,
type TmdbMovie,
} from "./search";
import { settingsMain } from "./settings";
import "./style.css";
const POLL_MS = 15_000;
@@ -207,7 +208,8 @@ function main() {
const releases = releasesMain();
const library = libraryMain(board, releases, views);
const queues = queuesMain(board, releases, views);
views.push(library, queues);
const settings = settingsMain(board, views);
views.push(library, queues, settings);
const search = searchMain(board, releases, views);
// a removed title must not survive on the surface the deck opened over
releases.setRemoved((parent) => {
@@ -244,6 +246,9 @@ function main() {
case "queues":
queues.open();
break;
case "settings":
settings.open();
break;
case "search":
search.restore(route.query);
break;