feat(seo): internal linking, sitemap focus, CSS inlining fix#215
Merged
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: Wrong configuration key silently disables CSS fix
- Changed the configuration key from
CritterstoBeastiesinwebsite/astro.config.mjsto match what@playform/inlinev0.1.4 (which depends onbeasties, notcritters) actually reads, so thepreload: "swap"option now takes effect.
- Changed the configuration key from
Or push these changes by commenting:
@cursor push 6fafa9612a
Preview (6fafa9612a)
diff --git a/website/astro.config.mjs b/website/astro.config.mjs
--- a/website/astro.config.mjs
+++ b/website/astro.config.mjs
@@ -18,7 +18,7 @@
filter: (page) => !page.includes("/blog"),
}),
inline({
- Critters: {
+ Beasties: {
// "swap" converts deferred links to preloads that swap to
// rel="stylesheet" once loaded — preserving inline critical CSS
// so pages don't render unstyled while waiting for the fullYou can send follow-ups to the cloud agent here.
Reviewed by Cursor Bugbot for commit 786a3cf. Configure here.
The CSS inlining plugin deferred ALL stylesheets on some docs pages (notably /docs/server/) without inlining any critical CSS, causing the page to render as raw unstyled HTML with giant SVG chevrons. The ~800ms render-blocking CSS savings aren't worth broken first paint on any page. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The default "media" preload strategy deferred all CSS on some pages without inlining anything, causing unstyled renders. The "swap" strategy converts deferred links to preloads that swap to rel="stylesheet" once loaded, while still inlining critical CSS so pages render styled on first paint. Verified: all 18 pages now have inlined critical CSS + async full stylesheet loading. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The earlier fix passed the preload option under a "Critters" key, but @playform/inline v0.1.4 expects "Beasties" (the package wraps the beasties library, not critters). Unrecognized keys are silently ignored, so the preload:"swap" setting never took effect — docs pages kept rendering unstyled because the default "media" strategy remained active. Verified on build: docs/server/index.html now has critical CSS inlined in a <style> block and the Tailwind stylesheet loads via rel="preload" with onload="this.rel='stylesheet'" (the swap strategy). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
786a3cf to
109b858
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
Addresses multiple SEO and rendering issues to help Google index the site's docs pages.
Rendering Fix (critical)
Docs pages (notably
/docs/server/) were rendering as raw unstyled HTML. The@playform/inlinecritters plugin's default"media"preload strategy was deferring all CSS without inlining any critical styles. Fixed by configuringpreload: "swap"which still inlines critical CSS but swaps stylesheets asynchronously after load.Internal Linking
Google Search Console showed 17 pages "Discovered - currently not indexed." Internal linking is the main accelerator:
Sitemap Focus
/blog/pages to focus crawl budget on docs (blog content predates the harness pivot)Structured Data
dateModifiedfrom TechArticle JSON-LD (Google penalizes build-time stamps as fake freshness signals)author: Organizationto TechArticleTest plan
npm run build— 18 pages built with inlined critical CSS/docs/server/renders correctly on local preview🤖 Generated with Claude Code
Note
Medium Risk
Changes the site build’s critical-CSS inlining and stylesheet preload behavior, which can affect docs rendering and performance across all pages if misconfigured.
Overview
Updates
website/astro.config.mjsto pass an explicitBeasties.preload: "swap"configuration into@playform/inlineinstead of using the plugin defaults.This ensures critical CSS is still inlined while deferred stylesheets swap to
rel="stylesheet"after load, addressing pages that previously rendered unstyled due to the default preload strategy (and clarifying the correct config key via comments).Reviewed by Cursor Bugbot for commit 109b858. Bugbot is set up for automated code reviews on this repo. Configure here.