5cbd994575
Widens the salvaged Kanban fix (PR #94611 by @huklaa) to the whole bug class, following cloudflare-os PR #291 which centralized one isImeComposing predicate and swept every Enter-submit site. - New shared helper src/lib/ime.ts (isImeComposing / isSubmitEnter): handles nativeEvent.isComposing (React), event.isComposing (DOM), and the legacy Chromium/Safari keyCode 229 commit-Enter that arrives after compositionend. - Sweeps 21 previously unguarded Enter-submit sites: dialogs (project, worktree, profile-remote-override, pet rename), settings fields (credential keys, model API key, quick-entry shortcut, attachment size, combobox), quick entry, pet overlay composer, pet generate + hatch, review ship bar, file rename, preview browser address bar, model catalog menu, MCP setup + approval strips, Kanban drawer. - Upgrades two partial guards (onboarding, session-actions-menu) that checked isComposing but missed keyCode 229. - find-in-page: Enter step no longer fires mid-composition (typed CJK search queries jumped the viewport on every conversion commit). Validation: tsc clean, eslint clean, 135 tests green across ime/find-bar/ composer/kanban suites; sabotage run (guard removed) fails the new test.