ON_OFF Phase 0-3: service-controller (.13:8443, token-gated, containers+systemd-user, audit log) + portal toggle cards (live status, per-user who, failed token, RAM) — full E2E verified

This commit is contained in:
2026-10-08 19:10:45 +11:00
parent bb2c6e5d0d
commit 85827be3be
15 changed files with 549 additions and 7 deletions

View File

@@ -33,6 +33,10 @@ class Tool:
lan: bool = False
admin: bool = False
private: bool = False # per-user private app (e.g. dsh instance)
# --- ON/OFF control (ON_OFF.md) ---
service_id: str | None = None # controller allowlist id, e.g. "gimp"
ram_mb: int | None = None # idle RAM shown on the card
togglable: bool = False # only True if in the controller allowlist
def section_label(category: str) -> str:
@@ -94,7 +98,8 @@ def _cat() -> list[Tool]:
# ---- Image ---------------------------------------------------------
Tool("gimp", "GIMP", "image",
"Photo editing & retouching", "https://gimp.lab.audasmedia.com.au"),
"Photo editing & retouching", "https://gimp.lab.audasmedia.com.au",
service_id="gimp", ram_mb=233, togglable=True),
Tool("penpot", "Penpot", "image",
"Open-source design & prototyping", "https://penpot.lab.audasmedia.com.au", login=True),
Tool("photo-filter", "Photo Filter", "image",
@@ -102,7 +107,8 @@ def _cat() -> list[Tool]:
# ---- Video ---------------------------------------------------------
Tool("video-editor", "Video Editor", "video",
"Desktop video editing in your browser", "https://video.lab.audasmedia.com.au"),
"Desktop video editing in your browser", "https://video.lab.audasmedia.com.au",
service_id="video-editor", ram_mb=237, togglable=True),
Tool("jellyfin", "Jellyfin", "media",
"Movies, TV & music server", "https://jellyfin.lab.audasmedia.com.au", login=True),
Tool("jellyseerr", "Jellyseerr", "media",
@@ -130,9 +136,11 @@ def _cat() -> list[Tool]:
# ---- Audio ---------------------------------------------------------
Tool("audio-editor", "Audio Editor", "audio",
"Multi-track audio editing", "https://audio.lab.audasmedia.com.au"),
"Multi-track audio editing", "https://audio.lab.audasmedia.com.au",
service_id="audio-editor", ram_mb=201, togglable=True),
Tool("lmms", "LMMS Music Studio", "audio",
"Beats, melodies & full arrangements", "https://lmms.lab.audasmedia.com.au"),
"Beats, melodies & full arrangements", "https://lmms.lab.audasmedia.com.au",
service_id="lmms", ram_mb=798, togglable=True),
Tool("snapcast", "Snapcast", "audio",
"Sync audio to speakers around the house", "http://192.168.20.13:1780", lan=True),
Tool("mopidy", "Mopidy", "audio",