#11527: feat(control-ui): UX improvements — Enter key, thinking icon, auto-chat
app: web-ui
stale
Three small UX enhancements for the Control UI:
### 1. Enter key on password field triggers Connect
Users expect to press Enter after typing a password. The password field (not stored, entered every session) now submits on Enter.
### 2. Thinking toggle icon reflects state
- **On**: Brain icon (🧠)
- **Off**: Circle icon (⭕)
Provides clear visual feedback beyond the CSS `active` class highlight.
### 3. Auto-switch to Chat tab after connection
When connecting from the Overview page, automatically switches to the Chat tab on successful `onHello`. Saves a click since most users connect to chat.
## Changes
- `ui/src/ui/views/overview.ts`: Add `@keydown` handler to password input
- `ui/src/ui/app-render.helpers.ts`: Conditional icon for thinking toggle
- `ui/src/ui/app-gateway.ts`: Switch to chat tab in `onHello` callback
All three are independent, small changes. Happy to split into separate PRs if preferred.
<!-- greptile_comment -->
<h2>Greptile Overview</h2>
<h3>Greptile Summary</h3>
This PR adds three Control UI UX tweaks: submitting the password field with Enter on the Overview page, showing a different icon for the thinking toggle based on state, and auto-switching to the Chat tab after a successful gateway hello.
The main integration concern is in the new auto-switch logic in `app-gateway.ts`: it switches tabs by calling `host.setTab("chat")` directly from the gateway connect layer, which can bypass the existing tab-change machinery in `app-settings.ts` that synchronizes URL state and runs per-tab side effects (polling/refresh). The other changes look localized and consistent with existing patterns.
<h3>Confidence Score: 4/5</h3>
- Mostly safe to merge, but fix the tab-switch implementation to use the standard tab-change path.
- Changes are small and localized. The thinking icon and Enter-to-connect behavior look correct, but the onHello auto-switch currently calls `host.setTab` directly, which can bypass required side effects handled in `app-settings.ts:setTab`/`setTabInternal`. Fixing that should make the PR low-risk.
- ui/src/ui/app-gateway.ts
<!-- greptile_other_comments_section -->
<!-- /greptile_comment -->
Most Similar PRs
#11004: fix(ui): add Enter key support to Gateway Access inputs
by Annaxiebot · 2026-02-07
80.1%
#9218: Fix Control UI chat resync on gaps and terminal events
by figitaki · 2026-02-05
78.5%
#13548: feat(control-ui): Add quote reply and send message to session features
by Annaxiebot · 2026-02-10
77.9%
#12079: TUI: improve thinking UX, tool readability, and live running status...
by rubenfb23 · 2026-02-08
76.8%
#17765: fix: add link to settings when chat shows auth error
by MisterGuy420 · 2026-02-16
75.8%
#13356: ui: align Thinking button active state in light theme with dark theme
by yamoroc · 2026-02-10
75.7%
#13960: fix(ui): preserve structured config validation error details
by constansino · 2026-02-11
75.2%
#14309: fix(ui): resolve chat event session key mismatch
by justonlyforyou · 2026-02-11
74.6%
#11868: control-ui: pairing required guided flow (Clairephone V2 Candidate A)
by shojikumaru · 2026-02-08
74.3%
#8774: Fix/frontend session key normalization
by zhaodageng · 2026-02-04
73.8%