Skip to content

Tighten browser import sheet UI#1593

Merged
lawrencecchen merged 9 commits intotask-browser-import-followupsfrom
task-browser-import-minimal-ui
Mar 17, 2026
Merged

Tighten browser import sheet UI#1593
lawrencecchen merged 9 commits intotask-browser-import-followupsfrom
task-browser-import-minimal-ui

Conversation

@lawrencecchen
Copy link
Copy Markdown
Contributor

@lawrencecchen lawrencecchen commented Mar 17, 2026

Summary

  • make the browser import sheet smaller and adapt its height to the active step
  • tighten the import copy, source profile list, and destination rows so the wizard wastes less space
  • update the browser import presentation test and the UI test labels for the shorter copy

Testing

  • xcodebuild -quiet -project GhosttyTabs.xcodeproj -scheme cmux-unit -destination 'platform=macOS' -derivedDataPath /tmp/cmux-task-browser-import-minimal-ui-unit -only-testing:cmuxTests/BrowserImportMappingTests test
  • xcodebuild -quiet -project GhosttyTabs.xcodeproj -scheme cmux-ci -destination 'platform=macOS' -derivedDataPath /tmp/cmux-task-browser-import-minimal-ui-ci build-for-testing
  • ./scripts/reload.sh --tag task-browser-import-minimal-ui

Issues


Summary by cubic

Shrink the browser import sheet, add lighter blank‑tab import hints (inline strip, floating card, toolbar chip), and defer menu‑triggered dialog presentation to remove flakiness. Settings now deep‑link to the import controls; copy/layout are tighter, new debug controls tune toolbar spacing and profile popover padding, and tests are stabilized.

  • Refactors

    • Panel defaults to 560×292 and auto‑resizes; source profiles list uses dynamic height (1–5 rows) and hides help for a single profile; labels shortened and steps now “Step X of 3”; destination options renamed to “Separate profiles” / “Merge into one,” with contextual help and “additional data” note shown only when relevant.
    • Added blank‑tab import hint variants with actions (“Import…”, “Browser Settings”, “Hide Hint”); Settings > Browser adds a toggle with state notes; “Import From Browser…” added to Sidebar Help and the profile menu; EN/JA copy tightened.
    • Debug controls for toolbar accessory spacing and profile popover padding, plus a hint variant/state debug window.
  • Bug Fixes

    • Present the import dialog asynchronously after menu tracking; Preferences now forward the .browserImport deep link.
    • UI tests: launch hooks for hint variant/show/dismissed, polling for stability, flows to auto‑open the wizard and open/scroll Settings; unit/UI tests cover source‑profiles sizing, hint presentation, settings navigation, and debug defaults.

Written for commit c4742a4. Summary will update on new commits.

@vercel
Copy link
Copy Markdown

vercel bot commented Mar 17, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Mar 17, 2026 11:47pm

Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 17, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 33bd24d9-889f-41e5-a294-aa014b767995

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch task-browser-import-minimal-ui
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

No issues found across 4 files

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

1 issue found across 2 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="cmuxUITests/BrowserImportProfilesUITests.swift">

<violation number="1" location="cmuxUITests/BrowserImportProfilesUITests.swift:155">
P2: The wizard-open poll can return too early because it uses `||` with window existence, but callers immediately click `Next`. Wait for the Next button itself to avoid UI-test race flakiness.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

"Expected the import wizard to open"
)
let wizardOpened = browserImportPollUntil(timeout: 5.0) {
app.buttons["Next"].exists || app.windows["Import Browser Data"].exists
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot Mar 17, 2026

Choose a reason for hiding this comment

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

P2: The wizard-open poll can return too early because it uses || with window existence, but callers immediately click Next. Wait for the Next button itself to avoid UI-test race flakiness.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At cmuxUITests/BrowserImportProfilesUITests.swift, line 155:

<comment>The wizard-open poll can return too early because it uses `||` with window existence, but callers immediately click `Next`. Wait for the Next button itself to avoid UI-test race flakiness.</comment>

<file context>
@@ -151,10 +151,10 @@ final class BrowserImportProfilesUITests: XCTestCase {
-            "Expected the import wizard to open"
-        )
+        let wizardOpened = browserImportPollUntil(timeout: 5.0) {
+            app.buttons["Next"].exists || app.windows["Import Browser Data"].exists
+        }
+        XCTAssertTrue(wizardOpened, "Expected the import wizard to open")
</file context>
Suggested change
app.buttons["Next"].exists || app.windows["Import Browser Data"].exists
app.buttons["Next"].exists
Fix with Cubic

@lawrencecchen lawrencecchen merged commit 7f589bf into task-browser-import-followups Mar 17, 2026
7 of 11 checks passed
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

1 issue found across 6 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="Sources/cmuxApp.swift">

<violation number="1" location="Sources/cmuxApp.swift:2017">
P2: Add the new browser profile popover debug window identifier to `cmuxAuxiliaryWindowIdentifiers`; otherwise Cmd+W/menu Close can target workspace/panel closing instead of this auxiliary debug window.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread Sources/cmuxApp.swift
window.titlebarAppearsTransparent = false
window.isMovableByWindowBackground = true
window.isReleasedWhenClosed = false
window.identifier = NSUserInterfaceItemIdentifier("cmux.browserProfilePopoverDebug")
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai bot Mar 17, 2026

Choose a reason for hiding this comment

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

P2: Add the new browser profile popover debug window identifier to cmuxAuxiliaryWindowIdentifiers; otherwise Cmd+W/menu Close can target workspace/panel closing instead of this auxiliary debug window.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At Sources/cmuxApp.swift, line 2017:

<comment>Add the new browser profile popover debug window identifier to `cmuxAuxiliaryWindowIdentifiers`; otherwise Cmd+W/menu Close can target workspace/panel closing instead of this auxiliary debug window.</comment>

<file context>
@@ -1949,6 +1996,205 @@ private final class BrowserImportHintDebugWindowController: NSWindowController,
+        window.titlebarAppearsTransparent = false
+        window.isMovableByWindowBackground = true
+        window.isReleasedWhenClosed = false
+        window.identifier = NSUserInterfaceItemIdentifier("cmux.browserProfilePopoverDebug")
+        window.center()
+        window.contentView = NSHostingView(rootView: BrowserProfilePopoverDebugView())
</file context>
Fix with Cubic

bn-l pushed a commit to bn-l/cmux that referenced this pull request Apr 3, 2026
…ort-minimal-ui

Tighten browser import sheet UI
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