Skip to content

cmux-tui: refuse tabs.newTabKind and tabs.hiddenButtons as removed, and keep the retired keys in step with the app - #20219

Closed
teamleaderleo wants to merge 5 commits into
feat-cmux-nextfrom
op-next-toolbar/tui-retired-parity
Closed

teamleaderleo wants to merge 5 commits into
feat-cmux-nextfrom
op-next-toolbar/tui-retired-parity

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The settings export leaves retired keys out, so cmux-tui keeps its own copy of the app's retired-key list (cmux-config/src/schema/retired.rs). That copy had fallen behind. tabs.newTabKind (#20127) and tabs.hiddenButtons (#20144) were retired in the app but not here. With no schema row and no retired entry for them, a cmux-tui settings set on either key went down the unknown-path branch, which can write a value nothing reads. The app refuses it as removed.

  • Adds both keys, with the app's reasons.
  • tests/retired_parity.rs reads the app's retiredKeys literal (SettingsSchema+Retired.swift, via include_str!) and compares keys and reasons with RETIRED_KEYS, so the next key the app retires fails here until it is mirrored.

Verification

every_key_the_app_retired_is_refused_here_with_its_reason, run with scripts/verify-cmux-tui-hosted.sh --filter:

  • Red on 91616de (run 38350778388, Linux and macOS): the left side had appearance.tabBarBackground and updates.quietHours; the right side also had tabs.hiddenButtons and tabs.newTabKind.
  • Green on 35457bb (run 38353713501): Linux and macOS tests, Linux lint and macOS clippy, and MSRV pass.
  • Windows: no check needed. The change is a const table entry in cmux-config plus a test, and it doesn't touch cmux-tui-core or cmux-tui.

Changelog

Fixed: cmux-tui refuses settings set on the removed tabs.newTabKind and tabs.hiddenButtons keys, as the app does.

🤖 Generated with Claude Code


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


Summary by cubic

Makes settings set reject removed tabs.newTabKind and tabs.hiddenButtons as removed, matching the app instead of writing unused values.

  • Mirrors the app’s retirement reasons and checks exact key/reason parity.
  • Tracks the app’s retired-key source in the cmux-tui tree key and artifact workflow, so Swift-only retirements trigger validation.

Written for commit 071607a. Summary will update on new commits.

View guided diff Turn on auto-fix

teamleaderleo and others added 4 commits October 12, 2026 21:47
… reason

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…moved, as the app does

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo temporarily deployed to cmux-tui-merge-tree October 13, 2026 06:36 — with GitHub Actions Inactive
@coderabbitai

coderabbitai Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

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: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 1fe29250-9acd-4243-8ff8-8bd2adc2fa24

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
  • 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.

…es; it fails on an entry it cannot read

Adds SettingsSchema+Retired.swift (and base's missing design-tokens.json) to the cmux-tui
tree key and the artifacts workflow paths (check_cmux_tui_tree_inputs.py), so a Swift-only
retirement runs this test. Review finding on #20219.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cursor

cursor Bot commented Oct 13, 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

Copy link
Copy Markdown
Collaborator Author

Superseded by c07c598 (cx-d5b5d) on feat-cmux-next. schemas/settings/retired-keys.json is now the one retired-key list: cmux-config embeds it and the app's Swift table is generated from it, so the hand-copied table this PR fixed no longer exists. That file already has tabs.newTabKind and tabs.hiddenButtons, and the cmux-tui tree key and artifacts paths cover both it and design-tokens.json. Nothing here is left to land.

This branch was previously deployed

2 inactive deployments
artifacts — 071607ae Deployed Oct 13, 2026 by teamleaderleo via publish tree-addressed cmux-tui #9968
cmux-tui-merge-tree — 071607ae Deployed Oct 13, 2026 by teamleaderleo via publish the merge tree #355
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