Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 @@ -190,7 +190,7 @@ public struct HomePalette: Hashable, Sendable {
return p
}

/// How the Chief chat's bubbles look (Settings > Agents > Chief Chat >
/// How the Chief chat's bubbles look (Settings > Chief > Chief Chat >
/// Bubble Style, `home.chiefBubbleStyle`; Leo 2026-10-19: iMessage's blue
/// stays the default, the theme's colours are the option).
public enum BubbleStyle: Sendable, Hashable {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@ final class HomeHostView: NSView {
_ = services?.registry.perform(ChiefInspectorHandlers.actionID, invocation: invocation)
}
settingsView.recents = services.chiefModelRecents
// All Chief Settings…: Settings > Chief, the page with every Chief setting.
settingsView.onAllSettings = { [weak self, weak services] in
self?.settings.close()
try? services?.settingsWindow.show(section: nil, focus: true, route: "#/settings/chief")
}
settingsView.checkHarness = { [weak services] id in (try? await services?.agentHarnesses.doctor(id: id))?["ok"]?.boolValue == true }
settingsView.onRename = { [weak service] name in
// One op; the daemon refusing it (or no daemon, or one without the op) is false, and the card says so.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import CmuxNextSettings
import Foundation

/// `cmux.chief.backend.*` of the Chief editor (Home's New Chief and Edit Chief page, Settings >
/// Agents > Chiefs; docs/chiefs-create-byo-backend.md): the acpmux harnesses a Chief may run on,
/// Chief > Chiefs; docs/chiefs-create-byo-backend.md): the acpmux harnesses a Chief may run on,
/// adding one the person brings, and the real hello turn before the Chief record takes it. Thin:
/// every call runs on ``AgentHarnessCenter``, the one path the `agent.harness.*` actions and
/// Settings > Agents use.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public import CmuxNextSettings
/// The Chief pet's rows in the Chief Settings popover's Appearance section (Leo 2026-10-19: "pet
/// needs those settings to be obviously there"): Show Chief Pet (`home.chiefPetEnabled`) and the
/// pet's character (`home.chiefPetMascot`), each pixel mascot drawn beside its name. They read
/// and write the same `SettingsController` as Settings > Agents > Chief Pet, so a change in
/// and write the same `SettingsController` as Settings > Chief > Chief Pet, so a change in
/// either shows in the other; a managed key's control is disabled, as on the Settings page.
@MainActor
public final class ChiefPetSettingsRows: NSObject {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ public final class HomeNativeTranscriptView: NSView {
}
}

/// Settings > Agents > Chief Chat > Bubble Style: iMessage's colours or the theme's, live.
/// Settings > Chief > Chief Chat > Bubble Style: iMessage's colours or the theme's, live.
private func followBubbleStyle() {
withObservationTracking {
bubbleStyle = DesignSettings.shared.homeChiefBubblesThemed ? .theme : .iMessage
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/// Where a Chief conversation runs and the other host its card offers
/// (the app's `HomeService.chiefHost(of:)`, ``HomeChiefSettingsView/setHost(place:switchTo:)``):
/// "Runs in the cloud" with "Switch to cmux20", or nils for a Chief with one host.
public nonisolated struct HomeChiefHostLine: Equatable, Sendable {
/// The line under the Chief's name; nil keeps the engine's own line.
public var place: String?
/// The other host's label; nil hides the switch.
public var switchTo: String?

public init(place: String? = nil, switchTo: String? = nil) {
self.place = place
self.switchTo = switchTo
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ public final class HomeChiefSettingsView: NSView {
public var onAvatar: () -> Void = {}
/// Show Memory: runs "Chief: Open Memory Inspector".
public var onShowMemory: () -> Void = {}
/// All Chief Settings…: the app opens Settings > Chief (this card is the quick version).
public var onAllSettings: () -> Void = {}
/// "Switch to …" under where the Chief runs: the app moves the Chief tab to the other host.
public var onSwitchHost: () -> Void = {}
/// The brain took a pick (harness, model or effort): the Home list reads the Chiefs' engines again.
Expand Down Expand Up @@ -178,6 +180,11 @@ public final class HomeChiefSettingsView: NSView {
stack.setCustomSpacing(Metrics.space4, after: appearanceRows)
appearanceHeader.isHidden = true
appearanceRows.isHidden = true
// The rest of the Chief's settings (the pet, the chat's look, every Chief) live in Settings.
let allSettings = HomeChiefLinkButton(title: HomeEngineStrings.allChiefSettings, target: self, action: #selector(openAllSettings))
allSettings.setAccessibilityIdentifier("cmux.home.chief.allSettings")
stack.addArrangedSubview(allSettings)
stack.setCustomSpacing(Metrics.space4, after: allSettings)
addFullWidth(diagnosticsRow())
buildDiagnostics()
addFullWidth(diagnostics)
Expand Down Expand Up @@ -353,6 +360,10 @@ public final class HomeChiefSettingsView: NSView {
onShowMemory()
}

@objc func openAllSettings() {
onAllSettings()
}

@objc func openTraces() {
NSWorkspace.shared.revealInBackground([HomeChiefFiles(muxHome: muxHome).traceDirectory])
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ public nonisolated enum HomeEngineStrings {
static var nextTurn: String { String(localized: "home.engine.nextTurn", defaultValue: "Changes apply from the next turn.", table: "Home", bundle: .module) }
static var openTraces: String { String(localized: "home.engine.openTraces", defaultValue: "Show Traces", table: "Home", bundle: .module) }
static var showMemory: String { String(localized: "home.engine.showMemory", defaultValue: "Show Memory", table: "Home", bundle: .module) }
/// The popover's link to Settings > Chief, the page with every Chief setting.
static var allChiefSettings: String {
String(localized: "home.engine.allChiefSettings", defaultValue: "All Chief Settings…", table: "Home", bundle: .module)
}
static var brainFormat: String {
String(localized: "home.engine.brain", defaultValue: "Runs on this Mac (%@). Tools: zoom, date, spawn, tell and the harness's own.", table: "Home", bundle: .module)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5408,6 +5408,138 @@
}
}
},
"home.engine.allChiefSettings": {
"comment": "Chief settings popover: link that opens Settings > Chief, the page with every Chief setting. Chief is a product name, keep it untranslated.",
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "All Chief Settings…"
}
},
"ja": {
"stringUnit": {
"state": "needs_review",
"value": "Chief のすべての設定…"
}
},
"ar": {
"stringUnit": {
"state": "needs_review",
"value": "كل إعدادات Chief…"
}
},
"bs": {
"stringUnit": {
"state": "needs_review",
"value": "Sve postavke za Chief…"
}
},
"da": {
"stringUnit": {
"state": "needs_review",
"value": "Alle Chief-indstillinger…"
}
},
"de": {
"stringUnit": {
"state": "needs_review",
"value": "Alle Chief-Einstellungen…"
}
},
"es": {
"stringUnit": {
"state": "needs_review",
"value": "Todos los ajustes de Chief…"
}
},
"fr": {
"stringUnit": {
"state": "needs_review",
"value": "Tous les réglages de Chief…"
}
},
"it": {
"stringUnit": {
"state": "needs_review",
"value": "Tutte le impostazioni di Chief…"
}
},
"km": {
"stringUnit": {
"state": "needs_review",
"value": "ការកំណត់ Chief ទាំងអស់…"
}
},
"ko": {
"stringUnit": {
"state": "needs_review",
"value": "모든 Chief 설정…"
}
},
"nb": {
"stringUnit": {
"state": "needs_review",
"value": "Alle Chief-innstillinger…"
}
},
"pl": {
"stringUnit": {
"state": "needs_review",
"value": "Wszystkie ustawienia Chief…"
}
},
"pt-BR": {
"stringUnit": {
"state": "needs_review",
"value": "Todos os ajustes do Chief…"
}
},
"ru": {
"stringUnit": {
"state": "needs_review",
"value": "Все настройки Chief…"
}
},
"th": {
"stringUnit": {
"state": "needs_review",
"value": "การตั้งค่า Chief ทั้งหมด…"
}
},
"tr": {
"stringUnit": {
"state": "needs_review",
"value": "Tüm Chief ayarları…"
}
},
"uk": {
"stringUnit": {
"state": "needs_review",
"value": "Усі налаштування Chief…"
}
},
"vi": {
"stringUnit": {
"state": "needs_review",
"value": "Tất cả cài đặt Chief…"
}
},
"zh-Hans": {
"stringUnit": {
"state": "needs_review",
"value": "所有 Chief 设置…"
}
},
"zh-Hant": {
"stringUnit": {
"state": "needs_review",
"value": "所有 Chief 設定…"
}
}
}
},
"home.engine.showMemory": {
"extractionState": "manual",
"localizations": {
Expand Down
132 changes: 132 additions & 0 deletions Packages/macOS/CmuxNext/Sources/CmuxNextSettings/Localizable.xcstrings
Original file line number Diff line number Diff line change
Expand Up @@ -77768,6 +77768,138 @@
}
}
},
"settings.category.chief": {
"comment": "Settings sidebar: the category with every Chief setting (the Chiefs list, Chief Chat, Chief Pet). Chief is a product name, keep it untranslated.",
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Chief"
}
},
"ar": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"bs": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"da": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"de": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"es": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"fr": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"it": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"ja": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"km": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"ko": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"nb": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"pl": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"pt-BR": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"ru": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"th": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"tr": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"uk": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"vi": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"zh-Hans": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
},
"zh-Hant": {
"stringUnit": {
"state": "needs_review",
"value": "Chief"
}
}
}
},
"settings.category.privacy": {
"extractionState": "manual",
"localizations": {
Expand Down
Loading