Skip to content

Fix iOS terminal toolbar contrast during theme changes - #9937

Closed
azooz2003-bit wants to merge 2 commits into
mainfrom
task-ios-light-toolbar-contrast
Closed

azooz2003-bit wants to merge 2 commits into
mainfrom
task-ios-light-toolbar-contrast

Conversation

@azooz2003-bit

@azooz2003-bit azooz2003-bit commented Aug 11, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Replace transition-lagging Liquid Glass toolbar material with terminal-owned backing and foreground colors resolved from one theme snapshot.
  • Keep top navigation controls and keyboard accessory controls readable across dark, light, and custom terminal-theme changes.
  • Preserve native actions, accessibility identity, modifier states, disabled behavior, and final-state hit targets.

Verification

  • Exact RED job checks out e9c44ad531c2e2f33e5927aa73365e09a9ca355c; all 7 dark-to-light samples fail, with Paste reaching 1.00:1.
  • Exact GREEN job checks out 80472b606427a416f143d6587a714b211998eda7; the two-appearance, six-state transition and modifier matrix passes in 186.983 seconds with 0 failures.
  • Local exact-final dark captures pass 34/34 active contrast measurements, minimum 7.0014:1, and 17/17 point-hit proxies under both system appearances.
  • The signed lbar build is installed on Aziz, signed in, paired to the tagged Mac, and has an exact-SHA usable-RPC readiness receipt.
  • CodeRabbit and Cursor checks pass. The speculative merge run failed unrelated broad app-host shards; its workflow guard, remote-daemon, web, database, React, and test-build jobs passed.

Evidence

  • Before: cmux-assets/task-ios-light-toolbar-contrast/before-ada6abce/before-findings.md
  • After: cmux-assets/task-ios-light-toolbar-contrast/after-80472b60/after-findings.md
  • The iOS workflow did not retain its XCTest screenshots or a video. Local Computer Use stopped when the shared Simulator window identity became ambiguous, so no local transition video or matched transition profile is claimed.
  • Final top accessibility hit frames are larger than baseline, while the exact GREEN test keeps them stable within 0.5 point across every final theme state.

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Note

Medium Risk
Touches high-visibility iOS navigation and keyboard chrome across theme transitions and iOS 26 toolbar behavior; risk is mostly visual/regression rather than security or data handling.

Overview
Fixes unreadable iOS terminal chrome when the active theme changes live by painting navigation and keyboard toolbars from a single terminal theme snapshot instead of Liquid Glass and adaptive system colors.

MobileTerminalChromeStyle pairs opaque background, readable foreground, and color scheme from one TerminalTheme. mobileTerminalChromeControl(theme:) applies that snapshot to toolbar items; on iOS 26 mobileTerminalSharedBackgroundHidden() hides shared glass while keeping native layout and accessibility. Workspace detail applies this to back, title, alt-screen notice, changes, trailing controls, compact chat headers, and workspace titles; back-button badge contrast now comes from the chrome style rather than static configuration.

ChatStateIndicatorView and compact title stacks accept optional monochrome foregrounds for toolbar mode. TerminalInputTextView drops .glass() / .prominentGlass() and the sticky-lock layer border; accessory buttons use flat terminal-owned backgrounds that repaint with refreshThemeColors().

DEBUG adds waitForThemeParityPreviewOutputSink and a tap-driven TerminalThemeAdvance fixture. TerminalThemeParityUITests runs dark/light system appearances, samples transition bursts for readable controls, and checks modifier armed vs sticky states stay visually distinct.

Reviewed by Cursor Bugbot for commit 80472b6. Bugbot is set up for automated code reviews on this repo. Configure here.


Summary by cubic

Fixes unreadable iOS terminal toolbar controls during live theme changes by atomically swapping a single terminal-theme snapshot into all toolbar chrome. Applies the snapshot across navigation and input accessory bars to keep contrast and layout stable on iOS 16–26.

  • Bug Fixes

    • Added MobileTerminalChromeStyle and mobileTerminalChromeControl(theme:); all toolbar and accessory items share one opaque background, readable foreground, and matching color scheme.
    • Hid iOS 26 shared toolbar glass via mobileTerminalSharedBackgroundHidden() while keeping native layout, actions, and accessibility.
    • Made compact titles, chat indicators, workspace title dot, changes chip, and back button monochrome on toolbar chrome; back‑badge contrast now derives from MobileTerminalChromeStyle. Replaced .glass()/.prominentGlass() and removed the sticky‑lock layer border so armed/sticky states repaint with the theme.
  • Tests

    • Expanded TerminalThemeParityUITests to run in light and dark appearances, wait for the terminal output sink, drive a tap‑controlled TerminalThemeAdvance, and sample transition bursts against prior frames to assert readable control contrast.
    • Verified frames and hit targets stay stable, disabled controls remain recognizable, and armed vs. sticky modifier states stay distinct after disarming. Updated TerminalPaletteTests to validate back‑button badge contrast mapping via MobileTerminalChromeStyle.

Written for commit 80472b6. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features

    • Terminal navigation bars and toolbar controls now adapt to the active terminal theme, including background, foreground, tint, and light/dark appearance.
    • Workspace titles, chat headers, back buttons, alternate-screen controls, and change indicators support theme-aware coloring.
    • Theme previews can be advanced manually across dark, light, and custom themes.
  • Bug Fixes

    • Improved toolbar readability and consistent styling across supported iOS versions.
    • Updated terminal input accessory styling for a more consistent appearance.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026 •

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR adds shared terminal chrome styling, propagates theme-aware foreground colors through workspace controls, changes parity preview progression to manual fixture advancement, simplifies terminal input accessory backgrounds, and expands light/dark UI parity tests.

Changes

Terminal Theme Parity

Layer / File(s) Summary
Terminal chrome styling foundation
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TerminalTheme+SwiftUI.swift, Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/View+MobileNavigationChrome.swift
Adds theme-derived chrome styles and modifiers for navigation bars, toolbar controls, and shared toolbar backgrounds.
Theme-aware toolbar controls
Packages/iOS/CmuxMobileSupport/Sources/.../MobileCompactToolbarTitleStack.swift, Packages/iOS/CmuxAgentChatUI/Sources/.../ChatSessionHeaderView.swift, Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/*Toolbar*, Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView.swift, Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceBackButton*.swift, Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceChangesChipLabel.swift, Packages/iOS/CmuxMobileShellUI/Tests/CmuxMobileShellUITests/TerminalPaletteTests.swift
Propagates foreground colors through titles, indicators, buttons, change labels, and workspace navigation controls. Badge contrast derives from the terminal color scheme.
Parity preview and terminal input styling
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailDelayedTerminalPreviewView.swift, Packages/iOS/CmuxMobileTerminal/Sources/CmuxMobileTerminal/TerminalInputTextView.swift
Replaces automatic theme cycling with manual, delayed fixture advancement. Accessory controls use direct terminal-owned backgrounds without the removed sticky-lock border handling.
Theme parity UI validation
ios/cmuxUITests/TerminalThemeParityUITests.swift
Validates theme transitions, control contrast, geometry, enabled and disabled states, modifier states, toolbar discovery, and screenshot pixel differences under light and dark appearances.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant TerminalThemeParityUITests
  participant WorkspaceDetailDelayedTerminalPreviewView
  participant WorkspaceDetailView
  participant MobileTerminalChromeStyle
  participant ToolbarControls
  TerminalThemeParityUITests->>WorkspaceDetailDelayedTerminalPreviewView: select appearance and theme fixture
  WorkspaceDetailDelayedTerminalPreviewView->>WorkspaceDetailView: apply fixture after delayed frame delivery
  WorkspaceDetailView->>MobileTerminalChromeStyle: derive active chrome colors
  MobileTerminalChromeStyle->>ToolbarControls: apply foreground, tint, background, and color scheme
  TerminalThemeParityUITests->>ToolbarControls: capture controls and screenshot pixels
  TerminalThemeParityUITests->>TerminalThemeParityUITests: validate contrast, geometry, and modifier states
Loading

Possibly related PRs

Suggested labels: bug


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 2 warnings)

Check name Status Explanation Resolution
Cmux Swift Actor Isolation ❌ Error The Swift 6 production diff adds @MainActor to the pure value struct MobileTerminalChromeStyle, unnecessarily coupling immutable Color/ColorScheme data to MainActor. Make MobileTerminalChromeStyle nonisolated, or justify a required MainActor boundary; keep only UI accessors and view types MainActor-isolated.
Docstring Coverage ⚠️ Warning Docstring coverage is 7.69% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ⚠️ Warning The description explains the change and testing, but it omits the required Demo Video, Review Trigger, and Checklist sections. Add the required Demo Video section with a link or attachment, then complete the Review Trigger and Checklist sections.
✅ Passed checks (22 passed)
Check name Status Explanation
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.
Cmux Swift Blocking Runtime ✅ Passed The only added sleep/polling is in WorkspaceDetailDelayedTerminalPreviewView, enclosed by #if DEBUG and marked UI-test-only; other loops are in the cmuxUITests target.
Cmux Browser Automation Off-Main ✅ Passed The commit changes only iOS terminal chrome and accessory UI files; it does not modify Sources/TerminalController.swift or ControlCommandExecutionPolicy.swift, so it does not worsen browser automat...
Cmux Expensive Synchronous Load ✅ Passed The production diff adds only theme/color and toolbar styling, and removes glass styling; searches and AST checks found no agent-history loaders, file parsing, directory scans, or synchronous load...
Cmux Cache Substitution Correctness ✅ Passed The diff only derives transient toolbar styling from activeTerminalTheme; it adds no persistence, history, undo, or snapshot consumer. Theme updates remain event-driven via revision-checked render...
Cmux No Hacky Sleeps ✅ Passed The PR changes only Swift files. The rule explicitly scopes TypeScript, JavaScript, shell, and non-Swift runtime scripts; Swift timing is covered by a separate check.
Cmux Algorithmic Complexity ✅ Passed The PR production diff adds no scalable collection loops, filters, sorts, or per-target scans; it adds only constant-time theme/style lookups. Test/debug collection code is exempt.
Cmux Swift Concurrency ✅ Passed The PR adds no Dispatch, Combine, or completion-handler patterns; its only explicit Task is stored, cancelled on disappearance, and used by a DEBUG/UI-test SwiftUI preview.
Cmux Swift @Concurrent ✅ Passed The patch adds no async, await, nonisolated, or @concurrent code; it only adds synchronous @MainActor color helpers, so no concurrency-rule violation is introduced.
Cmux Swift Package Boundaries ✅ Passed All 16 production changes are in existing Packages/iOS SwiftPM targets; they are SwiftUI/UIKit terminal-chrome glue, with no ios/cmuxPackage/Sources changes or app-target domain logic.
Cmux Swiftpm Lockfiles ✅ Passed The PR changes only Swift source and tests. It changes no Package.swift, Package.resolved, .gitignore, or Xcode project references, and package ignore files do not ignore Package.resolved.
Cmux Swift Logging ✅ Passed The patch adds no print, debugPrint, dump, NSLog, Logger, or file/stdout logging. The only match is an unchanged NSLog inside #if DEBUG.
Cmux User-Facing Error Privacy ✅ Passed The PR changes toolbar styling and DEBUG/UI-test fixtures only; added production literals contain no user-facing errors, alerts, raw upstream details, credentials, tokens, or other forbidden diagno...
Cmux Full Internationalization ✅ Passed The HEAD diff changes SwiftUI styling, APIs, and existing text rendering only; it adds no user-facing copy, localization keys, catalogs, web messages, or locale metadata.
Cmux Swiftui State Layout ✅ Passed The commit adds color/value parameters and toolbar modifiers only; it introduces no ObservableObject/@published, GeometryReader, lazy-row store reference, or render-time state mutation. Existing @S...
Cmux Architecture Rethink ✅ Passed Live chrome uses immutable MobileTerminalChromeStyle snapshots and reducer-owned accessory state; new sleeps, polling, and task flags are confined to the #if DEBUG UI-test fixture.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed The Swift diff adds no NSWindow, NSPanel, NSWindowController, Window, or WindowGroup. The changed preview is DEBUG/UI-test-only, and the auxiliary-window lint passes.
Cmux Source Artifacts ✅ Passed All 18 changed paths are tracked Swift source or test files; no artifact-like path or binary enters the diff, and screenshot writes are confined to optional XCTest evidence output.
Cmux No Test Or Debug Seam In Production Source ✅ Passed The only new test-specific production code is a genuinely DEBUG-only UI fixture in its dedicated source file; no new test accessor, visibility widening, or seam-named member was added.
Cmux No Ambient Global State ✅ Passed Production diff adds a constructable MobileTerminalChromeStyle and type-owned extensions; the only new static var is a private computed environment lookup, with no singleton or stored global mutabl...
Title check ✅ Passed The title clearly summarizes the main change: fixing iOS terminal toolbar contrast during theme changes.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch task-ios-light-toolbar-contrast

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ios/cmuxUITests/TerminalThemeParityUITests.swift`:
- Around line 383-394: Replace the fixed Thread.sleep in the sticky gesture test
with a deadline-bounded predicate poll that waits until the rendered difference
from armedPixels confirms the one-shot state has cleared. Preserve the existing
tap sequence and add a comment explaining that tap() clears the one-shot armed
state while doubleTap() arms the sticky lock.
- Around line 245-264: Update capture(_:name:expectedBackground:baselineFrames:)
to accept a non-optional [String: CGRect], and replace optional-unwrapping logic
with an empty-dictionary check to represent “no baseline yet.” Update its
callers, including the flow around line 106, to pass the dictionary directly
rather than converting an empty dictionary to nil.
- Around line 275-300: In the controls loop, apply the qualifyingPixelFraction
assertion against control.minimumContrast only when control.isEnabled is true.
Keep the disabled-control maximumContrast >= 3 recognizability assertion active
for disabled controls, along with the existing baseline-frame validation.
- Around line 168-202: Bound the transition burst collection in the sampling
logic around burstDeadline to a fixed maximum sample count, and retain
screenshots without eagerly decoding ScreenshotPixels. Decode each screenshot
lazily as it is analyzed in the enabled-control loop, while preserving the
existing contrast checks and failure reporting; remove the redundant
samples.isEmpty assertion because the earlier XCTUnwrap already establishes
non-empty samples.

In
`@Packages/iOS/CmuxAgentChatUI/Sources/CmuxAgentChatUI/Transcript/Rows/ChatSessionHeaderView.swift`:
- Around line 224-238: Update the working and idle branches in the
status-indicator view so they remain visually distinguishable when
foregroundColor is provided and pulse animation is disabled. Preserve their
state-specific shapes or styling against the terminal background, while keeping
the existing needsInput and ended treatments unchanged.

In
`@Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailDelayedTerminalPreviewView.swift`:
- Around line 128-138: The theme parity advance task in
advanceThemeParitySequence must be stored or driven by .task(id:) so it can be
cancelled, and must use defer to always reset themeAdvancePending on
cancellation or early return. In
Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailDelayedTerminalPreviewView.swift
lines 140-154, bound deliverThemeParityPreviewFrame’s retry loop with a deadline
or attempt limit and surface exhaustion through themeStage.

In
`@Packages/iOS/CmuxMobileTerminal/Sources/CmuxMobileTerminal/TerminalInputTextView.swift`:
- Around line 1053-1058: Remove the unused stickyLockBorderColor assignment from
the AccessoryActionButton handling near isStickyLocked, since isStickyLocked is
always set to false and the overlay border cannot draw. Only remove the
AccessoryActionButton properties as well if a repository-wide search confirms
they have no other call sites.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 3cf588d3-5cf8-4c29-993b-e7ca1fb0cf6a

📥 Commits

Reviewing files that changed from the base of the PR and between 621164d and ac5e60b.

📒 Files selected for processing (13)
  • Packages/iOS/CmuxAgentChatUI/Sources/CmuxAgentChatUI/Transcript/Rows/ChatSessionHeaderView.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/AltScreenNoticeButton.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/TerminalTheme+SwiftUI.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/View+MobileNavigationChrome.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceBackButton.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceChangesChipLabel.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceChangesToolbarButton.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailDelayedTerminalPreviewView.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailView.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceToolbarTitleView.swift
  • Packages/iOS/CmuxMobileSupport/Sources/CmuxMobileSupport/MobileCompactToolbarTitleStack.swift
  • Packages/iOS/CmuxMobileTerminal/Sources/CmuxMobileTerminal/TerminalInputTextView.swift
  • ios/cmuxUITests/TerminalThemeParityUITests.swift

Comment thread ios/cmuxUITests/TerminalThemeParityUITests.swift
Comment thread ios/cmuxUITests/TerminalThemeParityUITests.swift
Comment thread ios/cmuxUITests/TerminalThemeParityUITests.swift
Comment thread ios/cmuxUITests/TerminalThemeParityUITests.swift Outdated
@azooz2003-bit
azooz2003-bit force-pushed the task-ios-light-toolbar-contrast branch from ac5e60b to f6a9600 Compare August 11, 2026 00:45

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ios/cmuxUITests/TerminalThemeParityUITests.swift`:
- Around line 376-385: Update the armed and sticky screenshot capture sequences
in the relevant UI test method to await the existing waitForScreenshot helper
after control.tap() and control.doubleTap() before capturing screenshots and
evaluating difference assertions. Add a brief comment to the tap sequence noting
that the second tap clears the one-shot armed state and doubleTap() arms the
sticky lock.

In
`@Packages/iOS/CmuxMobileTerminal/Sources/CmuxMobileTerminal/TerminalInputTextView.swift`:
- Around line 1053-1057: Remove the unused sticky overlay border implementation
from AccessoryActionButton, including isStickyLocked, stickyLockBorderColor, and
updateStickyLockBorder(). Also delete the unconditional isStickyLocked
assignment in TerminalInputTextView.swift while preserving the direct background
configuration behavior.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 5f1cae39-7f14-422b-9b89-0f8a2c6f6977

📥 Commits

Reviewing files that changed from the base of the PR and between ac5e60b and f6a9600.

📒 Files selected for processing (4)
  • Packages/iOS/CmuxAgentChatUI/Sources/CmuxAgentChatUI/Transcript/Rows/ChatSessionHeaderView.swift
  • Packages/iOS/CmuxMobileShellUI/Sources/CmuxMobileShellUI/WorkspaceDetailDelayedTerminalPreviewView.swift
  • Packages/iOS/CmuxMobileTerminal/Sources/CmuxMobileTerminal/TerminalInputTextView.swift
  • ios/cmuxUITests/TerminalThemeParityUITests.swift

Comment thread ios/cmuxUITests/TerminalThemeParityUITests.swift
@azooz2003-bit
azooz2003-bit force-pushed the task-ios-light-toolbar-contrast branch from f6a9600 to 0714596 Compare August 11, 2026 00:58
@azooz2003-bit
azooz2003-bit force-pushed the task-ios-light-toolbar-contrast branch 2 times, most recently from 9585e9b to 2626afd Compare August 11, 2026 01:08

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 2626afd. Configure here.

Comment thread ios/cmuxUITests/TerminalThemeParityUITests.swift
@azooz2003-bit
azooz2003-bit force-pushed the task-ios-light-toolbar-contrast branch from 2626afd to d01deb4 Compare August 11, 2026 01:20

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ios/cmuxUITests/TerminalThemeParityUITests.swift`:
- Around line 417-436: Update the sticky-state wait predicate and final
assertion in the double-tap flow around control.doubleTap() to compare
stickyPixels against the previously captured resting screenshot/pixels, in
addition to distinguishing it from armedPixels. Require the sticky presentation
to differ from restingPixels by the established threshold so the wait completes
only after the sticky state has rendered, while preserving the existing
armed-state comparison.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: c8f07658-683e-47e4-93eb-a3c0a965cc0e

📥 Commits

Reviewing files that changed from the base of the PR and between 2626afd and d01deb4.

📒 Files selected for processing (1)
  • ios/cmuxUITests/TerminalThemeParityUITests.swift

Comment thread ios/cmuxUITests/TerminalThemeParityUITests.swift
@azooz2003-bit
azooz2003-bit force-pushed the task-ios-light-toolbar-contrast branch from d01deb4 to bd17609 Compare August 11, 2026 01:29
@azooz2003-bit
azooz2003-bit force-pushed the task-ios-light-toolbar-contrast branch from bd17609 to 80472b6 Compare August 11, 2026 02:14
@lawrencecchen lawrencecchen added the stale-revisit Closed after 30+ days without activity; preserved for possible revisit or reopening. label Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stale-revisit Closed after 30+ days without activity; preserved for possible revisit or reopening.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants