Skip to content

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 14:43
· 35 commits to main since this release

What's Changed

  • fix: stop the reactivity/realtime plugins reporting frozen versions by @codetalcott in #926
  • fix(mcp-server): unshadow analyze_content, extend the next-step hint to the warning band by @codetalcott in #927
  • docs: correct the CI job table — it had drifted four ways by @codetalcott in #928
  • fix(deps): clear the three high-severity Dependabot alerts, plus a fourth npm audit found by @codetalcott in #929
  • fix(semantic): localize value interiors when rendering, and ratchet the en→foreign direction by @codetalcott in #931
  • fix(semantic): render wait events and dotted property paths in every language by @codetalcott in #932
  • fix(semantic): protect contract keys, and carry fetch's options object into every language by @codetalcott in #933
  • fix(semantic): give the verb-final languages a slot for fetch's response type by @codetalcott in #934
  • fix(semantic): render a prepositional possessive property-first by @codetalcott in #935
  • fix(semantic): render a block feature's body, not just its keyword by @codetalcott in #936
  • fix(semantic): render a possessive adjective before its property by @codetalcott in #937
  • fix(semantic): derive the possessive adjective from the profile's parse vocabulary by @codetalcott in #938
  • fix(semantic): make the primary fused event-handler patterns schema-driven by @codetalcott in #939
  • fix(semantic): render bn set's value marker as the schema's তে, not by @codetalcott in #940
  • fix(semantic): find a feature block's handler whatever word it opens with by @codetalcott in #941
  • fix(semantic): parse a handler whose event name is a CUSTOM identifier by @codetalcott in #942
  • fix(semantic): count nested slots when the renderer picks a pattern by @codetalcott in #943
  • fix(semantic): fold render's with-phrase into one expression, not a bare reference by @codetalcott in #944
  • fix(semantic): render a marker that may be dropped colloquially by @codetalcott in #945
  • fix(semantic): drop i18n's attachment hyphen from send's destination marker by @codetalcott in #946
  • fix(semantic): rewind a fused handler's body to the slot its action ate by @codetalcott in #947
  • fix(semantic): stop a positional run spending the marker its pattern owes by @codetalcott in #948
  • fix(semantic): recover a fused handler's body HEAD, counted loop and all by @codetalcott in #949
  • fix(semantic): a marker-less optional slot must not eat its pattern's verb by @codetalcott in #950
  • fix(semantic): a role the MATCHER defaulted is not one the re-parse must keep by @codetalcott in #951
  • fix(semantic): glue a possessive marker only where the tokenizer can undo it by @codetalcott in #952
  • feat(testing-framework): gate the BARE render surface, which nothing covered by @codetalcott in #953
  • fix(semantic): find the fused body's verb by SURFACE, not by normalized form by @codetalcott in #954
  • fix(semantic): an SOV override marker goes AFTER its value, and its duration is reclaimed by @codetalcott in #955
  • fix(semantic): give the SOV six a repeat-while head the renderer can use by @codetalcott in #956
  • fix(semantic): let th's generated patterns outrank the bare handcrafted forms by @codetalcott in #957
  • fix(semantic): emit a condition-only unless guard, and give bn an unless word by @codetalcott in #958
  • fix(semantic): a role captured without its marker rolls back; an implicit me never picks the render pattern by @codetalcott in #959
  • fix(semantic): a fronted personal reference is never an event head by @codetalcott in #960
  • fix(semantic): the generated repeat's optional slots never eat the next command's verb by @codetalcott in #961
  • docs(semantic): resolve the native-idiom review queue with researched verdicts by @codetalcott in #962
  • fix(semantic): three pattern-priority/homonym repairs — uk put positions, vi get marker-eat, ja get-as-fetch by @codetalcott in #963
  • fix(semantic): render trigger's bn/hi event with its accusative marker by @codetalcott in #964
  • fix(semantic): localize he's booleans, and render th's genitive in its true direction by @codetalcott in #965
  • fix(semantic): a duration-typed literal in transition's goal re-roles to duration by @codetalcott in #967
  • fix(semantic): a marker-less slot yields only when skipping consumes the clause by @codetalcott in #968
  • fix(semantic): the unless guard captures its whole condition by @codetalcott in #970
  • fix(semantic): reactive when … changes parses in all 24 languages by @codetalcott in #971
  • fix(semantic): when is canonical-only in English, and when-value-changes is engine-portable in all 24 languages by @codetalcott in #972
  • feat(patterns-reference): corpus writer → best, with a shrink-only ratchet on the rows i18n still renders by @codetalcott in #973
  • feat(patterns-reference): translate the hyperscript inside markup rows; kept-rows ratchet 229 → 161 by @codetalcott in #974
  • fix(semantic): a brace group's interior is data — stop localizing it, and stop corrupting its keys by @codetalcott in #975
  • docs(multilingual): prioritize the kept-row queue by canonical syntax; record the qu head swap as zero-sum by @codetalcott in #976
  • fix(semantic): put X before/after Y rendered as "at end of" in ar and tl by @codetalcott in #977
  • fix(semantic): a fused handler body kept its commands but lost its then-chain in 15 languages by @codetalcott in #978
  • fix(semantic): hand-crafted patterns inherit the schema's role defaults by @codetalcott in #979
  • fix(semantic): a *-sigil property read the possessive backwards in seven languages by @codetalcott in #980
  • fix(semantic): th marks set's value, not its target by @codetalcott in #981
  • fix(semantic): a js … end block round-trips verbatim, in every language by @codetalcott in #982
  • fix(semantic): type a handler's event the way English types it by @codetalcott in #983
  • fix(semantic): bn's empty predicate is not bn's empty command by @codetalcott in #984
  • fix(semantic): a possessive property that translates to a keyword is still a property by @codetalcott in #985
  • fix(semantic): four vocabulary/homonym repairs from the canonical kept-row queue by @codetalcott in #986
  • fix(semantic): tl's swap destination marker, and a qu go pattern that outlived its purpose by @codetalcott in #987
  • fix(semantic): a positional source clause survives, bare and inside a handler by @codetalcott in #988
  • fix(semantic): localize a possessive inside an expression, in both directions by @codetalcott in #989
  • fix(semantic): give qu a repeat-until head it can RENDER, not only read by @codetalcott in #990
  • fix(semantic): as JSON is part of the value, not a dropped tail by @codetalcott in #991
  • fix(semantic): close a flattened loop header, so the handler's end is its own by @codetalcott in #992
  • fix(semantic): zh renders for set, and IS zh's for keyword by @codetalcott in #993
  • fix(semantic): a js block renders verb-INITIAL, so its clause is identifiable by @codetalcott in #994
  • fix(semantic): two fused slots that stopped one token short by @codetalcott in #995
  • fix(semantic): ko renders its handler head as 할 때 — kept rows reach ZERO by @codetalcott in #996
  • fix(vite-plugin): the generated bundle's translator comes from its own parser by @codetalcott in #997
  • refactor(core)!: the classic-i18n bundle drops its four transformer helpers by @codetalcott in #998
  • feat(hyperscript-tools-i18n)!: translate on the semantic engine, not the transformer by @codetalcott in #999
  • refactor(patterns-reference)!: the corpus writer is semantic-only by @codetalcott in #1000
  • refactor(i18n)!: delete the grammar transformer by @codetalcott in #1001
  • docs: correct the language guide, the broken cold-start commands, and three post-transformer descriptions by @codetalcott in #1002
  • fix: repair the domain-flow route pin and repoint the deprecated domain names by @codetalcott in #1004
  • docs: write the 3.0.0 release notes, backfill 2.11.x, and unstall six package changelogs by @codetalcott in #1005
  • docs: correct five stale multilingual figures in CLAUDE.md by @codetalcott in #1006
  • feat(engine): type-escape ratchet + engine migration plan (Arc 0 step 1) by @codetalcott in #1007
  • feat(engine): layering ratchet (Arc 0 step 2) by @codetalcott in #1008
  • docs(parser): file the 15 documented examples the parser rejects by @codetalcott in #1011
  • bench(engine): hot-path benchmark (Arc 0 step 4) — and two corrections to the plan it forced by @codetalcott in #1010
  • refactor(engine): delete the unexported dead trees and type surface (Arc 6a) by @codetalcott in #1012
  • feat(engine): AST vocabulary + equivalence corpus (Arc 0, steps 3 and 5) by @codetalcott in #1009
  • feat(engine): boundary ratchet, the semantic-first measurement, and the live bug it found (Arc 1, steps 1 and 5) by @codetalcott in #1013
  • docs(engine): Arc 7 step 1 — measured, and it rescopes the arc to one file by @codetalcott in #1014
  • docs(engine): Arc 1 brief, and refresh the step-5 numbers my own fix moved by @codetalcott in #1015
  • Arc 1 step 4, the convergence measurement, and the silent-truncation fix by @codetalcott in #1016
  • Interchange roles no longer bind role markers as values by @codetalcott in #1017
  • Arc 2 step 1: classify the strays (and score 1 of its 9 hypotheses correct) by @codetalcott in #1018
  • A command node spans the command, not its last argument by @codetalcott in #1019
  • A semantically-adopted command carries a real span by @codetalcott in #1020
  • hide/show no longer drop a query-reference target by @codetalcott in #1021
  • Fresh-session handoff for the convergence arc's remaining items by @codetalcott in #1022
  • fix(semantic): a query reference builds the canonical core selector shape by @codetalcott in #1023
  • feat(semantic): an implicit schema default stays on semanticRoles, out of args by @codetalcott in #1024
  • test(parser): gate every documented example, and file the silent-drop class by @codetalcott in #1025
  • fix(parser): report the input it discards instead of dropping it in silence by @codetalcott in #1026
  • docs(engine): bring the convergence arc's handoff up to date with #1023#1026 by @codetalcott in #1027
  • fix(parser): show/hide keep their in <scope> qualifier and when filter by @codetalcott in #1028
  • fix(parser): if <cond> then <cmd> needs end only when input follows by @codetalcott in #1029
  • fix(parser): transition … to <value> keeps the value's CSS unit by @codetalcott in #1030
  • docs(parser): install X on <target> is a docs defect, not a parser bug by @codetalcott in #1031
  • docs(engine): bring the convergence handoff's own brief up to date with #1028#1031 by @codetalcott in #1033
  • fix(parser): close Thread A item 2b — scroll, make's comma list, and spaced time units by @codetalcott in #1034
  • docs: the local gate set misses a FOURTH class of CI gate, not three by @codetalcott in #1035
  • fix: three live defects hiding in the node-type "alias" family by @codetalcott in #1036
  • docs: handoff for the next convergence session by @codetalcott in #1037
  • fix: the four decision-free filings — parseTimeToMs 60x, empty interchange template literals, duplicate MultiWordPattern, scroll runtime alignment by @codetalcott in #1038
  • test: the 10 unchecked node-type rows executed — all benign, pinned on both paths by @codetalcott in #1039
  • refactor(semantic): converge the AST vocabulary on the core spellings — node-type 12 → 2 by @codetalcott in #1040
  • fix(runtime): bare detail and sender were unresolved — the body defect had siblings by @codetalcott in #1041
  • feat(parser): semantic roles carry their source span — and the traditional parser was wrong about spans in four places by @codetalcott in #1042
  • docs: close the convergence detour, and correct Arc 2's position premise with a measurement by @codetalcott in #1043
  • docs: open Arc 2 with a re-measured brief — four of its seven claims are false by @codetalcott in #1044
  • chore(core): delete two features/ subtrees nothing could reach, and gate the shape by @codetalcott in #1045
  • feat(core): one typed AST union — and parser-types.ts was describing a shape nothing emits by @codetalcott in #1046
  • docs: the type-escape ratchet has a blind spot, and it inverts step 6's order for ast-utils by @codetalcott in #1048
  • fix(parser): pratt-parser had 46 type escapes and none of them were load-bearing by @codetalcott in #1047
  • feat(parser): typed construction for every semantic-built expression — the lie crosses at one boundary, not 21 by @codetalcott in #1049
  • feat(commands): execute the re-scoped step 5 — guard adoption at the sites that are actually AST-shaped by @codetalcott in #1050
  • docs: step 3's PluginNode design cannot compile — probed, corrected in place by @codetalcott in #1051
  • feat(parser): exhaustive evaluators — two switches, and the 11 kinds that never arrive by @codetalcott in #1052
  • feat(ast-utils): retype signature-first — 157 → 2 hatches, and the AST these modules were written for does not exist by @codetalcott in #1053
  • feat(types): collapse the definitions — eleven base-types interfaces deleted, the union completed from what the parser emits by @codetalcott in #1054
  • feat(types): close the union — the index signature comes off, and 117 implicit crossings become explicit by @codetalcott in #1055
  • docs: Arc 2 is closed — the ratchet moved 1088 → 927, and 161 of those tell two opposite stories by @codetalcott in #1056
  • docs: Arc 3 brief — fourteen claims scored, the dispatch map measured, and marker-in-args turns out to be Arc 3's to close by @codetalcott in #1057
  • feat(parser): Arc 1 step 6 — English is parsed by the core parser alone; the in-loop semantic attempt is deleted by @codetalcott in #1058
  • feat(commands): COMMAND_NAMES is a const tuple, and CommandName is derived from it — Arc 3 prep by @codetalcott in #1059
  • feat(parser): Arc 3 step 4 — every generic command parses from a declared grammar, and the two loops it replaces are gone by @codetalcott in #1060
  • feat(commands): Arc 3 step 1 — the parseInput census is a shrink-only ratchet by @codetalcott in #1061
  • feat(parser): toggle's destination is a slot — Arc 3 step 3, toggle PR A by @codetalcott in #1062
  • feat(parser): toggle's between pair and dialog mode are slots — Arc 3 step 3, toggle PR B by @codetalcott in #1063
  • feat(parser): swap, morph and the using view transition tail are slots — Arc 3 step 3 by @codetalcott in #1064
  • feat(parser): put's operation is the slot its target lives under — Arc 3 step 3 by @codetalcott in #1065
  • feat(parser): repeat's loop form and operands are slots — Arc 3 step 3 by @codetalcott in #1066
  • feat(parser): set's value is the to slot — and increment's desugar was the hidden producer of the flat shape (Arc 3 step 3) by @codetalcott in #1067
  • feat(parser): take's source, trigger's target and options, render's vars are slots — and the command suite could not tell the parser half was missing (Arc 3 step 3) by @codetalcott in #1068
  • feat(commands): delete the preposition filter — dead for ten of its twelve callers, the two it was live for (add/remove) move to slots, and push/replace get a parser (Arc 3 step 5) by @codetalcott in #1069
  • feat(parser): retire COMPOUND_COMMANDS — one dedicated-parser table replaces the set and the switch that had to agree with it by hand (Arc 3 step 5) by @codetalcott in #1070
  • feat(parser): delete parseRegularCommand — the last copy of the generic argument loop; its three fallback callers use the declared parser (Arc 3 step 5) by @codetalcott in #1071
  • test(commands): slot-key parity gate — every modifiers key a parseInput reads must be one some parser emits (Arc 3 step 2 opener) by @codetalcott in #1072
  • refactor(commands): delete the eleven parseInput reads only a hand-built node could satisfy — and the 22 wait tests that had never seen a real parse (Arc 3 step 2) by @codetalcott in #1073
  • feat(commands): typed slots — one COMMAND_SLOTS table, and every parseInput's raw.modifiers is keyed by its command's row (Arc 3 step 2) by @codetalcott in #1074
  • feat(parser): typed emit — CommandNodeBuilder and SlotMap locals, so a slot key a parser writes outside its command's row is a compile error (Arc 3 step 2) by @codetalcott in #1075
  • feat(parser): process and halt stop receiving marker words in args — the step-3 tail named by the arity census (Arc 3 step 3) by @codetalcott in #1076
  • feat(parser): scroll and go's syntax is slots, and both commands read a structured input — the two census-blind cases (Arc 3 step 3) by @codetalcott in #1077
  • feat(ast): CommandNode, COMMAND_ARITY and ArgsOf — the node and its positional args typed by the same tables as the slots; Arc 3 step 2 closed by @codetalcott in #1078
  • test(runtime): the control-flow matrix — 35 cells pinning halt/exit/break/continue/return in seven contexts, and the two signal-losing bugs it found (Arc 4a step 1) by @codetalcott in #1079
  • feat(runtime): Completion — halt/exit/break/continue/return return their signal instead of throwing; both dispatch paths route it (Arc 4a step 2, first half) by @codetalcott in #1080
  • docs(plan): Arc 5 spike inputs measured — parser sizes, the hybrid ceiling and today's snapshot by @codetalcott in #1083
  • refactor(expressions): delete the three stragglers' documentation blocks and guard the last unguarded evaluation timings (Arc 7 steps 1 and 3, in part) by @codetalcott in #1081
  • refactor(runtime): delete the non-Result execution path — enableResultPattern was always true (Arc 4a step 3, first slice) by @codetalcott in #1082
  • refactor(runtime): delete the message-string signal branches and the signal commands' error fields; repeat reads the break/continue flags (Arc 4a step 3, second slice) by @codetalcott in #1084
  • feat(runtime): completion boundaries — return ends the handler or function, halt/exit inside a def end the function only, the program entry resolves (Arc 4a step 2, second half) by @codetalcott in #1085
  • docs(plan): Arc 4a complete; Arc 4b brief (compile to closures) — claims re-measured by @codetalcott in #1087
  • feat(runtime): every loop reads Results — the thrown signal form is deleted (Arc 4a step 3, last slice) by @codetalcott in #1086
  • feat(bench): hot-path baseline + bench:check (Arc 4b step 0) by @codetalcott in #1088
  • chore(deps): bump qs from 6.15.2 to 6.16.0 by @dependabot[bot] in #1089
  • chore(deps-dev): bump postcss-selector-parser from 7.1.1 to 7.1.5 by @dependabot[bot] in #1090
  • feat(runtime): compile to closures — bodies are Ops, the _runtimeExecute channel is deleted (Arc 4b steps 1+2) by @codetalcott in #1091
  • feat(runtime): handler and def bodies compile once at registration; Program cache is the compile memo (Arc 4b steps 3+4) + Arc 4c brief by @codetalcott in #1092
  • refactor(runtime): delete the dead context fields — bridge ballast, meta, events, the control-flow flags (Arc 4c step 1) by @codetalcott in #1093
  • refactor(runtime): evaluation tracking is an opt-in sink; TypedExecutionContext folds; ContextBridge deleted (Arc 4c step 2) by @codetalcott in #1094
  • refactor(runtime): no Proxy without providers; scope hooks move to core; Scope named (Arc 4c steps 3–5) + Arc 7 brief by @codetalcott in #1095
  • refactor(expressions): one arithmetic across every registry; collection's dead registry shape deleted (Arc 7 steps 1+2) by @codetalcott in #1096
  • refactor(evaluator): core-set expressions referenced statically (Arc 7 step 3) + Arc 5 spike measured and closed by @codetalcott in #1097
  • docs(plan): bundle lineup collapses to two names — decided, on the 4.0 list beside Arc 6b by @codetalcott in #1098
  • refactor(core)!: delete the six @deprecated features/ families (Arc 6b, 4.0 cycle) by @codetalcott in #1099
  • refactor(core)!: delete Lexer/Tokens and the root tokenizer.ts (Arc 6b, 4.0 cycle) by @codetalcott in #1100
  • refactor(core)!: delete three never-reachable exports — Validator, types.d.ts, registry/multilingual (Arc 6b, 4.0 cycle) by @codetalcott in #1101
  • refactor(core)!: delete the async command (Arc 6b, 4.0 cycle) by @codetalcott in #1102
  • fix(bundles): a small bundle fails LOUDLY on a command it lacks and names hyperfixi.js (bundle lineup step 1) by @codetalcott in #1103
  • refactor(bundles)!: the prebuilt lineup collapses to two names — hyperfixi-hx.js and hyperfixi.js (bundle lineup steps 2+3, 4.0 cycle) by @codetalcott in #1105
  • refactor(core)!: delete ContextProviderRegistry and the context-provider Proxy (Arc 6b, 4.0 cycle) by @codetalcott in #1104
  • docs(plan): Arc 6b and the lineup record cite #1105 by @codetalcott in #1106
  • docs(changelog): one 3.0.0, minimal by @codetalcott in #1107
  • ci(publish): npm version --no-workspaces-update — the bump was deleting the framework link by @codetalcott in #1108

Full Changelog: v2.11.1...v3.0.0