* Version 1.32.1

- Preserve file buffer positions during tool updates. File contents are now
  updated with marker-preserving replacement, and only stale unmodified buffers
  are refreshed after shell commands and edit hooks. The system warns instead of
  discarding unsaved changes, and regression coverage for mutating, read-only,
  validation, and hook paths has been added.

- Keep visiting buffers attached after file moves. The ~move_file~ tool now
  retargets an existing source buffer to the destination while preserving point
  and unsaved changes. Destinations already visited by another buffer are
  rejected. Regression tests cover both paths.
* Version 1.32.0

- Preserve Markdown tables during streaming conversion. Paragraph filling no
  longer wraps table rows, and streaming fill skips while point is inside a
  table, avoiding phantom rows and broken cells.
- Align converted Markdown tables in Org output. Separator rows are normalized
  and tables are aligned for both builtin and Pandoc converters, with better
  handling of wider cells during streaming updates.

* Version 1.31.0

- Show irreversible action confirmation details. Named tool arguments are now
  included in security confirmation prompts, and a full-detail view flow has
  been added for DLP and irreversible actions. The flow preserves context even
  when audit logging fails, and regression tests cover prompt contents as well
  as the view interaction.
* Version 1.30.0
- Split the subagent task tool into two separate contracts. The ~task~ tool
  handles free-form delegation, while ~task_from_template~ handles
  template-based delegation. Both now have proper required schemas and
  validation checks instead of accepting anything silently. The direct Lisp
  template interface still works as before. Updated the docs and added
  regression tests.
- Added a plan-and-act action to the blueprint-mode transient menu. Starting it
  kicks off the plan-and-act agent loop from the current blueprint buffer and
  then closes the buffer. Included regression tests to verify the buffer
  contents get forwarded to ~ellama-plan-and-act~ and that the source buffer is
  killed once the loop starts.
* Version 1.29.0

- Added ~ellama-setup-agentic-coding~ to configure long-running coding-agent
  defaults. This profile enables DLP enforcement, fail-closed DLP behavior,
  session compaction, visible sub-agent sessions, and longer agent loop
  limits. In non-SRT mode, ordinary DLP findings ask first while normal
  confirmations stay active; in SRT mode, ordinary input findings are allowed
  and ordinary output findings are redacted, with irreversible findings still
  blocked. Tests cover non-SRT, SRT, and secure modes.
- Removed obsolete problem solver commands ~ellama-solve-reasoning-problem~ and
  ~ellama-solve-domain-specific-problem~ from the codebase and the main
  transient menu, along with the ~ellama-chain~ function they relied upon.
- Updated the README onboarding section to refresh Installation references
  around GNU ELPA, Ollama, and added an explicit ~qwen3.6:35b~ agentic setup
  example.
- Documented the new ~ellama-setup-agentic-coding~ profile and split Commands
  and Configuration sections into smaller groups for easier
  navigation. Regenerated ~ellama.info~.
* 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 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.
* 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~.

* Version 1.27.1

- Added copyright notice to ~extract-commands.el~ script.
* 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
  have finished.
- Tightened project checks. Byte and native compiler warnings now fail ~make
  check-elisp~, README custom-variable coverage is checked, and documented
  public commands are checked against real interactive commands.
- Added configurable trusted read-file handling for DLP. Prompt-injection scans
  can be skipped for safe file-reading outputs without disabling DLP for other
  tools.
- Improved agent buffer updates. Agent prompts, controller continuations, plan
  reports, and visible tool/status output now trigger the same auto-scrolling
  behavior as normal chat insertions, and finished plan-and-act loops append the
  next user heading.
- Extended interactive model editing beyond Ollama and OpenAI-compatible
  providers. The model transient can now read and update providers with a
  generic ~chat-model~ slot, and URL editing is available for providers with a
  ~url~ slot.
- Refreshed the documentation for the current agent, DLP, compaction, provider,
  skill, blueprint, and tooling behavior. The chat-with-image transient key was
  also moved from ~i~ to ~I~ to avoid a key conflict.

* Version 1.26.0

- Auto-fix unexpected closing delimiters in file edits. When syntax validation
  fails due to unexpected closing delimiters (like extra `)` or `]`), the system
  automatically removes them and accepts the edit if the result is valid. This
  reduces friction for LLM-generated edits that occasionally include spurious
  closers. Changes include new functions
  `ellama-eval--remove-unexpected-closers-in-buffer` and
  `ellama-tools--remove-unexpected-closers-in-buffer` to scan buffers and remove
  closers without matching openers, `ellama-eval--try-fix-unexpected-closers`
  and `ellama-tools--try-fix-unexpected-closers` to attempt auto-fixing in file
  context with safe buffer restoration, and integration of auto-fixing into
  monitored-edit-file-tool and all balanced edit tools.
- Add commit patch fallback for generate-commit-message. New functions
  `ellama--in-commit-buffer` and `ellama--commit-patch` detect git commit
  buffers and retrieve commit patches. Modified `ellama-generate-commit-message`
  to use commit patch as a fallback when no staged or unstaged diff is
  available, enabling proper commit message generation in git-commit-mode reword
  or amend scenarios.
- Simplify test target in Makefile. Remove the inline test command definition
  and make `test` an alias for `test-detailed`, consolidating the test execution
  into a single target.
* Version 1.25.0

- Add loop detection to ~ellama-eval~ harness that identifies repetitive tool
  call patterns indicating agents are stuck in evaluation loops. The harness
  returns recovery guidance on the first repeated identical tool call sequence,
  and falls back to hard loop detection for repeated loops after recovery.
  Configurable defcustoms control the behavior:
  ~ellama-eval-loop-detection-enabled~ (default: t),
  ~ellama-eval-loop-detection-repeated-threshold~ (default: 2), and
  ~ellama-eval-loop-detection-max-traces~ (default: 50).

- Move loop recovery into task subagents by wrapping role tools with
  session-local repeated-call detection. Repeated identical tool calls return
  recovery guidance at the configured threshold and complete the subtask if the
  same consecutive chain continues. Document the new subagent loop-detection
  settings in README.org.

- Extend evaluation cancellation with request context tracking. Store the active
  request context on the session for streaming, continuation, and compaction
  requests so that eval timeout cancellation can target the correct context
  directly. Cancel active eval worker requests when a run finishes with a
  non-completed status, and register asynchronous session compaction requests in
  the active request context so user cancellation and eval timeout stop the
  compact request itself.

- Harden evaluation async buffer handling by scheduling timers from a stable
  internal buffer so callbacks do not inherit transient subagent buffers. Guard
  interactive summary rendering against stale target-window errors and fall back
  to display-buffer.

- Render evaluation progress and final summaries into the selected window for
  interactive runs, keeping the existing display-buffer behavior as a fallback
  for noninteractive or stale-window calls.

- Preserve triggering tool calls in public traces and final loop-detection
  results when loop detection triggers, and record recovery metadata in tool
  traces so recovered passing runs remain visible. Avoid false loop detection on
  later repeated reads by treating the repeated-call threshold as the recovery
  point for the current consecutive chain.

* Version 1.24.1
- Added literal string matching support to ~ellama-tools-grep-tool~ and
  ~ellama-tools-grep-in-file-tool~ using ~-F~ (fixed-strings) and ~-e~ flags,
  treating the search string literally rather than as a regular expression.
  Added helper function ~ellama-tools--grep-search-args~ and corresponding unit
  tests.
- Fixed ~srt~ command quoting for shell execution. Added
  ~ellama-tools--shell-quote-command~ helper and updated
  ~ellama-tools--command-argv~ to properly construct shell command strings when
  using ~srt~ sandbox. Commands are now wrapped with ~srt -c~ using
  ~shell-quote-argument~ to safely handle special characters in arguments.
* Version 1.24.0
- Added plan-and-act agent loop for multi-agent code generation workflows.
- Added plan-and-act agent to transient menu for easy access.
- Added support for resuming plan-and-act after interruption.
- Formatted plan-and-act tool arguments for better reliability.
- Fixed plan-and-act test root path for correct test execution.
- Documented plan-and-act agent loop functionality.
* Version 1.23.0

- Add optional ~timeout~ support to ~shell_command~ with a default of five
  seconds. Long-running async shell commands are terminated when the timeout
  expires and return a timeout message with any collected output.
- Add optional ~timeout~ support to ~grep~ with the same five-second default.
  Directory searches now use timeout-aware command execution and return a clear
  diagnostic when grep exceeds the configured limit.
- Add optional ~timeout~ support to ~directory_tree~ with the same five-second
  default. Recursive directory traversal now stops when the timeout expires and
  returns a clear diagnostic with the partial tree collected so far.
- Strengthen project git hook templates for local Elisp validation. Staged Elisp
  changes now run ~make checkdocs~ before commit, while pushed Elisp changes run
  ~make check-elisp~ and block the push if formatting changes files.

* Version 1.22.1

- Remove experimental hypothesis profiles (numbered-read, line-edit,
  numbered-line-edit) and their associated tools including ~edit_lines~,
  ~ellama-eval-edit-lines-tool~, ~ellama-eval-monitored-edit-lines-tool~,
  ~ellama-eval-numbered-read-file-tool~, and
  ~ellama-eval-numbered-lines-range-tool~. Delete corresponding helper
  functions: ~ellama-eval--line-edit-candidate~,
  ~ellama-eval--number-text-lines~, ~ellama-eval--replace-profile-read-specs~,
  and profile classifiers ~ellama-eval--profile-numbered-read-p~,
  ~ellama-eval--profile-line-edit-p~,
  ~ellama-eval--profile-balanced-edit-p~. Net change: -208 lines.
- Unify ~ellama-eval--profile-tool-names~ to unconditionally append ~edit_file~
  to the base tool list for all profiles (baseline and balanced-edit), removing
  profile-specific matching logic.
- Restore profile validation in ~ellama-eval--profile-tool-names~ to properly
  reject unknown or misspelled profile names with an error, fixing the unused
  lexical argument warning reported by CI.
- Add policy forbidding direct integration into ~main~ branch; require feature
  branches and pull requests instead of direct pushes.
- Force ~cat~ pager for shell commands and shared command helpers, adding tests
  to verify pager environment across all shell execution paths.
* Version 1.22.0

- Added read-before-write safety for mutating tools. Session-local read tracking
  now requires that existing files be read before being overwritten; the first
  overwrite attempt of an existing file is refused with instructions to read the
  file first, and the second attempt is allowed for deliberate overwrites. This
  applies to ~write-file~, ~append-to-file~, ~prepend-to-file~, ~move-file~, and
  ~edit-file~ tools. Also enhances output truncation messages with concrete next
  tool call suggestions including specific line ranges via ~lines_range~.

- Added git hooks to prevent commits and pushes to the ~main~ branch. Created
  pre-commit and pre-push hooks that block operations when on ~main~, providing
  clear error messages and instructions to use feature branches instead. Added
  ~install-git-hooks~ Makefile target to automate hook installation.

- Fixed read-before-write CI failures by using direct ~ellama-session~ struct
  slot assignment for tool session extra updates, ensuring read-before-write
  bookkeeping works on older Emacs versions. Updated the output line budget test
  to assert the new concrete ~lines_range~ hint instead of the removed generic
  wording.
* Version 1.21.0
- Added project-local before and after shell hook support around mutating edit
  tools, including per-hook output visibility, failure reporting, hook
  environment context, and independent sectioned output budgets.
- Added root .codex hook scripts and ~.dir-locals.el~ configuration so edit
  tools block writes on main and run file-specific checks after edits. Added
  aggregate Makefile targets for Elisp, README, and NEWS validation.
- Updated ~grep~ and ~grep_in_file~ to pass ~-i~ unless ~case_sensitive~ is
  explicitly set.
- Removed hook details, skill paths, and automatically checked style guidance
  from AGENTS.md. Moved release-specific changelog workflow details into the
  project-local changelog skill.
- Changed the MELPA CI glob from all top-level .el files to ~ellama*.el~ so
  ~.dir-locals.el~ is not loaded as a package source file.
* Version 1.20.0
- Add ~balanced-edit~ evaluation profile to validate edits in real Emacs
  buffers.
- Improve tool diagnostics, providing clearer messages for missing files, paths,
  and invalid line ranges.
- Expand and improve test coverage for nested Elisp edit evaluation cases.
- Refactor evaluation harness to use a generic model selector.
- Enhance file-mutating tools with default-on syntax validation.
- Normalize Org block markers in translated output.
- Move evaluation fixtures out of the main code.
- Fix indentation in response handler callbacks.

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

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

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

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

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

* 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.
- Keep transient provider updates compatible with callable provider keys from
  ~llm~.  Regression tests now cover hidden provider values, callable keys and
  selected-provider updates.
- Keep saved sessions loadable without persisting plaintext provider keys.
  Session persistence now strips provider keys and unreadable tool functions
  before writing session files, restores keys from configured providers by
  default and can restore keys from ~auth-source~ when
  ~ellama-session-persist-provider-keys~ is set to ~auth-source~.

* Version 1.17.0
- Add maximum output token support.  Ellama now exposes ~ellama-max-tokens~ and
  passes per-request ~:max-tokens~ values through ~llm-make-chat-prompt~, so
  providers can cap generated responses using their standard token limit
  support.  The model transient menu can set or reset the max-token override,
  and documentation and tests cover the new behavior.

* Version 1.16.3
- Sort saved session candidates newest first in ~ellama-load-session~.  Ellama
  now orders session files by modification time and exposes standard completion
  metadata so completion UIs can preserve that order.

* Version 1.16.2
- Fix GNU ELPA tarball manual generation from ~README.org~. Add Org export
  metadata so ELPA writes ~ellama.texi~ with a valid title, and keep the local
  manual exporter from inheriting those README-only export keywords.

* Version 1.16.1
- Remove false statement from documentation.
* Version 1.16.0
- Add image input support for prompts and context.  Ellama can now attach image
  files to chat requests, queue image context ephemerally, and build multipart
  prompts for providers that support image media.
- Add image-aware tool handling.  The ~read_file~ tool can run in auto, text, or
  image mode, and image files read by tools are bridged into the next model
  request without persisting binary media in saved sessions or compaction
  summaries.
- Add transient commands and documentation for image workflows, including direct
  image chat, image context, supported formats, read-file modes, tool-call image
  bridging, and persistence behavior.
- Fix chat buffer rendering for ephemeral context, including image context added
  before sending a manually typed chat message.
- Change image ask commands to use ephemeral image context, matching
  ~ellama-ask-about~ and keeping the chat transcript aligned with request
  context.
* Version 1.15.0
- Add task prompt templates for subagents.  The task tool can now render
  relative template paths with object-based argument substitution, strict path
  checks, validation hints, and callback-based error reporting.
- Improve task subagent sessions.  Ellama can display session buffers when
  session-backed generation starts, insert delegated task prompts into worker
  session buffers, preserve worker session metadata, and keep subagent
  continuations bound to the correct worker session after tool calls.
- Document task subagent templates, template path resolution, argument
  validation hints, continuation behavior, and session buffer display.  The Info
  manual has been regenerated from ~README.org~.
- Improve OpenAI-compatible tool-call history handling by normalizing stored
  tool-use arguments and decoding unibyte strings before provider request
  serialization.  This keeps retried tool-call history JSON serializable across
  older or mixed ~llm~ versions.
- Fix OpenAI-compatible streaming tool-call collection for multi-call batches.
  Streaming tool calls are collected using the maximum emitted tool-call index,
  avoiding out-of-range errors when a single chunk contains multiple tool calls.
- Fix CI compatibility issues around the task template directory default and
  provider request sanitization tests.
* Version 1.14.2
- Add project-local skill pointers for changelog and commit-message workflows.
  This makes repository-specific Codex skills discoverable from ~.codex/skills~.
- Add a ~commit-message~ skill for concise commit message generation from diffs.
- Update agent instructions to document the project commit workflow.  The
  workflow now covers pre-commit checks, branch creation from ~main~, iterative
  check/fix/commit/push cycles, documentation updates, changelog generation,
  version bumps, and when to ask for clarification.
* Version 1.14.1
- Refactor transient model handling and provider construction. Generalize
  transient model handling to support multiple provider types beyond Ollama,
  including OpenAI-compatible providers.
- Implement ~ellama-transient-set-model~ and ~ellama-transient-set-url~ for
  broader provider support.
- Add ~ellama-transient-reset-model-fields~ to reset model-specific parameters.
- Refactor ~ellama-construct-provider-from-transient~ to dynamically handle
  different provider types.
- Improve transient descriptions to dynamically show if values are set to
  defaults.
- Add logic to filter transient menu items based on the selected provider type.
- Add support for loading models and filling settings from existing provider
  defaults and current sessions.
- Update tests to cover various provider types and edge cases.
- Refactor provider parameter extraction. Introduced
  ~ellama-transient--provider-context-length~ to handle context length
  retrieval.
- Removed hardcoded default values for temperature and context length, ensuring
  parameters are directly retrieved from the provider.
- Update documentation.
* Version 1.14.0
- Implement automatic session context compaction. This feature automatically
  summarizes chat history when it reaches a certain token threshold to manage
  context window limits. It includes customization variables for threshold,
  target size, provider, and turn retention.
- Refactor session compaction to be asynchronous using `llm-chat-async`. This
  introduces helper functions to manage token counts, apply compaction results,
  and handle asynchronous errors and state changes.
- Add a compaction minor mode (`ellama-compaction-mode`) for visual feedback in
  the mode line when session compaction is in progress.
- Refactor session compaction to use synthetic interactions for
  summaries. Instead of appending the summary to the prompt context, it is now
  represented as a synthetic assistant interaction. This ensures the original
  system context is preserved and subsequent compactions correctly replace the
  previous summary.
- Improve session compaction system interaction handling. Added functions to
  identify, drop, and extract system context from leading system interactions,
  ensuring they are correctly preserved during the compaction process.
- Add session compaction options to the transient menu, including "Compact
  Current Session" and "Compact Session" commands.
- Fix docstring warnings and reformat code.
* Version 1.13.0
- Implement DLP (Data Loss Prevention) layer.
- Add prompt‑injection detection and configurable output‑warning handling.
- Add SRT sandbox integration to ellama-tools.
- Remove apply_patch tool.
* Version 1.12.18
- Add refill-readme target. Updated AGENTS.md to include a new “Refill readme”
  step in the build instructions. Modified Makefile to add the target to the
  `.PHONY` list and to define the `refill-readme` rule, which runs Emacs in
  batch mode to format the `README.org` file.
- Refactor org filling for README and NEWS. Introduce a reusable `refill-org`
  macro that uses `org-element` to fill paragraphs to 80 columns, replacing the
  previous `fill-region` approach. Update `refill-news` and `refill-readme`
  targets to use this macro, simplifying the Makefile and ensuring consistent
  formatting across org files.
- Update readme formatting. Minor formatting tweaks.
* Version 1.12.17
- Improved new session handling in ~ellama-chat~ by refactoring session
  resolution logic to conditionally create new sessions when the create-session
  flag is set.
- Added test to verify that using the create-session flag forces creation of a
  new session independent of existing sessions.
* Version 1.12.16
- Improve ephemeral context behavior for interactive commands.
  ~ellama-ask-about~, ~ellama-code-review~, ~ellama-write~, and
  ~ellama-code-add~ now explicitly add region/buffer context as ephemeral for
  one request.
- Add safer region replacement flow for editing commands.  ~ellama-stream~ now
  accepts ~:replace-beg~ and ~:replace-end~ to replace text in place, and
  restore buffer content on request errors.  ~ellama-change~,
  ~ellama-code-edit~, ~ellama-code-improve~, and ~ellama-make-format~ now use
  this path.
- Improve request cancellation handling across related buffers.  Request state
  is now tracked as a shared request context, so cancellation through ~C-g~
  works consistently from both main and reasoning buffers and does not affect
  unrelated active requests.
- Fix chat session recovery after buffer revert.  Session resolution now uses
  stable runtime UIDs and restores session state after ~revert-buffer~,
  improving robustness across renames and legacy session files.
- Add development helper targets to the Makefile.  New targets: ~make
  format-elisp~ for formatting project Elisp files and ~make test-detailed~ for
  running tests with detailed ERT failure output.
* Version 1.12.15
- Fix compilation warnings. This change resolves compilation warnings found
  during building.
* Version 1.12.14
- Add fake streaming helpers and new stream tests. Introduce
  ~ellama-test--fake-stream-partials~ and ~ellama-test--run-with-fake-streaming~
  to simplify test setup for streaming LLM responses. Refactor existing tests to
  use these helpers. Add tests for ~ellama-stream~ output to a log buffer and
  for retry logic when a fake tool‑call error is raised. These changes improve
  test readability and cover new streaming scenarios.
- Add tests for ellama helper functions and error handling. Introduce unit tests
  covering ~ellama-remove-reasoning~, mode-derived helpers, tool call error
  detection, error handler retry logic on tool errors, error handling for
  non-tool errors, chat-done callback behavior, and setup to use local
  ellama-tools. These tests validate correct behavior and edge cases.
- Correct tool argument handling, enable‑by‑name, and edit‑file logic. Update
  ~ellama-tools-wrap-with-confirm~ to use each argument’s plist for type
  resolution, prevent type removing. Guard ~ellama-tools-enable-by-name-tool~
  against adding a nil tool when the name is missing. Simplify
  ~ellama-tools-edit-file-tool~ to use replace-match for robust replacement. Add
  extensive ERT tests covering argument type preservation, enable‑by‑name
  nil‑check, edit‑file replacement at file start, confirmation caching, reply,
  and denial flows, file read/write/append/prepend/directory tree/move/line
  range/patch application validations, role and provider resolution logic,
  subagent loop step limits, task tool role fallback and priority handling.
- Add test for context prompt clearing ephemerals. Introduce a new ERT test
  ~test-ellama-context-prompt-with-context-clears-ephemeral~ that verifies
  ~ellama-context-prompt-with-context~ returns the combined prompt string and
  clears the ellama-context-ephemeral list. The test also ensures that
  ~ellama-context-global~ remains intact after the prompt is generated,
  confirming that ephemerals are not persisted across prompts.
- Add comprehensive tests for ellama skill handling. Implemented a suite of unit
  tests covering skill frontmatter parsing, directory scanning with filtering of
  invalid or hidden skills, project directory resolution, ordering of global and
  local skills, and prompt generation for both empty and populated skill lists.
- Add blueprint tests. Updated the Makefile test target to run the new
  ellama‑blueprint tests and added tests/test-ellama-blueprint.el which
  exercises blueprint loading, variable handling, selection, and command
  execution.
- Add community prompts tests and refactor download logic. Implemented
  comprehensive unit tests for community prompts, updated Makefile to run the
  new test, and refactored the prompt download routine in
  ~ellama-community-prompts.el~ to simplify directory handling and response
  processing.
- Add transient tests for ellama. Introduce comprehensive tests for Ellama
  transient features, covering model population, provider construction, provider
  selection, system and prompt handling, context summary, argument forwarding,
  and main menu initialization.
- Add manual export tests. Add a comprehensive test suite for ellama manual
  export, verifying that the version macro is included, badge.svg and gif links
  are stripped, org-export-to-file is called with correct arguments, broken
  links are bound locally, and an error is raised when the version header is
  missing.
- Split ~test-ellama.el~. Move tools and context related test to separated
  files.
- Add skills tests and update Makefile. Implemented a comprehensive test suite
  for Ellama skills, covering front‑matter parsing, directory scanning, project
  directory resolution, skill aggregation, and prompt generation.
- Add manual export instructions. Add “Export manual” entry to AGENTS.md and a
  new ~manual~ target to the Makefile. The target runs ~ellama-manual-export~
  via Emacs batch mode.
- Documentation fixes. Minor updates to documentation for clarity and
  consistency.
* Version 1.12.13
- Refactor confirmation system architecture. Split confirmation logic into
  reusable internal functions and improved wrapper factory. The system now
  accepts explicit tool names and uses them in confirmation prompts for lambda
  functions. This change improves ellama confirmation and makes it easier to
  extend.
* Version 1.12.12
- Add native compilation warnings check. This adds a new check-compile-warnings
  Make target that allows developers to verify native compilation warnings.
* Version 1.12.11
- Fix duplicate system message handling in chat prompts. This change removes the
  redundant ~llm-chat-prompt-append-response~ call that was appending the system
  message on each interaction, ensuring the system message is included only once
  in the initial prompt context setup.
- Fix bad src block replacement nil match crash that occurred when handling
  certain source code blocks.
- Warn LLM when reading binary content to prevent potential parsing errors and
  improve robustness of tool integration.
- Generalize docstring verb-form rule to apply consistently across documentation
  and code.
- Implement automatic retry for tool call errors. This feature adds retry logic
  to handle transient failures during tool usage by appending error messages to
  the prompt and re-invoking requests, improving overall request reliability.
* Version 1.12.10
- Fix stack overflow in markdown code fence conversion in
  ~ellama--translate-markdown-to-org-filter~ by replacing expensive regular
  expressions with linear line parsing for inline fences.
- Add regression test ~test-ellama-md-to-org-inline-fence-long-line~ to cover
  long lines with inline code fences and prevent this failure from returning.
* Version 1.12.9
- Fix result delivery for already approved async tools. Ensure results are
  delivered via callback function for both interactive and pre‑approved tools.
- Guard against nil project root tool result. Wrap
  ~ellama-tools-project-root-tool~ result in an and expression to prevent errors
  when the tool returns nil, protecting file-name-directory and expand-file-name
  calls.
* Version 1.12.8
- Add fallback for AGENTS.md search when ~ellama-tools-project-root-tool~
  returns nil. This ensures reliable detection of the AGENTS.md file by falling
  back to the current directory.
* Version 1.12.7
- Fix bug when only single tool was available. This change fixes a duplicate
  checking issue in the tool list by using ~llm-tool-name~ instead of
  ~plist-get~ for proper duplicate detection.
- Make ~shell_command~ tool async. The tool now executes commands asynchronously
  using a callback function for better performance.
- Trim shell command output and return nil for async tools. This ensures proper
  return value handling for async commands to maintain compatibility with the
  llm library.
- Add --no-pager flag to git commands in changelog generation. This prevents
  output paging and ensures clean command output.
* Version 1.12.6
- Simplify file writing in ~ellama-tools-write-file-tool~. Replaced temp
  buffer-based file writing with write-region to simplify implementation and
  avoid temporary buffer overhead.
- Refactor file tool parameters. Renamed ~path~ parameter to ~file_name~ across
  all file operation tools to follow GNU coding convention. Updated function
  signatures, docstrings, and tool definitions accordingly.
* Version 1.12.5
- Prevent duplicate tools in ellama-tools. Added a test function to add-to-list
  to check if a tool with the same name already exists before adding it to
  ellama-tools-available. This prevents duplicate tools from being registered
  when enabling tools by name.
- Update changelog skill quoting style. Changed the changelog generation skill
  to use org-mode quoting (~text~) instead of markdown backticks (`text`). Also
  use "MUST" instead of "must" to pay LLM's attention to the newline
  requirement.
* Version 1.12.4
- Normalize file path in write-file function. Added expand-file-name to properly
  handle both absolute and relative paths when writing files, preventing
  potential issues with file path resolution.
- Filter function objects from function call arguments. This prevents display of
  uncallable function objects in the confirmation prompt.
- Make task tool unaccessible for general subagents. This change improves
  security and control over tool access.
- Fix file write tool. Corrected the order of operations in
  ellama-tools-write-file-tool by setting the buffer file name before inserting
  content.
- Fix async tools confirmation. Use callback function to return result to the
  agent.
- Improve system message handling. Added optional MSG parameter to
  ellama-get-system-message to allow callers to provide custom system messages
  via the :system plist key. This allows sub-agents to use skills.
- Improve agent response result handling. Updated result encoding to return
  "done" for nil results instead of causing potential errors.
- Fix result handling in tool execution wrapper. Improved the logic for handling
  tool results by ensuring JSON encoding only occurs when a result exists. This
  change fixes async task execution.
* Version 1.12.3
- Improve loop control in confirmation dialog. Refactored the while loop in the
  confirmation prompt to use explicit t/nil returns for loop continuation
  instead of throw/catch. This improves code readability and maintainability
  while preserving all existing functionality.
* Version 1.12.2
- Add view and reply options to ellama-tools confirmation.
- Remove tools list tool to minimize LLMs distraction.
- Add automated NEWS formatting using ~make refill-news~.
* Version 1.12.1
- Simplify project root detection in ~ellama-get-agents-md-path~ to use
  ~ellama-tools-project-root-tool~. This refactoring eliminates potential nil
  returns from project-current, making the function more robust when locating
  the AGENTS.md file.
* Version 1.12.0
- Add asynchronous task delegation functionality via the new ~task~ tool that
  allows delegating descriptions to subagents with custom roles and max-steps
  limits.
- Add configurable subagent roles with ~ellama-tools-subagent-roles~
  customization variable, enabling custom providers, system prompts and tool
  access permissions for different agent types.
- Add JSON support to answer variants in the ~ellama-tools-ask-user-tool~ to
  handle both list and string inputs.
- Simplify tool result handling by adding nil checks before JSON encoding.
- Remove redundant tool definitions including ~enable_tool~, ~disable_tool~,
  ~search_tools~, and ~today~ to streamline the tool management system.
* Version 1.11.1
- Add AGENTS.md support to system message. Include the AGENTS.md file content
  from the current project or subproject in the system message by adding helper
  functions to locate and read the file from the directory tree up to the
  project root.
- Refine style guidelines and remove old instructions. Updated docstring
  formatting rules in AGENTS.md and removed legacy instructions.org file.
* Version 1.11.0
- Add skills system to Ellama.
- Add Agent Skills to the documentation.
- Add changelog generation skill to the project.
* Version 1.10.12
- Added prepend_file tool that allows prepending content to files. This expands
  the set of file manipulation utilities available through the ellama tools.
- Introduced customizable global and local directories for storing blueprint
  files. Added support for configurable file extensions and utility functions to
  locate, read, and load blueprints from files. This provides a flexible,
  project-aware mechanism for discovering and loading blueprint resources.
- Switched to backquote quoting for ellama-blueprint font-lock. This adjustment
  ensures the regex is evaluated correctly and the font-lock face is applied as
  intended.
* Version 1.10.11
- Remove explicit handling of numeric arguments in ellama-tools.
- Add argument processing and type wrapping to tool definitions.
- Add MCP Integration documentation.
* Version 1.10.10
- Refactored tool confirmation and simplified tool definitions.
- Simplified tool calling response handling.
* Version 1.10.9
- Use ~call-process~ instead of ~shell-command-to-string~ for ~grep_in_file~ and
  ~apply_patch~ tools.
- Update tools for already running sessions.
* Version 1.10.8
- Add missing import statements to fix native compiler warnings.
- Fix parameter order in grep tool confirmation message.
- Fix shell command injection vulnerability in grep tools.
- Add patch application functionality.
- Add *.elc to .gitignore.
- Add AGENTS.md and Makefile.
* Version 1.10.7
- Add blueprint removal functionality.
- Overwrite blueprint with the same name during creation.
- Update grep tools to accept directory parameter.
- Fix content replacement in edit_file tool.
- Update changelog generation instructions.
* Version 1.10.6
- Added json-encode wrapping to ~ellama-tools-read-file-tool~,
  ~ellama-tools-grep-tool~, ~ellama-tools-grep-in-file-tool~ and
  ~ellama-tools-lines-range-tool~ outputs for consistent JSON format.
* Version 1.10.5
- Added ~count_lines~ and ~lines_range~ tools for counting lines and retrieving
  file content by line range.
- Introduced ~grep_in_file~ tool with confirmation prompt and updated
  ~ellama-tools-available~ list.
* Version 1.10.4
- Added a new tool called "ask_user" that allows the system to pose questions to
  the user and receive clarifications.
- Added a new tool to append content to files, including
  ~ellama-tools-append-file-tool~ and ~ellama-tools-append-file-tool-confirm~.
- Registered the new append file tool in ~ellama-tools-available~ with
  appropriate arguments and description.
* Version 1.10.3
- Removed redundant checks for function arguments and streamlined the execution
  logic in ellama-tools.el, making the code more concise and maintainable by
  using the apply function directly in all cases.
* Version 1.10.2
- Added directory tracking to sessions, including a directory path in the extra
  data field and setting the default directory when a session is initialized to
  maintain working directory context.
* Version 1.10.1
- Added option to allow all tools without confirmation using new
  ~ellama-tools-allow-all~ variable marked as dangerous.
- Introduced ~ellama-tools-allowed~ option to specify a list of allowed tools
  that execute without user confirmation.
- Updated execution logic to check for tool's presence in the allowed list and
  properly encode non-string results using ~json-encode~.
- Added documentation for new tool access configuration options in README.org
  and ellama.info.
- Refactored tool functions to use new naming conventions with "-tool" suffix
  and confirmation wrappers with "-tool-confirm" suffix.
- Added support for processing and displaying tool uses and their results in LLM
  responses.
- Updated response handler function signature to accept a result-handler and
  filter function.
- Modified response processing logic to handle tool results and continue
  processing with updated prompts.
- Adjusted async and streaming request handling to pass new parameters for
  better tool integration.
* Version 1.10.0
- Added comprehensive tool support, enabling filesystem operations, shell
  commands, and utilities through LLM tools, including tool registration, file
  operations, directory tree exploration, and date/time utilities.
- Integrated tool system into ~ellama.el~, adding dependencies, modifying
  session creation, and refactoring error and response handlers.
- Implemented a new transient menu for managing tools with enable/disable
  functionalities, accessible via the main transient interface.
- Added user confirmation system for potentially dangerous operations like file
  and shell command executions.
- Refactored tool confirmation logic and response handling in ~ellama-tools.el~
  and ~ellama.el~ for improved structure and JSON encoding.
- Fixed directory tree function errors, ensuring proper checks and formatted
  output.
* Version 1.9.1
- Restricted template variable expansion to self-contained variables that don't
  span multiple lines to avoid conflicts with code snippets.
- Created a variable for the regular expression to simplify future changes.
- Made template variable matching less aggressive to accommodate various
  programming languages that use {} as function markers.
* Version 1.9.0
- Added new ~ellama-response-process-method~ customization option to choose
  between streaming and async response processing methods.
- Implemented async processing as an alternative to streaming for potentially
  lower resource usage.
- Added support for skipping every N messages in streaming responses to reduce
  resource usage.
* Version 1.8.8
- Added new static method to indicate quotes in ellama-context module.
- Enhanced ellama-transient to display richer context information including
  current session and context list contents.
* Version 1.8.7
- Adapt and improve templates.
* Version 1.8.6
- Use derived-mode-p instead of eq for mode checking.
- Fix code block translation in markdown to org mode conversion.
* Version 1.8.5
- Added ~ellama-debug~ to documentation.
* Version 1.8.4
- Added ~(require 'llm-ollama)~ to ~ellama-get-ollama-model-names~ function to
  ensure the llm-ollama module is loaded before attempting to retrieve ollama
  model names. This fixes error when the function is called without the module
  being previously required.
* Version 1.8.3
- Added ~ellama-debug~ custom variable to enable debug output. When enabled,
  generated text is now logged to a ~*ellama-debug*~ buffer with a separator for
  easier tracking of debug information. The debug output includes the raw text
  being processed and is appended to the end of the debug buffer each time.
- Fixed issue where nested or improperly formatted code blocks were not being
  handled correctly during markdown to org conversion. Added logic to check for
  existing BEGIN_SRC markers before replacing blocks, and improved backward
  search handling. Also added test cases for multiple bad code blocks with good
  content before and after them.
- Changed ~ellama--string-without-last-line~ function to
  ~ellama--string-without-last-two-lines~ to remove last two lines instead of
  one. Updated the text insertion logic in ~ellama--insert~ to use the new
  function and handle paragraph filling more robustly. Also improved the
  condition check for wrong character count and adjusted test cases accordingly.
- Fixed test case.
- Added reproduction of duplicate lines bug. Fix this bug.
* Version 1.8.2
- Refactored ~ellama--apply-transformations~ to use markers for stability during
  replacements. Added ~set-hard-newline~ properties to handle hard newlines
  during text filling. Updated test cases to include a new test for markdown
  list to org list conversion.
- Added check for function existence to avoid errors when ~llm-ollama-p~ is not
  available.
- Displayed ellama instant result buffer on done instead of visible reasoning
  buffer.
- Added two new tests for ellama functionality: ~test-ellama-lorem-ipsum~
  verifies proper line wrapping and formatting of long text.
  ~test-ellama-duplicate-strings~ checks handling of duplicate strings with
  markdown formatting.
- Added a check to skip processing when input text is empty, preventing
  potential errors in subsequent operations.
- Moved ~(require 'llm-ollama)~ from inside the function to top scope to ensure
  package is loaded before use.
* Version 1.8.1
- Use direct interfacing with Ollama's API instead of local installation.
* Version 1.8.0
- Added ~create-session~ optional parameter to ~ellama-ask-about~,
  ~ellama-ask-selection~, ~ellama-ask-line~, and ~ellama-code-review~ commands,
  and added ~--new-session~ option to transient commands. These changes allow
  creating a new session even if one is already active.
- Added the ability to create an ephemeral session by adding a new ~:ephemeral~
  argument to various functions and added the ~--ephemeral~ option to several
  transient commands in ~ellama-transient.el~.
- Implemented ephemeral context elements that are cleared after a single LLM
  request. Added corresponding functions and transient suffixes to manage
  ephemeral context elements, updating existing functions to handle both global
  and ephemeral contexts.
- Set up the transient menu to ensure the Ollama model is filled if it's empty.
- Added ~use-hard-newlines~ variable and updated text insertion to use hard
  newlines. Ensured that text is inserted only if there is a delta, and improved
  the conditional logic for filling paragraphs.
* Version 1.7.2
- Added detailed context management documentation.
* Version 1.7.1
- Set default directory for new sessions.
- Added functionality to set the file name before saving a session.
- Enhanced session ID generation to prevent overwriting existing session files.
* Version 1.7.0
- Added manual generation functionality for Ellama, including a new .gitignore
  entry to exclude ellama.texi, created ellama-manual.el for exporting an info
  manual from the README, and added the file ellama.info.
- Added the GNU Free Documentation License (FDL) text to README.org and updated
  ellama-manual.el to include FDL information ensuring compliance with FDL
  requirements. Added GNU Free Documentation License document to the project,
  ensuring that manuals remain free in terms of freedom to copy, distribute, and
  modify.
- Refactored the marker creation logic in ellama.el to use copy-marker for both
  beg-marker and end-marker, reducing redundancy and improving readability.
* Version 1.6.2
- Fix marker handling in block processing to correctly handle block boundaries
  during text processing and updated tests to include inline code translation
  from Markdown to Org.
- Improve text processing in ~ellama.el~ by adding markers for beginning and end
  of the text range to handle text transformation more accurately. Updated
  paragraph filling logic to avoid unwanted behavior in ~org-mode~.
- Remove redundant group parameter from all defcustom definitions in ellama.el.
- Refactor session line update functions by removing redundant show and hide
  functions for header and mode lines, simplifying the update functions using a
  let-bound element variable.
- Removed hooks from ellama minor modes.
* Version 1.6.1
- Added functionality to display the current Ellama session ID in both the
  header line and the mode line.
- Added globalized minor modes for enabling this feature across all buffers.
* Version 1.6.0
- Refactored the text insertion and handling logic in ~ellama.el~.
- Added new customization variables ~ellama-show-reasoning~ and
  ~ellama-reasoning-display-action-function~ to control the display of
  reasoning. Updated ~ellama.el~ to use these new variables when displaying
  reasoning buffers.
- Added ~ellama-disable-scroll~ and ~ellama-enable-scroll~ functions to control
  auto-scroll behavior.
- Added a new face ~ellama-key-face~ to style the context line keys in both
  ~ellama-blueprint.el~ and ~ellama-context.el~. Updated header line formats to
  use this new face for better visual distinction.
* Version 1.5.6
- Fix support for translating inline code from markdown to org format by
  handling backticks.
- Updated tests to include cases with inline code.
* Version 1.5.5
- Added an explicit autoload form to fix non package.el installations for Emacs
  28 and 29.
* Version 1.5.4
- Added an autoloadable alias ~ellama~ that points to the main menu function
  ~ellama-transient-main-menu~, providing a convenient way to access the
  feature.
* Version 1.5.3
- Added ~ellama-completion-provider~ custom variable to specify the LLM provider
  for completions. Updated ~ellama-stream~ call in ~ellama-complete~ to use this
  new provider and modified the filter function to handle prefix trimming
  correctly.
* Version 1.5.2
- Fixed a bug in session delete or kill that deletes or kills the current file
  or buffer when no session is selected.
* Version 1.5.1
- Renamed the variable ~ellama-transient-system~ to ~ellama-global-system~ to
  reflect its broader scope and updated all references in ~ellama.el~,
  ~ellama-transient.el~ and ~ellama-blueprint.el~. Moved it from
  ellama-transient to ellama. Fix symbol’s value as variable is void bug.
* Version 1.5.0
**** Code Refactoring and Modularity
- Moved transient menu-related functions and variables from ~ellama.el~ to
  ~ellama-transient.el~.
- Created ~ellama-context.el~ for context-related functions, variables, and
  classes.
- Moved blueprint-related code from ~ellama.el~ to ~ellama-blueprint.el~.

**** System Message Support
- Added system message support with new functions and variables in
  ~ellama-blueprint.el~ and ~ellama-transient.el~.
- Updated keybindings and transient menus to include system message options.
- Modified ~ellama-stream~ to use the transient system message if not provided
  explicitly.

**** Functionality Enhancements
- Updated ~ellama-summarize-prompt-template~ with new summarization
  instructions.
- Modified ~ellama-instant~ calls in ~ellama-summarize~ and
  ~ellama-summarize-kill-ring~.
- Updated translation template for better structure and added Org-mode to
  Markdown conversion.
- Added ~ellama-fix-parens~ function to remove unnecessary parentheses after
  template insertion.
- Refined ~ellama-complete~ function for more accurate response trimming.

**** Blueprints Support Enhancements
- Added ~ellama-blueprint-run~ function to run a chat with an LLM using a
  specified blueprint and optional pre-filled variables.
- Added documentation for blueprints in the README file.
- Added a new transient prefix command ~ellama-transient-blueprint-menu~ for
  managing blueprint-related commands, including creating blueprints from buffer
  or as new ones, and chatting with selected blueprints.
- Added a main menu option for chatting with blueprints.
- Added custom variable ~ellama-blueprints~ to store user-defined blueprints.
- Created commands ~ellama-create-blueprint~ and ~ellama-new-blueprint~ for
  creating new blueprints from an existing one and from scratch.

* Version 1.4.5
- Fix compat dependency version.
* Version 1.4.4
- Ensured that the buffer ~ellama--context-buffer~ is created if it does not
  exist before attempting to update and show context to prevent errors related
  to non-existent buffers.
- Added calls to ~ellama-update-context-show~ in both header line and mode line
  minor modes to ensure context is shown when these modes are toggled.
* Version 1.4.3
- Added fallback mechanism to use the first available Ollama chat model when no
  specific provider is defined for various ellama functions, ensuring that a
  valid provider is always used and preventing potential errors in scenarios
  where providers are not explicitly set.
- Refactored ~ellama--scroll~ to accept an optional POINT argument, allowing the
  function to go to that specific point before scrolling. Updated the caller
  ~ellama-update-buffer~ to pass the new point.
- Refactored the ~ellama-preview-context-mode~ by renaming the quit command key
  binding to use a custom function ~ellama-kill-current-buffer~. Added a header
  line format that displays the quit command instruction.
- Added a new function ~ellama-send-buffer-to-new-chat-then-kill~ to send the
  current buffer to a new chat session and then kill it. Updated the keybinding
  in ~ellama-blueprint-mode-map~ to use this new function instead of the old
  one.
- Added a new function ~ellama-kill-current-buffer~ and updated the keymap in
  ~ellama-blueprint-mode-map~ to use this function instead of an anonymous
  lambda. Also, updated the header line format to display the correct command
  names using ~substitute-command-keys~.
- Removed redisplay call to prevent flickering.
- Ensure ~llm-ollama~ dependency are loaded.
* Version 1.4.2
- Fixed the auto-scroll logic in ~ellama.el~ to ensure it correctly sets and
  resets ~stop-scroll~ based on cursor position changes.
- Added a ~redisplay~ call at the end of ~ellama--scroll~ to force a refresh of
  the window display to correctly handle auto-scroll of unfocused windows.
* Version 1.4.1
- Fixed a bug where users couldn't move the cursor during generation when
  auto-scroll was enabled.
* Version 1.4.0
- Improved transient menus.
- Added ellama-session-kill functionality.
- Added community prompt collection feature.
- Refactored ~ellama-context-mode~ to be a major mode.
- Added functionality to remove context elements by name.
- Added option to always show context line in header or mode line.
* Version 1.3.0
- Implemented ellama context header line and mode line features.
- Added ~ellama-context-header-line-mode~, ~ellama-context-mode-line-mode~ and
  its global versions.
- Session renaming functionality improvements.
- Improved session deletion.
- Renamed ~ellama-session-remove~ to ~ellama-session-delete~.
- Removed ~ellama-long-lines-length~ customization and related usage
* Version 1.2.5
- Fix scroll function.
* Version 1.2.4
- Improve the default behavior of auto-scroll. It will now move the cursor to
  the end of the ellama-chat buffer and enable auto-scroll for all buffers, not
  just chat buffers.
* Version 1.2.3
- Remove default ellama provider.
- Use first available ollama chat model if ellama provider not set. Ensure
  ~ellama~ is usable with zero configuration.
* Version 1.2.2
- Fix org to markdown conversion with broken links.
* Version 1.2.1
- Add ~ellama-context-add-directory~ command.
* Version 1.2.0
- Add interactive context management in special buffer with preview.
- Fix context element ordering.
- Deprecate local session context.
- Add option to toggle posframe showing global context.
- Add instruction document for simplify help from ellama.
* Version 1.1.7
- Added transient suffix to load model from the current session.
* Version 1.1.6
- Add system message support to ~ellama-stream~, ~ellama-chat~ and
  ~ellama-instant~.
- Fix think tag handling for some models.
- Provide buffer to all ~kill-buffer~ calls. Tried to fix an unreproducible in
  my environment bug.
* Version 1.1.5
- Fix cancel current stream by pressing ~C-g~ in buffer with active streaming.
* Version 1.1.4
- Improve the accuracy and reliability of the ~ellama-semantic-similar-p~
  function.
* Version 1.1.3
- Ensure unique elements in session and global contexts.
- Change default transient host and port to fix ollama provider setup.
- Deactivate ellama session on setting ellama-provider.
- Added functionality to convert Org mode content to Markdown when extracting
  buffer or file content for the context. This ensures that any Org mode files
  are properly formatted as Markdown before being processed further.
* Version 1.1.2
- Clear session context when resetting context to prevent unexpected behavior.
* Version 1.1.1
- Improve ~ellama-add-selection~.
- Add buffer quote context element.
* Version 1.1.0
- Enhancing interaction with reasoning models. Thinking tags within session
  buffers will be collapsed by default after generation. Outside of ellama
  sessions reasoning will be removed from model output. This ensures a seamless
  experience for users interacting with reasoning models.
* Version 1.0.3
- Unquote symbols in ~ellama-provider-list~.
* Version 1.0.2
- Add ollama model selection to transient menu.
* Version 1.0.1
- Refactor ellama-code-add function for better efficiency. Remove redundant
  context handling in ~ellama-code-add~. Simplify the prompt template by
  removing unnecessary context instructions. Improve function documentation for
  clarity. Add region selection handling outside of ~ellama-stream~ call.
* Version 1.0.0
- Added ~ellama-write~ command.
- Added ~ellama-proofread~ command.
- Added global context management, including functions to reset context.
* Version 0.13.11
- Add function ~ellama-make-semantic-similar-p-with-context~ that return test
  function for checking if two provided texts are meaning the same in provided
  context. It can be useful for creating semantically uniq lists of strings.
* Version 0.13.10
- Refactor file name fixing logic. Change the regular expression for handling
  forbidden filename characters to improve efficiency.
* Version 0.13.9
- Fix adding buffer to context.
* Version 0.13.8
- Fixed file name generation for all operating systems.
- Fix disable paragraphs filling.
- Add ~ellama-define-word~ command to transient menu.
- Add ~ellama-generate-name-by-reasoning-llm~ funtion to use
r1 distilled models for naming new sessions.
* Version 0.13.7
- Add missing requires for integration tests.
* Version 0.13.6
- Add function ~ellama-semantic-similar-p~. It can be useful for creating lists
  without duplicates by meaning.
- Add integration tests.
* Version 0.13.5
- Fix defcustom validation. Remove unnecessary quote.
* Version 0.13.4
- Add string list extraction functions. Can be useful for creating LLM
  workflows.
* Version 0.13.3
- Refactor markdown to org translation.
- Fix bug when transformations was applied inside code blocks.
* Version 0.13.2
- Fix inline latex translation during markdown to org transformations.
* Version 0.13.1
- Add support for extra information in ellama session.
* Version 0.13.0
- Add command ~ellama-chat-send-last-message~ to compose and modify messages
  within the chat buffer and send them directly from there.
- Add ~ellama-chat-display-action-function~ and
  ~ellama-instant-display-action-function~ custom variables to customize display
  buffers behaviour.
* Version 0.12.8
- Provide code review in chat session.
- Improve code review prompt template.
* Version 0.12.7
- Add change command to transient menu.
* Version 0.12.6
- Fixed transient dependency version.
- Refined the code for lazy loading some dependencies.
* Version 0.12.5
- Add coding provider customization option.
* Version 0.12.4
- Fix documentation.
- Improve translation template.
- Improve commit message template.
* Version 0.12.3
- Add separated summarization provider customization option.
- Improve summarization prompt template.
* Version 0.12.2
- Add problem solving chains to transient menu.
* Version 0.12.1
- Fix bug when user can't create new session with universal prefix argument.
* Version 0.12.0
- Add transient menu.
* Version 0.11.14
- Add interactive template modification for ellama-improve-* functions with
  universal prefix argument.
* Version 0.11.13
- Add ability to use sessions in other elisp packages.
* Version 0.11.12
- Fix ellama providers validation.
* Version 0.11.11
- Fix llm provider custom variables types.
* Version 0.11.10
- Fix commit message generation for partial commits.
* Version 0.11.9
- Fix issue when current window was changed after calling
  ~ellama-generate-commit-message~.
- Add ~ellama-generate-commit-message~ to keymap.
* Version 0.11.8
- Allow ollama-binary to accept the executable's base name.
* Version 0.11.7
- Add commit message generation.
* Version 0.11.6
- Add link to quoted content in a separate buffer.
* Version 0.11.5
- Prevent unnecessary line breaks at the end of generated text.
* Version 0.11.4
- Improve code templates and auto-naming.
* Version 0.11.3
- Fix autoscrolling for editing commands.
* Version 0.11.2
- Inability to use closures on stream done is fixed.
* Version 0.11.1
- Add function ~ellama-context-add-text~ for non-intercative usage.
* Version 0.11.0
- Refactor markdown to org conversion code. Now all transformations will be
  applied only outside of code blocks.
* Version 0.10.2
- Fix bug when translation from markdown to org syntax breaks python code
  blocks.
* Version 0.10.1
- Add ~ellama-solve-domain-specific-problem~ command. It leverages the popular
  "act like a professional" prompt engineering method, enhanced by an automated
  planning step.
* Version 0.10.0
- Add ~ellama-solve-reasoning-problem~ command that implements
  [[https://arxiv.org/pdf/2406.12442][Absctraction of Thought]] technique. It
  uses a chain of multiple messages to LLM and help it to provide much better
  answers on reasoning problems. Even small LLMs like
  [[https://ollama.com/library/phi3][phi3-mini]] provides much better results on
  reasoning tasks using AoT.
* Version 0.9.11
- Transform org quote content to avoid rendering issues.
* Version 0.9.10
- Add file quote context elements.
* Version 0.9.9
- Add info node quote context elements.
* Version 0.9.8
- Copy context from previous session on creating new session. This is useful
  when you create new session by calling ~ellama-ask-about~ with prefix
  argument.
* Version 0.9.7
- Add webpage quote context elements.
* Version 0.9.6
- Improve code blocks translation from markdown to org.
* Version 0.9.5
- Establish a fresh chat session whenever the ~ellama-chat~ function is invoked
  with a provider different from the one currently in use.
* Version 0.9.4
- Improve code blocks translation from markdown to org.
* Version 0.9.3
- Support summarize shr url at point (eww and elfeed).
- Add ellama-chain function for chaining multiple calls to LLMs.
* Version 0.9.2
- Allow summarizing urls withoud doctype tag.
- Summarize url at point.
* Version 0.9.1
- Add summarize killring command.
* Version 0.9.0
- Improve context management. Make it extendable.
* Version 0.8.14
- Don't insert blank line on code change actions.
* Version 0.8.13
- Simplify switching between org and markdown.
* Version 0.8.12
- Construct a local list instead of pushin to global one.
* Version 0.8.11
- Remove ~dash~ dependency.
- Remove function ~ellama--fill-string~.
- Rewrite function ~ellama--fill-long-lines~ to use ~fill-region~.
- Use ~thread-last~ instead of ~->>~ from ~dash~.
* Version 0.8.10
- Fix context for chat translation.
- Refactor translations.
- Add command for current buffer translation.
* Version 0.8.9
- Add chat translation.
* Version 0.8.8
- Fix some bad markdown to org translations.
* Version 0.8.7
- Fix interactive local model selection for emacs 28.
* Version 0.8.6
- Add provider to ~ellama-chat~ arguments.
* Version 0.8.5
- Improve working with context:
  - Fix some ~org-mode~ links.
  - Add command for adding info nodes into context.
  - Fix keybindings documentation.
* Version 0.8.4
- Fix keybindings. Keymap prefix now not set by default to prevent usage of
  reserved for end user customisation keys.
* Version 0.8.3
- Fix non-chat commands.
* Version 0.8.2
- Fix chat on model switching.
* Version 0.8.1
- Add naming scheme user option.
* Version 0.8.0
- Add context management.
* Version 0.7.7
- Apply markdown-to-org filter consistently.
* Version 0.7.6
- Eliminate eval call.
* Version 0.7.5
- Make ellama-request-mode for cancel active requests.
* Version 0.7.4
- Avoid advising global functions. Use minor modes instead.
* Version 0.7.3
- Add sessions auto save. If not set will not use named files for new sessions.
  Enabled by default.
- ~ellama-major-mode~ used instead of ~ellama-instant-mode~ and used not only
  for ellama instant buffers, but also for ellama chat buffers.
* Version 0.7.2
- Replace / with _ in new note filenames to prevent errors.
* Version 0.7.1
- Improve markdown to org conversion.
- Move readme from markdown to org.
* Version 0.7.0
- Switch from markdown to org-mode.
- Fix bug in session management on buffer kill.
- Decrease pressure to garbage collector during text generation.
* Version 0.6.0
- Implement session management.
* Version 0.5.8
- Fix typo in predefined prompts.
* Version 0.5.7
- Add ellama-nick-prefix custom variable.
* Version 0.5.6
- Add llm name to generated ellama name.
* Version 0.5.5
- Add ellama-chat-done-callback.
* Version 0.5.4
- Support interactive switch models on remote host.
* Version 0.5.3
- Support cancellation.
* Version 0.5.2
- Make default prompt templates customizable.
* Version 0.5.1
- Use more meaningful buffer names.
* Version 0.5.0
- Eliminate aliases.
* Version 0.4.14
- Extract ellama-chat-done to separate function.
* Version 0.4.13
- Use custom-set-default in set function for custom variables.
* Version 0.4.12
- Add option to customize paragraphs filling behaviour.
* Version 0.4.11
- Fix compilation
* Version 0.4.10
- Add customization group.
- Call ellama-setup-keymap on prefix change.
* Version 0.4.9
- Call fill-region only for non-programming modes.
* Version 0.4.8
- Improve lines wrapping.
* Version 0.4.7
- Simplify scroll logic.
* Version 0.4.6
- Fix code trimming.
* Version 0.4.5
- Refactoring. Eliminate duplicated code.
- Fix minor bugs with error handling.
* Version 0.4.4
- Fix ellama-render interactive spec.
* Version 0.4.3
- Fix scrolling during generation.
- Add auto scrolling for all commands.
* Version 0.4.2
- Add auto scrolling. Disabled by default.
* Version 0.4.1
- Fix adding and completing code. Do it inline instead of end of buffer.
* Version 0.4.0
- Add interactive provider selection.
* Version 0.3.2
- Change keymap prefix to prevent default binding overwriting.
* Version 0.3.1
- Minor fixes in custom variables.
* Version 0.3.0
- Add keymap.
* Version 0.2.0
- Move to GNU ELPA.
