Skip to content

Render pricing from the API and fix SEO/AEO findings - #101

Merged
batuhan merged 15 commits into
mainfrom
seo-fixes-docs
Oct 31, 2026
Merged

batuhan merged 15 commits into
mainfrom
seo-fixes-docs

Conversation

@batuhan

@batuhan batuhan commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Stacks on #99; the base is private-beta-labels. Do not merge before that label change.

Docs now render prices, seats, allowances, usage rates, and worked bills from one validated build-time pricing document. Deploy the public GET /v1/pricing endpoint before deploying these docs. CI explicitly uses the captured pricing fixture; normal builds fail on fetch or validation errors and never fall back to stored prices.

  • D2 / AEO F6: generate pricing includes and variables from the catalog document, preserve shared allowance pools and periods, calculate the 12-editor example, and qualify anonymous expiry with changed-file resets and the absolute cap. A drift guard checks the vendored validator against the generated API contract.
  • T1 / T2 / D4: use final trailing-slash URLs in canonicals, sitemap entries, body links, navigation, and agent exports. The refreshed setup snapshot declares self-canonicals under /docs/setup/ and final trailing-slash links. The setup-index reader accepts those final links when grouping clients in navigation.
  • AEO F3–F5 / D8: move advertised agent catalogs out of the forbidden nested dot-directory, emit their media types, document actual docs API routes, and reconcile MCP guidance with the operation catalog and runtime differences.
  • D1: compare full REST/Partner contracts, including referenced schemas, servers, and security. Give 346 exact duplicates a REST canonical owner and exclude their Partner copies from the sitemap; distinct Partner contracts stay self-canonical.
  • T4 / T7: load shared navigation only when an island requests it, and preload only Latin fonts while retaining extended Unicode faces.
  • T6: replace retired authored HTML redirect documents with one-hop HTTP redirects, preserve queries, and check the compiled routing behavior. Verified prefix compression preserves all 3,604 compatibility mappings. The build rejects more than 88 Docs dynamic rules; compression emits 84 to leave room for the Website compiler’s 16 dynamic rules, including host-specific exact redirects. The composed artifact compiles with 100 dynamic and 1,947 static rules, without routing errors.
  • D3 / D5–D7 / D9–D10: copy the verified producer snapshot wholesale, add contextual next steps and the Claude-artifact sharing guide, derive breadcrumb schema from the visible linked trail, distinguish authentication titles, and improve history titles, heading order, and presentation without noindex.

HTML bytes, before → after (uncompressed; the refreshed generated snapshot also changes page content):

Page Before After
/docs/quickstart/ 583,440 228,347
/docs/billing/ 572,366 218,168
/docs/api/reference/spaces/updatespace/ 1,194,275 831,679

The serialized client payload on these pages drops from about 387 KB to 13 KB. The built-output checks cover every content page, rather than sampling these three.

Validation with Bun 1.3.11 and Node 26, with the explicit fixture:

check: 0 errors, 0 warnings, 0 hints
validate: passed (strict; no broken links or OpenAPI warnings)
verify:prose: clean (981 pages, 2872 OpenAPI prose fields)
test:docs: 34 pass, 0 fail
build: passed
composed routing: 100 dynamic, 1947 static, no errors
verify:routes: 93 IA routes; 1,989 HTML documents; 1,931 search/corpus pages
SEO verification: 1,932 content pages; 1,586 canonical owners; final links; matching breadcrumbs; public catalogs; shared navigation
audit: passed (Website dependencies are checked during composition)
verify:public-safety: passed
git diff --check: passed

The refreshed producer snapshot uses OpenAPI 3.1 null unions and corrects the live-capability lookup description. Strict validation and Vale now pass. The snapshot is copied wholesale, digest-verified, and consumed through the existing overlays; the Private Beta and share-link wording is preserved.

Remaining findings and limits:

  • T6: 1,465 historical generated alias mappings retain two redirects because the compatibility table must fit the platform's static/dynamic rule limits. All 73 authored retired routes are one-hop, and emitted internal links point directly at final pages.
  • D3: the refreshed snapshot improves actionable error guidance; generic/internal stubs without a verified public trigger remain producer-owned.
  • D10: generated references lack producer revision dates. Release dates remain intact; no build timestamp is presented as a meaningful content update.
  • Live catalog status and the Claude sharing flow still need post-deployment verification. No production deploy or authenticated production MCP session was performed.

View with [code]smith QA with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

The Access page option now reads "Anyone with the share link can open
it, no account needed." Audience copy says share link everywhere.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-31T01:38:01.623743Z d3cd435 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@indent

indent Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Issues

All clear! No issues remaining. 🎉

6 issues already resolved
  • The generated plans table shows Enterprise as Custom | $0 | Unlimited, so the public billing page says Enterprise gets no usage credit. The old table said Custom for that column. Render Custom for plans without a self-serve price. (fixed by commit bbdea41)
    Found by Indent Review Agent
  • The generated limits and capabilities tables on the public billing and limits pages show raw keys such as "storage Bytes" and "builds Deploys Daily", and values like "Unlimited bytes" and "100 minute (month)". Add a label map and format units, bytes and plurals. (fixed by commit bbdea41)
    Found by Indent Review Agent
  • Retired pages' .mdx mirror URLs (for example /docs/publishing.mdx) now 404. The new markdownTwinRules only restores the .md redirect, and the stubs for both mirrors were deleted. Generate rules for both extensions and check both in verify-routes. (fixed by commit 1783e68)
    Found by Indent Review Agent
  • The Claude artifact guide says Public means "anyone with the share link", but the merged access page defines Public as anyone on the web and treats the share link as a separate private-Space card. Readers wanting link-only sharing could make the Space fully public. (fixed by commit 1783e68)
    Found by Indent Review Agent
  • The new .mdx twin rules push the composed Docs plus Website routing table to about 2032 static and 2131 total rules, over the platform limits of 2000 and 2100. The Website build would fail when it pins this revision. The Docs-only budget check and its test don't reserve the Website's static rules, so they pass. (fixed by commit e875a2f)
    Found by Indent Review Agent
  • Retired pages' .mdx URLs, for example /docs/publishing.mdx, 404 again, because the .mdx twin rules were removed. finalize-site.mjs still deletes Blume's meta-refresh stubs for them. Only old links and bookmarks are affected, since nothing in the build advertises these URLs. Keep the stubs that have no HTTP rule. (fixed by commit dcd4ace)
    Found by Indent Review Agent

CI Checks

All required CI checks passed on dcd4ace.

Review agents

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

Passed (1)
  • Indent Review Agent · No issues found in the current changes
Full results

Indent Review Agent

  • Summary: No issues found in the current changes
  • Last ran on commit: dcd4ace6
  • Latest result
    {
      "summary": "No issues found in the current changes",
      "findings": []
    }

@socket-security

socket-security Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedzod@​4.6.01008510095100

View full report

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d3cd4358cb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/finalize-site.mjs Resolved
Comment thread scripts/pricing.mjs Resolved
Comment thread scripts/pricing.mjs Resolved
@spacefast
spacefast Bot temporarily deployed to preview/seo-fixes-docs October 31, 2026 01:41 Inactive
@spacefast
spacefast Bot temporarily deployed to preview/seo-fixes-docs October 31, 2026 01:51 Inactive
@spacefast
spacefast Bot temporarily deployed to preview/seo-fixes-docs October 31, 2026 02:16 Inactive
The rewrite pattern could start inside external URLs such as
https://docs.github.com and turn them into https:/docs/.github.com.
It now matches only the Spacefast origin or a root-relative /docs path
at a path boundary.

Pricing tables use explicit row labels, format bytes, durations and
plurals, and show Custom for negotiated plans, whose credit the API
now reports as null.
@spacefast
spacefast Bot temporarily deployed to preview/seo-fixes-docs October 31, 2026 13:56 Inactive
The Access page option now reads "Anyone with the share link can open
it, no account needed." Audience copy says share link everywhere.
General access has two options, Private and Public. Share links have
their own card, and the role picker only appears for public Spaces.
@batuhan
batuhan force-pushed the private-beta-labels branch from 71e1658 to 4186ce5 Compare October 31, 2026 13:58
Section-alias collapse from main now runs before operation-alias
compression, and the budget counts named-segment rules as dynamic, as
the platform does. Retired-page Markdown twins point at slashless .md
files. The redirect manifests for other hosts are no longer published.
@spacefast
spacefast Bot temporarily deployed to preview/seo-fixes-docs October 31, 2026 14:17 Inactive
Comment thread scripts/redirect-rules.mjs Resolved
Drop has its own address. The quickstart, overview, glossary, publish
page and artifact guide now send people there instead of to the dashboard.
@spacefast
spacefast Bot temporarily deployed to preview/seo-fixes-docs October 31, 2026 18:19 Inactive
@spacefast
spacefast Bot temporarily deployed to preview/seo-fixes-docs October 31, 2026 20:24 Inactive
@batuhan
batuhan changed the base branch from private-beta-labels to main October 31, 2026 20:24
Blume publishes .md and .mdx mirrors, so a retired page's .mdx URL also
gets an HTTP redirect. The Claude artifact guide no longer says Public
means anyone with the share link.
@spacefast
spacefast Bot temporarily deployed to preview/seo-fixes-docs October 31, 2026 20:39 Inactive
Comment thread scripts/redirect-rules.mjs Resolved
An .mdx twin rule per retired page pushed the composed Website and Docs
artifact past 2,000 static redirects. Retired pages keep their .md HTTP
redirect, and the routing budget now reserves the Website's exact rules.
@spacefast
spacefast Bot temporarily deployed to preview/seo-fixes-docs October 31, 2026 21:18 Inactive
Comment thread scripts/finalize-site.mjs Resolved
They have no HTTP rule under the static redirect cap, so the noindex
stub still forwards old links. A stub is not a page, so it carries no
canonical and the SEO check skips it.
@spacefast
spacefast Bot temporarily deployed to preview/seo-fixes-docs October 31, 2026 21:38 Inactive
@batuhan
batuhan merged commit fd532dc into main Oct 31, 2026
6 checks passed

This branch was previously deployed

1 inactive deployment
preview/seo-fixes-docs — dcd4ace6 Deployed Oct 31, 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