pragma ComponentBehavior: Bound import ZShell.Config import ZShell.Llm import QtQuick import QtQuick.Controls import Quickshell import qs.Helpers import qs.Modules.Notifications.Sidebar import qs.Components import qs.Services Item { id: root anchors.fill: parent anchors.margins: Tokens.padding.small Component.onCompleted: { if (ChatState.firstOpen) { ChatState.openDraft(); stack.push(chatList); stack.push(chatContent); ChatState.firstOpen = false; return; } if (ChatState.inChat) { stack.push(chatList); stack.push(chatContent); } else stack.push(chatList); } function openChat(): void { if (stack.depth < 2) stack.push(chatContent); } StackView { id: stack anchors.fill: parent } Component { id: chatList ChatList { model: LlmClient.chats onDeleteChatRequest: chat => { const wasCurrent = chat === ChatState.chatSession; LlmClient.chats.remove(chat); if (wasCurrent) ChatState.openDraft(); } onLoadChatRequest: (chat, index) => { ChatState.chatSession = chat; openChat(); ChatState.inChat = true; } onNewChatRequest: { ChatState.openDraft(); openChat(); ChatState.inChat = true; } } } Component { id: chatContent ChatContent { chatData: ChatState.chatSession onRequestClose: { stack.pop(); ChatState.inChat = false; ChatState.openDraft(); } } } }