Skip to content

feat(cli): keep /effort as the only thinking-level command and save on Enter - #234

Merged
Uking-xxx merged 3 commits into
mainfrom
feat/effort-only-command
Oct 10, 2026
Merged

Uking-xxx merged 3 commits into
mainfrom
feat/effort-only-command

Conversation

@Uking-xxx

Copy link
Copy Markdown
Collaborator

Summary

  • Remove the /thinking slash command; /effort is now the single thinking-level command (registration, routing, argument completion, and / priority ordering).
  • /effort picker: drop the "Shift+Tab cycles thinking levels in-session" line and the "Ctrl+S to set as default" hint/handler.
  • Enter in the picker now applies the level and persists it as the startup default (previous Ctrl+S behavior). /effort <level> persists the same way for consistency.
  • Shift+Tab in-session cycling itself is unchanged.
  • Update tests and docs (README.md, settings.md, step-integration.md) accordingly.

Test plan

  • vitest for apps/cli affected suites (thinking-default-marker, interactive-mode-status, interactive-mode-startup-input, tui-acceptance-interactions, tui-acceptance-snapshot)
  • vitest for packages/coding-agent/test/step-slash-commands.test.ts
  • pnpm run check (pre-commit: biome, tsgo, boundary checks)
  • Manual: /effort → pick level → Enter → restart, level persists

🤖 Generated with Claude Code

xuyunfang added 3 commits October 10, 2026 12:38
Session 01a123da: four progress-subscribed lanes all finished by 03:37,
yet the parent kept running `sleep 180` until past 04:04, convinced the
lanes were still going.

Progress notices were steered. The steering queue drains one message per
turn by default ("one-at-a-time"), and progress arrives every 15s per
lane, so a minutes-long tool call let dozens queue up. The parent read
one stale progress notice per turn, and the lanes' completion notices
sat behind that backlog. Each steered notice also forced one more model
call after the parent meant to stop, which kept the sleep loop going.

- Send progress and restart notices with triggerTurn: false. They land
  as context at the same turn boundary a steer would use, all at once,
  without entering the steering queue or forcing an extra model call.
  Completion, failure, interrupt, and needs-input keep steer +
  triggerTurn.
- Tell the parent, when a lane starts, not to wait with sleep or
  polling: end the turn or carry on, since it is woken when the lane
  finishes, fails, or needs input. The subscribe description says the
  same, except for "none".
- Order the background lane list by creation rather than by which lane
  streamed first, as its comment already claimed.
…ification

The final notification capped the lane output at 2,000 characters. It is
the parent's only copy of the result, since agent_send can reply or stop
but not fetch, so a longer report lost its ending (usually the summary)
and the parent fell back to parsing the child's session file. Raise the
cap to 50,000 characters, the per-task limit a blocking call returns.
…n Enter

Remove /thinking in favour of /effort. The picker drops the Shift+Tab hint
and Ctrl+S; Enter now applies the level and saves it as the startup
default, as does /effort <level>.
@Uking-xxx
Uking-xxx merged commit 3d70bae into main Oct 10, 2026
2 checks passed
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