Skip to content

Commit 0c04fec

Browse files
committed
feat: Bump version to v0.4.0 for release
1 parent 1cbdf6d commit 0c04fec

5 files changed

Lines changed: 310 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,75 @@ All notable changes to Ripperdoc will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.4.0] - 2026-02-08
9+
10+
### ⚠️ BREAKING CHANGES - Configuration File Format Incompatible
11+
12+
**IMPORTANT: Please backup your configuration files before upgrading!**
13+
14+
This release includes major architectural changes that introduce **incompatible changes to the configuration file format**. Before upgrading to v0.4.0, please:
15+
16+
1. **Backup your configuration**: Copy your `~/.ripperdoc/c`, `~/.ripperdoc.json`, and any project-specific `.ripperdoc/` files
17+
2. **Review provider settings**: The `provider` field has been renamed to `protocol`
18+
3. **Update model configurations**: Model profiles now use a new structure with auto-completion from the built-in model catalog
19+
20+
### Added
21+
- **Task graph and team collaboration system** - Complete task management with persistent task graph, dependency tracking, and multi-agent team coordination
22+
- **Model catalog system** - Comprehensive built-in model catalog with pricing, context windows, and capability metadata for 200+ models
23+
- **Output style customization** - New `/output-style` command with 8+ predefined output styles (concise, detailed, json, markdown, etc.)
24+
- **Output language control** - New `/output-language` command to control AI response language independently from UI language
25+
- **Session-scoped working directories** - Support for multiple working directories per session with `/add-dir` command
26+
- **Interactive question system** - New `AskUserQuestion` tool for single and multi-select interactive prompts
27+
- **Custom commands management TUI** - Interactive terminal UI for managing custom commands with `/commands` slash command
28+
- **Skills enable/disable** - New TUI and commands to enable/disable individual skills
29+
- **Enhanced bash output** - Detailed truncation metadata for command output with size and line limit information
30+
- **SDK can_use_tool integration** - Permission preview support for SDK tool usage
31+
- **Async hook support** - Hooks now support async commands and bidirectional SDK protocol callbacks
32+
- **Hook scopes** - Add hook scopes for skills and agents for more granular control
33+
- **Agent hook type** - New hook event type specifically for agent lifecycle events
34+
- **JSON output format** - New JSON output mode for programmatic consumption
35+
- **Auto input format** - Enhanced input parsing with automatic format detection
36+
- **Custom system prompts** - Support for per-query custom system prompts
37+
- **Max turns option** - Limit conversation turns with `--max-turns` option
38+
- **Sidecar session index** - Fast session lookup and statistics with new index file format
39+
- **Python 3.10 asyncio compatibility** - Add asyncio.timeout compatibility layer for Python 3.10
40+
41+
### Changed
42+
- **Provider → Protocol rename** - Renamed `ProviderType` to `ProtocolType` throughout codebase for clarity
43+
- **Core module reorganization** - Major refactoring of core modules:
44+
- `query_utils.py``message_utils.py`
45+
- `permissions.py``permission_engine.py`
46+
- `provider_catalog.py``provider_metadata.py`
47+
- `default_tools.py``tool_defaults.py`
48+
- **Model profile structure** - Model profiles now auto-populate from model catalog with pricing, context windows, and capabilities
49+
- **Bash output rendering** - Simplified bash output rendering with improved test coverage
50+
- **Query runtime helpers** - Extracted query runtime helpers for better modularity
51+
- **Message normalization** - Enhanced message normalization in query loop
52+
- **Permission decision engine** - Modularized permission decision engine into separate functions
53+
- **Dynamic subagent prompts** - Subagent prompts now adapt based on available tools
54+
- **Environment variable handling** - Simplified environment variable handling across the codebase
55+
- **Stdio handler** - Split stdio handler into mixins for better separation of concerns
56+
- **Session resume replay** - Improved tool rendering in conversation replay for session resume
57+
- **SessionStart/End hooks** - Ensure hooks execute once per session with deterministic cleanup
58+
- **Permission mode synchronization** - Sync permission mode across query context, hooks, and permissions
59+
- **Thinking spinner** - Auto-refresh thinking spinner via async tick loop
60+
- **CLI integration** - Integrated stdio mode into main CLI with SDK-compatible options
61+
- **TUI notifications** - Replace inline error widgets with app notifications in TUI forms
62+
- **Internationalization** - Translated Chinese comments to English in source code
63+
- **Public API promotion** - Promoted internal utilities to public API for extensibility
64+
- **Type annotation coverage** - Improved type annotation coverage and mypy compatibility
65+
66+
### Fixed
67+
- **Model profile pricing** - Use model profile pricing and fix num_turns calculation
68+
- **Permission override** - Ensure deny/block decisions override allow in hooks
69+
- **Gitignore warnings** - Suppress gitignore warnings when writing files
70+
- **Input validation** - Add input validation tests and edge case coverage
71+
72+
### Removed
73+
- **Outdated examples** - Removed outdated example scripts and documentation
74+
- **Unused commands module** - Removed unused core commands module
75+
- **Legacy provider aliases** - Removed legacy provider string aliases (use protocol types instead)
76+
877
## [0.3.3] - 2026-02-04
978

1079
### Added
@@ -268,6 +337,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
268337
- Simple command execution
269338
- Basic project navigation
270339

340+
[0.4.0]: https://github.com/quantmew/Ripperdoc/compare/v0.3.3...v0.4.0
271341
[0.3.3]: https://github.com/quantmew/Ripperdoc/compare/v0.3.2...v0.3.3
272342
[0.3.2]: https://github.com/quantmew/Ripperdoc/compare/v0.3.1...v0.3.2
273343
[0.3.1]: https://github.com/quantmew/Ripperdoc/compare/v0.3.0...v0.3.1

MIGRATION_v0.4.0.md

Lines changed: 220 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,220 @@
1+
# Migration Guide: v0.3.3 → v0.4.0
2+
3+
**⚠️ IMPORTANT: This is a major release with breaking changes. Please read this guide carefully before upgrading.**
4+
5+
## Overview
6+
7+
Version 0.4.0 introduces significant architectural improvements including a new model catalog system, task graph features, and team collaboration capabilities. These changes require updates to your configuration files.
8+
9+
## Breaking Changes
10+
11+
### 1. Configuration File Format Changes
12+
13+
The `provider` field has been renamed to `protocol` throughout the codebase.
14+
15+
**Old format (v0.3.3):**
16+
```json
17+
{
18+
"models": [
19+
{
20+
"provider": "anthropic",
21+
"model": "claude-3-5-sonnet-20241022",
22+
"api_key": "sk-ant-...",
23+
"max_tokens": 4096
24+
}
25+
]
26+
}
27+
```
28+
29+
**New format (v0.4.0):**
30+
```json
31+
{
32+
"models": [
33+
{
34+
"protocol": "anthropic",
35+
"model": "claude-sonnet-4-5-20250929",
36+
"api_key": "sk-ant-...",
37+
"max_tokens": 4096
38+
}
39+
]
40+
}
41+
```
42+
43+
### 2. Provider Type Renaming
44+
45+
The following provider types have been consolidated into protocol types:
46+
47+
| Old Provider (v0.3.3) | New Protocol (v0.4.0) |
48+
|----------------------|----------------------|
49+
| `openai` | `openai_compatible` |
50+
| `openai-compatible` | `openai_compatible` |
51+
| `mistral` | `openai_compatible` |
52+
| `deepseek` | `openai_compatible` |
53+
| `kimi` | `openai_compatible` |
54+
| `qwen` | `openai_compatible` |
55+
| `glm` | `openai_compatible` |
56+
| `google` | `gemini` |
57+
58+
### 3. Model Profile Structure
59+
60+
Model profiles now support additional optional fields that auto-populate from the built-in model catalog:
61+
62+
```json
63+
{
64+
"protocol": "anthropic",
65+
"model": "claude-sonnet-4-5-20250929",
66+
"api_key": "sk-ant-...",
67+
"max_tokens": 4096,
68+
"temperature": 1.0,
69+
"context_window": 200000,
70+
"max_input_tokens": 200000,
71+
"max_output_tokens": 8192,
72+
"mode": "chat",
73+
"supports_reasoning": false,
74+
"supports_vision": true,
75+
"price": {
76+
"input": 3.0,
77+
"output": 15.0
78+
},
79+
"currency": "USD"
80+
}
81+
```
82+
83+
**Note:** All new fields are optional. If omitted, they will be auto-populated from the model catalog when available.
84+
85+
## Migration Steps
86+
87+
### Step 1: Backup Your Configuration
88+
89+
Before upgrading, backup your configuration files:
90+
91+
```bash
92+
# Backup user configuration
93+
cp ~/.ripperdoc/config.json ~/.ripperdoc/config.json.backup
94+
95+
# Backup any project-specific configurations
96+
find . -name "config.json" -path "*/.ripperdoc/*" -exec cp {} {}.backup \;
97+
```
98+
99+
### Step 2: Upgrade Ripperdoc
100+
101+
```bash
102+
pip install --upgrade ripperdoc
103+
```
104+
105+
Or if using uv:
106+
107+
```bash
108+
uv pip install --upgrade ripperdoc
109+
```
110+
111+
### Step 3: Update Configuration Files
112+
113+
Update your `config.json` files:
114+
115+
1. **Replace `provider` with `protocol`**
116+
2. **Update provider type names** using the table above
117+
3. **Optionally add new model profile fields** (recommended for better cost tracking)
118+
119+
Example migration script:
120+
121+
```bash
122+
# Backup and update config
123+
python3 << 'EOF'
124+
import json
125+
import os
126+
from pathlib import Path
127+
128+
# Provider to protocol mapping
129+
provider_to_protocol = {
130+
"openai": "openai_compatible",
131+
"openai-compatible": "openai_compatible",
132+
"mistral": "openai_compatible",
133+
"deepseek": "openai_compatible",
134+
"kimi": "openai_compatible",
135+
"qwen": "openai_compatible",
136+
"glm": "openai_compatible",
137+
"google": "gemini",
138+
}
139+
140+
config_path = Path.home() / ".ripperdoc" / "config.json"
141+
backup_path = config_path.with_suffix('.json.backup')
142+
143+
# Read configuration
144+
with open(config_path, 'r') as f:
145+
config = json.load(f)
146+
147+
# Update models
148+
if 'models' in config:
149+
for model in config['models']:
150+
if 'provider' in model:
151+
old_provider = model['provider']
152+
# Map to new protocol name
153+
new_protocol = provider_to_protocol.get(old_provider, old_provider)
154+
model['protocol'] = new_protocol
155+
del model['provider']
156+
print(f"Updated: {old_provider} -> {new_protocol}")
157+
158+
# Write updated configuration
159+
with open(config_path, 'w') as f:
160+
json.dump(config, f, indent=2)
161+
162+
print("Configuration updated successfully!")
163+
EOF
164+
```
165+
166+
### Step 4: Verify Configuration
167+
168+
Start Ripperdoc and verify your configuration:
169+
170+
```bash
171+
ripperdoc
172+
```
173+
174+
Check that your models are correctly configured:
175+
176+
```bash
177+
ripperdoc /models
178+
```
179+
180+
## New Features to Explore
181+
182+
After migration, explore these new features:
183+
184+
1. **Task Graph**: Use `TaskCreate`, `TaskList`, `TaskUpdate` for task management
185+
2. **Team Collaboration**: Use `TeamCreate`, `SendMessage` for multi-agent coordination
186+
3. **Output Styles**: Try `/output-style` to customize response formatting
187+
4. **Output Language**: Use `/output-language` to control AI response language
188+
5. **Custom Commands**: Use `/commands` to manage file-based custom commands
189+
6. **Working Directories**: Use `/add-dir` to add multiple working directories
190+
191+
## Rollback Instructions
192+
193+
If you encounter issues and need to rollback:
194+
195+
```bash
196+
# Restore previous version
197+
pip install ripperdoc==0.3.3
198+
199+
# Restore configuration
200+
mv ~/.ripperdoc/config.json.backup ~/.ripperdoc/config.json
201+
```
202+
203+
## Getting Help
204+
205+
If you need assistance with migration:
206+
207+
1. Check the [GitHub Issues](https://github.com/quantmew/Ripperdoc/issues) for known migration issues
208+
2. Review the [main documentation](README.md) for configuration details
209+
3. Run `/doctor` command to diagnose configuration issues
210+
211+
## Summary of Changes
212+
213+
- ✅ New model catalog with 200+ models
214+
- ✅ Task graph and team collaboration system
215+
- ✅ Output style and language customization
216+
- ✅ Enhanced hooks with async support
217+
- ✅ Improved session management with sidecar index
218+
- ✅ Better type annotations and code organization
219+
- ⚠️ **Breaking:** `provider``protocol` rename
220+
- ⚠️ **Breaking:** Configuration file format changes

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,18 @@ _an open-source, extensible AI coding agent that runs in your terminal_
1515
<img src="https://img.shields.io/github/stars/quantmew/ripperdoc.svg" alt="GitHub stars">
1616
</a>
1717
<a href="https://pypi.org/project/ripperdoc/">
18-
<img src="https://img.shields.io/badge/version-0.3.3-orange.svg">
18+
<img src="https://img.shields.io/badge/version-0.4.0-orange.svg">
1919
</a>
2020
</p>
21+
22+
> **⚠️ Important: v0.4.0 Release Notice**
23+
>
24+
> Version 0.4.0 includes **breaking changes** to the configuration file format. Before upgrading, please:
25+
> 1. **Backup your configuration**: `cp ~/.ripperdoc/ ~/.ripperdoc.backup` and `cp ~/.ripperdoc.json ~/.ripperdoc.json.backup`
26+
> 2. **Read the migration guide**: [MIGRATION_v0.4.0.md](MIGRATION_v0.4.0.md)
27+
>
28+
> The main change is renaming `provider` to `protocol` in configuration files.
29+
>
2130
</div>
2231
2332
**Ripperdoc** is a powerful, extensible AI coding agent that runs directly in your terminal. Inspired by tools like [Claude Code](https://claude.com/claude-code), [Aider](https://github.com/paul-gauthier/aider), and [Goose](https://github.com/block/goose), Ripperdoc helps you write code, refactor projects, execute shell commands, and manage files through natural language conversations.

README_CN.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ _开源、可扩展的 AI 编程代理,在终端中运行_
1515
<img src="https://img.shields.io/github/stars/quantmew/ripperdoc.svg" alt="GitHub stars">
1616
</a>
1717
</p>
18+
19+
> **⚠️ 重要:v0.4.0 版本发布通知**
20+
>
21+
> v0.4.0 版本包含**配置文件格式不兼容的重大变更**。在升级之前,请:
22+
> 1. **备份您的配置**`cp ~/.ripperdoc/ ~/.ripperdoc.backup` and `cp ~/.ripperdoc.json ~/.ripperdoc.json.backup`
23+
> 2. **阅读迁移指南**[MIGRATION_v0.4.0.md](MIGRATION_v0.4.0.md)
24+
>
25+
> 主要变更是将配置文件中的 `provider` 重命名为 `protocol`
26+
>
1827
</div>
1928
2029
Ripperdoc 是你的本地 AI 编程助手,类似于 [Claude Code](https://claude.com/claude-code)[Codex](https://github.com/openai/codex)[Gemini CLI](https://github.com/google-gemini/gemini-cli)[Aider](https://github.com/paul-gauthier/aider)[Goose](https://github.com/block/goose)。它可以编写代码、重构项目、执行 shell 命令、管理文件——全部通过终端中的自然语言对话完成。

ripperdoc/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Ripperdoc - AI-powered coding agent."""
22

3-
__version__ = "0.3.3"
3+
__version__ = "0.4.0"

0 commit comments

Comments
 (0)