kaisel_core 0.19.0
kaisel_core: ^0.19.0 copied to clipboard
Pure-Dart navigation core for the kaisel router — sealed routes, a stack-as-state model, guards, and URL codecs. No Flutter, no codegen.
Changelog #
0.19.0 #
Added #
KaiselBranchSnapshot.built— the inspector snapshot now reports whether a shell branch is materialised, so a lazy shell can show which branches are built and which are still dormant. An unbuilt branch carries an empty stack.
0.18.0 #
Added #
pushForResult<T>— typed results from a main-stack screen. Push a route onto the router's own stack and await a typed value:final r = await router.pushForResult<T>(route). The screen returns the value by popping with one (pop(result)); the future resolves when the pushed entry leaves the stack — with the popped value, ornullif it is popped without one, replaced byset/replaceTop, removed by system back, the router is disposed, or a guard prevents it from landing. Unlikerun<T>, the screen is a normal route in the same navigator, so a shared observer sees it and a root-navigator dialog renders above it.popnow accepts an optionalObject? result, delivered to a matchingpushForResultawaiter.
0.17.0 #
Added #
- Navigation origin tracking for DevTools. Each committed navigation now
records the app call site that issued it:
KaiselNavigatorexposesdebugLastTransitionOrigin(the capturedStackTrace) and a monotonicdebugLastTransitionSeq, andKaiselRootSnapshotcarries anoriginlist of the app frames behind the most recent transition. Two helpers back it —kaiselNextOriginSeq()andkaiselOriginFrames()(trims kaisel, Flutter, and SDK frames to the caller) — exposed viakaisel_core/framework.dart. Each frame is aKaiselOriginFramecarrying its display line plus a parseduri/line/column(when locatable), so a DevTools host can open it in an editor. Capture isassert-gated, so it costs nothing and is null in release.
0.16.0 #
Changed (breaking) #
KaiselRoute.name→KaiselRoute.routeName. Renamed so the getter can't clash with a domain field namedname(a route may legitimately carry its own). If you overrodenamefor a custom screen name, rename the override torouteName.
0.15.0 #
Added #
- DevTools read-write surface, for the kaisel DevTools extension's "drive the
app" controls:
KaiselInspectable.debugApplyCommandand anext.kaisel.commandservice extension onKaiselInspector. KaiselRouter.debugHistory— a capped, debug-only history of the stacks the router has held (real routes), powering DevTools time-travel.KaiselRootSnapshot.history— the stringified history, on the snapshot.KaiselRoute.name— a name for the route (defaults to the runtime type), set asRouteSettings.nameon the page kaisel builds soNavigatorObserver-based analytics can identify the screen. Override for a custom or obfuscation-stable name.
Changed #
KaiselInspectablegains adebugApplyCommandmember. Breaking only for code that implements the (framework-facing) interface directly; the kaisel delegate is updated.
0.14.0 #
Added #
- Debug-only inspector surface, consumed by the kaisel DevTools extension:
KaiselInspector(a dormant registry) and theKaiselInspectableinterface, plus the renderer-agnostic snapshot model (KaiselNavSnapshotand friends). KaiselRouterdebug fields for the same:debugLastGuardRun/KaiselGuardRun/KaiselGuardStep(guard-pipeline trace),debugLastNoOp/KaiselNoOp(no-opreplaceTopdetection — the missing-propssymptom), anddebugAbsorbedPositions/debugSetAbsorbedPositions(adaptive master-detail absorption). All gated so they cost nothing in release.
These are additive; existing APIs are unchanged.
0.13.0 — Renamed to kaisel_core #
Renamed from gate_core to kaisel_core as part of the gate → kaisel
rebrand. Mechanical rename, no behavioural change: every Gate* type is
now Kaisel*, and imports move from package:gate_core/... to
package:kaisel_core/.... See the
kaisel changelog
for the full migration note.
0.12.0 #
Initial release of kaisel_core, extracted from the kaisel package as its
pure-Dart navigation core. Contains the sealed-route base, the KaiselRouter
stack container (now built on a Flutter-free change-notifier), the guard
pipeline, and the URL codecs — with no Flutter dependency.
Versioned in lockstep with kaisel; see the
kaisel changelog
for the history of these APIs prior to the split.