diff --git a/kde/gui/chatblockmodel.cpp b/kde/gui/chatblockmodel.cpp index 927e713..7a652ba 100644 --- a/kde/gui/chatblockmodel.cpp +++ b/kde/gui/chatblockmodel.cpp @@ -232,6 +232,7 @@ void ChatBlockModel::reset() beginResetModel(); m_blocks.clear(); m_lineBuffer.clear(); + m_inContext = false; m_state = State::BlockStart; m_inCodeFence = false; m_fenceLanguage.clear(); @@ -680,6 +681,18 @@ void ChatBlockModel::processLine(const QString &line) } case State::BlockEnd: + // Hide prompt context blocks from the rendered chat, matching olliesrv. + if (line.trimmed() == QStringLiteral("")) { + m_inContext = true; + return; + } + if (line.trimmed() == QStringLiteral("")) { + m_inContext = false; + return; + } + if (m_inContext) + return; + // [[[end]]] closes the current block if (s_endRe.match(line).hasMatch()) { // Emit final update so QML picks up the completed segment state. diff --git a/kde/gui/chatblockmodel.h b/kde/gui/chatblockmodel.h index da75296..d900765 100644 --- a/kde/gui/chatblockmodel.h +++ b/kde/gui/chatblockmodel.h @@ -134,6 +134,9 @@ private: QList m_blocks; QString m_lineBuffer; + // Context blocks are injected into prompts but hidden from chat rendering. + bool m_inContext = false; + // Code fence state (for streaming) bool m_inCodeFence = false; QString m_fenceLanguage;