fix(web): pre-load common languages in shared Shiki highlighter

Quentin Gliech and Claude Opus 4.6 (1M context) created

The rehype plugin needs languages already loaded (it's synchronous).
Pre-load 16 common languages (JS/TS, Go, Python, Rust, etc.) so
Markdown code blocks get highlighted. FileViewer continues to load
additional languages on demand.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Change summary

webui2/src/lib/shiki.ts | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)

Detailed changes

webui2/src/lib/shiki.ts 🔗

@@ -13,7 +13,26 @@ export function getHighlighter(): Promise<HighlighterCore> {
         import("@shikijs/themes/github-light"),
         import("@shikijs/themes/github-dark"),
       ],
-      langs: [],
+      // Pre-load common languages for Markdown code blocks.
+      // FileViewer also loads additional languages on demand via loadLanguage().
+      langs: [
+        import("@shikijs/langs/javascript"),
+        import("@shikijs/langs/typescript"),
+        import("@shikijs/langs/jsx"),
+        import("@shikijs/langs/tsx"),
+        import("@shikijs/langs/json"),
+        import("@shikijs/langs/html"),
+        import("@shikijs/langs/css"),
+        import("@shikijs/langs/bash"),
+        import("@shikijs/langs/go"),
+        import("@shikijs/langs/yaml"),
+        import("@shikijs/langs/markdown"),
+        import("@shikijs/langs/python"),
+        import("@shikijs/langs/rust"),
+        import("@shikijs/langs/sql"),
+        import("@shikijs/langs/graphql"),
+        import("@shikijs/langs/diff"),
+      ],
       engine: createOnigurumaEngine(import("shiki/wasm")),
     });
   }