                        ━━━━━━━━━━━━━━━━━━━━━━━━
                         EMACS-HERMES CHANGELOG
                        ━━━━━━━━━━━━━━━━━━━━━━━━


1 Version 0.9.0 (unreleased)
════════════════════════════

  Incompatible changes:

  • Chat buffer names follow the chat's project rather than the
    gateway's live working directory (see below), and the DIRECTORY
    argument of `hermes-chat-buffer-name-function' is now that stable
    naming directory.  Review custom naming functions that expected the
    live directory.
  • Chat, profile and cron model completion candidates now lead with the
    model, for example `claude · Anthropic (anthropic)'.  Update any
    code or completion configuration that matched the old candidate
    text.
  • List browsers keep their native column titles in the header line.
    With several instances configured, the instance name now follows the
    buffer name in the mode line, and the scope or status text of the
    Pairing, Webhooks, Tool Setup, Agent Plugins, Foreign histories and
    Skill Hub views moved to the mode line.

  New features and fixes:

  • Completed paragraphs, closed code fences and complete table rows
    render as Markdown while a reply is still streaming; unfinished text
    stays literal until the turn ends.
    `hermes-chat-stream-format-delay' (default 0.1 seconds) throttles
    the formatting.
  • Streaming no longer slows down as a reply or transcript grows: the
    read-only protection rescans only changed text, and echo detection
    no longer renormalizes the whole reply on every chunk.
  • `C-c C-c' in a chat interrupts the running turn
    (`hermes-chat-interrupt-turn'); when idle it only reports that
    nothing is running.  `C-c C-k' is unchanged.
  • Chat actions menu (`C-c C-o'): Work is now Activity (`B') and
    Workspace is now Directory (`w'), so neither reads like Workers
    (`W').  The Session menu splits into Session (New, Rename, List
    sessions) and Fork (Branch `b', Hand off `H', Compress `z', the new
    `hermes-chat-compress').  A new Aside group exposes the formerly
    slash-only side question (`y'), background task (`G') and Stop
    processes (`!').  Root `b' remains Switch chat buffer.  Stop
    processes stops the terminal processes registered with the whole
    instance, across all chats; it does not cancel the model turn or
    delegated workers.
  • While a turn runs with no backend event for 30 seconds
    (`hermes-chat-status-rule-quiet-after'), the composer rule appends
    `quiet 0:45' in the warning face; it clears as soon as an event
    arrives.
  • When output arrives while no window shows the end of the transcript,
    the mode line shows `↓ new'.  `mouse-1' on it or `C-c C-j' jumps to
    the latest output; scrolling the end into view also clears it.
  • The header's context usage turns warning-coloured from 80% and
    error-coloured from 95%.  Its tooltip gives exact tokens and
    percentage, and `mouse-1' opens the Context budget view.
  • The rule above the chat composer now shows the active turn's state,
    elapsed time, current tool, task progress (`📋 1/3') and queued
    count, then the last turn's duration briefly.  Queued messages are
    listed above the rule and open the queue panel on activation; the
    queue menu entries show the count.
  • The composer rule now always stays on one visual line.  It is fitted
    to the narrowest window showing the chat, measured with that
    window's fonts (emoji included), and reflows when windows change.  A
    long or multiline tool command is shortened with an ellipsis, its
    full text in the tooltip; the quiet hint and task progress give way
    next, while the state, clock and queued count stay.
  • Each turn with a task list gets one collapsible transcript line, `▸
    Tasks 3/5 · now: ITEM', updated in place as the list changes.
  • Approval readers show the tool description and the full command.
    When opened explicitly they take one-key answers (`o=nce, =s=ession,
    =a=lways, =d=eny; =q' or `C-g' leaves the request pending); a reader
    that opens automatically still requires submitting a choice with
    `RET'.  Very long commands open in a separate window while reading.
    Clarification readers use the question as their prompt.  A pending
    prompt's transcript line has an `[Answer]' button to reopen it.
  …  …
