Skip to content

feat(web): complete the leading slash command with Tab in the composer - #44

Merged
whitelonng merged 1 commit into
masterfrom
feat/web-composer-tab-completion
Aug 28, 2026
Merged

feat(web): complete the leading slash command with Tab in the composer#44
whitelonng merged 1 commit into
masterfrom
feat/web-composer-tab-completion

Conversation

@whitelonng

Copy link
Copy Markdown
Owner

What

Tab in the composer now completes the highlighted leading / command as plain text instead of the browser's focus walk: typing /go + Tab fills /goal into the draft, keeps focus, and runs nothing until Enter. Picking was deliberately avoided — the menu pick path executes bare (argument-less) commands immediately.

Behavior

  • Leading / + highlighted candidate + Tab → splice /<name> over the token span (scoped slash/input-insert-text), close the menu, keep focus.
  • Any other open-menu state (candidates still loading, inline token, @ trigger) → Tab is consumed so focus cannot escape the composer.
  • Closed menu / IME composition → Tab keeps native focus behavior.
  • Enter and pointer picks are unchanged.

Changes

  • ArbitrateKey gains tab; InputTriggerController.arbitrate routes tab to a new complete() arm.
  • InputBar.onKeyDown intercepts Tab and preventDefaults whenever arbitration is not pass.
  • Controller and composer specs pin the completion/consumption matrix; READMEs updated; Agent Note records the decision.

Verification

  • test:gui green (330 files / 4557 tests)
  • client typecheck, oxlint, doc-sync (28 gates) green

@whitelonng
whitelonng merged commit 559d9db into master Aug 28, 2026
23 of 24 checks passed
@whitelonng
whitelonng deleted the feat/web-composer-tab-completion branch August 28, 2026 02:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant