Skip to content

v3.12.0

Choose a tag to compare

@58bits 58bits released this 14 Jun 04:24

Highlights

  • @byline/i18n — the admin interface now ships in seven languages. Added full byline-admin translation bundles for Spanish, German, Italian, Simplified Chinese, and Korean, joining English and French. Hosts opt in per locale by listing the codes in their interface-locale set and passing them to adminTranslations({ locales }); the language switcher and the per-user preferred_locale cascade pick them up automatically. The CJK bundles use CLDR-correct plural handling (Chinese and Korean collapse to a single other form) and dual-particle forms for runtime-interpolated nouns in Korean. Every bundle is parity-checked against English at build time, so a missing key fails loudly rather than rendering a raw key. (zh-CN and ko remain pending a native-speaker review pass.)

  • @byline/admin — added a colour-theme switch to the self-service account page. A new Appearance card carries an inline Light / Dark / System segmented control: "System" clears the stored override and follows the OS prefers-color-scheme, while an explicit choice persists and applies to the live document immediately. The switch reads and writes the host theme contract directly (the localStorage['theme'] + .dark/.light-on-<html> convention the host's early-theme script already honours), so no host wiring is required. The same change decluttered the account cards — the redundant in-card "Edit Profile / Change Language / Change Password" buttons were removed in favour of the pencil edit affordance already in each card header.

Bug Fixes

  • @byline/admin — the account Preferences (interface-language) drawer rendered hardcoded English: its label, help text, "Use browser default" option, Save/Cancel/Close buttons, and saved/error feedback stayed English regardless of the active admin locale. Every visible string now routes through the translation layer, so the drawer is fully localised in all seven languages.

  • @byline/i18n — fixed the German dashboard collection description, which wrapped the collection name in quotation marks the source string doesn't have (rendering e.g. Sammlung „Documents"). Removed the stray quotes and normalised German's typographic quote pairs to straight quotes, matching the source and the other locales.

Chores

  • @byline/i18n — moved the LanguageMenu component off Tailwind utility classes onto a co-located CSS Module, aligning it with the convention that package components use CSS / CSS Modules rather than Tailwind. This enabled CSS-module emission in the package build (mirroring @byline/ui) and let the menu inherit the shared dropdown's token-driven theming instead of hardcoded colours. Behaviour is unchanged.

All other @byline/* packages bumped to 3.12.0 in lockstep with no behavioural changes this cycle.