Read the announcement: GTKX 1.5: Native forms and gettext i18n.
New Features
-
@gtkx/i18nconnects the actual react-i18next API to GNU gettext — The package re-exports the completereact-i18nextsurface and adds boundtandinitfunctions from the same configured i18next singleton. Its GLib-backed backend resolves compiled MO catalogs using the application ID as the gettext domain, with interpolation, cardinal plurals, context, and normal i18next fallbacks. Generated declarations make literal messages and their interpolation variables strict throught,useTranslation,withTranslation, andTranslation. (#577) -
The CLI owns the complete localization lifecycle —
gtkx codegen,dev, andbuilddiscover react-i18next bindings, generatePOTFILES.inand the POT, initialize and synchronize every locale inpo/LINGUAS, and generate message types;devandbuildalso compile MO catalogs.gtkx devrestarts when catalogs change.gtkx deployalso translates desktop, AppStream, and MIME metadata and stages the same catalog for deb, rpm, AppImage, and both Flatpak modes; the generated launcher resolves each package's real locale prefix at runtime. (#577) -
@gtkx/formsbrings React Hook Form to native Adwaita rows —EntryRow,PasswordEntryRow,SwitchRow,SpinRow, andComboRowbind typed React Hook Form fields to native widget state. The package re-exports React Hook Form's provider, controller, hooks, and common types, and maps validation to Adwaita error styling, accessibility state, tooltips, focus, blur, disabled fields, resets, and programmatic values. (#579) -
The Tasks tutorial now carries forms and localization through release — The task editor uses
@gtkx/forms, while a new internationalization chapter builds a French catalog from source, verifies strict message types and translated widgets, and follows the catalog into localized deb, rpm, AppImage, and Flatpak metadata and payloads. (#577, #579)
Bug Fixes
- Native struct field overwrites now release displaced allocations exactly once using their original ownership strategy, and preserve that ownership when encoding fails or unwinds. (#580)
- MCP application links now fail promptly when a socket is unwritable or stops draining, cap oversized input and pending writes, and keep the server available after a malformed or abusive client disconnects. (#578)
- Headless test workers now report compositor and D-Bus startup failures as soon as the child exits, including its stderr, instead of surfacing only a later socket timeout. (#578)
- CSS rules containing an unescaped newline in a quoted value are dropped without affecting later rules, while escaped line continuations and comments remain valid. (#578)
Full changelog: v1.4.0...v1.5.0