PackageTrack
Sign in Get early access

genesis_tree

A framework-agnostic Seed/Branch keyed-reconcile tree engine — Flutter's element/reconciliation model extracted to pure, bare-VM Dart.

0.2.0 4.1K downloads/mo #4140 most downloaded on pub.dev memento-engineering/genesis

What this package is like to depend on

Last release 22 days ago

01 Aug 2026

Ships fairly regularly

a new release about every 3 weeks

Nearly every release is documented

notes for 8 of 8 stable releases

Nothing withdrawn

no release was ever pulled

2 months old

8 releases · first in 2026

8 releases in the last 12 months

see the full history below

Release timeline

8 releases · Jun 2026 to Aug 2026
Release Pre-release

Releases

latest 8
  1. 0.2.0 01 Aug 2026
    Release notes

    Route foundation, tree, and perception diagnostics through a public builder while preserving the version-1 wire contract. Synchronize breaking package versions and workspace dependency constraints, and record the ratified ruling.

    BREAKING CHANGE: debugFillProperties now receives DiagnosticsBuilder instead of List.

    Refs: genesis-nd7

    Open source →
    Release notes
    • Breaking: debugFillProperties now receives a DiagnosticsBuilder — replace properties.add(...) list calls with the builder add(); wire format unchanged.
    Open source →
  2. 0.1.6 01 Aug 2026
    Release notes

    chore(release): genesis foundation-wave — foundation 0.1.2 docs refre…

    Open source →
    Release notes
    • Add genesis_foundation ^0.1.1 below the tree spine and re-export its dependency-free diagnostics protocol and typed snapshot contract. The first-class Key types remain owned by genesis_tree.
    Open source →
  3. 0.1.5 02 Jul 2026
    Release notes

    release(tree): 0.1.5 — docs-only, ship the artifact-layer README to p…

    Open source →
    Release notes
    • Docs only, no API changes. The README gains "The artifact layer — deliberately not shipped": genesis_tree reconciles desired state into live identity and stops there — what that identity spawns and owns is the consumer's, unbundled into four pieces (artifacts / owner / protocol / affordance scopes), with genesis_typesetting and genesis_perception as the worked examples. The composition-layer list also catches up to 0.1.4 (MultiChildSeed, the SingleChildSeed/Nest chain).
    Open source →
  4. 0.1.4 02 Jul 2026
    Release notes

    test(tree): extend the A8 throw-after-unmount enumeration to getInher…

    Open source →
    Release notes
    • Add the single-child chain vocabulary. SingleChildStatelessSeed and SingleChildStatefulSeed (with SingleChildState) are the single-child analogues of StatelessSeed/StatefulSeed: their build receives the downstream child to embed (buildWithChild). Nest stacks a list of them into a vertical spine, each wrapping the next down to one leaf child — the Nested/MultiProvider shape, generic (no inherited-value semantics baked in). MultiChildSeed fans out horizontally; Nest composes vertically. Fully const-constructible: the children are referenced as authored and never reconstructed — each link's downstream is supplied at the branch layer — so an unchanged Nest prunes its whole chain on reconcile, while a change to the leaf or any link propagates through it. EXPERIMENTAL.

    • Add getInheritedSeedOfExactType<T>() — the dependency-free counterpart of dependOnInheritedSeedOfExactType<T>(). Same nearest-ancestor lookup, same value result, but the caller is not registered as a dependent: the returned value is a snapshot, and a later change to the provided value does not rebuild the reader. Use it for one-shot reads — grabbing an ambient service in State.initState, inside an effect, during teardown — and keep the depend variant wherever the branch must rebuild on change. Available on Branch, TreeContext, and SproutContext. Breaking for external TreeContext implementers (a new interface member); handles that wrap the canonical handle just delegate it.

    • StatefulBranch now asserts (debug-only) when dependOnInheritedSeedOfExactType is called during initState or dispose. In initState the natural cache-the-result pattern goes stale when the provider changes (initState never re-runs) — read dependency-free with the new variant, or cache-and-track in didChangeDependencies. In dispose the branch is unmounting and can never observe a change.

    • There is deliberately no "get the provider element" lookup (Flutter's getElementForInheritedWidgetOfExactType): the capability handle never exposes a Branch.

    Open source →
  5. 0.1.3 28 Jun 2026
    Release notes
    • Breaking: a first-class Key value-type. Seed.key (and Branch.key, TreeContext.key) is now typed Key? instead of Object?. Two concrete kinds ship: ValueKey<T>(value) (value equality; the type parameter is part of identity, so ValueKey<int>(1) != ValueKey<num>(1)) and ObjectKey(value) (identity equality), plus an ergonomic const Key(String) factory that builds a ValueKey<String>. The typed key gives reconciliation identity intent and type-safety and a shared identity story for keyed list reconcile.
    • Key is open (abstract, not sealed): domains extend it with their own key kinds. There is deliberately no GlobalKey — cross-tree lookup is refused so the tree stays one-way (cross-boundary references pass handles through the parent) — and no LocalKey layer (vacuous without a global key).
    • Migration: replace key: 'id' with key: ValueKey('id') (or Key('id')), and seed.key == 'id' comparisons with seed.key == ValueKey('id').
    • Add MultiChildSeed/MultiChildBranch to the (experimental) composition layer: a config-declared multi-child container that keyed-reconciles its List<Seed> children via Branch.updateChildren — the MultiChildRenderObjectElement analogue, beside the single-child StatelessSeed/StatefulSeed/Sprout. Matched children (keyed by key, unkeyed by position) keep their branch identity across rebuilds; new children mount, removed children unmount, and child order follows children. The identical-config skip fast path and the duplicate-sibling-key debug guard are inherited from Branch. Additive; the spine is unchanged.
    Open source →
  6. 0.1.2 16 Jun 2026
    Release notes
    • Add a debug assertion that sibling keys are unique within updateChildren (debug-mode only; surfaces duplicate-key reconcile bugs earlier, no release-mode behavior change).
    Open source →
  7. 0.1.1 15 Jun 2026
    Release notes
    • Docs: package documentation (README, dartdoc) made self-contained for pub.dev.
    • Reworded the TreeContext use-after-unmount StateError message (text only; no behavior change).
    Open source →
  8. 0.1.0 15 Jun 2026
    Release notes
    • Initial release: the Seed/Branch keyed-reconcile engine — TreeContext (a separate capability handle), TreeOwner, the composition layer (Stateless/Stateful/State, InheritedSeed, Watch, Sprout), and the identical-config skip fast path.

      Pre-1.0 and experimental; APIs may change before 1.0.

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive