30 Commits

Author SHA1 Message Date
slhx agent 23b1d75f7f fix(requirements): migrate to installed redgate format 2026-07-14 01:37:05 +02:00
slhx agent 025d9c1563 fix(release): restore canonical local gate
req: public_api/001

req: v1_release/007
2026-07-14 01:24:31 +02:00
slhx agent 56ace537f3 fix(axum): enforce mutation request boundaries
req: security/003
2026-07-13 21:37:55 +02:00
slhx agent 7b647add0a docs(requirements): split offline adapter boundary
Split oversized canonical_authoring/008 into offline opt-in, adapter queue, and no-core-local-runtime requirements.

req: canonical_authoring/008

req: canonical_authoring/018

req: canonical_authoring/019
2026-06-25 14:18:27 +02:00
slhx agent f49efc67b6 docs(requirements): split workout release scope
Split oversized examples/006 into command-surface, generated-helper, and mobile-boundary requirements.

req: examples/006

req: examples/010

req: examples/011
2026-06-25 14:01:04 +02:00
slhx agent 79b4d1e167 fix(xtask): give mobile starters app-owned commands
Make app new --mobile write hemx-app with HEMX_APP_* release settings, app-scoped release output, and docs that name Workout only as the concrete starter flow instead of leaking Workout command identity.

req: ceremony/006
2026-06-12 16:15:09 +02:00
slhx agent be3ba4877a docs: bound hemx mobile fit
Name when the mobile starter is the right suckless path and when to use an explicit native shell or island instead of pretending hemx is a general native UI framework.

req: ceremony/006

req: host/002
2026-06-12 15:37:54 +02:00
slhx agent d4916b1a1e feat(xtask): add mobile app starter
Add app new --mobile as the public phone-first starter path. It reuses the Workout starter so created apps carry a real page/form/keyed partial/notice flow, typed host capability handling, app-owned recovery truth, and inspectable mobile release/verify commands without adding a mobile framework.

req: ceremony/006

req: examples/006
2026-06-12 15:34:32 +02:00
slhx agent d0dc9729fd docs: explain reusable partials
Add the public 'Where are my components?' answer: hemx maps framework component jobs to hemplate partials, generated helpers, app-owned state, IntoEffect composition, and explicit leaf islands. The pre-commit guard now only blocks commits that change REQUIREMENTS.md without an AGENTS.md review, so unrelated follow-up commits are not trapped by old history.

req: canonical_authoring/002

req: canonical_authoring/003
2026-06-12 14:40:25 +02:00
slhx agent f13e21868c feat(workout): surface store submission blockers
Record Google Play and App Store Connect submission targets as external mobile blockers, and make verification require those blockers to be acknowledged in the release kit.

req: examples/006
2026-06-12 12:57:13 +02:00
slhx agent 815392b232 feat(workout): record runtime asset integrity
Write and verify asset-integrity.tsv for the Workout mobile release kit using the actual hemx runtime path and SHA-256 digest, so mobile shell review has inspectable runtime integrity evidence.

req: examples/006
2026-06-12 12:52:26 +02:00
slhx agent d4e99b6e73 feat(workout): gate mobile verification on product tests
Make workout mobile-verify rerun the Workout product tests before release-kit checks so app value, recovery, local state, and host capability boundaries fail closed with mobile artifacts.

req: examples/001

req: examples/006

req: host/002

req: local/001
2026-06-12 12:35:41 +02:00
slhx agent 2b9979e339 fix(workout): make mobile verification fail closed
Make workout mobile-verify reject non-HTTPS origins and release kits that omit detected external signing/toolchain blockers, so verification checks objective release preconditions instead of pretending to predict store approval.

req: examples/006
2026-06-12 12:31:19 +02:00
slhx agent 32fa1a4952 feat(workout): include host result contract in mobile kit
Record share/haptics and the denied/timeout/unavailable/error host result kinds in Android and iOS release metadata, and make mobile verification require them.

req: examples/006

req: host/002
2026-06-12 11:26:34 +02:00
slhx agent 860a4edf61 feat(workout): unify release command surface
Route local dev, tests, production build, mobile release, mobile verification, and doctor through one Workout xtask surface, and update the canonical docs around that surface.

req: examples/001

req: examples/006

req: test/004
2026-06-12 11:20:22 +02:00
slhx agent 5a42f2664a feat(workout): verify mobile release kit
Add a workout-mobile verify command that checks the generated release kit and server artifact, then document it beside release/doctor so the mobile path has a recurring gate.

req: examples/006
2026-06-12 11:12:18 +02:00
slhx agent f2b6aa1aef feat(workout): add mobile release kit command
Add one canonical Workout mobile release command that builds the production server and writes Android/iOS shell metadata, explicit production policy, and honest external signing/toolchain blockers.

req: examples/001

req: examples/006

req: host/002

req: local/001
2026-06-12 11:02:31 +02:00
slhx agent a28eb78ded docs(local): describe projections before generated effects
Keep local/offline and host capability recipes on app-owned command/event/projection flow without teaching raw EffectBatch as the authoring boundary.

req: local/001

req: local/002

req: host/002
2026-06-12 08:00:49 +02:00
slhx agent 21100aafdf feat(host): unify typed failure results
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
2026-06-12 07:58:44 +02:00
slhx agent 4a8442c5f9 feat(build): generate page-boundary helper
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
2026-06-12 07:18:38 +02:00
slhx agent bf7560b7a8 docs(runtime): align docs with hashed runtime asset
Replace fixed /hemx.js wording with helper-provided runtime asset language so docs match hemx-axum runtime_js_path deployment boundaries.

req: axum_integration/005

req: examples/001
2026-06-11 22:38:37 +02:00
slhx agent 1ec68d400c feat(local): decide local stays app territory
Define local/offline truth as commands, domain events, and projections rather than stored DOM patches or EffectBatch payloads; wire the techdemo through a local command-to-projection-to-effect flow; document that hemx-local is not a crate until reusable semantics are proven.

req: local/001

req: local/002

req: local/003

req: local/004

req: examples/001
2026-06-11 19:52:21 +02:00
slhx agent 64a736ffcb feat(local): model local command log boundary
Define local/offline truth as commands, domain events, and projections rather than stored DOM patches or EffectBatch payloads, and wire the techdemo through a local command-to-projection-to-effect flow.

req: local/001

req: local/002

req: local/003

req: local/004

req: examples/001
2026-06-11 19:49:34 +02:00
slhx agent 2cc6c85e37 feat(host): add typed host capability boundary
Introduce hemx-host with typed capability manifests, calls, events, host-check failures, reusable browser/PWA and native-shell profiles, and a tiny optional browser adapter for haptics/share that returns host events without DOM mutation.

req: host/001

req: host/002

req: host/003

req: host/004

req: host/005
2026-06-11 19:35:20 +02:00
slhx agent 78aff362ff docs(recipes): add pwa offline boundary
Document optional PWA/offline support as an adapter boundary: cached shell, domain-command queues, server-canonical replay, conflict/fingerprint behavior, and sync-crate shape without adding a client state graph or service worker to core.

req: canonical_authoring/008

req: runtime/003

req: runtime/004

req: auth/002

req: auth/004

req: failure/004

req: failure/005

req: sync/001

req: sync/007
2026-06-05 10:03:39 +02:00
slhx agent 107111052d docs(recipes): add observability flags boundary
Document provider-explicit observability, feature flag, A/B, and killswitch boundaries for hemx apps. The recipe keeps metrics providers and rollout controls in app/platform code while handlers return generated effects and the tiny runtime stays provider-free.

req: laws/002

req: laws/004

req: runtime/003

req: runtime/004

req: failure/004

req: examples/001

req: test/001
2026-06-05 09:52:59 +02:00
slhx agent 1fbeeb52b8 docs(hemx): define v1 versioning policy
Add a compact semver and upgrade policy for v1: stable beginner APIs, stable wire/runtime compatibility, advanced escape-hatch tier, breaking-change rules, upgrade-note template, and release checklist.

req: abi/001

req: abi/002

req: abi/003

req: abi/004

req: abi/005

req: public_api/001

req: public_api/002

req: public_api/005

req: runtime/003

req: runtime/004
2026-06-05 09:49:30 +02:00
slhx agent bf6add03ef docs(recipes): add deploy versioning boundary
Document deployment and version compatibility for hemx apps: release unit, runtime asset caching, rolling deploy policy, fingerprint mismatch behavior, semver buckets, upgrade notes, and deployment checks without adding platform code to core.

req: abi/001

req: abi/002

req: abi/003

req: abi/004

req: abi/005

req: runtime/004

req: failure/005
2026-06-05 09:32:25 +02:00
slhx agent a7012b94c2 docs(recipes): add auth csrf boundary
Document the provider-explicit auth/session and CSRF boundary for the SaaS tutorial. The recipe keeps cookies, sessions, CSRF policy, and rejection behavior in Axum/Tower/app code while hemx handlers continue to receive typed context/forms and return generated effects.

req: laws/002

req: auth/001

req: auth/002

req: auth/003

req: auth/004

req: auth/005

req: failure/004

req: examples/001
2026-06-05 09:30:13 +02:00
slhx agent 2c043d2f96 docs(recipes): add sqlx persistence boundary
Document a provider-explicit SQLx persistence adapter for the SaaS tutorial without adding SQLx to hemx core or the workspace. The recipe keeps auth/session, CSRF, generated helpers, and Result handler mapping as the app boundary.

req: laws/002

req: laws/004

req: auth/001

req: auth/002

req: auth/004

req: examples/001

req: canonical_authoring/002

req: failure/004
2026-06-05 09:27:08 +02:00