**Epic B — DOM Morphing & Rendering Fidelity** · Milestone: 0.6.0b · See `claudedocs/dev_plan_production_grade_2026-06-24.md` Foundation for navigation, forms, and optimistic-UI quality. - [x] **B1** Adopt morph swap (idiomorph/morphdom) in `component-client.js` instead of innerHTML replace — *enabler* — landed via #43 - [x] **B2** Preserve focus / scroll / in-flight input across patches — landed via #44 - [x] **B3** Stable list reconciliation key (`data-key`) — landed via #46 - [x] **B4** "Don't morph this" escape hatch for JS-owned regions — landed via #45 - [ ] **B5** *(spike)* Server-side change tracking feasibility — likely post-1.0, deferred (see closing comment) **Critical path:** B1 unblocks Epics C, D, G.
Epic B — DOM Morphing & Rendering Fidelity · Milestone: 0.6.0b · See
claudedocs/dev_plan_production_grade_2026-06-24.mdFoundation for navigation, forms, and optimistic-UI quality.
component-client.jsinstead of innerHTML replace — enabler — landed via feat(client): adopt Idiomorph morph swap in component-client.js (B1, #22) #43data-key) — landed via feat(client): stable list reconciliation key for morph (B3, #22) #46Critical path: B1 unblocks Epics C, D, G.