streamdeck_flutter 0.4.0
streamdeck_flutter: ^0.4.0 copied to clipboard
Build Elgato Stream Deck plugins with Flutter. Renders UI offscreen, slices frames into key-sized tiles, and pushes them via the Stream Deck WebSocket protocol.
0.4.0 #
Breaking #
StreamDeckPluginno longer takesactionBuilder. EachManifestActioncarries its ownbuild(WidgetBuilder), andManifest.actionsis the single source for bothmanifest.jsonand event dispatch.
Added #
runHeadless(widget)— renders the plugin in a detached render tree with no on-screen window. The host window isorderOut'd; tiles are captured from the detached tree.ManifestAction.build— theWidgetBuilderthat renders the action (excluded from JSON), soManifest.actionsdrives bothmanifest.jsonand event dispatch.- Manifest models (
Manifest,ManifestAction, …) moved here fromstreamdeck_clientand are re-exported from the package barrel. Layoutmoved here fromstreamdeck_client(render geometry is a rendering concern) and is re-exported.buildGrid(actions, devices)— builds the per-device grid with empty-slot placeholders, moved here from the client'sgridgetter.
Removed #
- The
streamdeck.sizewindow-resize channel (DartMethodChannel+ nativehandleResize). The window is never shown, so there is nothing to resize.
Changed #
- Tiles are captured at the device's reported
devicePixelRatio(Raster.pixelRatio) instead of a hardcoded2.0, and encoded as JPEG (Raster.jpegQuality, default 85) viapackage:imagereusing the change-detection RGBA. Together ~14× smaller payloads on Stream Deck + (which reports1.0).Raster.mimeTypeis sent tosetImage/setFeedback. - JPEG encoding runs on a long-lived background isolate (
JpegWorker) — only changed tiles are sent across (TransferableTypedData) — keeping the DCT/quantization work off the UI/render isolate.
0.3.1 #
Fixed #
- Build command preserves
manifest.jsonacross rebuilds, avoiding unnecessary double restart.
0.3.0 #
Breaking #
- Remove
builderfromManifestActionandManifestState. UseactionBuilderonStreamDeckPlugininstead. StreamDeckActiontakes a singlebuilder(WidgetBuilder) instead ofkeypadChild/encoderChild.KeypadandDialtakebuilder(WidgetBuilder) instead ofchild(Widget).StreamDeckAction.animatingdefaults tofalse.- Unified CLI:
streamdeck_flutter build/runsubcommands replace separatebuild,create,docsexecutables. --uuid/-iis required for build and run commands.--assets/-aflag removed — assets auto-discovered fromAssetManifest.bin.
Added #
actionBuilderonStreamDeckPlugin— single builder for all actions, readsStreamDeck.actionOf(context)for routing.CaptureBoundary— custom render object that notifies the raster only when pixels actually repaint.setupLogging()— automatic log setup inHeadlessBinding, writes toapp.loganddeveloper.log.runcommand: build, link, restart, attach with hot reload, tail logs..vm_servicefile written by plugin for CLI attach discovery.- Bootstrap manifest on first install — plugin writes full manifest on launch.
- Manifest skip-write when content unchanged.
- Window resizes dynamically when devices connect/disconnect.
contentMinSizeset on macOS window.canvas.jsonbundled as package asset.- Empty placeholder actions skip raster registration.
Fixed #
- Animation timestamp assertion with monotonic
Stopwatch. - Skip frame pump when engine has a scheduled frame.
setFeedbackLayoutremoved — manifest handles encoder layout.- Handle already-linked gracefully in build command.
0.2.0 #
- Remove
DialPressEventhandling, addDialDownEvent/DialUpEvent. Keypad/DialacceptWidgetBuilderinstead ofWidget.StreamDeckActiontakes singlebuilder.CustomMultiChildLayoutfor device grid positioning.- Client factory caches instances by port.
0.1.1 #
- Flatten directory structure: move action/model files into
lib/src/. - Consolidate analysis_options.yaml to workspace root.
- Regenerate freezed outputs and format all code.
- Add macOS plugin class for Flutter plugin registration.
0.1.0 #
- Initial release.
- Offscreen Flutter rendering with tile-based change detection.
- Stream Deck WebSocket protocol client with auto-reconnection.
- Keypad, encoder, and touchscreen action support.
- Gesture injection (tap, scroll, dial) from Stream Deck events.
- CLI tools:
build,create,docs. - Target device: Stream Deck + (4x2 keys, 4 encoder slots).