fix: Replace Instrument Serif with Playfair Display for display headings

Instrument Serif is inherently condensed and illegible at heading sizes.
Playfair Display is wider, has proper variable weight support (400-900),
and reads well at all sizes.
This commit is contained in:
Lukas May
2026-03-04 10:23:26 +01:00
parent 1cfe51b10e
commit 1db5e2dc56
14 changed files with 18 additions and 18 deletions

Binary file not shown.

View File

@@ -122,7 +122,7 @@ export function InboxList({
{/* Header */} {/* Header */}
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<h2 className="text-2xl font-display">Agent Inbox</h2> <h2 className="text-lg font-semibold font-display">Agent Inbox</h2>
<Badge variant="secondary">{joined.length}</Badge> <Badge variant="secondary">{joined.length}</Badge>
</div> </div>
<Button variant="outline" size="sm" onClick={onRefresh}> <Button variant="outline" size="sm" onClick={onRefresh}>

View File

@@ -60,7 +60,7 @@ export function PhaseAccordion({
)} )}
{/* Phase name */} {/* Phase name */}
<span className="min-w-0 flex-1 truncate font-display"> <span className="min-w-0 flex-1 truncate font-display font-medium">
{phase.name} {phase.name}
</span> </span>

View File

@@ -15,17 +15,17 @@
} }
@font-face { @font-face {
font-family: 'Instrument Serif'; font-family: 'Playfair Display';
src: url('/fonts/InstrumentSerif-Regular.woff2') format('woff2'); src: url('/fonts/PlayfairDisplay-Variable.woff2') format('woff2');
font-weight: 400; font-weight: 400 900;
font-style: normal; font-style: normal;
font-display: swap; font-display: swap;
} }
@font-face { @font-face {
font-family: 'Instrument Serif'; font-family: 'Playfair Display';
src: url('/fonts/InstrumentSerif-Italic.woff2') format('woff2'); src: url('/fonts/PlayfairDisplay-VariableItalic.woff2') format('woff2');
font-weight: 400; font-weight: 400 900;
font-style: italic; font-style: italic;
font-display: swap; font-display: swap;
} }

View File

@@ -41,8 +41,8 @@ export function AppLayout({ children, onOpenCommandPalette, connectionState }: A
CW CW
</span> </span>
<span className="hidden items-baseline gap-1 sm:inline-flex"> <span className="hidden items-baseline gap-1 sm:inline-flex">
<span className="font-display tracking-normal">Codewalk</span> <span className="font-display font-bold tracking-tight">Codewalk</span>
<span className="font-display tracking-normal text-muted-foreground">District</span> <span className="font-display font-medium tracking-tight text-muted-foreground">District</span>
</span> </span>
</Link> </Link>
<nav className="flex items-center gap-1"> <nav className="flex items-center gap-1">

View File

@@ -23,7 +23,7 @@ function RootLayout() {
return ( return (
<> <>
<ConnectionBanner state={connectionState} /> <ConnectionBanner state={connectionState} />
<AppLayout onOpenCommandPalette={openCommandPalette}> <AppLayout onOpenCommandPalette={openCommandPalette} connectionState={connectionState}>
<ErrorBoundary> <ErrorBoundary>
<Outlet /> <Outlet />
</ErrorBoundary> </ErrorBoundary>

View File

@@ -192,7 +192,7 @@ function AgentsPage() {
<div className="shrink-0 space-y-3"> <div className="shrink-0 space-y-3">
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<h1 className="font-display text-2xl">Agents</h1> <h1 className="font-display text-lg font-semibold">Agents</h1>
<Badge variant="secondary">{agents.length}</Badge> <Badge variant="secondary">{agents.length}</Badge>
</div> </div>
<Button variant="outline" size="sm" onClick={handleRefresh}> <Button variant="outline" size="sm" onClick={handleRefresh}>

View File

@@ -40,7 +40,7 @@ function DashboardPage() {
> >
{/* Page header */} {/* Page header */}
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<h1 className="font-display text-3xl">Initiatives</h1> <h1 className="font-display text-2xl font-semibold">Initiatives</h1>
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<select <select
value={statusFilter} value={statusFilter}

View File

@@ -13,7 +13,7 @@ function SettingsLayout() {
return ( return (
<div className="mx-auto max-w-4xl space-y-4"> <div className="mx-auto max-w-4xl space-y-4">
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<h1 className="font-display text-3xl">Settings</h1> <h1 className="font-display text-2xl font-semibold">Settings</h1>
</div> </div>
<nav className="flex gap-1 border-b border-border"> <nav className="flex gap-1 border-b border-border">
{settingsTabs.map((tab) => ( {settingsTabs.map((tab) => (

View File

@@ -97,7 +97,7 @@ function HealthCheckPage() {
{/* Server Status */} {/* Server Status */}
<Card> <Card>
<CardHeader> <CardHeader>
<CardTitle className="flex items-center gap-2 font-display text-xl"> <CardTitle className="flex items-center gap-2 font-display text-lg">
<Server className="h-5 w-5" /> <Server className="h-5 w-5" />
Server Status Server Status
</CardTitle> </CardTitle>
@@ -124,7 +124,7 @@ function HealthCheckPage() {
{/* Accounts */} {/* Accounts */}
<div className="space-y-3"> <div className="space-y-3">
<h2 className="font-display text-xl">Accounts</h2> <h2 className="font-display text-lg font-semibold">Accounts</h2>
{accounts.length === 0 ? ( {accounts.length === 0 ? (
<Card> <Card>
<CardContent className="py-6"> <CardContent className="py-6">
@@ -154,7 +154,7 @@ function HealthCheckPage() {
{/* Projects */} {/* Projects */}
<div className="space-y-3"> <div className="space-y-3">
<h2 className="font-display text-xl">Projects</h2> <h2 className="font-display text-lg font-semibold">Projects</h2>
{projects.length === 0 ? ( {projects.length === 0 ? (
<Card> <Card>
<CardContent className="py-6"> <CardContent className="py-6">

View File

@@ -18,7 +18,7 @@ export default {
fontFamily: { fontFamily: {
sans: ["Geist Sans", ...defaultTheme.fontFamily.sans], sans: ["Geist Sans", ...defaultTheme.fontFamily.sans],
mono: ["Geist Mono", ...defaultTheme.fontFamily.mono], mono: ["Geist Mono", ...defaultTheme.fontFamily.mono],
display: ['"Instrument Serif"', "Georgia", "serif"], display: ['"Playfair Display"', "Georgia", "serif"],
}, },
colors: { colors: {
border: "hsl(var(--border))", border: "hsl(var(--border))",