From 5f7f6d7cd5e9e2faa93d9668519050ea3dbd03ae Mon Sep 17 00:00:00 2001 From: tommy0103 Date: Mon, 3 Aug 2026 02:10:50 +0800 Subject: [PATCH] refactor(renderer): configure the Markdown image renderer at startup renderMarkdown ran the marked configuration on every call and leaned on a module-level flag to make that cheap. It belongs next to the custom element registration, which already runs once, before anything renders. Co-Authored-By: Claude Opus 5 (1M context) --- app/src/renderer/src/main.js | 3 +++ app/src/renderer/src/utils.js | 4 +--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/renderer/src/main.js b/app/src/renderer/src/main.js index bd9d3a7..d468d0d 100644 --- a/app/src/renderer/src/main.js +++ b/app/src/renderer/src/main.js @@ -7,6 +7,7 @@ import { commitInitialData, fetchInitialData } from './data.js'; import { noteSessionUpdated, sessionLiveState } from './session-live.mjs'; import { createGlobalDataRefreshCoordinator } from './session-global-refresh.mjs'; import { registerSessionImageElement } from './session-image-element.js'; +import { configureMarkdownImages } from './markdown-image-renderer.js'; import { installFileReferenceHandler } from './file-references.mjs'; // Import shared renderer CSS globally @@ -17,6 +18,8 @@ import '../styles/list.css'; import '../styles/detail.css'; registerSessionImageElement(); +// marked is loaded globally via CDN in index.html, ahead of this module. +configureMarkdownImages(window.marked); const app = createApp(App); diff --git a/app/src/renderer/src/utils.js b/app/src/renderer/src/utils.js index 66f0b10..d4690fc 100644 --- a/app/src/renderer/src/utils.js +++ b/app/src/renderer/src/utils.js @@ -2,7 +2,6 @@ // Pure helpers with no side-effects on global state (except formatProjectLabel which reads store). import { state } from './store.js'; -import { configureMarkdownImages } from './markdown-image-renderer.js'; import { markFileReferences, mayContainFileReference } from './file-references.mjs'; // --- Time / formatting --- @@ -96,8 +95,7 @@ export function highlightTextNodes(rootEl, query) { export function renderMarkdown(text, opts = {}) { if (text == null) return ''; - // marked is loaded globally via CDN in index.html - configureMarkdownImages(window.marked); + // marked is loaded globally via CDN in index.html and configured at startup. const html = sanitizeMarkdown(window.marked.parse(text)); const cls = opts.variant === 'msg' ? 'markdown-msg' : opts.variant === 'compact' ? 'markdown-compact'