Skip to content

Releases: Open-Agent-Tools/Basic-Agent-Chat-Loop

v1.10.0

10 Jan 18:25

Choose a tag to compare

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-sessions to .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

07 Jan 18:51

Choose a tag to compare

🎉 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 ~/.prompts setups
  • Priority-based override system

Template Discovery:

# View all available templates grouped by source
#templates
# Or use the aliases
#prompts
#commands

Configuration:

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):

  1. Display token counts?
  2. Show agent metadata on startup?
  3. Enable command history with readline?
  4. 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-loop

Migration Notes:

  • No breaking changes - existing ~/.prompts templates continue to work
  • Existing config files are fully compatible
  • To use new template directories, just create them and add template files
  • Run chat_loop --wizard to see the simplified configuration flow

🔧 Technical Details

Template Loading Algorithm:

  1. Scan all three directories for .md files
  2. When loading a template, check directories in priority order
  3. First match wins (highest priority directory)
  4. 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 loading
  • display_manager.py - Grouped template display
  • command_router.py - Command aliases
  • config_wizard.py - Simplified wizard, removed obsolete options
  • chat_config.py - Added claude_commands_enabled setting
  • chat_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)

07 Jan 17:34

Choose a tag to compare

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:

  1. Display token counts?
  2. Show agent metadata on startup?
  3. Enable command history with readline?
  4. 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.1b3

Upgrade from v1.8.1b2

pip install --upgrade basic-agent-chat-loop==1.8.1b3

This release fixes the missing wizard prompt for Claude slash commands.


🤖 Generated with Claude Code

v1.8.1b2 - Configuration Wizard Cleanup (Beta)

07 Jan 17:23

Choose a tag to compare

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

Upgrade 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)

07 Jan 16:37

Choose a tag to compare

🎯 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 ~/.prompts setups

Enhanced Template Display

  • #templates now shows templates grouped by source directory
  • New command aliases: #prompts and #commands (in addition to #templates)
  • Visual indicators show which templates override others

Configuration

  • New config option: features.claude_commands_enabled to 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

06 Jan 16:42

Choose a tag to compare

🔧 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():
    continue

This 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-loop

Or install specific version:

pip install basic-agent-chat-loop==1.8.1

Full Changelog

For complete release history, see CHANGELOG.md

v1.8.0 - Architectural Simplification

06 Jan 16:24

Choose a tag to compare

🎉 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 .chatrc configuration - suppress_agent_stdout and harmony.* 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

06 Jan 16:14

Choose a tag to compare

v1.8.0-beta.2 Pre-release
Pre-release

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

06 Jan 15:05

Choose a tag to compare

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:

  1. No double-output - Agent prints once, naturally
  2. Tool prompts work - CRUD confirmations (Y/n) show through naturally
  3. Simpler code - 165 lines removed, single clear path
  4. 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 collection
  • chat_config.py - Removed suppress_agent_stdout config
  • chat_loop.py - Updated ResponseStreamer instantiation
  • config_wizard.py - Removed suppress prompt

Upgrade Notes

Config File:

  • The suppress_agent_stdout setting 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

06 Jan 14:32

Choose a tag to compare

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: true with smart filtering

Technical Details

New Component: SmartStdoutFilter

  • Custom io.StringIO subclass 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 ResponseStreamer streaming 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