From 1257ec6eba856c3fc33a80a80f53f58f74421f17 Mon Sep 17 00:00:00 2001 From: Miguel Palhas Date: Mon, 31 Aug 2026 15:19:51 +0100 Subject: [PATCH] feat(maestro): self-host JetBrains Mono for web terminal Sets it as the primary --font-mono/xterm font, system stack kept as fallback. --- web/package.json | 1 + web/pnpm-lock.yaml | 8 ++++++++ web/src/attach.ts | 2 +- web/src/main.ts | 4 ++++ web/src/styles.css | 2 +- 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/web/package.json b/web/package.json index 528365c..3d751e6 100644 --- a/web/package.json +++ b/web/package.json @@ -13,6 +13,7 @@ "test:watch": "vitest" }, "dependencies": { + "@fontsource/jetbrains-mono": "^5.3.0", "@xterm/addon-fit": "^0.10.0", "@xterm/xterm": "^5.5.0" }, diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index c4de6d0..46f993a 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@fontsource/jetbrains-mono': + specifier: ^5.3.0 + version: 5.3.0 '@xterm/addon-fit': specifier: ^0.10.0 version: 0.10.0(@xterm/xterm@5.5.0) @@ -168,6 +171,9 @@ packages: cpu: [x64] os: [win32] + '@fontsource/jetbrains-mono@5.3.0': + resolution: {integrity: sha512-fqDfB5I9f1p1TV486aUgB9t8zP84P0O1FtQR5Ol9vjwPy+S+EIGlVYm1cvj2W5shcZMTg2nZFdVMoH5wFu8a1A==} + '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -631,6 +637,8 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true + '@fontsource/jetbrains-mono@5.3.0': {} + '@jridgewell/sourcemap-codec@1.5.5': {} '@rollup/rollup-android-arm-eabi@4.60.4': diff --git a/web/src/attach.ts b/web/src/attach.ts index 99744e6..57a96d6 100644 --- a/web/src/attach.ts +++ b/web/src/attach.ts @@ -99,7 +99,7 @@ export function createAttachConnection( const term = new Terminal({ cursorBlink: true, fontFamily: - 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace', + '"JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace', fontSize: 13, convertEol: false, theme: { diff --git a/web/src/main.ts b/web/src/main.ts index 0a8c106..e224950 100644 --- a/web/src/main.ts +++ b/web/src/main.ts @@ -1,3 +1,7 @@ +import "@fontsource/jetbrains-mono/400.css"; +import "@fontsource/jetbrains-mono/500.css"; +import "@fontsource/jetbrains-mono/600.css"; +import "@fontsource/jetbrains-mono/700.css"; import { renderSidebar, renderTopbar } from "./catalog.js"; import { ConnectionPool } from "./connections.js"; import { installHudKeybind } from "./debug.js"; diff --git a/web/src/styles.css b/web/src/styles.css index da97551..681b2be 100644 --- a/web/src/styles.css +++ b/web/src/styles.css @@ -8,7 +8,7 @@ :root { /* ---- type ---- */ --font-mono: - ui-monospace, "SF Mono", "SFMono-Regular", "Cascadia Code", "JetBrains Mono", + "JetBrains Mono", ui-monospace, "SF Mono", "SFMono-Regular", "Cascadia Code", "Roboto Mono", Menlo, Consolas, "Liberation Mono", monospace; --font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,