Repository navigation
v3.0.0-RC1
Pre-release
Pre-release
·
25 commits
to main
since this release
[3.0.0-RC1] - 2026-08-13
π Features
- (om) Add Poolable, the type a Peer's instance pool actually accepts
- (collection) Make the collections generic in their element type
- (generator) [breaking] Remove the NestedSet treeMode and the 1.4 nested-set proxies
- (generator) [breaking] Emit the object model as a trait instead of a base class
- (generator) [breaking] Remove the concrete_inheritance behavior
- (generator) [breaking] Emit the query model as a trait instead of a base class
- (generator) [breaking] Emit the node model as traits instead of base classes
- (rector) Ship a migration rule for the stub-to-trait change
π Bug Fixes
- (query) Accept a fluent arrow function as a sub-query callback
- (generator) Import the runtime classes generated code names
- (bench) Instantiate a concrete PDO class, not the PropulsionPDO interface
- (generator) Let generated Peer/Object code prove its own row and session types
- (om) Declare the left/right accessors NodeObject is already used through
- (generator) Narrow a resultset cell before casting it
- (map) A built relation always has both tables, so stop typing them nullable
- (generator) Say that validation failures are ValidationFailed objects
- (behavior) Return static from the fluent behavior methods, and guard a missing neighbour
- (generator) Check what came out of the pool in the doSelectJoin paths
- (generator) Establish what doValidateThis(), prepare() and doDelete() hand back
- (generator) Confirm the connection is a PropulsionPDO after resolving it
- (generator) Emit parseable @method tags for typeless columns, and tidy three property types
- (generator) Give temporal hydration a scalar guard, and read nullables once
- (generator) Correct return and parameter types across four behaviors
- (generator) Drop a dead break, and record three findings not worth guessing at
- (generator) Make primary-key types agree between the object and the query
- (generator) Stop reading rows and primary keys as mixed
- (generator) Refuse to move an unplaced node, and type the nested_set row reads
- (generator) [breaking] Honour a query preDelete() veto, unify tree returns, type filterBy
- (generator) Type array columns, and stop the suite inheriting a leaked container
- (generator) Let a rank move and an aggregate update take a nullable connection
- (generator) Guard nullable relations, LOB writes and read-only validation
- (generator) Stop coercing mixed values through columns and tree lookups
- (generator) Clear the last generated-code level 9 findings
π Refactor
- (cache) Return what the formatters return from remember()
- (generator) Drop a null check the enclosing branch already made
- (connection) [breaking] Require a PropulsionPDO, once, where the connection is built
- (generator) [breaking] Stop concrete_inheritance chaining peer classes
π Documentation
- (generator) Type the parameters, returns and properties the behaviors emit
- (known-issues) Write up the Base relation-parameter problem
- (known-issues) Strike the per-model interface, and name the FK cache property
- (generator) Plan the move from generated base classes to traits
- (generator) Record the trait collision audit, which comes back clear
- (known-issues) Drop the section the traits work superseded
π§ͺ Testing
- (generator) Pin the contracts the traits work established
- (runtime) Cover PropulsionArrayCollection's re-keying API
βοΈ Miscellaneous Tasks
- (phpstan) Gate generated code at level 9, not just the source that emits it