The /api/v1/surfaces endpoint doesn't return source field, so
filter by route pattern (/s/ prefix) instead of source !== 'core'.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
resolveDefaultSurface was using ListEnabledByType("surface") which
missed extension packages with type "full". Switch to List() and
filter by source != core/builtin + type surface/full.
Also make welcome surface smarter: detect when extensions exist
but no default is set vs truly empty install, show appropriate
messaging and CTA (Set Default Surface vs Go to Packages).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Create welcome surface: topbar + getting-started card shown when
no extension surfaces are installed. Admins see a link to Packages,
non-admins see a message to contact their administrator.
- Update resolveDefaultSurface priority chain:
user preference → global config → first extension → /welcome
- Register welcome as a core surface with authenticated auth
- Final fallback is now /welcome instead of /admin, breaking the
infinite back-button loop
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the Back button and its sessionStorage return-URL stash
logic. Add UserMenu to the right side of the admin topbar,
providing consistent navigation to all surfaces and eliminating
the infinite-loop problem (Back → / → admin → Back → ...).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove System Prompt, Default Model, Policies (BYOK/personas/KB),
Web Search, Auto-Compaction, and Memory Extraction sections — all
chat/AI features gutted in Phase 0. Surviving admin settings:
Default Surface, Registration, Banner, Message Bar, Footer, Vault,
Email.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove all chat-era fields from user settings General section
(Default Model, System Prompt, Max Tokens, Temperature, Show
Thinking). Replace with a Default Surface dropdown that lets
users override the global admin-configured landing page.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Rename "Chat Defaults" heading to "Defaults" in settings general
- Guard sw.api.models.enabled() call (crashes when no providers
are configured since models API returns undefined)
- Verified: admin, settings, login surfaces render correctly in
both light and dark themes at desktop viewport
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- nginx: use alias for BASE_PATH fallback so static assets resolve
correctly when deployed under a sub-path (fixes white page on K8s)
- base.html: remove dead template refs (chat, notes, projects) that
caused html/template to fail silently with Content-Length: 0
- login hero: rebrand from "Chat Switchboard" to "Switchboard Core",
update tagline and feature pills to reflect platform pivot
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>