Skip to content

v1.5.0

Latest

Choose a tag to compare

@eugeniodepalo eugeniodepalo released this 27 Aug 18:55
· 5 commits to main since this release
v1.5.0
9c8293d

Read the announcement: GTKX 1.5: Native forms and gettext i18n.

New Features

  • @gtkx/i18n connects the actual react-i18next API to GNU gettext — The package re-exports the complete react-i18next surface and adds bound t and init functions 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 through t, useTranslation, withTranslation, and Translation. (#577)

  • The CLI owns the complete localization lifecyclegtkx codegen, dev, and build discover react-i18next bindings, generate POTFILES.in and the POT, initialize and synchronize every locale in po/LINGUAS, and generate message types; dev and build also compile MO catalogs. gtkx dev restarts when catalogs change. gtkx deploy also 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/forms brings React Hook Form to native Adwaita rowsEntryRow, PasswordEntryRow, SwitchRow, SpinRow, and ComboRow bind 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