Context
Session search (web/src/components/SessionList.tsx) already got a clear/X button via #1544/#1545. A prior local attempt at long-press-to-dismiss on the same control stalled before ever reaching a PR (worktree session-search-longpress-dismiss, uncommitted, superseded by the X button) but its useLongPress wiring on the collapsed search trigger is reusable groundwork.
Ask
Repurpose that wiring: long-press the collapsed search trigger should start realtime dictation into the search query, using whichever dictation provider the operator currently has configured in Settings (useVoiceInputPreferences.ts / realtimeTranscription.ts) — cloud or Browser on-device, whatever is selected. Do not force or special-case any specific provider.
Scope
- Reuse worktree
~/coding/hapi/worktrees/session-search-longpress-dismiss (branch fix/session-search-longpress-dismiss) — has existing uncommitted useLongPress wiring on the search trigger button to build from.
- Change the long-press action from "clear query" to "start dictation" (short tap still expands to text search as today).
- Long-press should be enabled regardless of whether there is already a query (unlike the old dismiss-only gating).
- Reuse the existing realtime dictation hooks (
useDictation/useRealtimeDictation) rather than building new STT plumbing — this is a UI wiring task, not a new STT backend.
- Standard gates apply: typecheck, tests, Playwright + visual evidence before operator dogfood.
Not in scope
Context
Session search (
web/src/components/SessionList.tsx) already got a clear/X button via #1544/#1545. A prior local attempt at long-press-to-dismiss on the same control stalled before ever reaching a PR (worktreesession-search-longpress-dismiss, uncommitted, superseded by the X button) but itsuseLongPresswiring on the collapsed search trigger is reusable groundwork.Ask
Repurpose that wiring: long-press the collapsed search trigger should start realtime dictation into the search query, using whichever dictation provider the operator currently has configured in Settings (
useVoiceInputPreferences.ts/realtimeTranscription.ts) — cloud or Browser on-device, whatever is selected. Do not force or special-case any specific provider.Scope
~/coding/hapi/worktrees/session-search-longpress-dismiss(branchfix/session-search-longpress-dismiss) — has existing uncommitteduseLongPresswiring on the search trigger button to build from.useDictation/useRealtimeDictation) rather than building new STT plumbing — this is a UI wiring task, not a new STT backend.Not in scope
browserLocalSpeech.tsgating as part of this work.