docs: v0.26 release notes, remove planning artifact, update versions

- Add v0.26 CHANGELOG entry (10 post-Sprint-23 fixes)
- Remove SPRINT_23_PLAN.md (planning artifact, not runtime docs)
- Bump version label to v0.26 in index.html
- Update SPRINTS header and footer to v0.26 / 426 tests
- Update CHANGELOG footer to v0.26 / 426 tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nathan Esquenazi
2026-04-03 13:44:06 -07:00
parent 733957cea1
commit 5c9edfc7bf
4 changed files with 52 additions and 482 deletions

View File

@@ -5,6 +5,54 @@
---
## [v0.26] Profile System Polish -- 10 Post-Sprint-23 Fixes
*April 3, 2026 | 426 tests*
### Bug Fixes
- **Profile switch base dir bug.** When `HERMES_HOME` was mutated to a
`profiles/` subdir at startup, `switch_profile()` doubled the path
(e.g. `~/.hermes/profiles/X/profiles/X`). New `_resolve_base_hermes_home()`
detects profile subdirs and walks up to the actual base.
- **Cross-provider model routing.** Picking a model from a different provider
than the config's default now routes through OpenRouter instead of trying
a direct API call to a provider whose key may not exist.
- **Legacy sessions missing profile tag.** `all_sessions()` now backfills
`profile='default'` for pre-Sprint-22 sessions so the profile filter works.
- **Workspace list cleanup.** Stale paths, test artifacts, and cross-profile
entries are now cleaned on load. Legacy global workspace file migrated
once for the default profile.
- **API error messages.** `api()` helper now parses JSON error bodies and
surfaces the human-readable message instead of raw JSON.
- **Workspace dropdown moved to sidebar.** The workspace picker now opens
upward from the sidebar bottom instead of clipping behind the topbar.
### Features
- **Rate limit error display.** Rate limit errors (429) now show a distinct
card with a rate limit icon and hint, instead of the generic error message.
- **SSE `apperror`/`warning` events.** Server can send typed error events
that the frontend handles with appropriate UX (rate limit card, fallback
notice, etc.).
- **Smart model resolver.** `_findModelInDropdown()` handles name mismatches
between config model IDs and dropdown values (e.g. `claude-sonnet-4-6` vs
`anthropic/claude-sonnet-4.6`).
- **Profile switch starts new session.** When the current session has messages,
switching profiles automatically starts a fresh session to prevent
cross-profile tagging.
- **Per-profile toolsets.** Agent now reads `platform_toolsets.cli` from the
active profile's config at call time, not the boot-time snapshot.
- **Per-profile fallback model.** `fallback_model` config is read from the
active profile and passed to AIAgent.
### Architecture
- `api/profiles.py`: `_resolve_base_hermes_home()` replaces naive env var read.
- `api/workspace.py`: `_clean_workspace_list()`, `_migrate_global_workspaces()`.
- `api/streaming.py`: Per-profile toolsets and fallback model at call time.
- `api/models.py`: `all_sessions()` backfills `profile='default'`.
- `static/ui.js`: `_findModelInDropdown()`, `_applyModelToDropdown()`.
- `static/messages.js`: `apperror` and `warning` SSE event handlers.
---
## [v0.25] Sprint 23 -- Profile/Workspace/Model Coherence
*April 3, 2026 | 423 tests*
@@ -829,4 +877,4 @@ Three-panel layout: sessions sidebar, chat area, workspace panel.
---
*Last updated: v0.25, April 3, 2026 | Tests: 423*
*Last updated: v0.26, April 3, 2026 | Tests: 426*