Commit Graph

83 Commits

Author SHA1 Message Date
slhx agent a04773d016 fix(deps): replace retired transitive crates 2026-07-14 09:44:19 +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 c793de8224 refactor(kanban): isolate legacy sync fixture
req: v1_release/002
2026-07-14 00:27:38 +02:00
slhx agent 3bad745da9 feat(sync): replay durable projections from Rust
req: ms/001

req: ms/002

req: ms/003
2026-07-14 00:17:20 +02:00
slhx agent 2a74a28d3b test(kanban): prove multiplayer milestone journey
req: ms/001

req: ms/002

req: ms/003
2026-07-13 23:51:51 +02:00
slhx agent 5a82956c08 feat(sync): add typed acknowledgement effect
req: sync/006
2026-07-13 23:15:57 +02:00
slhx agent 88598f181f feat(sync): add typed presence projection
req: sync/001

req: sync/005
2026-07-13 23:03:46 +02:00
slhx agent 87296632bc feat(sync): add typed broadcast primitive
req: sync/004
2026-07-13 22:54:12 +02:00
slhx agent 98b00920b9 test(sync): audit browser recovery paths 2026-07-13 22:46:03 +02:00
slhx agent d2ae025e13 fix(operations): bound handler lifetimes
req: operations/003
2026-07-13 22:06:12 +02:00
slhx agent 2bc68c5777 fix(sync): bound acknowledgement stream
req: operations/004
2026-07-13 21:48:00 +02:00
slhx agent 3ac9549cc3 fix(security): bound untrusted wire decoding
req: security/005
2026-07-13 21:31:34 +02:00
slhx agent 2a8aa4c07f fix(sync): bound request lifetime
req: operations/003
2026-07-13 21:16:07 +02:00
slhx agent 6d502d8ff5 test(sync): prove deterministic reconciliation
req: sync/022
2026-07-13 21:08:51 +02:00
slhx agent 34728b9a35 feat(sync): add typed flat patch boundary
req: sync/002

req: sync/003
2026-07-13 21:02:43 +02:00
slhx agent f1dc6edb7a feat(kanban): expose redacted sync diagnostics
req: operations/001

req: security/002

req: sync/016
2026-07-13 20:07:21 +02:00
slhx agent fbc0c9db30 feat(kanban): retry explicit keep-local choice
req: sync/009

req: sync/010

req: sync/011

req: sync/016
2026-07-13 19:47:39 +02:00
slhx agent 54301c6aa5 feat(kanban): resolve divergent queue head
req: sync/010

req: sync/011
2026-07-13 19:31:40 +02:00
slhx agent 1ec8a1368d feat(kanban): authorize canonical sync reads
req: sync/007

req: auth/005

req: security/004
2026-07-13 19:22:13 +02:00
slhx agent 3ef84e7331 feat(kanban): partition local queues by account
req: sync/020

req: auth/005

req: security/004

req: operations/002
2026-07-13 19:00:04 +02:00
slhx agent 6de4dcb73b feat(kanban): reauthorize queued replay
req: sync/019

req: security/004

req: auth/005

req: operations/002
2026-07-13 18:18:52 +02:00
slhx agent a17de85b4f feat(kanban): migrate queued commands transactionally
req: sync/014
2026-07-13 18:06:47 +02:00
slhx agent 3ace17f9f1 feat(kanban): stop mixed queue on rejection
req: sync/009

req: sync/010
2026-07-13 17:53:53 +02:00
slhx agent 80f1ae155e feat(kanban): bound sync upload runs
req: sync/017
2026-07-13 17:48:47 +02:00
slhx agent 0d475e81c8 feat(kanban): coordinate uploader tabs
req: sync/018
2026-07-13 17:40:16 +02:00
slhx agent e4688bb6df test(kanban): prove divergent rebase conflict
req: sync/011
2026-07-13 17:04:10 +02:00
slhx agent d6aaca8127 feat(kanban): deterministically rebase snapshot
req: sync/011
2026-07-13 16:58:51 +02:00
slhx agent db57b0c474 feat(kanban): recover from missing sync history
req: sync/007\nreq: sync/020
2026-07-13 16:53:49 +02:00
slhx agent 5ea747d968 feat(kanban): recover after retry exhaustion
req: sync/004\nreq: sync/010\nreq: sync/011\nreq: sync/014\nreq: sync/016
2026-07-13 16:47:52 +02:00
slhx agent 0a7c380187 feat(kanban): persist canonical acknowledgements
req: sync/001\nreq: sync/005\nreq: sync/007\nreq: sync/008\nreq: sync/013
2026-07-13 16:41:18 +02:00
slhx agent 599d1b838d feat(kanban): upload pending command with retry
req: sync/004\nreq: sync/009\nreq: sync/010\nreq: sync/016\nreq: sync/017
2026-07-13 16:32:44 +02:00
slhx agent 687c64d078 feat(kanban): acknowledge idempotent server command
req: sync/001\nreq: sync/005\nreq: sync/006\nreq: sync/007\nreq: sync/008\nreq: sync/012\nreq: sync/013
2026-07-13 16:02:19 +02:00
slhx agent 1d194e0f23 test(kanban): prove server-first asset isolation
req: performance/006
2026-07-13 15:50:35 +02:00
slhx agent 978bf67a2c feat(kanban): expose queued persistence state
req: accessibility/004\nreq: client_local/013\nreq: performance/003
2026-07-13 15:40:34 +02:00
slhx agent 9b80444484 fix(kanban): recover from quota exhaustion
req: sync/015
2026-07-13 15:31:07 +02:00
slhx agent bf10d1e3ce feat(kanban): bound durable replay
req: sync/014\nreq: performance/005
2026-07-13 15:20:00 +02:00
slhx agent 54b706b706 fix(kanban): recover malformed commands
req: sync/015
2026-07-13 15:15:40 +02:00
slhx agent 47715e3ba3 fix(kanban): fail closed on persistence errors
req: sync/015
2026-07-13 15:11:08 +02:00
slhx agent d946975f2d feat(kanban): add local recovery controls
req: local/003\nreq: security/007
2026-07-13 14:59:05 +02:00
slhx agent 9a3c0335eb feat(kanban): restore commands offline
req: local/001\nreq: local/002\nreq: local/003\nreq: local/004
2026-07-13 14:52:51 +02:00
slhx agent 7298405e27 feat(kanban): persist local reorder commands
req: local/001\nreq: local/002\nreq: local/003\nreq: local/004\nreq: sync/009
2026-07-13 14:45:22 +02:00
slhx agent 7eb65d77c8 feat(kanban): prove accessible local reorder
req: client_local/013\nreq: accessibility/002\nreq: accessibility/003\nreq: accessibility/004\nreq: accessibility/006\nreq: milestone/001
2026-07-13 14:29:21 +02:00
slhx agent ecbdea5cd0 feat(axum): support axum 0.8 applications
Upgrade the integration crate and examples to Axum 0.8 and use the native async extractor traits while preserving hemx routing, request, runtime, and effect behavior.

req: axum/002
2026-07-13 09:26:32 +02:00
slhx agent 7be1c9c649 feat(build): make generated page helper canonical
Move canonical examples and docs snippets from raw render/page calls to generated ui::page helpers, hide generated render behind doc(hidden), and let form resources participate in generated target inspection for tests.

req: canonical_authoring/005

req: dx/006

req: codegen/002

req: public_api/002

req: test/001
2026-06-12 07:31:39 +02:00
slhx agent ce4c2e086d feat(axum): expose hashed runtime asset path
Generate a SHA-256 content hash for the embedded hemx runtime, expose the hashed path from hemx-axum, serve immutable runtime headers, and update examples to load the hemx-owned path instead of fixed /hemx.js URLs.

req: axum_integration/005
2026-06-05 18:27:38 +02:00
slhx agent 53480dba5a feat(hemx): clarify generated authoring path
Close the fallible handler and example coherence slice: v0 uses typed todo newtypes, Result handler failure mapping, generated form/partial helpers, and page composition; kanban is explicitly marked as an advanced north-star milestone; raw render is isolated behind hemx::advanced::render.

req: canonical_authoring/003

req: failure/004

req: public_api/005

req: examples/004
2026-06-05 08:36:39 +02:00
slhx agent c33500440e refactor!: rename slhx to hemx
Rename the tracked product identity, crate/package names, Rust paths/macros, generated artifacts, runtime files, public attributes, examples, docs, requirements, and tests from slhx to hemx without compatibility shims.

Verified with cargo run -p hemx-xtask -- test, cargo test -p hemx-derive --test compile_fail, cargo test -p hemx-js, cargo test -p hemx-axum, cargo test -p hemx-v0-examples, cargo check --workspace, redgate list, redgate refs, redgate health --strict, git diff --check, and git grep/ls-files legacy-name audits.

req: misc/001

req: codegen/001

req: component/004

req: runtime/001
2026-06-05 06:52:37 +02:00
slhx agent d4e865ef92 feat(api): streamline generated app authoring
Move the canonical examples toward generated component-root helpers, typed form decoding, async/state handler registration, and derive-driven app/component registry wiring. Tighten requirements and diagnostics for the server-first, selectorless authoring path.

Verified with cargo run -p slhx-xtask -- test, cargo check --workspace, redgate list, redgate refs, redgate health --strict, and git diff --check.

req: canonical/001

req: canonical/003

req: canonical/004

req: dx/002

req: derive_app/001

req: component/003

req: form/004

req: axum_integration/003
2026-06-05 06:33:41 +02:00
slhx agent 795abdbc81 test(examples): guard low-level docs wording
Keep beginner example docs on target objects and tuple IntoEffect responses instead of runtime lowering/application wire vocabulary.

req: dx/006

req: examples/003
2026-06-02 07:27:23 +02:00
slhx agent a138f92b33 feat(build): generate slot target objects
Add generated targets::<slot> wrapper objects so partial swaps read as target.put/append/replace while preserving existing lower-aware commands and IntoEffect wiring.

req: dx/006

req: codegen/001

req: codegen/002

req: component/003
2026-06-02 07:21:23 +02:00