From 2e42686c80414872bc4f5cb8a326620896f9dd72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Mon, 23 Mar 2026 14:31:18 -0300 Subject: [PATCH 1/2] Should fix build. --- src/eepp/ui/uiscenenode.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/eepp/ui/uiscenenode.cpp b/src/eepp/ui/uiscenenode.cpp index dce59e127..182f70d6d 100644 --- a/src/eepp/ui/uiscenenode.cpp +++ b/src/eepp/ui/uiscenenode.cpp @@ -444,9 +444,11 @@ void UISceneNode::setThreadPool( const std::shared_ptr& threadPool ) } static std::string getErrorContext( size_t offset, std::string_view content ) { - static constexpr auto CONTEXT_LENGTH = 40; - std::size_t left = std::max( 0ul, offset - CONTEXT_LENGTH ); - std::size_t right = std::min( content.size(), offset + 40 ); + static constexpr std::size_t CONTEXT_LENGTH = 40; + std::size_t minVal = offset - CONTEXT_LENGTH; + std::size_t maxVal = offset + CONTEXT_LENGTH; + std::size_t left = std::max( static_cast( 0ul ), minVal ); + std::size_t right = std::min( content.size(), maxVal ); return std::string{ content.substr( left, right - left ) }; } From 0ff676c0602599a5300b8abe06f130cf4247bf73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Mon, 23 Mar 2026 14:54:26 -0300 Subject: [PATCH 2/2] Stupid fixes. --- src/eepp/ui/uiscenenode.cpp | 2 +- src/tools/ecode/plugins/aiassistant/chatui.cpp | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/eepp/ui/uiscenenode.cpp b/src/eepp/ui/uiscenenode.cpp index 182f70d6d..c49161ff3 100644 --- a/src/eepp/ui/uiscenenode.cpp +++ b/src/eepp/ui/uiscenenode.cpp @@ -445,7 +445,7 @@ void UISceneNode::setThreadPool( const std::shared_ptr& threadPool ) static std::string getErrorContext( size_t offset, std::string_view content ) { static constexpr std::size_t CONTEXT_LENGTH = 40; - std::size_t minVal = offset - CONTEXT_LENGTH; + std::size_t minVal = offset >= CONTEXT_LENGTH ? offset - CONTEXT_LENGTH : 0; std::size_t maxVal = offset + CONTEXT_LENGTH; std::size_t left = std::max( static_cast( 0ul ), minVal ); std::size_t right = std::min( content.size(), maxVal ); diff --git a/src/tools/ecode/plugins/aiassistant/chatui.cpp b/src/tools/ecode/plugins/aiassistant/chatui.cpp index e52f25703..fd039f62f 100644 --- a/src/tools/ecode/plugins/aiassistant/chatui.cpp +++ b/src/tools/ecode/plugins/aiassistant/chatui.cpp @@ -2651,12 +2651,15 @@ void LLMChatUI::addPermissionUI( const acp::RequestPermissionRequest& req, UIWidget* LLMChatUI::addMarkdownBubble( const std::string& layout, const std::string& markdown ) { find( "chat_presentation" )->setVisible( false ); UIWidget* chat = mChatsList->getUISceneNode()->loadLayoutFromString( layout, mChatsList ); - if ( chat ) + if ( chat && !markdown.empty() ) chat->asType()->loadFromString( markdown ); return chat; } void LLMChatUI::addPlanBubble( const std::string& markdown ) { + if ( markdown.empty() ) + return; + runOnMainThread( [this, markdown] { removeWaitingBubble(); @@ -2810,7 +2813,10 @@ void LLMChatUI::addToolCallUpdate( const nlohmann::json& msg ) { } void LLMChatUI::updateThinkingBubble( const std::string& chunk ) { - runOnMainThread( [this, chunk] { + if ( chunk.empty() ) + return; + + runOnMainThread( [this, chunk = std::move( chunk )] { removeWaitingBubble(); UIWidget* bubble = nullptr;