Skip to content

fix(native-chat): a dot between the queue header's label and its count - #29268

Merged
brennanb2025 merged 5 commits into
mainfrom
brennanb2025/queue-header-dot
Oct 17, 2026
Merged

brennanb2025 merged 5 commits into
mainfrom
brennanb2025/queue-header-dot

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 1 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​4 $\color{#cf222e}{\Huge{\mathbf{−}}}$​4 0
Prod 3 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​88 $\color{#cf222e}{\Huge{\mathbf{−}}}$​69 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​19

ELI5

The small header above queued messages read "Paused2" or "Queued1": the word and the number ran together. It now reads "Paused · 2" and "Queued · 1", with a faint dot between them, on the desktop app and the phone.

What Changed

Before: the queue header showed the label and the count with only a 4px gap on desktop, so "Paused 2" read as "Paused2".

After: a middle dot sits between them: "Paused · 2" while the queue is held after Stop, "Queued · 2" while the agent works. The dot uses the count's muted colour and size. Nothing else in the header changes (Clear all, Resume, the fold chevron, the error caption).

Mechanism: the desktop header (NativeChatQueuedMessageList.tsx) gets <span aria-hidden>·</span> between the label and the count, the same separator the queued-message editor already uses for "Editing message · sender". The phone header (MobileNativeChatQueuedMessages.tsx) gets a muted · text between its label and count, hidden from screen readers the way the phone's background-task rows hide their decorative meta text. Screen readers keep reading "Paused 2", not "Paused dot 2".

The phone file was already exactly at the 400-line lint limit, so the queued card's expanding text (MobileQueuedCardText) moves unchanged into its own file, MobileQueuedCardText.tsx, to make room. No behaviour change there.

Why

Brennan's feedback on #28654: "Paused2 is too close together". A dot separator is the pattern Orca already uses for label-and-detail pairs in chat (background tasks, tool runs, the queue editor), so this reuses it rather than widening the gap or adding a new element.

Linked Issue

Follow-up to #28654.

Visual Proof

Rendered on a hidden, isolated test copy of Orca on the M4Air (own throwaway home, stand-in Codex agent, never the real one), driven over CDP by a QA driver. "Before" is the same running app with only NativeChatQueuedMessageList.tsx swapped back to main's version.

Before (main) After (this PR)
Paused Paused2 header Paused · 2 header
Queued Queued2 header Queued · 2 header

Whole window, paused:

Before After
before window after window

Measured in the rendered page: the dot is its own element with aria-hidden="true", 12px, colour rgb(161,161,161) (the count's muted colour). When paused, the label turns white and the dot and count stay muted.

The phone header was not rendered (no development client in this check); its change is covered by the unchanged phone tests, which read only what a screen reader gets.

Testing

  • Desktop tests that pinned the header text (NativeChatQueuedMessageList.test.tsx) now expect "Paused·2…" / "Queued·1". The phone tests read only screen-reader-visible text, so they are unchanged and confirm the dot stays hidden from screen readers.

  • Rendered check on macOS (M4Air): see Visual Proof. Phone: not rendered.

  • I manually tested these changes locally

  • Automated tests added/updated, or explained why not below

Review

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

Notes

Presentation only: no wire, saved-data, SSH or platform-specific change.

Author: Brennan Benson (X: @BrennanKB5)

Checklist

  • This PR is small and focused
  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

@brennanb2025
brennanb2025 marked this pull request as ready for review October 16, 2026 01:36
@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 2 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 19a2b52d-d5d9-4a34-bb2e-9666ad390fcd
📥 Commits

Reviewing files that changed from the base of the PR and between 76a53c5 and 4eec45a.

📒 Files selected for processing: 4
  • mobile/src/session/MobileNativeChatQueuedMessages.tsx
  • mobile/src/session/MobileQueuedCardText.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageList.test.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageList.tsx

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 360d454f-513f-47cf-a65c-e375e66832d4
📥 Commits

Reviewing files that changed from the base of the PR and between 09a1465 and 76a53c5.

📒 Files selected for processing: 4
  • mobile/src/session/MobileNativeChatQueuedMessages.tsx
  • mobile/src/session/MobileQueuedCardText.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageList.test.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageList.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 1 remain after this review.

📝 Walkthrough

The mobile queued-message UI now uses a separate component to measure message text, display a two-line preview, and expand longer text in a scrollable area. The mobile and renderer queue headers now display a middle dot between the status label and count. The mobile separator is hidden from accessibility.

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to 76a53

The queue headers gain the visible separator without adding it to screen-reader text. No merge-blocking issue is identified.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: adding a separator dot between the native chat queue header label and count.
Description check Passed The description is complete and aligned with the template. It explains the user-visible change, mechanism, rationale, linked issue, visual proof, testing, accessibility behavior, scope, and checklist …
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 4 files.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@brennanb2025
brennanb2025 merged commit 07558ba into main Oct 17, 2026
33 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant