Skip to content

Commit 2185136

Browse files
authored
feat(dom): implement true multi-surface DOM rendering (#115)
Each surface renders as a separate <section> with accessible label and unique DOM id. Multi-surface screens use --<surfaceName> suffixed DOM ids for asks, actions, hints, reasons, and feedback outputs to avoid duplicates. Single-surface screens preserve backward-compatible DOM output (no suffix, no section wrapper). Duplicate ask controls across surfaces share underlying state via reactive subscriptions. Duplicate action buttons execute the same action. Blocked reasons, aria-describedby, Enter key hints, and feedback output are scoped per surface copy. 16 new tests cover multi-surface sectioning, id suffixing, item scoping, shared state (text/checkbox/select), shared actions, enabled/disabled sync, scoped blocked reasons, scoped aria-describedby, per-surface feedback, Enter key per surface, semantic id preservation, and cleanup.
1 parent 665f46d commit 2185136

4 files changed

Lines changed: 856 additions & 180 deletions

File tree

.changeset/many-experts-chew.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@intent-framework/dom": patch
3+
---
4+
5+
renderDom now renders each surface as a separate `<section>` with accessible label and unique DOM id. Multi-surface screens use `--<surfaceName>` suffixed DOM ids to avoid duplicates. Duplicate ask controls across surfaces share underlying state; duplicate action buttons execute the same action. Single-surface screens preserve backward-compatible DOM output with no suffixing or section wrappers.
6+

docs/proposals/Dom-Multi-Surface-Rendering.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# DOM Multi-Surface Rendering
22

3-
**Status:** Design Proposal
3+
**Status:** Implemented (PR #115)
44
**Date:** 2026-06-26
55
**Author:** Big Pickle
66
**Lane:** `renderer/dom`
77
**Depends on:** Nothing
88
**Affected package:** `@intent-framework/dom`
9-
**Changeset:** None (proposal-only)
9+
**Changeset:** Patch for `@intent-framework/dom`
1010

1111
---
1212

0 commit comments

Comments
 (0)