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
slhx agent
417bc45d1f
docs(examples): describe generated command path
...
Keep example READMEs aligned with the generated-resource, tuple-composed IntoEffect authoring path instead of lower-level handle/EffectBatch wording.
req: dx/006
req: examples/003
2026-06-02 03:28:53 +02:00
slhx agent
15809c86a6
feat(build): add lower-aware put helper
...
Generate ui::put(slot, view) for lower-aware slot HTML updates and move examples/docs/contracts to that ergonomic path instead of hand-composing slot.html(render(...)).
req: dx/006
req: component/003
req: runtime/001
req: examples/003
2026-06-02 02:59:29 +02:00
slhx agent
fa00128c9b
fix(examples): keep test updates lower-aware
...
Move canonical example test helpers and docs off direct slot render shortcuts so even test-only slot updates use generated lower-aware HTML paths.
req: component/003
req: runtime/001
req: examples/003
2026-06-02 01:59:25 +02:00
slhx agent
732e65008e
fix(examples): use lower-aware slot html updates
...
Move canonical examples and docs off direct RenderSlotExt render shortcuts so slot updates use generated render/lowering before HTML replacement, preserving runtime metadata for follow-up interactions.
req: component/003
req: runtime/001
req: dx/006
req: examples/003
2026-06-02 01:48:10 +02:00
slhx agent
743f79c6d6
fix(examples): lower slot render updates
...
Use generated lower-aware render paths before slot HTML updates so example fragments carry runtime ids for follow-up interactions such as browser drag/drop.
req: component/003
req: runtime/001
req: examples/003
2026-06-02 01:41:42 +02:00
slhx agent
1e53a6f7df
feat(axum): parse typed interaction values
...
Add InteractionForm::parse for common typed field extraction and use it in example interaction handlers to avoid repeated string parsing plumbing.
req: form/004
req: dx/003
req: examples/003
2026-06-02 00:31:32 +02:00
slhx agent
df4b4cc649
feat(axum): add interaction registry alias
...
Add an interactions()/on() registration path and move canonical examples off explicit register_handle naming while keeping low-level registry types available underneath.
req: axum_integration/003
req: ceremony/001
req: dx/003
req: examples/003
2026-06-02 00:24:32 +02:00
slhx agent
f388fa7d91
docs(kanban): describe generated handles
...
Keep the canonical Kanban README on generated handles/slots instead of implying authors work with generated numeric ids.
req: dx/003
req: examples/003
2026-06-02 00:21:31 +02:00
slhx agent
42ede63361
feat(axum): add concise interaction request dispatch
...
Wrap extracted interaction forms in an InteractionRequest with a concise dispatch path, add a handlers() helper, and move canonical examples off direct HandlerRegistry/InteractionForm plumbing.
req: axum_integration/003
req: ceremony/001
req: dx/003
req: examples/003
2026-06-02 00:19:38 +02:00