Skip to content

Stop bundling example sidebars in the app - #4662

Merged
lawrencecchen merged 2 commits into
mainfrom
feat-remove-example-sidebars
May 23, 2026
Merged

lawrencecchen merged 2 commits into
mainfrom
feat-remove-example-sidebars

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented May 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The sidebar picker shipped six toy example providers (project worktrees, attention queue, dev server, last prompt, super compact, browser stack) that demoed the CmuxExtensionSidebarProvider API. They weren't real features. Dropped from the app target so the picker only shows the default workspaces sidebar.

Examples/CmuxExtensionSidebarExamples/ stays in the repo as a buildable Swift package — kept as reference material for users authoring their own provider. Just no longer linked into the app.

This is the first of two PRs. The second will add docs for vibecoding your own sidebar (beta) and a right-click "Open docs" item on the sidebar picker chip.

Test plan

  • Open the sidebar picker → only "Default Workspaces" appears
  • Sidebar still renders workspaces correctly
  • Build succeeds (Xcode no longer pulls in the Examples package)

View with Codesmith Autofix with Codesmith
Need help on this PR? Tag @codesmith with what you need. Autofix is disabled.


Note

Low Risk
Low risk: removes a single NotificationCenter trigger for refreshing the extension sidebar snapshot, reducing redundant updates without touching core rendering or data flows.

Overview
Stops listening for BrowserStackSidebar.stateDidLoadNotification to trigger refreshExtensionSidebarSnapshot() in ContentView, leaving sidebar refreshes driven only by the existing immediate and debounced observation publishers.

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


Summary by cubic

Remove the toy example sidebars from the app so the picker only shows the Default Workspaces sidebar. Also removed a leftover BrowserStackSidebar notification listener to fix the build after dropping the examples.

  • Dependencies

    • Removed CmuxExtensionSidebarExamples from the app target and Xcode project; kept sources under Examples/CmuxExtensionSidebarExamples/ as a buildable package.
  • Bug Fixes

    • Dropped the unused BrowserStackSidebar.stateDidLoadNotification subscription in ContentView (it was only posted by the removed examples).

Written for commit 43f3f06. Summary will update on new commits. Review in cubic

Summary by CodeRabbit

  • Refactor
    • Removed sidebar example providers from the extension configuration and updated framework dependencies.

Review Change Stack

The picker-only options users could choose between were toy
demonstrations of the sidebar extension API. They aren't useful as
shipped UI, and they made the picker look like the app shipped
"workspaces by project" / "attention queue" / etc. as first-class
features. Drop the package from the app target so the picker only
lists the default workspaces sidebar; keep the source under
Examples/CmuxExtensionSidebarExamples/ as a buildable reference
package for users authoring their own provider.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@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.

@vercel

vercel Bot commented May 23, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment May 23, 2026 12:36pm
cmux-staging Building Building Preview, Comment May 23, 2026 12:36pm

@coderabbitai

coderabbitai Bot commented May 23, 2026 •

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This PR removes the CmuxExtensionSidebarExamples local Swift package dependency and replaces it with CmuxExtensionKit throughout the Xcode project configuration. The ContentView source is updated to clear the sidebar providers list and remove the now-unused import.

Changes

Sidebar Dependency Migration

Layer / File(s) Summary
Xcode project configuration – replace sidebar examples with extension kit
cmux.xcodeproj/project.pbxproj
Removes the local package reference, build file entries, and framework links for CmuxExtensionSidebarExamples, and updates all package dependency lists to use CmuxExtensionKit instead across PBXBuildFile, PBXFrameworksBuildPhase, packageProductDependencies, packageReferences, XCLocalSwiftPackageReference, and XCSwiftPackageProductDependency sections.
Source code update – remove examples import and clear providers
Sources/ContentView.swift
Removes the import of CmuxExtensionSidebarExamples and updates CmuxExtensionSidebarSelection.providers to return an empty array instead of SidebarExamples.providers.

Possibly related PRs

  • manaflow-ai/cmux#4309: Introduces and wires CmuxExtensionKit sidebar prototypes into the UI and project dependencies in the same area where this PR removes the CmuxExtensionSidebarExamples-based providers.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 The sidebar examples hop away,
Making room for Kit's debut today,
Dependencies swap with a gentle hand,
Empty providers now take a stand,
Fresh foundations in Xcode's command!

🚥 Pre-merge checks | ✅ 17
✅ Passed checks (17 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: removing example sidebar providers from the app bundle while keeping them as reference code.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 Actor Isolation ✅ Passed PR only removes example sidebar examples package and returns empty array instead of example providers; no new actor isolation mistakes introduced or existing issues worsened.
Cmux Swift Blocking Runtime ✅ Passed PR removes sidebar examples by returning [] without introducing blocking primitives. asyncAfter/Task.sleep found are pre-existing, unrelated code in command palette and workspace features.
Cmux No Hacky Sleeps ✅ Passed Timers added in Resources/feed-tui/index.ts are legitimate timeouts and polling, not hacky sleeps fixing races. Main changes remove Swift example sidebars.
Cmux Swift Concurrency ✅ Passed PR removes example sidebars from app build, adding CmuxExtensionSidebarSelection enum with static methods and @MainActor UI code, containing no new async/Task/Combine/DispatchQueue patterns.
Cmux Swift @Concurrent ✅ Passed PR contains no async/concurrent changes. No @concurrent annotations added, no nonisolated async functions, no actor isolation changes—only feature removal and UI refactoring.
Cmux Swift File And Package Boundaries ✅ Passed PR removes example sidebar references from app with ~2-line change to ContentView.swift. Existing oversized file touched incidentally; no new oversized files or large additions.
Cmux Swift Logging ✅ Passed PR complies with Swift logging rules: single NSLog is DEBUG-guarded, no print/debugPrint/dump found, all cmuxDebugLog within DEBUG guards, no secrets exposed, no MainActor-coupled Logger issues.
Cmux User-Facing Error Privacy ✅ Passed No user-facing error messages, alerts, or recovery copy are modified. The PR only removes bundled example sidebar providers from the UI, not expose internal details in error contexts.
Cmux Full Internationalization ✅ Passed PR removes user-facing strings and their localization entries; no new untranslated text introduced. Changes align with PR objective to remove example sidebars from app build.
Cmux Swiftui State Layout ✅ Passed PR removes example sidebar dependencies; no new @Published/@StateObject, GeometryReader, lazy list store refs, or render-time state mutations introduced.
Cmux Architecture Rethink ✅ Passed Removes example sidebars by returning empty array from providers property. No timing patterns, mutable state, observers, or split UI lifecycle introduced. Maintains single source of truth.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PR removes sidebar example providers without adding or materially changing any standalone windows; no NSWindow, NSPanel, NSWindowController, or WindowGroup declarations introduced.
Description check ✅ Passed PR description covers the core changes, rationale, and test plan, but lacks some template structure and is missing a demo video and review trigger block.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat-remove-example-sidebars

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.

@greptile-apps

greptile-apps Bot commented May 23, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

Removes the six toy example sidebar providers (CmuxExtensionSidebarExamples) from the app target so the sidebar picker shows only the Default Workspaces entry. The examples package remains in the repo under Examples/ as a reference for extension authors.

  • providers now returns []; descriptors still prepends .defaultWorkspaces directly, so the picker always shows at least one item.
  • The BrowserStackSidebar.stateDidLoadNotification observer in VerticalTabsSidebar is removed along with the package that published it.
  • All four removal sites in project.pbxproj (build file, frameworks phase, package reference, product dependency) are cleaned up consistently.

Confidence Score: 5/5

Safe to merge — a clean, additive removal of example code with no effect on production sidebar behavior.

The only functional change is providers returning [] instead of example entries; descriptors still prepends .defaultWorkspaces unconditionally, so the picker always shows the real sidebar. The notification observer removed was owned by the now-deleted package. Project file cleanup is consistent across all four reference sites.

No files require special attention.

Important Files Changed

Filename Overview
Sources/ContentView.swift Removes import and usage of CmuxExtensionSidebarExamples; providers returns []; default workspaces entry remains hardcoded in descriptors; BrowserStackSidebar notification observer removed cleanly.
cmux.xcodeproj/project.pbxproj All four CmuxExtensionSidebarExamples references removed consistently: PBXBuildFile, frameworks build phase, package references list, and XCSwiftPackageProductDependency.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Sidebar Picker open] --> B[CmuxExtensionSidebarSelection.descriptors]
    B --> C["[.defaultWorkspaces] + providers.map{...}"]
    C --> D{"providers list"}
    D -->|before PR| E["SidebarExamples.providers\n(6 toy entries)"]
    D -->|after PR| F["[]\n(empty)"]
    E --> G[Picker shows 7 entries]
    F --> H["Picker shows 1 entry:\nDefault Workspaces"]
Loading

Reviews (2): Last reviewed commit: "Remove leftover BrowserStackSidebar noti..." | Re-trigger Greptile

The notification was posted by the example provider, which no longer
ships with the app. Without the example, nothing posts the name so
the .onReceive subscription is dead. Drop it to fix the build.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

This branch was successfully deployed

1 active deployment
Preview – cmux — 43f3f066 Deployed May 23, 2026 by vercel[bot]
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