1 Version 1.19.3
════════════════

  • Prevented duplicate session requests while a generation or
    compaction is already active.  Repeating `C-c C-c' in a chat buffer
    now leaves the buffer unchanged instead of sending the same prompt
    twice.


2 Version 1.19.2
════════════════

  • Improved session compaction for short but oversized histories.  When
    `ellama-session-auto-compact-keep-last-turns' cannot be satisfied,
    compaction can now keep fewer recent turns and still summarize the
    available history instead of failing with "Not enough session
    history to compact".
  • Added `ellama-session-auto-compact-allow-fewer-kept-turns' to
    control this behavior.  It is enabled by default and applies to both
    automatic and manually triggered session compaction.
  • Added a distinct oversized-context compaction notice so users can
    see when Ellama kept fewer recent turns than configured.
  • Deferred response completion callbacks until automatic compaction
    finishes.  This keeps sub-agent loops running after compaction
    succeeds or fails.
  • Resolved deferred compaction callbacks against the current
    registered session buffer before running done handlers.  This
    prevents stale chat buffers from being reused after compaction
    rewrites or replaces session buffers.
  • Wrapped inserted compaction notices using the same paragraph filling
    behavior as chat output, so long compaction messages no longer
    appear as one long line.


3 Version 1.19.1
════════════════

  • Stop installing global `llm-provider-chat-request' sanitizer advice.
    Ellama now avoids rewriting request payloads from unrelated `llm'
    clients after Ellama is loaded.
  • Require `llm' 0.30.2 so Ellama can rely on upstream JSON
    serialization and OpenAI-compatible tool-call argument fixes instead
    of a global compatibility workaround.


4 Version 1.19.0
════════════════

  • Add an evaluation harness for comparing agent tool designs with
    local models.  The new suite covers numbered read output, line-range
    editing, trace collection, JSONL export, profile comparisons,
    summaries, and interactive nonblocking runs.
  • Improve evaluation reliability by stabilizing JSONL output paths,
    avoiding active buffer overwrites, serializing nested result data
    correctly, counting worker steps consistently, and relaxing
    docstring checks so valid implementation edits are not rejected for
    harmless wording changes.
  • Improve tool output for local models by rendering single-entry
    `directory_tree' results without misleading branch prefixes and by
    formatting tool-result alists as readable named blocks instead of
    raw S-expressions.
  • Fix search and project tools by returning `default-directory' from
    `project_root' when no project is detected, explaining empty `grep'
    results, supporting string tool result names, and resolving relative
    grep directories against the current buffer directory.
  • Fix subagent buffer insertion so continuation turns append to the
    worker buffer, leave a blank line before each `Main agent:' prompt,
    and render `<think>' blocks as Org quote blocks in Org buffers.
  • Prefer newer Elisp source files during batch jobs to prevent stale
    bytecode from shadowing local edits in build, test, documentation,
    formatting, and refill targets.


5 Version 1.18.0
════════════════

  • Add optional Pandoc-backed Markdown to Org conversion.  Users can
    configure `ellama-markdown-to-org-converter' to use the builtin
    converter, Pandoc, or automatic Pandoc detection while Ellama keeps
    the builtin converter as the default fallback when Pandoc is
    unavailable or conversion fails.


6 Version 1.17.2
════════════════

  • Fix JSON request sanitization for dotted pairs in provider
    non-standard parameters.  OpenAI-compatible providers can now pass
    options such as `:search_options ((search_strategy . "agent"))'
    without triggering a `wrong-type-argument listp' error.


7 Version 1.17.1
════════════════

  • Hide provider values in transient provider selection.  Provider
    completion candidates now show safe labels based on provider
    variable names instead of printed provider values, so secret-bearing
    provider structs are not exposed.
  …  …
