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


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


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


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


5 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
  …  …
