HERMES-GIELIE/api
Nathan Esquenazi 3520fa5643 feat: Sprint 23 -- profile/workspace/model coherence
Fix five coherence bugs in profile switching:
1. Model picker ignored profile default (localStorage stale key)
2. Workspace list was global (not profile-scoped)
3. DEFAULT_WORKSPACE was a boot-time singleton
4. Session list showed all profiles (no filtering)
5. switchToProfile() didn't refresh workspaces or sessions

Backend: workspace storage is now profile-local for named profiles,
switch_profile() returns default_model and default_workspace.
Frontend: switchToProfile() clears stale model pref, refreshes
workspace list and session list, sessions.js filters by active profile
with 'Show N from other profiles' toggle.

8 new tests. 400 pass / 23 fail (identical to baseline).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:46:15 -07:00
..
__init__.py Hermes Web UI — Sprints 11-14: multi-provider models, settings, session QoL, alerts, polish 2026-03-31 07:02:47 +00:00
auth.py fix(auth): redirect to /login when auth is enabled and accessing root 2026-04-03 06:21:04 -07:00
config.py feat: multi-profile support -- create, switch, delete profiles from web UI (Issue #28) 2026-04-03 10:50:21 -07:00
helpers.py feat: Sprint 19 — password auth, security headers, login page 2026-04-03 05:53:26 -07:00
models.py feat: multi-profile support -- create, switch, delete profiles from web UI (Issue #28) 2026-04-03 10:50:21 -07:00
profiles.py feat: Sprint 23 -- profile/workspace/model coherence 2026-04-03 11:46:15 -07:00
routes.py fix(review): 3 issues found in agent review of PR #41 2026-04-03 18:06:18 +00:00
streaming.py feat: multi-profile support -- create, switch, delete profiles from web UI (Issue #28) 2026-04-03 10:50:21 -07:00
upload.py fix: stop leaking stack traces to clients in HTTP 500 responses 2026-04-03 06:41:32 -07:00
workspace.py feat: Sprint 23 -- profile/workspace/model coherence 2026-04-03 11:46:15 -07:00