# Plushie v0.7.1 - 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.

