This repository was archived by the owner on Oct 27, 2026. It is now read-only.
Repository navigation
ci: wait for the published design-system version before bumping - #1233
Merged
Merged
Conversation
The monorepo publish workflow dispatches update-design-system-dependency seconds after `bun publish` returns, but npm takes several minutes to serve the new version, so `pnpm install @arcadeai/design-system@latest` resolved the previous release on every run. Accept an optional `version` input, poll npm until that version is served, and install it exactly. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WDfrftnAqwD1QKiL3MYXBf
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WDfrftnAqwD1QKiL3MYXBf
teallarson
approved these changes
Oct 8, 2026
sdserranog
added a commit
that referenced
this pull request
Oct 19, 2026
* chore: scaffold Fumadocs + Next 16 + bun skeleton Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs: migration plan / workstream contract Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * feat: migrate all docs content, components, toolkit pages, scripts, tests and CI to Fumadocs - 170 MDX pages + 37 meta.json converted from app/en (bodies byte-identical, verified by scripts/migration/verify-content.ts) - Nextra-compat MDX components (Callout, Tabs with index-based persistence, Steps, Cards, pre with Terminal header, Mermaid) - toolkit (MCP server) pages served from JSON through the docs catch-all (124 routes) + generated sidebar meta.json - scripts, 72 test files, husky hooks, GitHub workflows ported to bun - llms.mdx per-page markdown route, Orama search, sitemap, redirects, security headers - update-internal-links: skip locale-root redirects (empty path matched every link/backtick pair) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * feat(content): link directly to /en routes; fix stale internal links - codemod prefixes 860 root-relative content links with /en so clicks no longer bounce through the proxy locale redirect (verifier updated to match) - migrate-content gains --content-only and emits hidden-page markers and formatted meta.json so a re-run leaves a clean tree - 404 page, MCP client grid and landing page point at current URLs Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(ui): restore the Nextra chrome and fix visual regressions - notebook layout: top navbar with logo, search, Sign Up / Dashboard, GitHub and Discord (single GitHub icon), sidebar sections open by default - Docs Home icon (lucide 1.x renamed Home -> House) - Nextra-style coloured callouts; terminal traffic lights no longer overridden by shiki span styles; description no longer duplicated under the title - toolkit pages: single breadcrumb, content clear of the fixed TOC panel - page components rendered inside the prose body keep their own heading spacing; toolkit catalog designation and behavior-flag order restored (the linter sorts object keys, so display order is now explicit) - Edit on GitHub moves under the table of contents Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * ci: skip jobs that need upstream secrets when they are not configured - llms.txt generation skips (with a notice) when OPENAI_API_KEY is unset - Algolia crawler sync runs only when ALGOLIA_CRAWLER_ID is configured - scheduled toolkit-docs generation and example-date updates run only in the upstream repo or when triggered manually - schema validation: an empty file list no longer produces a bare "|" that made the validator fail with "No files found" (latent upstream bug) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix: keep root files out of the locale redirect; verifier overrides; freshness schema - /:locale redirect scoped to (en|es|pt-BR): it was sending /llms.txt, /robots.txt and /sitemap.xml to /<file>/home (404) - proxy matcher lets /specs/*.yaml through - verify-content reads scripts/migration/overrides/*.json so intentional moves, deletions, enhanced pages and new hub pages can be declared per owner - frontmatter gains lastVerified / verifyEvery for the freshness badge Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * build: allow NEXT_DIST_DIR for parallel builds Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Bring in upstream docs changes since the migration snapshot The migration was taken from ArcadeAI/docs at 2ba3f56. This ports the twelve commits made there since, up to ab83fe0. - New Private Registry page under Governance, with its four images, its menu entry, and the links to it from the governance overview and the two MCP gateway pages (#1225, #1230, #1231). - Dashboard menu label "Connected apps" is now "OAuth providers" on 36 auth provider pages (#1226). - Slack: reactions:write added to the scope list (#1224). - Toolkit data refreshed for 83 files (#1219), and the generator pages public tools at the API's 1,000 cap (#1228). - llms.txt: summaries come from Claude Haiku 4.5, placeholder descriptions are retried, and the file is not rewritten when only the header would change; workflows read ANTHROPIC_API_KEY (#1229). - Design system 7.11.0, and the update workflow waits for the requested version to appear on npm (#1223, #1233). The Next.js and transitive security bumps (#1235, #1240) needed no change: the lockfile here already had the patched versions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Make the migrated site an exact copy of production A side-by-side comparison with docs.arcade.dev showed the migration had the same content and routes but a different look. This ports production's own layout and components instead of approximating them. - Chrome (components/chrome): navbar, sidebar with its footer row, mobile menu, breadcrumb, title row with the single "Copy page" button, table of contents, last updated date, previous/next links, footer band and 404 page, with production's sizes, colours and behaviour. - Content: Nextra's element renderers ported for headings, links, lists, tables, tabs (every panel in the HTML, synced and remembered), code blocks, steps, callouts, cards, details and image zoom. Heading ids come from one github-slugger per page, as in production. - Toolkit, catalog and home pages: production's typography, borders, legend text and "Copy page" request. - Search is production's component on react-instantsearch. - Head metadata, sidebar tree and sitemap are equal on all 294 pages. - /en and /es redirect through the proxy with a 307, as in production. - Packages shared with production are pinned to its versions (React, lucide-react, ui-kit, mermaid, motion, posthog and others). Biome and ultracite stay on the versions this repo's config is written for. - Upstream #1242 (Entra group access permissions) ported. Not copied on purpose: production lets the toolkit article run 16px under the right-hand panel at 1280-1440px, which clips text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Close the gaps a full-page pixel diff found against production Every one of the 294 pages was screenshotted top to bottom on docs.arcade.dev and on this build, in dark desktop, dark phone and light desktop, and compared pixel by pixel. - Code fences: Nextra's line-highlight meta is parsed in full, so `{1-5} {16}` and `{9-18, 20, 24}` shade the same lines as production. - Table of contents: inline code in an entry renders with the content's own code component. - Toolkit pages: the article has production's exact width again, so every line breaks in the same place. - "Last updated on": imported pages carry the date production shows for them (data/upstream-last-modified.json); a page edited after the import uses its own git date. Dates are formatted in UTC. Result: 289 of 294 pages are pixel-identical in dark desktop and 290 on phone. The rest are the two PostHog survey pages (no key locally), one recompressed image and Cloudflare's e-mail protection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Upgrade every package to its latest version Next.js 16.4.0, React 19.3.0, Fumadocs 16.17, Tailwind 4.3.3, TypeScript 7, Vitest 5, lucide-react 1.x, mermaid 12, motion 14, ui-kit 0.21, zod 4.6, posthog, algolia and the rest. Changelogs for every major jump were checked against how this repo uses the package. - Mermaid 12 defaults to the ELK layout and the "neo" look; the diagram component asks for dagre and "classic", which the diagrams were written for. - The style-review scripts named a retired Claude model; they use claude-sonnet-5-5 now. No other code needed changing: type check, lint, 884 tests and the production build pass. Against production, 172 of 294 pages stay pixel-identical on desktop; about 120 differ by at most 0.03% of pixels (redrawn lucide icons), and the glossary diagrams by 0.7%. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Remove machine-specific paths from the migration script and plan The content migration script defaulted to a path on one developer machine. It now requires --source or MIGRATION_SOURCE. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Remove migration scripts and plan, run the toolkit generator on Node Drop scripts/migration and MIGRATION_PLAN.md along with their package scripts and references. The toolkit generator CLI and the sidebar sync crashed under Bun: Bun resolves the design system bun export condition, which points at sources the package does not ship. Run both through the pinned tsx, as production does, and add Node to the workflow. The nine integration meta.json files now carry the key order the sync writes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Run llms.txt generation on Node scripts/generate-llmstxt.ts crashed under Bun for the same reason as the toolkit generator: it imports design system metadata, and Bun resolves the package bun export condition to sources that are not shipped. Run it through the pinned tsx and add Node to the llms.txt workflow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Keep package versions at production levels, restore dropped files Revert the package upgrades so the pull request only swaps the docs framework: every package production also uses is back at production version, including vite. Restore two files production has that the migration dropped: the curate-toolkit-docs skill (paths updated for the new layout) and components.json. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Drop formatting and refactors unrelated to the migration Use production lint versions and config (Biome 2.3.2, ultracite 6.1.0) so files production already has are not reformatted, and put production text back wherever the migration only needed to move a file or update its import paths. Each restored file was kept only if typecheck, lint, the test suite and the rendered HTML of every page were unaffected. Also restore production Node version (22), its schema validation workflow and its .gitignore, and split three functions in new code that production complexity rule rejects. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Point the changelog agent and the Examples page at the new paths The changelog agent still wrote to app/en/references/changelog/page.mdx, which no longer exists, and the Examples page told contributors to edit the old file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Remove stale references to the old layout Curation import lines, and the toolkit data generated from them, named modules that no longer exist (app/_components and nextra/components). They now name the current components, with the curation hashes refreshed through the generator hash function. Also correct components.json paths, drop the i18n cache entry from .cursorignore, and reword comments that described the previous setup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Update old paths in test fixtures and two comments Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Restore the header and footer on the page-not-found screen Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Match production: dependency pins, crawler selectors, workflow conditions - Carry the security pins from pnpm-workspace.yaml into package.json. - Exempt @arcadeai/design-system from the release-age guard so the update workflow can install a release right after it is published. - Restore the crawler selectors: the pages keep the same class names. - Remove job conditions and the build directory option that production does not have. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Match production's proxy: drop the yaml exclusion and the pathname refactor Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Point Next at the following page on toolkit pages Toolkit pages are not part of the previous/next sequence. When one was open, Next skipped the real page right after it (Gmail went to Tavily instead of Nimble). Previous and Next now point at the pages on either side of it. Nextra had the same skip on production. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Check the root meta.json in the pre-commit hook The hook's pattern needed a folder after content/docs/, so the top-level sidebar file never reached check-meta. It does now. The catch-all also passes the toolkit pages' breadcrumb explicitly, with a note that the sidebar trail above the toolkit's own one matches production. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This branch was successfully deployed
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Requested by Teal Larson · Slack thread
Before: Every automated design-system bump opened or updated the PR with the release before the one that triggered it. For example, the monorepo published 7.11.0 at 22:18:42Z on 2026-10-07 and dispatched run 37695420617 at 22:19:20Z. That run resolved
latestat 22:19:47Z, but npm didn't serve 7.11.0 until 22:22:01Z, so #1223 got 7.10.1. Runs 37527886593, 37507281617, and 37355238970 show the same 4–5 minute gap.After: When the dispatch passes a
version, the workflow polls npm until it serves that exact version (every 30s, up to 20 attempts, so at most 10 minutes), then runspnpm install @arcadeai/design-system@<version>. If no version is passed, it installslatestas it does today, so manual runs keep working.How:
workflow_dispatchgets an optionalversioninput. A new step checks the input against a semver regex, then loops onnpm view @arcadeai/design-system@$VERSION version --prefer-online. The install step uses${{ inputs.version || 'latest' }}, passed throughenvinstead of being interpolated into the script.Companion change in ArcadeAI/monorepo: https://github.com/ArcadeAI/monorepo/pull/5265 updates
.github/workflows/design-system-publish.yml(trigger-docs-updatejob) to pass the version it published:Merge this PR before ArcadeAI/monorepo#5265.
gh workflow run -f version=...fails against a workflow that doesn't declare the input.🤖 Generated with Claude Code
https://claude.ai/code/session_01WDfrftnAqwD1QKiL3MYXBf
Generated by Claude Code
Note
Low Risk
CI-only workflow change with input validation; no application runtime or auth/data paths affected.
Overview
Fixes automated design-system bumps installing the previous npm release when the monorepo dispatches the workflow right after publish, before the new version is visible on the registry.
The
update-design-system-dependencyworkflow now accepts an optionalversionworkflow_dispatchinput. When set, it validates semver, polls npm (30s intervals, up to ~10 minutes) until@arcadeai/design-system@<version>is available, then runspnpm installfor that exact version. Manual runs with an empty input still installlatestunchanged.This pairs with a monorepo change that passes the published version on dispatch; that dispatch must run against a workflow that already declares the input.
Reviewed by Cursor Bugbot for commit 0bc5be0. Bugbot is set up for automated code reviews on this repo. Configure here.