From 302cf366bc97d2fafd0f99de2362f798b3a36f0c Mon Sep 17 00:00:00 2001 From: Dennis van der Stelt Date: Tue, 24 Mar 2026 11:03:59 +0000 Subject: [PATCH 1/6] =?UTF-8?q?=F0=9F=90=9B=20Fix=20stack=20trace=20format?= =?UTF-8?q?ter=20mangling=20exception=20messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The atRegex used \s* (zero or more whitespace, unanchored) which matched "at" inside words like "that" in exception messages, discarding everything before the match. Anchor to line start with \s+ so only indented stack frame lines are parsed as frames. --- src/Frontend/src/components/messages/StacktraceFormatter.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Frontend/src/components/messages/StacktraceFormatter.vue b/src/Frontend/src/components/messages/StacktraceFormatter.vue index e1a6180ba9..5de35fc698 100644 --- a/src/Frontend/src/components/messages/StacktraceFormatter.vue +++ b/src/Frontend/src/components/messages/StacktraceFormatter.vue @@ -89,7 +89,7 @@ const detectLanguagesInOrder = (text: string): Language[] => { const formatStackTrace = (stackTrace: string, selectedLang: Language): Element[] => { const lines = stackTrace.split("\n"); const fileAndLineNumberRegEx = new RegExp(`${selectedLang.in} (.+):${selectedLang.line} (\\d+)`); - const atRegex = new RegExp(`(\\s*)(${selectedLang.at}) (.+?)\\((.*?)\\)`); + const atRegex = new RegExp(`^(\\s+)(${selectedLang.at}) (.+?)\\((.*?)\\)`); return lines.map((line) => { const match = line.match(atRegex); From fa0c71309b5ff88f0bced0b1dd58affc0b3950cc Mon Sep 17 00:00:00 2001 From: John Simons Date: Wed, 25 Mar 2026 08:29:10 +1000 Subject: [PATCH 2/6] Refactor stack trace formatter and add unit tests Extract formatting logic from the Vue component into a dedicated TypeScript module to improve maintainability and enable unit testing. Includes a comprehensive test suite covering multiple languages and regression tests for exception message parsing. --- .../messages/StacktraceFormatter.vue | 93 +----- .../stacktraceFormatter.spec.ts | 293 ++++++++++++++++++ .../stacktraceFormatter.ts | 86 +++++ 3 files changed, 381 insertions(+), 91 deletions(-) create mode 100644 src/Frontend/src/components/messages/StacktraceFormatter/stacktraceFormatter.spec.ts create mode 100644 src/Frontend/src/components/messages/StacktraceFormatter/stacktraceFormatter.ts diff --git a/src/Frontend/src/components/messages/StacktraceFormatter.vue b/src/Frontend/src/components/messages/StacktraceFormatter.vue index 5de35fc698..c172c34195 100644 --- a/src/Frontend/src/components/messages/StacktraceFormatter.vue +++ b/src/Frontend/src/components/messages/StacktraceFormatter.vue @@ -1,5 +1,6 @@