# _hyperscript 0.9.90 Gap Audit **Date:** 2026-04-22 **Target release:** upstream 0.9.90 (2026-04-13), with awareness of 0.9.91 bugfixes (2026-04-14) **Supersedes:** `hyperscript-feature-audit.md` (2026-04-09) Our implementation lives in `/root/rose-ash/lib/hyperscript/`: - `tokenizer.sx` (618 lines), `parser.sx` (2414 lines), `compiler.sx` (1739 lines), `runtime.sx` (1609 lines), `integration.sx` (109 lines). Tests in `spec/tests/test-hyperscript-*.sx` + extracted fixture `hyperscript-upstream-tests.json` (831 entries). --- ## 1. Version alignment ### What release is our JSON snapshot from? The fixture `spec/tests/hyperscript-upstream-tests.json` and the prior audit were both written on **2026-04-09** (four days before 0.9.90 tagged on 2026-04-13). File timestamps confirm this; there is no earlier git history for the JSON (it first appears in commit `7492ceac`). The contents are clearly **0.9.90 (pre-tag) or equivalent**: - 63 `on` tests, 44 `bind`, 41 `when`, 23 `live`, 10 `liveTemplate`, 19 `component`, 4 `reactive-properties` — all new-in-0.9.90 reactivity features - 10 `morph`, 8 `reset`, 13 `empty`, 10 `dialog`, 4 `swap`, 7 `halt`, 5 `askAnswer`, 3 `focus`, 8 `scroll`, 23 `fetch` including `fetch:beforeRequest`/`fetch:error` lifecycle — all 0.9.90 features or overhauls - Keywords `between`, `ignoring` (case), `precedes`/`follows`, `where`, `sorted`/`mapped`/`split`/`joined by` — 0.9.90 collection expressions - Total 831 tests vs upstream's "~1332 tests" claim for 0.9.90 — we have the subset that was non-sinon, non-script-tag, non-dialog-API when extracted **Conclusion:** the JSON is a valid 0.9.90-era snapshot. No re-extraction is strictly required, but upstream added tests post-tag (changelog mentions 1332 tests at 0.9.90 release) — we may be missing late additions. ### What 0.9.90 added over 0.9.8 / 0.9.14 Full changelog consulted at `github.com/bigskysoftware/_hyperscript/blob/master/CHANGELOG.md`. **Breaking changes in 0.9.90:** - `processNode()` → `process()` - `as JSON` now parses a string; old stringify behavior → `as JSONString`; `as Values | JSONString` / `as Values | FormEncoded` replace `Values:JSON` / `Values:Form` - `default` uses **nullish** check (no longer overwrites `0`/`false`) - `go to url ...` deprecated → `go to /path` or `go to "url"` - `go to the top of ...` deprecated → `scroll to the top of` - `async` keyword removed (was confusing) - `/* */` block comments removed - `transition width` → `transition *width` (explicit `*` style ref) - `fetch` throws on non-2xx by default; `do not throw` or `as Response` restores old behavior - `[@attr]` bracket-style attribute access **deprecated** (still parsed, use `@attr`) **New features in 0.9.90:** - **Reactivity** (`live`, `when ... changes`, `bind`) — dependency tracking + UI updates - **Templates in core** — `render` command + `