trim chat to last 30 blocks on initial load and session switch

This commit is contained in:
Levi Neely 2026-08-01 10:19:22 +02:00
parent 2d2ba1eeaf
commit df41aad5cb
3 changed files with 20 additions and 2 deletions

View File

@ -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);

View File

@ -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();

View File

@ -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")