#+title: emacs-hermes Changelog

* Unreleased

* Version 0.5.0 (2026-09-05)

- Added =C-c C-w= (=hermes-chat-work=) to inspect a chat's observed delegates
  and registered background processes in a native tabulated list.  =RET= opens
  details, =g= refreshes, =h= explains scope, and =i= opens instance-wide
  subagents.  The view reports stale or incomplete observations; it is not a
  complete work history, and disappearance does not imply completion.
- Kept idle chat headers quiet and showed observed running delegates as
  =🤖 N=, with an =Agents N= fallback when the selected frame cannot display
  the icon.  The actions menu's Inspect group shows =Workers N= with a
  separately styled count.  Unknown or stale observations use =🤖 ?= rather
  than implying zero workers.  Narrow headers preserve attention states and
  YOLO warnings before optional details.
- Replaced repeated reasoning updates with a temporary =Thinking…= row that
  disappears when tools or replies arrive.  Added transcript-button navigation
  with =TAB= and =S-TAB=, and =C-c C-j= to return to the composer; =TAB= still
  completes text in the composer.
- Activated work observation for already attached chats after =make load=,
  without restarting their sessions or changing drafts.  Existing observation
  requests and timers are preserved.
- Preserved draft undo and narrowing while the transcript updates, and kept
  native diff navigation relative to the chat that opened the diff.
- Restored running turns when resuming saved sessions.  Fixed submission
  settlement when a turn finishes before its acknowledgement, and retained
  rejected queued messages without automatically retrying them.
- Explicit disconnect now copies unsent, rejected, and delivery-uncertain input
  into an editable recovery buffer while keeping the current chat draft.
  Resume through Sessions, inspect history, then select and send text manually.
  Recovery buffers are in memory only; save them if needed.
- Reacquired authentication for replacement WebSockets and kept reconnect
  callbacks tied to their current connection.  Late responses to retired
  requests no longer report errors against newer work.  Capability providers
  now retry socket-construction failures after authentication.
- Made =/stop= explicitly instance-wide and required confirmation before
  stopping processes across chats.  Confirmation cannot affect a replacement
  connection or session.
- Fixed idle-chat cleanup after an unexpected connection loss and worker
  discovery when a new chat initially lacks a durable session key.
- Cleared browser rows and cached snapshots when switching instances.  SOUL
  editors retain their original instance and profile, reject overlapping
  saves, and keep edits made during a save marked as modified.
- Changed configuration list editing to JSON arrays, preserving empty arrays,
  nested values, booleans, nulls, and strings containing commas.  Bound eval
  approval answers to the request actually shown, so an expired prompt cannot
  approve its replacement.

* Version 0.4.3 (2026-09-01)

- Kept project-chat names tied to their launch root while separating editor
  directory from gateway cwd.  Passive cwd updates leave the editor context
  alone; an explicit “Set directory” adopts the backend-returned path.

* Version 0.4.2 (2026-08-30)

- Kept =hermes-project-chat= buffer names anchored to their launching project,
  independent of the gateway working directory, and added
  =hermes-chat-buffer-name-function= for custom naming conventions.

* Version 0.4.1 (2026-08-29)

- Kept named remote instances in the gateway filesystem namespace across chat
  creation, resume, and working-directory changes without overwriting the
  editor's local directory.
- Serialized fresh-session setup and create-time runtime overrides so retries,
  concurrent callers, and stale callbacks cannot duplicate or replace work.
- Preferred valid stored basic credentials before browser PKCE in auto mode,
  while preserving native fallback and normalizing unusable secret errors.

* Version 0.4.0 (2026-08-29)

- Added pre-session model and reasoning selection, including explicit
  confirmation before applying expensive model switches.
- Applied create-time runtime choices before the first prompt and kept retries
  scoped to the exact session that owns them.
- Restored active dashboard turns after reconnect without letting stale socket
  callbacks mutate successor sessions.
- Added complete batched clarification support for single-choice, multi-select,
  and free-form questions, including partial retries and resumed sessions.

* Version 0.3.3 (2026-08-22)

- Aligned pipe tables in settled chat markdown so columns line up.
- Routed =/compact= through =session.compress= with a live progress line.
- Made live loading fail closed and kept reconnect, authentication, startup,
  and token persistence effects owned by the exact current client.
- Serialized prompt, submission, queue, and terminal authority so stale
  callbacks cannot settle or mutate a successor operation.
- Owned spawned dashboard processes through startup, socket opening, shutdown,
  and early exit; failed spawns no longer attach to an unrelated listener.
- Styled the dashboard header and suppressed stale session-archive success.

* Version 0.3.2 (2026-08-16)

- Added =hermes-project-chat= to reuse or create a chat at the current
  project root; a prefix argument always opens another.
- Grouped the dashboard by Hermes instance, rebalanced chat action popup
  groups, and reused one status line for compression warnings.
- Isolated prompt, steer, background-submit, and session-panel ownership so
  stale callbacks cannot mutate a successor chat or restore a rejected draft
  into the wrong buffer.
- Kept instance-scoped browsers, Kanban tails, cron edits, MCP toggles,
  rollback restores, provider-key saves, capability connects, and subagent
  interrupts from leaking across instance switches or list refreshes.

* Version 0.3.1 (2026-08-15)

- Added shell-style completion and direct session switching for =/model= while
  preserving the interactive model picker.
- Serialized session handoffs and command mutations so stale callbacks,
  disconnects, and overdue handoffs cannot race or permanently block chats.
- Improved queued and background turn ordering, session working-directory
  updates, credential-prompt expiry, and pending-reply rendering.
- Hardened provider authentication, OAuth token rollback, reconnect readiness,
  and bounded embedded-image parsing.

* Version 0.3.0 (2026-08-14)

- Added named Hermes instances with per-instance dashboard endpoints and
  instance selection across chats and management browsers.
- Kept asynchronous reads, mutations, and singleton browsers scoped to their
  owning instance; stale callbacks no longer leak state or report actions after
  a buffer changes ownership.
- Preserved the single-instance workflow as the default configuration.

* Version 0.2.1 (2026-08-13)

- Added a backend-driven provider-account browser for OAuth and external
  account flows.  Dashboard-provided shell commands are copied, never run.
- Kept provider-account list, OAuth, and disconnect operations scoped to the
  Hermes profile that opened them.
- Kept OAuth-only providers out of API-key onboarding.
- Reported backend account errors while suppressing stale asynchronous errors;
  failed OAuth operations no longer trigger success effects.

* Version 0.2.0 (2026-08-13)

- Published on [[https://elpa.nongnu.org/nongnu/hermes.html][NonGNU ELPA]].
