From 1d2fffdcab47e0c86df656212e747299b67f535a Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Mon, 27 Jul 2026 09:09:24 +0200 Subject: [PATCH] gui: persist prompt draft text per session When switching between sessions, the draft text in the prompt is saved and restored. Each pane maintains a _drafts map keyed by session ID, so switching away and back preserves whatever was typed. --- gui/ChatPane.qml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gui/ChatPane.qml b/gui/ChatPane.qml index dc504cb..8e25e19 100644 --- a/gui/ChatPane.qml +++ b/gui/ChatPane.qml @@ -23,13 +23,25 @@ Item { property string paneCwd: "" property int chatOffset: 0 + // Per-session draft text storage + property var _drafts: ({}) + property string _prevSessionId: "" + // Fetch chat when session changes onSessionIdChanged: { + // Save draft from previous session + if (_prevSessionId !== "") { + _drafts[_prevSessionId] = panePrompt.text + } + paneModel.rawText = "" chatOffset = 0 paneState = "idle" paneCwd = "" if (sessionId !== "") { + // Restore draft for new session (or empty) + panePrompt.text = _drafts[sessionId] || "" + // Fetch initial chat and config let chat = dbus.getChat(sessionId, 0) if (chat) { @@ -40,7 +52,10 @@ Item { if (cfg && cfg.cwd) paneCwd = cfg.cwd let st = dbus.getState(sessionId) if (st) paneState = st + } else { + panePrompt.text = "" } + _prevSessionId = sessionId } // Listen for D-Bus signals filtered to our session