leonard_flutter 0.3.1 copy "leonard_flutter: ^0.3.1" to clipboard
leonard_flutter: ^0.3.1 copied to clipboard

Host WidgetsBinding for Leonard.

Changelog #

0.3.1 #

  • Fix: core.enter_text now enters text through EditableTextState.userUpdateTextEditingValue (the same path a physical keystroke uses) instead of assigning controller.value directly. onChanged was never fired before, leaving app state that depends on it — button enablement, Form validation — stale after enter_text. Submission callbacks are unaffected: onSubmitted/onFieldSubmitted fire from performAction, not from an edit, so enter_text still does not submit. No API changes.

0.3.0 #

  • Breaking: test helpers no longer ship from leonard_flutter. Add leonard_flutter_test: ^0.1.0 to dev_dependencies and import its barrel instead. Imports of the deleted package:leonard_flutter/test_support/perception_serializer.dart must use package:genesis_perception/genesis_perception.dart directly.

0.2.2 #

  • feat: on-demand ext.leonard.core.get_diagnostics_tree diagnostics extension. Projects the core + registered perception extensions to Genesis diagnostics contract 1 only when requested (e.g. while the DevTools Diagnostics panel is open) — get_stable_observation's hot path is unchanged and still carries no diagnostics tree. A plain leonard_flutter dependency automatically discovers the bundled Leonard DevTools extension with Conversation and Diagnostics modes; no adopter dependency on leonard_devtools or genesis_foundation is required.
  • Fix: move the test-only leonard_agent dependency to dev_dependencies, so applications can install leonard_flutter alongside packages that use sse_channel ^0.1.1 (including signalr_netcore) without a version-solving conflict. No public API or runtime behavior changes.

0.2.1 #

  • Bump genesis_perception to ^0.2.0 (the genesis builder wave). No API changes in this package; the perception wire contract is unchanged.

0.2.0 #

  • Breaking: VM-service methods now use ext.leonard.*. Construct names with kLeonardExtensionPrefix from leonard_contract.
  • The binding emits kLeonardProtocolVersion in its handshake.

0.1.8 #

  • Republish so the pub.dev archive actually carries LeonardBinding.extensionsReady (a Future<void> that completes once the leonard service extensions are registered). The getter landed in the repo while the version stayed 0.1.7, so the hosted 0.1.7 archive predates it and consumers pinning ^0.1.7 from pub.dev could not compile against it (butane_flutter-s2w).

0.1.7 #

  • The core semantics fragment now emits identifier (from SemanticsData.identifier, set via Semantics(identifier:)) alongside label and value — a stable, locale-independent key for addressing a node. Emitted present-only, so apps that set no identifiers are unaffected.

0.1.6 #

  • The core semantics fragment now emits a value field (from SemanticsData.value) alongside label, so the harness sees a node's current value (e.g. a text field's contents) uniformly with the native channel's record shape.
  • Stability: the settle loop no longer wedges when a framework callback stays registered across frames — the persistent-callback baseline is dropped from isAnyBusy, so a quiet frame is correctly reported as idle.

0.1.5 #

  • core.handshake now advertises a capabilities list alongside the extension manifest. screenshot (the raw core.screenshot VM extension) is reachable but is not a namespaced tool, so it never appeared in the manifest — a driver listing tools would wrongly conclude "no screenshot". It is now reported as a capability, gated on the same debug/profile condition as the extension itself (absent in release).

0.1.4 #

  • Extension contract extracted to the new leonard_contract package (Flutter-free): LeonardExtension, LeonardTool, PerceptionExtension, ExtensionRegistry, and the dispatch helpers now live there and are re-exported via contract.dart, so consumers are unaffected. Adds a leonard_contract dependency. The unused frame-callback and error-handler hooks were dropped, removing the SchedulerBinding / FlutterErrorDetails coupling from the contract; the binding's error-ring-buffer capture is unchanged.

0.1.3 #

  • Perception serialization de-duplicated: serializePerceptionFragment now lives in genesis_perception and is re-exported here. Bumps the genesis_perception floor to ^0.1.2 (the version that introduced it).
  • Observation: expose scroll extent (pos / min / max) on scrollable nodes, so the agent can see scroll position and bounds instead of guessing.

0.1.2 #

  • Fix: a new agent handshake resets the session-terminated latch set by core.done. Previously, reusing one running app across multiple agent drives left the binding permanently terminated after the first drive's core.done, so every subsequent action returned session_terminated and the agent appeared stuck (model-agnostic). core.handshake now clears the latch — a handshake marks the start of a new session.

0.1.1 #

  • Fix: ship the compiled DevTools extension bundle in the published package. 0.1.0 omitted extension/devtools/build/ because the repo-root build/ .gitignore rule excluded it (pub publish honors .gitignore), so the "Leonard" DevTools tab was missing for consumers. The bundle is now un-ignored and shipped.

0.1.0 #

  • Host WidgetsBinding (LeonardBinding) with a single-path perception observation pipeline (PerceptionOwner-backed serialization).
  • LeonardExtension authoring contract; core fragment is perception-native.
  • Ships the DevTools extension (the "Leonard" tab) via extension/devtools/.
  • VM-service surface ext.leonard.* (protocol-stable).