diff --git a/webui/src/web-components/sketch-timeline-message.ts b/webui/src/web-components/sketch-timeline-message.ts
index b9c1455..1e950d5 100644
--- a/webui/src/web-components/sketch-timeline-message.ts
+++ b/webui/src/web-components/sketch-timeline-message.ts
@@ -418,7 +418,7 @@
       margin-block-start: 0.5em;
       margin-block-end: 0.5em;
     }
-    
+
     /* Mermaid diagram styling */
     .mermaid-container {
       margin: 1em 0;
@@ -427,7 +427,7 @@
       border-radius: 4px;
       overflow-x: auto;
     }
-    
+
     .mermaid {
       text-align: center;
     }
@@ -441,9 +441,9 @@
     // Initialize mermaid with specific config
     mermaid.initialize({
       startOnLoad: false,
-      theme: 'default',
-      securityLevel: 'loose', // Allows more flexibility but be careful with user-generated content
-      fontFamily: 'monospace'
+      theme: "default",
+      securityLevel: "loose", // Allows more flexibility but be careful with user-generated content
+      fontFamily: "monospace",
     });
   }
 
@@ -451,43 +451,44 @@
   connectedCallback() {
     super.connectedCallback();
   }
-  
+
   // After the component is updated and rendered, render any mermaid diagrams
   updated(changedProperties: Map<string, unknown>) {
     super.updated(changedProperties);
     this.renderMermaidDiagrams();
   }
-  
+
   // Render mermaid diagrams after the component is updated
   renderMermaidDiagrams() {
     // Add a small delay to ensure the DOM is fully rendered
     setTimeout(() => {
       // Find all mermaid containers in our shadow root
-      const containers = this.shadowRoot?.querySelectorAll('.mermaid');
+      const containers = this.shadowRoot?.querySelectorAll(".mermaid");
       if (!containers || containers.length === 0) return;
-      
+
       // Process each mermaid diagram
-      containers.forEach(container => {
+      containers.forEach((container) => {
         const id = container.id;
-        const code = container.textContent || '';
+        const code = container.textContent || "";
         if (!code || !id) return; // Use return for forEach instead of continue
-        
+
         try {
           // Clear any previous content
           container.innerHTML = code;
-          
+
           // Render the mermaid diagram using promise
-          mermaid.render(`${id}-svg`, code)
+          mermaid
+            .render(`${id}-svg`, code)
             .then(({ svg }) => {
               container.innerHTML = svg;
             })
-            .catch(err => {
-              console.error('Error rendering mermaid diagram:', err);
+            .catch((err) => {
+              console.error("Error rendering mermaid diagram:", err);
               // Show the original code as fallback
               container.innerHTML = `<pre>${code}</pre>`;
             });
         } catch (err) {
-          console.error('Error processing mermaid diagram:', err);
+          console.error("Error processing mermaid diagram:", err);
           // Show the original code as fallback
           container.innerHTML = `<pre>${code}</pre>`;
         }
@@ -505,13 +506,13 @@
       // Create a custom renderer
       const renderer = new Renderer();
       const originalCodeRenderer = renderer.code.bind(renderer);
-      
+
       // Override the code renderer to handle mermaid diagrams
-      renderer.code = function({ text, lang, escaped }: Tokens.Code): string {
-        if (lang === 'mermaid') {
+      renderer.code = function ({ text, lang, escaped }: Tokens.Code): string {
+        if (lang === "mermaid") {
           // Generate a unique ID for this diagram
           const id = `mermaid-diagram-${Math.random().toString(36).substring(2, 10)}`;
-          
+
           // Just create the container and mermaid div - we'll render it in the updated() lifecycle method
           return `<div class="mermaid-container">
                    <div class="mermaid" id="${id}">${text}</div>
@@ -520,13 +521,13 @@
         // Default rendering for other code blocks
         return originalCodeRenderer({ text, lang, escaped });
       };
-      
+
       // Set markdown options for proper code block highlighting and safety
       const markedOptions: MarkedOptions = {
         gfm: true, // GitHub Flavored Markdown
         breaks: true, // Convert newlines to <br>
         async: false,
-        renderer: renderer
+        renderer: renderer,
         // DOMPurify is recommended for production, but not included in this implementation
       };
       return marked.parse(markdownContent, markedOptions) as string;
