# Toddy v0.3.0 - Table of Contents Native desktop GUIs from Elixir, powered by iced ## Pages - Guides - [Getting started](getting-started.md) - [Tutorial: building a todo app](tutorial.md) - [App behaviour](app-behaviour.md) - [Layout](layout.md) - [Events](events.md) - [Commands and subscriptions](commands.md) - [Effects](effects.md) - [Scoped Widget IDs](scoped-ids.md) - [Theming](theming.md) - [Testing](testing.md) - Advanced - [Composition patterns](composition-patterns.md) - [Accessibility](accessibility.md) - [Writing Widget Extensions](extensions.md) - About - [Toddy Examples](readme.md) - [Changelog](changelog.md) ## Modules - [AsyncFetch](AsyncFetch.md): Async command example -- a button that triggers background work. - [Catalog](Catalog.md): Comprehensive widget catalog exercising every real iced widget type in Toddy. - [Clock](Clock.md): Clock example showing the current time, updated every second. - [ColorPicker](ColorPicker.md): HSV color picker using the canvas widget as a custom interactive control. - [Counter](Counter.md): Minimal counter example. - [Notes](Notes.md): Notes application demonstrating all 5 state helpers working together. - [Shortcuts](Shortcuts.md): Keyboard shortcuts example showing a scrollable log of key presses. - [Toddy.RendererEnv](Toddy.RendererEnv.md): Builds a safe, whitelisted environment for the renderer binary. - [Toddy.Runtime.Commands](Toddy.Runtime.Commands.md): Command execution engine for the Toddy runtime. - [Toddy.Runtime.Subscriptions](Toddy.Runtime.Subscriptions.md): Subscription lifecycle management for the Toddy runtime. - [Toddy.Runtime.Windows](Toddy.Runtime.Windows.md): Window lifecycle management for the Toddy runtime. - [Todo](Todo.md): To-do list with add, toggle, delete, and filter. - App Framework - [Toddy](Toddy.md): Native desktop GUIs from Elixir, powered by iced. - [Toddy.App](Toddy.App.md): Behaviour for Toddy apps following the Elm architecture. - [Toddy.Binary](Toddy.Binary.md): Resolves the path to the toddy binary. - [Toddy.Bridge](Toddy.Bridge.md): Port-based bridge to the toddy renderer process. - [Toddy.DevServer](Toddy.DevServer.md): File watcher and recompiler for dev-mode live reload. - [Toddy.Runtime](Toddy.Runtime.md): Core lifecycle GenServer for Toddy applications. - UI Builder - [Toddy.Iced](Toddy.Iced.md): Strict parity layer for iced widgets. - [Toddy.Iced.Encode](Toddy.Iced.Encode.md): Protocol for encoding Elixir values to wire-format representations. - [Toddy.Iced.Widget](Toddy.Iced.Widget.md): Protocol for converting typed widget structs to `ui_node()` maps. - [Toddy.Tree](Toddy.Tree.md): Utilities for working with Toddy UI trees. - [Toddy.UI](Toddy.UI.md): Ergonomic builder layer for Toddy UI trees. - Widgets - [Toddy.Iced.Widget.Build](Toddy.Iced.Widget.Build.md): Internal helpers for widget `to_node/1` implementations. - [Toddy.Iced.Widget.Button](Toddy.Iced.Widget.Button.md): Button -- clickable widget that emits `%Widget{type: :click, id: id}` events. - [Toddy.Iced.Widget.Canvas](Toddy.Iced.Widget.Canvas.md): Canvas for drawing shapes, organized into named layers. - [Toddy.Iced.Widget.Checkbox](Toddy.Iced.Widget.Checkbox.md): Checkbox -- toggleable boolean input. - [Toddy.Iced.Widget.Column](Toddy.Iced.Widget.Column.md): Column layout -- arranges children vertically. - [Toddy.Iced.Widget.ComboBox](Toddy.Iced.Widget.ComboBox.md): Combo box -- searchable dropdown with free-form text input. - [Toddy.Iced.Widget.Container](Toddy.Iced.Widget.Container.md): Container layout -- wraps a single child with padding, sizing, and styling. - [Toddy.Iced.Widget.Float](Toddy.Iced.Widget.Float.md): Floating overlay -- positions child with optional translation and scaling. - [Toddy.Iced.Widget.Grid](Toddy.Iced.Widget.Grid.md): Grid layout -- arranges children in a fixed-column grid. - [Toddy.Iced.Widget.Image](Toddy.Iced.Widget.Image.md): Image display -- renders a raster image from a file path or an in-memory handle. - [Toddy.Iced.Widget.KeyedColumn](Toddy.Iced.Widget.KeyedColumn.md): Keyed column layout -- arranges children vertically with stable identity keys. - [Toddy.Iced.Widget.Markdown](Toddy.Iced.Widget.Markdown.md): Markdown display -- renders parsed markdown content. - [Toddy.Iced.Widget.MouseArea](Toddy.Iced.Widget.MouseArea.md): Mouse area -- captures mouse events on child content. - [Toddy.Iced.Widget.Overlay](Toddy.Iced.Widget.Overlay.md): Overlay container -- positions the second child as a floating overlay relative to the first child (anchor). - [Toddy.Iced.Widget.PaneGrid](Toddy.Iced.Widget.PaneGrid.md): Pane grid -- resizable tiled panes. - [Toddy.Iced.Widget.PickList](Toddy.Iced.Widget.PickList.md): Pick list -- dropdown selection. - [Toddy.Iced.Widget.Pin](Toddy.Iced.Widget.Pin.md): Pin layout -- positions child at absolute coordinates. - [Toddy.Iced.Widget.ProgressBar](Toddy.Iced.Widget.ProgressBar.md): Progress bar -- displays progress within a range. - [Toddy.Iced.Widget.QrCode](Toddy.Iced.Widget.QrCode.md): QR Code -- renders a QR code from a data string. - [Toddy.Iced.Widget.Radio](Toddy.Iced.Widget.Radio.md): Radio button -- one-of-many selection. - [Toddy.Iced.Widget.Responsive](Toddy.Iced.Widget.Responsive.md): Responsive layout -- adapts to available size by reporting resize events. - [Toddy.Iced.Widget.RichText](Toddy.Iced.Widget.RichText.md): Rich text display with individually styled spans. - [Toddy.Iced.Widget.Row](Toddy.Iced.Widget.Row.md): Row layout -- arranges children horizontally. - [Toddy.Iced.Widget.Rule](Toddy.Iced.Widget.Rule.md): Horizontal or vertical rule (divider line). - [Toddy.Iced.Widget.Scrollable](Toddy.Iced.Widget.Scrollable.md): Scrollable container -- wraps child content in a scrollable viewport. - [Toddy.Iced.Widget.Sensor](Toddy.Iced.Widget.Sensor.md): Sensor -- detects visibility and size changes on child content. - [Toddy.Iced.Widget.Slider](Toddy.Iced.Widget.Slider.md): Slider -- horizontal range input. - [Toddy.Iced.Widget.Space](Toddy.Iced.Widget.Space.md): Empty space -- invisible spacer widget. - [Toddy.Iced.Widget.Stack](Toddy.Iced.Widget.Stack.md): Stack layout -- layers children on top of each other. - [Toddy.Iced.Widget.Svg](Toddy.Iced.Widget.Svg.md): SVG display -- renders a vector image from a file path. - [Toddy.Iced.Widget.Table](Toddy.Iced.Widget.Table.md): Data table -- composite widget built from columns, rows, and scrollable containers. - [Toddy.Iced.Widget.Text](Toddy.Iced.Widget.Text.md): Text display -- renders static text. - [Toddy.Iced.Widget.TextEditor](Toddy.Iced.Widget.TextEditor.md): Text editor -- multi-line editable text area. - [Toddy.Iced.Widget.TextInput](Toddy.Iced.Widget.TextInput.md): Text input field -- single-line editable text. - [Toddy.Iced.Widget.Themer](Toddy.Iced.Widget.Themer.md): Per-subtree theme override -- applies a different theme to child widgets. - [Toddy.Iced.Widget.Toggler](Toddy.Iced.Widget.Toggler.md): Toggler -- on/off switch. - [Toddy.Iced.Widget.Tooltip](Toddy.Iced.Widget.Tooltip.md): Tooltip -- shows a popup tip over child content on hover. - [Toddy.Iced.Widget.VerticalSlider](Toddy.Iced.Widget.VerticalSlider.md): Vertical slider -- vertical range input. - Widget Types - [Toddy.Iced.A11y](Toddy.Iced.A11y.md): Accessibility annotation type for widget nodes. - [Toddy.Iced.Alignment](Toddy.Iced.Alignment.md): Alignment values for `align_x` and `align_y` widget props. - [Toddy.Iced.Anchor](Toddy.Iced.Anchor.md): Anchor values for the scrollbar `alignment` prop. - [Toddy.Iced.Border](Toddy.Iced.Border.md): Border specification for container and widget styling. - [Toddy.Iced.Color](Toddy.Iced.Color.md): Color type for iced widget properties. - [Toddy.Iced.ContentFit](Toddy.Iced.ContentFit.md): Scaling mode for the `content_fit` prop on image and SVG widgets. - [Toddy.Iced.Direction](Toddy.Iced.Direction.md): Orientation for the scrollable `direction` prop and rule widget. - [Toddy.Iced.FilterMethod](Toddy.Iced.FilterMethod.md): Interpolation mode for the image `filter_method` prop. - [Toddy.Iced.Font](Toddy.Iced.Font.md): Font descriptor for the text widget `font` prop and Settings `default_font`. - [Toddy.Iced.Gradient](Toddy.Iced.Gradient.md): Gradient backgrounds for container widgets. - [Toddy.Iced.Length](Toddy.Iced.Length.md): Size value for the `width` and `height` props on most widgets. - [Toddy.Iced.Padding](Toddy.Iced.Padding.md): Spacing value for the `padding` prop on containers, buttons, and text inputs. - [Toddy.Iced.Position](Toddy.Iced.Position.md): Placement value for the tooltip `position` prop. - [Toddy.Iced.Shadow](Toddy.Iced.Shadow.md): Shadow type for widget styling. - [Toddy.Iced.Shaping](Toddy.Iced.Shaping.md): Text shaping strategy for the text `shaping` prop. - [Toddy.Iced.StyleMap](Toddy.Iced.StyleMap.md): Per-instance widget styling that crosses the IPC boundary as a plain map. - [Toddy.Iced.Theme](Toddy.Iced.Theme.md): Built-in iced themes and custom palette support. - [Toddy.Iced.Wrapping](Toddy.Iced.Wrapping.md): Line-break strategy for the text `wrapping` prop. - Events - [Toddy.Event](Toddy.Event.md): Event types delivered to `update/2`. - [Toddy.Event.Async](Toddy.Event.Async.md): Results from `Toddy.Command.async/2` tasks. - [Toddy.Event.Canvas](Toddy.Event.Canvas.md): Canvas widget interaction events. - [Toddy.Event.Effect](Toddy.Event.Effect.md): Platform effect responses (file dialogs, clipboard, etc.). - [Toddy.Event.Ime](Toddy.Event.Ime.md): Input Method Editor events from subscriptions. - [Toddy.Event.Key](Toddy.Event.Key.md): Keyboard press and release events. - [Toddy.Event.Modifiers](Toddy.Event.Modifiers.md): Keyboard modifier state change event. - [Toddy.Event.Mouse](Toddy.Event.Mouse.md): Global mouse events from subscriptions. - [Toddy.Event.MouseArea](Toddy.Event.MouseArea.md): Mouse area widget events (right-click, hover, etc.). - [Toddy.Event.Pane](Toddy.Event.Pane.md): Pane grid interaction events. - [Toddy.Event.Sensor](Toddy.Event.Sensor.md): Sensor (resize observer) events. - [Toddy.Event.Stream](Toddy.Event.Stream.md): Intermediate values from `Toddy.Command.stream/2` tasks. - [Toddy.Event.System](Toddy.Event.System.md): System query responses and platform events. - [Toddy.Event.Timer](Toddy.Event.Timer.md): Timer tick events from `Toddy.Subscription.every/2`. - [Toddy.Event.Touch](Toddy.Event.Touch.md): Touch events from subscriptions. - [Toddy.Event.Widget](Toddy.Event.Widget.md): Events from interactive widgets (buttons, inputs, sliders, etc.). - [Toddy.Event.Window](Toddy.Event.Window.md): Window lifecycle events. - Commands - [Toddy.Command](Toddy.Command.md): Commands describe side effects that `update/2` wants the runtime to perform. - [Toddy.Effects](Toddy.Effects.md): Native platform effect requests. - [Toddy.Subscription](Toddy.Subscription.md): Declarative subscription specifications for Toddy apps. - State Helpers - [Toddy.Animation](Toddy.Animation.md): Server-side animation interpolation and easing functions. - [Toddy.Data](Toddy.Data.md): Query pipeline for in-memory record collections. Pure functions supporting filter, search, sort, group, and pagination. - [Toddy.KeyModifiers](Toddy.KeyModifiers.md): Keyboard modifier state at the time of a key event. - [Toddy.Route](Toddy.Route.md): Client-side routing for multi-view apps. Pure data structure maintaining a navigation stack of `{path, params}` entries. - [Toddy.Selection](Toddy.Selection.md): Selection state for lists and tables. Pure data structure supporting single, multi, and range selection modes. - [Toddy.State](Toddy.State.md): Path-based state management with revision tracking and transactions. - [Toddy.Undo](Toddy.Undo.md): Undo/redo stack for reversible commands. Pure data structure, no processes. - Testing - [Toddy.Test](Toddy.Test.md): Test helpers for Toddy applications. - [Toddy.Test.Backend](Toddy.Test.Backend.md): Behaviour for test backends. - [Toddy.Test.Backend.CommandProcessor](Toddy.Test.Backend.CommandProcessor.md): Synchronous command processor shared by all test backends. - [Toddy.Test.Backend.EventDecoder](Toddy.Test.Backend.EventDecoder.md): Decodes wire-format event maps into Elixir event structs. - [Toddy.Test.Backend.Headless](Toddy.Test.Backend.Headless.md): Headless test backend using the Rust renderer with iced_test Simulator. - [Toddy.Test.Backend.Pooled](Toddy.Test.Backend.Pooled.md): Test backend that shares a single renderer process across tests. - [Toddy.Test.Backend.RendererBase](Toddy.Test.Backend.RendererBase.md): Shared implementation for renderer-backed test backends (headless, full). - [Toddy.Test.Backend.Windowed](Toddy.Test.Backend.Windowed.md): Windowed test backend with real iced windows. - [Toddy.Test.Case](Toddy.Test.Case.md): ExUnit case template for testing Toddy apps. - [Toddy.Test.Element](Toddy.Test.Element.md): Represents a widget element found in the UI tree during testing. - [Toddy.Test.Helpers](Toddy.Test.Helpers.md): Test helper functions imported by `Toddy.Test.Case`. - [Toddy.Test.Screenshot](Toddy.Test.Screenshot.md): Pixel screenshot for visual regression testing. - [Toddy.Test.Script](Toddy.Test.Script.md): Parser for `.toddy` test scripts. - [Toddy.Test.Script.Runner](Toddy.Test.Script.Runner.md): Executes parsed `.toddy` scripts. - [Toddy.Test.Session](Toddy.Test.Session.md): A test session wrapping a backend module and its process. - [Toddy.Test.SessionPool](Toddy.Test.SessionPool.md): Shared renderer process for concurrent test sessions. - [Toddy.Test.TreeHash](Toddy.Test.TreeHash.md): Structural tree hash for regression testing. - Extensions - [Toddy.Canvas.Shape](Toddy.Canvas.Shape.md): Convenience builders for canvas shape descriptors. - [Toddy.Extension](Toddy.Extension.md): Macro-based DSL for declaring Toddy widget extensions. - Protocol - [Toddy.Protocol](Toddy.Protocol.md): Wire protocol between the Elixir runtime and the Rust renderer. ## Mix Tasks - [mix compile.toddy_binary](Mix.Tasks.Compile.ToddyBinary.md): Mix compiler that checks for the toddy binary. - [mix preflight](Mix.Tasks.Preflight.md): Runs all CI checks locally. Exits with a non-zero status on first failure. - [mix toddy.build](Mix.Tasks.Toddy.Build.md): Build the toddy binary. - [mix toddy.download](Mix.Tasks.Toddy.Download.md): Download a precompiled toddy binary for the current platform. - [mix toddy.gui](Mix.Tasks.Toddy.Gui.md): Starts a Toddy GUI application. - [mix toddy.inspect](Mix.Tasks.Toddy.Inspect.md): Inspect a Toddy app's initial view tree without a renderer. - [mix toddy.replay](Mix.Tasks.Toddy.Replay.md): Replay a `.toddy` script with real timing and windows. - [mix toddy.script](Mix.Tasks.Toddy.Script.md): Run `.toddy` test scripts.