Skip to content

LakshmanTurlapati/FSB

v0.9.63 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Summary

AI summary

Updates What's new, What changed in CI, and Verification Milestone audit summary across a mixed release.

Full changelog

Highlights

This release internationalizes the FSB marketing site (showcase/angular) across six locales: English, Spanish, German, Japanese, Simplified Chinese, and Traditional Chinese. English remains the source of truth. Copy drift is locked by hard-fail CI gates. Every marketing route renders at prerender time with correct hreflang and canonical fan-out, and a first-visit user landing on / is auto-redirected to the locale subpath that best matches their browser's Accept-Language header.

This is a showcase-only milestone. The Chrome extension, MCP server, and FSB Skill packages are unchanged from v0.9.62 and v0.9.0 respectively.

What's new

  • Shared 6-locale registry (en, es, de, ja, zh-CN, zh-TW) mirrored across the Angular ESM front-end and the Express CJS server, with a verify-locale-sync.mjs CI invariant that fails the build on any drift.
  • 420 translatable strings across seven namespaces (shell, picker, home, about, agents, privacy, support) marked via i18n attributes and $localize tagged templates, including TS-side Title and Meta for SEO.
  • AI-filled target XLIFFs for all five non-English locales. i18nMissingTranslation is set to error in angular.json, so any unfilled <trans-unit> fails the build.
  • 30 prerendered index.html files emitted per build (six marketing routes across five locale subpaths plus the English root). Each carries <link rel="alternate" hreflang> fan-out (including x-default), a single locale-specific <link rel="canonical">, and <html lang> matching the served locale.
  • Server-side Accept-Language auto-detection middleware on /. BCP-47 q-value parsing, alias resolution (e.g. zh-Hant-TWzh-TW), cookie-respecting (existing fsb-locale picker choice wins), bot-safe (no Accept-Language header means no redirect, preserving the Googlebot crawl path).
  • Standalone LanguagePickerComponent mounted in the desktop nav, mobile nav, and footer on every prerendered route. CJK font stacks scoped via :lang() selectors using system fonts only (no webfont download).

What changed in CI

  • lint:i18n (@angular-eslint/template/i18n with checkId / checkText / checkAttributes) promoted to a hard-fail step in the website job.
  • extract-i18n-clean gate asserts the committed messages.xlf is byte-equal to a fresh ng extract-i18n output.
  • verify-locale-sync runs pre-build and enforces parity between the Angular and Express locale registries.
  • verify:hreflang runs post-build and asserts hreflang plus canonical correctness across all 30 prerendered HTMLs.
  • verify-bundle-budgets checks per-locale gzipped main-bundle sizes against the locked budget.

The full website CI chain runs install → verify-locale-sync → lint:i18n → extract-i18n-clean → ng build → verify:hreflang → verify-bundle-budgets on every push.

Compatibility

  • Marketing site users see new locale subpaths (/es/, /de/, /ja/, /zh-CN/, /zh-TW/). The English root canonical stays at the bare path, so existing SEO surfaces are preserved.
  • Server behavior change: a GET / request with an Accept-Language header preferring a non-English supported locale now returns a 302 redirect to the matching subpath instead of serving the English root. Cookie-driven explicit picks (fsb-locale) override this. Bots and other clients with no Accept-Language header continue to receive the English root.
  • The Chrome extension, MCP server ([email protected]), and FSB Skill packages are unchanged.

Verification

Milestone audit summary:

  • 14 of 14 v0.9.63 requirements satisfied.
  • 7 of 7 phases shipped with VERIFICATION.md artifacts (status: passed).
  • 12 of 12 cross-phase integration points verified.
  • 3 of 3 end-to-end flows passing (first-visit Accept-Language redirect, picker cookie persistence, full CI gate chain).
  • Full CI green on the merge commit: extension, MCP, and showcase jobs plus the all-green gate.

Audit artifacts: .planning/milestones/v0.9.63-MILESTONE-AUDIT.md, .planning/phases/v0.9.63-INTEGRATION-CHECK.md, six per-phase VERIFICATION.md files under .planning/phases/{261,262,264,265,266,267}-*/.

Known caveats

  • Picker cookie short-circuits the bare-/ redirect. Returning users whose fsb-locale cookie is set will see the English prerender at the root on a fresh tab or shared link rather than being re-redirected to their preferred locale. This is intentional under the v0.9.63 cookie-wins rule (locked in 267-CONTEXT.md D-02 / T-267-03); revisit candidate for a future UX milestone.
  • Dashboard surface is intentionally untranslated in v0.9.63. showcase/angular/src/app/pages/dashboard/** is carved out by --ignore-pattern in package.json:lint:i18n; deferred to v0.9.65.
  • Extension UI, popup, and MCP server / skills text remain English-only by design.

Milestone scope

7 phases (261, 262, 264, 265, 266, 267, 268) -- 263 was dropped (dashboard deferred). Phase 268 was a post-audit cleanup that deduplicated the server.js supported-locale literal against the CJS registry and backfilled the six per-phase VERIFICATION.md artifacts the milestone template expects.

Branch feat/showcase-i18n merged to main via #42.

Breaking Changes

  • GET `/` now returns a 302 redirect to a locale subpath when Accept-Language prefers a supported non‑English language, unless an `fsb-locale` cookie overrides it.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track LakshmanTurlapati/FSB

Get notified when new releases ship.

Sign up free

About LakshmanTurlapati/FSB

All releases →

Beta — feedback welcome: [email protected]