Modules
Static AshUi extension and runtime surface.
A one-shot browser affordance emitted by a successful Ash action.
Declarative, one-shot DOM effects for Ash actions.
A keyed collection in the render algebra — structurally identical to
Phoenix.LiveView.Comprehension. AshUi always emits keyed entries
(has_key?: true) and never emits streams: collections are keyed
comprehensions over resource state by model, permanently — stream and
LiveComponents are excluded from this algebra by design, not omission.
The differential kernel over AshUi.Rendered: produces
LiveView-wire-compatible diff maps and retained fingerprint state.
Expression entry point for AshUi constructor expressions.
Shared compiler from source expression syntax to Ash-native expressions.
Canonical custom expressions that consuming applications register with Ash.
Markdown source -> sanitized AshUi.SafeHTML.
Subscription edges for what a rendered record DERIVES: "whatever a page reads, it subscribes to".
Ash notifier that forwards resource notifications into AshUi's notification-native read match index.
Registration-free event binding resolution over the compiled patch table.
Compiles an AshUi resource's :view calculation into a
AshUi.Patch.Table: slots with stable addresses + a
field→slots propagation index + keyed list anchors + child tables for
nested render(Resource, input).
ONE dispatch semantics, backing-blind (DESIGN.md §5): run the target instance's OWN action — arguments, validations, changes, never bypassed — and persist through the instance's data layer. The storage seam is the only place backing appears
THE entry-key function for keyed collections — one identity rule shared by the live renderer and the binding resolver, implementing Ash resource identity correctly
Change derivation over a compiled AshUi.Patch.Table.
Target-specific static skeleton compiled from a resource's lowered view:
interleaved static markup + ordered dynamic refs, the exact
statics/dynamics contract the host bridge's Rendered structs consume.
Compiled patch table for one resource view: every dynamic position in the
lowered view becomes a slot with a stable address, an evaluator, and the
dependency field paths that invalidate it; the propagation index inverts
dependencies to slot ids. Nested render(Resource, input) compiles the
child resource's own table under an address prefix.
The O(1) dispatch reload contract — the ONE canonical policy for what a
bridge reloads after a dispatch. Every transport bridge calls
after_dispatch/4; none owns a private copy of the policy, so a new
target cannot drift from it.
Builds %AshUi.Rendered{} structures straight from a compiled
patch table — statics from the table's skeleton, dynamics from evaluator
closures over the CURRENT record. The neutral differential contract uses
nil-based change tracking: a dynamic whose address is not in the
changed set (AshUi.Patch.Runtime.changed_addresses/3) returns
nil, and the AshUi.Diff kernel decides the minimal keyed patch.
This is the ONE runtime emission path —
transports convert or diff its output, never re-emit.
Adapter seam for lowering AshUi's neutral render protocol to a host target.
Host-neutral HTML target lowering for AshUi.RenderTree.
The default render target, preserving AshUi's neutral DOM vocabulary.
Adapter-neutral rendered output produced from a semantic view tree.
Render-tree node addressing: keyed nodes use {:key, key} segments,
unkeyed nodes match positionally with {:index, index} segments. These
paths are the stable addresses the patch ops target and the id scheme the
HTML renderer and binding collector already emit.
The render algebra's node: statics interleaved with a dynamic function,
identified by a fingerprint. Structurally identical to
Phoenix.LiveView.Rendered (phoenix_live_view 1.1.x) so transport
adapters can convert by struct rename alone; the shape is a frozen
contract verified against LiveView as an executable oracle.
Materializes a rendered structure to iodata — the SAME statics and dynamics the differential engine diffs, zipped without change tracking. Transports use this for full-document bodies so materialization and diffing can never disagree.
Normalized resource contract consumed by the runtime and adapters.
Build-side stylesheet GENERATOR for VS Code color-theme JSON (DESIGN.md §9).
Ash type for authored AshUi render-tree values.
Compile-time [part=] coverage over a document root's render closure
(DESIGN.md §9).
Compile-time stylesheet resolution discipline (DESIGN.md §9).