# Plushie v0.7.2 - 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) - [WASM Deployment](17-wasm-deployment.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 Canvas Elements](custom-canvas-elements.md) - [Custom Types](custom-types.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.Canvas.Angle](Plushie.Canvas.Angle.md): Angle type for canvas rotation and arc parameters. - [Plushie.Canvas.Circle](Plushie.Canvas.Circle.md): Canvas circle element with center, radius, and optional styling. - [Plushie.Canvas.Clip](Plushie.Canvas.Clip.md): Clip rectangle for canvas groups. Children are clipped to this region. - [Plushie.Canvas.Dash](Plushie.Canvas.Dash.md): Dash pattern for canvas shape strokes. - [Plushie.Canvas.DragBounds](Plushie.Canvas.DragBounds.md): Drag constraint bounds for interactive canvas shapes. - [Plushie.Canvas.Element](Plushie.Canvas.Element.md): Behaviour for canvas elements. - [Plushie.Canvas.Gradient](Plushie.Canvas.Gradient.md): Linear gradient descriptor usable as a canvas fill value. - [Plushie.Canvas.Group](Plushie.Canvas.Group.md): Canvas group: a structural container for transforms, clips, and visual grouping. - [Plushie.Canvas.HitRect](Plushie.Canvas.HitRect.md): Explicit hit test rectangle override for interactive canvas shapes. - [Plushie.Canvas.Image](Plushie.Canvas.Image.md): Canvas raster image element with position, size, and optional rotation. - [Plushie.Canvas.Interactive](Plushie.Canvas.Interactive.md): Interactive canvas element. - [Plushie.Canvas.Layer](Plushie.Canvas.Layer.md): Canvas layer: a named container that groups shapes for independent caching on the renderer side. - [Plushie.Canvas.Line](Plushie.Canvas.Line.md): Canvas line element between two points with optional stroke and opacity. - [Plushie.Canvas.Path](Plushie.Canvas.Path.md): Canvas arbitrary path element built from a list of drawing commands. - [Plushie.Canvas.Rect](Plushie.Canvas.Rect.md): Canvas rectangle element with position, size, and optional styling. - [Plushie.Canvas.ShapeStyle](Plushie.Canvas.ShapeStyle.md): Style overrides for interactive canvas shape states (hover, pressed). - [Plushie.Canvas.Stroke](Plushie.Canvas.Stroke.md): Canvas stroke descriptor with color, width, and optional cap/join/dash. - [Plushie.Canvas.Svg](Plushie.Canvas.Svg.md): Canvas SVG element with position and size. - [Plushie.Canvas.Text](Plushie.Canvas.Text.md): Canvas text element with position, content, and optional font styling. - [Plushie.Canvas.Transform.Rotate](Plushie.Canvas.Transform.Rotate.md): Rotation transform for canvas groups. Stores degrees (wire protocol convention). - [Plushie.Canvas.Transform.Scale](Plushie.Canvas.Transform.Scale.md): Scale transform for canvas groups. - [Plushie.Canvas.Transform.Translate](Plushie.Canvas.Transform.Translate.md): Translation transform for canvas groups. - [Plushie.Command.Image](Plushie.Command.Image.md): In-memory image commands: create, update, delete, list, and clear. - [Plushie.Command.Scroll](Plushie.Command.Scroll.md): Scroll commands: absolute, relative, and snap positioning. - [Plushie.Command.Text](Plushie.Command.Text.md): Text input commands: selection and cursor movement. - [Plushie.Command.Window](Plushie.Command.Window.md): Window operation commands. - [Plushie.Command.WindowQuery](Plushie.Command.WindowQuery.md): Window query commands. Results arrive as `%Plushie.Event.SystemEvent{}` in `update/2`. - [Plushie.Effect.Result](Plushie.Effect.Result.md): Typed results for platform effect responses. - [Plushie.Effect.Result.Cancelled](Plushie.Effect.Result.Cancelled.md): The user dismissed a dialog. - [Plushie.Effect.Result.ClipboardCleared](Plushie.Effect.Result.ClipboardCleared.md): Clipboard was cleared. - [Plushie.Effect.Result.ClipboardHtml](Plushie.Effect.Result.ClipboardHtml.md): Clipboard HTML was read. `alt_text` may be nil. - [Plushie.Effect.Result.ClipboardText](Plushie.Effect.Result.ClipboardText.md): Clipboard text was read. - [Plushie.Effect.Result.ClipboardWritten](Plushie.Effect.Result.ClipboardWritten.md): Clipboard write completed. - [Plushie.Effect.Result.DirectoriesSelected](Plushie.Effect.Result.DirectoriesSelected.md): Multiple directories were selected from a multi-directory picker. - [Plushie.Effect.Result.DirectorySelected](Plushie.Effect.Result.DirectorySelected.md): A directory was selected from a directory picker. - [Plushie.Effect.Result.Error](Plushie.Effect.Result.Error.md): A platform error occurred. `message` is renderer-supplied. - [Plushie.Effect.Result.FileOpened](Plushie.Effect.Result.FileOpened.md): A file was selected from an open-file dialog. - [Plushie.Effect.Result.FileSaved](Plushie.Effect.Result.FileSaved.md): A file path was chosen in a save dialog. - [Plushie.Effect.Result.FilesOpened](Plushie.Effect.Result.FilesOpened.md): Multiple files were selected from a multi-file open dialog. - [Plushie.Effect.Result.NotificationShown](Plushie.Effect.Result.NotificationShown.md): An OS notification was shown. - [Plushie.Effect.Result.RendererRestarted](Plushie.Effect.Result.RendererRestarted.md): The renderer restarted while this effect was in flight. - [Plushie.Effect.Result.Timeout](Plushie.Effect.Result.Timeout.md): The effect did not receive a response within its timeout. - [Plushie.Effect.Result.Unsupported](Plushie.Effect.Result.Unsupported.md): The backend does not support this effect. - [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.ScopedId](Plushie.ScopedId.md): Structured representation of a scoped widget ID. - [Plushie.Table.Cell](Plushie.Table.Cell.md): A cell inside a `Plushie.Table.Row`. - [Plushie.Table.Element](Plushie.Table.Element.md): Behaviour for table structural elements. - [Plushie.Table.Row](Plushie.Table.Row.md): A row inside a `table` widget. - [Plushie.Transport](Plushie.Transport.md): Behaviour for renderer transport backends. - [Plushie.Transport.Framing](Plushie.Transport.Framing.md): Frame encoding and decoding for the plushie wire protocol. - [Plushie.Transport.IOStream](Plushie.Transport.IOStream.md): Transport implementation for iostream adapter connections. - [Plushie.Transport.Port](Plushie.Transport.Port.md): Transport implementation for Erlang Port-based connections. - [Plushie.Tree.Node](Plushie.Tree.Node.md): Protocol for converting typed structs to `ui_node()` maps. - [Plushie.UI.WidgetSet](Plushie.UI.WidgetSet.md): Macro for creating widget set modules that override built-in widget macros. - [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.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}` 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.RichText.Span](Plushie.Widget.RichText.Span.md): A typed span for `Plushie.Widget.RichText`. - [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 with children-based rows for efficient diffing. - [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.Window](Plushie.Widget.Window.md): Top-level window container node. - Types - [Plushie.Type](Plushie.Type.md): Types for widget fields and events. - [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.Any](Plushie.Type.Any.md): Accepts any value without validation. No guard is generated. - [Plushie.Type.Atom](Plushie.Type.Atom.md): Atom type. Accepts any atom (including `nil`). - [Plushie.Type.Boolean](Plushie.Type.Boolean.md): Boolean type. Accepts `true` and `false` only. - [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.Composite](Plushie.Type.Composite.md): Behaviour for composite type modules. - [Plushie.Type.Composite.Enum](Plushie.Type.Composite.Enum.md): Composite type for a fixed set of values. - [Plushie.Type.Composite.List](Plushie.Type.Composite.List.md): Composite type for typed lists. - [Plushie.Type.Composite.Map](Plushie.Type.Composite.Map.md): Composite type for typed maps. - [Plushie.Type.Composite.Tuple](Plushie.Type.Composite.Tuple.md): Composite type for fixed-size typed tuples. - [Plushie.Type.Composite.Union](Plushie.Type.Composite.Union.md): Composite type for unions. - [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.Float](Plushie.Type.Float.md): Numeric type. Accepts both integers and floats (any `number()`). - [Plushie.Type.Font](Plushie.Type.Font.md): Font specification with family, weight, style, and stretch. - [Plushie.Type.Gradient](Plushie.Type.Gradient.md): Gradient type for container and style backgrounds. - [Plushie.Type.Integer](Plushie.Type.Integer.md): Integer type. Accepts Elixir integers only. - [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.Length](Plushie.Type.Length.md): Size value for the `width` and `height` props on most widgets. - [Plushie.Type.LineHeight](Plushie.Type.LineHeight.md): Line height for text widgets. - [Plushie.Type.Map](Plushie.Type.Map.md): Untyped map. Accepts any map without validating keys or values. - [Plushie.Type.MouseButton](Plushie.Type.MouseButton.md): Event field type for mouse buttons. - [Plushie.Type.Padding](Plushie.Type.Padding.md): Padding specification with per-side values. - [Plushie.Type.Pointer](Plushie.Type.Pointer.md): Event field types for unified pointer events. - [Plushie.Type.Position](Plushie.Type.Position.md): Placement value for the tooltip `position` prop. - [Plushie.Type.Range](Plushie.Type.Range.md): Validates `{min, max}` numeric range tuples. - [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.String](Plushie.Type.String.md): String type. Accepts binaries and atoms (atoms are coerced to strings via `Atom.to_string/1`). - [Plushie.Type.Style](Plushie.Type.Style.md): Union type for widget styling: a preset atom or a `StyleMap` struct. - [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.task/2` tasks. - [Plushie.Event.BuiltinSpecs](Plushie.Event.BuiltinSpecs.md): Canonical event specs for all built-in widget event types. - [Plushie.Event.CommandError](Plushie.Event.CommandError.md): Renderer error for a command. - [Plushie.Event.Diagnostic](Plushie.Event.Diagnostic.md): Typed diagnostic variants emitted by the renderer. - [Plushie.Event.Diagnostic.A11yRefUnresolved](Plushie.Event.Diagnostic.A11yRefUnresolved.md): A cross-widget a11y reference did not resolve to any declared widget. - [Plushie.Event.Diagnostic.BufferOverflow](Plushie.Event.Diagnostic.BufferOverflow.md): A single wire message exceeded the protocol's 64 MiB per-message size cap. - [Plushie.Event.Diagnostic.ContentLengthExceeded](Plushie.Event.Diagnostic.ContentLengthExceeded.md): A text-like content prop exceeded its per-widget byte cap and was truncated. - [Plushie.Event.Diagnostic.DashCacheCapExceeded](Plushie.Event.Diagnostic.DashCacheCapExceeded.md): The leaked dash-segment cache reached its entry cap. - [Plushie.Event.Diagnostic.DispatchLoopExceeded](Plushie.Event.Diagnostic.DispatchLoopExceeded.md): The runtime's command dispatch chain exceeded the configured depth limit, indicating an `update` loop that keeps returning a command whose delivered event produces another command. - [Plushie.Event.Diagnostic.DuplicateId](Plushie.Event.Diagnostic.DuplicateId.md): A widget ID collided with one already declared within the same window scope. - [Plushie.Event.Diagnostic.EmitterCoalesceCapExceeded](Plushie.Event.Diagnostic.EmitterCoalesceCapExceeded.md): The renderer-lib event coalesce map hit its cap and was force-flushed. - [Plushie.Event.Diagnostic.EmptyId](Plushie.Event.Diagnostic.EmptyId.md): A view declared a widget with an empty ID where a non-empty one was expected. - [Plushie.Event.Diagnostic.FontCacheCapExceeded](Plushie.Event.Diagnostic.FontCacheCapExceeded.md): The leaked font-family-name cache reached its entry cap. - [Plushie.Event.Diagnostic.FontCapExceeded](Plushie.Event.Diagnostic.FontCapExceeded.md): Inline fonts declared in Settings exceeded the process-wide cap. - [Plushie.Event.Diagnostic.FontFamilyNotFound](Plushie.Event.Diagnostic.FontFamilyNotFound.md): A font family from default_font or its fallback chain did not resolve. - [Plushie.Event.Diagnostic.InvalidSettings](Plushie.Event.Diagnostic.InvalidSettings.md): The Settings payload failed typed deny_unknown_fields validation. - [Plushie.Event.Diagnostic.MissingAccessibleName](Plushie.Event.Diagnostic.MissingAccessibleName.md): A widget that requires a screen-reader-announcable name was declared without one. - [Plushie.Event.Diagnostic.MultipleTopLevelWindows](Plushie.Event.Diagnostic.MultipleTopLevelWindows.md): The tree holds more than one top-level window child. - [Plushie.Event.Diagnostic.PropRangeExceeded](Plushie.Event.Diagnostic.PropRangeExceeded.md): A numeric prop was outside its declared range and was clamped. - [Plushie.Event.Diagnostic.PropTypeMismatch](Plushie.Event.Diagnostic.PropTypeMismatch.md): A prop value had an unexpected JSON type. - [Plushie.Event.Diagnostic.PropUnknown](Plushie.Event.Diagnostic.PropUnknown.md): A widget carried a prop name not in its declared schema. - [Plushie.Event.Diagnostic.RequiredWidgetsMissing](Plushie.Event.Diagnostic.RequiredWidgetsMissing.md): The Settings handshake declared native widget names the renderer does not know about. - [Plushie.Event.Diagnostic.SvgDecodeTimeout](Plushie.Event.Diagnostic.SvgDecodeTimeout.md): SVG decode exceeded its wall-clock budget. - [Plushie.Event.Diagnostic.SvgParseError](Plushie.Event.Diagnostic.SvgParseError.md): SVG decode returned a parse error. - [Plushie.Event.Diagnostic.TooManyDuplicates](Plushie.Event.Diagnostic.TooManyDuplicates.md): Duplicate-ID collection stopped at the configured cap. - [Plushie.Event.Diagnostic.TreeDepthExceeded](Plushie.Event.Diagnostic.TreeDepthExceeded.md): Tree traversal reached the global depth cap; the subtree was skipped. - [Plushie.Event.Diagnostic.UnknownMessageType](Plushie.Event.Diagnostic.UnknownMessageType.md): A wire message carried a `type` field the SDK does not recognise. - [Plushie.Event.Diagnostic.UnknownWindow](Plushie.Event.Diagnostic.UnknownWindow.md): A subscription was declared for a window not present in the tree. - [Plushie.Event.Diagnostic.UnrecognizedWidgetPlaceholder](Plushie.Event.Diagnostic.UnrecognizedWidgetPlaceholder.md): A __widget__ placeholder in the tree had no registered expander. - [Plushie.Event.Diagnostic.UpdatePanicked](Plushie.Event.Diagnostic.UpdatePanicked.md): The update function panicked and was caught by the runtime. The model is reverted to the last-good snapshot so the app keeps running; the consecutive counter is shared with `ViewPanicked` so the frozen-UI overlay surfaces after enough total panics across either callback. - [Plushie.Event.Diagnostic.ViewPanicked](Plushie.Event.Diagnostic.ViewPanicked.md): The view function panicked and was caught by the runtime's safety net. - [Plushie.Event.Diagnostic.WidgetIdInvalid](Plushie.Event.Diagnostic.WidgetIdInvalid.md): A user-authored widget ID violated the canonical ID ruleset. - [Plushie.Event.Diagnostic.WidgetIdTypeCollision](Plushie.Event.Diagnostic.WidgetIdTypeCollision.md): A composite widget ID was registered against two different widget types. - [Plushie.Event.Diagnostic.WidgetPanic](Plushie.Event.Diagnostic.WidgetPanic.md): A non-trusted widget panicked inside the registry's catch_unwind firewall. - [Plushie.Event.DiagnosticMessage](Plushie.Event.DiagnosticMessage.md): A structured diagnostic delivered through the renderer's diagnostic wire channel. - [Plushie.Event.EffectEvent](Plushie.Event.EffectEvent.md): Platform effect responses (file dialogs, clipboard, notifications). - [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.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. - Protocol - [Plushie.Protocol](Plushie.Protocol.md): Wire protocol between the Elixir runtime and the Rust renderer. - [Plushie.Protocol.Decode](Plushie.Protocol.Decode.md): Wire protocol decoding. - [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. - [Plushie.Protocol.ProtocolVersionMismatchError](Plushie.Protocol.ProtocolVersionMismatchError.md): Raised when the renderer's advertised protocol version differs from the version the SDK was built against. - Exceptions - [Plushie.RendererExitError](Plushie.RendererExitError.md): Structured renderer exit reason for handle_renderer_exit/2. - [Plushie.Transport.BufferOverflowError](Plushie.Transport.BufferOverflowError.md): Raised when a single wire frame exceeds the protocol's per-message size cap (64 MiB). ## 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 renderer 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.