Releases: Open-Agent-Tools/Basic-Agent-Chat-Loop
v1.10.0
What's New in v1.10.0
Windows Compatibility Improvements
- Native Windows VT Support: Added
enable_windows_vt_mode()function for native ANSI color support in Windows consoles without external dependencies - Enables colored output in Windows cmd.exe, PowerShell, and Windows Terminal
- Graceful fallback on older Windows versions
Python Version Update
- Minimum Python version bumped to 3.10+ (previously 3.9+) to align with ecosystem standards
Documentation
- Comprehensive Windows compatibility documentation and test scripts
- Added Windows VT mode compatibility tests
- Added testing checklist for Windows validation
Internal Improvements
- Updated dependencies for security and compatibility
- Added
.chat-sessionsto .gitignore for cleaner repository
Testing
- ✅ All 510 tests passing
- ✅ Ruff linting passed
- ✅ MyPy type checking passed
- ✅ Cross-platform compatibility verified
Full Changelog: v1.9.0...v1.10.0
v1.9.0 - Multi-Directory Template Support
🎉 What's New in v1.9.0
This is a minor release featuring the new multi-directory template loading system and a simplified configuration wizard.
✨ New Features
Multi-Directory Template Support
The biggest new feature - templates can now be loaded from three locations with configurable priority:
~/.prompts(highest priority) - Your existing/legacy templates./.claude/commands(medium priority) - Project-specific templates that can be committed to git~/.claude/commands(lowest priority) - Global user templates
Key Benefits:
- Teams can share templates via git by committing
./.claude/commands/ - Personal templates stay separate in
~/.claude/commands - Full backward compatibility with existing
~/.promptssetups - Priority-based override system
Template Discovery:
# View all available templates grouped by source
#templates
# Or use the aliases
#prompts
#commandsConfiguration:
features:
claude_commands_enabled: true # Enable/disable template system🎯 Configuration Wizard Improvements
The configuration wizard has been significantly simplified:
Removed obsolete options:
- Display mode selection (streaming/rich/auto) - obsolete after v1.8.0
- Harmony configuration section - no longer needed
Current wizard prompts (Features section):
- Display token counts?
- Show agent metadata on startup?
- Enable command history with readline?
- Enable Claude slash commands (/template_name)?
Run the wizard with: chat_loop --wizard
🧹 Code Quality
- Applied black formatting across all files
- Fixed all ruff linting issues
- All mypy type checks passing
- 497 unit tests passing with zero regressions
- 88% test coverage on template_manager
📦 Installation
pip install basic-agent-chat-loop==1.9.0⬆️ Upgrading from Previous Versions
pip install --upgrade basic-agent-chat-loopMigration Notes:
- No breaking changes - existing
~/.promptstemplates continue to work - Existing config files are fully compatible
- To use new template directories, just create them and add template files
- Run
chat_loop --wizardto see the simplified configuration flow
🔧 Technical Details
Template Loading Algorithm:
- Scan all three directories for
.mdfiles - When loading a template, check directories in priority order
- First match wins (highest priority directory)
- Display templates grouped by source with override indicators
Command Aliases:
#templates- Show all templates#prompts- Alias for #templates#commands- Alias for #templates
Files Modified:
template_manager.py- Multi-directory support with priority loadingdisplay_manager.py- Grouped template displaycommand_router.py- Command aliasesconfig_wizard.py- Simplified wizard, removed obsolete optionschat_config.py- Added claude_commands_enabled settingchat_loop.py- Config checks for template commands
📊 Full Changelog
Added:
- Multi-directory template loading (~/.prompts, ./.claude/commands, ~/.claude/commands)
- Grouped template display by source directory
- Template command aliases (#prompts, #commands)
- claude_commands_enabled configuration option
Changed:
- Simplified configuration wizard (removed display mode and harmony options)
- Template manager now scans multiple directories
- Templates show source directory in listings
Fixed:
- Line length issues in config wizard
- Code formatting across test files
- Restored Claude slash commands option in wizard (was missing in beta)
Removed:
- Display mode selection from wizard (streaming/rich/auto)
- Harmony configuration section from wizard
📚 Documentation
For detailed information about using the multi-directory template system, see the README.
🙏 Contributors
This release includes contributions and feedback from the community. Thank you!
🤖 Generated with Claude Code
v1.8.1b3 - Restore Claude Slash Commands Option (Beta)
What's New in v1.8.1b3
Bug Fix 🐛
- Restored Claude slash commands option - The wizard now correctly prompts whether to enable Claude slash commands (/template_name)
- This option was accidentally removed in v1.8.1b2 during cleanup
- Users can now choose to enable or disable the multi-directory template system during setup
Configuration Wizard
The wizard now has 4 prompts in the features section:
- Display token counts?
- Show agent metadata on startup?
- Enable command history with readline?
- Enable Claude slash commands (/template_name)? ← Restored in this release
Technical Details
- Updated tests to expect 4 prompts instead of 3
- All 497 tests passing with zero regressions
- Claude slash commands default to enabled (Y/n prompt)
What Are Claude Slash Commands?
Claude slash commands allow you to use prompt templates from:
~/.prompts(highest priority - legacy/base templates)./.claude/commands(medium priority - project-specific)~/.claude/commands(lowest priority - global user templates)
Installation
pip install basic-agent-chat-loop==1.8.1b3Upgrade from v1.8.1b2
pip install --upgrade basic-agent-chat-loop==1.8.1b3This release fixes the missing wizard prompt for Claude slash commands.
🤖 Generated with Claude Code
v1.8.1b2 - Configuration Wizard Cleanup (Beta)
What's New in v1.8.1b2
Configuration Wizard Improvements 🎯
- Removed obsolete options - Cleaned up wizard by removing display mode and harmony configuration prompts
- Simplified flow - Reduced feature configuration from 5 prompts to 3 prompts
- Always-enabled templates - Claude slash commands are now always enabled (no longer prompted)
Code Quality Improvements 🧹
- Formatting - Applied black formatter across all source and test files
- Linting - Fixed all ruff linting issues (unused imports, f-strings)
- Type checking - All mypy type checks passing
What Was Removed
These options were removed from the wizard because the underlying features were removed in v1.8.0:
- Display mode selection (streaming/rich/auto) - obsolete after v1.8.0 simplification
- Harmony configuration section - no longer needed
- Claude commands toggle - now always enabled by default
Technical Details
- Wizard now has 3 prompts in features section: show_tokens, show_metadata, readline_enabled
- claude_commands_enabled is always set to True (users can still manually edit .chatrc if needed)
- All 510 tests passing with zero regressions
Installation
pip install basic-agent-chat-loop==1.8.1b2Upgrade from v1.8.1b1
This beta includes cleanup of the configuration wizard. No breaking changes - existing configs will continue to work.
🤖 Generated with Claude Code
v1.8.1b1 - Multi-Directory Template Support (Beta)
🎯 Beta Release: Multi-Directory Template Support
This is a beta release for testing the new multi-directory template system.
✨ New Features
Multi-Directory Template Loading
- Load templates from three locations with priority:
~/.prompts>./.claude/commands>~/.claude/commands - Project teams can share templates via git by committing
./.claude/commands - Users can maintain personal global templates in
~/.claude/commands - Full backward compatibility with existing
~/.promptssetups
Enhanced Template Display
#templatesnow shows templates grouped by source directory- New command aliases:
#promptsand#commands(in addition to#templates) - Visual indicators show which templates override others
Configuration
- New config option:
features.claude_commands_enabledto enable/disable template system - Added to wizard: "Enable Claude slash commands (/template_name)?"
🧪 Testing
- ✅ 125 tests passing with zero regressions
- ✅ 88% test coverage on template_manager
- ✅ Comprehensive multi-directory tests added
📦 Installation
pip install basic-agent-chat-loop==1.8.1b1🔄 Upgrade Notes
This beta includes all features from v1.8.1 plus the new multi-directory template system. Please report any issues!
🤖 Generated with Claude Code
v1.8.1 - Hotfix
🔧 v1.8.1 - Hotfix Release
Quick hotfix to improve input handling behavior.
Fixed
- Empty input validation - Pressing Enter on an empty line no longer sends a blank query to the agent
- Added validation to skip empty input after command routing
- Improves UX by matching expected behavior where empty input is ignored
- Applies to single-line queries, templates, and multiline input
- Location: chat_loop.py:1158-1160
Technical Details
The fix adds a simple check before processing queries:
# Skip empty queries
if not user_input.strip():
continueThis validation catches empty input from:
- Single-line input (just pressing Enter)
- Template expansion (if template somehow results in empty string)
- Defensive check for multiline input (which has its own validation)
Installation
Update to the hotfix release:
pip install --upgrade basic-agent-chat-loopOr install specific version:
pip install basic-agent-chat-loop==1.8.1Full Changelog
For complete release history, see CHANGELOG.md
v1.8.0 - Architectural Simplification
🎉 1.8.0 - Stable Release
This stable release represents a major architectural simplification of Basic Agent Chat Loop, focused on reliability and maintainability.
🏗️ Major Changes
Single Output Path Architecture
- Completely redesigned output handling for simplicity and reliability
- Removed all bifurcated rendering paths (Rich/plain, Harmony/not, streaming/buffering)
- Agent library now handles all output naturally - we just collect text for history
- Eliminates double-output issue permanently
- Tool prompts (Y/n confirmations) work naturally without interception
Code Cleanup (-361 lines)
- Removed entire HarmonyProcessor system
- Simplified ResponseRenderer from 165 to 45 lines (73% reduction)
- Deleted OutputState pattern entirely
- Removed Rich Console instantiation for agent output
- Fixed type checking issues
⚠️ Breaking Changes
- Harmony processing no longer applies - OpenAI Harmony format tokens are no longer processed
- Rich markdown rendering no longer applies to agent output - Output appears exactly as the agent library provides it
- suppress_agent_stdout config removed - No longer needed with new architecture
✅ Benefits
- No double-output - Agent prints once, naturally
- Tool prompts always visible - No interception or suppression
- Much simpler codebase - 361 fewer lines to maintain
- Easier to understand - Single clear output path
- Better reliability - Fewer moving parts means fewer bugs
📦 Installation
Install or upgrade to the stable release:
pip install basic-agent-chat-loop==1.8.0
# or
pip install --upgrade basic-agent-chat-loop🔄 Upgrade Path
If upgrading from 1.7.x:
- Review your
.chatrcconfiguration -suppress_agent_stdoutandharmony.*settings are now ignored - Agent output will appear as the library provides it (no Rich formatting)
- All other features remain unchanged
📝 Full Changelog
For detailed changes, see CHANGELOG.md
🙏 Acknowledgments
Thanks to all beta testers who provided feedback on the 1.8.0-beta.1 and 1.8.0-beta.2 releases!
v1.8.0-beta.2
1.8.0 Beta 2 - Architectural Simplification
This beta continues the 1.8.0 release focused on simplifying the output handling architecture.
Major Changes
Single Output Path Architecture
- Removed all bifurcated rendering paths (Rich/plain, Harmony/not, streaming/buffering)
- Agent library now handles all output naturally - we just collect text for history
- Eliminates double-output issue permanently
- Tool prompts (Y/n confirmations) work naturally without interception
Code Cleanup
- Removed 361 lines of complex rendering logic
- Simplified ResponseRenderer from 165 to 45 lines (73% reduction)
- Removed HarmonyProcessor instantiation and configuration
- Removed OutputState pattern entirely
- Fixed type checking issues
Breaking Changes
- Harmony processing no longer applies
- Rich markdown rendering no longer applies to agent output
- Agent output appears exactly as library provides it
Benefits
- No double-output (agent prints once)
- Tool prompts visible (no interception)
- Much simpler codebase (-361 lines)
- Easier to maintain and understand
For full details, see CHANGELOG.md
v1.8.0-beta.1 - Simplified Output Pipeline
v1.8.0-beta.1 - Simplified Output Pipeline ⚡
THIS IS A BETA RELEASE - Please test and report any issues!
Major Architectural Simplification
This release completely rethinks how we handle agent output. Instead of trying to intercept, process, and re-render agent responses, we now let the agent library handle output naturally.
What Changed
Removed (Complexity):
- ❌ Bifurcated rendering paths (Rich vs plain, Harmony vs not, streaming vs buffering)
- ❌ render_streaming_text() and render_final_response() calls
- ❌ Harmony processing
- ❌ suppress_agent_stdout configuration option
- ❌ All stdout interception/filtering logic
Kept (Essential):
- ✅ Thinking indicator (spinner before first token)
- ✅ Agent name header display
- ✅ Duration/token/metric summary at end
- ✅ Session history collection (silent, for saving conversations)
- ✅ Token tracking
How It Works Now
Single Output Path:
Agent library prints → Terminal (user sees natural output with tool prompts)
↓
We silently collect text → Session history
Benefits:
- No double-output - Agent prints once, naturally
- Tool prompts work - CRUD confirmations (Y/n) show through naturally
- Simpler code - 165 lines removed, single clear path
- No configuration - Works the same for everyone, no trade-offs
Testing Needed
Please test with agents that:
- Use streaming responses
- Have interactive tool confirmations (CRUD operations)
- Non-streaming agents (fallback path)
Report any issues at: https://github.com/Open-Agent-Tools/Basic-Agent-Chat-Loop/issues
Files Changed
response_streamer.py- Removed rendering, kept collectionchat_config.py- Removed suppress_agent_stdout configchat_loop.py- Updated ResponseStreamer instantiationconfig_wizard.py- Removed suppress prompt
Upgrade Notes
Config File:
- The
suppress_agent_stdoutsetting is no longer used (safe to leave in config) - No action needed - will be ignored
Breaking Changes:
- Custom Harmony processors will no longer apply
- Rich markdown rendering is no longer applied to agent output
- Agent output appears exactly as the library provides it
🤖 Generated with Claude Code
v1.7.3 - Smart Stdout Filter
What's New in v1.7.3
Smart Stdout Filter 🎯
Solves the double-output issue while preserving interactive tool functionality! This release implements pattern-based stdout filtering that:
- ✅ Suppresses accumulated agent output during streaming (fixes double-output)
- ✅ Allows interactive tool prompts to pass through (Y/n confirmations work)
- ✅ Detects interactive patterns:
?,Y/n:,[options]:, etc. - ✅ Default back to
suppress_agent_stdout: truewith smart filtering
Technical Details
New Component: SmartStdoutFilter
- Custom
io.StringIOsubclass with regex-based prompt detection - Accumulates buffered output for debugging (
get_suppressed_output()) - Passes prompts through to real stdout while suppressing other output
- Integrated into
ResponseStreamerstreaming loop
This resolves the critical issue from v1.7.2 where stdout suppression (which fixed double-output) was also suppressing CRUD tool Y/n confirmation prompts from BOAT/COAT tools.
Files Changed
- Added
components/smart_stdout_filter.py- New filtering component - Updated
components/response_streamer.py- Integrated smart filter - Updated
chat_config.py- Changed default back to true - Updated
components/config_wizard.py- Updated help text - Updated
components/__init__.py- Exported new component
Full Changelog: v1.7.2...v1.7.3
🤖 Generated with Claude Code