Release 0.2.0

This commit is contained in:
Chris Hendrickson 2026-05-02 14:02:39 -04:00
parent 07e8c98c7c
commit 373e8c0949
20 changed files with 75 additions and 64 deletions

View file

@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.2.0] - 2026-05-02
### Changed
- Removed unsupported MCP `host` and `port` settings from generated `dew.yaml`.
- Updated MCP configuration docs to reflect stdio-only client setup.
- Added the `dew` executable mapping for pub activation.
## [0.1.0] - 2026-04-25
### Added
@ -86,5 +94,6 @@ Full set of kanban subcommands, each also registered as an MCP tool automaticall
- `ProjectDirs` with injectable filesystem abstraction (`package:file`) for
testable path resolution.
[Unreleased]: https://github.com/artificerchris/dew/compare/v0.1.0...HEAD
[Unreleased]: https://github.com/artificerchris/dew/compare/v0.2.0...HEAD
[0.2.0]: https://github.com/artificerchris/dew/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/artificerchris/dew/releases/tag/v0.1.0

View file

@ -55,7 +55,7 @@ dew kanban tui
## Configuration
Dew reads `.project/dew.yaml` for board columns, ticket types, ID prefix, and MCP server settings. Running `dew init .` generates this file with defaults. See the [Configuration documentation](./docs/config.md) for the full schema reference.
Dew reads `.project/dew.yaml` for board columns, ticket types, and ID prefix. Running `dew init .` generates this file with defaults. See the [Configuration documentation](./docs/config.md) for the full schema reference.
## Documentation

View file

@ -14,10 +14,6 @@ your-project/
```yaml
dew:
mcp:
host: "localhost" # Hostname the MCP server binds to
port: 8080 # Port the MCP server listens on
kanban:
prefix: "PROJ" # Short prefix used for ticket IDs (e.g. PROJ-42)
@ -47,12 +43,8 @@ dew:
## Reference
### `dew.mcp`
| Field | Type | Default | Description |
| ------ | ------- | ------------- | --------------------------------- |
| `host` | string | `"localhost"` | Hostname the MCP server binds to. |
| `port` | integer | `8080` | Port the MCP server listens on. |
The MCP server currently has no project-level `dew.yaml` configuration. Configure
your MCP client to run `dew mcp serve`; see the [MCP documentation](./features/mcp.md).
### `dew.kanban`

View file

@ -15,16 +15,8 @@ The MCP feature is split across two packages to keep concerns separate:
## Configuration
The MCP server is configured under the `mcp` key in `.project/dew.yaml`. By default it runs on `localhost` at port `8080`.
```yaml
dew:
mcp:
host: "localhost"
port: 8080
```
See the [Configuration documentation](../config.md) for full details.
The MCP server currently has no `.project/dew.yaml` settings. Configure your MCP
client to launch `dew mcp serve`; the server communicates over stdio.
## Running the server

View file

@ -38,6 +38,6 @@ ArgParser definition
`DewConfig` in `core` is a thin wrapper around the raw YAML map. Feature packages add typed accessors via Dart extensions:
- `dew_kanban` defines `KanbanDewConfig` — exposes `context.config.kanban`
- `dew_mcp` defines `McpDewConfig` — exposes `context.config.mcp`
- `dew_mcp` currently has no project-level config values
This keeps feature-specific config classes out of `core` while leaving all call sites unchanged.
This keeps feature-specific config classes out of `core`.

View file

@ -1,5 +1,10 @@
# Changelog
## 0.2.0 — 2026-05-02
- Added the `dew` executable mapping for pub activation.
- Bumped Dew package dependency constraints to `^0.2.0`.
## 0.1.0 — 2026-04-25
Initial release.

View file

@ -1,18 +1,21 @@
name: dew
description: Command-line interface for the Dew project management tool.
version: 0.1.0
version: 0.2.0
repository: https://github.com/artificerchris/dew
issue_tracker: https://github.com/artificerchris/dew/issues
resolution: workspace
executables:
dew: dew
environment:
sdk: ^3.11.4
dependencies:
args: ^2.7.0
dew_core: ^0.1.0
dew_kanban: ^0.1.0
dew_mcp: ^0.1.0
dew_core: ^0.2.0
dew_kanban: ^0.2.0
dew_mcp: ^0.2.0
dev_dependencies:
lints: ^6.0.0

View file

@ -1,5 +1,10 @@
# Changelog
## 0.2.0 — 2026-05-02
- Removed stale MCP config references from core config documentation.
- Updated `dew init` defaults to generate only supported project config.
## 0.1.0 — 2026-04-25
Initial release.

View file

@ -6,7 +6,7 @@ import 'package:yaml/yaml.dart';
/// Thin wrapper around the raw project YAML.
///
/// Feature packages extend this class via Dart extension methods to expose
/// typed configuration (e.g. [KanbanDewConfig.kanban], [McpDewConfig.mcp]).
/// typed configuration (e.g. [KanbanDewConfig.kanban]).
/// This keeps feature-specific config classes out of core.
class DewConfig {
final YamlMap raw;

View file

@ -31,10 +31,6 @@ abstract interface class DewInitHook {
const _defaultDewYaml = '''
dew:
mcp:
host: "localhost"
port: 8080
kanban:
prefix: "PROJ"
ticket_types:

View file

@ -1,6 +1,6 @@
name: dew_core
description: Core shared types, interfaces, and configuration for the Dew project management tool.
version: 0.1.0
version: 0.2.0
repository: https://github.com/artificerchris/dew
issue_tracker: https://github.com/artificerchris/dew/issues
resolution: workspace

View file

@ -1,3 +1,4 @@
import 'package:args/command_runner.dart';
import 'package:dew_core/dew_core.dart';
import 'package:file/memory.dart';
import 'package:test/test.dart';
@ -37,9 +38,6 @@ void main() {
group('ProjectContext', () {
const configYaml = '''
dew:
mcp:
host: localhost
port: 9090
kanban:
prefix: TEST
ticket_types:
@ -59,8 +57,7 @@ dew:
final ctx = await ProjectContext.find(fs: fs);
final dew = ctx.config.raw['dew'];
expect(dew['kanban']['prefix'], 'TEST');
expect(dew['mcp']['host'], 'localhost');
expect(dew['mcp']['port'], 9090);
expect(dew.containsKey('mcp'), isFalse);
});
test('find() locates config from a subdirectory', () async {
@ -73,4 +70,21 @@ dew:
expect(ctx.root, '/');
});
});
group('InitCommand', () {
test('generates dew.yaml without MCP host or port config', () async {
final fs = MemoryFileSystem();
final runner = CommandRunner<void>('dew', 'test');
runner.addCommand(InitCommand(const [], fs: fs));
await runner.run(['init', '--path', '/project']);
final config = fs.file('/project/.project/dew.yaml').readAsStringSync();
expect(config, contains('dew:'));
expect(config, contains('kanban:'));
expect(config, isNot(contains('mcp:')));
expect(config, isNot(contains('host:')));
expect(config, isNot(contains('port:')));
});
});
}

View file

@ -1,5 +1,11 @@
# Changelog
## 0.2.0 — 2026-05-02
- Updated tests and fixtures for the generated config without unsupported MCP
`host` and `port` fields.
- Bumped the `dew_core` dependency constraint to `^0.2.0`.
## 0.1.0 — 2026-04-25
Initial release.

View file

@ -1,6 +1,6 @@
name: dew_kanban
description: Kanban board feature for the Dew project management tool. Implements McpToolProvider to expose board tools to the MCP server.
version: 0.1.0
version: 0.2.0
repository: https://github.com/artificerchris/dew
issue_tracker: https://github.com/artificerchris/dew/issues
resolution: workspace
@ -10,7 +10,7 @@ environment:
# Add regular dependencies here.
dependencies:
dew_core: ^0.1.0
dew_core: ^0.2.0
dart_console: ^4.1.2
file: ^7.0.1
path: ^1.9.0

View file

@ -5,9 +5,6 @@ import 'package:test/test.dart';
const _testConfig = '''
dew:
mcp:
host: localhost
port: 9090
kanban:
prefix: T
ticket_types:
@ -165,9 +162,6 @@ void main() {
fs.directory('/.project/kanban').createSync(recursive: true);
fs.file('/.project/dew.yaml').writeAsStringSync('''
dew:
mcp:
host: localhost
port: 9090
kanban:
prefix: T
ticket_types:

View file

@ -4,9 +4,6 @@ import 'package:test/test.dart';
const _testConfig = '''
dew:
mcp:
host: localhost
port: 9090
kanban:
prefix: T
ticket_types:

View file

@ -1,5 +1,11 @@
# Changelog
## 0.2.0 — 2026-05-02
- Removed unsupported project-level MCP `host` and `port` config handling.
- Clarified that `dew mcp serve` is configured by the MCP client over stdio.
- Bumped Dew package dependency constraints to `^0.2.0`.
## 0.1.0 — 2026-04-25
Initial release.

View file

@ -1,19 +1,11 @@
import 'package:dew_core/dew_core.dart';
import 'package:yaml/yaml.dart';
class McpConfig {
final String host;
final int port;
const McpConfig({required this.host, required this.port});
McpConfig();
}
extension McpDewConfig on DewConfig {
McpConfig get mcp {
final mcpYaml = (raw['dew'] as YamlMap)['mcp'] as YamlMap;
return McpConfig(
host: mcpYaml['host'] as String,
port: mcpYaml['port'] as int,
);
return McpConfig();
}
}

View file

@ -1,6 +1,6 @@
name: dew_mcp
description: MCP server for the Dew project management tool. Collects and serves tools registered by feature packages via the McpToolProvider interface.
version: 0.1.0
version: 0.2.0
repository: https://github.com/artificerchris/dew
issue_tracker: https://github.com/artificerchris/dew/issues
resolution: workspace
@ -10,11 +10,11 @@ environment:
# Add regular dependencies here.
dependencies:
dew_core: ^0.1.0
dew_core: ^0.2.0
dart_mcp: ^0.5.0
yaml: ^3.1.0
dev_dependencies:
lints: ^6.0.0
test: ^1.25.6
dew_kanban: ^0.1.0
dew_kanban: ^0.2.0

View file

@ -1,6 +1,6 @@
name: dew_workspace
description: A Dart workspace for the dew project management tool.
version: 0.1.0
version: 0.2.0
repository: https://github.com/artificerchris/dew
publish_to: none