From 62a8fb2228d778e26e61b109b6e42eeafc093708 Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 18 Apr 2026 15:33:24 +0300 Subject: [PATCH 1/4] fix(print): add missing note title for links (content renderer aware of printing) --- apps/client/src/services/content_renderer.ts | 1 + apps/client/src/services/content_renderer_text.ts | 10 +++++++--- .../src/widgets/collections/legacy/ListPrintView.tsx | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/client/src/services/content_renderer.ts b/apps/client/src/services/content_renderer.ts index cfe4383f09..d6f14b9550 100644 --- a/apps/client/src/services/content_renderer.ts +++ b/apps/client/src/services/content_renderer.ts @@ -35,6 +35,7 @@ export interface RenderOptions { /** Set of note IDs that have already been seen during rendering to prevent infinite recursion. */ seenNoteIds?: Set; showTextRepresentation?: boolean; + isPrinting?: boolean; } const CODE_MIME_TYPES = new Set(["application/json"]); diff --git a/apps/client/src/services/content_renderer_text.ts b/apps/client/src/services/content_renderer_text.ts index 1684ce766c..758381611a 100644 --- a/apps/client/src/services/content_renderer_text.ts +++ b/apps/client/src/services/content_renderer_text.ts @@ -47,9 +47,13 @@ export async function postProcessRichContent(note: FNote | FAttachment, $rendere await froca.getNotes(noteIdsToPrefetch); for (const el of referenceLinks) { - const innerSpan = document.createElement("span"); - await link.loadReferenceLinkTitle($(innerSpan), el.href); - el.replaceChildren(innerSpan); + if (options.isPrinting) { + await link.loadReferenceLinkTitle($(el)); + } else { + const innerSpan = document.createElement("span"); + await link.loadReferenceLinkTitle($(innerSpan), el.href); + el.replaceChildren(innerSpan); + } } await rewriteMermaidDiagramsInContainer($renderedContent[0] as HTMLDivElement); diff --git a/apps/client/src/widgets/collections/legacy/ListPrintView.tsx b/apps/client/src/widgets/collections/legacy/ListPrintView.tsx index c2a284e7de..ac6e2074f5 100644 --- a/apps/client/src/widgets/collections/legacy/ListPrintView.tsx +++ b/apps/client/src/widgets/collections/legacy/ListPrintView.tsx @@ -31,7 +31,8 @@ export function ListPrintView({ note, noteIds: unfilteredNoteIds, onReady, onPro if (isNotePrintable(note)) { const content = await content_renderer.getRenderedContent(note, { trim: false, - noChildrenList: true + noChildrenList: true, + isPrinting: true }); const contentEl = content.$renderedContent[0]; From 4579e4d31b74bef6fa2c0fbe800fdc92b304586e Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 18 Apr 2026 21:59:08 +0300 Subject: [PATCH 2/4] Revert "fix(print): add missing note title for links (content renderer aware of printing)" This reverts commit 62a8fb2228d778e26e61b109b6e42eeafc093708. --- apps/client/src/services/content_renderer.ts | 1 - apps/client/src/services/content_renderer_text.ts | 10 +++------- .../src/widgets/collections/legacy/ListPrintView.tsx | 3 +-- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/apps/client/src/services/content_renderer.ts b/apps/client/src/services/content_renderer.ts index d6f14b9550..cfe4383f09 100644 --- a/apps/client/src/services/content_renderer.ts +++ b/apps/client/src/services/content_renderer.ts @@ -35,7 +35,6 @@ export interface RenderOptions { /** Set of note IDs that have already been seen during rendering to prevent infinite recursion. */ seenNoteIds?: Set; showTextRepresentation?: boolean; - isPrinting?: boolean; } const CODE_MIME_TYPES = new Set(["application/json"]); diff --git a/apps/client/src/services/content_renderer_text.ts b/apps/client/src/services/content_renderer_text.ts index 758381611a..1684ce766c 100644 --- a/apps/client/src/services/content_renderer_text.ts +++ b/apps/client/src/services/content_renderer_text.ts @@ -47,13 +47,9 @@ export async function postProcessRichContent(note: FNote | FAttachment, $rendere await froca.getNotes(noteIdsToPrefetch); for (const el of referenceLinks) { - if (options.isPrinting) { - await link.loadReferenceLinkTitle($(el)); - } else { - const innerSpan = document.createElement("span"); - await link.loadReferenceLinkTitle($(innerSpan), el.href); - el.replaceChildren(innerSpan); - } + const innerSpan = document.createElement("span"); + await link.loadReferenceLinkTitle($(innerSpan), el.href); + el.replaceChildren(innerSpan); } await rewriteMermaidDiagramsInContainer($renderedContent[0] as HTMLDivElement); diff --git a/apps/client/src/widgets/collections/legacy/ListPrintView.tsx b/apps/client/src/widgets/collections/legacy/ListPrintView.tsx index ac6e2074f5..c2a284e7de 100644 --- a/apps/client/src/widgets/collections/legacy/ListPrintView.tsx +++ b/apps/client/src/widgets/collections/legacy/ListPrintView.tsx @@ -31,8 +31,7 @@ export function ListPrintView({ note, noteIds: unfilteredNoteIds, onReady, onPro if (isNotePrintable(note)) { const content = await content_renderer.getRenderedContent(note, { trim: false, - noChildrenList: true, - isPrinting: true + noChildrenList: true }); const contentEl = content.$renderedContent[0]; From 9d8d7bd4961727c02ad4176e647096144556596a Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 18 Apr 2026 21:58:31 +0300 Subject: [PATCH 3/4] fix(print): missing note title for reference links --- apps/client/src/services/content_renderer_text.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/services/content_renderer_text.ts b/apps/client/src/services/content_renderer_text.ts index 1684ce766c..aa3c8d03a3 100644 --- a/apps/client/src/services/content_renderer_text.ts +++ b/apps/client/src/services/content_renderer_text.ts @@ -48,7 +48,7 @@ export async function postProcessRichContent(note: FNote | FAttachment, $rendere for (const el of referenceLinks) { const innerSpan = document.createElement("span"); - await link.loadReferenceLinkTitle($(innerSpan), el.href); + await link.loadReferenceLinkTitle($(innerSpan), el.getAttribute("href")); el.replaceChildren(innerSpan); } From e9b1b2de214378d3b253207560ed80a1d980a285 Mon Sep 17 00:00:00 2001 From: contributor Date: Sat, 18 Apr 2026 22:23:53 +0300 Subject: [PATCH 4/4] chore(print): parallelize loading note reference links --- apps/client/src/services/content_renderer_text.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/services/content_renderer_text.ts b/apps/client/src/services/content_renderer_text.ts index aa3c8d03a3..417738fb24 100644 --- a/apps/client/src/services/content_renderer_text.ts +++ b/apps/client/src/services/content_renderer_text.ts @@ -46,11 +46,11 @@ export async function postProcessRichContent(note: FNote | FAttachment, $rendere const noteIdsToPrefetch = referenceLinks.map((i, el) => getNoteIdFromLink(el)); await froca.getNotes(noteIdsToPrefetch); - for (const el of referenceLinks) { + await Promise.all(referenceLinks.toArray().map(async (el) => { const innerSpan = document.createElement("span"); await link.loadReferenceLinkTitle($(innerSpan), el.getAttribute("href")); el.replaceChildren(innerSpan); - } + })); await rewriteMermaidDiagramsInContainer($renderedContent[0] as HTMLDivElement); await formatCodeBlocks($renderedContent);