macos task switch focus

This commit is contained in:
Ian Gulliver
2026-10-17 09:04:32 -07:00
parent ebf1561c4a
commit c42a513e2c
14 changed files with 68 additions and 12 deletions
+6 -2
View File
@@ -170,8 +170,12 @@ final class ChatModel {
}
}
func takeFocusStart() -> Bool {
let take = focusStart && session == nil
func takeFocus() -> Bool {
let asked = taskId != nil && store.composerFocus == taskId
if asked {
store.composerFocus = nil
}
let take = asked || (focusStart && session == nil)
focusStart = false
return take
}
+6 -1
View File
@@ -332,7 +332,12 @@ struct ComposerView: View {
}
.onAppear {
text = store.drafts?.composerText(draftKey) ?? ""
if chat.takeFocusStart() {
if chat.takeFocus() {
focused = true
}
}
.onChange(of: store.composerFocus) {
if chat.takeFocus() {
focused = true
}
}
+1
View File
@@ -41,6 +41,7 @@ final class Store {
var leadSessions: [AgentSession] = []
let leadFeed: Feed
var jump: (taskId: String, seq: Int64)?
var composerFocus: String?
var summaryReads: [String: Int64] = [:]
private(set) var leadMore = false
var todoStarting: Set<String> = []
+2
View File
@@ -260,8 +260,10 @@ final class SwitcherModel {
if store.inbox.contains(where: { $0.taskId == taskId }) {
store.focusTask(taskId, .inbox)
} else if let task = store.findTask(taskId), store.unreadSummary(task) {
store.composerFocus = taskId
store.openSummary(task)
} else {
store.composerFocus = taskId
store.focusTask(taskId, .transcript)
}
}