v2.5.35 - Profile Routing, Model Catalog & Approval Delivery
Hermes SwitchUI v2.5.35
Release Date: August 11, 2026
Profile selection now actually routes your messages, the model dropdown is populated from your real provider, and agent approvals reliably reach you.
🎯 Highlights
Picking a profile in the sidebar now sends there. There were three unconnected answers to "which profile am I in" — the sidebar picker wrote a store nothing but the session list read, the ?profile= URL param did the real routing, and active_profile needed a gateway restart. So you could browse one profile's sessions while the composer sent to another. There is now one resolver, and the sidebar is its writer.
The model dropdown works. It was empty because profile=default resolved to a directory that does not exist, and the route reported that as a successful empty result. Models are now read from your configured provider endpoint rather than requiring config the gateway does not write.
Approvals arrive. The timeout was never the problem — the countdown always came from the gateway. Delivery was: one live path with no recovery polling, no recovery at all in the side panel, and a card that a persisted "hide tools" preference could make invisible while the bell still counted it.
✨ Features
- profiles: one source of truth for the current profile, and a global sidebar selector above
+ New Session(9ab6e5c) — @Interstellar-code - chat: align the client to the gateway's per-session model contract — consistent session keying, both rejection shapes, pending state, effective-model readback (
d72c037) — @Interstellar-code - chat: render agent approvals, and delete two dead pipelines (
d62b3d4) — @Interstellar-code - setup: rebuild onboarding around a first-chat gate; expose execution, gateway and docs (
7b94e52) — @Interstellar-code - setup: tell the truth about cwd, credentials, profiles and approvals (
f700775) — @Interstellar-code - setup: finish the setup overhaul with styling, consolidation and docs (
784b0f8) — @Interstellar-code - profiles: close every finding from the Profiles UI audit (
c3c597b) — @Interstellar-code
🐛 Bug Fixes
- models: read the right config and enumerate the provider's real catalog —
profile=defaultresolved to a nonexistent directory and returned an empty catalog as a success (f229b49) — @Interstellar-code - chat: make agent approvals actually reach the user — polling recovery, an always-mounted queue, an unconditional render surface, and approvals that survive a dead stream (
a01bc97) — @Interstellar-code - chat: per-session model selection, and a
/modelcommand that does something (fcbae66) — @Interstellar-code - chat: make Stop actually stop the agent (
a6eb895) — @Interstellar-code - gateway: stop telling healthy installs to reinstall the agent (
43088bd) — @Interstellar-code - setup: repair the installer, and stop misreporting multi-gateway topology (
18ad15a) — @Interstellar-code - setup: stop adopting a profile on an already-configured install (
d09f41f) — @Interstellar-code
⚠️ Upgrade Notes
- Your saved sidebar profile selection is cleared on first load. Through the previous version that value only filtered a list; it now decides where messages are sent, and silently promoting an old browse selection into a send target is exactly the failure this release exists to prevent. Pick your profile once after upgrading.
- Switching models needs gateway support. The client sends the selection and handles every documented failure, but the model a session runs on only changes once the gateway honours a per-request model on the sessions transport. Until then the picker records your choice without changing the answering model.
- Reaching more than one profile requires a multiplexed gateway. Setup now tells you up front instead of failing when you send. Enable
gateway.multiplex_profilesand restart. Note that a secondary profile enabling a port-binding platform (a2a_fleet,feishu, …) is skipped at startup — the gateway starts fine and that profile is silently absent, which the new check also catches.
👥 Contributors
- @Interstellar-code (16 commits)
Full Changelog: v2.5.34...v2.5.35