1.3.0
Typed presence language packs, global and per-presence Discord activity language controls, and stable 1.0 SDK and CLI releases.
1.3.0 introduces a dedicated localization system for Discord activity text. Presence authors can ship optional, typed JSON dictionaries while users choose one language globally or configure each localized presence independently.
| Area | What changed | Why it matters |
|---|---|---|
| Extension 1.3.0 | Added a Discord activity language setting with global English, French, and Spanish modes plus a per-presence mode. Individual selectors only appear for localized presences. | YouTube can display French text while Netflix uses Spanish, without changing the extension interface language. |
| Runtime | The presence runtime loads signed language dictionaries, falls back to en-US, updates active pages immediately, and keeps legacy presences without packs working unchanged. | Language changes do not require reinstalling a presence or reloading its website. |
| SDK 1.0.0 | `presence.getStrings<T>()` now returns a typed dictionary without an argument. Authors can infer T from `en-US.json` with a type-only import. | VS Code autocompletes available keys and reports unknown keys without generated type files. |
| CLI 1.0.0 | Build and validation automatically discover optional language packs, enforce the three supported files, validate flat string dictionaries and key parity, copy JSON files, and include them in generated metadata. | Invalid or incomplete translations fail early with precise errors. |
| Release pipeline | The internal CLI publishes packs to current and versioned CDN paths and includes them in signed release metadata. Versioned JSON receives immutable caching. | Translations receive the same integrity protection and versioning guarantees as presence bundles. |
| Presence library | All current presences now provide en-US, fr-FR, and es-ES packs. Figma and YouTube use the typed API for their main activity text, while shared runtime states are localized consistently. | The existing catalog can participate in the new language selection immediately. |
| Documentation | Kept supported-locale documentation separate and added a dedicated Presence Language Packs guide in English, French, and Spanish. | Metadata localization and Discord runtime translation are now clearly distinguished. |
Compatibility and fixes
- Presences without a
localesdirectory remain fully supported and keep their inline strings. - Older signed releases without language metadata remain installable.
- Missing locales, invalid JSON, unknown files, non-string values, and mismatched keys are rejected during validation.
- Global and per-presence choices persist in extension storage and survive service-worker restarts.