Commit Graph

2 Commits

Author SHA1 Message Date
9ac2e38c24 Store primitives + event-bridge + client? for isomorphic nav
- def-store/use-store/clear-stores: OCaml primitives with global
  mutable registry. Bypasses env scoping issues that prevented SX-level
  stores from persisting across bytecode module boundaries.

- client? primitive: _is_client ref (false on server, true in browser).
  Registered in primitives table for CALL_PRIM compatibility.

- Event-bridge island: rewritten to use document-level addEventListener
  via effect + host-callback, fixing container-ref timing issue.

- Header island: uses def-store for idx/shade signals when client? is
  true, plain signals when false (SSR compatibility).

- web-signals.sx: SX store definitions removed, OCaml primitives replace.

Isomorphic nav still fixme — client? works from K.eval but the JIT
"Not callable: nil" bug prevents proper primitive resolution during
render-to-dom hydration. Needs JIT investigation.

100 passed, 1 skipped, 0 failed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 11:54:29 +00:00
5ed984e7e3 Add 5 MCP tools, refactor nav-data, fix deep path bug, fix Playwright failures
Nav refactoring:
- Split nav-data.sx (32 forms) into 6 files: nav-geography, nav-language,
  nav-applications, nav-etc, nav-tools, nav-tree
- Add Tools top-level nav category with SX Tools and Services pages
- New services-tools.sx page documenting the rose-ash-services MCP server

JS build fixes (fixes 5 Playwright failures):
- Wire web/web-signals.sx into JS build (stores, events, resources)
- Add cek-try primitive to JS platform (island hydration error handling)
- Merge PRIMITIVES into getRenderEnv (island env was missing primitives)
- Rename web/signals.sx → web/web-signals.sx to avoid spec/ collision

New MCP tools:
- sx_trace: step-through CEK evaluation showing lookups, calls, returns
- sx_deps: dependency analysis — free symbols + cross-file resolution
- sx_build_manifest: show build contents for JS and OCaml targets
- sx_harness_eval extended: multi-file loading + setup expressions

Deep path bug fix:
- Native OCaml list-replace and navigate bypass CEK callback chain
- Fixes sx_replace_node and sx_read_subtree corruption on paths 6+ deep

Tests: 1478/1478 JS full suite, 91/91 Playwright

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 12:09:22 +00:00