Two-slot shell topbar (home, left, center, bell, user menu) with SDK API (setLeft/setSlot/setTitle/hide/show). All 4 primary surfaces migrated: Settings and Team Admin to Pattern B (flat tabs), Admin to Pattern C (category tabs + sidebar), Docs to Pattern A (default). Backend WS events: package.changed (broadcast), auth.changed (targeted), notification.all_read. User menu re-fetches on package/auth changes. Bell syncs read state across tabs. Error handling pass with .sw-inline-error CSS primitive. Empty state guidance for Admin Workflows/Groups. Announcement global dismiss via localStorage. Rebrand assets deployed (both b/e icon variants, wordmarks, full icon library). Docs outline scroll-to-heading fix. Bug fixes: ICD security assertion tightened, workflow-demo error surfacing, signoff display names, hello-dashboard + team-admin/groups.js deleted. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
20 lines
783 B
HTML
20 lines
783 B
HTML
{{/* v0.27.0: Generic container for extension surfaces.
|
|
Extension JS mounts into #extension-mount. The manifest is available
|
|
as window.__MANIFEST__ (injected in base.html). Platform primitives
|
|
(Theme, UI, API, ChatPane, etc.) are loaded by base.html before this
|
|
script runs.
|
|
|
|
Extensions can use any component available on the page:
|
|
- ChatPane.create(container, opts)
|
|
- UI.* primitives (toast, confirm, etc.)
|
|
- API.* (authenticated fetch)
|
|
- Theme.* (dark/light queries)
|
|
*/}}
|
|
{{define "surface-extension"}}
|
|
<div id="extension-surface" class="extension-surface"
|
|
data-surface-id="{{.Surface}}">
|
|
<div id="shell-topbar"></div>
|
|
<div id="extension-mount" class="extension-mount" data-ext="{{.Surface}}"></div>
|
|
</div>
|
|
{{end}}
|