diff --git a/Sources/App/AppDelegate.swift b/Sources/App/AppDelegate.swift index 02a663d..67cbdb3 100644 --- a/Sources/App/AppDelegate.swift +++ b/Sources/App/AppDelegate.swift @@ -55,7 +55,6 @@ final class AppDelegate: NSObject, NSApplicationDelegate, NSSpeechSynthesizerDel // 两个权限都 OK → 直接启动 if hasAccessibility && hasInputMonitoring { startKeyMonitor() - showReadyAlert() return } diff --git a/Sources/UI/AgentNotchView.swift b/Sources/UI/AgentNotchView.swift index 4ec0fa4..2b01faf 100644 --- a/Sources/UI/AgentNotchView.swift +++ b/Sources/UI/AgentNotchView.swift @@ -126,9 +126,7 @@ struct AgentNotchView: View { // MARK: - 实时流式输出 private var streamingContentView: some View { - let hasTools = !tracker.toolEntries.isEmpty - - return ScrollViewReader { proxy in + ScrollViewReader { proxy in ScrollView(.vertical, showsIndicators: false) { Text(tracker.streamingContent) .font(.system(size: 12)) @@ -137,8 +135,8 @@ struct AgentNotchView: View { .frame(maxWidth: .infinity, alignment: .leading) .id("streaming_bottom") } - .frame(height: hasTools ? maxStreamingHeight : nil) - .frame(maxHeight: maxStreamingHeight) + .frame(minHeight: 40, maxHeight: maxStreamingHeight) + .layoutPriority(1) .padding(.horizontal, 14) .padding(.vertical, 6) .onChange(of: tracker.streamingContent) { _, _ in @@ -172,11 +170,10 @@ struct AgentNotchView: View { .clipped() .padding(.horizontal, 4) .onReceive(tracker.$toolEntries) { entries in - // 并行工具调用防抖:0.1s 内连续出现只滚一次到底 scrollWorkItem?.cancel() let workItem = DispatchWorkItem { - withAnimation { - if let lastID = entries.last?.id { + if let lastID = entries.last?.id { + withAnimation(nil) { proxy.scrollTo(lastID, anchor: .bottom) } }