From ad0989dda8dc6420d16aaaa6aa40c47917145342 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 28 Oct 2026 09:16:00 +0100 Subject: assistant: unload the resident model from the settings page The Load button reads Unload on the loaded model and posts to the router's /models/unload. An error from the router lands in modelError, the same place a failed load reports, and the list is re-read either way. The model comes back on the next request for it or when the canvas opens. Co-Authored-By: Claude Opus 5.5 --- desktop/modules/assistant/AssistantPage.qml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'desktop/modules/assistant/AssistantPage.qml') diff --git a/desktop/modules/assistant/AssistantPage.qml b/desktop/modules/assistant/AssistantPage.qml index bf35763..b25b33b 100644 --- a/desktop/modules/assistant/AssistantPage.qml +++ b/desktop/modules/assistant/AssistantPage.qml @@ -168,7 +168,8 @@ Column { wrapMode: Text.Wrap text: "Each chat uses the model picked in the canvas header, else the preferred one. " + "Opening the canvas loads that model if it is a local one and another is in. " - + "Load swaps a model in now, for every client, without changing the preference." + + "Load swaps a model in now, for every client, without changing the preference; " + + "Unload frees the VRAM until something asks for the model again." } Small { @@ -218,9 +219,10 @@ Column { Button { id: loadBtn anchors { right: parent.right; rightMargin: 6; verticalCenter: parent.verticalCenter } - text: "Load" - enabled: page.asst.loading === "" && !modelRow.loaded - onClicked: page.asst.loadModel(modelRow.modelData.id) + text: modelRow.loaded ? "Unload" : "Load" + enabled: page.asst.loading === "" + onClicked: modelRow.loaded ? page.asst.unloadModel(modelRow.modelData.id) + : page.asst.loadModel(modelRow.modelData.id) } Button { anchors { right: loadBtn.left; rightMargin: 6; verticalCenter: parent.verticalCenter } -- cgit v1.2.3