Changelog
All notable changes to Hermes Desktop are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
0.2.2 - 2026-04-13
Added
- Slash commands in Chat — new palette of
/-prefixed commands including
/new,/clear,/btw,/approve,/deny,/status,/reset,
/compact,/undo,/retry,/web,/image,/browse,/code,
/file,/shell,/help,/tools,/skills,/model,/memory,
/persona, and/version. Local commands (/new,/clear) are handled
in the renderer; the rest are forwarded to the agent backend. - Multi-turn chat history —
sendMessagenow forwards the full
conversation history to the gateway using the standard OpenAI
messages[]format, so the model sees prior turns instead of only the
latest user input. - Dedicated Gateway screen — messaging gateway configuration moved out
of Settings into its ownGatewayscreen with per-platform cards for
Telegram, Discord, and Slack, including show/hide toggles for API keys
and per-platform enable switches. - Platform enable/disable toggles —
getPlatformEnabled/
setPlatformEnabledIPC handlers read and write theplatforms:block
inconfig.yaml. Toggling a platform automatically restarts the gateway
so the new config takes effect. AgentMarkdowncomponent — new reusable markdown renderer with a
lazy-loaded syntax highlighter (imported only when the first code block
renders), copy-to-clipboard button, and a dedicated diff viewer with
coloured+/-/@@lines.- Better error surfacing on empty model responses — when a streaming
response completes with no content, the client now probes the same
request in non-streaming mode to retrieve the real error message from
the provider instead of showing a generic "no response" message. - Groq voice/STT field — the
GROQ_API_KEYsetting is retained with a
new hint ("Used for voice tools and STT") even though Groq is no longer
a top-level chat provider.
Changed
- Project restructured — all top-level screens moved from
src/renderer/src/components/into
src/renderer/src/screens/<ScreenName>/. Affected screens:Agents,
Chat,Gateway,Install,Layout,Memory,Models,Office,
Schedules,Sessions,Settings,Setup,Skills,Soul,
SplashScreen,Tools,Welcome. Shared components (ThemeProvider,
ErrorBoundary,AgentMarkdown, etc.) remain undercomponents/. - Gateway auto-restarts on config changes — editing an
_API_KEYor
_TOKENenvironment value, switching model/provider/baseUrl, or
toggling a platform now restarts the running gateway so the new
configuration is picked up immediately. URL_KEY_MAPandLOCAL_PROVIDERShoisted insrc/main/hermes.ts
so both the API and CLI code paths share a single definition.- Default model list trimmed — reduced the bundled default-models set
to the core providers (OpenRouter, Anthropic, OpenAI, Custom); removed
hard-coded entries for Claude Opus 4, Claude Haiku 4.5, GPT-4o, GPT-4o
Mini, o3 Mini, Gemini 2.5 Pro, and the previous Groq chat presets. - Code block styling — code blocks now use a unified
--code-bg
variable for header and body, with no surrounding border; token
backgrounds are cleared so highlighting matches the block background.
Fixed
- Agent connection issues — errors embedded in SSE payloads are now
captured (lastError) and surfaced to the chat UI instead of being
swallowed. API HTTP error bodies are parsed forerror.message
before falling back to the raw snippet. - Chat lag and bugs — performance and stability fixes across
Chat.tsx,Layout.tsx,Settings.tsx,hermes.ts, and related
stylesheet rules.AgentMarkdownmemoisation and lazy highlighter
imports significantly reduce re-render cost for long conversations. - Gateway status polling — the status check interval in the Gateway
screen is throttled to 10 s (plus short post-toggle re-checks) to
reduce IPC overhead.
Removed
- Groq as a top-level chat provider — removed from the provider
dropdown and fromdefault-models.ts. TheGROQ_API_KEYfield is
preserved for voice / STT tool usage. X-Hermes-Session-Idresume header on the API path — session
continuity is now driven entirely by the forwarded history array.
Internal
src/main/config.tsgainsgetPlatformEnabled/setPlatformEnabled
helpers plus aSUPPORTED_PLATFORMSconstant
(telegram,discord,slack,whatsapp,signal). These patch the
platforms:block inconfig.yamlin-place using scoped regexes so
surrounding user config is preserved.src/preload/index.ts+index.d.tsexpose
getPlatformEnabled,setPlatformEnabled, and the extended
sendMessage(… , history?)signature onwindow.hermesAPI.package.jsonbumped from 0.2.1 → 0.2.2.