github outsourc-e/hermes-workspace v2.2.0
Hermes-Workspace v2.2.0 — HermesWorld

latest release: v2.3.0
29 days ago

Hermes-Workspace v2.2.0 — HermesWorld

The biggest gameplay-shaped release we've shipped. HermesWorld turns the playground into a full multiplayer 3D environment where every NPC teaches a real Hermes Agent skill. 222 commits since v2.1.3.

✨ HermesWorld

A six-world action-RPG that lives at /playground (now featured as HermesWorld in the workspace sidebar with a gold NEW badge):

  • Six worlds — Training Grounds, Forge, Agora, Grove, Oracle, Arena. Each one teaches a real concept (prompts, skills, multi-agent coordination, memory, routing, evals).
  • Every NPC = a real skill — Athena, Pan, Hermes, the Knight, and the rest. Talking to them surfaces actual Hermes Agent capabilities.
  • Multiplayer out of the box — Cloudflare Hibernation API powers the public WS hub. Any two devices that open the workspace see each other in the same world. HTTP polling fallback keeps it bulletproof on flaky networks.
  • Premium presentation — cinematic camera, ASCII NPC portraits, lore loading screen, knight armor models, in-world speech bubbles, focus mode, and a hero canvas agent network on the title screen.
  • Quests — Tutorial loop in Training, Forge unlock gate, Diplomacy & Summoning quests, journal upgrades, low-HP cinematics, mobile-friendly layout.

The full demo script and recording kit live at memory/goals/2026-05-03-playground-training-grounds/.

🎨 Themes

  • Matrix dark / light (#279, thanks @Interstellar-code) — phosphor green on cinematic black, plus a paper-white companion.

⚙️ Settings & onboarding

  • Custom OpenAI-compatible provider UI (#287, @Interstellar-code) — always-clickable Custom card with editable Base URL + API key. Stored in .env as CUSTOM_API_KEY, with base URL in config.
  • Provider card verified status (#282, @Interstellar-code) — single-dot precedence and a verified-only green dot. Local providers no longer pretend to be online when they're not.
  • Auth Secure-cookie LAN warning (#281, @Interstellar-code) — startup warning when running in production mode behind a non-loopback bind address without HTTPS, since browsers silently drop Secure cookies on plain HTTP.

🌍 i18n

  • Japanese (ja) locale (#290, @yasuhidekoizumi-afk) — full translation pass replacing the previous ja: EN fallback, plus regression tests mirroring the existing zh/ru coverage.

🔍 Search

  • Recent Searches now real (#292) — replaced the hardcoded placeholder strings with localStorage-backed history (cap 6, dedupe by case-insensitive match). The section hides itself when there's no history yet.
  • Chats scope actually finds chats (#291) — the search modal now matches against the API's derivedTitle and preview instead of just the raw friendlyId. Queries like github or workflow will now hit the chat that was about that topic instead of returning "No results found."

🛠️ Dev-server fixes

  • Vite connection-status returns the full capabilities map (#285) — the dev server's inline shortcut for /api/connection-status returned a slim {ok, mode, backend} body that silently broke useFeatureCapability and useFeatureAvailable in dev. The shortcut is removed; the real route file (which already caches via ensureGatewayProbed) handles the path everywhere.
  • Probe /api/sessions on the dashboard URL (#276, #289 by @Sanjays2402) — /api/sessions lives on the Hermes Dashboard (default :9119), not the agent. The dev server was hitting the agent URL and getting a 404 every 15 seconds.
  • Send Authorization: Bearer $HERMES_API_TOKEN on dev-mode probes (#288, @Interstellar-code) so a gateway secured with API_SERVER_KEY is detected correctly. Same patch added a watch.ignored list for .runtime/.tanstack/.omc/.omx/coverage/dist/etc. so noisy internal paths don't trigger spurious dev reloads.
  • Vite proxy port + /cron/jobs link fixes (#283, @Interstellar-code) — fixes #277 ("/cron 404 Page Not Found").
  • Route-tree noise fix — renamed src/routes/api/send-stream-live-tools.ts-send-stream-live-tools.ts so TanStack Router stops emitting "does not export a Route" on every regeneration.

🛟 Safety

  • Update banner shows the full reason and the blocking files (#293) — the banner used to truncate at "...has local c" and never told the user which files were blocking the update. Now displays the full reason, the repo path of the dirty checkout, and a list of up to 8 paths from git status --porcelain. Reason copy mentions "remove the listed files" so users with untracked files know what to do.

🧠 Swarm

  • HERMES_TMUX_BIN override (#244) — for non-standard tmux installs (Docker containers, NixOS, custom package layouts). Set HERMES_TMUX_BIN=/path/to/tmux and the swarm dispatcher and runtime will use it instead of falling through the hard-coded candidate list. Also added /usr/bin/tmux to the candidate list (Debian/Ubuntu default).

🔧 Operator surfaces & dashboard

  • Provider mix donut + cache efficiency tile, Velocity + Cost Ledger menu entries, and the rebranded dashboard header.
  • Contextual Operator Tip card that fills the bottom-left gap; sessions list now stretches to fill the column.
  • Polish on swarm surfaces; quieter usage-meter error handling.
  • Update flow now realigns clean repos to remote on update.

Breaking / migration

None. This is a strict superset of v2.1.3.

Thanks

Big thanks to community contributors this cycle:

🌙 Onward.

Don't miss a new hermes-workspace release

NewReleases is sending notifications on new releases.