# Plushie v0.6.0 - Table of Contents Native desktop GUI framework for Elixir, powered by Iced ## Pages - [Documentation](documentation.md) - Guides - [Introduction](01-introduction.md) - [Getting Started](02-getting-started.md) - [Your First App](03-your-first-app.md) - [The Development Loop](04-the-development-loop.md) - [Events](05-events.md) - [Lists and Inputs](06-lists-and-inputs.md) - [Layout](07-layout.md) - [Styling](08-styling.md) - [Animation and Transitions](09-animation.md) - [Subscriptions](10-subscriptions.md) - [Async and Effects](11-async-and-effects.md) - [Canvas](12-canvas.md) - [Custom Widgets](13-custom-widgets.md) - [State Management](14-state-management.md) - [Testing](15-testing.md) - [Shared State](16-shared-state.md) - Reference - [Accessibility](accessibility.md) - [Animation](animation.md) - [App Lifecycle](app-lifecycle.md) - [Built-in Widgets](built-in-widgets.md) - [Canvas](canvas.md) - [Commands and Effects](commands.md) - [Configuration](configuration.md) - [Custom Widgets](custom-widgets.md) - [DSL](dsl.md) - [Events Reference](events.md) - [Windows and Layout](windows-and-layout.md) - [Mix Tasks](mix-tasks.md) - [Composition Patterns](composition-patterns.md) - [Scoped IDs](scoped-ids.md) - [Themes and Styling](themes-and-styling.md) - [Subscriptions](subscriptions.md) - [Testing Reference](testing.md) - [Wire Protocol](wire-protocol.md) - About - [Plushie Examples](readme.md) - [Changelog](changelog.md) ## Modules - [Plushie.Automation](Plushie.Automation.md): Runtime automation for Plushie apps. - [Plushie.Automation.Element](Plushie.Automation.Element.md): Represents a widget element found in the UI tree during automation. - [Plushie.Automation.File](Plushie.Automation.File.md): Parser for `.plushie` automation files. - [Plushie.Automation.Runner](Plushie.Automation.Runner.md): Executes parsed `.plushie` automation files. - [Plushie.Automation.Screenshot](Plushie.Automation.Screenshot.md): Pixel screenshot for automation and renderer inspection. - [Plushie.Automation.Selector](Plushie.Automation.Selector.md): Selector helpers for automation against a normalized Plushie tree. - [Plushie.Automation.Session](Plushie.Automation.Session.md): An automation client attached to a running Plushie app. - [Plushie.RendererEnv](Plushie.RendererEnv.md): Builds a safe, whitelisted environment for the renderer binary. - [Plushie.Runtime.Commands](Plushie.Runtime.Commands.md): Command execution engine for the Plushie runtime. - [Plushie.Runtime.Subscriptions](Plushie.Runtime.Subscriptions.md): Subscription lifecycle management for the Plushie runtime. - [Plushie.Runtime.WidgetHandlers](Plushie.Runtime.WidgetHandlers.md): Runtime support for widget handler event dispatch and state management. - [Plushie.Runtime.Windows](Plushie.Runtime.Windows.md): Window lifecycle management for the Plushie runtime. - [Plushie.Transport.Framing](Plushie.Transport.Framing.md): Frame encoding and decoding for the plushie wire protocol. - [Plushie.Type.Key](Plushie.Type.Key.md): Event field type for keyboard key names. - [Plushie.Type.KeyModifiers](Plushie.Type.KeyModifiers.md): Event field type for keyboard modifier state. - [Plushie.Type.MouseButton](Plushie.Type.MouseButton.md): Event field type for mouse buttons. - [Plushie.Type.Pointer](Plushie.Type.Pointer.md): Event field types for unified pointer events. - [Plushie.WidgetRegistry](Plushie.WidgetRegistry.md): Discovers widgets via `Plushie.Widget` protocol consolidation. - App Framework - [Plushie](Plushie.md): Native desktop GUIs from Elixir, powered by iced. - [Plushie.App](Plushie.App.md): Behaviour for Plushie apps following the Elm architecture. - [Plushie.Binary](Plushie.Binary.md): Resolves the path to the plushie binary. - [Plushie.Bridge](Plushie.Bridge.md): Bridge to the plushie renderer process. - [Plushie.Dev.DevServer](Plushie.Dev.DevServer.md): File watcher and recompiler for dev-mode live reload. - [Plushie.Runtime](Plushie.Runtime.md): Core lifecycle GenServer for Plushie applications. - UI Builder - [Plushie.Encode](Plushie.Encode.md): Protocol for encoding Elixir values to wire-safe representations. - [Plushie.Tree](Plushie.Tree.md): Utilities for working with Plushie UI trees. - [Plushie.UI](Plushie.UI.md): Ergonomic builder layer for Plushie UI trees. - [Plushie.Widget](Plushie.Widget.md): Macro-based DSL for declaring Plushie widgets. - Widgets - [Plushie.Widget.Build](Plushie.Widget.Build.md): Internal helpers for widget `to_node/1` implementations. - [Plushie.Widget.Button](Plushie.Widget.Button.md): Button -- clickable widget that emits `%WidgetEvent{type: :click, id: id}` events. - [Plushie.Widget.Canvas](Plushie.Widget.Canvas.md): Canvas for drawing shapes, organized into named layers. - [Plushie.Widget.Checkbox](Plushie.Widget.Checkbox.md): Checkbox -- toggleable boolean input. - [Plushie.Widget.Column](Plushie.Widget.Column.md): Column layout -- arranges children vertically. - [Plushie.Widget.ComboBox](Plushie.Widget.ComboBox.md): Combo box -- searchable dropdown with free-form text input. - [Plushie.Widget.Container](Plushie.Widget.Container.md): Container layout -- wraps a single child with padding, sizing, and styling. - [Plushie.Widget.Floating](Plushie.Widget.Floating.md): Floating overlay -- positions child with optional translation and scaling. - [Plushie.Widget.Grid](Plushie.Widget.Grid.md): Grid layout -- arranges children in a fixed-column grid. - [Plushie.Widget.Handler](Plushie.Widget.Handler.md): Runtime support for stateful widgets. - [Plushie.Widget.Image](Plushie.Widget.Image.md): Image display -- renders a raster image from a file path or an in-memory handle. - [Plushie.Widget.KeyedColumn](Plushie.Widget.KeyedColumn.md): Keyed column layout -- arranges children vertically with stable identity keys. - [Plushie.Widget.Markdown](Plushie.Widget.Markdown.md): Markdown display -- renders parsed markdown content. - [Plushie.Widget.Overlay](Plushie.Widget.Overlay.md): Overlay container -- positions the second child as a floating overlay relative to the first child (anchor). - [Plushie.Widget.PaneGrid](Plushie.Widget.PaneGrid.md): Pane grid -- resizable tiled panes. - [Plushie.Widget.PickList](Plushie.Widget.PickList.md): Pick list -- dropdown selection. - [Plushie.Widget.Pin](Plushie.Widget.Pin.md): Pin layout -- positions child at absolute coordinates. - [Plushie.Widget.PointerArea](Plushie.Widget.PointerArea.md): Pointer area -- captures mouse events on child content. - [Plushie.Widget.ProgressBar](Plushie.Widget.ProgressBar.md): Progress bar -- displays progress within a range. - [Plushie.Widget.QrCode](Plushie.Widget.QrCode.md): QR Code -- renders a QR code from a data string. - [Plushie.Widget.Radio](Plushie.Widget.Radio.md): Radio button -- one-of-many selection. - [Plushie.Widget.Responsive](Plushie.Widget.Responsive.md): Responsive layout -- adapts to available size by reporting resize events. - [Plushie.Widget.RichText](Plushie.Widget.RichText.md): Rich text display with individually styled spans. - [Plushie.Widget.Row](Plushie.Widget.Row.md): Row layout -- arranges children horizontally. - [Plushie.Widget.Rule](Plushie.Widget.Rule.md): Horizontal or vertical rule (divider line). - [Plushie.Widget.Scrollable](Plushie.Widget.Scrollable.md): Scrollable container -- wraps child content in a scrollable viewport. - [Plushie.Widget.Sensor](Plushie.Widget.Sensor.md): Sensor -- detects visibility and size changes on child content. - [Plushie.Widget.Slider](Plushie.Widget.Slider.md): Slider -- horizontal range input. - [Plushie.Widget.Space](Plushie.Widget.Space.md): Empty space -- invisible spacer widget. - [Plushie.Widget.Stack](Plushie.Widget.Stack.md): Stack layout -- layers children on top of each other. - [Plushie.Widget.Svg](Plushie.Widget.Svg.md): SVG display -- renders a vector image from a file path. - [Plushie.Widget.Table](Plushie.Widget.Table.md): Data table -- composite widget built from columns, rows, and scrollable containers. - [Plushie.Widget.Text](Plushie.Widget.Text.md): Text display -- renders static text. - [Plushie.Widget.TextEditor](Plushie.Widget.TextEditor.md): Text editor -- multi-line editable text area. - [Plushie.Widget.TextInput](Plushie.Widget.TextInput.md): Text input field -- single-line editable text. - [Plushie.Widget.Themer](Plushie.Widget.Themer.md): Per-subtree theme override -- applies a different theme to a single child widget. - [Plushie.Widget.Toggler](Plushie.Widget.Toggler.md): Toggler -- on/off switch. - [Plushie.Widget.Tooltip](Plushie.Widget.Tooltip.md): Tooltip -- shows a popup tip over child content on hover. - [Plushie.Widget.VerticalSlider](Plushie.Widget.VerticalSlider.md): Vertical slider -- vertical range input. - [Plushie.Widget.WidgetProtocol](Plushie.Widget.WidgetProtocol.md): Protocol for converting typed widget structs to `ui_node()` maps. - [Plushie.Widget.Window](Plushie.Widget.Window.md): Top-level window container node. - Widget Types - [Plushie.Type.A11y](Plushie.Type.A11y.md): Accessibility annotation type for widget nodes. - [Plushie.Type.Alignment](Plushie.Type.Alignment.md): Alignment values for `align_x` and `align_y` widget props. - [Plushie.Type.Anchor](Plushie.Type.Anchor.md): Anchor values for the scrollbar `alignment` prop. - [Plushie.Type.Border](Plushie.Type.Border.md): Border specification for container and widget styling. - [Plushie.Type.Color](Plushie.Type.Color.md): Color type for iced widget properties. - [Plushie.Type.ContentFit](Plushie.Type.ContentFit.md): Scaling mode for the `content_fit` prop on image and SVG widgets. - [Plushie.Type.Direction](Plushie.Type.Direction.md): Orientation for the scrollable `direction` prop and rule widget. - [Plushie.Type.FilterMethod](Plushie.Type.FilterMethod.md): Interpolation mode for the image `filter_method` prop. - [Plushie.Type.Font](Plushie.Type.Font.md): Font specification with family, weight, style, and stretch. - [Plushie.Type.Gradient](Plushie.Type.Gradient.md): Gradient backgrounds for container widgets. - [Plushie.Type.Length](Plushie.Type.Length.md): Size value for the `width` and `height` props on most widgets. - [Plushie.Type.Padding](Plushie.Type.Padding.md): Padding specification with per-side values. - [Plushie.Type.Position](Plushie.Type.Position.md): Placement value for the tooltip `position` prop. - [Plushie.Type.Shadow](Plushie.Type.Shadow.md): Shadow type for widget styling. - [Plushie.Type.Shaping](Plushie.Type.Shaping.md): Text shaping strategy for the text `shaping` prop. - [Plushie.Type.StyleMap](Plushie.Type.StyleMap.md): Per-instance widget styling that crosses the IPC boundary as a plain map. - [Plushie.Type.Theme](Plushie.Type.Theme.md): Built-in iced themes and custom palette support. - [Plushie.Type.Wrapping](Plushie.Type.Wrapping.md): Line-break strategy for the text `wrapping` prop. - Events - [Plushie.Event](Plushie.Event.md): Event types delivered to `update/2`. - [Plushie.Event.AsyncEvent](Plushie.Event.AsyncEvent.md): Results from `Plushie.Command.async/2` tasks. - [Plushie.Event.BuiltinSpecs](Plushie.Event.BuiltinSpecs.md): Canonical event specs for all built-in widget event types. - [Plushie.Event.EffectEvent](Plushie.Event.EffectEvent.md): Platform effect responses (file dialogs, clipboard, etc.). - [Plushie.Event.EventType](Plushie.Event.EventType.md): Behaviour for custom event field types. - [Plushie.Event.ImeEvent](Plushie.Event.ImeEvent.md): Input Method Editor events from subscriptions. - [Plushie.Event.KeyEvent](Plushie.Event.KeyEvent.md): Keyboard press and release events. - [Plushie.Event.ModifiersEvent](Plushie.Event.ModifiersEvent.md): Keyboard modifier state change event. - [Plushie.Event.StreamEvent](Plushie.Event.StreamEvent.md): Intermediate values from `Plushie.Command.stream/2` tasks. - [Plushie.Event.SystemEvent](Plushie.Event.SystemEvent.md): System query responses and platform events. - [Plushie.Event.TimerEvent](Plushie.Event.TimerEvent.md): Timer tick events from `Plushie.Subscription.every/2`. - [Plushie.Event.WidgetCommandError](Plushie.Event.WidgetCommandError.md): Renderer error for a native widget command. - [Plushie.Event.WidgetEvent](Plushie.Event.WidgetEvent.md): Events from interactive widgets (buttons, inputs, sliders, etc.). - [Plushie.Event.WindowEvent](Plushie.Event.WindowEvent.md): Window lifecycle events. - Commands - [Plushie.Command](Plushie.Command.md): Commands describe side effects that `update/2` wants the runtime to perform. - [Plushie.Effect](Plushie.Effect.md): Native platform effect requests. - [Plushie.Subscription](Plushie.Subscription.md): Declarative subscription specifications for Plushie apps. - Animation - [Plushie.Animation](Plushie.Animation.md): Animation system for Plushie. - [Plushie.Animation.Easing](Plushie.Animation.Easing.md): Easing function catalogue for animations and transitions. - [Plushie.Animation.Sequence](Plushie.Animation.Sequence.md): Renderer-side sequential animation chain. - [Plushie.Animation.Spring](Plushie.Animation.Spring.md): Renderer-side physics-based spring descriptor. - [Plushie.Animation.Transition](Plushie.Animation.Transition.md): Renderer-side timed transition descriptor. - [Plushie.Animation.Tween](Plushie.Animation.Tween.md): SDK-side stateful interpolator for model-level animation. - State Helpers - [Plushie.Data](Plushie.Data.md): Query pipeline for in-memory record collections. Pure functions supporting filter, search, sort, group, and pagination. - [Plushie.KeyModifiers](Plushie.KeyModifiers.md): Keyboard modifier state at the time of a key event. - [Plushie.Route](Plushie.Route.md): Client-side routing for multi-view apps. Pure data structure maintaining a navigation stack of `{path, params}` entries. - [Plushie.Selection](Plushie.Selection.md): Selection state for lists and tables. Pure data structure supporting single, multi, and range selection modes. - [Plushie.State](Plushie.State.md): Path-based state management with revision tracking and transactions. - [Plushie.Undo](Plushie.Undo.md): Undo/redo stack for reversible commands. Pure data structure, no processes. - Testing - [Plushie.Test](Plushie.Test.md): Test helpers for Plushie applications. - [Plushie.Test.Backend.Runtime](Plushie.Test.Backend.Runtime.md): Test backend that starts a real Plushie app (Runtime + Bridge). - [Plushie.Test.Case](Plushie.Test.Case.md): ExUnit case template for testing Plushie apps. - [Plushie.Test.Helpers](Plushie.Test.Helpers.md): Test helper functions imported by `Plushie.Test.Case`. - [Plushie.Test.PoolAdapter](Plushie.Test.PoolAdapter.md): Iostream adapter that connects a Bridge to one SessionPool session. - [Plushie.Test.Screenshot](Plushie.Test.Screenshot.md): Test helpers for screenshot golden-file assertions. - [Plushie.Test.Session](Plushie.Test.Session.md): A test session wrapping a running Plushie app. - [Plushie.Test.SessionPool](Plushie.Test.SessionPool.md): Session manager for concurrent test renderer sessions. - [Plushie.Test.SessionPool.Multiplexed](Plushie.Test.SessionPool.Multiplexed.md): State and business logic for the shared-renderer session pool modes. - [Plushie.Test.SessionPool.Transport](Plushie.Test.SessionPool.Transport.md): Transport helpers for `Plushie.Test.SessionPool`. - [Plushie.Test.SessionPool.Windowed](Plushie.Test.SessionPool.Windowed.md): State and business logic for the `:windowed` session pool mode. - [Plushie.Test.TreeHash](Plushie.Test.TreeHash.md): Structural tree hash and golden-file assertions for tests. - [Plushie.Test.WidgetCase](Plushie.Test.WidgetCase.md): ExUnit case template for testing stateful widgets. - Canvas - [Plushie.Canvas.Shape](Plushie.Canvas.Shape.md): Pure builder functions returning typed canvas shape structs. - [Plushie.Canvas.Shape.CanvasImage](Plushie.Canvas.Shape.CanvasImage.md): Canvas raster image shape with position, size, and optional rotation. - [Plushie.Canvas.Shape.CanvasSvg](Plushie.Canvas.Shape.CanvasSvg.md): Canvas SVG shape with position and size. - [Plushie.Canvas.Shape.CanvasText](Plushie.Canvas.Shape.CanvasText.md): Canvas text shape with position, content, and optional font styling. - [Plushie.Canvas.Shape.Circle](Plushie.Canvas.Shape.Circle.md): Canvas circle shape with center, radius, and optional styling. - [Plushie.Canvas.Shape.Clip](Plushie.Canvas.Shape.Clip.md): Clip rectangle for canvas groups. Children are clipped to this region. - [Plushie.Canvas.Shape.Dash](Plushie.Canvas.Shape.Dash.md): Dash pattern for canvas shape strokes. - [Plushie.Canvas.Shape.DragBounds](Plushie.Canvas.Shape.DragBounds.md): Drag constraint bounds for interactive canvas shapes. - [Plushie.Canvas.Shape.Group](Plushie.Canvas.Shape.Group.md): Canvas group -- the only container and interactive unit in the canvas. - [Plushie.Canvas.Shape.HitRect](Plushie.Canvas.Shape.HitRect.md): Explicit hit test rectangle override for interactive canvas shapes. - [Plushie.Canvas.Shape.Line](Plushie.Canvas.Shape.Line.md): Canvas line shape between two points with optional stroke and opacity. - [Plushie.Canvas.Shape.LinearGradient](Plushie.Canvas.Shape.LinearGradient.md): Linear gradient descriptor usable as a canvas fill value. - [Plushie.Canvas.Shape.Path](Plushie.Canvas.Shape.Path.md): Canvas arbitrary path shape built from a list of drawing commands. - [Plushie.Canvas.Shape.Rect](Plushie.Canvas.Shape.Rect.md): Canvas rectangle shape with position, size, and optional styling. - [Plushie.Canvas.Shape.Rotate](Plushie.Canvas.Shape.Rotate.md): Rotation transform for canvas groups. Stored as radians internally. - [Plushie.Canvas.Shape.Scale](Plushie.Canvas.Shape.Scale.md): Scale transform for canvas groups. - [Plushie.Canvas.Shape.ShapeStyle](Plushie.Canvas.Shape.ShapeStyle.md): Style overrides for interactive canvas shape states (hover, pressed). - [Plushie.Canvas.Shape.Stroke](Plushie.Canvas.Shape.Stroke.md): Canvas stroke descriptor with color, width, and optional cap/join/dash. - [Plushie.Canvas.Shape.Translate](Plushie.Canvas.Shape.Translate.md): Translation transform for canvas groups. - DSL - [Plushie.DSL.Buildable](Plushie.DSL.Buildable.md): Behaviour for types that participate in the Plushie DSL block-form pattern. - Protocol - [Plushie.Protocol](Plushie.Protocol.md): Wire protocol between the Elixir runtime and the Rust renderer. - [Plushie.Protocol.Error](Plushie.Protocol.Error.md): Raised when the renderer sends a protocol message the SDK considers invalid. - [Plushie.Protocol.Keys](Plushie.Protocol.Keys.md): Named keyboard key mappings and validation. ## Mix Tasks - [mix compile.plushie_binary](Mix.Tasks.Compile.PlushieBinary.md): Mix compiler that checks for the plushie binary. - [mix plushie.build](Mix.Tasks.Plushie.Build.md): Build the plushie binary and/or WASM renderer from source. - [mix plushie.connect](Mix.Tasks.Plushie.Connect.md): Runs a Plushie application that connects to an already-listening renderer via a Unix domain socket or TCP port. - [mix plushie.download](Mix.Tasks.Plushie.Download.md): Download precompiled plushie artifacts for the current platform. - [mix plushie.gui](Mix.Tasks.Plushie.Gui.md): Starts a Plushie GUI application. - [mix plushie.inspect](Mix.Tasks.Plushie.Inspect.md): Inspect a Plushie app's UI tree. - [mix plushie.replay](Mix.Tasks.Plushie.Replay.md): Replay a `.plushie` automation file with real timing and windows. - [mix plushie.script](Mix.Tasks.Plushie.Script.md): Run `.plushie` automation files. - [mix preflight](Mix.Tasks.Preflight.md): Runs all CI checks locally. Exits with a non-zero status on first failure.