Files
openclaw/apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel+SessionActions.swift
Peter Steinberger bb658d0a6d feat(macos): redesign chat window as native shell with sessions sidebar, toolbar pickers, slash commands, and context usage (#101103)
* 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
2026-07-07 02:06:10 +01:00

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())
}
}
}