From df41aad5cb41fb1f134d2bff1e259bcb01400aa8 Mon Sep 17 00:00:00 2001 From: Levi Neely <141506390+lneely@users.noreply.github.com> Date: Sat, 1 Aug 2026 10:19:22 +0200 Subject: [PATCH] trim chat to last 30 blocks on initial load and session switch --- gui/chatblockmodel.cpp | 11 +++++++++++ gui/chatblockmodel.h | 1 + gui/main.qml | 10 ++++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/gui/chatblockmodel.cpp b/gui/chatblockmodel.cpp index 27668db..b581365 100644 --- a/gui/chatblockmodel.cpp +++ b/gui/chatblockmodel.cpp @@ -73,6 +73,17 @@ void ChatBlockModel::reset() emit countChanged(); } +void ChatBlockModel::trimFront(int keepCount) +{ + if (m_blocks.size() <= keepCount) + return; + int removeCount = m_blocks.size() - keepCount; + beginRemoveRows(QModelIndex(), 0, removeCount - 1); + m_blocks.remove(0, removeCount); + endRemoveRows(); + emit countChanged(); +} + void ChatBlockModel::processLine(const QString &line) { QRegularExpressionMatch m = s_headerRe.match(line); diff --git a/gui/chatblockmodel.h b/gui/chatblockmodel.h index 11ffc7f..0c4ace0 100644 --- a/gui/chatblockmodel.h +++ b/gui/chatblockmodel.h @@ -43,6 +43,7 @@ public: Q_INVOKABLE void appendData(const QString &text); Q_INVOKABLE void reset(); + Q_INVOKABLE void trimFront(int keepCount); signals: void countChanged(); diff --git a/gui/main.qml b/gui/main.qml index 8a29a81..acd36d4 100644 --- a/gui/main.qml +++ b/gui/main.qml @@ -61,7 +61,10 @@ ApplicationWindow { Component.onCompleted: { var log = ollie.readLog() - if (log) chatModel.appendData(log) + if (log) { + chatModel.appendData(log) + chatModel.trimFront(30) + } } Connections { @@ -69,7 +72,10 @@ ApplicationWindow { function onActiveSessionIdChanged() { chatModel.reset() var log = ollie.readLog() - if (log) chatModel.appendData(log) + if (log) { + chatModel.appendData(log) + chatModel.trimFront(30) + } } function onStreamingDone() { chatModel.appendData("\n[info]\nsession ended\n")