{{define "base.html"}} {{block "title" .}}Chat Switchboard{{end}} {{/* Decomposed from monolithic styles.css (v0.22.9) */}} {{if eq .Surface "chat"}}{{template "css-chat" .}}{{end}} {{if eq .Surface "editor"}}{{template "css-editor" .}}{{end}} {{/* v0.27.0: Extension surface CSS — loaded from /surfaces/{id}/css/main.css */}} {{if and .Manifest (eq .Manifest.Source "extension")}} {{end}} {{if .Banner.Visible}} {{end}}
{{if eq .Surface "chat"}}{{template "surface-chat" .}} {{else if eq .Surface "admin"}}{{template "surface-admin" .}} {{else if eq .Surface "editor"}}{{template "surface-editor" .}} {{else if eq .Surface "notes"}}{{template "surface-notes" .}} {{else if eq .Surface "settings"}}{{template "surface-settings" .}} {{else if and .Manifest (eq .Manifest.Source "extension")}}{{template "surface-extension" .}} {{else}}
Unknown surface: {{.Surface}}
{{end}}
{{if .Banner.Visible}} {{end}} {{/* v0.25.0: Component scripts — available on all surfaces */}} {{/* ── Universal init: theme + appearance for ALL surfaces ── */}} {{if eq .Surface "chat"}}{{template "scripts-chat" .}}{{end}} {{if eq .Surface "admin"}}{{template "scripts-admin" .}}{{end}} {{if eq .Surface "editor"}}{{template "scripts-editor" .}}{{end}} {{if eq .Surface "notes"}}{{template "scripts-notes" .}}{{end}} {{if eq .Surface "settings"}}{{template "scripts-settings" .}}{{end}} {{/* v0.27.0: Extension surface JS — loaded from /surfaces/{id}/js/main.js */}} {{if and .Manifest (eq .Manifest.Source "extension")}} {{end}} {{/* ── v0.28.0: Universal UserMenu hydration ────────────────── Runs after all surface-specific scripts. Creates and binds the UserMenu component if no surface script did it already. Guard: chat surface excluded — it uses UI.toggleUserMenu() with richer behavior (team admin refresh). Chat migration to UserMenu component is tracked as tech debt (Pre-1.0 sweep). */}} {{/* ── Debug Log Modal (all surfaces) ───── */}}
{{end}}