Skip to content

Fix Edge brand-text weight, add copyable NixOS pin block, deploy-key fallback for pins job - #18

Merged
felixevers merged 3 commits into
mainfrom
claude/labelled-checkbox-spacing-fonts-mscuzd
Jul 13, 2026
Merged

Fix Edge brand-text weight, add copyable NixOS pin block, deploy-key fallback for pins job#18
felixevers merged 3 commits into
mainfrom
claude/labelled-checkbox-spacing-fonts-mscuzd

Conversation

@felixevers

@felixevers felixevers commented Jul 13, 2026

Copy link
Copy Markdown
Member

Summary

Follow-up to #17. Bumps the version to 0.6.2 so the font fix ships in a release.

1. "helpwave id" brand text broken on Edge — root cause found

The brand text requested font-weight: 900, but Space Grotesk's variable font only has a weight axis of 300–700 (there is no 900), and the @font-face declares font-weight: 300 700 accordingly. Browsers diverge on out-of-range requests: Chromium on Windows (Edge) renders the 700 instance and smears synthetic bold on top, and Safari can drop to the default 400 instance — so the heavy brand text looked broken/wrong while every other weight rendered fine. This is also why helpwave tasks never showed the issue: it declares the identical 300 700 range but never requests more than font-bold.

Fix: font-[900]font-bold (700) in Branding.tsx, matching hightide's own brand components (HelpwaveBadge, the helpwave markdown span). RealmBanner's font-extrabold (800) is unaffected — it inherits Inter, which genuinely spans 100–900.

2. Storybook parity: load the self-hosted fonts

.storybook/preview.ts imported the hightide globals and index.css but not fonts.css, so Storybook rendered all stories in system-fallback fonts while production (via main.tsx) shows the self-hosted Inter/Space Grotesk. fonts.css is now imported in the same order as the production entry. Verified via build-storybook: both variable-font files are emitted into the bundle and the built CSS carries the @font-face declarations.

3. Copyable pin block in the NixOS docs

docs/deployment-nixos.md §2 now contains the complete pin set (themeVersion, spiVersion, release helper, and the four plugin bindings) as a standalone code fence — GitHub's per-block copy button grabs the whole thing in one click. The pins now appear twice (copy block + full module example), so update-nixos-plugin-pins.mjs replaces every occurrence of each anchor instead of exactly one, keeping both blocks in sync (still failing loudly on zero matches). Verified: corrupting only one block heals both; --check passes against the real v0.6.1 release data.

4. Deploy-key fallback for the pins job

The pins push to main originally failed with GH013. The job now supports two auth modes: if the Actions secret NIX_PINS_DEPLOY_KEY is set (write-enabled deploy key, with Deploy keys on the ruleset bypass list), checkout/push go over SSH; when unset, actions/checkout falls back to GITHUB_TOKEN — which works now that the re-run pushed successfully, so nothing needs configuring unless the token path breaks again.

Testing

  • eslint ., tsc --noEmit — pass
  • build-storybook — succeeds; SpaceGrotesk-Variable-*.ttf and Inter-Variable-*.ttf present in storybook-static/assets/, @font-face with font-weight: 300 700 in the built CSS
  • Pin script re-tested with the dual-block doc: update, idempotency, --check fresh/stale, single-block corruption healing
  • Workflow YAML parses; checkout falls back to token auth when the secret is unset

🤖 Generated with Claude Code

claude added 2 commits July 13, 2026 14:17
The pins job's push to main can be blocked by the pull-request rule
(GH013). Let the job authenticate with a write-enabled deploy key when
the NIX_PINS_DEPLOY_KEY Actions secret is set ("Deploy keys" then goes
on the ruleset bypass list); when unset, checkout falls back to
GITHUB_TOKEN, which requires the workflow to be allowed through the
ruleset instead.

Add a standalone, copyable pin block to the plugin pins section of
docs/deployment-nixos.md so the current versions and hashes can be
copied with one click. The pins now appear twice (copy block + full
module example), so the update script replaces every occurrence of
each anchor instead of exactly one, keeping both blocks in sync.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkN8eGu18MoULRF4XLb5Y4
The "helpwave id" brand text requested font-weight 900, but Space
Grotesk's variable weight axis only spans 300-700 and the @font-face
declares that range. Browsers diverge on out-of-range requests:
Chromium on Windows (Edge) renders the 700 instance with synthetic
bold smeared on top, and Safari can fall back to the default 400
instance, so the heavy brand text looked broken while all other
weights rendered fine. Use font-bold (700) like hightide's own brand
components do.

Bump to 0.6.2 so the fix ships in a release.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkN8eGu18MoULRF4XLb5Y4
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 13, 2026

Copy link
Copy Markdown

Deploying id-helpwave-de with  Cloudflare Pages  Cloudflare Pages

Latest commit: afdd9c4
Status: ✅  Deploy successful!
Preview URL: https://8115d902.id-helpwave-de.pages.dev
Branch Preview URL: https://claude-labelled-checkbox-spa.id-helpwave-de.pages.dev

View logs

Storybook's preview imported the hightide globals and index.css but not
fonts.css, so stories rendered in system-fallback fonts instead of the
self-hosted Inter and Space Grotesk that production loads via main.tsx.
Import fonts.css in the same order as the production entry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MkN8eGu18MoULRF4XLb5Y4
@felixevers
felixevers merged commit e6ddd04 into main Jul 13, 2026
5 checks passed
@felixevers
felixevers deleted the claude/labelled-checkbox-spacing-fonts-mscuzd branch July 13, 2026 14:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants