fix(diffs): tighten rendering quality

This commit is contained in:
Gustavo Madeira Santana
2026-02-28 23:03:28 -05:00
parent 0f72000c96
commit 9257dfb5c0
4 changed files with 79 additions and 28 deletions

View File

@@ -136,6 +136,16 @@ function buildDiffOptions(options: DiffRenderOptions): DiffViewerOptions {
};
}
function buildImageRenderOptions(options: DiffRenderOptions): DiffRenderOptions {
return {
...options,
presentation: {
...options.presentation,
fontSize: Math.max(16, options.presentation.fontSize),
},
};
}
function normalizeSupportedLanguage(value?: string): SupportedLanguages | undefined {
const normalized = value?.trim();
return normalized ? (normalized as SupportedLanguages) : undefined;
@@ -225,7 +235,7 @@ function buildHtmlDocument(params: {
}
.oc-frame[data-render-mode="image"] {
max-width: 1120px;
max-width: 960px;
}
[data-openclaw-diff-root] {
@@ -293,22 +303,33 @@ async function renderBeforeAfterDiff(
contents: input.after,
...(lang ? { lang } : {}),
};
const payloadOptions = buildDiffOptions(options);
const result = await preloadMultiFileDiff({
oldFile,
newFile,
options: payloadOptions,
});
const viewerPayloadOptions = buildDiffOptions(options);
const imagePayloadOptions = buildDiffOptions(buildImageRenderOptions(options));
const [viewerResult, imageResult] = await Promise.all([
preloadMultiFileDiff({
oldFile,
newFile,
options: viewerPayloadOptions,
}),
preloadMultiFileDiff({
oldFile,
newFile,
options: imagePayloadOptions,
}),
]);
return {
viewerBodyHtml: renderDiffCard({
prerenderedHTML: result.prerenderedHTML,
oldFile: result.oldFile,
newFile: result.newFile,
options: payloadOptions,
langs: buildPayloadLanguages({ oldFile: result.oldFile, newFile: result.newFile }),
prerenderedHTML: viewerResult.prerenderedHTML,
oldFile: viewerResult.oldFile,
newFile: viewerResult.newFile,
options: viewerPayloadOptions,
langs: buildPayloadLanguages({
oldFile: viewerResult.oldFile,
newFile: viewerResult.newFile,
}),
}),
imageBodyHtml: renderStaticDiffCard(result.prerenderedHTML),
imageBodyHtml: renderStaticDiffCard(imageResult.prerenderedHTML),
fileCount: 1,
};
}
@@ -322,22 +343,29 @@ async function renderPatchDiff(
throw new Error("Patch input did not contain any file diffs.");
}
const payloadOptions = buildDiffOptions(options);
const viewerPayloadOptions = buildDiffOptions(options);
const imagePayloadOptions = buildDiffOptions(buildImageRenderOptions(options));
const sections = await Promise.all(
files.map(async (fileDiff) => {
const result = await preloadFileDiff({
fileDiff,
options: payloadOptions,
});
const [viewerResult, imageResult] = await Promise.all([
preloadFileDiff({
fileDiff,
options: viewerPayloadOptions,
}),
preloadFileDiff({
fileDiff,
options: imagePayloadOptions,
}),
]);
return {
viewer: renderDiffCard({
prerenderedHTML: result.prerenderedHTML,
fileDiff: result.fileDiff,
options: payloadOptions,
langs: buildPayloadLanguages({ fileDiff: result.fileDiff }),
prerenderedHTML: viewerResult.prerenderedHTML,
fileDiff: viewerResult.fileDiff,
options: viewerPayloadOptions,
langs: buildPayloadLanguages({ fileDiff: viewerResult.fileDiff }),
}),
image: renderStaticDiffCard(result.prerenderedHTML),
image: renderStaticDiffCard(imageResult.prerenderedHTML),
};
}),
);