homepage: sectioned panels, WIP open/closed, current model facts, Tautulli card

Both pages now group their panels under section headings rendered by shared
renderSection()/renderPanel() components in app.js (SECTION_ORDER fixes each
page's order: user = AI, Web Apps, Media Library Apps; admin = Media Library
Apps, Observability, AI, Infrastructure). The WIP badge splits into WIP: OPEN
and WIP: CLOSED via the wip value ("open"/"closed"); the checker passes the
value through as wip-open/wip-closed. The frank-large card follows the
unsloth llama.cpp cutover, frank-medium follows the FP8 checkpoint, and the
/docs model guide matches. Tautulli (Plex statistics, 192.168.0.235:8181)
joins the admin page's Media Library Apps section with an open link.
This commit is contained in:
Frank committed 2026-09-21 13:20:15 -07:00
1 parent 32eafeb7c5
commit 384747a72f
9 files changed
+221 -54

No files matched your search

+8 -5
View File
@@ -2,7 +2,8 @@
# Seam: scripts/homepage-status.py <services.json> <out.json>
# Given a service config, the checker writes a valid status.json with the
# correct state per service: an open port is up, a closed port is down,
# a wip service is wip (not probed). The output carries generated_at.
# a wip service is not probed and takes the state of its wip value
# (wip-open / wip-closed). The output carries generated_at.
load helpers
@@ -24,13 +25,14 @@ teardown() {
rm -rf "$TMP"
}
@test "checker: open port is up, closed port is down, wip is wip" {
@test "checker: open port is up, closed port is down, wip is wip-open / wip-closed" {
local svc="$TMP/services.json" out="$TMP/status.json"
cat > "$svc" <<JSON
[
{"name":"up","category":"user","probe":"127.0.0.1:$UP_PORT","method":"tcp","wip":false},
{"name":"down","category":"user","probe":"127.0.0.1:$DOWN_PORT","method":"tcp","wip":false},
{"name":"wip","category":"user","probe":"127.0.0.1:1","method":"tcp","wip":true}
{"name":"wipopen","category":"user","probe":"127.0.0.1:1","method":"tcp","wip":"open"},
{"name":"wipclosed","category":"user","probe":"127.0.0.1:1","method":"tcp","wip":"closed"}
]
JSON
python3 "$CHECKER" "$svc" "$out"
@@ -41,7 +43,8 @@ d = json.load(open(sys.argv[1]))
s = {x["name"]: x["state"] for x in d["services"]}
assert s["up"] == "up", s
assert s["down"] == "down", s
assert s["wip"] == "wip", s
assert s["wipopen"] == "wip-open", s
assert s["wipclosed"] == "wip-closed", s
assert "generated_at" in d
PY
}
@@ -91,7 +94,7 @@ PY
@test "the checker writes status.json world-readable so Caddy can serve it" {
local svc="$TMP/services.json" out="$TMP/status.json"
echo '[{"name":"x","category":"user","probe":"127.0.0.1:1","method":"tcp","wip":true}]' > "$svc"
echo '[{"name":"x","category":"user","probe":"127.0.0.1:1","method":"tcp","wip":"closed"}]' > "$svc"
python3 "$CHECKER" "$svc" "$out"
[ "$(stat -c %a "$out")" = "644" ]
}