Release v0.23.0
This commit is contained in:
parent
f2ca01ffe0
commit
69a941ad30
43
CHANGELOG.md
43
CHANGELOG.md
@ -6,6 +6,49 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||||
|
|
||||||
|
## [0.23.0] - 2026-02-23
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- `default-test-first-mini` builtin piece for test-first development workflow
|
||||||
|
- `auto_fetch` global config: opt-in remote fetch before cloning to keep clones up-to-date (`default: false`)
|
||||||
|
- `base_branch` config (global/project): specify the base branch for clone creation (defaults to remote default branch)
|
||||||
|
- `model` project config: override model at the project level (`.takt/config.yaml`)
|
||||||
|
- `concurrency` project config: set parallel task count per project for `takt run`
|
||||||
|
- `--create-worktree` support in pipeline mode for worktree-based execution
|
||||||
|
- `skipTaskList` option: interactive "Execute" action skips adding to `tasks.yaml`
|
||||||
|
- `takt list` now displays GitHub Issue numbers alongside task names
|
||||||
|
- Retry failed tasks now offers to reuse the previous piece before prompting piece selection
|
||||||
|
- Pipeline mode Slack notifications: sends run summary with task details, duration, branch, and PR URL
|
||||||
|
- CI workflow: lint, test, and e2e:mock checks run automatically on PRs (#364)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Provider/model resolution unified via `resolveProviderModelCandidates()` — single resolution function used in both `AgentRunner` and `resolveMovementProviderModel`
|
||||||
|
- Pipeline execution refactored into thin orchestrator (`execute.ts`) + step implementations (`steps.ts`)
|
||||||
|
- Clone directory default changed from `takt-worktree` (singular) to `takt-worktrees` (plural) with auto-migration of legacy directory
|
||||||
|
- PR titles now include issue number prefix (e.g., `[#6] Fix the bug`)
|
||||||
|
- Task status now reflects PR creation failure — previously only piece execution success was tracked
|
||||||
|
- `auto-tag.yml` tags PR head SHA instead of merge commit for correct hotfix code publishing
|
||||||
|
- Session reader falls back to JSONL file scanning when `sessions-index.json` is missing or invalid
|
||||||
|
- `ProjectLocalConfig` type normalized to camelCase (`auto_pr`→`autoPr`, `draft_pr`→`draftPr`) — YAML snake_case preserved
|
||||||
|
- `getLocalLayerValue` simplified from switch-case to dynamic property lookup
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- `repertoire add` pipe stdin: multiple `confirm()` calls failed when reading from piped stdin due to readline destroying buffered lines (#334)
|
||||||
|
- Movement provider override precedence in `AgentRunner`: step provider was incorrectly overridden by global config
|
||||||
|
- Project-level `model` config was silently ignored — `getLocalLayerValue` was missing the `model` case
|
||||||
|
- PR creation failure now properly propagated as task failure with error message (#345)
|
||||||
|
- Claude session resume candidates now fall back to JSONL file scanning when `sessions-index.json` is unavailable
|
||||||
|
|
||||||
|
### Internal
|
||||||
|
|
||||||
|
- CI: PR checks for lint, test, e2e:mock (`ci.yml`)
|
||||||
|
- Expanded e2e test coverage for repertoire (#364)
|
||||||
|
- New test suites: clone, config, postExecution, session-reader, selectAndExecute-skipTaskList, taskStatusLabel, pipelineExecution
|
||||||
|
- Refactored: project config case normalization (#358), clone manager (#359), pipeline steps extraction, confirm pipe reader singleton, provider resolution (#362)
|
||||||
|
|
||||||
## [0.22.0] - 2026-02-22
|
## [0.22.0] - 2026-02-22
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@ -128,6 +128,7 @@ Rules determine the next movement. `COMPLETE` ends the piece successfully, `ABOR
|
|||||||
| Piece | Use Case |
|
| Piece | Use Case |
|
||||||
|-------|----------|
|
|-------|----------|
|
||||||
| `default-mini` | Quick fixes. Lightweight plan → implement → parallel review → fix loop. |
|
| `default-mini` | Quick fixes. Lightweight plan → implement → parallel review → fix loop. |
|
||||||
|
| `default-test-first-mini` | Test-first development. Write tests first, then implement to pass them. |
|
||||||
| `frontend-mini` | Frontend-focused mini configuration. |
|
| `frontend-mini` | Frontend-focused mini configuration. |
|
||||||
| `backend-mini` | Backend-focused mini configuration. |
|
| `backend-mini` | Backend-focused mini configuration. |
|
||||||
| `expert-mini` | Expert-level mini configuration. |
|
| `expert-mini` | Expert-level mini configuration. |
|
||||||
|
|||||||
@ -6,6 +6,49 @@
|
|||||||
|
|
||||||
フォーマットは [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) に基づいています。
|
フォーマットは [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) に基づいています。
|
||||||
|
|
||||||
|
## [0.23.0] - 2026-02-23
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- `default-test-first-mini` ビルトインピースを追加(テストファースト開発ワークフロー)
|
||||||
|
- `auto_fetch` グローバル設定: クローン作成前にリモートを fetch してクローンを最新に保つオプション(`default: false`)
|
||||||
|
- `base_branch` 設定(グローバル/プロジェクト): クローン作成のベースブランチを指定(デフォルトはリモートのデフォルトブランチ)
|
||||||
|
- `model` プロジェクト設定: プロジェクトレベルでモデルを上書き(`.takt/config.yaml`)
|
||||||
|
- `concurrency` プロジェクト設定: プロジェクトごとに `takt run` の並列タスク数を設定
|
||||||
|
- パイプラインモードで `--create-worktree` をサポート(worktree ベースの実行)
|
||||||
|
- `skipTaskList` オプション: 対話モードの「実行する」アクションで `tasks.yaml` への追加をスキップ
|
||||||
|
- `takt list` でタスク名の横に GitHub Issue 番号を表示
|
||||||
|
- 失敗タスクのリトライ時、ピース選択の前に前回使用したピースの再利用を提案
|
||||||
|
- パイプラインモードの Slack 通知: タスク詳細、実行時間、ブランチ、PR URL を含むサマリを送信
|
||||||
|
- CI ワークフロー: PR に対して lint、test、e2e:mock チェックを自動実行 (#364)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Provider/Model 解決を `resolveProviderModelCandidates()` に一元化 — `AgentRunner` と `resolveMovementProviderModel` で同一の解決関数を使用
|
||||||
|
- パイプライン実行を薄いオーケストレーター (`execute.ts`) + ステップ実装 (`steps.ts`) にリファクタリング
|
||||||
|
- クローンディレクトリのデフォルト名を `takt-worktree`(単数)から `takt-worktrees`(複数)に変更(レガシーディレクトリの自動マイグレーション付き)
|
||||||
|
- PR タイトルに Issue 番号プレフィックスを追加(例: `[#6] Fix the bug`)
|
||||||
|
- タスクステータスが PR 作成失敗を反映するよう改善 — 以前はピース実行の成功のみを追跡
|
||||||
|
- `auto-tag.yml` がマージコミットではなく PR head SHA にタグを付与(ホットフィックスの正しいコード publish のため)
|
||||||
|
- セッションリーダーが `sessions-index.json` が欠損・不正な場合に JSONL ファイルスキャンにフォールバック
|
||||||
|
- `ProjectLocalConfig` 型をキャメルケースに正規化(`auto_pr`→`autoPr`、`draft_pr`→`draftPr`)— YAML のスネークケースは維持
|
||||||
|
- `getLocalLayerValue` を switch-case から動的プロパティルックアップに簡素化
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- `repertoire add` のパイプ stdin: readline がバッファ済み行を破棄するため複数の `confirm()` 呼び出しが失敗する問題を修正 (#334)
|
||||||
|
- `AgentRunner` での movement provider 上書き優先順位: step provider がグローバル設定に誤って上書きされていた問題を修正
|
||||||
|
- プロジェクトレベルの `model` 設定が無視されていた問題 — `getLocalLayerValue` に `model` ケースが欠落していた
|
||||||
|
- PR 作成失敗がタスク失敗として適切に伝搬されるよう修正(エラーメッセージ付き)(#345)
|
||||||
|
- Claude セッション resume 候補が `sessions-index.json` 利用不可時に JSONL ファイルスキャンにフォールバック
|
||||||
|
|
||||||
|
### Internal
|
||||||
|
|
||||||
|
- CI: PR チェック用に lint、test、e2e:mock を追加(`ci.yml`)
|
||||||
|
- repertoire の e2e テストカバレッジを拡充 (#364)
|
||||||
|
- 新規テストスイート: clone、config、postExecution、session-reader、selectAndExecute-skipTaskList、taskStatusLabel、pipelineExecution
|
||||||
|
- リファクタリング: プロジェクト設定のケース正規化 (#358)、クローンマネージャー (#359)、パイプラインステップ抽出、confirm パイプリーダーシングルトン、provider 解決 (#362)
|
||||||
|
|
||||||
## [0.22.0] - 2026-02-22
|
## [0.22.0] - 2026-02-22
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@ -140,6 +140,7 @@ movements:
|
|||||||
| Piece | 用途 |
|
| Piece | 用途 |
|
||||||
|-------|------|
|
|-------|------|
|
||||||
| `default-mini` | ちょっとした修正向けです。計画 → 実装 → 並列レビュー → 修正の軽量構成です。 |
|
| `default-mini` | ちょっとした修正向けです。計画 → 実装 → 並列レビュー → 修正の軽量構成です。 |
|
||||||
|
| `default-test-first-mini` | テストファースト開発向けです。テストを先に書き、それを通す実装を行います。 |
|
||||||
| `frontend-mini` | フロントエンド向けの mini 構成です。 |
|
| `frontend-mini` | フロントエンド向けの mini 構成です。 |
|
||||||
| `backend-mini` | バックエンド向けの mini 構成です。 |
|
| `backend-mini` | バックエンド向けの mini 構成です。 |
|
||||||
| `expert-mini` | エキスパート向けの mini 構成です。 |
|
| `expert-mini` | エキスパート向けの mini 構成です。 |
|
||||||
|
|||||||
@ -27,6 +27,8 @@ notification_sound_events: # イベントごとの通知音切り替え(省
|
|||||||
concurrency: 1 # takt run の並列タスク数(1-10、デフォルト: 1 = 逐次実行)
|
concurrency: 1 # takt run の並列タスク数(1-10、デフォルト: 1 = 逐次実行)
|
||||||
task_poll_interval_ms: 500 # takt run での新規タスクポーリング間隔(100-5000、デフォルト: 500)
|
task_poll_interval_ms: 500 # takt run での新規タスクポーリング間隔(100-5000、デフォルト: 500)
|
||||||
interactive_preview_movements: 3 # インタラクティブモードでの movement プレビュー数(0-10、デフォルト: 3)
|
interactive_preview_movements: 3 # インタラクティブモードでの movement プレビュー数(0-10、デフォルト: 3)
|
||||||
|
# auto_fetch: false # クローン作成前にリモートを fetch(デフォルト: false)
|
||||||
|
# base_branch: main # クローン作成のベースブランチ(デフォルト: リモートのデフォルトブランチ)
|
||||||
|
|
||||||
# ランタイム環境デフォルト(piece_config.runtime で上書きしない限りすべての piece に適用)
|
# ランタイム環境デフォルト(piece_config.runtime で上書きしない限りすべての piece に適用)
|
||||||
# runtime:
|
# runtime:
|
||||||
@ -111,6 +113,8 @@ interactive_preview_movements: 3 # インタラクティブモードでの move
|
|||||||
| `disabled_builtins` | string[] | `[]` | 無効化する特定のビルトイン piece |
|
| `disabled_builtins` | string[] | `[]` | 無効化する特定のビルトイン piece |
|
||||||
| `pipeline` | object | - | pipeline テンプレート設定 |
|
| `pipeline` | object | - | pipeline テンプレート設定 |
|
||||||
| `bookmarks_file` | string | - | ブックマークファイルのパス |
|
| `bookmarks_file` | string | - | ブックマークファイルのパス |
|
||||||
|
| `auto_fetch` | boolean | `false` | クローン作成前にリモートを fetch してクローンを最新に保つ |
|
||||||
|
| `base_branch` | string | - | クローン作成のベースブランチ(デフォルトはリモートのデフォルトブランチ) |
|
||||||
| `piece_categories_file` | string | - | piece カテゴリファイルのパス |
|
| `piece_categories_file` | string | - | piece カテゴリファイルのパス |
|
||||||
|
|
||||||
## プロジェクト設定
|
## プロジェクト設定
|
||||||
@ -121,9 +125,11 @@ interactive_preview_movements: 3 # インタラクティブモードでの move
|
|||||||
# .takt/config.yaml
|
# .takt/config.yaml
|
||||||
piece: default # このプロジェクトの現在の piece
|
piece: default # このプロジェクトの現在の piece
|
||||||
provider: claude # このプロジェクトの provider 上書き
|
provider: claude # このプロジェクトの provider 上書き
|
||||||
|
model: sonnet # このプロジェクトのモデル上書き
|
||||||
auto_pr: true # worktree 実行後に PR を自動作成
|
auto_pr: true # worktree 実行後に PR を自動作成
|
||||||
verbose: false # 詳細出力モード
|
verbose: false # 詳細出力モード
|
||||||
concurrency: 2 # このプロジェクトでの takt run 並列タスク数(1-10)
|
concurrency: 2 # このプロジェクトでの takt run 並列タスク数(1-10)
|
||||||
|
# base_branch: main # クローン作成のベースブランチ(グローバルを上書き、デフォルト: リモートのデフォルトブランチ)
|
||||||
|
|
||||||
# provider 固有オプション(グローバルを上書き、piece/movement で上書き可能)
|
# provider 固有オプション(グローバルを上書き、piece/movement で上書き可能)
|
||||||
# provider_options:
|
# provider_options:
|
||||||
@ -144,9 +150,11 @@ concurrency: 2 # このプロジェクトでの takt run 並列
|
|||||||
|-----------|------|---------|------|
|
|-----------|------|---------|------|
|
||||||
| `piece` | string | `"default"` | このプロジェクトの現在の piece 名 |
|
| `piece` | string | `"default"` | このプロジェクトの現在の piece 名 |
|
||||||
| `provider` | `"claude"` \| `"codex"` \| `"opencode"` \| `"mock"` | - | provider 上書き |
|
| `provider` | `"claude"` \| `"codex"` \| `"opencode"` \| `"mock"` | - | provider 上書き |
|
||||||
|
| `model` | string | - | モデル名の上書き(provider にそのまま渡される) |
|
||||||
| `auto_pr` | boolean | - | worktree 実行後に PR を自動作成 |
|
| `auto_pr` | boolean | - | worktree 実行後に PR を自動作成 |
|
||||||
| `verbose` | boolean | - | 詳細出力モード |
|
| `verbose` | boolean | - | 詳細出力モード |
|
||||||
| `concurrency` | number (1-10) | `1`(global 設定由来) | `takt run` の並列タスク数 |
|
| `concurrency` | number (1-10) | `1`(global 設定由来) | `takt run` の並列タスク数 |
|
||||||
|
| `base_branch` | string | - | クローン作成のベースブランチ(グローバルを上書き、デフォルト: リモートのデフォルトブランチ) |
|
||||||
| `provider_options` | object | - | provider 固有オプション |
|
| `provider_options` | object | - | provider 固有オプション |
|
||||||
| `provider_profiles` | object | - | provider 固有のパーミッションプロファイル |
|
| `provider_profiles` | object | - | provider 固有のパーミッションプロファイル |
|
||||||
|
|
||||||
|
|||||||
@ -27,6 +27,8 @@ notification_sound_events: # Optional per-event toggles
|
|||||||
concurrency: 1 # Parallel task count for takt run (1-10, default: 1 = sequential)
|
concurrency: 1 # Parallel task count for takt run (1-10, default: 1 = sequential)
|
||||||
task_poll_interval_ms: 500 # Polling interval for new tasks during takt run (100-5000, default: 500)
|
task_poll_interval_ms: 500 # Polling interval for new tasks during takt run (100-5000, default: 500)
|
||||||
interactive_preview_movements: 3 # Movement previews in interactive mode (0-10, default: 3)
|
interactive_preview_movements: 3 # Movement previews in interactive mode (0-10, default: 3)
|
||||||
|
# auto_fetch: false # Fetch remote before cloning (default: false)
|
||||||
|
# base_branch: main # Base branch for clone creation (default: remote default branch)
|
||||||
|
|
||||||
# Runtime environment defaults (applies to all pieces unless piece_config.runtime overrides)
|
# Runtime environment defaults (applies to all pieces unless piece_config.runtime overrides)
|
||||||
# runtime:
|
# runtime:
|
||||||
@ -111,6 +113,8 @@ interactive_preview_movements: 3 # Movement previews in interactive mode (0-10,
|
|||||||
| `disabled_builtins` | string[] | `[]` | Specific builtin pieces to disable |
|
| `disabled_builtins` | string[] | `[]` | Specific builtin pieces to disable |
|
||||||
| `pipeline` | object | - | Pipeline template settings |
|
| `pipeline` | object | - | Pipeline template settings |
|
||||||
| `bookmarks_file` | string | - | Path to bookmarks file |
|
| `bookmarks_file` | string | - | Path to bookmarks file |
|
||||||
|
| `auto_fetch` | boolean | `false` | Fetch remote before cloning to keep clones up-to-date |
|
||||||
|
| `base_branch` | string | - | Base branch for clone creation (defaults to remote default branch) |
|
||||||
| `piece_categories_file` | string | - | Path to piece categories file |
|
| `piece_categories_file` | string | - | Path to piece categories file |
|
||||||
|
|
||||||
## Project Configuration
|
## Project Configuration
|
||||||
@ -121,9 +125,11 @@ Configure project-specific settings in `.takt/config.yaml`. This file is created
|
|||||||
# .takt/config.yaml
|
# .takt/config.yaml
|
||||||
piece: default # Current piece for this project
|
piece: default # Current piece for this project
|
||||||
provider: claude # Override provider for this project
|
provider: claude # Override provider for this project
|
||||||
|
model: sonnet # Override model for this project
|
||||||
auto_pr: true # Auto-create PR after worktree execution
|
auto_pr: true # Auto-create PR after worktree execution
|
||||||
verbose: false # Verbose output mode
|
verbose: false # Verbose output mode
|
||||||
concurrency: 2 # Parallel task count for takt run in this project (1-10)
|
concurrency: 2 # Parallel task count for takt run in this project (1-10)
|
||||||
|
# base_branch: main # Base branch for clone creation (overrides global, default: remote default branch)
|
||||||
|
|
||||||
# Provider-specific options (overrides global, overridden by piece/movement)
|
# Provider-specific options (overrides global, overridden by piece/movement)
|
||||||
# provider_options:
|
# provider_options:
|
||||||
@ -144,9 +150,11 @@ concurrency: 2 # Parallel task count for takt run in this project
|
|||||||
|-------|------|---------|-------------|
|
|-------|------|---------|-------------|
|
||||||
| `piece` | string | `"default"` | Current piece name for this project |
|
| `piece` | string | `"default"` | Current piece name for this project |
|
||||||
| `provider` | `"claude"` \| `"codex"` \| `"opencode"` \| `"mock"` | - | Override provider |
|
| `provider` | `"claude"` \| `"codex"` \| `"opencode"` \| `"mock"` | - | Override provider |
|
||||||
|
| `model` | string | - | Override model name (passed to provider as-is) |
|
||||||
| `auto_pr` | boolean | - | Auto-create PR after worktree execution |
|
| `auto_pr` | boolean | - | Auto-create PR after worktree execution |
|
||||||
| `verbose` | boolean | - | Verbose output mode |
|
| `verbose` | boolean | - | Verbose output mode |
|
||||||
| `concurrency` | number (1-10) | `1` (from global) | Parallel task count for `takt run` |
|
| `concurrency` | number (1-10) | `1` (from global) | Parallel task count for `takt run` |
|
||||||
|
| `base_branch` | string | - | Base branch for clone creation (overrides global, default: remote default branch) |
|
||||||
| `provider_options` | object | - | Provider-specific options |
|
| `provider_options` | object | - | Provider-specific options |
|
||||||
| `provider_profiles` | object | - | Provider-specific permission profiles |
|
| `provider_profiles` | object | - | Provider-specific permission profiles |
|
||||||
|
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "takt",
|
"name": "takt",
|
||||||
"version": "0.22.0",
|
"version": "0.23.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "takt",
|
"name": "takt",
|
||||||
"version": "0.22.0",
|
"version": "0.23.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@anthropic-ai/claude-agent-sdk": "^0.2.47",
|
"@anthropic-ai/claude-agent-sdk": "^0.2.47",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "takt",
|
"name": "takt",
|
||||||
"version": "0.22.0",
|
"version": "0.23.0",
|
||||||
"description": "TAKT: TAKT Agent Koordination Topology - AI Agent Piece Orchestration",
|
"description": "TAKT: TAKT Agent Koordination Topology - AI Agent Piece Orchestration",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user