fix: consolidate verified workspace issue sweep - #432
Merged
Conversation
Treat Workspace-native Swarm as the official Conductor fallback when the dashboard mission API is unavailable. Preserve dashboard-first dispatch, native status/cancel handling, provider-neutral setup docs, and regression coverage for gateway capability detection, swarm health, roster/profile handling, and native Conductor responses.
- Adjusted the position of the menu trigger in the usage meter component to enhance layout consistency and user experience. fix(chat-panel): adjust position of chat panel toggle button - Updated the positioning of the chat panel toggle button to improve visibility and accessibility by changing its bottom and right offsets.
The /api/hermes-tasks route was renamed to /api/claude-tasks in commit efcb7d1, but the probe logic still listed the old route as a candidate. When probed, the SPA catch-all returned a 200 HTML response instead of a 404, so probeBackend() treated it as a valid (empty) backend and then failed when the actual task fetch threw. Fixes: - probeBackend() now checks Content-Type: application/json and returns -1 for non-JSON responses, so future route renames degrade gracefully. - resolveBackend() now only selects hermes if hermesCount > 0, defaulting to claude-tasks (the active backend post rename) when hermes is absent.
PTY helper chdir fails when ~/.hermes is absent (common in Docker). Default shell cwd to home; server falls back to HOME if cwd does not exist. Co-authored-by: Cursor <cursoragent@cursor.com>
Without -m, the system account has no /home/workspace directory. The auth middleware tries to write the session store at /home/workspace/.hermes/workspace-sessions.json; mkdirSync fails with EACCES because /home/ is root-owned (755), causing the 'Failed to persist session store' warning and a 500 on every authenticated route. Adding -m causes useradd to create and chown /home/workspace correctly so the session store can be written on first login.
Add semantic swarm roster metadata, profile/tool/skill docs, shared semantic worker ID validation, focused roster regression coverage, and one-shot checkpoint capture for dispatch smoke tests.
sessionKeyPrefix was hardcoded to null in conductor-spawn.ts, breaking async session resolution when the dashboard backend returns a prefix. Now mirrors the sessionKey pattern and passes through the value from the spawn result. Co-authored-by: Hermes Agent
This was referenced May 14, 2026
Closed
Closed
Closed
This was referenced May 14, 2026
Closed
Closed
This was referenced May 14, 2026
JohnGuidry
pushed a commit
to JohnGuidry/hermes-workspace
that referenced
this pull request
May 26, 2026
* fix(start): use server-entry wrapper for production * fix(swarm): reconcile oneshot checkpoints and ignore phantom blockers * fix(profiles): sync editable descriptions from profile config * fix: show cron jobs across Hermes profiles * fix(capabilities): clarify dashboard-backed API detection * feat: make Conductor use native Swarm fallback Treat Workspace-native Swarm as the official Conductor fallback when the dashboard mission API is unavailable. Preserve dashboard-first dispatch, native status/cancel handling, provider-neutral setup docs, and regression coverage for gateway capability detection, swarm health, roster/profile handling, and native Conductor responses. * fix(usage-meter): reposition menu trigger for better alignment - Adjusted the position of the menu trigger in the usage meter component to enhance layout consistency and user experience. fix(chat-panel): adjust position of chat panel toggle button - Updated the positioning of the chat panel toggle button to improve visibility and accessibility by changing its bottom and right offsets. * fix(stt): wire Groq/OpenAI voice transcription into chat * Fix Workspace Kanban loopback dashboard link * fix(update): do not open historical release notes on startup * fix(chat): clear stale thinking runs reliably * fix(dashboard): trust sessions endpoint for status * fix(settings): address review — local default, OAuth lifecycle, validation * fix(dashboard): always scrape live session token from HTML * fix(chat): avoid portable history replay on bound sessions * fix(settings): remove dead smart routing controls * fix(tasks-api): guard against HTML catch-all in probeBackend The /api/hermes-tasks route was renamed to /api/claude-tasks in commit fb643bc, but the probe logic still listed the old route as a candidate. When probed, the SPA catch-all returned a 200 HTML response instead of a 404, so probeBackend() treated it as a valid (empty) backend and then failed when the actual task fetch threw. Fixes: - probeBackend() now checks Content-Type: application/json and returns -1 for non-JSON responses, so future route renames degrade gracefully. - resolveBackend() now only selects hermes if hermesCount > 0, defaulting to claude-tasks (the active backend post rename) when hermes is absent. * fix(terminal): default cwd to ~ and fallback if path missing PTY helper chdir fails when ~/.hermes is absent (common in Docker). Default shell cwd to home; server falls back to HOME if cwd does not exist. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(settings): satisfy lint on custom providers UI * fix(docker): add -m flag to useradd so workspace home dir is created Without -m, the system account has no /home/workspace directory. The auth middleware tries to write the session store at /home/workspace/.hermes/workspace-sessions.json; mkdirSync fails with EACCES because /home/ is root-owned (755), causing the 'Failed to persist session store' warning and a 500 on every authenticated route. Adding -m causes useradd to create and chown /home/workspace correctly so the session store can be written on first login. * fix(tasks): preserve real session links and restore task launch flow * fix(launchd): install macOS plist from server-entry template * fix(docker): expose dashboard API and persist workspace volumes * fix(jobs): serialize deliver targets for cron API * Make Hermes Workspace installable as PWA * chore(deps): pin direct tanstack versions * feat: align semantic Hermes swarm agents Add semantic swarm roster metadata, profile/tool/skill docs, shared semantic worker ID validation, focused roster regression coverage, and one-shot checkpoint capture for dispatch smoke tests. * fix(conductor): pass through sessionKeyPrefix from portable spawn result sessionKeyPrefix was hardcoded to null in conductor-spawn.ts, breaking async session resolution when the dashboard backend returns a prefix. Now mirrors the sessionKey pattern and passes through the value from the spawn result. Co-authored-by: Hermes Agent * feat(swarm): bridge workspace kanban to native Hermes * fix(chat): keep portable main pinned without breaking resolved sessions * Add Windows startup script for Hermes Workspace Document PowerShell usage for launching and restarting gateway + workspace via WSL tmux. Co-Authored-By: Oz <oz-agent@warp.dev> * fix(config): name Hermes Agent in restart notice * fix(swarm): reconcile aggregate semantic worker exports --------- Co-authored-by: Aurora release bot <release@outsourc-e.com> Co-authored-by: motoki takahashi <motokitakahashi@motokinoMac-mini.local> Co-authored-by: Vicky Wonder <vicky@openclaw.ai> Co-authored-by: Vitaliy Isikov <visikov+supagoku@gmail.com> Co-authored-by: Hermes Agent <hermes-agent@local> Co-authored-by: Nikolay Mohr <nikomohr96@gmail.com> Co-authored-by: Niko Mohr <niko@friendsfromcollege.de> Co-authored-by: wtchronos <262830926+wtchronos@users.noreply.github.com> Co-authored-by: Dak0verflow <dakotaferris@gmail.com> Co-authored-by: norema <mamadou.marone.19@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: daoyuan <ludaoyuan1989@gmail.com> Co-authored-by: firemountain <firemountain@gmail.com> Co-authored-by: RAZSOC Local <razsoc@local> Co-authored-by: Waylon Kenning <waylonkenning@Waylons-MacBook-Pro.local> Co-authored-by: Kublai <kublai@kublai.local> Co-authored-by: justa <justa@local> Co-authored-by: Oz <oz-agent@warp.dev>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This consolidates the locally verified Hermes Workspace bugfix sweep into one review branch instead of merging dozens of overlapping PRs one by one.
Included work covers:
Not included
Validation
pnpm buildFixed issues
Fixes #337
Fixes #355
Fixes #382
Fixes #391
Fixes #405
Fixes #406
Fixes #421
Fixes #428
Fixes #431
Superseded PRs folded into this branch
Notes
A few fixes were intentionally narrowed while folding them in: