diff --git a/src/server/board/chrome.ts b/src/server/board/chrome.ts
index af264ba..74ae374 100644
--- a/src/server/board/chrome.ts
+++ b/src/server/board/chrome.ts
@@ -1,30 +1,13 @@
-import { escapeHtml } from '../ui-shared.js';
-
-const LOGO = '
';
+import { appHeader } from '../ui-shared.js';
/**
- * Fixed app header for board v2. The project cell is visual only — the real
- * project switcher dropdown arrives with the multi-project v3 spec.
- * The SSE status span keeps the v1 ids (`sseStatus`, `sseLabel`) so the ported
- * connection-status JS keeps working unchanged.
+ * Fixed app header for board v2 — the shared v2 header (ui-shared.appHeader)
+ * with the board marked active. The project cell is visual only (dropdown = v3);
+ * SSE ids (`sseStatus`, `sseLabel`) match the ported connection-status JS.
+ * Styling comes from ui-shared's appHeaderOnlyCss(), which boardV2Css() includes.
*/
export function headerHtml(projectName: string): string {
- const name = escapeHtml(projectName);
- return `
-`;
+ return appHeader(projectName, 'board');
}
/** Fullscreen splash overlay, shown until first data render (hard cap 1.5s). */
diff --git a/src/server/board/styles.ts b/src/server/board/styles.ts
index 3ee834c..40c5f55 100644
--- a/src/server/board/styles.ts
+++ b/src/server/board/styles.ts
@@ -1,15 +1,19 @@
/**
* Board v2 design system: glass dashboard on a deep gradient.
* Everything is emitted by boardV2Css() and inlined into the page