1 Version 1.28.0
════════════════

  • Audio input support: audio files can now be attached alongside
    images in prompts, with provider capability validation. Includes
    transient entries, key bindings, a recording lighter in the mode
    line, and microphone recording commands. `ellama-read-file' can
    queue audio files for the next model turn, exposing audio mode in
    customization and tool metadata.
  • Audio recording backends: on startup, auto-selects the available
    recorder by platform — FFmpeg or SoX on macOS, arecord/FFmpeg/SoX on
    GNU/Linux. Fallback failures include the recorder's output and a
    macOS microphone-permission hint.
  • Recording normalization: default FFmpeg recordings are processed
    through a configurable dynamic audio normalization filter so quiet
    speech reaches audio models at a usable level.
  • Provider transport validation: detects broken OpenAI-compatible
    audio serialization before sending requests, adding regression
    coverage for multipart audio context and documenting the `llm
    input_audio' requirement.
  • Provider type selection: `ellama-transient' now supports selecting
    LLM provider types (Ollama, Claude, Gemini, etc.) via
    `ellama-transient-provider-types' and
    `ellama-transient-set-provider-type', with improved error handling
    during streamed responses.
  • Self-check step in plan-and-act: the workflow now appends an
    unstepped "Check yourself" entry to the checklist, allowing manual
    review before the acting phase.
  • Silent buffer revert after editing file: calls `revert-buffer' after
    `save-buffer' to stop Emacs from asking whether to revert a file
    that was just written.
  • File buffer refresh after shell commands: file-visiting buffers
    under the shell command working directory are refreshed silently
    after command completion, without prompting.
  • Non-interactive shell environment: `shell_command' sets `TERM=dumb'
    and `NO_COLOR=true' for subprocesses, preserving pager
    normalization.
  • Improved truncated output hints: line-range reporting now shows
    accurate output and source line counts, includes the configured line
    budget in guidance, and keeps saved-output hints scoped to results
    without known sources.
  • Line range edge cases: when the requested end exceeds the file
    length, `lines_range' returns available lines with a warning instead
    of failing. Ranges that start past EOF still error.
  • Documentation: README sections rewritten for clarity and brevity;
    audio input commands and workflows documented in a dedicated
    section; `ellama.info' regenerated from the updated Org source.
  • Updated `llm' dependency from 0.30.2 to 0.31.1.


2 Version 1.27.2
════════════════

  • Fixed `make' recipes when a sandboxed caller inherits a stale
    `TMPDIR'.  Ellama now keeps valid temporary directories and falls
    back to `/tmp' only when the inherited directory no longer exists,
    which prevents Org from failing while loading during `srt make
    check-elisp'.


3 Version 1.27.1
════════════════

  • Added copyright notice to `extract-commands.el' script.


4 Version 1.27.0
════════════════

  • Added `ellama-undo-on-error'. Users can now choose whether failed
    LLM requests roll back partial buffer changes or leave the generated
    text in place.
  • Made plan-and-act and subagent loops more resilient after LLM
    failures. The loops continue after the first error, compact the
    session after repeated errors, resume after successful compaction,
    and stop cleanly when compaction cannot recover the session.
  • Made subagent tool errors part of the conversation instead of
    aborting the provider tool-use path. Synchronous and asynchronous
    tool failures are now returned as tool results so the worker can
    inspect the error and keep going.
  • Added preflight session compaction before oversized requests are
    sent. This covers regular `ellama-stream' calls and plan-and-act
    controller turns, and it resumes the deferred request in the target
    session buffer after compaction.
  • Changed edit tools to use asynchronous hook handling. Hooks no
    longer block the Emacs UI, while agents still receive the tool
    result only after the hooks
  …  …
