- core: Add ProjectDirs helper class on ProjectContext (context.dirs)
with project getter for .project/ dir; feature packages extend it
via extension methods to expose their own dirs
- kanban: Add KanbanDirs extension on ProjectDirs exposing .kanban;
replace all 14 p.join(context.root, '.project', 'kanban') call
sites with context.dirs.kanban; drop now-unused path imports
- kanban: Add clock: DateTime Function() field to TicketStore
(defaults to DateTime.now); use clock().toUtc() in create() for
deterministic timestamps in tests
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
DewConfig in core is now a thin YamlMap wrapper. Feature-specific config
classes live in their own packages and expose themselves via Dart extensions:
- KanbanConfig, ColumnConfig, TicketTypeConfig + KanbanDewConfig extension
moved to packages/kanban/lib/src/kanban_config.dart
- McpConfig + McpDewConfig extension added to
packages/mcp/lib/src/mcp_config.dart
- DewConfig.fromYaml() now trivially wraps the raw YamlMap
- All call sites unchanged: context.config.kanban.* / context.config.mcp.*
- Added yaml dependency to dew_mcp pubspec
- Updated core test to validate raw yaml instead of typed fields
- Fixed cross-suite Directory.current isolation (existing issue, not introduced)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>