FS.Skia.UI.Controls.Elmish Namespace
| Type/Module | Description |
|
Pure, total bridge between the adapter's effect-list command model (`AdapterCommand<'msg>`) and Elmish `Cmd<'msg>` (068, additive). |
|
|
Public contract type exposed by this FS.Skia.UI package. |
|
|
Public contract type exposed by this FS.Skia.UI package. |
|
|
Public contract type exposed by this FS.Skia.UI package. |
|
|
Public contract type exposed by this FS.Skia.UI package. |
|
|
Public contract module exposed by this FS.Skia.UI package. |
|
|
|
|
|
|
|
|
Feature 108/109/110/111 (US1, FR-001/002): the per-frame structured work/timing signal the host loop and the deterministic `Perf.runScript` driver both produce. The count/bool fields are the byte-stable determinism surface (FR-007/SC-005); `FrameDuration` is reported for real perf observation but EXCLUDED from golden assertions (it varies run to run, FR-012). Feature 109 replaced the conflating `ViewRebuilt` with the two precise booleans `ProductModelChanged` + `ViewCalled` and added the integer `FullRenderCount`. Feature 110 added `FullRenderFallbackCount` and narrowed `FullRenderCount`/`ViewCalled` so retained routing increments NEITHER. Feature 111 added `FrameCause` + the per-phase booleans `DiffRan`/`LayoutRan`/`PaintRan` (the VIEW phase is `ViewCalled`) and narrowed `ViewCalled`/`FullRenderCount` to `false`/`0` on a model-unchanged frame (the scheduler reuses the already-produced view tree, FR-003/FR-011). |
|
|
Pointer-routing, size-aware durable host (feature 085, research D3-AMEND). Mirrors `GeneratedAppHost` field-for-field PLUS a `MapPointer` seam over `PointerInteraction` and a size-carrying `View` that returns a `Control<'msg>` tree (so `Control.renderTree` yields the `Scene` + `Layout` + `EventBindings` the host routes). Lives in Controls.Elmish — not SkiaViewer — because `PointerInteraction`/`interpretPointerOutcome` are Controls surface and the viewer is host-independent. `Theme` drives `renderTree`. Feature 090: a hit control's authored `EventBindings` (`onClick`/`onChanged`) are dispatched in the live window; `MapKey` gains a focus-aware text-routing seam for the focused text control (see `routeInteractivePointer`, `routeFocusedText`, and `runInteractiveApp`). Feature 108: the additive `MapKeyChord` / `OnFrameMetrics` fields carry inert defaults (at-rest byte-identical). |
|
|
A captured input→visible-change responds-proof (feature 090, FR-006/FR-007): the `Before` frame, the `After` frame produced by applying a real dispatched interaction (route → `host.Update` fold → re-render, exactly as the live repaint loop), and the `Verdict`. A distinct evidence class from a render-only screenshot (one frame, no interaction) and from the offscreen `runInteractivePointerOnce` route probe (model layer only): an app that renders but does not respond yields identical frames and an `Inert` verdict, so "renders" cannot be passed off as "responds". |
|
|
Verdict of a responds-proof (feature 090, FR-006): `Responsive` when a real input applied to the running host produced a visible change in the rendered output (`Before` ≠ `After`), `Inert` when it did not. An inert host (renders but does not respond) can only yield `Inert`. |