# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.16.0] 2025-03-07

### Added
- Database-backed memory system with SQLite (.ra-aid/pk.db)
- Repository pattern for memory access (KeyFactRepository, KeySnippetRepository, ResearchNoteRepository)
- Memory garbage collection with configurable thresholds
- "--wipe-project-memory" flag to reset memory
- Memory statistics in status panel
- Propagation depth control for agent_should_exit
- Fixed string parameter for ripgrep tool
- Support for Claude 3.7 Sonnet thinking tokens in expert tool

### Changed
- Enhanced file logging with support for .ra-aid/logs/
- Improved CiaynAgent with better tool validation and execution
- Memory-related prompt improvements

### Fixed
- Various bug fixes in tool execution
- Test improvements for memory system

## [0.15.2] - 2025-02-27

### Added
- Added agent_should_exit context functionality with propagation to parent contexts
- Improved agent crash detection with non-propagating crash state
- Enhanced ripgrep tool with better context support
- Improved agent context inheritance
- Added comprehensive test coverage for exit and crash handling

## [0.15.1] - 2025-02-27

### Fixed
- Improved chat prompt to prevent endless loop behavior with sonnet 3.7.

## [0.15.0] - 2025-02-27

### Added
- Added database infrastructure with models, connections, and migrations
- Added agent context system for improved context management
- Added aider-free mode with command line option to disable aider-related functionality
- Added database-related dependencies

### Changed
- Improved file editing tools with enhanced functionality
- Enhanced agent implementation tools with modified return values and logic
- Improved agent tool prompts for better clarity and effectiveness
- Fixed langgraph prebuilt dependency

### Fixed
- Fixed project state detection logic with added tests

## [0.14.9] - 2025-02-25

### Added
- Added binary file detection and filtering to prevent binary files from being added to related files
- Added python-magic dependency for improved binary file detection
- Added support for "thinking" budget parameter for Claude 3.7 Sonnet

### Changed
- Updated dependencies:
  - langchain-anthropic from 0.3.7 to 0.3.8
  - langchain-google-genai from 2.0.10 to 2.0.11
- Improved shell command tool description to recommend keeping commands under 300 words
- Enhanced binary file filtering to include detailed reporting of skipped files
- Updated test assertions to be more flexible with parameter checking

## [0.14.8] - 2025-02-25

### Changed
- Improved programmer.py tool prompts for better clarity on related files visibility
- Enhanced programmer tool to remind users to call emit_related_files on any new files created
- Updated README.md to use media queries for showing different logos based on color scheme preference


## [0.14.7] - 2025-02-25

### Added
- Windows compatibility improvements
  - Add error handling for Windows-specific modules
  - Add Windows-specific tests for compatibility

### Changed
- Improve cross-platform support in interactive.py
- WebUI improvements
  - Improve message display
  - Add syntax highlighting
  - Add animations
- Expert tool prompt improvements

### Fixed
- WebUI improvements
  - Fix WebSocket communication
- Interactive command handling improvements
  - Fix interactive history capture
  - Fix command capture bugs
  - Multiple fixes for interactive command execution on both Linux and Windows
  - Enhance error handling for interactive processes

## [0.14.6] - 2025-02-25

### Added
- Added `--no-git` flag to aider commands to prevent git operations

### Changed
- Updated aider-chat dependency from 0.75 to 0.75.1
- Improved prompts for better tool effectiveness
- Enhanced emit_key_snippet documentation to focus on upcoming work relevance

## [0.14.5] - 2025-02-24

### Changed
- Optimized prompts

## [0.14.4] - 2025-02-24

### Changed
- Updated aider-chat dependency from 0.74.2 to 0.75
- Improved tool calling performance by minimizing tool return values
- Replaced emit_key_snippets with emit_key_snippet for simpler code snippet management
- Simplified return values for multiple tools to improve tool calling accuracy
- Updated tool prompts to remove unnecessary context cleanup references
- Reorganized order of tools in read-only tools list

### Fixed
- Fixed tests to align with updated tool return values
- Updated test assertions to match new simplified tool outputs

## [0.14.3] - 2025-02-24

### Added
- Added support for Claude 3.7 Sonnet model
- Added version display in startup configuration panel

### Changed
- Updated language library dependencies (langgraph, langchain-core, langchain, langchain-openai, langchain-google-genai)
- Changed default Anthropic model from Claude 3.5 Sonnet to Claude 3.7 Sonnet

### Fixed
- Fixed f-string syntax error in write_file.py
- Fixed bug where model selection on Anthropic was always using default instead of respecting user selection
- Fixed Anthropic key error message to reference the correct variable
- Added test for user-specified Anthropic model selection

## [0.14.2] - 2025-02-19

### Added
- Added automatic fallback mechanism to alternative LLM models on consecutive failures
- Added FallbackHandler class to manage tool failures and fallback logic
- Added console notification for tool fallback activation
- Added detailed fallback configuration options in command line arguments
- Added validation for required environment variables for LLM providers

### Changed
- Enhanced CiaynAgent to handle chat history and improve context management
- Improved error handling and logging in fallback mechanism
- Streamlined fallback model selection and invocation process
- Refactored agent stream handling for better clarity
- Reduced maximum tool failures from 3 to 2

### Fixed
- Fixed tool execution error handling and retry logic
- Enhanced error resilience and user experience with fallback handler
- Improved error message formatting and logging
- Updated error handling to include base message for better debugging

## [0.14.1] - 2025-02-13

### Added
- Added expected_runtime_seconds parameter for shell commands with graceful process shutdown
- Added config printing at startup (#88)

### Changed
- Enforce byte limit in interactive commands
- Normalize/dedupe related file paths
- Relax aider version requirement for SWE-bench compatibility 
- Upgrade langchain/langgraph dependencies

### Fixed
- Fixed aider flags (#89)
- Fixed write_file_tool references

## [0.14.0] - 2025-02-12

### Added
- Status panel showing tool/LLM status and outputs
- Automatic detection of OpenAI expert models
- Timeouts on LLM clients

### Changed
- Improved interactive TTY process capture and history handling
- Upgraded langgraph dependencies
- Improved prompts and work logging
- Refined token/bytes ratio handling
- Support default temperature on per-model basis
- Reduced tool count for more reliable tool calling
- Updated logo and branding assets
- Set environment variables to disable common interactive modes

### Fixed
- Various test fixes
- Bug fixes for completion message handling and file content operations
- Interactive command input improvements
- Use reasoning_effort=high for OpenAI expert models
- Do not default to o1 model (#82)
- Make current working directory and date available to more agents

## [0.13.2] - 2025-02-02

- Fix temperature parameter error for expert tool.

## [0.13.1] - 2025-01-31

### Added
- WebUI (#61)
- Support o3-mini

### Changed
- Convert list input to string to handle create-react-agent tool calls correctly (#66)
- Add commands for code checking and fixing using ruff (#63)

### Fixed
- Fix token estimation
- Fix tests
- Prevent duplicate files (#64)
- Ensure default temperature is set correctly for different providers
- Do not incorrectly give temp parameter to expert model
- Correcting URLs that were referencing ai-christianson/ra-aid - should be ai-christianson/RA.Aid (#69)

### Improved
- Integrate litellm to retrieve model token limits for better flexibility (#51)
- Handle user defined test cmd (#59)
- Run tests during Github CICD (#58)
- Refactor models_tokens to be models_params so we can track multiple parameters on a per-model basis.

## [0.13.0] - 2025-01-22

### Added
- Added Deepseek Provider Support and Custom Deepseek Reasoner Chat Model (#50)
- Added Aider config File Argument Support (#43) 
- Added configurable --recursion-limit argument (#46)
- Set Default Max Token Limit with Provider/Model Dictionary (#45)

### Changed
- Updated aider-chat version from 0.69.1 to 0.72.1 (#47)

### Fixed
- Fixed Issue 42 related to Levenshtein (#44)

### Improved
- Various prompt improvements
- Better handling of 429 errors on openrouter
- Improved project info handling and token usage optimization
- Extracted tool reflection functionality
- Improved work log handling
- Added tests for CiaynAgent._does_not_conform_to_pattern

## [0.12.1] - 2025-01-08
- Fix bug where directories are added as related files.

## [0.12.0] - 2025-01-04

### Added
- Google Gemini AI provider support
- Dependency check functionality in ra_aid/dependencies.py
- Test coverage reporting to pytest commands

### Changed
- Updated minimum Python requirement to 3.9
- Updated OpenAI model defaults
- Modified test files to support new Gemini provider
- Updated SWE-bench dataset generation script with UV package management

### Fixed
- Date-based assertions in directory listing tests

## [0.11.3] - 2024-12-30

- MacOS fixes.

## [0.11.2] - 2024-12-30

- Fix SyntaxError: f-string expression part cannot include a backslash.

## [0.11.1] - 2024-12-29

- Improve prompts.
- Fix issue #24.

## [0.11.0] - 2024-12-28

- Add CiaynAgent to support models that do not have, or are not good at, agentic function calling.
- Improve env var validation.
- Add --temperature CLI parameter.

## [0.10.3] - 2024-12-27

- Fix logging on interrupt.
- Fix web research prompt.
- Simplify planning stage by executing tasks directly.
- Make research notes available to more agents/tools.

## [0.10.2] - 2024-12-26

- Add logging.
- Fix bug where anthropic is used in chat mode even if another provider is specified.

## [0.10.0] - 2024-12-24

- Added new web research agent.

## [0.9.1] - 2024-12-23

- Fix ask human multiline continuation.

## [0.9.0] - 2024-12-23

- Improve agent interruption UX by allowing user to specify feedback or exit the program entirely.
- Do not put file ID in file paths when reading for expert context.
- Agents log work internally, improving context information.
- Clear task list when plan is completed.

## [0.8.2] - 2024-12-23

- Optimize first prompt in chat mode to avoid unnecessary LLM call.

## [0.8.1] - 2024-12-22

- Improved prompts.

## [0.8.0] - 2024-12-22

- Chat mode.
- Allow agents to be interrupted.

## [0.7.1] - 2024-12-20

- Fix model parameters.

## [0.7.0] - 2024-12-20

- Make delete_tasks tool available to planning agent.
- Get rid of implementation args as they are not used.
- Improve ripgrep tool status output.
- Added ask_human tool to allow human operator to answer questions asked by the agent.
- Handle keyboard interrupt (ctrl-c.)
- Disable PAGERs for shell commands so agent can work autonomously.
- Reduce model temperatures to 0.
- Update dependencies.

## [0.6.4] - 2024-12-19

- Added monorepo_detected, existing_project_detected, and ui_detected tools so the agent can take specific actions.
- Prompt improvements for real-world projects.
- Fix env var fallback when base key is given, expert and base provider are different, and expert key is missing.

## [0.6.3] - 2024-12-18

- Fix one shot completion signaling.
- Clean up error outputs.
- Update prompt for better performance on large/monorepo projects.
- Update programmer prompt so we don't use it to delete files.

## [0.6.2] - 2024-12-18
- Allow shell commands to be run in read-only mode.
- When asking for shell command approval, allow cowboy mode to be enabled.
- Update prompt to suggest commands be run in non-interactive mode if possible, e.g. using --no-pager git flag.
- Show tool errors in a panel.

## [0.6.1] - 2024-12-17

### Added
- When key snippets are emitted, snippet files are auto added to related files.
- Add base task to research subtask prompt.
- Adjust research prompt to make sure related files are related to the base task, not just the research subtask.
- Track tasks by ID and allow them to be deleted.
- Make one_shot_completed tool available to research agent.
- Make sure file modification tools are not available when research only flag is used.
- Temporarily disable write file/str replace as they do not work as well as just using the programmer tool.

## [0.6.0] - 2024-12-17

### Added
- New `file_str_replace` tool for performing exact string replacements in files with unique match validation
- New `write_file_tool` for writing content to files with rich output formatting and comprehensive error handling