{{define "base.html"}} {{block "title" .}}Chat Switchboard{{end}} {{/* Decomposed from monolithic styles.css (v0.22.9) */}} {{if eq .Surface "chat"}}{{template "css-chat" .}}{{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 "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 */}} {{/* v0.28.5: SDK — composition layer over globals. Must load after all primitives/components it wraps, before extensions.js. */}} {{/* ── Universal init: SDK boot for ALL surfaces ── */}} {{if eq .Surface "chat"}}{{template "scripts-chat" .}}{{end}} {{if eq .Surface "admin"}}{{template "scripts-admin" .}}{{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.5: UserMenu hydration moved into Switchboard.init() (switchboard-sdk.js). The SDK handles create/bind/setUser for all non-chat surfaces automatically. */}} {{/* ── Debug Log Modal (all surfaces) ───── */}}
{{end}}