takt/CHANGELOG.md
2026-02-24 23:17:06 +09:00

65 KiB
Raw Blame History

Changelog

日本語

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

[0.24.0] - 2026-02-24

Added

  • AskUserQuestion support: AI agents can now ask interactive questions during execution with single-select, multi-select, and free-text input via TTY UI; automatically denied during piece execution to maintain agent autonomy (#161, #369)
  • review builtin piece with 3-mode auto-detection: automatically selects PR mode (by PR number), branch mode (by branch name), or working diff mode (by free text) for multi-perspective parallel review
  • testing-reviewer and requirements-reviewer builtin personas for specialized review perspectives
  • testing policy: integration test requirement criteria (3+ module data flow, state merging into workflows, option propagation through call chains)
  • gather-review instruction and review-gather output contract for the new review piece gather movement
  • requirements-review instruction and output contract for requirements-focused review
  • testing-review output contract for testing-focused review
  • settingSources: ['project'] in SDK options: delegates CLAUDE.md loading to the Claude SDK for proper project-level settings resolution

Changed

  • BREAKING: review-only piece renamed to review; review-fix-minimal piece removed — users referencing these piece names must update to review
  • write-tests-first instruction now includes integration test decision criteria instead of a generic "Write E2E tests if appropriate"

Fixed

  • Planner persona: added bug fix propagation check rule (grep for same pattern in related files) and prohibited deferring decidable questions to Open Questions

Internal

  • Docs: fixed music metaphor origin description, catalog gaps, broken links, orphaned documents, event names, API Key references, eject descriptions, removed stale personas section map from YAML example, aligned legacy terminology with current codebase
  • New test suites: StreamDisplay, ask-user-question-handler, pieceExecution-ask-user-question, review-piece, opencode-client-cleanup
  • Removed legacy review-only-piece test and loadProjectContext from session module (CLAUDE.md loading now delegated to SDK)

[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_prautoPr, draft_prdraftPr) — 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

Added

  • Repertoire package system (takt repertoire add/remove/list): Import and manage external TAKT packages from GitHub — takt repertoire add github:{owner}/{repo}@{ref} downloads packages to ~/.takt/repertoire/ with atomic installation, version compatibility checks, lock files, and package content summary before confirmation
  • @scope references in piece YAML: Facet references now support @{owner}/{repo}/{facet-name} syntax to reference facets from installed repertoire packages (e.g., persona: @nrslib/takt-fullstack/expert-coder)
  • 4-layer facet resolution: Upgraded from 3-layer (project → user → builtin) to 4-layer (package-local → project → user → builtin) — repertoire package pieces automatically resolve their own facets first
  • Repertoire category in piece selection: Installed repertoire packages automatically appear as subcategories under a "repertoire" category in the piece selection UI
  • Build gate in implement/fix instructions: implement and fix builtin instructions now require build (type check) verification before test execution
  • Repertoire package documentation: Added comprehensive docs for the repertoire package system (en, ja)

Changed

  • BREAKING: Facets directory restructured: Facet directories moved under a facets/ subdirectory at all levels — builtins/{lang}/{facetType}/builtins/{lang}/facets/{facetType}/, ~/.takt/{facetType}/~/.takt/facets/{facetType}/, .takt/{facetType}/.takt/facets/{facetType}/. Migration: move your custom facet files into the new facets/ subdirectory
  • Contract string hardcoding prevention rule added to coding policy and architecture review instruction

Fixed

  • Override piece validation now includes repertoire scope via the resolver
  • takt export-cc now reads facets from the new builtins/{lang}/facets/ directory structure
  • confirm() prompt now supports piped stdin (e.g., echo "y" | takt repertoire add ...)
  • Suppressed poll_tick debug log flooding during iteration input wait
  • Piece resolver stat() calls now catch errors gracefully instead of crashing on inaccessible entries

Internal

  • Comprehensive repertoire test suite: atomic-update, repertoire-paths, file-filter, github-ref-resolver, github-spec, list, lock-file, pack-summary, package-facet-resolution, remove-reference-check, remove, takt-repertoire-config, tar-parser, takt-repertoire-schema
  • Added src/faceted-prompting/scope.ts for @scope reference parsing, validation, and resolution
  • Added scope-ref tests for the faceted-prompting module
  • Added inputWait.ts for shared input-wait state to suppress worker pool log noise
  • Added piece-selection-branches and repertoire e2e tests

[0.21.0] - 2026-02-20

Added

  • Slack task notification enhancements: Extended Slack webhook notifications with richer task context and formatting (#316)
  • takt list --delete-all option: Delete all tasks at once from the task list (#322)
  • --draft-pr option: Create pull requests as drafts via --draft-pr flag (#323)
  • --sync-with-root option: Sync worktree branch with root repository changes (#325)
  • Model per persona-provider: Allow specifying model overrides at the persona-provider level (#324)
  • Analytics project config and env override: Analytics settings can now be configured per-project and overridden via environment variables
  • CI dependency health check: Periodic CI check to detect broken dependency packages

Changed

  • Config system overhaul: Replaced loadConfig() bulk merge with per-key resolveConfigValue() resolution — global < piece < project < env priority with source tracking and OptionsBuilder merge direction control (#324)

Fixed

  • Retry command scope and messaging: Fixed retry command to show correct available range and guidance text
  • Retry task completed_at leak: Clear completed_at when moving a failed task back to running via startReExecution, preventing Zod validation errors
  • OpenCode multi-turn hang: Removed streamAbortController.signal from OpenCode server startup so subsequent turns no longer hang; restored sessionId carry-over for multi-turn conversations
  • Romaji conversion stack overflow: Prevented stack overflow on long task names during romaji conversion

[0.20.1] - 2026-02-20

Fixed

  • Pin @opencode-ai/sdk to <1.2.7 to fix broken v2 exports that caused Cannot find module errors on npm install -g takt (#329)

[0.20.0] - 2026-02-19

Added

  • Faceted Prompting module (src/faceted-prompting/): Standalone library for facet composition, resolution, template rendering, and truncation — zero dependencies on TAKT internals. Includes DataEngine interface with FileDataEngine and CompositeDataEngine implementations for pluggable facet storage
  • Analytics module (src/features/analytics/): Local-only review quality metrics collection — event types (review findings, fix actions, movement results), JSONL writer with date-based rotation, report parser, and metrics computation
  • takt metrics review command: Display review quality metrics (re-report counts, round-trip ratio, resolution iterations, REJECT counts by rule, rebuttal resolution ratio) with configurable time window (--since)
  • takt purge command: Purge old analytics event files with configurable retention period (--retention-days)
  • takt reset config command: Reset global config to builtin template with automatic backup of the existing config
  • PR duplicate prevention: When a PR already exists for the current branch, push and comment on the existing PR instead of creating a duplicate (#304)
  • Retry mode now positions the cursor on the failed movement when selecting which movement to retry
  • E2E tests for run-recovery and config-priority scenarios

Changed

  • README overhaul: Compressed from ~950 lines to ~270 lines — details split into dedicated docs (docs/configuration.md, docs/cli-reference.md, docs/task-management.md, docs/ci-cd.md, docs/builtin-catalog.md) with Japanese equivalents. Redefined product concept around 4 value axes: batteries included, practical, reproducible, multi-agent
  • Config system refactored: Unified configuration resolution to resolveConfigValue() and loadConfig(), eliminating scattered config access patterns across the codebase
  • takt config command removed: Replaced by takt reset config for resetting to defaults
  • Builtin config templates refreshed with updated comments and structure
  • @anthropic-ai/claude-agent-sdk updated to v0.2.47
  • Instruct mode prompt improvements for task re-instruction

Fixed

  • Fixed issue where builtin piece file references used absolute path instead of relative (#304)
  • Removed unused imports and variables across multiple files

Internal

  • Unified loadConfig, resolveConfigValue, piece config resolution, and config priority paths
  • Added E2E tests for config priority and run recovery scenarios
  • Added postExecution.test.ts for PR creation flow testing
  • Cleaned up unused imports and variables

[0.19.0] - 2026-02-18

Added

  • Dedicated retry mode for failed tasks — conversation loop with failure context (error details, failed movement, last message), run session data, and piece structure injected into the system prompt
  • Dedicated instruct system prompt for completed/failed task re-instruction — injects task name, content, branch changes, and retry notes directly into the prompt instead of using the generic interactive prompt
  • Direct re-execution from takt list — "execute" action now runs the task immediately in the existing worktree instead of only requeuing to pending
  • startReExecution atomic task transition — moves a completed/failed task directly to running status, avoiding the requeue → claim race condition
  • Worktree reuse in task execution — reuses existing clone directory when it's still on disk, skipping branch name generation and clone creation
  • Task history injection into interactive and summary system prompts — completed/failed/interrupted task summaries are included for context
  • Previous run reference support in interactive and instruct system prompts — users can reference logs and reports from prior runs
  • findRunForTask and getRunPaths helpers for automatic run session lookup by task content
  • isStaleRunningTask process helper extracted from TaskLifecycleService for reuse

Changed

  • Interactive module split: interactive.ts refactored into interactive-summary.ts, runSelector.ts, runSessionReader.ts, and selectorUtils.ts for better cohesion
  • requeueTask now accepts generic allowedStatuses parameter instead of only accepting failed tasks
  • Instruct/retry actions in takt list use the worktree path for conversation and run data lookup instead of the project root
  • save_task action now requeues the task (saves for later execution), while execute action runs immediately

Internal

  • Removed DebugConfig from models, schemas, and global config — simplified to verbose mode only
  • Added stdin simulation test helpers (stdinSimulator.ts) for E2E conversation loop testing
  • Added comprehensive E2E tests for retry mode, interactive routes, and run session injection
  • Added check:release npm script for pre-release validation

[0.18.2] - 2026-02-18

Added

  • Added codex_cli_path global config option and TAKT_CODEX_CLI_PATH environment variable to override the Codex CLI binary path used by the Codex SDK (#292)
    • Supports strict validation: absolute path, file existence, executable permission, no control characters
    • Priority: TAKT_CODEX_CLI_PATH env var > codex_cli_path in config.yaml > SDK vendored binary

[0.18.1] - 2026-02-18

Added

  • Added multi-tenant data isolation section and authorization-resolver consistency code examples to security knowledge
  • Added "prefer project scripts" rule to coding policy — detects direct tool invocation (e.g., npx vitest) when equivalent npm scripts exist

[0.18.0] - 2026-02-17

Added

  • deep-research builtin piece: Multi-angle research workflow with four steps — plan, deep-dive, analyze, and synthesize
  • Project-level .takt/ facets (pieces, personas, policies, knowledge, instructions, output-contracts) are now version-controllable (#286)
  • New research facets added: research policy, knowledge, comparative-analysis knowledge, dedicated persona, and instructions

Changed

  • Refactored the research piece — separated rules and knowledge embedded in the persona into policy, knowledge, and instruction files, conforming to the faceted design
  • Added knowledge/policy references to existing pieces (expert, expert-cqrs, backend, backend-cqrs, frontend)

Fixed

  • Fixed a bug where facet directories were not tracked because .takt/ path prefix was written with .takt/ prefix in the .takt/.gitignore template (dotgitignore)

Internal

  • Created knowledge facet style guide (KNOWLEDGE_STYLE_GUIDE.md)
  • Added regression tests for dotgitignore patterns

[0.17.3] - 2026-02-16

Added

  • Added API client generation consistency rules to builtin AI anti-pattern policy and frontend knowledge — detects handwritten clients mixed into projects where generation tools (e.g., Orval) exist

Fixed

  • Fixed EPERM crash when releasing task store locks — replaced file-based locking with in-memory guard

Internal

  • Unified vitest configuration for e2e tests and added forceExit option to prevent zombie workers

[0.17.2] - 2026-02-15

Added

  • expert-mini and expert-cqrs-mini pieces: Lightweight variants of Expert pieces — plan → implement → parallel review (AI anti-pattern + supervisor) → fix workflow
  • Added new pieces to "Mini" and "Expert" piece categories

Fixed

  • Fixed an error being thrown when permission mode could not be resolved — now falls back to readonly

[0.17.1] - 2026-02-15

Changed

  • Changed .takt/.gitignore template to allowlist approach — ignores all files by default and tracks only config.yaml. Prevents ignore gaps when new files are added

[0.17.0] - 2026-02-15

Added

  • Mini piece series: Added default-mini, frontend-mini, backend-mini, backend-cqrs-mini — lightweight development pieces with parallel review (AI anti-pattern + supervisor) as successors to coding/minimal
  • Added "Mini" category to piece categories
  • supervisor-validation output contract: Requirements Fulfillment Check table format that presents code evidence per requirement
  • getJudgmentReportFiles(): Phase 3 status judgment target reports can now be filtered via use_judge flag
  • Added finding_id tracking to output contracts (new/persists/resolved sections for tracking findings across iterations)

Changed

  • BREAKING: Removed coding and minimal pieces — replaced by the mini piece series. Migration: codingdefault-mini, minimaldefault-mini
  • BREAKING: Unified output contract to item formatuse_judge (boolean) and format (string) fields are now required; OutputContractLabelPath (label:path format) is removed
  • Moved runtime environment directory from .runtime to .takt/.runtime
  • Enhanced supervisor requirements verification: extracts requirements individually and verifies one-by-one against code (file:line) — "roughly complete" is no longer valid grounds for APPROVE

Fixed

  • Added retry mechanism for deleting clone/worktree directories (maxRetries: 3, retryDelay: 200) — reduces transient deletion failures caused by file locks

Internal

  • Removed review-summary output contract (consolidated into supervisor-validation)
  • Updated all builtin pieces, e2e fixtures, and tests to the new output contract format

[0.16.0] - 2026-02-15

Added

  • Provider-specific permission profiles (provider_profiles): Define default permission modes per provider and per-movement overrides in global (~/.takt/config.yaml) and project (.takt/config.yaml) config — 5-level priority resolution (project override → global override → project default → global default → required_permission_mode floor)

Changed

  • BREAKING: permission_moderequired_permission_mode: Renamed movement's permission_mode field to required_permission_mode — acts as a floor value; the actual permission mode is resolved via provider_profiles. Old permission_mode is rejected by z.never(), no backward compatibility
  • Rewrote builtin config.yaml template: reorganized comments, added provider_profiles description and examples, added OpenCode-related settings

Internal

  • Added tests for provider profile resolution (global-provider-profiles, project-provider-profiles, permission-profile-resolution, options-builder)
  • Added missing loadProjectConfig mock to parallel execution tests

[0.15.0] - 2026-02-15

Added

  • Runtime environment presets: piece_config.runtime.prepare and global config runtime.prepare allow environment preparation scripts to run automatically before piece execution — builtin presets (gradle, node) isolate dependency resolution and cache setup to the .runtime/ directory
  • Loop monitor judge instruction: loop_monitors judge config now supports instruction_template field — externalizes loop judgment instructions as an instruction facet, applied to builtin pieces (expert, expert-cqrs)

Internal

  • Added runtime environment tests (runtime-environment, globalConfig-defaults, models, provider-options-piece-parser)
  • Added provider e2e test (runtime-config-provider)

[0.14.0] - 2026-02-14

Added

  • takt list instruct mode (#267): Added instruct mode for issuing additional instructions to existing branches — refine requirements through a conversation loop before piece execution
  • takt list completed task actions (#271): Added diff view and branch operations (merge, delete) for completed tasks
  • Claude sandbox configuration: provider_options.claude.sandbox supports excluded_commands and allow_unsandboxed_commands
  • provider_options global/project config: provider_options can now be set in ~/.takt/config.yaml (global) and .takt/config.yaml (project) — acts as lowest-priority fallback for piece-level settings

Changed

  • Consolidated provider/model resolution into AgentRunner: Fixed provider resolution to prioritize project config over custom agent config. Added step-level stepModel/stepProvider overrides
  • Unified post-execution flow: Shared postExecution.ts for interactive mode and instruct mode (auto-commit, push, PR creation)
  • Added scope-narrowing prevention to instructions: plan, ai-review, and supervise instructions now require detecting missed requirements — plan mandates per-requirement "change needed/not needed" judgments with rationale, supervise prohibits blindly trusting plan reports

Fixed

  • Fixed a bug where interactive mode options were displayed during async execution (#266)
  • Fixed OpenCode session ID not being carried over during parallel execution — server singleton prevents race conditions in parallel runs
  • Extended OpenCode SDK server startup timeout from 30 seconds to 60 seconds

Internal

  • Large-scale task management refactor: split TaskRunner responsibilities into TaskLifecycleService, TaskDeletionService, and TaskQueryService
  • Split taskActions.ts by feature: taskBranchLifecycleActions.ts, taskDiffActions.ts, taskInstructionActions.ts, taskDeleteActions.ts
  • Added postExecution.ts, taskResultHandler.ts, instructMode.ts, taskActionTarget.ts
  • Consolidated piece selection logic into pieceSelection/index.ts (extracted from selectAndExecute.ts)
  • Added/expanded tests: instructMode, listNonInteractive-completedActions, listTasksInteractiveStatusActions, option-resolution-order, taskInstructionActions, selectAndExecute-autoPr, etc.
  • Added Claude Code sandbox option (dangerouslyDisableSandbox) to E2E tests
  • Added OPENCODE_CONFIG_CONTENT to .gitignore

[0.13.0] - 2026-02-13

Added

  • Team Leader movement: New movement type where a team leader agent dynamically decomposes a task into sub-tasks (Parts) and executes multiple part agents in parallel — supports team_leader config (persona, maxParts, timeoutMs, partPersona, partEdit, partPermissionMode) (#244)
  • Structured Output: Introduced JSON Schema-based structured output for agent calls — three schemas for task decomposition, rule evaluation, and status judgment added to builtins/schemas/. Supported by both Claude and Codex providers (#257)
  • provider_options piece-level config: Provider-specific options (codex.network_access, opencode.network_access) can now be set at piece level (piece_config.provider_options) and individual movements — Codex/OpenCode network access enabled in all builtin pieces
  • backend builtin piece: New backend development piece — parallel specialist review by backend, security, and QA reviewers
  • backend-cqrs builtin piece: New CQRS+ES backend development piece — parallel specialist review by CQRS+ES, security, and QA reviewers
  • AbortSignal for part timeouts: Added timeout control and parent signal propagation via AbortSignal for Team Leader part execution
  • Agent usecase layer: agent-usecases.ts consolidates agent call usecases (decomposeTask, executeAgent, evaluateRules) and centralizes structured output injection

Changed

  • BREAKING: Public API cleanup: Significantly narrowed the public API in src/index.ts — internal implementation details (session management, Claude/Codex client internals, utility functions, etc.) are no longer exported, reducing the API surface to a stable minimum (#257)
  • Revamped Phase 3 judgment logic: Removed JudgmentDetector/FallbackStrategy and consolidated into status-judgment-phase.ts with structured output-based judgment. Improves stability and maintainability (#257)
  • Report phase retry improvement: Report Phase (Phase 2) now automatically retries with a new session when it fails (#245)
  • Unified Ctrl+C shutdown: Removed sigintHandler.ts and consolidated into ShutdownManager — graceful shutdown → timeout → force-kill in three stages, unified across all providers (#237)
  • Scope-deletion guardrails: Added rules to coder persona prohibiting deletions and structural changes outside the task instruction scope. Added scope discipline and reference material priority rules to planner persona
  • Added design token and theme scope guidance to frontend knowledge
  • Improved architecture knowledge (both en/ja)

Fixed

  • Fixed checkout failure for existing branches during clone — now passes --branch to git clone --shared then removes the remote
  • Removed # from issue-referenced branch names (takt/#N/slugtakt/N/slug)
  • Resolved deprecated tool dependency in OpenCode report phase; migrated to permission-based control (#246)
  • Removed unnecessary exports to ensure public API consistency

Internal

  • Added Team Leader tests (engine-team-leader, team-leader-schema-loader, task-decomposer)
  • Added structured output tests (parseStructuredOutput, claude-executor-structured-output, codex-structured-output, provider-structured-output, structured-output E2E)
  • Added unit tests for ShutdownManager
  • Added unit tests for AbortSignal (abort-signal, claude-executor-abort-signal, claude-provider-abort-signal)
  • Added unit tests for Report Phase retry (report-phase-retry)
  • Added unit tests for public API exports (public-api-exports)
  • Added tests for provider_options (provider-options-piece-parser, models, opencode-types)
  • Significantly expanded E2E tests: cycle-detection, model-override, multi-step-sequential, pipeline-local-repo, report-file-output, run-sigint-graceful, session-log, structured-output, task-status-persistence
  • Refactored E2E test helpers (extracted shared setup functions)
  • Removed judgment/ directory (JudgmentDetector, FallbackStrategy)
  • Added ruleIndex.ts utility (1-based → 0-based index conversion)

[0.12.1] - 2026-02-11

Fixed

  • Fixed silent fallthrough to a new session when the session was not found — now shows an info message when no session is detected

Internal

  • Set OpenCode provider report phase to deny (prevents unnecessary writes in Phase 2)
  • Skip copying tasks/ directory during project initialization (TASK-FORMAT is no longer needed)
  • Added stream diagnostics utility (streamDiagnostics.ts)

[0.12.0] - 2026-02-11

Added

  • OpenCode provider: Native support for OpenCode as a third provider — SDK integration via @opencode-ai/sdk/v2, permission mapping (readonly/edit/full → reject/once/always), SSE stream handling, retry mechanism (up to 3 times), and hang detection with 10-minute timeout (#236, #238)
  • Arpeggio movement: New movement type for data-driven batch processing — CSV data source with batch splitting, template expansion ({line:N}, {col:N:name}, {batch_index}), concurrent LLM calls (Semaphore-controlled), and concat/custom merge strategies (#200)
  • frontend builtin piece: Frontend development piece — React/Next.js knowledge injection, coding/testing policy, parallel architecture review
  • Slack Webhook notifications: Automatic Slack notification on piece completion — configured via TAKT_NOTIFY_WEBHOOK env var, 10-second timeout, non-blocking on failure (#234)
  • Session selector UI: On interactive mode startup, select a resumable session from past Claude Code sessions — shows latest 10 sessions with initial input and last response preview (#180)
  • Provider event logs: Claude/Codex/OpenCode execution events written to NDJSON files — .takt/logs/{sessionId}-provider-events.jsonl, with automatic compression of large text (#236)
  • Provider/model name display: Active provider and model name shown in console output at each movement execution

Changed

  • Revamped takt add: Auto-add to task on issue selection, removed interactive mode, added task stacking confirmation on issue creation (#193, #194)
  • max_iterationmax_movement unification: Unified terminology for iteration limits; added ostinato for unlimited execution (#212)
  • Improved previous_response injection: Implemented length control and always-inject Source Path (#207)
  • Task management improvements: Redefined .takt/tasks/ as storage for long-form task specs; completeTask() removes completed records from tasks.yaml (#201, #204)
  • Improved review output: Updated review output format; moved past reports to history log (#209)
  • Simplified builtin pieces: Further streamlined top-level declarations across all builtin pieces

Fixed

  • Fixed Report Phase blocked behavior: Report Phase (Phase 2) now retries with a new session when blocked (#163)
  • Fixed OpenCode hang and termination detection: Suppressed prompt echo, suppressed question prompts, fixed hang issues, corrected termination detection (#238)
  • Fixed OpenCode permission and tool wiring: Corrected permission and tool wiring during edit execution
  • Worktree task spec copy: Fixed task spec not being correctly copied during worktree execution
  • Fixed lint errors (merge/resolveTask/confirm)

Internal

  • Comprehensive OpenCode provider tests added (client-cleanup, config, provider, stream-handler, types)
  • Comprehensive Arpeggio tests added (csv, data-source-factory, merge, schema, template, engine-arpeggio)
  • Significantly expanded E2E tests: cli-catalog, cli-clear, cli-config, cli-export-cc, cli-help, cli-prompt, cli-reset-categories, cli-switch, error-handling, piece-error-handling, provider-error, quiet-mode, run-multiple-tasks, task-content-file (#192, #198)
  • Added providerEventLogger.ts, providerModel.ts, slackWebhook.ts, session-reader.ts, sessionSelector.ts, provider-resolution.ts, run-paths.ts
  • Added ArpeggioRunner.ts (data-driven batch processing engine)
  • AI Judge now routes through provider system (Codex/OpenCode support)
  • Added/expanded tests: report-phase-blocked, phase-runner-report-history, judgment-fallback, pieceExecution-session-loading, globalConfig-defaults, session-reader, sessionSelector, slackWebhook, providerEventLogger, provider-model, interactive, run-paths, engine-test-helpers

[0.11.1] - 2026-02-10

Fixed

  • Fixed AI Judge to route through provider system — changed callAiJudge from a Claude-only implementation to provider-based (runAgent), enabling correct AI judgment with the Codex provider
  • Reduced instruction bloat — set pass_previous_response: false in implement/fix movements, prioritizing reports in the Report Directory as primary information source (en/ja)

Internal

  • Improved CI workflow to automatically sync npm next dist-tag to latest on stable releases (with retry)

[0.11.0] - 2026-02-10

Added

  • e2e-test builtin piece: E2E test focused piece — E2E analysis → E2E implementation → review → fix flow (for Vitest-based E2E tests)
  • error status: Separated provider errors from blocked, enabling clear distinction of error states. Added retry mechanism to Codex
  • Centralized task YAML management: Unified task file management into tasks.yaml. Structured task lifecycle management (pending/running/completed/failed) via TaskRecordSchema
  • Task spec documentation: Documented the structure and purpose of task specs (#174)
  • Review policy: Added shared review policy facet (builtins/{lang}/policies/review.md)
  • SIGINT graceful shutdown E2E test: E2E test to verify Ctrl+C behavior during parallel execution

Changed

  • Simplified builtin pieces: Removed top-level policies/personas/knowledge/instructions/report_formats declarations from all builtin pieces, migrating to implicit name-based resolution. Piece YAML is now simpler
  • Updated piece category spec: Improved category configuration and display logic. Enhanced category management in global config (#184)
  • Improved takt list priority and resolution: Optimized branch resolution performance. Introduced base commit cache (#186, #195, #196)
  • Improved Ctrl+C signal handling: Stabilized SIGINT handling during parallel execution
  • Strengthened loop prevention policy: Enhanced policy to prevent agent infinite loops

Fixed

  • Fixed original instruction diff processing not working correctly (#181)
  • Fixed task spec goal being inappropriately scope-expanded — goal is now always fixed to implementation and execution

Internal

  • Large-scale task management refactor: removed parser.ts and split into store.ts/mapper.ts/schema.ts/naming.ts. Split branch resolution into branchGitResolver.ts/branchBaseCandidateResolver.ts/branchBaseRefCache.ts/branchEntryPointResolver.ts
  • Significantly expanded and refactored tests: added aggregate-evaluator, blocked-handler, branchGitResolver-performance, branchList-regression, buildListItems-performance, error-utils, escape, facet-resolution, getFilesChanged, global-pieceCategories, instruction-context, instruction-helpers, judgment-strategies, listTasksInteractivePendingLabel, loop-detector, naming, reportDir, resetCategories, rule-evaluator, rule-utils, slug, state-manager, switchPiece, task-schema, text, transitions, watchTasks, etc.
  • Refactored Codex client
  • Improved facet resolution logic in piece parser

[0.10.0] - 2026-02-09

Added

  • structural-reform builtin piece: Full project review and structural reform — iterative codebase restructuring with staged file splits, powered by loop_monitors
  • unit-test builtin piece: Unit test focused piece — test analysis → test implementation → review → fix, with loop_monitors for cycle control
  • test-planner persona: Specialized persona for analyzing codebase and planning comprehensive test strategies
  • Interactive mode variants: Four selectable modes after piece selection — assistant (default: AI-guided requirement refinement), persona (conversation with first movement's persona), quiet (generate instructions without questions), passthrough (user input used as-is)
  • persona_providers config: Per-persona provider overrides (e.g., { coder: 'codex' }) — route specific personas to different providers without creating hybrid pieces
  • task_poll_interval_ms config: Configurable polling interval for takt run to detect new tasks during execution (default: 500ms, range: 1005000ms)
  • interactive_mode piece field: Piece-level default interactive mode override (e.g., set passthrough for pieces that don't benefit from AI planning)
  • Task-level output prefixing: Colored [taskName] prefix on all output lines during parallel takt run execution, preventing mid-line interleaving between concurrent tasks
  • Review policy facet: Shared review policy (builtins/{lang}/policies/review.md) for consistent review criteria across pieces

Changed

  • BREAKING: Removed all Hybrid Codex pieces (*-hybrid-codex) — replaced by persona_providers config which achieves the same result without duplicating piece files
  • Removed tools/generate-hybrid-codex.mjs (no longer needed with persona_providers)
  • Improved parallel execution output: movement-level prefix now includes task context and iteration info in concurrent runs
  • Codex client now detects stream hangs (10-minute idle timeout) and distinguishes timeout vs external abort in error messages
  • Parallel task execution (takt run) now polls for newly added tasks during execution instead of only checking between task completions
  • Parallel task execution no longer enforces per-task time limits (previously had a timeout)
  • Issue references now routed through interactive mode (as initial input) instead of skipping interactive mode entirely
  • Builtin config.yaml updated to document all GlobalConfig fields
  • Extracted conversationLoop.ts for shared conversation logic across interactive mode variants
  • Line editor improvements: additional key bindings and edge case fixes

Fixed

  • Codex processes hanging indefinitely when stream becomes idle — now aborted after 10 minutes of inactivity, releasing worker pool slots

Internal

  • New test coverage: engine-persona-providers, interactive-mode (532 lines), task-prefix-writer, workerPool expansion, pieceResolver expansion, lineEditor expansion, parallel-logger expansion, globalConfig-defaults expansion, pieceExecution-debug-prompts expansion, it-piece-loader expansion, runAllTasks-concurrency expansion, engine-parallel
  • Extracted TaskPrefixWriter for task-level parallel output management
  • Extracted modeSelection.ts, passthroughMode.ts, personaMode.ts, quietMode.ts from interactive module
  • InteractiveMode type model added (src/core/models/interactive-mode.ts)
  • PieceEngine validates taskPrefix/taskColorIndex pair consistency at construction
  • Implementation notes document added (docs/implements/retry-and-session.ja.md)

[0.9.0] - 2026-02-08

Added

  • takt catalog command: List available facets (personas, policies, knowledge, instructions, output-contracts) across layers (builtin/user/project)
  • compound-eye builtin piece: Multi-model review — sends the same instruction to Claude and Codex simultaneously, then synthesizes both responses
  • Parallel task execution: takt run now uses a worker pool for concurrent task execution (controlled by concurrency config, default: 1)
  • Rich line editor in interactive mode: Shift+Enter for multiline input, cursor movement (arrow keys, Home/End), Option+Arrow word movement, Ctrl+A/E/K/U/W editing, paste bracket mode support
  • Movement preview in interactive mode: Injects piece movement structure (persona + instruction) into the AI planner for improved task analysis (interactive_preview_movements config, default: 3)
  • MCP server configuration: Per-movement MCP (Model Context Protocol) server settings with stdio/SSE/HTTP transport support
  • Facet-level eject: takt eject persona coder — eject individual facets by type and name for customization
  • 3-layer facet resolution: Personas, policies, and other facets resolved via project → user → builtin lookup (name-based references supported)
  • pr-commenter persona: Specialized persona for posting review findings as GitHub PR comments
  • notification_sound config: Enable/disable notification sounds (default: true)
  • Prompt log viewer: tools/prompt-log-viewer.html for visualizing prompt-response pairs during debugging
  • Auto-PR base branch now set to the current branch before branch creation

Changed

  • Unified planner and architect-planner: extracted design knowledge into knowledge facets, merged into planner. Removed architect movement from default/coding pieces (plan → implement direct transition)
  • Replaced readline with raw-mode line editor in interactive mode (cursor management, inter-line movement, Kitty keyboard protocol)
  • Unified interactive mode save_task with takt add worktree setup flow
  • Added -d flag to caffeinate to prevent App Nap process freezing during display sleep
  • Issue references now routed through interactive mode (previously executed directly, now used as initial input)
  • SDK update: @anthropic-ai/claude-agent-sdk v0.2.34 → v0.2.37
  • Enhanced interactive session scoring prompts with piece structure information

Internal

  • Extracted resource-resolver.ts for facet resolution logic (separated from pieceParser.ts)
  • Extracted parallelExecution.ts (worker pool), resolveTask.ts (task resolution), sigintHandler.ts (shared SIGINT handler)
  • Unified session key generation via session-key.ts
  • New lineEditor.ts (raw-mode terminal input, escape sequence parsing, cursor management)
  • Extensive test additions: catalog, facet-resolution, eject-facet, lineEditor, formatMovementPreviews, models, debug, strip-ansi, workerPool, runAllTasks-concurrency, session-key, interactive (major expansion), cli-routing-issue-resolve, parallel-logger, engine-parallel-failure, StreamDisplay, getCurrentBranch, globalConfig-defaults, pieceExecution-debug-prompts, selectAndExecute-autoPr, it-notification-sound, it-piece-loader, permission-mode (expansion)

[0.8.0] - 2026-02-08

Formal release of 0.8.0-alpha.1 content. No functional changes.

[0.8.0-alpha.1] - 2026-02-07

Added

  • Faceted Prompting architecture: Prompt components are managed as independent files and can be freely combined across pieces
    • personas/ — persona prompts defining agent role and expertise
    • policies/ — policies defining coding standards, quality criteria, and prohibitions
    • knowledge/ — knowledge defining domain knowledge and architecture information
    • instructions/ — instructions defining movement-specific procedures
    • output-contracts/ — output contracts defining report output formats
    • Piece YAML section maps (personas:, policies:, knowledge:) associate keys with file paths; movements reference by key
  • Output Contracts and Quality Gates: Structured definitions for report output and AI directives for quality criteria
    • output_contracts field defines reports (replaces report field)
    • quality_gates field specifies AI directives for movement completion requirements
  • Knowledge system: Separates domain knowledge from personas, managed and injected at piece level
    • knowledge: section map in piece YAML defines knowledge files
    • Movements reference by key via knowledge: field
  • Faceted Prompting documentation: Design philosophy and practical guide added to docs/faceted-prompting.md (en/ja)
  • Hybrid Codex piece generation tool: tools/generate-hybrid-codex.mjs auto-generates Codex variants from Claude pieces
  • Failed task re-queue: select failed task branches from takt list and re-execute (#110)
  • Branch name generation strategy is now configurable (branch_name_strategy config)
  • Added auto-PR feature and unified PR creation logic (#98)
  • Piece selection now also applies for issue references (#97)
  • Sleep functionality added to movements

Changed

  • BREAKING: Renamed resources/global/ directory to builtins/
    • resources/global/{lang}/builtins/{lang}/
    • Changed files field in package.json from resources/ to builtins/
  • BREAKING: Renamed agent field to persona
    • Piece YAML: agent:persona:, agent_name:persona_name:
    • Internal types: agentPathpersonaPath, agentDisplayNamepersonaDisplayName, agentSessionspersonaSessions
    • Directories: agents/personas/ (global, project, and builtin)
  • BREAKING: Changed report field to output_contracts
    • Unified legacy report: 00-plan.md / report: [{Scope: ...}] / report: {name, order, format} formats to output_contracts: {report: [...]} format
  • BREAKING: Renamed stancespolicies, report_formatsoutput_contracts
  • Migrated all builtin pieces to Faceted Prompting architecture (separated domain knowledge from old agent prompts into knowledge facets)
  • SDK updates: @anthropic-ai/claude-agent-sdk v0.2.19 → v0.2.34, @openai/codex-sdk v0.91.0 → v0.98.0
  • Added policy/knowledge fields to movements (referenced by section map keys)
  • Added policy-based evaluation to interactive mode scoring
  • Refreshed README: agent → persona, added section map description, clarified control/management classification
  • Refreshed builtin skill (SKILL.md) for Faceted Prompting

Fixed

  • Fixed report directory path resolution bug
  • Fixed PR issue number link not being set correctly
  • Fixed gitignored files being committed in stageAndCommit (removed git add -f .takt/reports/)

Internal

  • Large-scale builtin resource restructuring: removed old agents/ directory structure (default/, expert/, expert-cqrs/, magi/, research/, templates/) and migrated to flat personas/, policies/, knowledge/, instructions/, output-contracts/ structure
  • Added Faceted Prompting style guides and templates (PERSONA_STYLE_GUIDE.md, POLICY_STYLE_GUIDE.md, INSTRUCTION_STYLE_GUIDE.md, OUTPUT_CONTRACT_STYLE_GUIDE.md, etc. in builtins/ja/)
  • Added policy, knowledge, and instruction resolution logic to pieceParser.ts
  • Added/expanded tests: knowledge, policy-persona, deploySkill, StreamDisplay, globalConfig-defaults, sleep, task, taskExecution, taskRetryActions, addTask, saveTaskFile, parallel-logger, summarize
  • Added policy and knowledge content injection to InstructionBuilder
  • Added taskRetryActions.ts (failed task re-queue logic)
  • Added sleep.ts utility
  • Removed old prompt files (interactive-summary.md, interactive-system.md)
  • Removed old agent templates (templates/coder.md, templates/planner.md, etc.)

[0.7.1] - 2026-02-06

Fixed

  • Fixed Ctrl+C not working during piece execution: SIGINT handler now calls interruptAllQueries() to stop active SDK queries
  • Fixed EPIPE crash after Ctrl+C: dual protection for EPIPE errors when SDK writes to stdin of a stopped child process (uncaughtException handler + Promise.resolve().catch())
  • Fixed terminal raw mode leaking when an exception occurs in the select menu's onKeypress handler

Internal

  • Added integration tests for SIGINT handler and EPIPE suppression (it-sigint-interrupt.test.ts)
  • Added key input safety tests for select menu (select-rawmode-safety.test.ts)

[0.7.0] - 2026-02-06

Added

  • Hybrid Codex pieces: Added Codex variants for all major pieces (default, minimal, expert, expert-cqrs, passthrough, review-fix-minimal, coding)
    • Hybrid configuration running the coder agent on the Codex provider
    • en/ja support
  • passthrough piece: Minimal piece that passes the task directly to the coder
  • takt export-cc command: Deploy builtin pieces and agents as Claude Code Skills
  • Added delete action to takt list, separated non-interactive mode
  • AI consultation action: takt add / interactive mode can now create GitHub Issues and save task files
  • Cycle detection: Added CycleDetector to detect infinite loops between ai_review and ai_fix (#102)
    • Added arbitration step (ai_no_fix) to the default piece for when no fix is needed
  • CI: Added workflow to auto-delete skipped TAKT Action runs weekly
  • Added Hybrid Codex subcategory to piece categories (en/ja)

Changed

  • Simplified category configuration: merged default-categories.yaml into piece-categories.yaml, changed to auto-copy to user directory
  • Fixed subcategory navigation in piece selection UI (recursive hierarchical display now works correctly)
  • Refreshed Claude Code Skill to Agent Team-based design
  • Unified console.log to info() (list command)

Fixed

  • Fixed YAML parse error caused by colons in Hybrid Codex piece descriptions
  • Fixed invalid arguments passed to selectPieceFromCategoryTree on subcategory selection

Internal

  • Refactored list command: separated listNonInteractive.ts, taskDeleteActions.ts
  • Added cycle-detector.ts, integrated cycle detection into PieceEngine
  • Refactored piece category loader (pieceCategories.ts, pieceSelection/index.ts)
  • Added tests: cycle-detector, engine-loop-monitors, piece-selection, listNonInteractive, taskDeleteActions, createIssue, saveTaskFile

[0.6.0] - 2026-02-05

Formal release of RC1/RC2 content. No functional changes.

[0.6.0-rc1] - 2026-02-05

Fixed

  • Fixed infinite loop between ai_review and ai_fix: resolved issue where ai_fix judging "no fix needed" caused a return to plan and restarted the full pipeline
    • Added ai_no_fix arbitration step (architecture-reviewer judges the ai_review vs ai_fix conflict)
    • Changed ai_fix "no fix needed" route from plan to ai_no_fix
    • Affected pieces: default, expert, expert-cqrs (en/ja)

Changed

  • Changed default piece parallel reviewer from security-review to qa-review (optimized for TAKT development)
  • Moved qa-reviewer agent from expert/ to default/ and rewrote with focus on test coverage
  • Added iteration awareness to ai_review instruction (first iteration: comprehensive review; subsequent: prioritize fix verification)

Internal

  • Restricted auto-tag workflow to merges from release/ branches only, unified publish job (resolves chained trigger failure due to GITHUB_TOKEN limitations)
  • Removed postversion hook (conflicts with release branch flow)
  • Updated tests: adapted to security-reviewer → qa-reviewer change

[0.6.0-rc] - 2026-02-05

Added

  • coding builtin piece: Lightweight development piece — design → implement → parallel review → fix (fast feedback loop without plan/supervise steps)
  • conductor agent: Dedicated agent for Phase 3 judgment. Reads reports and responses to output judgment tags
  • Phase 3 judgment fallback strategy: 4-stage fallback (AutoSelect → ReportBased → ResponseBased → AgentConsult) to improve judgment accuracy (src/core/piece/judgment/)
  • Session state management: Saves task execution results (success/error/interrupted) and displays previous result on next interactive mode startup (#89)
  • TAKT meta information (piece structure, progress) injection mechanism for agents
  • /play command: Immediately executes task in interactive mode
  • E2E test infrastructure: mock/provider-compatible test infrastructure, 10 E2E test specs, test helpers (isolated-env, takt-runner, test-repo)
  • Added detection rule for "logically unreachable defensive code" to review agents

Changed

  • Changed Phase 3 judgment logic from session-resume approach to conductor agent + fallback strategy (improved judgment stability)
  • Refactored CLI routing as executeDefaultAction() function, reusable as fallback from slash commands (#32)
  • Input starting with / or # is now accepted as task instruction when no command/issue is found (#32)
  • Simplified isDirectTask(): only issue references execute directly, all others go to interactive mode
  • Removed pass_previous_response: true from all builtin pieces (redundant as it is the default behavior)

Internal

  • Added E2E test config files (vitest.config.e2e.ts, vitest.config.e2e.mock.ts, vitest.config.e2e.provider.ts)
  • Added getReportFiles(), hasOnlyOneBranch(), getAutoSelectedTag() to rule-utils.ts
  • Added report content and response-based judgment instruction generation to StatusJudgmentBuilder
  • Added piece meta information (structure, iteration counts) injection to InstructionBuilder
  • Added tests: judgment-detector, judgment-fallback, sessionState, pieceResolver, cli-slash-hash, e2e-helpers

[0.5.1] - 2026-02-04

Fixed

  • Windows environment file path handling and encoding issues (#90, #91)
    • Improved .git detection for Windows
    • Added mandatory .git check for Codex (error if not found)
    • Fixed character encoding issues
  • Codex branch name summary processing bug

Internal

  • Test memory leak and hanging issues resolved
    • Added cleanup handlers for PieceEngine and TaskWatcher
    • Changed vitest to single-threaded execution for improved test stability

[0.5.0] - 2026-02-04

Changed

  • BREAKING: Complete terminology migration from "workflow" to "piece" across entire codebase
    • All CLI commands, configuration files, and documentation now use "piece" terminology
    • WorkflowEnginePieceEngine
    • workflow_categoriespiece_categories in config files
    • builtin_workflows_enabledbuiltin_pieces_enabled
    • ~/.takt/workflows/~/.takt/pieces/ (user piece directory)
    • .takt/workflows/.takt/pieces/ (project piece directory)
    • All workflow-related file names and types renamed to piece-equivalents
    • Updated all documentation (README.md, CLAUDE.md, docs/*)

Internal

  • Complete directory structure refactoring:
    • src/core/workflow/src/core/piece/
    • src/features/workflowSelection/src/features/pieceSelection/
  • File renames:
    • workflow-types.tspiece-types.ts
    • workflowExecution.tspieceExecution.ts
    • workflowLoader.tspieceLoader.ts
    • workflowParser.tspieceParser.ts
    • workflowResolver.tspieceResolver.ts
    • workflowCategories.tspieceCategories.ts
    • switchWorkflow.tsswitchPiece.ts
  • All test files updated to reflect new terminology (194 files changed, ~3,400 insertions, ~3,400 deletions)
  • Resources directory updated:
    • resources/global/*/pieces/*.yaml updated with new terminology
    • All prompt files (*.md) updated
    • Configuration files (config.yaml, default-categories.yaml) updated

[0.4.1] - 2026-02-04

Fixed

  • Workflow execution bug where previous step's response was incorrectly bound to subsequent steps
    • Fixed MovementExecutor, ParallelRunner, and state-manager to properly isolate step responses
    • Updated interactive summary prompts to prevent response leakage

[0.4.0] - 2026-02-04

Added

  • Externalized prompt system: all internal prompts moved to versioned, translatable files (src/shared/prompts/en/, src/shared/prompts/ja/)
  • i18n label system: UI labels extracted to separate YAML files (labels_en.yaml, labels_ja.yaml) with src/shared/i18n/ module
  • Prompt preview functionality (src/features/prompt/preview.ts)
  • Phase system injection into agents for improved workflow phase awareness
  • Enhanced debug capabilities with new debug log viewer (tools/debug-log-viewer.html)
  • Comprehensive test coverage:
    • i18n system tests (i18n.test.ts)
    • Prompt system tests (prompts.test.ts)
    • Session management tests (session.test.ts)
    • Worktree integration tests (it-worktree-delete.test.ts, it-worktree-sessions.test.ts)

Changed

  • BREAKING: Internal terminology renamed: WorkflowStepWorkflowMovement, StepExecutorMovementExecutor, ParallelSubStepRawSchemaParallelSubMovementRawSchema, WorkflowStepRawSchemaWorkflowMovementRawSchema
  • BREAKING: Removed unnecessary backward compatibility code
  • BREAKING: Disabled interactive prompt override feature
  • Workflow resource directory renamed: resources/global/*/workflows/resources/global/*/pieces/
  • Prompts restructured for better readability and maintainability
  • Removed unnecessary task requirement summarization from conversation flow
  • Suppressed unnecessary report output during workflow execution

Fixed

  • takt worktree bug fix for worktree operations

Internal

  • Extracted prompt management into src/shared/prompts/index.ts with language-aware file loading
  • Created src/shared/i18n/index.ts for centralized label management
  • Enhanced tools/jsonl-viewer.html with additional features
  • Major refactoring across 162 files (~5,800 insertions, ~2,900 deletions)

[0.3.9] - 2026-02-03

Added

  • Workflow categorization support (#85)
    • Default category configuration in resources/global/{lang}/default-categories.yaml
    • User-defined categories via workflow_categories in ~/.takt/config.yaml
    • Nested category support with unlimited depth
    • Category-based workflow filtering in workflow selection UI
    • show_others_category and others_category_name configuration options
    • Builtin workflow filtering via builtin_workflows_enabled and disabled_builtins
  • Agent-less step execution: agent field is now optional (#71)
    • Steps can execute with instruction_template only (no system prompt)
    • Inline system prompts supported (agent string used as prompt if file doesn't exist)
  • takt add #N automatically reflects issue number in branch name (#78)
    • Issue number embedded in branch name (e.g., takt/issue-28-...)

Changed

  • BREAKING: Permission mode values unified to provider-independent format (#87)
    • New values: readonly, edit, full (replaces default, acceptEdits, bypassPermissions)
    • TAKT translates to provider-specific flags (Claude: default/acceptEdits/bypassPermissions, Codex: read-only/workspace-write/danger-full-access)
    • All builtin workflows updated to use new values
  • Workflow naming changes:
    • simple workflow replaced with minimal and review-fix-minimal
    • Added review-only workflow for read-only code review
  • Agent prompts updated with legacy対応禁止ルール (no backward compatibility hacks)
  • Documentation updates:
    • README.md and docs/README.ja.md updated with v0.3.8+ features
    • CLAUDE.md significantly expanded with architectural details and implementation notes

Internal

  • Created src/infra/config/loaders/workflowCategories.ts for category management
  • Created src/features/workflowSelection/index.ts for workflow selection UI
  • Enhanced src/shared/prompt/select.ts with category display support
  • Added comprehensive tests for workflow categories (workflow-categories.test.ts, workflow-category-config.test.ts)

[0.3.8] - 2026-02-02

Added

  • CLI option to specify workflow/config file paths: --workflow <path> and --config <path> (#81)
  • CI-friendly quiet mode for minimal log output (#70)
  • Mock scenario support for testing workflow execution
  • Comprehensive integration tests (7 test files, ~3000 lines of test coverage)

Changed

  • Rule evaluation improved: detectRuleIndex now uses last match instead of first match (#25)
  • ai_fix step significantly improved:
    • Added {step_iteration} counter to show retry attempt number
    • Explicit fix procedure defined (Read → Grep → Edit → Test → Report)
    • Coder agent now prioritizes reviewer feedback over assumptions
  • README and docs updated with clearer CLI usage and CI/CD examples

Fixed

  • Workflow loading priority corrected (user workflows now take precedence over builtins)
  • Test stability improvements (flaky tests skipped, ai_fix test updated)
  • Slack notification configuration fixed

Internal

  • Refactored instruction builder: extracted context assembly and status rules logic (#44)
  • Introduced src/infra/task/git.ts for DRY git commit operations
  • Unified error handling with getErrorMessage()
  • Made projectCwd required throughout codebase
  • Removed deprecated sacrificeMode
  • 35 files updated for consistency (console.logblankLine(), etc.)

[0.3.7] - 2026-02-01

Added

  • --pipeline flag for explicit pipeline/non-interactive mode execution (#28)
  • Pipeline mode can be used with both --task and --issue options

Changed

  • Log file naming changed from base36 to human-readable YYYYMMDD-HHmmss-random format (#28)
  • --task option description updated to clarify it's an alternative to GitHub issue

[0.3.6] - 2026-01-31

Fixed

  • ai_review workflow step now correctly includes pass_previous_request setting

[0.3.5] - 2026-01-31

Added

  • --create-worktree <yes|no> option to skip worktree confirmation prompt

Fixed

  • Various CI/CD improvements and fixes (#66, #67, #68, #69)

[0.3.4] - 2026-01-31

Added

  • Review-only workflow for code review without modifications (#60)
  • Various bug fixes and improvements (#14, #23, #35, #38, #45, #50, #51, #52, #59)

[0.3.3] - 2026-01-31

Fixed

  • Fixed takt add #N passing issue content through AI summarization and corrupting task content (#46)
    • Changed to use resolveIssueTask result directly as the task when referencing issues

[0.3.1] - 2026-01-31

Added

  • Interactive task planning mode: takt (no args) starts AI conversation to refine task requirements before execution (#47, #5)
    • Session persistence across takt restarts
    • Read-only tools (Read, Glob, Grep, Bash, WebSearch, WebFetch) for codebase investigation
    • Planning-only system prompt prevents code changes during conversation
    • /go to confirm and execute, /cancel to exit
  • Boy Scout Rule enforcement in reviewer/supervisor agent templates

Changed

  • CLI migrated from slash commands (takt /run-tasks) to subcommands (takt run) (#47)
  • /help and /refresh-builtin commands removed; eject simplified
  • SDK options builder only includes defined values to prevent hangs

Fixed

  • Claude Agent SDK hanging when model: undefined or other undefined options were passed as keys

[0.3.0] - 2026-01-30

Added

  • Rule-based workflow transitions with 5-stage fallback evaluation (#30)
    • Tag-based conditions: agent outputs [STEP:N] tags matched by index
    • ai() conditions: AI evaluates free-text conditions against agent output (#9)
    • all()/any() aggregate conditions for parallel step results (#20)
    • 5-stage evaluation order: aggregate → Phase 3 tag → Phase 1 tag → AI judge → AI fallback
  • 3-phase step execution model (#33)
    • Phase 1: Main work (coding, review, etc.)
    • Phase 2: Report output (when step.report defined)
    • Phase 3: Status judgment (when tag-based rules exist)
    • Session resumed across phases for context continuity
  • Parallel step execution with concurrent sub-steps via Promise.all() (#20)
  • GitHub Issue integration: execute/add tasks by issue number, e.g. takt #6 (#10, #34)
  • NDJSON session logging with real-time streaming writes (#27, #36)
  • Builtin resources embedded in npm package with /eject command for customization (#4, #40)
  • edit property for per-step file edit control
  • Rule match method visualization and logging
  • Report output auto-generation from YAML report.format
  • Parallel review support in builtin workflows with spec compliance checking (#31)
  • WorkflowEngine mock integration tests (#17, #41)

Changed

  • Report format unified to auto-generation; manual order/instruction_template for reports removed
  • gitdiff report type removed in favor of format-based reports

Fixed

  • Report directory correctly includes .takt/reports/ prefix (#37, #42)
  • Unused import in eject.ts (#43)

[0.2.3] - 2026-01-29

Added

  • /list-tasks command for branch management (try merge, merge & cleanup, delete)

Changed

  • Isolated execution migrated from git worktree to git clone --shared to prevent Claude Code SDK from traversing back to main repository
  • Clone lifecycle: auto-deletion after task completion removed; use /list-tasks for cleanup
  • worktree.ts split into clone.ts + branchReview.ts
  • Origin remote removed from clones to block SDK traversal
  • All workflow report steps granted Write permission
  • git clone --shared changed to --reference --dissociate

Fixed

  • Version read from package.json instead of hardcoded 0.1.0 (#3)

[0.2.2] - 2026-01-29

Added

  • /review instruct action for executing instructions on task branches
  • AI-powered task name summarization to English slugs for branch names
  • Worktree session inheritance
  • Execution Rules metadata (git commit prohibition, cd prohibition)

Changed

  • Status output rule headers auto-generated
  • Instructions auto-include worktree change context
  • Try Merge changed to squash merge
  • expert-review renamed to expert-cqrs; common reviewers consolidated under expert/

Fixed

  • Tasks incorrectly progressing to completed on abnormal termination

[0.2.1] - 2026-01-28

Added

  • Language setting (ja/en)
  • Multiline input support for /add-task
  • /review-tasks command
  • Cursor-based (arrow key) menu selection replacing numeric input
  • answer status, autoCommit, permission_mode, verbose logging options

Fixed

  • Multiple worktree-related bugs (directory resolution, session handling, creation flow)
  • ESC key cancels workflow/task selection

[0.2.0] - 2026-01-27

Added

  • /watch command for file system polling and auto-executing tasks from .takt/tasks/
  • /refresh-builtin command for updating builtin resources
  • /add-task command for interactive task creation
  • Enhanced default workflows

[0.1.7] - 2026-01-27

Added

  • Schema permission support for workflow validation

[0.1.6] - 2026-01-27

Added

  • Mock execution mode for testing

Changed

  • -r option omitted; default changed to conversation continuation mode

[0.1.5] - 2026-01-27

Added

  • Total execution time output

Fixed

  • Workflow unintentionally stopping during execution

[0.1.4] - 2026-01-27

Changed

  • Workflow prompts strengthened
  • Transition prompts consolidated into workflow definitions

[0.1.3] - 2026-01-26

Fixed

  • Iteration stalling issue

[0.1.2] - 2026-01-26

Added

  • Codex provider support
  • Model selection per step/agent
  • Permission mode configuration
  • Worktree support for isolated task execution
  • Project .gitignore initialization

Changed

  • Agent prompts refined

[0.1.1] - 2026-01-25

Added

  • GitHub Actions workflow for npm publish

Changed

  • Interactive mode removed; CLI simplified