v2.0.0-beta.3
Pre-release
Pre-release
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.getObjectPropertyandGObject.setObjectPropertyare nowGObject.getPropertyandGObject.setProperty. Regenerate bindings after upgrading and update direct calls. - Nullable string-vector properties now preserve native
NULL. They returnnullfor 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
newFullwhen it is available.
Code Generation and Reference
- Generated
@gtkx/giand@gtkx/jsxstores 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
nullfor 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>andgtkx({ configFile: "<file>" })for Vitest now carry one selected configuration through codegen, Vite, schemas, and the application runner.gtkx devnow tracks both its launching process and original process-group owner on Linux. Nativepidfdmonitoring, with a/procfallback, 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
styleanimations. 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-gtkxadds--skip-install, enforces the Node.js 26.7.0 minimum before scaffolding, and pins generatedmise.tomlfiles to Node.js 26.7.0.
(#613)
Full changelog: v2.0.0-beta.2...v2.0.0-beta.3