Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
d1eb159
remote-tmux: add per-host color registry
ejc3 Jul 2, 2026
5152360
remote-tmux: add originColors beta flag + Settings toggle
ejc3 Jul 2, 2026
6de8d9c
remote-tmux: tint remote workspace rows by host color
ejc3 Jul 2, 2026
1d85cf0
remote-tmux: make the Remote host colors toggle searchable in Settings
ejc3 Jul 17, 2026
92b3f07
remote-tmux: own the host color registry on the controller (no ambien…
ejc3 Jul 19, 2026
38c0a15
tests: pass origin-color snapshot params in SidebarAppKitRowCellTests
ejc3 Jul 19, 2026
0363f33
remote-tmux: address origin-colors review findings
ejc3 Jul 19, 2026
ffb345f
remote-tmux: drop the origin-color lookup no caller can reach
ejc3 Jul 22, 2026
a420d4c
tests: pass the new row-color fields in the suspension fixture
ejc3 Jul 25, 2026
e1cae6a
localization: translate the remote host colors beta setting
ejc3 Sep 14, 2026
4e89582
remote-tmux: name the host after a workspace title another workspace …
ejc3 Sep 16, 2026
e1d3a12
cmuxTests: pin that host colors stay distinguishable on the sidebar rail
ejc3 Sep 16, 2026
da3c954
remote-tmux: draw host colors from a palette picked to stay distingui…
ejc3 Sep 16, 2026
0bfe477
remote-tmux: soften the host palette
ejc3 Sep 16, 2026
afd5fc3
sidebar: key each cached row snapshot by its own color and host title
ejc3 Sep 26, 2026
eebfd67
remote-tmux: adapt two host-color tests to main's accent and sidebar …
ejc3 Sep 28, 2026
31b60f1
remote-tmux: say the host color tints the sidebar row, which is all i…
ejc3 Sep 29, 2026
5c369ee
Merge commit 'dc3bd2e2c3f' into rebase1001/pr-7193
ejc3 Oct 1, 2026
fcf43d9
Merge remote-tracking branch 'origin/main' into rebase1001/pr-7193
ejc3 Oct 1, 2026
e4ab3a9
Merge remote-tracking branch 'origin/main' into rebase1001/pr-7193
ejc3 Oct 1, 2026
8997f5f
Merge remote-tracking branch 'origin/main' into pr-7193
ejc3 Oct 1, 2026
1774e02
Merge main (51b60f3b3025) into cx-bl-outside-prs-7193
teamleaderleo Oct 2, 2026
fbab2e1
test(sidebar): catch stale manual-color state after clearing a host tint
teamleaderleo Oct 2, 2026
d36d581
fix(sidebar): unblock origin presentation checks and add boundary reg…
teamleaderleo Oct 2, 2026
95d5ad4
Merge main baseline repairs into origin sidebar regression tests
teamleaderleo Oct 2, 2026
2347097
Merge main notification baseline test repair
teamleaderleo Oct 2, 2026
48901f4
fix: refresh manual color state and validate remote host inputs
teamleaderleo Oct 2, 2026
f9fcdc3
Merge current main into remote-origin presentation
teamleaderleo Oct 2, 2026
1305970
chore: keep remote-origin translations in a minimal catalog diff
teamleaderleo Oct 2, 2026
522bf40
Merge main (00f182fc0fad) into pr7193-1003
ejc3 Oct 3, 2026
d33b775
Keep the string catalog as main's text plus this change's entries
ejc3 Oct 4, 2026
f1ab5ca
Merge main (186cec797812) into remote-tmux-origin-colors
ejc3 Oct 4, 2026
1ed57ef
Keep the string catalog as main's text plus this change's entries
ejc3 Oct 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -89,5 +89,26 @@ public struct BetaFeaturesCatalogSection: SettingCatalogSection {
userDefaultsKey: "remoteTmux.beta.enabled"
)

/// Remote host origin colors: tint each remote workspace's sidebar row and
/// tab with a stable per-host color (hashed from the host name into a palette
/// picked to stay distinguishable, collisions taking the next color) so servers are easy
/// to tell apart and a given host shows the same color in every window. A
/// user's manual workspace color always wins. Defaults off; while off, remote
/// workspaces render with no origin tint.
public let remoteTmuxOriginColors = DefaultsKey<Bool>(
id: "remoteTmux.beta.originColors.enabled",
defaultValue: false,
userDefaultsKey: "remoteTmux.beta.originColors.enabled"
)

/// Remote host names on duplicate titles: when sidebar workspaces share a title and come from
/// different places, show each remote one's host after its title, leaving off the domain the
/// hosts share. Defaults off; while off, titles show as they are.
public let remoteTmuxOriginHostTitles = DefaultsKey<Bool>(
id: "remoteTmux.beta.originHostTitles.enabled",
defaultValue: false,
userDefaultsKey: "remoteTmux.beta.originHostTitles.enabled"
)

public init() {}
}
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,8 @@ extension Array where Element == CuratedSettingEntry {
),
.init(section: .betaFeatures, id: "customSidebars", title: String(localized: "settings.betaFeatures.customSidebars", defaultValue: "Custom Sidebars"), synonyms: "Custom Sidebars custom sidebars swift json interpreted vibe beta unstable"),
.init(section: .betaFeatures, id: "remoteTmux", title: String(localized: "settings.betaFeatures.remoteTmux", defaultValue: "Remote tmux"), synonyms: "Remote tmux remote tmux ssh control mode -CC mirror session window pane sidebar workspace beta unstable"),
.init(section: .betaFeatures, id: "remoteTmuxOriginColors", title: String(localized: "settings.betaFeatures.remoteTmuxOriginColors", defaultValue: "Remote host colors"), synonyms: String(localized: "settings.search.alias.setting.betaFeatures.remote-tmux-origin-colors", defaultValue: "Remote host colors remote host colors origin color tint per-host server workspace sidebar row tab beta unstable")),
.init(section: .betaFeatures, id: "remoteTmuxOriginHostTitles", title: String(localized: "settings.betaFeatures.remoteTmuxOriginHostTitles", defaultValue: "Remote host names on duplicate titles"), synonyms: String(localized: "settings.search.alias.setting.betaFeatures.remote-tmux-origin-host-titles", defaultValue: "Remote host names on duplicate titles hostname server duplicate same title collision workspace sidebar row beta unstable")),
.init(
section: .betaFeatures,
id: "workspace-todo-controls",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ public struct BetaFeaturesSection: View {
@State private var extensions: DefaultsValueModel<Bool>
@State private var customSidebars: DefaultsValueModel<Bool>
@State private var remoteTmux: DefaultsValueModel<Bool>
@State private var remoteTmuxOriginColors: DefaultsValueModel<Bool>
@State private var remoteTmuxOriginHostTitles: DefaultsValueModel<Bool>
@State private var workspaceTodoControls: DefaultsValueModel<Bool>
@State private var workspaceTodosChecklistStyle: DefaultsValueModel<WorkspaceTodoChecklistStyle>
/// `DisableCustomSidebars` (MDM): same treatment for the interpreted
Expand All @@ -23,6 +25,8 @@ public struct BetaFeaturesSection: View {
_extensions = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.extensions))
_customSidebars = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.customSidebars))
_remoteTmux = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.remoteTmux))
_remoteTmuxOriginColors = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.remoteTmuxOriginColors))
_remoteTmuxOriginHostTitles = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.remoteTmuxOriginHostTitles))
_workspaceTodoControls = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.workspaceTodoControls))
_workspaceTodosChecklistStyle = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.workspaceTodosChecklistStyle))
}
Expand All @@ -45,6 +49,10 @@ public struct BetaFeaturesSection: View {
SettingsCardDivider()
remoteTmuxRow
SettingsCardDivider()
remoteTmuxOriginColorsRow
SettingsCardDivider()
remoteTmuxOriginHostTitlesRow
SettingsCardDivider()
workspaceTodoControlsRow
SettingsCardDivider()
workspaceTodosChecklistStyleRow
Expand All @@ -66,6 +74,8 @@ public struct BetaFeaturesSection: View {
extensions,
customSidebars,
remoteTmux,
remoteTmuxOriginColors,
remoteTmuxOriginHostTitles,
workspaceTodoControls,
workspaceTodosChecklistStyle,
]
Expand Down Expand Up @@ -189,6 +199,39 @@ public struct BetaFeaturesSection: View {
}
}

@ViewBuilder
private var remoteTmuxOriginColorsRow: some View {
SettingsCardRow(
configurationReview: .settingsOnly,
searchAnchorID: "setting:betaFeatures:remoteTmuxOriginColors",
String(localized: "settings.betaFeatures.remoteTmuxOriginColors", defaultValue: "Remote host colors"),
subtitle: remoteTmuxOriginColors.current
? String(localized: "settings.betaFeatures.remoteTmuxOriginColors.subtitleOn", defaultValue: "Tints each remote workspace's sidebar row with a stable per-host color so servers are easy to tell apart. Your manual workspace color always wins.")
: String(localized: "settings.betaFeatures.remoteTmuxOriginColors.subtitleOff", defaultValue: "Leaves remote workspaces without an origin color until you enable it here.")
) {
Toggle("", isOn: Binding(get: { remoteTmuxOriginColors.current }, set: { remoteTmuxOriginColors.set($0) }))
.labelsHidden()
.controlSize(.small)
.accessibilityIdentifier("SettingsBetaRemoteTmuxOriginColorsToggle")
}
}

@ViewBuilder
private var remoteTmuxOriginHostTitlesRow: some View {
SettingsCardRow(
configurationReview: .settingsOnly,
searchAnchorID: "setting:betaFeatures:remoteTmuxOriginHostTitles",
String(localized: "settings.betaFeatures.remoteTmuxOriginHostTitles", defaultValue: "Remote host names on duplicate titles"),
subtitle: remoteTmuxOriginHostTitles.current
? String(localized: "settings.betaFeatures.remoteTmuxOriginHostTitles.subtitleOn", defaultValue: "When workspaces share a title, shows each remote one's host after the title, leaving off the domain the hosts share.")
: String(localized: "settings.betaFeatures.remoteTmuxOriginHostTitles.subtitleOff", defaultValue: "Leaves duplicate workspace titles as they are until you enable it here.")
) {
Toggle("", isOn: Binding(get: { remoteTmuxOriginHostTitles.current }, set: { remoteTmuxOriginHostTitles.set($0) }))
.labelsHidden()
.controlSize(.small)
.accessibilityIdentifier("SettingsBetaRemoteTmuxOriginHostTitlesToggle")
}
}
}

/// Small warning callout with a yellow triangle, used at the top of
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,8 @@ struct SettingsRowAnchorResolutionTests {
"setting:betaFeatures:feed",
"setting:betaFeatures:customSidebars",
"setting:betaFeatures:remoteTmux",
"setting:betaFeatures:remoteTmuxOriginColors",
"setting:betaFeatures:remoteTmuxOriginHostTitles",
"setting:customSidebars:enabled",
"setting:computerUse:permissions",
"setting:browser:history",
Expand Down
Loading