Skip to content

v2.0.0-beta.3

Pre-release
Pre-release

Choose a tag to compare

@eugeniodepalo eugeniodepalo released this 04 Sep 11:18

GTKX 2.0 beta 3 is a follow-up hardening release for beta 2. It makes generated bindings safe to publish under concurrent codegen, closes process-lifecycle gaps around gtkx dev --headless, and fixes API, React, internationalization, deployment, and scaffolding issues found during beta testing.

GTKX 2.0 beta 3 is a prerelease. The final GTKX 2.0 release is scheduled for December 1, 2026, after the migration and hardening period.

Breaking Changes and Migration

  • Rename the GObject property escape hatches. GObject.getObjectProperty and GObject.setObjectProperty are now GObject.getProperty and GObject.setProperty. Regenerate bindings after upgrading and update direct calls.
  • Nullable string-vector properties now preserve native NULL. They return null for a null pointer and [] only for an allocated empty vector.
  • Initable-only classes are no longer directly constructible in TypeScript. Use their generated factory methods; construction guidance prefers newFull when it is available.

Code Generation and Reference

  • Generated @gtkx/gi and @gtkx/jsx stores are now locked and published as one atomic, matching generation. Concurrent writers, abandoned writers, retained readers, unsafe lock files, and incompatible projects sharing a store are handled without exposing partial or mismatched bindings.
  • Promise overloads now accept explicit null for nullable asynchronous side callbacks.
  • Generated element reference pages now include static methods and document accepted JSX child widget types for constrained containers.

Development, React, and Internationalization

  • gtkx dev --config <file> and gtkx({ configFile: "<file>" }) for Vitest now carry one selected configuration through codegen, Vite, schemas, and the application runner.
  • gtkx dev now tracks both its launching process and original process-group owner on Linux. Native pidfd monitoring, with a /proc fallback, closes wrapper and hard-kill cleanup gaps; headless display process groups and their verified private runtime directories are also torn down.
  • React style rules now share one provider and coalesce updates from the same commit or turn, improving spring-driven style animations. Unmount teardown also recursively detaches widget-backed slots, including popovers.
  • Translation extraction failures now report project-relative source locations where available, and duplicate hot-update extraction work is suppressed.

Build, Deployment, and Project Creation

  • Builds now reject an output nested inside an earlier GTKX-managed build.
  • Deployment rejects unknown AppStream elements even when ordinary warnings are allowed, and reports the computed glibc requirement separately for each Debian and RPM package.
  • create-gtkx adds --skip-install, enforces the Node.js 26.7.0 minimum before scaffolding, and pins generated mise.toml files to Node.js 26.7.0.

(#613)

Full changelog: v2.0.0-beta.2...v2.0.0-beta.3