diff --git a/web/src/renderer.js b/web/src/renderer.js index ad49884..55ae7e2 100644 --- a/web/src/renderer.js +++ b/web/src/renderer.js @@ -302,11 +302,12 @@ export class RepoRenderer { // Watermark — tiled path text, 45° rotated, slightly larger than code font if (!tile.watermark) { const codeFontSize = (d.h / d.lines) * 0.65; - const wmFontSize = codeFontSize * 2.5; + // Clamp wmFontSize to avoid degenerate tiny values on files with huge line counts + const wmFontSize = Math.max(codeFontSize * 2.5, 1.0); const wmLabel = `${this.repoName}/${d.path}`; - // Estimate how many repetitions to fill the area - const charsPerLine = Math.ceil(Math.max(d.w, d.h) * 1.5 / (wmFontSize * 0.5)); - const lineCount = Math.ceil(Math.max(d.w, d.h) * 1.5 / (wmFontSize * 1.5)); + // Estimate how many repetitions to fill the area; cap to prevent RangeError on massive tiles + const charsPerLine = Math.min(Math.ceil(Math.max(d.w, d.h) * 1.5 / (wmFontSize * 0.5)), 400); + const lineCount = Math.min(Math.ceil(Math.max(d.w, d.h) * 1.5 / (wmFontSize * 1.5)), 150); const wmContent = buildWatermark(wmLabel, charsPerLine, lineCount); const wm = new Text();