This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Summary
AI summaryUpdates 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 averify-locale-sync.mjsCI invariant that fails the build on any drift. - 420 translatable strings across seven namespaces (
shell,picker,home,about,agents,privacy,support) marked viai18nattributes and$localizetagged templates, including TS-sideTitleandMetafor SEO. - AI-filled target XLIFFs for all five non-English locales.
i18nMissingTranslationis set toerrorinangular.json, so any unfilled<trans-unit>fails the build. - 30 prerendered
index.htmlfiles emitted per build (six marketing routes across five locale subpaths plus the English root). Each carries<link rel="alternate" hreflang>fan-out (includingx-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-TW→zh-TW), cookie-respecting (existingfsb-localepicker choice wins), bot-safe (noAccept-Languageheader means no redirect, preserving the Googlebot crawl path). - Standalone
LanguagePickerComponentmounted 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/i18nwithcheckId/checkText/checkAttributes) promoted to a hard-fail step in the website job.extract-i18n-cleangate asserts the committedmessages.xlfis byte-equal to a freshng extract-i18noutput.verify-locale-syncruns pre-build and enforces parity between the Angular and Express locale registries.verify:hreflangruns post-build and asserts hreflang plus canonical correctness across all 30 prerendered HTMLs.verify-bundle-budgetschecks 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 anAccept-Languageheader preferring a non-English supported locale now returns a302redirect to the matching subpath instead of serving the English root. Cookie-driven explicit picks (fsb-locale) override this. Bots and other clients with noAccept-Languageheader 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.mdartifacts (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-greengate.
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 whosefsb-localecookie 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 in267-CONTEXT.mdD-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-patterninpackage.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
About LakshmanTurlapati/FSB
All releases →Related context
Beta — feedback welcome: [email protected]