Add hemx-lsp for stdio LSP diagnostics, completion, and hover while preserving HTML editor tooling for .heml files. Teach hemx-build to expose generated target and derive-known template context facts, including simple h-for locals, so editor help comes from build-owned facts instead of editor-only parsers. Wire VS Code/Cursor and Neovim documentation and extend the Workout exemplar with a real h-for plan loop for end-to-end proof.
req: diag/004
req: diag/005
req: diag/006
Let the Workout generated interaction builder satisfy DispatchRegistry directly and guard canonical sources/docs against .into_registry() so the beginner path does not teach manual registry conversion.
req: examples/001
req: examples/006
req: public_api/002
Represent denied, timeout, unavailable, and error host outcomes with one HostFailure result shape, update the browser adapter, and keep Workout host recovery flowing through app code before UI effects.
req: host/002
req: host/005
req: local/003
Expose generated ui::page as the canonical page-boundary rendering helper and move the Workout golden path and docs off beginner-visible ui::render calls.
req: public_api/002
req: codegen/002
req: canonical_authoring/006
Cover skip-and-undo as a recoverable workout mistake so the product recovery surface is guarded alongside invalid input, edit-last-set, host failures, and replay failures.
req: examples/001
req: local/001
req: local/004
Add a recovery path for mistyped completed-set weight: append a typed correction event, replay it through the local projection, and make undo restore the previous session state.
req: examples/001
req: local/001
req: local/003
req: local/004
Promote the finish/export card from static copy into session-aware product state and extend the HTTP exemplar through full finish, export, and replay.
req: examples/001
req: local/001
req: local/003
req: local/004
Make the workout exemplar recover cleanly from invalid edits, accidental double-advance, replay parse failures, and denied or timed-out host export results while keeping local events as truth.
req: examples/001
req: local/001
req: local/003
req: local/004
req: host/002
req: host/005
Keep the workout binary to page/runtime/interaction plumbing by moving generated handle dispatch behind an app-owned interactions function, while preserving typed form adapters and full verification.
req: codegen/002
req: examples/001
Give the workout exemplar a durable gym-floor command-slate direction, serve focused CSS, keep the first viewport centered on one action, and extend the HTTP E2E to verify stylesheet delivery.
req: examples/001
req: local/001
req: local/003
req: host/002
Add state_interactions as a small helper for app-owned stateful registries, and use it in the workout exemplar to remove one layer of repetitive route wiring without hiding generated handles or app handlers.
req: axum_integration/003
req: ceremony/001
req: dx/003
req: codegen/002
req: examples/001
Move workout interaction wiring behind an app-owned registry function and use typed form adapters so the runnable binary no longer carries repetitive per-handler closure boilerplate.
req: codegen/002
req: examples/001
Wrap the workout page with the shared runtime, add export replay over command/event truth, and cover the running HTTP app with an end-to-end test that exercises runtime asset loading and product interactions.
req: examples/001
req: local/001
req: local/003
req: local/004
req: host/001
Keep the workout example inside canonical example wording rules while preserving the native-shell host path and full xtask verification.
req: examples/003
req: examples/005
req: host/001
req: host/005
Extend the workout exemplar with a native-shell haptic request and acknowledgment path that validates the host manifest and returns through app code without owning workout state.
req: host/001
req: host/002
req: host/004
req: host/005
req: examples/001
Add a runnable phone-first workout example that keeps local workout truth as commands, domain events, and projections, routes export through the host capability boundary, and documents how to open it in the browser.
req: examples/001
req: local/001
req: local/003
req: local/004
req: host/001
req: host/005