From 50d7d1cf88287564cfe08474a2eeb4c4f2db471e Mon Sep 17 00:00:00 2001 From: armorbreak001 Date: Wed, 15 Apr 2026 16:49:28 +0800 Subject: [PATCH] fix(themes): swap Prism syntax-highlighting theme on light/dark switch The Prism CSS was hardcoded to prism-tomorrow (dark-only), so code blocks stayed dark even when switching to Light or other non-dark themes. - Add id='prism-theme' to the element for runtime lookup - In _applyTheme(), swap href between prism-tomorrow (dark) and prism (light) based on resolved theme - Skips DOM write when the target href is already active Fixes #505 --- static/boot.js | 10 ++++++++++ static/index.html | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/static/boot.js b/static/boot.js index 75f322b..ac6c4a8 100644 --- a/static/boot.js +++ b/static/boot.js @@ -584,6 +584,16 @@ function _applyTheme(name){ ?(window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'light') :name; document.documentElement.dataset.theme=resolved||'dark'; + // Swap Prism syntax-highlighting theme to match UI theme + (function(){ + const link=document.getElementById('prism-theme'); + if(!link) return; + const isDark=(resolved!=='light'); + const want=isDark + ?'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism-tomorrow.min.css' + :'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism.min.css'; + if(link.href!==want){ link.href=want; } + })(); // Re-register OS change listener whenever system theme is active if(name==='system'){ const mq=window.matchMedia('(prefers-color-scheme:dark)'); diff --git a/static/index.html b/static/index.html index 5c20188..bb5de73 100644 --- a/static/index.html +++ b/static/index.html @@ -9,7 +9,7 @@ - +