Gate Orchestra behind Nucleic Control; lavender Home composer accent
Orchestra is a Nucleic Control capability now: - Core: SessionController withholds the fan-out consent unless the session's project is under Control (resolvedEffort still maps the sentinel to xhigh, so a stray selection never reaches a backend verbatim). Covered by a new SessionController test. - macOS: the effort menu shows Orchestra disabled with a 'Requires Nucleic Control' note + tooltip off-control; effectiveEffort demotes a carried-over selection so the label/glow never show it active where it can't run. - Home composer themes lavender (the Control accent) for a Control project — the Auto/Merge accents and a persistent ring on the field, tracking the project picker. - Remote: WireProject carries isNucleicControlled (decode-tolerant) so the iOS effort picker gates Orchestra the same way. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
1c9b120033
commit
e03ce837cf
@@ -28,7 +28,7 @@ struct StartChatComposer: View {
|
||||
.font(.subheadline)
|
||||
}
|
||||
Spacer()
|
||||
EffortMenu(effort: $effort)
|
||||
EffortMenu(effort: $effort, controlled: selected?.isNucleicControlled ?? false)
|
||||
Toggle(isOn: $auto) {
|
||||
Label("Auto", systemImage: auto ? "bolt.fill" : "bolt.slash")
|
||||
}
|
||||
@@ -40,7 +40,7 @@ struct StartChatComposer: View {
|
||||
TextField("Describe a task…", text: $draft, axis: .vertical)
|
||||
.textFieldStyle(.roundedBorder)
|
||||
.lineLimit(1...5)
|
||||
.orchestraGlow(active: MobileEfforts.isOrchestra(effort))
|
||||
.orchestraGlow(active: MobileEfforts.isOrchestra(effort) && (selected?.isNucleicControlled ?? false))
|
||||
Button {
|
||||
if let project = selected {
|
||||
store.startChat(in: project.id, message: draft, effort: effort, auto: auto)
|
||||
|
||||
Reference in New Issue
Block a user