Skip to content

Settings: group sidebar navigation by taxonomy - #13222

Merged
teamleaderleo merged 4 commits into
mainfrom
lane-b-settings-taxonomy
Sep 24, 2026
Merged

teamleaderleo merged 4 commits into
mainfrom
lane-b-settings-taxonomy

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 20, 2026 •

Copy link
Copy Markdown
Collaborator

Reviewer summary

Groups Settings navigation by the way people look for a setting, with clearer labels and descriptions.

What changed

  • group the existing Settings destinations into eight browse categories: General, Terminal, Workspace, Sidebar & Dock, Agents & Automation, Browser & Files, Remote & Devices, and Keyboard & Advanced
  • keep every existing SettingsSectionID, section title, setting ID, stored value, default, persistence path, and feature implementation unchanged
  • keep search flat and relevance-ranked while a query is active, preserving the existing search result IDs and row anchors
  • add focused taxonomy tests plus a small CmuxSettingsUI-localized catalog for the new group headers

Navigation compatibility

The taxonomy is presentation-only. Existing leaf destinations still use the same section:<rawValue> IDs and cmux.settings.navigate targets, so restored selection, cmux settings open <target>, search hits, and deep row anchors continue through the existing paths.

Tests

  • SettingsTaxonomyTests verifies every existing navigation leaf appears exactly once in the taxonomy
  • verifies the intended group membership/order
  • verifies empty-query search retains the original section entry IDs/order and matching anchor IDs

Coordinates Lane B from teamleaderleo/Tact#79.


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


Summary by cubic

Groups the Settings sidebar into eight browse categories so the default view is easier to scan, implementing Lane B of teamleaderleo/Tact#79. Search stays flat and relevance-ranked while a query is active, preserving existing search hit IDs, row anchors, and navigation targets. Every existing SettingsSectionID leaf, including .computers, appears in exactly one group.

Compatibility

  • Existing SettingsSectionID values, section titles, setting IDs, defaults, and persistence paths are unchanged.
  • Group titles are localized; CmuxSettingsUI now packages its Resources directory with an English source locale.
  • No migration or rollout action is needed because the taxonomy is presentation-only.

Tests

  • SettingsTaxonomyTests verifies every leaf appears exactly once, group membership/order, empty-query search IDs, and localized group titles.

Written for commit 2ccf8cf. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features
    • Settings navigation is now organized into clearly labeled groups, making sections easier to browse.
    • Added localized group titles in Arabic, German, English, Spanish, French, Japanese, Korean, Simplified Chinese, and Traditional Chinese.
    • Search results remain flat and relevance-ranked for faster discovery.
    • Settings resources are now included in the application package.

Replaces #13039 (same commits, head branch moved into the org so it gets the build cache and can be kept current with main).

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 1 minute.

Check out review usage here.

View limit details

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

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

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 934d9aa9-0777-4782-a345-743abf1c7880

📥 Commits

Reviewing files that changed from the base of the PR and between aa51f16 and 2ccf8cf.

📒 Files selected for processing (4)
  • Packages/macOS/CmuxSettingsUI/Sources/CmuxSettingsUI/Navigation/SettingsTaxonomy.swift
  • Packages/macOS/CmuxSettingsUI/Sources/CmuxSettingsUI/Resources/Localizable.xcstrings
  • Packages/macOS/CmuxSettingsUI/Sources/CmuxSettingsUI/Scene/SettingsWindowScene.swift
  • Packages/macOS/CmuxSettingsUI/Tests/CmuxSettingsUITests/SettingsTaxonomyTests.swift

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.

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@greptile-apps

greptile-apps Bot commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

The PR appears safe to merge; the previously reported SwiftPM localization issue is fixed and no new actionable issue remains.

Summary

Groups the Settings sidebar into localized browse categories while preserving the existing flat, relevance-ranked search behavior and stable navigation identities.

  • Adds a presentation-only taxonomy covering every existing settings section exactly once.
  • Renders grouped sections only when search is inactive.
  • Packages localized taxonomy headings for every supported locale.
  • Declares the Swift package's English default localization and adds taxonomy coverage tests.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Settings sidebar] --> B{Search active?}
  B -->|Yes| C[Flat relevance-ranked matches]
  B -->|No| D[Taxonomy groups]
  D --> E[Existing section entries]
  C --> F[Stable entry IDs and anchors]
  E --> F
Loading

Reviews (5) · Last reviewed commit: "fix(settings): declare package resource ..."

Comment thread Packages/macOS/CmuxSettingsUI/Package.swift
@cursor

cursor Bot commented Sep 20, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@teamleaderleo
teamleaderleo force-pushed the lane-b-settings-taxonomy branch from 1a997f0 to e0ef757 Compare September 21, 2026 08:08
@cursor

cursor Bot commented Sep 21, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

The taxonomy covered 20 of the 21 SettingsSectionID leaves; .computers
had no group, so everyNavigationLeafAppearsExactlyOnce failed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@teamleaderleo teamleaderleo removed the full-ci EXPENSIVE: full macOS tests/builds; overrides selective PR routing. Not needed for normal checks. label Sep 22, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Parked — Thornquay 💠 (triage, 2026-09-23). Still wanted: main is still a flat sidebar — SettingsWindowScene.swift:~250 is a bare List(selection:) { ForEach(matches) { SettingsSidebarEntryRow(...) } } with no Section(header:), ordered by SettingsSectionID.allCases declaration order. All 21 section IDs are covered by the new SettingsTaxonomyGroup. Two conflicts (Package.swift, Localizable.xcstrings).

One thing to check before landing: if the "Settings pages as a workspace pane" work from #12737 is still queued somewhere, it is the one change that would collide with this taxonomy. It is not on main today — #13862 landed only the SettingsRuntime struct→class fix, one file — so the collision is hypothetical, but #12737 is still open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo merged commit c9fc9ea into main Sep 24, 2026
53 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in cmux backlog Sep 24, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Merged origin/main in 2ccf8cf.

  • Package.swift: took main's resources list (.process("Resources/Localizable.xcstrings") plus .copy("Resources/CustomSidebars")). This branch's .process("Resources") would also have processed the Custom Sidebars starter .swift and .js files that main now keeps in that folder.
  • The package Localizable.xcstrings was added on both sides. Resolved with scripts/merge-xcstrings.py against an empty base: this PR's 7 taxonomy keys plus main's 11 keys, no overlap.
  • SettingsSectionID on main still has the same 21 cases, so SettingsTaxonomyGroup still covers every leaf. SettingsWindowScene.swift merged without conflicts.

lint-xcstrings passes, as does the CI-guard sweep apart from local environment gaps (submodules, runner env). On this head, ci-status is green, including macos / swift-package-tests. App-host shards were routed out.

I test-merged #13217 and #13210 on top, and neither conflicts with this branch.

— CapsLock g1 🪁
Run: run_sync_four_settings_pack_prs_with_main_20260924_9479903e

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