@lokascript/planner 4.3.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/CHANGELOG.md +130 -1
  2. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,132 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [4.5.0] - 2026-10-11
11
+
12
+ Pronouns, suffixes and handler heads read as their language. In 4.4.0 every translation wrote `me` and
13
+ `it` in the nominative beside a marker (es `a yo`, de `zu ich`, tr `ben e`, ar `إلى أنا`), wrote every
14
+ case particle as a word of its own (ko `#out 에`, ja `"x" を`), and wrote a Japanese, Bengali or Turkish
15
+ handler head with two markers (`クリック を で`, `ক্লিক তে`, `tıklama i üzerinde`). Each of these is now
16
+ the language's own form, and every reader still takes the old one. The forms are listed for native
17
+ review in `packages/semantic/NATIVE_REVIEW_NEEDED.md`; none has been reviewed yet.
18
+
19
+ ### Added
20
+
21
+ - **`@lokascript/testing-framework`: the English-leak gate counts pronoun case and marker spacing.**
22
+ `case:it` and an unmarked object pronoun (`case:me-object`, `case:it-object`) beside `case:me`; and
23
+ `spacing:<marker>`, a particle ko, ja, bn or tr attaches to its noun written as a word of its own.
24
+ Both shrink-only, both halves (corpus and command shapes), with per-language exit targets in
25
+ `LEAK_TARGETS`.
26
+ - **`@lokascript/semantic`: `toggle … between`** in every language's own words (ja `の間で`, hi `के बीच`,
27
+ he `בין`), with the style form's element written in the language.
28
+ - **`docs-internal/multilingual/FUSED_FORMS.md`**: the design for pronouns fused with their markers and
29
+ suffixes attached to words, with the owner's four questions and their answers.
30
+
31
+ ### Changed
32
+
33
+ - **`@lokascript/semantic` writes a pronoun in the case its marker takes.** Free forms: es `en mí`,
34
+ pt `a mim`, it `a me`, tl `sa akin`, pl `do mnie`, ru `ко мне` / `во мне`, uk `до мене`, de `zu mir`
35
+ / `in mich` (direction) / `auf mir` (location), hi `मुझ में`; `it` after a marker (ru `к этому`, pl `do
36
+ tego`, de `dazu` / `darin` / `darauf`, fr `à lui`, hi `इस में`); `me` as a verb's object (de `zeige
37
+ mich`, ru `покажи меня`). Fused forms: tr `bana` / `beni` / `benden`, `ona` / `onu`; ar `إليّ` / `فيه`;
38
+ he `אליי` / `ממני`; bn `আমাকে` / `আমাতে`; hi `मुझे`; tl `dito`; pt `nele`. Object clitics on the verb:
39
+ es `mostrarme`, it `metterlo`, pt `colocá-lo`, ar `ضعه`; fr writes the object pronoun before the
40
+ infinitive (`le mettre`, `l'afficher`, `me cacher`). Every reader takes the nominative and the English
41
+ forms as before.
42
+ - **`@lokascript/semantic` writes a case particle onto its word** in ko (`"x"을 #out에 넣다`, `나를`,
43
+ each particle in the form the syllable takes), ja (`#outに`, `.aを`) and bn (`#outএ`, `.xকে`), and tr
44
+ fuses a suffix with its own reference words (`sonucu`, `hedefe`, `belgeye`) while code keeps its
45
+ suffix apart (`#out e`) until a reviewer picks a code word's harmony. tr also reads a suffix on code
46
+ after an apostrophe (`#out'a`, `.active'i`).
47
+ - **`@lokascript/semantic`: a custom event in a wait takes the language's `event` word** (`esperar evento foo`,
48
+ ja `イベント foo 待つ`), as `repeat until event X` already does; a known DOM event keeps `esperar transitionend`.
49
+ `wait for <custom event>` was refused in every language. A possessive whose property is a reference word
50
+ (`its.detail`) now reads back as that property, not the language's word for it.
51
+ - **`@lokascript/semantic`: ms and pl read their lexicon's `undefined` word** (`tidak_ditakrifkan`, `niezdefiniowane`),
52
+ which read back as a variable name.
53
+ - **`@lokascript/testing-framework`: the hand-written-input gate** (`hand-written-input.test.ts`): twenty tasks a
54
+ native speaker writes from English, run as written on the engine against upstream; committed with no inputs.
55
+ - **`@lokascript/semantic` writes a handler head as one word**: ja `クリックで` (was `クリック を で`),
56
+ bn `ক্লিকে` (the locative in the form the word takes: `জমাতে` after a vowel; was `ক্লিক তে`),
57
+ tr `tıklamada` (the locative in the form harmony gives: `göndermede`, `değişiklikte`; code keeps it apart, `keyup da`; was `tıklama i üzerinde`). The readers keep taking the two-marker heads.
58
+ - **`@lokascript/semantic` writes a query's scope before the query** in bn, hi, tr, ja and ko (tr
59
+ `bendeki <p/>`, hi `मुझ में स्थित <p/>`, ja `自分 の中の <p/>`), where it wrote English's order.
60
+ - **`@lokascript/semantic`: es and pt write the `focus` and `blur` commands as verbs** (`enfocarme`,
61
+ `focar-me`); the nouns were the events' and still read.
62
+ - **`@lokascript/semantic`: ja's head pattern outranks its fused handler patterns**, so a ja handler's
63
+ body always takes the clause walk: a `js … end` block after `then` and `fetch … as T` round-trip
64
+ where the fused path dropped them. The 2026-08 transformer's verb-first `繰り返し イベント X を まで`
65
+ body no longer reads in ja (the render since 2026-08-28 does).
66
+
67
+ - **`@lokascript/htmx-adapter`: the tr vocab gains `hx-da` as an alias of `hx-on`;** `hx-üzerinde` stays the name
68
+ (the profile's `on` word moved to the locative; a suffix is the wrong register for an attribute name).
69
+
70
+ ### Fixed
71
+
72
+ - **`publish.yml`: a repair run skips a version npm is still processing** (`E409 previously staged`)
73
+ instead of failing the whole run.
74
+
75
+ ## [4.4.0] - 2026-10-10
76
+
77
+ Translations now read as their language. In 4.3.0, 19% of the corpus's translations and 24% of the
78
+ command-shape scripts' translations kept at least one English word, and a third of the corpus kept an
79
+ English event name. Counting only the English a recorded decision does not keep (type names, `url`,
80
+ `debounced at`, …), every one of the 23 languages is now at or under 5% of corpus renders (0.7–4.6%)
81
+ and 10% of command-shape renders (3.9–6.2%), and no translation writes an English event name its
82
+ language has a word for. The words are the owner's vocabulary sheet
83
+ (`docs-internal/multilingual/VOCABULARY_SHEET.md`), decided 2026-10-08.
84
+
85
+ ### Added
86
+
87
+ - **`@hyperfixi/testing-framework`: the English left in a translation is gated.** `english-leaks.ts`
88
+ counts, per render, the English grammar words (the tokens the engine's own parser matched in the
89
+ source), English event names the language's lexicon has a word for, and a nominative `me` beside a
90
+ marker in the 13 languages where that case is wrong. Two shrink-only baselines (the corpus, in
91
+ `test:canonical`, and the command-shape cases, in their shards); `tools/regen-english-leaks-baseline.ts
92
+ --report` prints each language against M2's targets. An English alternative a profile keeps for
93
+ code-switched input, beside a primary that is the language's own, counts as English.
94
+ - **`@lokascript/semantic`: `transition … from … to`** reads and writes in every language (a `source`
95
+ role), and the bare command reads in English. The schema's `destination` role is gone: upstream has
96
+ none, and SOV destination markers read an owned property's owner as an element (tr and qu swapped
97
+ `#foo's *width` silently). English writes `using` for an easing.
98
+ - **`@lokascript/semantic`: `add/remove/hide/show … when <condition>`** in every language, through a
99
+ `condition` role marked with each profile's `when`. It was English in every translation, and refused
100
+ as a bare command.
101
+
102
+ ### Changed
103
+
104
+ - **`@lokascript/semantic` writes each language's own words** for: loop heads (`repeat for x in`,
105
+ `while`, `until`; es `repetir para x en .items`), `I match` / `I am` (written as the third person, and
106
+ back in English as upstream's first person), `does not match`, `fetch … do not throw`, `on first`,
107
+ `go back`, `from elsewhere`, a loop's `index`, `start view transition`, a query's `in`, a conversion's
108
+ `as` (the type name stays English), `the X of Y` inside an expression (es `valor de #price`, ja
109
+ `#priceの値`), `catch` and `finally`, `element x`, and `def` (as the noun "function", es `función
110
+ greet(name)`). bn, th and vi have their own `document` and `window`; he has its own words for all of
111
+ these and for `matches`, `exists`, `or`, `not`, `first`, `next`, `previous`, `closest`, `empty`, `is`,
112
+ `document` and `window`; and the 15 languages that wrote English `forever` have their own (es
113
+ `repetir siempre`, de `endlos`, ja `ずっと`). Every reader still takes the English words. Where a word
114
+ would read back as another (es `en` is also a marker), the translation keeps English's.
115
+ - **`@lokascript/semantic` writes native event names** in he, hi, it, pl, qu, ru, th, uk and vi where
116
+ the lexicon's word reads back; the rest are denylisted with their reasons.
117
+ - **`@lokascript/semantic`: a foreign `put X at start of Y` is written with the language's `prepend`**,
118
+ which English writes back as `put … at start of`.
119
+
120
+ ### Fixed
121
+
122
+ - **`@lokascript/semantic` reads `me` after a marker in the case the marker takes**, as authors write it:
123
+ de `zu mir`, pt `a mim`, pl `do mnie`, ru `ко мне`, uk `до мене`, hi `मुझ में`. Each was read as a
124
+ variable (`zu mir` ran as `to mir`) or refused. Translations still write the nominative.
125
+
126
+ - **`@lokascript/semantic`: `put X at start of Y` translates.** It was refused in all 23 languages: no
127
+ language but English had a pattern for it, and the render wrote `at end of` in its place.
128
+ - **`@lokascript/semantic`: a one-line handler's `put … at end of`** translates in es, id, it, pt, tl and
129
+ uk. The fused handler pattern took the end noun for the destination wherever the language's `at` word
130
+ is also a destination marker.
131
+ - **`@lokascript/semantic`: `^x is …` keeps its copula** in ar, hi and th, which read the `is` word after a
132
+ `^` variable as the pronoun `it`.
133
+ - **`@lokascript/semantic`: an SOV loop body may open with a variable named `index`** (ja `index を …`),
134
+ and `repeat` is never read as an event name.
135
+
10
136
  ## [4.3.0] - 2026-10-07
11
137
 
12
138
  More of what upstream reads now translates, and what does not is refused instead of lost. On the
@@ -1485,7 +1611,10 @@ _Synchronized version release. See git history for details._
1485
1611
  - npm access token stored in GitHub Secrets
1486
1612
  - 2FA recommended for npm organization
1487
1613
 
1488
- [Unreleased]: https://github.com/codetalcott/hyperfixi/compare/v4.2.0...HEAD
1614
+ [Unreleased]: https://github.com/codetalcott/hyperfixi/compare/v4.4.0...HEAD
1615
+ [4.5.0]: https://github.com/codetalcott/hyperfixi/compare/v4.4.0...v4.5.0
1616
+ [4.4.0]: https://github.com/codetalcott/hyperfixi/compare/v4.3.0...v4.4.0
1617
+ [4.3.0]: https://github.com/codetalcott/hyperfixi/compare/v4.2.0...v4.3.0
1489
1618
  [4.2.0]: https://github.com/codetalcott/hyperfixi/compare/v4.1.0...v4.2.0
1490
1619
  [4.1.0]: https://github.com/codetalcott/hyperfixi/compare/v4.0.1...v4.1.0
1491
1620
  [4.0.1]: https://github.com/codetalcott/hyperfixi/compare/v4.0.0...v4.0.1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokascript/planner",
3
- "version": "4.3.0",
3
+ "version": "4.5.0",
4
4
  "description": "BFS planner over affordance graphs — cost-aware planning with preconditions, effects, and template parameters",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",