Skip to content

Link the header mark to the Website and the label to Docs - #114

Open
batuhan wants to merge 3 commits into
mainfrom
brand-lockup
Open

batuhan wants to merge 3 commits into
mainfrom
brand-lockup

Conversation

@batuhan

@batuhan batuhan commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

The header brand was one link to /docs/. It is now two links:

Element Link Accessible name
Spacefast mark / (Website home) "Spacefast home" (the SVG is aria-hidden)
"Docs" label /docs/ (Docs home) "Docs"

The link rules. Docs only ship inside the Website artifact: the Website build copies dist/ into its own output at /docs. So a root-relative / that skips the deployment base reaches the Website home on whatever origin serves the page: production, the Website's hosted preview, or a local Website build. / is already a declared Website-owned URL in scripts/website-dependencies.mjs, so composition checks that the Website serves it. Under standalone bun run dev here, / has no Website behind it, the same as every other Website-owned URL. The label uses withBase("/").

The look doesn't change. The mark is 20px tall and the label follows it with an 8px gap and no divider. The label is 600 weight, 16px, foreground color, and truncates on overflow. Each link has its own hover (opacity 0.8). Each keeps the theme's 2px accent :focus-visible outline.

Changes

  • components/Logo.astro: a Logo layout override registered through defineComponents in components.ts. It takes Blume's Logo props and renders Blume's inlined currentColor wordmark, so the mark follows the theme.
  • blume.config.ts: the logo config already matches (href: "/", text: "Docs"). Added a comment that the component renders two links.
  • theme.css: deleted the [data-blume-header] > a:first-of-type rules. They never matched because the brand link sits inside a div, not directly under the header. That is why the current header already shows 600 weight with an 8px gap.
  • scripts/verify-routes.mjs:
    • Checks that the built header lockup on three pages has exactly these two links with these hrefs and names. To confirm the check bites, I changed the mark's href to /docs/ in the built HTML: the check failed with header lockup is wrong.
    • The "every root-relative URL carries the /docs base" check now skips declared Website-owned URLs.

No other script asserted on the header logo. The ones I looked at were docs-experience.test.mjs, verify-built-seo.mjs, and audit-composed-site.mjs.

Verification

Run with SPACEFAST_PRICING_FIXTURE=test/fixtures/pricing-document.json:

bun run build          exit 0
  Route verification passed: all 105 IA routes, 2070 HTML pages, 1943 Pagefind records, 1598 sitemap URLs, 1943 LLM/corpus pages, 1961 routing rules covering 3604 compatibility URLs, and every root-relative URL resolves.
  SEO verification passed: 1944 pages, final canonicals and links, 1598 canonical owners, matching breadcrumbs, public catalogs, and shared navigation.
bun run check          exit 0   [blume] ✔ No type errors.
bun run validate       exit 0   [blume] ✔ No broken links found.
bun run test:docs      exit 0   tests 36, pass 36, fail 0
bun run audit          exit 0   Docs audit passed: 1945 pages; 1946 findings belong to declared Website dependencies and will be verified during composition.
bun run verify:public-safety  exit 0   2015 text file(s) and 3 symlink(s) scanned.
bun run verify:prose   exit 0   verify-prose: clean (993 pages, 2872 OpenAPI prose fields).

Built dist/quickstart/index.html header, with the SVG elided:

<div class="flex min-w-0 items-center gap-2" data-sf-brand><a aria-label="Spacefast home" class="inline-flex items-center transition-opacity hover:opacity-80 shrink-0 text-foreground" href="/"><span aria-hidden="true" …><svg…/></span></a><a class="inline-flex items-center transition-opacity hover:opacity-80 min-w-0 font-semibold text-base text-foreground" href="/docs/"><span class="truncate">Docs</span></a></div>

Measured in Chromium against the dev server, in both themes: mark height 20px, gap 8px, label 600 weight and 16px, hover opacity 0.8, keyboard focus outline solid 2px.

Summary by CodeRabbit

  • New Features
    • Added a branded header lockup with an optional logo and a text label that falls back to the site title.
    • The logo links to the website home, while the “Docs” link leads to the documentation home, including on sites hosted under a deployment path.
  • Style
    • Removed wordmark-specific styling from the header.

The Spacefast mark now links to the Website home at the origin root, and
the "Docs" label links to the Docs home. A Logo layout override renders
the pair; the header CSS that restyled the old single link is removed.
verify-routes checks the two links and lets declared Website-owned URLs
skip the /docs base check.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@indent

indent Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Issues

No issues found.

CI Checks

All required checks pass on 763f30a. The only failure is the non-required Spacefast Builds check, which reports the same platform error as on the previous head.

Failing Spacefast Builds
  • The check output says only "The runtime API hit a fatal error." That is the Spacefast build platform failing, not a build or test failure from this PR. It is the same message as on the previous head. Re-running the check should clear it.

Review agents

Select any unchecked box below to run or rerun that agent.

Passed (1)
  • Indent Review Agent · No bugs found in the header lockup split.
Full results

Indent Review Agent

  • Summary: No bugs found in the header lockup split.
  • Last ran on commit: 763f30ab
  • Latest result
    {
      "summary": "No bugs found in the header lockup split.",
      "findings": []
    }

@coderabbitai

coderabbitai Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

Explain Change →

Warning

Review limit reached

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

Next included review available in 39 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available. Your 93 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Learn how review limits work.

Review configuration:

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d36ecfa5-cba1-4498-8123-c94d0175b4d3
Commits

Reviewing files that changed from the base of the PR and between 2e8b6fd and 763f30a.

Files selected for processing: 1

  • components/Logo.astro

No actionable comments were generated in the recent review.

Walkthrough

The layout registers a brand lockup with optional SVG and text links. The route verification script checks the lockup on three built pages and skips listed website dependencies during its root-relative URL scan.

Changes: Header brand lockup

Layer / File(s) Summary
Add and register the brand lockup
components/Logo.astro, components.ts, blume.config.ts, theme.css
The component renders an optional SVG link and a text link. The layout registers the component. Configuration comments document the destinations, and CSS rules for the former wordmark styling are removed.
Verify rendered links and URLs
scripts/verify-routes.mjs
The script checks the ordered links in the header lockup on three built pages. Its root-relative URL scan skips URLs listed in websiteDependencies.

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Feature

Merge Risk: Minimal · previous review 2e8b6

The header links are supported by the configured logo. No merge-blocking risk was identified.

Architecture risk: Low · up to 2e8b6

The change affects 5 systems.

Changed systems: blume.config.ts, components, components.ts, scripts, theme.css

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — blume.config.ts (service) was modified; 1 changed file maps to changed impact.
  • observed — components (service) was modified; 1 changed file maps to changed impact.
  • observed — components.ts (service) was modified; 1 changed file maps to changed impact.
  • observed — scripts (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in components/Logo.astro: Adds the Logo.astro component, which renders optional SVG and text home links. The SVG link uses logo.href and an accessible label derived from logo.alt or “Spacefast”; the text link targets withBase("/") and displays logo.text or, if absent, site.title.
  • observed — Modified behavior in scripts/verify-routes.mjs: The script now imports websiteDependencies from website-dependencies.mjs.
  • observed — Modified behavior in scripts/verify-routes.mjs: Adds a header-lockup check on three built pages. It extracts links from the data-sf-brand region and fails unless their ordered href and label pairs are / / “Spacefast home” and ${deploymentBase}/ / “Docs”.
  • observed — Modified behavior in scripts/verify-routes.mjs: The root-relative URL scan now skips URLs found in websiteDependencies, as well as protocol-relative URLs; remaining URLs continue through the deployment-base and built-file checks.
Pre-merge checks: Passed 5

Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: splitting the header brand into a Website link for the mark and a Docs link for the label.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 3 files.

Finishing Touches

Generate docstrings

  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e8546c85-fc8f-4f6e-b2fb-1e3945704ca4
Commits

Reviewing files that changed from the base of the PR and between 229a850 and 2e8b6fd.

Files selected for processing: 2

  • blume.config.ts
  • components.ts
Files skipped from review as they are similar to previous changes: 1

  • blume.config.ts

Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

@spacefast
spacefast Bot had a problem deploying to preview/brand-lockup November 9, 2026 13:15 Failure
The mark's link leaves the docs' client router, so a router fetch before
the full page load was wasted. Fail the build if the configured logo stops
resolving to an inline SVG instead of shipping a header without its mark.
@spacefast
spacefast Bot had a problem deploying to preview/brand-lockup November 9, 2026 13:36 Failure

This branch had an error being deployed

1 failed deployment
preview/brand-lockup — 763f30ab Deployed Nov 9, 2026 by spacefast[bot]
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.

1 participant