home channels: EmojiPicker Return on src/ui; AddChannel, DraftRow, HomeIcon covered (no bead)

Merged
TE
1mo ago
+55-20

Summary

This replaces the channels Home's pending and allowlist entries from #19419 with real fixes, per Leo: cmux-next base reds get fixed, not allowlisted.

  • EmojiPicker: Return in the search picks the first result through ui/KeyboardScope instead of a raw onKeyDown. It also no longer picks while an IME is composing. The ui-rules.pending.json line is gone. A native <form> submit wouldn't work here: the Popover portals to the body, but React's submit would bubble to the Composer's form.
  • AddChannel, DraftRow, HomeIcon: pages.home-channels already renders them in the add-channel and draft variants and in every toolbar. The entry now covers them, and they're off gallery-coverage.allowlist.json.
  • New variant emoji-return: open Emoji, type "rocket", press Return. The play checks the first result is in the composer and the popover has closed.

Testing

  • bun test test/gallery-coverage.test.ts test/ui-rules.test.ts: everything passes except the GitActions base red, which #19566 fixes.
  • bun run check passes.
  • The plays run in the gallery PR diff browsers.

Changelog

none

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Replaces the channels Home pending and allowlist entries with real fixes.

  • EmojiPicker's search now picks the first result on Return through ui/KeyboardScope instead of a raw onKeyDown, and ignores Return while an IME is composing (including WebKit's keyCode 229 case).
  • AddChannel, DraftRow, and HomeIcon are now covered by the gallery, so they come off the coverage allowlist.
  • Adds an emoji-return gallery play that opens the Emoji popover, types "rocket", presses Return, and verifies the first result is in the composer and the popover has closed.
  • GitActions comes off the ui-rules pending list: #19566 moved its key handling onto src/ui, dropping the stale pending line.