Skip to main content

bloc_signals_genui 1.0.0+1 copy "bloc_signals_genui: ^1.0.0+1" to clipboard
bloc_signals_genui: ^1.0.0+1 copied to clipboard

Pure-Dart A2UI state machine and Generative UI adapter for the BlocSignal ecosystem.

Changelog #

All notable changes to bloc_signals_genui will be documented in this file.

1.0.0+1 #

  • Docs (genui): Re-publish 1.0.0+1 to refresh pub.dev Pana package analysis after a transient pub get sandbox worker timeout on initial 1.0.0 upload.

1.0.0 #

  • Milestone: Stable 1.0.0 release of bloc_signals_genui.
  • Feat (genui): Integrate a2ui_core 0.3.0 bidirectional RpcHandler into A2uiSurfaceBloc (outboundListener, defaultRpcTimeout, rpc, outboundMessages, outboundMessageHistory, and callAgentFunction), and re-export CallOptions, FunctionCall, A2uiFunctionResponse, AllowedCallers, A2uiRpcError, RpcErrorCode, NodeState, NodeProps, and OutboundMessageListener (#370).
  • Feat (genui): Upgrade a2ui_core to ^0.3.0, register [StandardCatalog(), BasicCatalog.v0_9(), BasicCatalog.v1_0()] by default in A2uiSurfaceBloc, support v1.0 inline CreateSurfaceMessage components and @path form validation bindings, call _processor.dispose() on close(), and re-export a2ui_core 0.3.0 types alongside backward-compatible A2uiMessage, A2uiClientAction, A2uiClientError, and MinimalCatalog typedefs (#368).

0.1.2 #

  • Feat (genui): Upgrade a2ui_core to ^0.3.0, register [StandardCatalog(), BasicCatalog.v0_9(), BasicCatalog.v1_0()] by default in A2uiSurfaceBloc, support v1.0 inline CreateSurfaceMessage components and @path form validation bindings, call _processor.dispose() on close(), and re-export a2ui_core 0.3.0 types alongside backward-compatible A2uiMessage, A2uiClientAction, A2uiClientError, and MinimalCatalog typedefs (#368).
  • Dependencies: Bump a2ui_core dependency constraint to ^0.3.0 and remove workspace git dependency override (#368).
  • Dependencies: Align intra-workspace bloc_signals dependency constraint to ^1.5.0 (#334).
  • Fix (genui): Narrow A2uiSurfaceBloc._safeCancel from bare catch to on Exception catch so programming defects in subscription cancellation surface immediately, and upgrade bare catch blocks at stream/JSON boundaries to explicit on Object catch (#340).
  • Fix (genui): Add maxResponseHistory parameter (defaulting to 100) to A2uiSurfaceBloc to bound _responseHistory with FIFO eviction (#332).
  • Fix (genui): Replaced shallow map/list equality and collection-length hash codes on A2uiActionResponse, SurfaceReady, and SurfaceSubmitting with recursive deepEquals and deepHashCode helpers (deep_collection_equality.dart), and added a bounded 100-entry validation regular expression cache in A2uiSurfaceBloc._validateForm that caches malformed patterns as null on FormatException (#321).
  • Decoupled active surface navigation coordinates from per-surface content revisions and added bounded surface lifecycle management (#292):
    • Promoted A2uiSurfaceBloc.activeSurfaceId to a reactive ReadonlySignal<String?> alongside String? get activeSurfaceIdValue for 0ms synchronous access.
    • Replaced global _surfaceVersion counter with per-surface _surfaceVersions (Map<String, int>), ensuring SelectSurface switches and sibling surface mutations never artificially increment unrelated surface versions.
    • Added CloseSurface({required String surfaceId}) event and wire-level DeleteSurfaceMessage metadata cleanup to evict surfaces, prune action response history, and promote the most-recently-accessed surviving surface.
    • Added optional maxSurfaces parameter to A2uiSurfaceBloc(maxSurfaces: k) enforcing bounded Least-Recently-Used (LRU) eviction of non-active surfaces.
  • Added multi-surface navigation, discovery, and targeted rendering support (#283):
    • Added SelectSurface({required String surfaceId}) event to switch active surface and trigger immediate state transitions.
    • Added availableSurfaceIds getter on A2uiSurfaceBloc and SurfaceReady returning an unmodifiable list of registered surfaces.
    • Added getSurfaceReady(String surfaceId) on A2uiSurfaceBloc to query state for any existing surface without mutating the active surface.
    • Added defensive validation routing missing surface errors to onError() and emitting SurfaceError.
  • Added action submission recovery and completion lifecycle events (#284):
    • Added CancelSubmission({String? error, String? surfaceId}) event to safely abort in-flight submissions and return state to SurfaceReady.
    • Added CompleteAction({String? error, String? surfaceId}) event to conclude successful or erroneous action processing.
    • Form state, inputs, and components are preserved across submission cancellation and completion.
    • Automatically appends error messages to validationErrors and marks isValid: false when an error is provided.
  • Remediated runtime error handling and validation findings (#269):
    • Fixed error observability by notifying onError() and rethrowing fatal Error instances.
    • Added form validation contract enforcement (_validateForm()) before dispatching A2uiActionResponse.
    • Added polymorphic surfaceId on A2uiSurfaceState hierarchy and included payload in SurfaceSubmitting.==.
    • Replaced unbuffered action responses broadcast stream with race-free buffered replay stream.
    • Added StandardCatalog declaring Card and Divider schemas, and dynamic child/action normalization.
    • Selectively re-exported curated a2ui_core public types in bloc_signals_genui.dart.

0.1.1 #

  • Added A2uiActionResponse.getFormValue<T>(String path) for ergonomic retrieval of form data supporting flat keys, leading-slash paths, and nested dot-notation access.

0.1.0 #

  • Initial release of bloc_signals_genui.
  • Pure-Dart A2uiSurfaceBloc state container bridging Google's A2UI protocol with BlocSignal.
  • Sealed presentation state machine: SurfaceInitial, SurfaceStreaming, SurfaceReady, SurfaceSubmitting, SurfaceError.
  • Polymorphic event envelopes: IngestStream, ProcessMessage, ProcessJsonMessage, ProcessMessages, UpdateFormField, SubmitAction, ResetSurface.
  • Built-in restartable() concurrency protection for streaming chunk ingestion.
  • Zero-latency synchronous form mutations on DataModel.
  • Formatted A2uiActionResponse agent tool calling callbacks.
0
likes
160
points
0
downloads

Documentation

API reference

Publisher

verified publisherblocsignal.dev

Weekly Downloads

Pure-Dart A2UI state machine and Generative UI adapter for the BlocSignal ecosystem.

Repository (GitHub)
View/report issues
Contributing

Topics

#bloc #signals #genui #a2ui #state-management

License

MIT (license)

Dependencies

a2ui_core, bloc_signals, json_schema_builder, meta

More

Packages that depend on bloc_signals_genui