Greptile/CodeRabbit review of the chat slash-command framework:
- Composer-wipe race: ChatView and TaskPlannerChatTab cleared the composer
inside the command's success callback, silently wiping any text the user
typed while the command was in flight. Clear on submit (before the network
round-trip) instead — consistent with normal chat send, which also clears
immediately and does not restore on failure.
- Attachments were silently dropped when dispatching a slash command in
ChatView (clearing the composer revokes staged attachment URLs). Block
dispatch with a warning toast when attachments are staged.
- CHAT_COMMANDS is now a readonly array; helper signatures accept
readonly ChatCommand[].
- The planner command menu (commands-only) used skill-menu aria-label/empty
copy; use command-specific copy instead.
Add regression tests: in-flight text survives command success, composer
clears on submit even on failure, attachment dispatch is blocked, and the
planner command menu uses command-specific accessible copy.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>