Skip to content

feat: rename the experimental todowrite tool to todo - #57481

Closed
rekram1-node wants to merge 1 commit into
devfrom
todo-rename
Closed

rekram1-node wants to merge 1 commit into
devfrom
todo-rename

Conversation

@rekram1-node

@rekram1-node rekram1-node commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Refs #42421

Renames the experimental todowrite tool, added in #56947, to todo. It shipped in v2.1.0 behind experimental.todo, so this is the cheapest time to change the name.

- todowrite({ todos: [...] })
+ todo({ todos: [...] })
  • Name: the tool and its permission action are now todo. The input, the reply, and the flag are unchanged.
  • Old calls still display: sessions from V1 migration or from today keep their todowrite calls. The TUI renders them as todo calls in the timeline, sidebar, and mini mode via canonicalToolName. Desktop/web hides both names until desktop support lands.
  • No alias: a model that calls todowrite gets the normal unknown-tool error.
  • V1 config: a permission.todowrite key maps to todo, alongside the existing bash→shell and task→subagent renames.
  • V1 migration notice: now reads "The todowrite tool is no longer available. If todo is in your tool list, use it instead."
  • Docs: updated to the new name.

Verification

  • packages/core: bun typecheck passes. bun test test/v1-migration.test.ts test/tool-todo.test.ts test/config: 276 pass.
  • packages/tui: bun typecheck passes. test/util/tool-display.test.ts and test/mini: 430 pass.
  • packages/session-ui: rows-current.test.ts passes, 51 tests. It covers hiding both names.
  • packages/schema and services/www: typecheck pass. check:generated shows no OpenAPI change.

Added by the opencode bot (AI-generated).

Related: #42421

Public API: renames the experimental tool and its permission action from todowrite to todo; V1 permission keys are mapped, but V2 permissions rules using todowrite need renaming

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good. I ran OpenCode from source on both checkouts with the simulated model and experimental.todo on. Base: a todowrite call renders the todo block. This PR: a todo call renders the same block, and a legacy todowrite call gets the unknown-tool error, shown as "Todo update failed". The related core, TUI and session-ui tests pass, and core, tui, session-ui and schema all type-check.

Public API: the experimental tool name and its permission action both change from todowrite to todo. The input, the output and the experimental.todo flag are unchanged, and the OpenAPI spec doesn't change. V1 permission.todowrite keys and old todowrite calls in history are mapped. V2 permissions rules written for v2.1.0 with "action": "todowrite" are not: they will silently stop matching and need renaming to todo. That seems acceptable for an experimental tool, but it may be worth a line in the release notes.

No blocking concerns.

Related: #42421

Before

After

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant