From 2c93b65d2c03c087061b665a8acc3a5cc27a00ca Mon Sep 17 00:00:00 2001 From: Ole Eskild Steensen Date: Sun, 30 Aug 2026 22:59:35 +0200 Subject: [PATCH] feat: LOGO_HEIGHT env var to control the site logo size A bare number is treated as pixels; other simple CSS lengths (rem, em, %, vh, vw, ch) pass through, anything else is ignored so the env value can't inject arbitrary CSS. Overrides --dg-logo-height, --dg-logo-height-mobile and --dg-filetree-logo-height. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01LYAomPqxuzVV25xjcqgGTs --- src/site/_data/meta.js | 11 +++++++++++ src/site/_includes/components/pageheader.njk | 9 +++++++++ 2 files changed, 20 insertions(+) diff --git a/src/site/_data/meta.js b/src/site/_data/meta.js index 8013f519b..9f4271b4d 100644 --- a/src/site/_data/meta.js +++ b/src/site/_data/meta.js @@ -15,6 +15,16 @@ module.exports = async (data) => { // Use the first match and convert to site-relative path logoPath = "/" + logoFiles[0].split("src/site/")[1]; } + + // Logo height override. A bare number means pixels; any other value must + // be a simple CSS length (e.g. "3rem") — anything else is ignored so the + // env value can't inject arbitrary CSS. + let logoHeight = (process.env.LOGO_HEIGHT || "").trim(); + if (/^\d+(\.\d+)?$/.test(logoHeight)) { + logoHeight += "px"; + } else if (!/^\d+(\.\d+)?(px|rem|em|%|vh|vw|ch)$/.test(logoHeight)) { + logoHeight = ""; + } if (themeStyle) { themeStyle = themeStyle.split("site")[1]; } @@ -100,6 +110,7 @@ module.exports = async (data) => { baseTheme: process.env.BASE_THEME || "dark", siteName: process.env.SITE_NAME_HEADER || "Digital Garden", siteLogoPath: logoPath, + logoHeight, mainLanguage: process.env.SITE_MAIN_LANGUAGE || "en", siteBaseUrl: baseUrl, styleSettingsCss, diff --git a/src/site/_includes/components/pageheader.njk b/src/site/_includes/components/pageheader.njk index 9905d8a46..208b7690c 100644 --- a/src/site/_includes/components/pageheader.njk +++ b/src/site/_includes/components/pageheader.njk @@ -65,5 +65,14 @@ {{ meta.styleSettingsCss | safe }} {% endif %} +{% if meta.logoHeight %} + +{% endif %}