Skip to content

Commit bd3a25f

Browse files
anderskevclaude
andauthored
chore(release): 0.17.0 (#496)
* chore(release): bump version to 0.17.0 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update VitePress site for v0.17.0 changes - Rename working_dir → repo_root across configuration and data model docs - Update driver references: "CLI driver" → "claude/codex drivers" throughout - Fix Profile table in data-model.md to match actual fields (agents, sandbox, plan_path_pattern) - Fix TrackerType "none" → "noop" to match code - Add plan validation feedback loop to overview and roadmap - Add ask_user_question interactive cards to roadmap - Fix "YAML profiles" → "database-backed profiles" in landing page - Add codex driver to troubleshooting credentials table - Update copyright year to 2024-2026 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f39ed22 commit bd3a25f

15 files changed

Lines changed: 64 additions & 40 deletions

File tree

CHANGELOG.md

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.17.0] - 2026-02-22
11+
12+
### Added
13+
14+
- **pipeline:** Add plan validation feedback loop that automatically re-validates plans after architect revisions ([#493](https://github.com/existential-birds/amelia/pull/493))
15+
- **brainstorm:** Render `ask_user_question` tool calls as interactive cards in the dashboard ([#489](https://github.com/existential-birds/amelia/pull/489))
16+
- **drivers:** Add `CodexCliDriver` for OpenAI Codex CLI integration with subprocess-based NDJSON streaming ([#477](https://github.com/existential-birds/amelia/pull/477))
17+
1018
### Changed
1119

12-
- **Breaking:** Replace legacy `cli` driver with explicit `claude` and `codex` drivers ([#473](https://github.com/existential-birds/amelia/issues/473))
20+
- **Breaking:** Replace legacy `cli` driver with explicit `claude` and `codex` drivers ([#477](https://github.com/existential-birds/amelia/pull/477))
1321

1422
The generic `driver: "cli"` value has been split into explicit driver keys:
1523
- `claude` — wraps the Claude CLI binary
@@ -18,9 +26,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1826

1927
**Migration:** Update all profiles that use `driver: "cli"` to `driver: "claude"`. Legacy `cli` values are now rejected at startup. Recreate profiles with `amelia config profile create <name> --driver claude`.
2028

21-
### Added
29+
- **Breaking:** Rename `Profile.working_dir` to `Profile.repo_root` for clarity ([#479](https://github.com/existential-birds/amelia/pull/479))
30+
31+
**Migration:** Update any code or configuration referencing `working_dir` to use `repo_root` instead. A database migration handles the column rename automatically.
32+
33+
### Fixed
2234

23-
- **drivers:** Add `CodexCliDriver` for OpenAI Codex CLI integration with subprocess-based NDJSON streaming
35+
- **architect:** Remove git commit step from plan template that caused unnecessary commit attempts during planning ([#494](https://github.com/existential-birds/amelia/pull/494))
36+
- **logging:** Replace todo table with styled Rich Panel widget to fix rendering issues ([#492](https://github.com/existential-birds/amelia/pull/492))
37+
- **dashboard:** Auto-focus input field when agent finishes responding for smoother interaction ([#491](https://github.com/existential-birds/amelia/pull/491))
38+
- **drivers:** Handle `rate_limit_event` and unknown SDK message types gracefully instead of crashing ([#475](https://github.com/existential-birds/amelia/pull/475))
39+
- **drivers:** Improve SDK stream handling robustness for edge cases ([#483](https://github.com/existential-birds/amelia/pull/483))
2440

2541
## [0.16.0] - 2026-02-18
2642

amelia/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
__version__: Package version string.
99
"""
1010

11-
__version__ = "0.16.0"
11+
__version__ = "0.17.0"
1212

1313
__all__ = [
1414
"__version__",

dashboard/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "amelia-dashboard",
33
"private": true,
4-
"version": "0.16.0",
4+
"version": "0.17.0",
55
"license": "Apache-2.0",
66
"type": "module",
77
"scripts": {

docs/site/.vitepress/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ export default defineConfig({
9595
// Footer
9696
footer: {
9797
message: 'Built by hey-amelia bot. Released under the <a href="https://github.com/existential-birds/amelia/blob/main/LICENSE">Apache License 2.0</a>.',
98-
copyright: 'Copyright © 2024-2025 <a href="https://github.com/existential-birds">@existential-birds</a>'
98+
copyright: 'Copyright © 2024-2026 <a href="https://github.com/existential-birds">@existential-birds</a>'
9999
},
100100

101101
// Search configuration

docs/site/.vitepress/theme/components/CapabilitiesAndResearch.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const items = [
2626
{ capability: 'Swap drivers per agent', detail: 'Choose Claude Code CLI or API SDK per role. Implements SWE-agent\'s agent-computer interface principle.' },
2727
{ capability: 'Resume from checkpoints', detail: 'Pick up failed workflows where they stopped. Uses Context Folding branch/return primitives.' },
2828
{ capability: 'One model per role', detail: 'Assign different LLMs to Architect, Developer, and Reviewer. ReAct-style reasoning and acting per agent.' },
29-
{ capability: 'Configure via YAML profiles', detail: 'Prompts, tools, models, and context per profile. Stateless, immutable, append-only state design.' },
29+
{ capability: 'Configure via profiles', detail: 'Prompts, tools, models, and context per profile. Database-backed, immutable, append-only state design.' },
3030
{ capability: 'Generate specs from issues', detail: 'Spec Builder turns GitHub/Linear issues into structured implementation plans.' },
3131
{ capability: 'Watch it run in real time', detail: 'WebSocket-powered React dashboard shows agent progress as it happens.' },
3232
]

docs/site/architecture/concepts.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ Developer marks execution complete
183183

184184
### Unified Streaming with StreamEvent
185185

186-
Amelia uses a unified `StreamEvent` type for real-time streaming across all drivers. Regardless of whether you use the API driver or CLI driver, tool execution progress is communicated through the same event format.
186+
Amelia uses a unified `StreamEvent` type for real-time streaming across all drivers. Regardless of whether you use the API driver, Claude driver, or Codex driver, tool execution progress is communicated through the same event format.
187187

188188
**StreamEventType** (the event categories):
189189

@@ -209,7 +209,7 @@ Amelia uses a unified `StreamEvent` type for real-time streaming across all driv
209209
Each driver converts its native message types to `StreamEvent`:
210210

211211
```python
212-
# CLI driver converts SDK messages via convert_to_stream_event()
212+
# Claude CLI driver converts SDK messages via convert_to_stream_event()
213213
stream_event = convert_to_stream_event(sdk_message, agent="developer", workflow_id="...")
214214

215215
# The UI and logging systems consume StreamEvent uniformly
@@ -222,7 +222,7 @@ This abstraction allows the dashboard and logging systems to display real-time p
222222

223223
Drivers abstract how Amelia communicates with LLMs. This separation enables flexibility across different environments.
224224

225-
### Why Two Drivers?
225+
### Why Multiple Drivers?
226226

227227
| Driver | Use Case | Requirements |
228228
|--------|----------|--------------|
@@ -232,7 +232,7 @@ Drivers abstract how Amelia communicates with LLMs. This separation enables flex
232232

233233
### Driver Interface
234234

235-
Both drivers implement a simple prompt-based interface:
235+
All drivers implement a simple prompt-based interface:
236236

237237
```python
238238
class DriverInterface(Protocol):
@@ -257,7 +257,7 @@ class DriverInterface(Protocol):
257257

258258
### Why This Matters
259259

260-
Some environments prohibit direct API calls due to data retention policies. The CLI driver wraps existing approved tools (like `claude` CLI) that:
260+
Some environments prohibit direct API calls due to data retention policies. The CLI drivers wrap existing approved tools (`claude` and `codex` CLIs) that:
261261
- Inherit SSO authentication
262262
- Comply with data policies
263263
- Use existing security approvals

docs/site/architecture/data-model.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ This document describes the core data structures used throughout the Amelia orch
1212
| Type | Definition | Description |
1313
|------|------------|-------------|
1414
| `DriverType` | `"claude" \| "codex" \| "api"` | LLM driver type. |
15-
| `TrackerType` | `"jira" \| "github" \| "none"` | Issue tracker type. |
15+
| `TrackerType` | `"jira" \| "github" \| "noop"` | Issue tracker type. |
1616
| `AgenticStatus` | `"running" \| "awaiting_approval" \| "completed" \| "failed" \| "cancelled"` | Agentic execution status. |
1717
| `Severity` | `"low" \| "medium" \| "high" \| "critical"` | Review issue severity. |
1818

@@ -37,14 +37,13 @@ Defines the runtime environment and constraints.
3737
| Field | Type | Default | Description |
3838
|-------|------|---------|-------------|
3939
| `name` | `str` || Profile name (e.g., "work", "personal"). |
40-
| `driver` | `DriverType` || LLM driver type (e.g., "api", "claude", "codex"). |
41-
| `model` | `str \| None` | `None` | LLM model identifier. Required for API drivers (e.g., "minimax/minimax-m2"). |
42-
| `tracker` | `TrackerType` | `"none"` | Issue tracker type. |
43-
| `working_dir` | `str \| None` | `None` | Working directory for agentic execution. |
40+
| `tracker` | `TrackerType` | `"noop"` | Issue tracker type. |
41+
| `repo_root` | `str` || Root directory of the repository this profile targets. |
4442
| `plan_output_dir` | `str` | `"docs/plans"` | Directory for saving implementation plans. |
43+
| `plan_path_pattern` | `str` | `"docs/plans/{date}-{issue_key}.md"` | Path pattern for plan files with `{date}` and `{issue_key}` placeholders. |
4544
| `retry` | `RetryConfig` | `RetryConfig()` | Retry configuration for transient failures. |
46-
| `max_review_iterations` | `int` | `3` | Maximum review-fix loop iterations before terminating. |
47-
| `max_task_review_iterations` | `int` | `5` | Per-task review iteration limit for task-based execution. |
45+
| `agents` | `dict[str, AgentConfig]` | `{}` | Per-agent driver and model configuration. |
46+
| `sandbox` | `SandboxConfig` | `SandboxConfig()` | Sandbox execution configuration. |
4847

4948
**Location:** `amelia/core/types.py`
5049

@@ -240,7 +239,8 @@ class StreamEventType(StrEnum):
240239
Unified real-time streaming event from agent execution. This is the common message format across all drivers (CLI and API), enabling consistent UI rendering and logging regardless of the underlying LLM driver.
241240

242241
Drivers convert their native message types to `StreamEvent` using conversion functions:
243-
- CLI driver: `convert_to_stream_event()` in `amelia/drivers/cli/claude.py`
242+
- Claude CLI driver: `convert_to_stream_event()` in `amelia/drivers/cli/claude.py`
243+
- Codex CLI driver: Conversion in `amelia/drivers/cli/codex.py`
244244
- API driver: Similar conversion in the API driver implementation
245245

246246
| Field | Type | Default | Description |

docs/site/architecture/inspiration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ Production-grade patterns for building reliable agentic systems. Amelia's archit
209209
| MetaGPT SOP Roles | Architect → Developer ↔ Reviewer pipeline |
210210
| AgentCoder Iteration | Developer-Reviewer cycle until approval |
211211
| HULA Plan Approval | Human-in-the-loop approval gates |
212-
| SWE-agent ACI Design | Driver abstraction (`api` vs `cli`) |
212+
| SWE-agent ACI Design | Driver abstraction (`api` vs `claude` vs `codex`) |
213213
| LLM-as-a-Judge | Reviewer agent as automated code critic |
214214
| Reflexion Verbal RL | Review feedback as reinforcement signal |
215215
| ReAct Reasoning+Acting | Interleaved planning and tool execution |

docs/site/architecture/overview.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Technical deep dive into Amelia's architecture, components, and data flow.
99

1010
## What Amelia Does Today
1111

12-
**Phase 1 (Complete):** Multi-agent orchestration with the **Architect -> Developer -> Reviewer** loop. Issues flow through planning, execution, and review stages with human approval gates before any code ships. Supports both API-based (DeepAgents/LangChain) and CLI-based (Claude) LLM drivers, with Jira and GitHub issue tracker integrations.
12+
**Phase 1 (Complete):** Multi-agent orchestration with the **Architect -> Developer -> Reviewer** loop. Issues flow through planning, execution, and review stages with human approval gates before any code ships. Supports both API-based (DeepAgents/LangChain) and CLI-based (Claude, Codex) LLM drivers, with Jira and GitHub issue tracker integrations.
1313

1414
```
1515
Issue → [Queue] → Architect (plan) → Human Approval → Developer (execute) ↔ Reviewer (review) → Done
@@ -96,7 +96,7 @@ See [`amelia/pipelines/implementation/nodes.py`](https://github.com/existential-
9696

9797
**Node: `call_architect_node`** - Gets driver, calls `Architect.plan()` to generate markdown plan with goal extraction, updates state with plan content.
9898

99-
**Node: `plan_validator_node`** - Validates plan file and extracts structured fields (goal, plan_markdown, key_files) using lightweight LLM extraction.
99+
**Node: `plan_validator_node`** - Validates plan file and extracts structured fields (goal, plan_markdown, key_files) using lightweight LLM extraction. Runs in a feedback loop: if validation fails, the Architect revises the plan and re-validation occurs automatically.
100100

101101
**Node: `human_approval_node`** - In server mode: emits `APPROVAL_REQUIRED` event and uses LangGraph interrupt to block. In CLI mode: prompts user directly via typer.
102102

@@ -108,7 +108,7 @@ See [`amelia/pipelines/implementation/nodes.py`](https://github.com/existential-
108108

109109
### Why the Driver Abstraction?
110110

111-
Some environments prohibit direct API calls due to data retention policies. The CLI driver wraps existing approved tools (like `claude` CLI) that inherit SSO authentication and comply with policies. Users can switch between API (fast prototyping) and CLI (policy compliance) without code changes.
111+
Some environments prohibit direct API calls due to data retention policies. The CLI drivers wrap existing approved tools (`claude` and `codex` CLIs) that inherit SSO authentication and comply with policies. Users can switch between API (fast prototyping) and CLI (policy compliance) without code changes.
112112

113113
### Why Separate Agents Instead of One Big Prompt?
114114

docs/site/guide/configuration.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ amelia config profile create my-profile \
4545
--driver api \
4646
--model "minimax/minimax-m2" \
4747
--tracker github \
48-
--working-dir /path/to/project \
48+
--repo-root /path/to/project \
4949
--activate
5050
```
5151

@@ -54,7 +54,7 @@ amelia config profile create my-profile \
5454
| `--driver` | `-d` | LLM driver (`claude`, `codex`, or `api`) |
5555
| `--model` | `-m` | Model name (required for API drivers) |
5656
| `--tracker` | `-t` | Issue tracker (`none`, `github`, `jira`) |
57-
| `--working-dir` | `-w` | Working directory for agent execution |
57+
| `--repo-root` | `-w` | Repository root path for agent execution |
5858
| `--activate` | `-a` | Set as active profile after creation |
5959

6060
### Activate Profile
@@ -94,7 +94,7 @@ Common models:
9494
- `google/gemini-2.5-flash` - Gemini 2.5 Flash (cost-effective)
9595
- `minimax/minimax-m2` - MiniMax M2
9696

97-
For CLI drivers, model is optional but helps with clarity.
97+
For `claude` and `codex` drivers, model is optional but helps with clarity.
9898

9999
### Tracker
100100

@@ -106,9 +106,9 @@ Where Amelia fetches issue details from.
106106
| `jira` | Jira issues | `JIRA_BASE_URL`, `JIRA_EMAIL`, `JIRA_API_TOKEN` env vars |
107107
| `none` | No tracker | None (use `--task` for ad-hoc tasks) |
108108

109-
### Working Directory
109+
### Repository Root
110110

111-
The directory where agents execute. When set, the Developer agent operates from this path.
111+
The root directory of the repository this profile targets. When set, the Developer agent operates from this path.
112112

113113
Default: Current working directory where commands are run.
114114

@@ -126,7 +126,7 @@ Default: `false`
126126

127127
## Per-Agent Configuration
128128

129-
Each profile can configure individual agents with different drivers and models. This allows mixing CLI and API drivers within a single profile, or using different models for different agents.
129+
Each profile can configure individual agents with different drivers and models. This allows mixing `claude`, `codex`, and `api` drivers within a single profile, or using different models for different agents.
130130

131131
View agent configurations:
132132

@@ -230,8 +230,8 @@ The dashboard provides a visual interface for managing configuration at `/settin
230230

231231
### Profiles Tab
232232

233-
- View all profiles as cards showing driver, agents, and working directory
234-
- Filter profiles by CLI or API driver type
233+
- View all profiles as cards showing driver, agents, and repository root
234+
- Filter profiles by driver type (`claude`, `codex`, or `api`)
235235
- Create new profiles with the "+ Create Profile" button
236236
- Click a profile card to edit its settings
237237
- Set active profile
@@ -250,7 +250,7 @@ amelia config profile create myproject \
250250
--driver api \
251251
--model "minimax/minimax-m2" \
252252
--tracker github \
253-
--working-dir /path/to/myproject \
253+
--repo-root /path/to/myproject \
254254
--activate
255255

256256
# Verify the profile

0 commit comments

Comments
 (0)