Skip to content

Releases: Tefx/vectl

v0.7.0

22 Mar 08:20

Choose a tag to compare

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_decide RFC (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

22 Mar 08:13

Choose a tag to compare

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_decide RFC (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

27 Feb 14:55

Choose a tag to compare

License Change

Switched from AGPL v3 to Apache 2.0 to lower adoption barriers for enterprise users and integrators.

Changed

  • LICENSE: AGPL v3 → Apache 2.0
  • Updated license badge and classifier

v0.5.6

25 Feb 03:31

Choose a tag to compare

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

21 Feb 18:23

Choose a tag to compare

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.py to src/vectl/templates/dashboard.html for better maintainability.

Full Changelog: v0.5.4...v0.5.5

v0.5.4

21 Feb 13:54

Choose a tag to compare

What's New

Plan.yaml Edit Guard

Agents now receive explicit, multi-layer warnings not to edit plan.yaml directly:

  • File header: Every plan.yaml now 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 init now 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

21 Feb 10:09

Choose a tag to compare

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 stuck now explains lock status auto-correction and vectl recalc-lock usage

No API or behavior changes.

v0.5.2 — Lock Consistency Auto-Fix (patch)

21 Feb 09:06

Choose a tag to compare

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:

  1. DONE phases → always stay DONE
  2. IN_PROGRESS phases → always stay IN_PROGRESS
  3. PENDING phase with unmet deps → LOCKED
  4. 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 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.1 — Lock Consistency Auto-Fix

21 Feb 08:53

Choose a tag to compare

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:

  1. DONE phases → always stay DONE
  2. IN_PROGRESS phases → always stay IN_PROGRESS
  3. PENDING phase with unmet deps → LOCKED
  4. 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

20 Feb 06:17

Choose a tag to compare

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 projects
  • vectl_render(phase_id?, full?) - Render plan as Markdown
  • vectl_check(step_id, keyword?, add?) - Toggle/add checklist items
  • vectl_mutate(action="add-steps", phase_id, steps) - Batch create steps

Refactoring

  • Extract AgentsTarget enum and upsert_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