Skip to content

fix(ui): stop docs-source's fumadocs-mdx lookup from crashing client-side nav#7632

Merged
loopover-orb[bot] merged 1 commit into
mainfrom
fix/docs-source-server-only
Jul 21, 2026
Merged

fix(ui): stop docs-source's fumadocs-mdx lookup from crashing client-side nav#7632
loopover-orb[bot] merged 1 commit into
mainfrom
fix/docs-source-server-only

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

  • Severe, live bug: every one of the ~48 /docs/* pages in apps/loopover-ui crashed with a full "This page didn't load" error screen when reached via normal in-app navigation (clicking a link). Direct hard page loads were unaffected, which made this easy to miss during review — confirmed reproducing on the live loopover.ai site.
  • Root cause: apps/loopover-ui/src/lib/docs-source.ts imported collections/server, fumadocs-mdx's generated, filesystem-backed runtime module (globs every content/docs/*.mdx file, depends on Node's path). Every docs.*.tsx route's loader() imported it directly via await import("@/lib/docs-source"). TanStack Router route loaders run both on the server (SSR/hard loads) and in the browser (client-side/SPA navigations) — so on a soft navigation this server-only module executed in the browser, where path.join doesn't exist, throwing TypeError: D.join is not a function and rendering the router's error boundary.
  • This was a recent regression from the fumadocs-mdx content-pipeline migration (5003fabe6, 2026-07-16) — docs pages were hand-authored JSX components before that and never hit this path.
  • Fix: move the lookup behind a createServerFn (docs-source.functions.ts + docs-source.server.ts), matching this codebase's existing .server.ts + createServerFn pattern (config.server.ts + example.functions.ts). The client now fetches the page metadata over the wire instead of re-executing the Node-only fumadocs-mdx module in the browser. Updated all 48 docs.*.tsx route loaders to call getDocPage(...) instead of importing docs-source directly.
  • The docs-source.server import inside the server function is a dynamic await import(...) (not a static top-level import) — a static import would drag the eager content/docs/*.mdx glob into any test that merely imports a route module without invoking its loader (caught this via docs.miner-coding-agent.test.tsx, since vitest.config.ts doesn't register the fumadocs-mdx plugin needed to parse .mdx files).

Scope

  • The PR title follows type(scope): short summary Conventional Commit format.
  • This PR is focused (one architectural fix, mechanically applied across all 48 affected route files) and does not mix unrelated backend, UI, MCP, docs, dependency, and deploy changes.
  • This follows CONTRIBUTING.md and does not reintroduce GitHub Pages, VitePress, site/, or CNAME.
  • Linked issue: Closes fix(ui): docs pages crash on client-side navigation (path.join is not a function) #7631 (opened for this fix; as the repo's sole maintainer the contributor-only linked-issue hard-close rule doesn't bind owner PRs, but a tracking issue is still good hygiene).

Validation

  • git diff --check
  • npm run actionlint (via npm run test:ci)
  • npm run typecheck (via npm run test:ci)
  • npm run test:coverage locally — full suite green (1036+ files, 19500+ tests); this is a UI-only change under apps/loopover-ui/**, which Codecov's codecov/patch does not measure (only src/** is measured), so there's no patch-coverage obligation — added a structural regression test anyway (docs-source-server-isolation.test.ts) guarding that all 48 in-scope routes go through getDocPage, not docs-source(.server) directly.
  • npm run test:workers (via npm run test:ci)
  • npm run build:mcp / npm run test:mcp-pack (via npm run test:ci)
  • npm run ui:openapi:check (via npm run test:ci) — no API/schema changes, N/A but ran clean
  • npm run ui:lint
  • npm run ui:typecheck
  • npm run ui:build — also verified the built client bundle no longer contains any docs-source chunk or reference to collections/server/fumadocs-mdx/runtime/server (confirmed via grep over dist/client/assets)
  • npm audit --audit-level=moderate — 0 vulnerabilities
  • New or changed behavior has unit/integration tests for new branches, fallback paths, and sanitizer boundaries — added docs-source-server-isolation.test.ts as a drift guard.

Manual verification: served a production build (vite build, then wrangler dev --config dist/server/wrangler.json against the built Worker output — vite preview itself has an unrelated, pre-existing breakage in this repo, filed separately) and clicked through multiple docs pages via in-app navigation (Docs → Quickstart, sidebar → other pages) — zero console errors, pages render correctly, matching the pre-fix reproduction exactly but now fixed. Confirmed the crash reproduced identically on unmodified main before this fix (stashed the change, same click-through, same path.join is not a function crash).

Safety

  • No secrets, wallet details, hotkeys, coldkeys, user PATs, private keys, raw trust scores, private rankings, or private maintainer evidence are exposed.
  • Public GitHub text stays sanitized, low-noise, and does not imply compensation guarantees or optimization tactics.
  • Auth, cookie, CORS, GitHub App, Cloudflare, or session changes include negative-path tests. N/A — no auth/session/CORS changes.
  • API/OpenAPI/MCP behavior is updated and tested where needed. N/A — no API/OpenAPI/MCP changes.
  • UI changes use live API data or real empty/error/loading states, not production mock/demo fallbacks. N/A — this changes how existing MDX doc metadata is fetched (server vs. client-reexecution), not what data is shown.
  • Visible UI changes include a UI Evidence section — not applicable: this produces zero pixel/visual difference on a successful load (the page content is identical); the only observable difference is that the page loads at all on SPA navigation instead of crashing. See Notes for the actual before/after evidence (console error + error screen vs. clean render).
  • Public docs/changelogs are updated where needed; changelogs are only edited for release-prep PRs. N/A.

Notes

Before (reproduced on unmodified main, clicking Docs → any doc page from the homepage): the page rendered a full "This page didn't load / Something went wrong on our end" error screen, with TypeError: D.join is not a function in the console, originating from fumadocs-mdx's doc()/docs() functions in the docs-source bundle.

After: the same click-through renders the target doc page normally, with an empty console (aside from an unrelated pre-existing VITE_LOOPOVER_API_ORIGIN info warning).

…side nav

Every docs.*.tsx route's loader imported docs-source.ts (fumadocs-mdx's
generated collections/server module) directly. TanStack Router route
loaders run in the browser on client-side navigations, not just the
server, so the Node-only lookup (path.join) crashed every doc page when
reached by an in-app click -- direct hard loads were unaffected, which
made this easy to miss.

Move the lookup behind a createServerFn (docs-source.functions.ts),
matching the existing .server.ts + createServerFn pattern in this
codebase, so it always runs server-side and the client fetches the
result over the wire instead of re-executing the module in the browser.
Updated all 48 docs.*.tsx route loaders.

Closes #7631
@JSONbored JSONbored self-assigned this Jul 21, 2026
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
loopover-ui 1ed9611 Commit Preview URL

Branch Preview URL
Jul 21 2026, 05:10 AM

@codecov

codecov Bot commented Jul 21, 2026

Copy link
Copy Markdown

Bundle Report

Changes will decrease total bundle size by 238.25kB (-3.11%) ⬇️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
loopover-ui 7.42MB -238.25kB (-3.11%) ⬇️

Affected Assets, Files, and Routes:

view changes for bundle: loopover-ui

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/add-scalar-classes-CdnefLtl.js (New) 2.17MB 2.17MB 100.0% 🚀
assets/tanstack-vendor-bReUQ4HX.js (New) 809.44kB 809.44kB 100.0% 🚀
assets/docs.fumadocs-spike-api-reference-DC7WJlZu.js (New) 442.92kB 442.92kB 100.0% 🚀
assets/AgentScalarChatInterface.vue-Bhk54Fn3.js (New) 201.71kB 201.71kB 100.0% 🚀
assets/react-vendor-CW5ST_sQ.js (New) 192.96kB 192.96kB 100.0% 🚀
assets/modal-0PQbyMGy.js (New) 184.38kB 184.38kB 100.0% 🚀
assets/client-BfRMLiKS.js (New) 146.06kB 146.06kB 100.0% 🚀
assets/self-hosting-operations-CVi6rIgP.js (New) 128.93kB 128.93kB 100.0% 🚀
assets/browser-ConnzcdV.js (New) 103.05kB 103.05kB 100.0% 🚀
assets/self-hosting-configuration-C-CyizC5.js (New) 81.9kB 81.9kB 100.0% 🚀
assets/maintainer-panel-XUrfquu0.js (New) 78.53kB 78.53kB 100.0% 🚀
assets/tuning-B0nxqzvj.js (New) 63.29kB 63.29kB 100.0% 🚀
assets/ui-vendor-vOl27Dqx.js (New) 57.04kB 57.04kB 100.0% 🚀
assets/self-hosting-release-checklist-Dphbwx0x.js (New) 51.79kB 51.79kB 100.0% 🚀
assets/self-hosting-security-Bse8Y5lc.js (New) 44.54kB 44.54kB 100.0% 🚀
assets/github-app-Rd1m4Ogz.js (New) 35.05kB 35.05kB 100.0% 🚀
assets/routes-hZGN4JWZ.js (New) 34.83kB 34.83kB 100.0% 🚀
assets/self-hosting-troubleshooting-D0gHGJxT.js (New) 33.53kB 33.53kB 100.0% 🚀
assets/self-hosting-github-app-BwPT0UUI.js (New) 32.76kB 32.76kB 100.0% 🚀
assets/how-reviews-work-IEFrV_-a.js (New) 31.4kB 31.4kB 100.0% 🚀
assets/ams-operations-runbook-D0GUTarD.js (New) 29.99kB 29.99kB 100.0% 🚀
assets/ams-deployment-CGi105GM.js (New) 28.57kB 28.57kB 100.0% 🚀
assets/maintainer-self-hosting-C9R9rA-D.js (New) 27.89kB 27.89kB 100.0% 🚀
assets/owner-panel-6VLLHl-h.js (New) 27.2kB 27.2kB 100.0% 🚀
assets/app-n7bsQVT5.js (New) 25.65kB 25.65kB 100.0% 🚀
assets/privacy-security-WIj9-Fg7.js (New) 24.77kB 24.77kB 100.0% 🚀
assets/self-hosting-quickstart-Bx000N7y.js (New) 24.22kB 24.22kB 100.0% 🚀
assets/ams-config-precedence-BtcEO-BB.js (New) 24.17kB 24.17kB 100.0% 🚀
assets/ams-discovery-plane-DVYyV0n9.js (New) 23.83kB 23.83kB 100.0% 🚀
assets/app.runs-BREvWWIc.js (New) 23.55kB 23.55kB 100.0% 🚀
assets/ams-kill-switch-incident-_P4COD_B.js (New) 22.53kB 22.53kB 100.0% 🚀
assets/miner-panel-DiE1ElEH.js (New) 20.25kB 20.25kB 100.0% 🚀
assets/ams-observability-DypmhEc5.js (New) 20.06kB 20.06kB 100.0% 🚀
assets/maintainer-install-trust-Cj9HizN_.js (New) 20.02kB 20.02kB 100.0% 🚀
assets/ams-goal-spec-DrBhPLnG.js (New) 19.74kB 19.74kB 100.0% 🚀
assets/self-hosting-backup-scaling-ByHjMGsT.js (New) 18.93kB 18.93kB 100.0% 🚀
assets/federated-fleet-intelligence-Di2WhbEk.js (New) 18.67kB 18.67kB 100.0% 🚀
assets/beta-onboarding-BMG7n3-A.js (New) 17.56kB 17.56kB 100.0% 🚀
assets/api._op-a_JQOKqV.js (New) 17.55kB 17.55kB 100.0% 🚀
assets/self-hosting-docs-audit-CjYV7eoV.js (New) 16.63kB 16.63kB 100.0% 🚀
assets/self-hosting-rees-ClrKb8Z4.js (New) 15.63kB 15.63kB 100.0% 🚀
assets/app.index-D3H0j43j.js (New) 15.62kB 15.62kB 100.0% 🚀
assets/miner-quickstart-CJE89TkP.js (New) 15.6kB 15.6kB 100.0% 🚀
assets/self-hosting-ai-providers-B_r9CMOF.js (New) 15.5kB 15.5kB 100.0% 🚀
assets/playground-panel-CnlMbSNf.js (New) 14.49kB 14.49kB 100.0% 🚀
assets/ams-sizing-CCwcc4yG.js (New) 14.15kB 14.15kB 100.0% 🚀
assets/owner-checklist-wLu4sljM.js (New) 14.09kB 14.09kB 100.0% 🚀
assets/self-hosting-unified-ams-orb-BuqBwqrW.js (New) 12.02kB 12.02kB 100.0% 🚀
assets/self-hosting-releases-A-lrMpSS.js (New) 12.01kB 12.01kB 100.0% 🚀
assets/ams-unattended-scheduling-DxtbZRwf.js (New) 11.55kB 11.55kB 100.0% 🚀
assets/miner-coding-agent-CxNvCyMm.js (New) 11.35kB 11.35kB 100.0% 🚀
assets/capacity-BK7tDtSx.js (New) 10.49kB 10.49kB 100.0% 🚀
assets/troubleshooting-ZA5GZ-4v.js (New) 10.32kB 10.32kB 100.0% 🚀
assets/app.audit-C1Ujdzbt.js (New) 10.11kB 10.11kB 100.0% 🚀
assets/extension-Bg3No7dX.js (New) 10.04kB 10.04kB 100.0% 🚀
assets/app.config-generator-DXn9-Vjh.js (New) 9.88kB 9.88kB 100.0% 🚀
assets/fairness-CX1hN0F2.js (New) 8.34kB 8.34kB 100.0% 🚀
assets/scoreability-poHJkI6F.js (New) 8.25kB 8.25kB 100.0% 🚀
assets/self-hosting-rees-analyzers-9fJ9HWmQ.js (New) 8.22kB 8.22kB 100.0% 🚀
assets/maintainers-OkyB5lZY.js (New) 8.03kB 8.03kB 100.0% 🚀
assets/miners-Ixhi73P4.js (New) 7.85kB 7.85kB 100.0% 🚀
assets/agents-kk0h2Yet.js (New) 7.76kB 7.76kB 100.0% 🚀
assets/self-hosting-rag-Bev7P2V5.js (New) 7.75kB 7.75kB 100.0% 🚀
assets/ams-fleet-manifest-CgUx8kTD.js (New) 7.37kB 7.37kB 100.0% 🚀
assets/commands-panel-Dg6YjX2T.js (New) 6.65kB 6.65kB 100.0% 🚀
assets/maintainer-workflow-xYvaRgYB.js (New) 6.5kB 6.5kB 100.0% 🚀
assets/ams-env-reference-CsfGt45V.js (New) 6.48kB 6.48kB 100.0% 🚀
assets/ai-summaries-CeBa05SM.js (New) 6.43kB 6.43kB 100.0% 🚀
assets/roadmap-Cr-UEzT6.js (New) 6.33kB 6.33kB 100.0% 🚀
assets/digest-panel-C12nJfOE.js (New) 6.18kB 6.18kB 100.0% 🚀
assets/repos._owner._repo.quality-CnssmfRh.js (New) 6.14kB 6.14kB 100.0% 🚀
assets/docs.index-Dv3Lpu7a.js (New) 5.55kB 5.55kB 100.0% 🚀
assets/loopover-commands-BvLYLTee.js (New) 5.29kB 5.29kB 100.0% 🚀
assets/branch-analysis-CvtZg7CX.js (New) 5.27kB 5.27kB 100.0% 🚀
assets/mcp-clients-Bs90v4jK.js (New) 5.18kB 5.18kB 100.0% 🚀
assets/miner-workflow-CaE5ZMgp.js (New) 4.89kB 4.89kB 100.0% 🚀
assets/api.index-G29XxyXo.js (New) 4.7kB 4.7kB 100.0% 🚀
assets/quickstart-DvGGESXo.js (New) 4.29kB 4.29kB 100.0% 🚀
assets/upstream-drift-C3DiJIwp.js (New) 3.96kB 3.96kB 100.0% 🚀
assets/api-BQTz4j4B.js (New) 2.69kB 2.69kB 100.0% 🚀
assets/docs-DIYQNEEG.js (New) 2.67kB 2.67kB 100.0% 🚀
assets/app.workbench-jc_fY84s.js (New) 1.58kB 1.58kB 100.0% 🚀
assets/session-D7d8cvYE.js (New) 1.45kB 1.45kB 100.0% 🚀
assets/tooltip-CDE3JsZP.js (New) 1.45kB 1.45kB 100.0% 🚀
assets/tabs-j_-ne-YH.js (New) 1.39kB 1.39kB 100.0% 🚀
assets/app.repos-CQd-81wR.js (New) 1.07kB 1.07kB 100.0% 🚀
assets/input-CA848D7J.js (New) 796 bytes 796 bytes 100.0% 🚀
assets/interface-content-folder.svg-2uIkQCRt.js (New) 778 bytes 778 bytes 100.0% 🚀
assets/file-cog-CcVngVHn.js (New) 758 bytes 758 bytes 100.0% 🚀
assets/docs.ai-summaries-CsjsRL3C.js (New) 506 bytes 506 bytes 100.0% 🚀
assets/app.maintainer-DjgXniDu.js (New) 502 bytes 502 bytes 100.0% 🚀
assets/docs.branch-analysis-CpoeFNO1.js (New) 499 bytes 499 bytes 100.0% 🚀
assets/docs.scoreability-DFRrGmKL.js (New) 499 bytes 499 bytes 100.0% 🚀
assets/docs.upstream-drift-eGNIByfA.js (New) 499 bytes 499 bytes 100.0% 🚀
assets/docs.federated-fleet-intelligence-Dja6Aw67.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.maintainer-install-trust-_fKrFMTK.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-ai-providers-BrbsHVDk.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-backup-scaling-BKNvzAup.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-configuration-DmtNd9lG.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-docs-audit-0u0EU32R.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-github-app-CKr6pn-U.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-quickstart-BrocR8fs.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-rag-D9CMAuan.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-rees-C7RXmLud.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-rees-analyzers-ZUd56Ish.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-release-checklist-BeJ7EjnY.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-releases-Coub14_6.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-security-RzujkCTW.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-troubleshooting-zF2iypo0.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.self-hosting-unified-ams-orb-BA7_Ckkc.js (New) 498 bytes 498 bytes 100.0% 🚀
assets/docs.ams-config-precedence-P9Ny0ODc.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-deployment-ilB7vQl1.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-discovery-plane-yQYxlnde.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-env-reference-D8cSRaS8.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-fleet-manifest-BgdIzXjC.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-goal-spec-w78Czsmn.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-kill-switch-incident-DtbC9dd1.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-observability-DYSux4Mu.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-operations-runbook-C1UwsLtG.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-sizing-CDwWWlwp.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.ams-unattended-scheduling-BOPElerN.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.beta-onboarding-Bwf63VTb.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.capacity-CrXCysDc.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.maintainer-self-hosting-BodG9Stu.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.mcp-clients-yCnzyn8e.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.owner-checklist-BVL5-qwm.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.quickstart-CUthprro.js (New) 497 bytes 497 bytes 100.0% 🚀
assets/docs.github-app-e23HT0kH.js (New) 495 bytes 495 bytes 100.0% 🚀
assets/docs.maintainer-workflow-ChiRvGem.js (New) 495 bytes 495 bytes 100.0% 🚀
assets/docs.privacy-security-BfKg3fsZ.js (New) 495 bytes 495 bytes 100.0% 🚀
assets/docs.troubleshooting-CV0FX1ZD.js (New) 495 bytes 495 bytes 100.0% 🚀
assets/docs.tuning-CVXk56fF.js (New) 495 bytes 495 bytes 100.0% 🚀
assets/docs.loopover-commands-BP5BuO5I.js (New) 494 bytes 494 bytes 100.0% 🚀
assets/sparkles-CzduQuHH.js (New) 494 bytes 494 bytes 100.0% 🚀
assets/docs.how-reviews-work-BLY4YXB0.js (New) 493 bytes 493 bytes 100.0% 🚀
assets/app.owner-BcdmvIin.js (New) 474 bytes 474 bytes 100.0% 🚀
assets/app.commands-ReqTUbGt.js (New) 455 bytes 455 bytes 100.0% 🚀
assets/app.playground--xoDkox7.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/reveal-1UfMwl9D.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/index-BW88lzPq.js (New) 438 bytes 438 bytes 100.0% 🚀
assets/app.digest-DCzHs85h.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/eye-off-D0beH0wE.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/app.miner-BN66qTuJ.js (New) 422 bytes 422 bytes 100.0% 🚀
assets/key-round-CekPtc51.js (New) 355 bytes 355 bytes 100.0% 🚀
assets/bot-Djbym8qK.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/trash-2-Bm8mE4i2.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/save-BYEzz24N.js (New) 327 bytes 327 bytes 100.0% 🚀
assets/git-pull-request-arrow-B9jBRWmc.js (New) 321 bytes 321 bytes 100.0% 🚀
assets/wrench-Be4l0IF8.js (New) 303 bytes 303 bytes 100.0% 🚀
assets/list-checks-DnRAeu5Z.js (New) 279 bytes 279 bytes 100.0% 🚀
assets/shield-BxfBYK7e.js (New) 272 bytes 272 bytes 100.0% 🚀
assets/workflow-_P9p80J6.js (New) 265 bytes 265 bytes 100.0% 🚀
assets/compass-Dr0KXmT9.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/history-BcuCLESQ.js (New) 237 bytes 237 bytes 100.0% 🚀
assets/activity-DpQ2MaUX.js (New) 234 bytes 234 bytes 100.0% 🚀
assets/message-square-OjEv-3EK.js (New) 233 bytes 233 bytes 100.0% 🚀
assets/lock-B0HfFKaX.js (New) 206 bytes 206 bytes 100.0% 🚀
assets/rotate-cw-1FJp3H_b.js (New) 201 bytes 201 bytes 100.0% 🚀
assets/play-B3yCE8GX.js (New) 190 bytes 190 bytes 100.0% 🚀
assets/circle-check-nMdCr77q.js (New) 178 bytes 178 bytes 100.0% 🚀
assets/search-w346dLVN.js (New) 174 bytes 174 bytes 100.0% 🚀
assets/circle-DVwt3zRo.js (New) 130 bytes 130 bytes 100.0% 🚀
assets/add-scalar-classes-BTDjLvjx.js (Deleted) -2.17MB 0 bytes -100.0% 🗑️
assets/tanstack-vendor-BQKpuazM.js (Deleted) -823.66kB 0 bytes -100.0% 🗑️
assets/docs.fumadocs-spike-api-reference-h7E_yPFh.js (Deleted) -442.94kB 0 bytes -100.0% 🗑️
assets/react-vendor-CuTt-oCE.js (Deleted) -386.15kB 0 bytes -100.0% 🗑️
assets/AgentScalarChatInterface.vue-DkdihULo.js (Deleted) -201.71kB 0 bytes -100.0% 🗑️
assets/modal-Dm49RdPH.js (Deleted) -184.28kB 0 bytes -100.0% 🗑️
assets/client-BlryoD-V.js (Deleted) -146.06kB 0 bytes -100.0% 🗑️
assets/self-hosting-operations-CvNQIamT.js (Deleted) -129.02kB 0 bytes -100.0% 🗑️
assets/browser-Cnvw1uD_.js (Deleted) -102.77kB 0 bytes -100.0% 🗑️
assets/self-hosting-configuration-DmdhYv1p.js (Deleted) -82.0kB 0 bytes -100.0% 🗑️
assets/maintainer-panel-BVYMw5mi.js (Deleted) -78.53kB 0 bytes -100.0% 🗑️
assets/tuning-DQLq2PZ8.js (Deleted) -63.38kB 0 bytes -100.0% 🗑️
assets/ui-vendor-_lZUvUVT.js (Deleted) -57.04kB 0 bytes -100.0% 🗑️
assets/self-hosting-release-checklist-8rY7_q3y.js (Deleted) -51.89kB 0 bytes -100.0% 🗑️
assets/self-hosting-security-BbDlC7Py.js (Deleted) -44.63kB 0 bytes -100.0% 🗑️
assets/github-app-DawaPcgt.js (Deleted) -35.15kB 0 bytes -100.0% 🗑️
assets/routes-BRVw-rCI.js (Deleted) -34.83kB 0 bytes -100.0% 🗑️
assets/self-hosting-troubleshooting-C-Eak9-T.js (Deleted) -33.62kB 0 bytes -100.0% 🗑️
assets/self-hosting-github-app-D1v4W8KW.js (Deleted) -32.86kB 0 bytes -100.0% 🗑️
assets/how-reviews-work-59hdnLhj.js (Deleted) -31.49kB 0 bytes -100.0% 🗑️
assets/ams-operations-runbook-DjVunQ2N.js (Deleted) -30.09kB 0 bytes -100.0% 🗑️
assets/ams-deployment-D37ozJKs.js (Deleted) -28.66kB 0 bytes -100.0% 🗑️
assets/maintainer-self-hosting-CmcrXXpc.js (Deleted) -27.98kB 0 bytes -100.0% 🗑️
assets/owner-panel-Br8-ds0n.js (Deleted) -27.2kB 0 bytes -100.0% 🗑️
assets/app-BjB3_lcH.js (Deleted) -25.65kB 0 bytes -100.0% 🗑️
assets/privacy-security-CWhfNuUN.js (Deleted) -24.87kB 0 bytes -100.0% 🗑️
assets/self-hosting-quickstart-BY1Ig_zu.js (Deleted) -24.32kB 0 bytes -100.0% 🗑️
assets/ams-config-precedence-DPHC9M0C.js (Deleted) -24.26kB 0 bytes -100.0% 🗑️
assets/ams-discovery-plane-Bwvq8N53.js (Deleted) -23.92kB 0 bytes -100.0% 🗑️
assets/app.runs-Dq26NfEg.js (Deleted) -23.55kB 0 bytes -100.0% 🗑️
assets/ams-kill-switch-incident-CDmRTIyw.js (Deleted) -22.62kB 0 bytes -100.0% 🗑️
assets/miner-panel-BWf1MkxS.js (Deleted) -20.25kB 0 bytes -100.0% 🗑️
assets/ams-observability-D3scq8Z2.js (Deleted) -20.15kB 0 bytes -100.0% 🗑️
assets/maintainer-install-trust-SthOmyIW.js (Deleted) -20.11kB 0 bytes -100.0% 🗑️
assets/ams-goal-spec-DhX9j78Q.js (Deleted) -19.84kB 0 bytes -100.0% 🗑️
assets/docs-source-1EnCK6_M.js (Deleted) -19.46kB 0 bytes -100.0% 🗑️
assets/self-hosting-backup-scaling-tucEnvED.js (Deleted) -19.03kB 0 bytes -100.0% 🗑️
assets/federated-fleet-intelligence-cXFI0cbn.js (Deleted) -18.77kB 0 bytes -100.0% 🗑️
assets/beta-onboarding-CgjEcLx9.js (Deleted) -17.65kB 0 bytes -100.0% 🗑️
assets/api._op-CyM5rTnx.js (Deleted) -17.55kB 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-fEjnMvd4.js (Deleted) -16.73kB 0 bytes -100.0% 🗑️
assets/self-hosting-rees-DOJt-ITD.js (Deleted) -15.72kB 0 bytes -100.0% 🗑️
assets/miner-quickstart-C3iB9aid.js (Deleted) -15.7kB 0 bytes -100.0% 🗑️
assets/app.index-DP5rcxVM.js (Deleted) -15.62kB 0 bytes -100.0% 🗑️
assets/self-hosting-ai-providers-BzLHZr58.js (Deleted) -15.6kB 0 bytes -100.0% 🗑️
assets/playground-panel-BTjVjUwv.js (Deleted) -14.49kB 0 bytes -100.0% 🗑️
assets/ams-sizing-CbkiQ8O6.js (Deleted) -14.24kB 0 bytes -100.0% 🗑️
assets/owner-checklist-CQqhki-N.js (Deleted) -14.19kB 0 bytes -100.0% 🗑️
assets/self-hosting-unified-ams-orb-B8v1Vmte.js (Deleted) -12.12kB 0 bytes -100.0% 🗑️
assets/self-hosting-releases-DrQpMa-q.js (Deleted) -12.1kB 0 bytes -100.0% 🗑️
assets/ams-unattended-scheduling-BEpKSvz5.js (Deleted) -11.64kB 0 bytes -100.0% 🗑️
assets/miner-coding-agent-BjKZ6vQY.js (Deleted) -11.45kB 0 bytes -100.0% 🗑️
assets/capacity-DvBt4BOn.js (Deleted) -10.58kB 0 bytes -100.0% 🗑️
assets/troubleshooting-DznHGF6F.js (Deleted) -10.42kB 0 bytes -100.0% 🗑️
assets/app.audit-CEvaKGu6.js (Deleted) -10.11kB 0 bytes -100.0% 🗑️
assets/extension-DhotZqat.js (Deleted) -10.04kB 0 bytes -100.0% 🗑️
assets/app.config-generator-Ts9CWQ8G.js (Deleted) -9.88kB 0 bytes -100.0% 🗑️
assets/scoreability-vg2_Fm2G.js (Deleted) -8.35kB 0 bytes -100.0% 🗑️
assets/fairness-uw8BFqlL.js (Deleted) -8.34kB 0 bytes -100.0% 🗑️
assets/self-hosting-rees-analyzers-hLCVxVU7.js (Deleted) -8.33kB 0 bytes -100.0% 🗑️
assets/maintainers-BV4u_tdP.js (Deleted) -8.03kB 0 bytes -100.0% 🗑️
assets/miners-DXBKcCe9.js (Deleted) -7.85kB 0 bytes -100.0% 🗑️
assets/self-hosting-rag-CyTxM8Pg.js (Deleted) -7.84kB 0 bytes -100.0% 🗑️
assets/agents-C9rtE_S_.js (Deleted) -7.76kB 0 bytes -100.0% 🗑️
assets/ams-fleet-manifest-CBJb1Q3z.js (Deleted) -7.46kB 0 bytes -100.0% 🗑️
assets/commands-panel-DGhw9F8k.js (Deleted) -6.65kB 0 bytes -100.0% 🗑️
assets/maintainer-workflow-BW-UG9XT.js (Deleted) -6.61kB 0 bytes -100.0% 🗑️
assets/ams-env-reference-NvYwCl7A.js (Deleted) -6.58kB 0 bytes -100.0% 🗑️
assets/ai-summaries-BYnKRG94.js (Deleted) -6.52kB 0 bytes -100.0% 🗑️
assets/roadmap-RWDiQktP.js (Deleted) -6.33kB 0 bytes -100.0% 🗑️
assets/digest-panel-DKp3wXs_.js (Deleted) -6.18kB 0 bytes -100.0% 🗑️
assets/repos._owner._repo.quality-COQ85K5v.js (Deleted) -6.14kB 0 bytes -100.0% 🗑️
assets/docs.index-gB8ss_wy.js (Deleted) -5.55kB 0 bytes -100.0% 🗑️
assets/loopover-commands-U1n2MQvj.js (Deleted) -5.39kB 0 bytes -100.0% 🗑️
assets/branch-analysis-CweRaKiL.js (Deleted) -5.36kB 0 bytes -100.0% 🗑️
assets/mcp-clients-ByZKRvsL.js (Deleted) -5.28kB 0 bytes -100.0% 🗑️
assets/miner-workflow-Bl1pXJyb.js (Deleted) -4.98kB 0 bytes -100.0% 🗑️
assets/api.index-CGjoNl1q.js (Deleted) -4.7kB 0 bytes -100.0% 🗑️
assets/quickstart-DlrVNweW.js (Deleted) -4.39kB 0 bytes -100.0% 🗑️
assets/upstream-drift-Dxe30QUN.js (Deleted) -4.06kB 0 bytes -100.0% 🗑️
assets/api-xp5FWtLr.js (Deleted) -2.69kB 0 bytes -100.0% 🗑️
assets/docs-DRAf2cJC.js (Deleted) -2.67kB 0 bytes -100.0% 🗑️
assets/app.workbench-x2PxfJTx.js (Deleted) -1.58kB 0 bytes -100.0% 🗑️
assets/session-ihkze32d.js (Deleted) -1.45kB 0 bytes -100.0% 🗑️
assets/tooltip-ED7qVnky.js (Deleted) -1.45kB 0 bytes -100.0% 🗑️
assets/tabs-nOUSe0gb.js (Deleted) -1.39kB 0 bytes -100.0% 🗑️
assets/app.repos-Bd-6Pbrr.js (Deleted) -1.07kB 0 bytes -100.0% 🗑️
assets/input-B-VKwf8L.js (Deleted) -796 bytes 0 bytes -100.0% 🗑️
assets/file-cog-DWCQxwR4.js (Deleted) -758 bytes 0 bytes -100.0% 🗑️
assets/interface-content-folder.svg-KPWSOAs7.js (Deleted) -659 bytes 0 bytes -100.0% 🗑️
assets/docs.ai-summaries-CtMeQ1wE.js (Deleted) -506 bytes 0 bytes -100.0% 🗑️
assets/app.maintainer-CQE_WI6T.js (Deleted) -502 bytes 0 bytes -100.0% 🗑️
assets/docs.branch-analysis-BgdnMMPt.js (Deleted) -499 bytes 0 bytes -100.0% 🗑️
assets/docs.scoreability-DmkjqMJh.js (Deleted) -499 bytes 0 bytes -100.0% 🗑️
assets/docs.upstream-drift-CgfZNznc.js (Deleted) -499 bytes 0 bytes -100.0% 🗑️
assets/docs.federated-fleet-intelligence-B2Ffvuul.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-install-trust-CYgXPpXU.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-ai-providers-dUx-88qR.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-backup-scaling-CdwwROqH.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-configuration-BRjVIqrt.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-docs-audit-bwd3NHGn.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-github-app-Eyf4lHAE.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-quickstart-Bokrg7Z4.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rag-BpApEhtr.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-DYJulf88.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-analyzers-DPyWkS0o.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-release-checklist-ByXDJuT2.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-releases-DT1sglfw.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-security-BaFVni-j.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-troubleshooting-TFYiGJMM.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-unified-ams-orb-DW60Y3Dw.js (Deleted) -498 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-config-precedence-Bevexq0T.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-deployment-CaRA_zZU.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-discovery-plane-CTKiM9dh.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-env-reference-Ci-XcnuZ.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-fleet-manifest-DcZGLzVJ.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-goal-spec-DcvEiAWn.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-kill-switch-incident-IjEnArVP.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-observability-BvR_6t0p.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-operations-runbook-rYvJQMgD.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-sizing-DCjX6T87.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-unattended-scheduling-F9Qisx-Z.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.beta-onboarding-BBf9DSyO.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.capacity-C31lYQMz.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-self-hosting-BsrtBHUT.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.mcp-clients-DMJs-8Ia.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.owner-checklist-DD5hbMht.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.quickstart-D329HKFo.js (Deleted) -497 bytes 0 bytes -100.0% 🗑️
assets/docs.github-app-BisWyU9V.js (Deleted) -495 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-workflow-D4qp7_o-.js (Deleted) -495 bytes 0 bytes -100.0% 🗑️
assets/docs.privacy-security-DeI65zwk.js (Deleted) -495 bytes 0 bytes -100.0% 🗑️
assets/docs.troubleshooting-Yv5Ao5i9.js (Deleted) -495 bytes 0 bytes -100.0% 🗑️
assets/docs.tuning-CKKSkpZC.js (Deleted) -495 bytes 0 bytes -100.0% 🗑️
assets/docs.loopover-commands-DO34b8Eg.js (Deleted) -494 bytes 0 bytes -100.0% 🗑️
assets/sparkles-PWCKNiLQ.js (Deleted) -494 bytes 0 bytes -100.0% 🗑️
assets/docs.how-reviews-work-BfSob6aS.js (Deleted) -493 bytes 0 bytes -100.0% 🗑️
assets/app.owner-CBB0Ocok.js (Deleted) -474 bytes 0 bytes -100.0% 🗑️
assets/app.commands-BmaG_k0a.js (Deleted) -455 bytes 0 bytes -100.0% 🗑️
assets/app.playground-lpKDGEpk.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/reveal-BN4Fb5lG.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/index-XrZPN124.js (Deleted) -438 bytes 0 bytes -100.0% 🗑️
assets/app.digest-CnwCCftY.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/eye-off-DWh6eqhv.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/app.miner-DIer-c5V.js (Deleted) -422 bytes 0 bytes -100.0% 🗑️
assets/key-round-Hh610B8p.js (Deleted) -355 bytes 0 bytes -100.0% 🗑️
assets/bot-C3GE3R7y.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/trash-2-DcR0wI9B.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/save-AfZdAQsE.js (Deleted) -327 bytes 0 bytes -100.0% 🗑️
assets/git-pull-request-arrow-Di8xoqNW.js (Deleted) -321 bytes 0 bytes -100.0% 🗑️
assets/wrench-CEO91Lml.js (Deleted) -303 bytes 0 bytes -100.0% 🗑️
assets/list-checks-BOjfc_CU.js (Deleted) -279 bytes 0 bytes -100.0% 🗑️
assets/shield-HUw5BTR8.js (Deleted) -272 bytes 0 bytes -100.0% 🗑️
assets/workflow-CKVrGsPj.js (Deleted) -265 bytes 0 bytes -100.0% 🗑️
assets/compass-BoGHbvT5.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/history-L9PBPmX9.js (Deleted) -237 bytes 0 bytes -100.0% 🗑️
assets/activity-CIQC1C9r.js (Deleted) -234 bytes 0 bytes -100.0% 🗑️
assets/message-square-CJ1IJJBt.js (Deleted) -233 bytes 0 bytes -100.0% 🗑️
assets/lock-CUCFcWdX.js (Deleted) -206 bytes 0 bytes -100.0% 🗑️
assets/rotate-cw-BTK-7lAv.js (Deleted) -201 bytes 0 bytes -100.0% 🗑️
assets/play-CxVwVK-b.js (Deleted) -190 bytes 0 bytes -100.0% 🗑️
assets/circle-check-tFqHTxCR.js (Deleted) -178 bytes 0 bytes -100.0% 🗑️
assets/search-Bszo9HG3.js (Deleted) -174 bytes 0 bytes -100.0% 🗑️
assets/maintainer-self-hosting-D31mxM2N.js (Deleted) -167 bytes 0 bytes -100.0% 🗑️
assets/maintainer-workflow-WpOapaXz.js (Deleted) -155 bytes 0 bytes -100.0% 🗑️
assets/federated-fleet-intelligence-bIPYaDen.js (Deleted) -151 bytes 0 bytes -100.0% 🗑️
assets/ams-unattended-scheduling-CHwddcfh.js (Deleted) -148 bytes 0 bytes -100.0% 🗑️
assets/interface-content-folder.svg-D9A_EO8b.js (Deleted) -148 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-release-checklist-CFL32Bl7.js (Deleted) -148 bytes 0 bytes -100.0% 🗑️
assets/ams-kill-switch-incident--nGDV8tu.js (Deleted) -147 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-troubleshooting-JS64kjoz.js (Deleted) -146 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-unified-ams-orb-D6D0FUKR.js (Deleted) -146 bytes 0 bytes -100.0% 🗑️
assets/ams-operations-runbook-Csl_nHOe.js (Deleted) -145 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-backup-scaling-feSmKLsM.js (Deleted) -145 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-rees-analyzers-BI90jQdZ.js (Deleted) -145 bytes 0 bytes -100.0% 🗑️
assets/ams-config-precedence-C0nMSGtq.js (Deleted) -144 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-configuration-CQq3rsfS.js (Deleted) -144 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-ai-providers-4_qNlW8z.js (Deleted) -143 bytes 0 bytes -100.0% 🗑️
assets/ams-discovery-plane-CB-gTLRW.js (Deleted) -142 bytes 0 bytes -100.0% 🗑️
assets/maintainer-install-trust-DsqYDZtC.js (Deleted) -142 bytes 0 bytes -100.0% 🗑️
assets/ams-fleet-manifest-CpVRlH0p.js (Deleted) -141 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-DkcS_D5z.js (Deleted) -141 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-github-app-D6kpdrZo.js (Deleted) -141 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-operations-C0tUITb6.js (Deleted) -141 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-quickstart-D2EnqYfh.js (Deleted) -141 bytes 0 bytes -100.0% 🗑️
assets/ams-env-reference-C-q0TOOo.js (Deleted) -140 bytes 0 bytes -100.0% 🗑️
assets/ams-observability-BSjcwLEr.js (Deleted) -140 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-releases-B8O--3hw.js (Deleted) -139 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-security-BrhM6B3P.js (Deleted) -139 bytes 0 bytes -100.0% 🗑️
assets/beta-onboarding-B4OxONiS.js (Deleted) -138 bytes 0 bytes -100.0% 🗑️
assets/branch-analysis-CdXh6IRh.js (Deleted) -138 bytes 0 bytes -100.0% 🗑️
assets/troubleshooting-C8DGLN5S.js (Deleted) -138 bytes 0 bytes -100.0% 🗑️
assets/ams-deployment-CxqW6G6d.js (Deleted) -137 bytes 0 bytes -100.0% 🗑️
assets/upstream-drift-Cle6QreO.js (Deleted) -137 bytes 0 bytes -100.0% 🗑️
assets/ams-goal-spec-DshSjRfi.js (Deleted) -136 bytes 0 bytes -100.0% 🗑️
assets/miner-coding-agent-g72aXDvJ.js (Deleted) -136 bytes 0 bytes -100.0% 🗑️
assets/ai-summaries-CPHZlLqg.js (Deleted) -135 bytes 0 bytes -100.0% 🗑️
assets/loopover-commands-DyGx58vc.js (Deleted) -135 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-rees-jRyYzXkW.js (Deleted) -135 bytes 0 bytes -100.0% 🗑️
assets/how-reviews-work-zS8fxLv7.js (Deleted) -134 bytes 0 bytes -100.0% 🗑️
assets/miner-quickstart-B-HWJNIk.js (Deleted) -134 bytes 0 bytes -100.0% 🗑️
assets/privacy-security-fgBNyI70.js (Deleted) -134 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-rag-BwcO3z-3.js (Deleted) -134 bytes 0 bytes -100.0% 🗑️
assets/ams-sizing-jP-xtZMB.js (Deleted) -133 bytes 0 bytes -100.0% 🗑️
assets/owner-checklist-C1-wrikl.js (Deleted) -133 bytes 0 bytes -100.0% 🗑️
assets/miner-workflow-D_k8AcqI.js (Deleted) -132 bytes 0 bytes -100.0% 🗑️
assets/capacity-CIVj_LYs.js (Deleted) -131 bytes 0 bytes -100.0% 🗑️
assets/circle-DrjOC6Jn.js (Deleted) -130 bytes 0 bytes -100.0% 🗑️
assets/scoreability-DnH9Euvu.js (Deleted) -130 bytes 0 bytes -100.0% 🗑️
assets/mcp-clients-KPg1TieZ.js (Deleted) -129 bytes 0 bytes -100.0% 🗑️
assets/tuning-Co6-moTJ.js (Deleted) -129 bytes 0 bytes -100.0% 🗑️
assets/github-app-zKF8PY45.js (Deleted) -128 bytes 0 bytes -100.0% 🗑️
assets/quickstart-CzWoKdSP.js (Deleted) -128 bytes 0 bytes -100.0% 🗑️
assets/modal-jX6-sC83.js (Deleted) -115 bytes 0 bytes -100.0% 🗑️
assets/__vite-browser-external-BkN3LSWE.js (Deleted) -94 bytes 0 bytes -100.0% 🗑️
assets/browser-Bg18z1FH.js (Deleted) -83 bytes 0 bytes -100.0% 🗑️
assets/__vite-browser-external-DA5Wl5Re.js (Deleted) -77 bytes 0 bytes -100.0% 🗑️
assets/server.edge-CJdZ84cE.js (Deleted) -66 bytes 0 bytes -100.0% 🗑️

@loopover-orb loopover-orb Bot added the gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. label Jul 21, 2026
@loopover-orb

loopover-orb Bot commented Jul 21, 2026

Copy link
Copy Markdown

Tip

✅ LoopOver review result - approve/merge recommended

Review updated: 2026-07-21 05:14:51 UTC

55 files · 1 AI reviewer · no blockers · readiness 100/100 · CI green · clean

✅ Suggested Action - Approve/Merge

  • safe to merge

Review summary
This PR correctly diagnoses and fixes a real SSR/CSR split bug: TanStack Router loaders execute in the browser on client-side navigation, so a direct import of the Node-only fumadocs-mdx `collections/server` module from route loaders crashed every soft nav into `/docs/*`. The fix moves the lookup behind a `createServerFn` (docs-source.functions.ts calling docs-source.server.ts via dynamic import), which is the correct, existing pattern in this codebase (config.server.ts/example.functions.ts), and all 48 route loaders were mechanically updated to call `getDocPage` instead. The regression test (docs-source-server-isolation.test.ts) is a source-grep drift guard rather than a true integration test exercising a client-side navigation, but that's consistent with the existing test patterns in this file (docs-mdx-eager-scope.test.ts, docs.miner-coding-agent.test.tsx) which are similarly constrained by the vitest config lacking the fumadocs-mdx plugin.

Nits — 5 non-blocking
  • The new regression test in docs-source-server-isolation.test.ts only greps for the exact import string and doesn't actually simulate a client-side loader invocation in the browser, so it wouldn't catch a subtly different reintroduction of the bug (e.g., a transitive re-export of docs-source.server) — consider a lightweight jsdom-environment test that actually invokes a route loader to close this gap.
  • The change touches 48 nearly-identical route files purely to swap the import and inline object literal (`docs-source.functions.ts:1`); this is unavoidable given the current one-file-per-route structure but worth flagging for reviewers scanning file count.
  • Comment blocks in docs-source.functions.ts and docs-source.server.ts are quite long (10+ lines) relative to the repo's usual comment density — could be trimmed to the load-bearing 'why', per the WHY-only convention elsewhere in this diff.
  • Consider asserting in docs-source-server-isolation.test.ts that docs-source.server.ts itself is never statically imported anywhere under src/routes (not just via the exact getDocPage import string), to catch alternate import paths.
  • If there's an existing e2e/browser test harness for route navigation elsewhere in the app, add one client-side nav test against a single doc route as a stronger regression guard than the source-grep.

Decision drivers

  • ✅ Code review — No blockers (1 reviewer)
  • ✅ Gate result — Passing (No configured blocker found.)
Context & advisory signals — never blocks the verdict
Signal Result Evidence
Linked issue ✅ Linked #7631
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (1 linked issue).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 23 registered-repo PR(s), 16 merged, 341 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 23 PR(s), 341 issue(s).
Improvement ✅ Minor risk: clean · value: minor · LLM: significant
Linked issue satisfaction

Addressed
The diff adds a createServerFn wrapper (docs-source.functions.ts) and a server-only docs-source.server.ts, and updates every docs.*.tsx route loader to call getDocPage() instead of importing the fumadocs-mdx-backed docs-source module directly, matching the exact fix approach described in the issue.

Review context
  • Author: JSONbored
  • Role context: owner (maintainer lane)
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: Python, TypeScript, Ruby, Go, JavaScript, MDX, Shell, Solidity
  • Official Gittensor activity: 23 PR(s), 341 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Start here: Treat this as maintainer-lane context rather than normal contributor-lane activity.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
🧪 Chat with LoopOver

Ask LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.

  • @loopover ask <question> answers contribution-quality Q&A with source citations and freshness.
  • @loopover chat <question> answers in natural prose from cached decision-pack facts via local inference (maintainer/collaborator; read-only).
  • A plain-language @loopover mention with a real question is routed to the closest matching read-only command automatically — no exact syntax required.

Full command reference: https://loopover.ai/docs/loopover-commands

🧪 Experimental — new and may change.

Visual preview
Route Viewport Before (production) After (this PR's preview) Diff
/docs/ai-summaries desktop before /docs/ai-summaries
before /docs/ai-summaries
after /docs/ai-summaries
after /docs/ai-summaries
/docs/ai-summaries mobile before /docs/ai-summaries (mobile)
before /docs/ai-summaries (mobile)
after /docs/ai-summaries (mobile)
after /docs/ai-summaries (mobile)
/docs/ams-config-precedence desktop before /docs/ams-config-precedence
before /docs/ams-config-precedence
after /docs/ams-config-precedence
after /docs/ams-config-precedence
/docs/ams-config-precedence mobile before /docs/ams-config-precedence (mobile)
before /docs/ams-config-precedence (mobile)
after /docs/ams-config-precedence (mobile)
after /docs/ams-config-precedence (mobile)

Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy.

Scroll preview
Route Before (production) After (this PR's preview)
/docs/ai-summaries before /docs/ai-summaries (scroll)
before /docs/ai-summaries (scroll)
after /docs/ai-summaries (scroll)
after /docs/ai-summaries (scroll)
/docs/ams-config-precedence before /docs/ams-config-precedence (scroll)
before /docs/ams-config-precedence (scroll)
after /docs/ams-config-precedence (scroll)
after /docs/ams-config-precedence (scroll)

A short scroll-through clip (desktop) — click either thumbnail to open the full animation. Evidence for scroll-linked behavior a single screenshot can't show.

🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed


💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →.

Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.

  • Re-run LoopOver review

@loopover-orb loopover-orb 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.

LoopOver approves — the gate is satisfied and CI is green.

@loopover-orb
loopover-orb Bot merged commit 4d9b9d1 into main Jul 21, 2026
13 checks passed
@loopover-orb
loopover-orb Bot deleted the fix/docs-source-server-only branch July 21, 2026 05:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(ui): docs pages crash on client-side navigation (path.join is not a function)

1 participant