#+title: emacs-hermes Changelog

* Unreleased

* 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]].
