5.3 KiB
5.3 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.2.0 - 2026-05-02
Changed
- Removed unsupported MCP
hostandportsettings from generateddew.yaml. - Updated MCP configuration docs to reflect stdio-only client setup.
- Added the
dewexecutable mapping for pub activation.
0.1.0 - 2026-04-25
Added
dew init
dew init <path>scaffolds a new project, generating.project/dew.yamlwith sensible defaults and running all module init hooks (kanban directory layout, etc.).
Kanban CLI (dew kanban)
Full set of kanban subcommands, each also registered as an MCP tool automatically:
| Subcommand | Description |
|---|---|
create |
Create a new ticket with title, type, column, body, labels, and milestones |
list |
List tickets filtered by column, type, label, milestone, or archived state |
get |
Fetch a single ticket by ID |
update |
Update any field on a ticket (title, type, column, body, labels, milestones) |
delete |
Permanently delete a ticket |
move |
Move a ticket to a different column (validates column transition rules) |
search |
Full-text search across ticket titles, bodies, and comments |
comment |
Append a comment to a ticket |
archive |
Soft-delete a ticket by moving it to the archive column |
unarchive |
Restore an archived ticket to a column |
link |
Create a typed bidirectional link between two tickets |
unlink |
Remove a link between two tickets |
stats |
Display ticket counts grouped by column and type |
board |
Print an ASCII representation of the board |
config |
Print the current kanban configuration |
tui |
Launch the interactive terminal UI |
- File-based storage: each ticket is a Markdown file with YAML frontmatter for
metadata and inline
---separators for comments. Column is derived from the containing subdirectory — not duplicated in the file. - Typed, bidirectional ticket links:
blocks/is_blocked_by,relates_to,duplicates/is_duplicated_by,parent_of/child_of. Writing one side automatically writes the inverse on the target ticket. - Labels and milestones as first-class ticket fields.
- Column transition validation: enforces allowed moves between configured columns.
--include-archivedflag onlistandsearchto include soft-deleted tickets.
Interactive TUI (dew kanban tui)
- Full Trello-style terminal board rendered with ANSI box-drawing characters.
- Board mode: pill/tab column headers, scrollable ticket list per column,
live
?filter/search overlay,ncreate,eedit,aarchive,Ddelete,ccomment,Llink,</>move ticket between columns, Enter open detail. - Detail mode: scrollable ticket detail view with formatted body and comments.
- Editor modal: in-terminal overlay for editing all ticket fields — title,
type (picker), column (picker), labels, milestones, and body. Arrow keys cycle
selector values; Enter edits text fields or opens
$VISUAL/$EDITORfor body. - F1 help overlay in every mode showing context-sensitive keybindings.
- Auto-refresh via filesystem watching: board reloads live when ticket files change on disk (e.g. from another terminal or AI agent).
- SIGWINCH handling for correct redraws on terminal resize.
MCP Server (dew mcp serve)
dew mcp servestarts an MCP-compliant stdio server.- All kanban commands that implement the
DewToolCommandmixin are automatically exposed as MCP tools — no separate registration required. - JSON Schema for each tool's input is derived directly from the command's
ArgParser, so argument definitions are written exactly once. - Compiled CLI binary at
.project/toolchain/bin/dewused by the MCP server to avoid stdin conflicts.
Core Architecture
DewToolCommandmixin: mix into anyDewCommandto register it simultaneously as a CLI subcommand and an MCP tool.CommandRegistry: central registry collected at startup; MCP server reads from this registry to enumerate available tools.DewConfigwith typed extension pattern:coreholds the raw YAML map; feature packages (kanban,mcp) add typed accessors via Dart extensions, keeping feature-specific config out ofcore.ProjectDirswith injectable filesystem abstraction (package:file) for testable path resolution.