From 4187128d9ca1ca91f1e5185b3faebf4251d49dc3 Mon Sep 17 00:00:00 2001 From: SandObserver <260779319+SandObserver@users.noreply.github.com> Date: Mon, 24 Aug 2026 16:21:39 -0400 Subject: [PATCH 1/2] Self-host Inter and use the wordmark in the site header Replace the Google Fonts stylesheet with a self-hosted Latin subset of the Inter variable font, preloaded on every page. Point the landing page and the documentation theme at one family for both headings and body text. The documentation heading font previously resolved to a face no page loaded. Swap the header brand from an icon plus live text to the wordmark, dark only on the landing page and per theme in the documentation header. Extend the build gate to verify font assets ship. --- astro.config.mjs | 19 ++++- public/fonts/inter-LICENSE.txt | 92 ++++++++++++++++++++++++ public/fonts/inter-latin.woff2 | Bin 0 -> 55192 bytes public/img/stackyard-wordmark-dark.svg | 1 + public/img/stackyard-wordmark-light.svg | 1 + scripts/check-dist.mjs | 2 +- src/pages/index.astro | 25 ++++--- src/styles/docs.css | 7 +- src/styles/fonts.css | 8 +++ 9 files changed, 135 insertions(+), 20 deletions(-) create mode 100644 public/fonts/inter-LICENSE.txt create mode 100644 public/fonts/inter-latin.woff2 create mode 100644 public/img/stackyard-wordmark-dark.svg create mode 100644 public/img/stackyard-wordmark-light.svg create mode 100644 src/styles/fonts.css diff --git a/astro.config.mjs b/astro.config.mjs index ef7af29..eafb922 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -19,10 +19,25 @@ export default defineConfig({ title: 'Stackyard', description: 'A calm, customizable dashboard for your services, designed to be useful without becoming another wall of data.', - logo: { src: './public/img/stackyard-mark.svg', alt: 'Stackyard' }, + logo: { + light: './public/img/stackyard-wordmark-light.svg', + dark: './public/img/stackyard-wordmark-dark.svg', + alt: 'Stackyard', + replacesTitle: true, + }, favicon: '/favicon.svg', - customCss: ['./src/styles/docs.css'], + customCss: ['./src/styles/fonts.css', './src/styles/docs.css'], head: [ + { + tag: 'link', + attrs: { + rel: 'preload', + as: 'font', + type: 'font/woff2', + href: '/fonts/inter-latin.woff2', + crossorigin: true, + }, + }, { tag: 'link', attrs: { rel: 'manifest', href: '/manifest.webmanifest' } }, { tag: 'meta', attrs: { name: 'theme-color', content: '#0d1117' } }, { tag: 'meta', attrs: { property: 'og:image', content: `${SITE}/img/og.jpg` } }, diff --git a/public/fonts/inter-LICENSE.txt b/public/fonts/inter-LICENSE.txt new file mode 100644 index 0000000..9b2ca37 --- /dev/null +++ b/public/fonts/inter-LICENSE.txt @@ -0,0 +1,92 @@ +Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION AND CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/fonts/inter-latin.woff2 b/public/fonts/inter-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e57a26574ad3dcda32c1c9a8ee3ee585ca0ba4f1 GIT binary patch literal 55192 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

X3AOL}%V#i>Ao=#K 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 ty0`A5`W_R?LsODJ0s@s2%) diff --git a/public/img/stackyard-wordmark-light.svg b/public/img/stackyard-wordmark-light.svg new file mode 100644 index 0000000..b146d70 --- /dev/null +++ b/public/img/stackyard-wordmark-light.svg @@ -0,0 +1 @@ + diff --git a/scripts/check-dist.mjs b/scripts/check-dist.mjs index 62af94c..62cf778 100644 --- a/scripts/check-dist.mjs +++ b/scripts/check-dist.mjs @@ -6,7 +6,7 @@ import { relative, join } from 'node:path'; const DIST = 'dist'; const SRC_ROOTS = ['src', 'scripts', 'public/api', 'public/icons', 'public/img']; const ROOT_FILES = ['README.md', 'astro.config.mjs', 'package.json', '.gitignore']; -const ASSET_EXT = /\.(svg|png|jpe?g|webp|ico|css|js|json|txt|xml|webmanifest)$/i; +const ASSET_EXT = /\.(svg|png|jpe?g|webp|ico|css|js|json|txt|xml|webmanifest|woff2)$/i; const BANNED = /claude|anthropic|generated by|ai-generated|chatgpt|openai|copilot/i; const read = (f) => readFileSync(f, 'utf8'); diff --git a/src/pages/index.astro b/src/pages/index.astro index dd32e58..7b00134 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,5 +1,6 @@ --- import { readAppVersion } from '../lib/repo'; +import '../styles/fonts.css'; const version = readAppVersion(); @@ -54,11 +55,12 @@ const schema = { diff --git a/src/pages/docs/development.astro b/src/pages/docs/development.astro index 0f7ad8d..e2b8f7a 100644 --- a/src/pages/docs/development.astro +++ b/src/pages/docs/development.astro @@ -1,16 +1,20 @@ --- import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro'; import { marked } from 'marked'; -import { readRepoFile, stripTitle, absolutiseLinks } from '../../lib/repo'; +import { readRepoFile, stripTitle, absolutiseLinks, withHeadingIds } from '../../lib/repo'; const REPO = 'https://github.com/SandObserver/stackyard'; const raw = readRepoFile('CONTRIBUTING.md'); -const html = raw - ? await marked.parse(absolutiseLinks(stripTitle(raw))) - : `

The contributing guide is read from the Stackyard repository at build time, and that - checkout was not available for this build. Read it on - GitHub.

`; +const parsed = raw + ? withHeadingIds(String(await marked.parse(absolutiseLinks(stripTitle(raw))))) + : { + html: `

The contributing guide is read from the Stackyard repository at build time, and that + checkout was not available for this build. Read it on + GitHub.

`, + headings: [], + }; +const { html, headings } = parsed; const reference = [ ['architecture.md', 'Architecture', 'How a request is served, and where config lives.'], @@ -25,6 +29,7 @@ const reference = [ title: 'Development', description: 'How to work on Stackyard, taken from the repository at build time.', }} + headings={[...headings, { depth: 2, slug: 'reference', text: 'Reference' }]} >

This page is generated from CONTRIBUTING.md in the Stackyard repository, so it