Files
twosugar f5793031f0 fix(migrate): pre-cutover polish — title fallback, SDK hero SVG, locale SSR binding
Gate-4 flagged three A-class residuals blocking cutover:

- **A5/A21** — Homepage tab title `(untitled)` on / and /zh-CN/.
  index.mdx frontmatter uses `titleTemplate` (not `title`); the 3
  [...slug].astro dispatchers were hard-fallback to '(untitled)'.
  Now cascade: title → titleTemplate → 'Longbridge Developers'.
  content.config.ts schema gains a `titleTemplate` z.string().optional().

- **A19** — /sdk hero SVG rendered as literal text `/assets/sdk.svg`.
  Stage-1 T11 SDK.tsx placeholder shipped a text stub instead of
  <img>. Ported the layout from legacy SDK.vue (max-w-4xl 2-col hero
  with h-244 svg on the right). Asset copied to
  public/assets/sdk.svg (matches legacy `docs/public/assets/sdk.svg`
  path convention).

- **B8** (new) — /zh-CN/ hero rendered English strings ("Powering",
  "Get Started") despite Chinese nav. Root: mdx `<NewHomePage />`
  tag has no way to thread route locale through <Content components>.
  Solved via `buildMdxComponents(locale)` factory that binds locale
  at SSR time to any component with a `locale?` prop
  (SkillCatalog / NewHomePage / McpTools / Pricing / QuotePermission
  / TryIt). Three [...slug].astro files now call
  `buildMdxComponents('en'|'zh-CN'|'zh-HK')` per locale.

  NewHomePage also grows a client-side detectLocale() fallback via
  document.documentElement.lang for edge cases where propsLocale is
  absent (defensive; the factory ensures it's always passed).

Verified:
- astro check: 0 errors (138 files)
- / SSR: "Powering" / "Get Started" (en)
- /zh-CN/ SSR: "接入" / "快速开始" (Simplified)
- /zh-HK/ SSR: "接入" / "快速開始" (Traditional)
- /sdk SSR: <img class="h-[244px]" src="/assets/sdk.svg" alt="">
- /assets/sdk.svg → 200

Gate-4 A-class findings all closed; cutover unblocked pending §S12
(nginx) + §S13 (canary).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-19 11:59:11 +08:00
..