A detailed log of every feature, fix, and breaking change across all versions.
createIntlMiddleware() now automatically sets locales and defaultLocale in the intl store via __setIntlConfig. Users who use middleware no longer need to pass these options to intl() in astro.config.mjs.
defaultLocale option in IntlMiddlewareOptions type.
Configurable defaultLocale option — no more hardcoded "en" fallback.
runWithLocale() — concurrency-safe request context via AsyncLocalStorage.
Multi-runtime support — auto-detects AsyncLocalStorage (Node.js) with global-variable fallback (Cloudflare Workers, Deno).
IntlConfig type exported for integration configuration.
Modular architecture — core.ts split into sanitize, interpolation, store, translations modules.
react.ts now imports shared escapeRegExp from sanitize.ts (removed duplicate).
Race condition in SSR — concurrent requests no longer share state.
Hardcoded "en" fallback locale now respects defaultLocale config.
Variable interpolation with t("key", { name: "value" }).
t.markup() for HTML in translations with security sanitisation.
t.rich() for React with nested tag support.
defineRequestConfig() for global config registration (next-intl style).
Messages via integration options (messages config).
BCP-47 locale validation.
Prototype-pollution protection in dot-path traversal.
HTML sanitisation (defence-in-depth) in t.markup().
Initial release.
setRequestLocale() for URL-based locale detection.
getLocale() to read current locale.
getTranslations() with namespace support.
getTranslationsReact() for React components.
Type-safety with DotPaths.
Native Astro integration.