2 Commits
Author SHA1 Message Date
Snow Lee (Sungwon)andGitHub 70cf9818ce fix(docs): sitemap gains lastmod, and robots.txt points at it (#140)
docs.beardrive.ai shipped no robots.txt, so nothing on that host named the
sitemap — a crawler arriving at the subdomain had to guess the URL or be
handed it in Search Console. And every entry was a bare <loc>: no freshness
signal at all, on the site whose whole value is being current.

Each URL now carries the commit date of the markdown behind it, read from one
`git log` for the whole tree. The build refuses to guess: in a shallow clone
(the default for CI checkouts) git can only attribute every file to the single
commit it has, so lastmod is omitted entirely rather than claiming the site
changed wholesale on every deploy — Google discounts a sitemap that does that,
which would cost more than the absent dates. Hosts that want the dates need
full history; README says so.

Declaring @astrojs/sitemap explicitly replaces the copy Starlight adds for
itself rather than duplicating it — that's the supported way to reach these
options, and Starlight's own version only configures i18n, which this
single-language site doesn't use.

Adds `npm run check:sitemap <origin>`: robots.txt -> index -> every advertised
URL returns 200, the checks Search Console runs, against a local preview or
against production. Run against production today it fails on the missing
Sitemap: line, and reports the deployed site is several commits behind the
repo — /concepts/permissions/ and /reference/migration/ are live 404s.
2026-08-10 23:27:47 +09:00
Snow LeeandClaude Opus 4.8 25f890c03f feat(brand): the Stack mark and Jersey 10 across app, auth, and docs
Replaces the 🐻 emoji standing in for a logo everywhere. The mark is the
letter B built from three rectangles — a rail and two blocks, the same
shape as the product (a spine with volumes hanging off it). One fill, so
`currentColor` themes it in the sidebar, the favicon, and flat ink.

- Web app: <Mark> in shell.tsx replaces the emoji-in-a-gradient-tile
  badge; the mark takes the honey and the wordmark takes text colour, so
  the accent lands once. #vault-name sets in Jersey 10 at 18px — the face
  is condensed, so that measures like 13px of the UI face.
- Auth pages (authlocal.go): server-rendered, so they had their own emoji
  logo. Same mark, inline.
- Docs: bear.svg becomes the mark (fixed honey fill — Starlight renders
  the logo as <img>, which can't inherit currentColor), and .site-title
  sets in Jersey 10. Starlight tints that title with the accent by
  default, which put honey on white in light mode and failed contrast;
  it now takes --sl-color-white, matching the app.
- Favicon: the mark, as a data URI.

Jersey 10 is SIL OFL and self-hosted in both trees — Vite fingerprints
the app's copy into static/assets/, the docs serve theirs from public/ —
so no surface makes a third-party font request. Licence ships beside each
file. It is deliberately not a design token: tw.css's @theme block is
mirrored by the cloud landing's tokens.css and a drift check fails the
build if they diverge, so the logo face lives in plain CSS.

The cloud landing page carries the same mark and face (separate repo).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 19:38:42 -07:00