mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-09 08:33:59 +00:00
* feat(chat-ui): native macOS chat window shell with sessions sidebar, context usage, and slash commands * feat(macos): host redesigned chat window shell and complete gateway chat transport * fix(chat-ui): gate slash panel on catalog support and register window shell shortcuts outside menus * fix(chat-ui): make sidebar selection tags optional and sync programmatic composer text into the focused NSTextView * fix(macos): track in-window session switches for chat window reuse * fix(chat-ui): re-bootstrap in place when deleting the active main session * docs(macos): describe the redesigned native chat window * fix(macos): scope bare global session RPCs to the routing default agent * style(chat-ui): restore blank line between rebased helpers * fix(macos): scope selected global session actions * fix(macos): refresh chat routing identity * fix(chat-ui): hide delete for main sessions * fix(macos): remove duplicate session patch path * fix(chat-ui): resolve sidebar session aliases * fix(chat-ui): isolate sidebar alias resolution * fix(chat-ui): reconcile active session aliases * fix(chat-ui): prefer selected session aliases * chore(i18n): refresh chat window inventory * fix(chat-ui): return sidebar filter result * refactor(chat-ui): split session actions
39 lines
1.1 KiB
Swift
39 lines
1.1 KiB
Swift
import Foundation
|
|
|
|
extension OpenClawChatViewModel {
|
|
public func refreshSessions(limit: Int? = nil) {
|
|
let context = self.currentSessionSnapshot()
|
|
Task { await self.fetchSessions(limit: limit, sessionSnapshot: context) }
|
|
}
|
|
|
|
public func startNewSession(worktree: Bool = false) async {
|
|
await self.performStartNewSession(worktree: worktree)
|
|
}
|
|
|
|
public func requestSessionReset() {
|
|
Task { await self.performReset() }
|
|
}
|
|
|
|
public func requestSessionCompact() {
|
|
Task { await self.performCompact() }
|
|
}
|
|
|
|
public func setSessionPinned(_ sessionKey: String, pinned: Bool) {
|
|
Task {
|
|
do {
|
|
try await self.transport.patchSession(
|
|
key: sessionKey,
|
|
label: nil,
|
|
category: nil,
|
|
pinned: pinned,
|
|
archived: nil,
|
|
unread: nil)
|
|
} catch {
|
|
self.errorText = error.localizedDescription
|
|
return
|
|
}
|
|
await self.fetchSessions(limit: nil, sessionSnapshot: self.currentSessionSnapshot())
|
|
}
|
|
}
|
|
}
|