slipstream_agent 1.1.0
slipstream_agent: ^1.1.0 copied to clipboard
An in-process companion for the Flutter Slipstream agent tools.
1.1.0 #
- Add
ext.slipstream.logextension and ghost overlay command log. A translucent chip appears at the bottom of the app showing the most recent agent action (e.g. "tap: login_button", "navigate: /home"), then slides out after 3 seconds. In-process extensions log automatically; the MCP server callsext.slipstream.logfor out-of-process operations (reload, screenshot, evaluate, etc.). - Ghost overlay now installs on the first
ext.slipstream.ping(or any log call), permanently replacing the Flutter debug banner with a "slipstream" banner in the top-right corner.ext.slipstream.overlaysnow only toggles the ghost overlay visibility (banner + chips) and no longer saves/restoresWidgetsApp.debugAllowBannerOverride. ext.slipstream.logacceptskind,finder,finderValue, andvizparameters for richer visualizations.kindcontrols the icon shown in the chip ("read","interact","reload","screenshot").viztriggers an extra visual effect:"flash"(brief full-screen tint),"outline"(animated bounding-box highlight on the target widget),"semantics"(bounding-box outlines on all visible semantics nodes), or"layout"(falls back to"outline"for now).- Fix
ext.slipstream.get_semanticsreturning incorrect screen-space coordinates. The previous implementation accumulatedSemanticsNode.transformvalues, which are in physical pixels (scaled bydevicePixelRatio). The new implementation walks the render tree usingRenderBox.localToGlobal, which stays in logical pixels and matches the overlay coordinate system.visitChildrenForSemanticsis used instead ofvisitChildrenso that render objects excluded from semantics (e.g. inactiveIndexedStacktabs) are not collected.
1.0.0 #
- Add
ext.slipstream.overlaysextension. Calling withenabled=falsesaves the current overlay state and hides all managed overlays (currently the Flutter debug banner viaWidgetsApp.debugAllowBannerOverride); calling withenabled=truerestores the previously saved state. Designed for the screenshot use case: hide → capture → restore.
0.1.2 #
- Fix
GoRouterAdapterlistener registration: cast toListenable(fromflutter/foundation.dart) rather than a concrete type, restoring the zero-go_router-dependency design. - Fix
get_semanticsreturning an empty node list: revert semantics owner lookup topipelineOwner.semanticsOwner(rootPipelineOwnerwas returning null). - Debounce
ext.slipstream.windowResizedevents by 100 ms to avoid flooding clients during continuous window resize. - Switch
scrollElementfromanimateTotojumpTo— animation served no purpose for an AI agent caller.
0.1.1 #
- Update
GoRouterAdapterto reference the router via the [RouterConfig] parent type for additional type safety.
0.1.0 #
Initial release.
SlipstreamAgent.init()registers VM service extensions that the Flutter Slipstream MCP server uses for enhanced app interaction. All extensions are no-ops outsidekDebugModeand are tree-shaken from release builds.- Service extensions registered:
ext.slipstream.ping— session detection and version reportingext.slipstream.perform_action— tap, set_text, scroll, and scroll_until_visible via element-tree finders (byKey,byType,byText,bySemanticsLabel)ext.slipstream.enable_semantics— enables the Flutter semantics treeext.slipstream.get_semantics— returns visible semantics nodes as structured JSON with screen-space bounds (more accurate than the out-of-process evaluate-based implementation)ext.slipstream.navigate— navigates to a route path via the registeredRouterAdapterext.slipstream.get_route— returns the current route path via the registeredRouterAdapter
- Telemetry events posted to the VM service
Extensionstream:ext.slipstream.windowResized— fired on window/display metric changesext.slipstream.routeChanged— fired on route changes (requires aRouterAdapter)
GoRouterAdapterprovidesgo_routersupport (but without a transitive dependency onpackage:go_router).