Releases: Tefx/vectl
v0.7.0
What's Changed
Bug Fix: decide() parallelism — successor tasks now dispatch in the same batch
decide() now simulates step completions in-memory before computing claimable steps. Previously, successor tasks were invisible until the next vectl_decide round-trip, preventing parallel dispatch of successor + independent tasks.
Before: decide → [complete(A), dispatch(B)] → decide → [dispatch(A_successor)] (2 rounds)
After: decide → [complete(A), dispatch(A_successor), dispatch(B)] (1 round)
Also included
vectl_decideRFC (docs/RFC-decide.md)- Agent field improvements across CLI and MCP
- Guide and MCP server refinements
- Regression test for successor-visibility fix
- Gitignore cleanup (
dev-timeline.html,plan.yaml.lock)
v0.6.9
What's Changed
Bug Fix: decide() parallelism improvement
decide() now simulates step completions in-memory before computing claimable steps. Previously, successor tasks were invisible until the next vectl_decide round-trip, preventing parallel dispatch of successor + independent tasks.
Before: decide → [complete(A), dispatch(B)] → decide → [dispatch(A_successor)] (2 rounds)
After: decide → [complete(A), dispatch(A_successor), dispatch(B)] (1 round)
Also included
vectl_decideRFC (docs/RFC-decide.md)- Agent field improvements across CLI and MCP
- Guide and MCP server refinements
- Regression test for successor-visibility fix
v0.5.7
v0.5.6
What's New
- Dashboard: Copy phase ID button — Each phase header now has a
[copy]button next to the phase ID chip. Click to copy the phase name to clipboard for quick use with the orchestrator.
Full Changelog: v0.5.5...v0.5.6
v0.5.5
Bug Fixes
- Fixed HTML injection vulnerability in dashboard: HTML tags (e.g.,
<style>,<a>) in step descriptions were breaking page structure. Markdown content is now properly escaped before conversion.
Refactoring
- Extracted 1500+ line HTML template from
dashboard.pytosrc/vectl/templates/dashboard.htmlfor better maintainability.
Full Changelog: v0.5.4...v0.5.5
v0.5.4
What's New
Plan.yaml Edit Guard
Agents now receive explicit, multi-layer warnings not to edit plan.yaml directly:
- File header: Every
plan.yamlnow starts with a managed-file comment block reminding agents to use vectl tools (regenerated on every save). - AGENTS.md / CLAUDE.md snippet: The vectl section injected by
vectl initnow includes an ownership warning with named tools (Edit, Write, sed) and an explicit if-then rule: "If a vectl command fails, report the error — do not edit plan.yaml directly as a workaround."
Updating Existing Projects
Existing projects can update their AGENTS.md/CLAUDE.md to the latest snippet:
uvx vectl agents-md # auto-detect target file
uvx vectl agents-md --target claude # force CLAUDE.md
This is now documented in uvx vectl guide startup as well.
v0.5.3 — License & Docs
Changes
- License: Changed from LGPL-3.0 to AGPL-3.0
- Docs: Added AGPL v3 badge to README and README_zh.md
- Guide:
vectl guide --on stucknow explains lock status auto-correction andvectl recalc-lockusage
No API or behavior changes.
v0.5.2 — Lock Consistency Auto-Fix (patch)
What's New
Lock Consistency Auto-Fix
Phase lock status is now automatically maintained on every write operation — agents never need to manage it manually.
Auto-recalc on save — _save() in both CLI and MCP now calls recalc_lock_status() before persisting. When a correction is made, an informational message is emitted:
```
[vectl] Lock status updated: phase-a (pending), phase-b (locked)
```
New command: vectl recalc-lock — for human operators to diagnose and repair inconsistencies after direct YAML edits:
```
vectl recalc-lock # fix immediately
vectl recalc-lock --dry-run # preview without saving
```
Correction rules:
- DONE phases → always stay DONE
- IN_PROGRESS phases → always stay IN_PROGRESS
- PENDING phase with unmet deps → LOCKED
- LOCKED phase with all deps DONE → PENDING
Guide Updated
vectl guide --on stuck (and vectl_guide(topic="stuck")) now explains:
- Lock status auto-corrects on every write — agents never need to intervene
- When and how to use
vectl recalc-lock(post-manual-YAML-edit only)
Internal Improvements
recalc_lock_status(plan) -> list[str]added to public API incore.pyformat_lock_changes()helper centralises message formatting across CLI and MCPauto_unlock_phases()docstring updated to recommendrecalc_lock_status()for full consistency enforcement
Tests
+31 new tests: unit (all 4 rules + edge cases + circular deps), integration (real filesystem roundtrip, manual YAML edit correction, CLI/MCP message format), and dry-run coverage.
Total: 894 tests, 0 failures.
v0.5.1 — Lock Consistency Auto-Fix
What's New
Lock Consistency Auto-Fix
Phase lock status is now automatically maintained on every write operation — agents never need to manage it manually.
Auto-recalc on save — _save() in both CLI and MCP now calls recalc_lock_status() before persisting. When a correction is made, an informational message is emitted:
```
[vectl] Lock status updated: phase-a (pending), phase-b (locked)
```
New command: vectl recalc-lock — for human operators to diagnose and repair inconsistencies after direct YAML edits:
```
vectl recalc-lock # fix immediately
vectl recalc-lock --dry-run # preview without saving
```
Correction rules:
- DONE phases → always stay DONE
- IN_PROGRESS phases → always stay IN_PROGRESS
- PENDING phase with unmet deps → LOCKED
- LOCKED phase with all deps DONE → PENDING
Internal Improvements
- `recalc_lock_status(plan) -> list[str]` added to public API in `core.py`
- `format_lock_changes()` helper centralises message formatting across CLI and MCP
- `auto_unlock_phases()` docstring updated to recommend `recalc_lock_status()` for full consistency enforcement
Tests
+31 new tests: unit (all 4 rules + edge cases + circular deps), integration (real filesystem roundtrip, manual YAML edit correction, CLI/MCP message format), and dry-run coverage.
Total: 894 tests, 0 failures.
v0.5.0 - MCP Parity Release
What's New
This release closes all major CLI→MCP gaps, enabling agents to fully manage vectl projects without CLI access.
New MCP Tools
| Tool | Description |
|---|---|
vectl_init |
Initialize new vectl projects (creates plan.yaml and configures AGENTS.md/CLAUDE.md) |
vectl_render |
Generate Markdown progress reports for stakeholders |
vectl_check |
Toggle or add checklist items in step descriptions |
MCP Mutate Extensions
| Action | Description |
|---|---|
add-steps |
Batch create multiple steps with two-pass reference resolution |
Before vs After
Before: Agents could not initialize projects, generate reports, or batch create steps via MCP.
After: Full CLI→MCP parity for all common operations.
Changes
New Features
vectl_init(project, plan_path?, agents_target?)- Initialize new vectl projectsvectl_render(phase_id?, full?)- Render plan as Markdownvectl_check(step_id, keyword?, add?)- Toggle/add checklist itemsvectl_mutate(action="add-steps", phase_id, steps)- Batch create steps
Refactoring
- Extract
AgentsTargetenum andupsert_agents_md()to core.py for CLI/MCP reuse
Tests
- 138 MCP tests passing
- Full coverage for all new MCP tools
Full Changelog: v0.4.1...v0.5.0