Skip to content

fix(voice-input): use InlineButton for processing error dismissal - #1800

Merged
donjor merged 1 commit into
hyprwsfrom
fix/ui-consistency-voice-input
Oct 20, 2026
Merged

donjor merged 1 commit into
hyprwsfrom
fix/ui-consistency-voice-input

Conversation

@donjor-agent

@donjor-agent donjor-agent Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

🤖 claude/anthropic claude-opus-5-5 (high) · host
with worker pi/openai gpt-6.1-sol (low)

Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

Change

#1792 ui-consistency-2: use destructive InlineButton for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and ui/button.tsx match origin/hyprws exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in ChatComposer (live padding) and ComposerSurface (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

Verification

vp lint apps/web/src/voice-input/useVoiceText.fork.tsx → exit 0 (0 errors, 0 warnings).

cd apps/web && vp run typecheck → exit 0.

vp run fork:ci → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed AttachmentFilePreview.browser.test.tsx:74 (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

Evidence

Web client, dark, 1280x800, seeded dev data: hyprws vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

  • Shows: error at rest, hovered, keyboard focus
  • Rest: destructive tone at 80%, full on hover
  • Hover: underline; tooltip and truncation unchanged
  • Focus: shared ring outline

1800 before and after

Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no

@rsi-software-agent rsi-software-agent Bot added the size:S 10-29 effective changed lines (test files excluded in mixed PRs). label Oct 20, 2026
@rsi-software-agent

rsi-software-agent Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

🧩 UI Consistency 8c0ed81 ✅ clear

No findings.

Result carried from 6c40a866ea00ba39abaac72ef7e3b1ccb8b2f5a4: rebase or base merge with identical changes.

🕐 20 Oct 02:53 UTC ⏱️ <1 min

Details
Head Result Time Check
8c0ed81 ✅ clear <1 min
6c40a86 ✅ clear <1 min
6b574c6 ✅ clear <1 min run
cf5dfe3 ✅ clear <1 min run

@donjor
donjor force-pushed the fix/ui-consistency-voice-input branch from cf5dfe3 to 6b574c6 Compare October 20, 2026 02:04
@donjor-agent donjor-agent Bot changed the title fix(voice-input): use shared dictation action button fix(voice-input): use InlineButton for processing error dismissal Oct 20, 2026
@donjor-agent
donjor-agent Bot force-pushed the fix/ui-consistency-voice-input branch from 6b574c6 to 6c40a86 Compare October 20, 2026 02:17
Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
@donjor-agent
donjor-agent Bot force-pushed the fix/ui-consistency-voice-input branch from 6c40a86 to 8c0ed81 Compare October 20, 2026 02:53
@donjor
donjor merged commit 07cba71 into hyprws Oct 20, 2026
@donjor
donjor deleted the fix/ui-consistency-voice-input branch October 20, 2026 03:08
donjor added a commit that referenced this pull request Oct 20, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 20, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 20, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 20, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 20, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 21, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 21, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 21, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 21, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 21, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 22, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 22, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 23, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 24, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 27, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 7, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 7, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 7, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 8, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 8, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
)

## Problem

The dismissible voice-processing error duplicates the shared inline action primitive.

## Change

#1792 ui-consistency-2: use destructive `InlineButton` for error dismissal, preserving its tooltip, accessible label, truncation, and dismiss handler.
Visible differences are the primitive's hover underline, destructive tone, and keyboard focus outline.

#1792 ui-consistency-1: held: mirrors upstream composer action button; no shared Button variant upstream, and adding one means a hook in a high-churn upstream file.
The finish/retry markup and `ui/button.tsx` match `origin/hyprws` exactly.

#1792 ui-consistency-3: held because moving both static rules requires separate upstream hooks in `ChatComposer` (live padding) and `ComposerSurface` (shell geometry), exceeding the approved one-hook limit.
The fork-only stylesheet remains unchanged.

## Scope and approval

Maintainer-directed, issue-free consistency fix for existing desktop dictation; no new capability, mobile changes, or backfill PR edits.
The host's Round 3 ruling prioritizes sync-conflict avoidance over adding shared button variants.

## Verification

`vp lint apps/web/src/voice-input/useVoiceText.fork.tsx` → exit 0 (0 errors, 0 warnings).

`cd apps/web && vp run typecheck` → exit 0.

`vp run fork:ci` → exit 0 (63 files, 776 tests passed; 0 lint errors, 451 warnings).
No tests were touched, so no touched-test command applies.

The previous head's cloud Test Web failed `AttachmentFilePreview.browser.test.tsx:74` (8,786 passed, 1 failed).
The host identifies AttachmentFilePreview and WorkflowOpeningBlock failures as known base flakes; do not fix or rerun them in this scope.

Host browser grounding: see Evidence.
No browser or dev server was started.

Implemented by GPT-6.1 Sol through Pi.

## Evidence

Web client, dark, 1280x800, seeded dev data: `hyprws` vs this PR merged on the current base.
The error state was set directly in React state; a real failure needs a failing provider call.

- Shows: error at rest, hovered, keyboard focus
- Rest: destructive tone at 80%, full on hover
- Hover: underline; tooltip and truncation unchanged
- Focus: shared ring outline

![1800 before and after](https://github.com/user-attachments/assets/89dd17d0-d2ab-443b-bb8b-29de7a2e194f)

## Fork trailers

Fork-Domain: voice-input
Fork-Tier: qol
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Nov 9, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 12, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 12, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 12, 2026
Squashes:

- 26171fbd8fa feat(server): scaffold external voice dictation (#1672) (#1672)
- da9e3d289f0 feat(server): transcribe recordings with Meta Muse (#1673) (#1673)
- c7b4f781cf5 feat(desktop): record dictation into editable chat drafts (#1675) (#1675)
- 9d5dcb319c9 fix(desktop): keep dictation transcribing across thread switches (#1684) (#1684)
- 7782b1f05b3 feat(desktop): stream live Meta dictation into the composer (#1686) (#1686)
- 80071d08816 fix(voice-input): keep Meta realtime dictation on HTTP/1.1 WebSockets (#1710) (#1710)
- 7edffba3c2b feat(voice-input): live dictation preview for any OpenAI Realtime endpoint (#1775) (#1775)
- 2283697771d fix(voice-input): use InlineButton for processing error dismissal (#1800) (#1800)
- 54c87d908a2 fix(voice-input): one base URL derives dictation upload and live paths (#1881) (#1881)
- bd64d598282 feat(voice-input): send per-project speech terms to the dictation service (#1882) (#1882)

Fork-Domain: voice-input
Fork-Tier: core
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Co-authored-by: donjor <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 effective changed lines (test files excluded in mixed PRs).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant