bloc_signals_genui 1.0.0+1
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+1to refresh pub.dev Pana package analysis after a transientpub getsandbox worker timeout on initial1.0.0upload.
1.0.0 #
- Milestone: Stable 1.0.0 release of
bloc_signals_genui. - Feat (genui): Integrate
a2ui_core0.3.0bidirectionalRpcHandlerintoA2uiSurfaceBloc(outboundListener,defaultRpcTimeout,rpc,outboundMessages,outboundMessageHistory, andcallAgentFunction), and re-exportCallOptions,FunctionCall,A2uiFunctionResponse,AllowedCallers,A2uiRpcError,RpcErrorCode,NodeState,NodeProps, andOutboundMessageListener(#370). - Feat (genui): Upgrade
a2ui_coreto^0.3.0, register[StandardCatalog(), BasicCatalog.v0_9(), BasicCatalog.v1_0()]by default inA2uiSurfaceBloc, support v1.0 inlineCreateSurfaceMessagecomponents and@pathform validation bindings, call_processor.dispose()onclose(), and re-exporta2ui_core0.3.0 types alongside backward-compatibleA2uiMessage,A2uiClientAction,A2uiClientError, andMinimalCatalogtypedefs (#368).
0.1.2 #
- Feat (genui): Upgrade
a2ui_coreto^0.3.0, register[StandardCatalog(), BasicCatalog.v0_9(), BasicCatalog.v1_0()]by default inA2uiSurfaceBloc, support v1.0 inlineCreateSurfaceMessagecomponents and@pathform validation bindings, call_processor.dispose()onclose(), and re-exporta2ui_core0.3.0 types alongside backward-compatibleA2uiMessage,A2uiClientAction,A2uiClientError, andMinimalCatalogtypedefs (#368). - Dependencies: Bump
a2ui_coredependency constraint to^0.3.0and remove workspace git dependency override (#368). - Dependencies: Align intra-workspace
bloc_signalsdependency constraint to^1.5.0(#334). - Fix (genui): Narrow
A2uiSurfaceBloc._safeCancelfrom barecatchtoon Exception catchso programming defects in subscription cancellation surface immediately, and upgrade barecatchblocks at stream/JSON boundaries to expliciton Object catch(#340). - Fix (genui): Add
maxResponseHistoryparameter (defaulting to 100) toA2uiSurfaceBlocto bound_responseHistorywith FIFO eviction (#332). - Fix (genui): Replaced shallow map/list equality and collection-length hash codes on
A2uiActionResponse,SurfaceReady, andSurfaceSubmittingwith recursivedeepEqualsanddeepHashCodehelpers (deep_collection_equality.dart), and added a bounded 100-entry validation regular expression cache inA2uiSurfaceBloc._validateFormthat caches malformed patterns asnullonFormatException(#321). - Decoupled active surface navigation coordinates from per-surface content revisions and added bounded surface lifecycle management (#292):
- Promoted
A2uiSurfaceBloc.activeSurfaceIdto a reactiveReadonlySignal<String?>alongsideString? get activeSurfaceIdValuefor 0ms synchronous access. - Replaced global
_surfaceVersioncounter with per-surface_surfaceVersions(Map<String, int>), ensuringSelectSurfaceswitches and sibling surface mutations never artificially increment unrelated surface versions. - Added
CloseSurface({required String surfaceId})event and wire-levelDeleteSurfaceMessagemetadata cleanup to evict surfaces, prune action response history, and promote the most-recently-accessed surviving surface. - Added optional
maxSurfacesparameter toA2uiSurfaceBloc(maxSurfaces: k)enforcing bounded Least-Recently-Used (LRU) eviction of non-active surfaces.
- Promoted
- 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
availableSurfaceIdsgetter onA2uiSurfaceBlocandSurfaceReadyreturning an unmodifiable list of registered surfaces. - Added
getSurfaceReady(String surfaceId)onA2uiSurfaceBlocto query state for any existing surface without mutating the active surface. - Added defensive validation routing missing surface errors to
onError()and emittingSurfaceError.
- Added
- 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 toSurfaceReady. - 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
validationErrorsand marksisValid: falsewhen an error is provided.
- Added
- Remediated runtime error handling and validation findings (#269):
- Fixed error observability by notifying
onError()and rethrowing fatalErrorinstances. - Added form validation contract enforcement (
_validateForm()) before dispatchingA2uiActionResponse. - Added polymorphic
surfaceIdonA2uiSurfaceStatehierarchy and includedpayloadinSurfaceSubmitting.==. - Replaced unbuffered action responses broadcast stream with race-free buffered replay stream.
- Added
StandardCatalogdeclaringCardandDividerschemas, and dynamic child/action normalization. - Selectively re-exported curated
a2ui_corepublic types inbloc_signals_genui.dart.
- Fixed error observability by notifying
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
A2uiSurfaceBlocstate container bridging Google's A2UI protocol withBlocSignal. - 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
A2uiActionResponseagent tool calling callbacks.