@lokascript/i18n 2.7.2 → 2.8.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 (60) hide show
  1. package/README.md +1 -1
  2. package/dist/browser.cjs +649 -180
  3. package/dist/browser.cjs.map +1 -1
  4. package/dist/browser.d.cts +2 -2
  5. package/dist/browser.d.ts +2 -2
  6. package/dist/browser.js +649 -180
  7. package/dist/browser.js.map +1 -1
  8. package/dist/dictionaries/index.cjs +370 -174
  9. package/dist/dictionaries/index.cjs.map +1 -1
  10. package/dist/dictionaries/index.js +370 -174
  11. package/dist/dictionaries/index.js.map +1 -1
  12. package/dist/index.cjs +649 -180
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +35 -35
  15. package/dist/index.d.ts +35 -35
  16. package/dist/index.js +649 -180
  17. package/dist/index.js.map +1 -1
  18. package/dist/lokascript-i18n.min.js +1 -1
  19. package/dist/lokascript-i18n.min.js.map +1 -1
  20. package/dist/lokascript-i18n.mjs +678 -175
  21. package/dist/lokascript-i18n.mjs.map +1 -1
  22. package/dist/plugins/vite.cjs +370 -174
  23. package/dist/plugins/vite.cjs.map +1 -1
  24. package/dist/plugins/vite.js +370 -174
  25. package/dist/plugins/vite.js.map +1 -1
  26. package/dist/plugins/webpack.cjs +370 -174
  27. package/dist/plugins/webpack.cjs.map +1 -1
  28. package/dist/plugins/webpack.js +370 -174
  29. package/dist/plugins/webpack.js.map +1 -1
  30. package/dist/{transformer-DM7iplCU.d.cts → transformer--W46PGaW.d.cts} +8 -0
  31. package/dist/{transformer-BA8YX9u1.d.ts → transformer-FU06J6kG.d.ts} +8 -0
  32. package/package.json +7 -9
  33. package/src/dictionaries/ar.ts +20 -15
  34. package/src/dictionaries/bn.ts +10 -5
  35. package/src/dictionaries/de.ts +20 -8
  36. package/src/dictionaries/es.ts +10 -5
  37. package/src/dictionaries/fr.ts +15 -6
  38. package/src/dictionaries/he.ts +4 -0
  39. package/src/dictionaries/hi.ts +3 -2
  40. package/src/dictionaries/id.ts +31 -16
  41. package/src/dictionaries/it.ts +11 -4
  42. package/src/dictionaries/ja.ts +23 -15
  43. package/src/dictionaries/ko.ts +10 -5
  44. package/src/dictionaries/ms.ts +4 -1
  45. package/src/dictionaries/pl.ts +12 -5
  46. package/src/dictionaries/pt.ts +10 -5
  47. package/src/dictionaries/qu.ts +30 -19
  48. package/src/dictionaries/ru.ts +5 -2
  49. package/src/dictionaries/sw.ts +29 -14
  50. package/src/dictionaries/th.ts +5 -2
  51. package/src/dictionaries/tl.ts +4 -1
  52. package/src/dictionaries/tr.ts +24 -16
  53. package/src/dictionaries/uk.ts +5 -2
  54. package/src/dictionaries/vi.ts +23 -17
  55. package/src/dictionaries/zh.ts +24 -9
  56. package/src/grammar/grammar.test.ts +152 -0
  57. package/src/grammar/profiles/index.ts +316 -1
  58. package/src/grammar/transformer.ts +64 -1
  59. package/src/new-languages.test.ts +9 -3
  60. package/src/positional-keyword-drift.test.ts +6 -19
@@ -339,17 +339,20 @@ var es = {
339
339
  mouseup: "rat\xF3narriba",
340
340
  mouseenter: "rat\xF3nentrar",
341
341
  mouseleave: "rat\xF3nsalir",
342
- mouseover: "rat\xF3nencima",
343
- mouseout: "rat\xF3nfuera",
342
+ // V3 Batch 2: fused forms split to the S5b/tokenizer-known forms (the fused
343
+ // spellings captured event=expression:undefined — broken listeners)
344
+ mouseover: "rat\xF3n encima",
345
+ mouseout: "rat\xF3n fuera",
344
346
  mousemove: "rat\xF3nmover",
345
- keydown: "teclaabajo",
346
- keyup: "teclaarriba",
347
+ keydown: "tecla abajo",
348
+ keyup: "tecla arriba",
347
349
  keypress: "teclapresar",
348
350
  focus: "enfocar",
349
351
  blur: "desenfocar",
350
352
  change: "cambiar",
351
353
  input: "entrada",
352
- submit: "enviar",
354
+ submit: "env\xEDo",
355
+ // Batch 3: enviar is the send verb — on-submit listener captured event "send"
353
356
  reset: "reiniciar",
354
357
  load: "cargar",
355
358
  unload: "descargar",
@@ -429,6 +432,9 @@ var es = {
429
432
  properties: "propiedades"
430
433
  },
431
434
  expressions: {
435
+ characters: "caracteres",
436
+ inclusive: "inclusivo",
437
+ exclusive: "exclusivo",
432
438
  first: "primero",
433
439
  last: "\xFAltimo",
434
440
  next: "siguiente",
@@ -516,7 +522,8 @@ var ko = {
516
522
  clear: "\uC9C0\uC6B0\uAE30",
517
523
  close: "\uB2EB\uAE30",
518
524
  open: "\uC5F4\uAE30",
519
- select: "\uC120\uD0DD",
525
+ select: "\uACE0\uB974\uAE30",
526
+ // Batch 3: 선택 is the pick keyword — bare select rendered with it parses null
520
527
  clone: "\uBCF5\uC81C",
521
528
  prepend: "\uC55E\uC5D0\uCD94\uAC00",
522
529
  socket: "\uC18C\uCF13"
@@ -557,14 +564,17 @@ var ko = {
557
564
  change: "\uBCC0\uACBD",
558
565
  input: "\uC785\uB825",
559
566
  submit: "\uC81C\uCD9C",
560
- reset: "\uB9AC\uC14B",
567
+ reset: "\uC7AC\uC124\uC815",
568
+ // Batch 3: 리셋 captured on.event as expression (broken listener) — profile word round-trips
561
569
  load: "\uB85C\uB4DC",
562
- unload: "\uC5B8\uB85C\uB4DC",
570
+ unload: "unload",
563
571
  resize: "\uB9AC\uC0AC\uC774\uC988",
564
572
  scroll: "\uC2A4\uD06C\uB864",
565
- touchstart: "\uD130\uCE58\uC2DC\uC791",
573
+ // V3c burn-down (2026-07-14): English passthrough — no native form round-trips
574
+ // on the parse side (probe: split forms shatter, fused forms capture verbatim).
575
+ touchstart: "touchstart",
566
576
  touchend: "\uD130\uCE58\uC885\uB8CC",
567
- touchmove: "\uD130\uCE58\uC774\uB3D9",
577
+ touchmove: "touchmove",
568
578
  touchcancel: "\uD130\uCE58\uCDE8\uC18C"
569
579
  },
570
580
  logical: {
@@ -637,6 +647,9 @@ var ko = {
637
647
  properties: "\uD504\uB85C\uD37C\uD2F0\uB4E4"
638
648
  },
639
649
  expressions: {
650
+ characters: "\uBB38\uC790",
651
+ inclusive: "\uD3EC\uD568",
652
+ exclusive: "\uC81C\uC678",
640
653
  first: "\uCCAB\uBC88\uC9F8",
641
654
  last: "\uB9C8\uC9C0\uB9C9",
642
655
  next: "\uB2E4\uC74C",
@@ -750,16 +763,26 @@ var zh = {
750
763
  events: {
751
764
  click: "\u70B9\u51FB",
752
765
  dblclick: "\u53CC\u51FB",
753
- mousedown: "\u9F20\u6807\u6309\u4E0B",
754
- mouseup: "\u9F20\u6807\u62AC\u8D77",
755
- mouseenter: "\u9F20\u6807\u8FDB\u5165",
756
- mouseleave: "\u9F20\u6807\u79BB\u5F00",
757
- mouseover: "\u9F20\u6807\u60AC\u505C",
766
+ // mousedown/mouseup: English passthrough — no native form round-trips on the
767
+ // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms
768
+ // shattered to their first word — live broken listeners in repeat-until-event).
769
+ // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.
770
+ mousedown: "mousedown",
771
+ mouseup: "mouseup",
772
+ mouseenter: "mouseenter",
773
+ mouseleave: "mouseleave",
774
+ // V3 Batch 2: 鼠标悬停 captured no event (expression:undefined) — realigned
775
+ // to the tokenizer-registered 鼠标移入 (also S5b-listed). 按键抬起
776
+ // prefix-shattered to 按键 and captured `keydown` (a keyup handler firing
777
+ // on keydown) → 松键, the S5b/tokenizer form. keydown keeps 按键按下
778
+ // (captures keydown via the registered 按键 prefix; S5b-aliased) — fixing
779
+ // it to bare 按键 would collide with keypress below.
780
+ mouseover: "\u9F20\u6807\u79FB\u5165",
758
781
  mouseout: "\u9F20\u6807\u79FB\u51FA",
759
782
  mousemove: "\u9F20\u6807\u79FB\u52A8",
760
783
  keydown: "\u6309\u952E\u6309\u4E0B",
761
- keyup: "\u6309\u952E\u62AC\u8D77",
762
- keypress: "\u6309\u952E",
784
+ keyup: "\u677E\u952E",
785
+ keypress: "keypress",
763
786
  focus: "\u805A\u7126",
764
787
  blur: "\u5931\u7126",
765
788
  change: "\u6539\u53D8",
@@ -771,9 +794,11 @@ var zh = {
771
794
  resize: "\u8C03\u6574\u5927\u5C0F",
772
795
  scroll: "\u6EDA\u52A8",
773
796
  touchstart: "\u89E6\u6478\u5F00\u59CB",
774
- touchend: "\u89E6\u6478\u7ED3\u675F",
797
+ touchend: "touchend",
775
798
  touchmove: "\u89E6\u6478\u79FB\u52A8",
776
- touchcancel: "\u89E6\u6478\u53D6\u6D88"
799
+ // V3c burn-down (2026-07-14): English passthrough — no native form round-trips
800
+ // on the parse side (probe: split forms shatter, fused forms capture verbatim).
801
+ touchcancel: "touchcancel"
777
802
  },
778
803
  logical: {
779
804
  when: "\u5F53",
@@ -845,6 +870,9 @@ var zh = {
845
870
  properties: "\u7279\u6027\u96C6"
846
871
  },
847
872
  expressions: {
873
+ characters: "\u5B57\u7B26",
874
+ inclusive: "\u5305\u542B",
875
+ exclusive: "\u6392\u9664",
848
876
  first: "\u7B2C\u4E00\u4E2A",
849
877
  last: "\u6700\u540E\u4E00\u4E2A",
850
878
  next: "\u4E0B\u4E00\u4E2A",
@@ -956,15 +984,21 @@ var fr = {
956
984
  events: {
957
985
  click: "clic",
958
986
  dblclick: "doubleclic",
959
- mousedown: "sourisappuy\xE9e",
960
- mouseup: "sourisrel\xE2ch\xE9e",
987
+ // mousedown/mouseup: English passthrough — no native form round-trips on the
988
+ // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms
989
+ // shattered to their first word — live broken listeners in repeat-until-event).
990
+ // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.
991
+ mousedown: "mousedown",
992
+ mouseup: "mouseup",
961
993
  mouseenter: "sourisentrer",
962
994
  mouseleave: "sourissortir",
963
- mouseover: "sourissur",
964
- mouseout: "sourisdehors",
995
+ // V3 Batch 2: fused forms split to the S5b/tokenizer-known forms (the fused
996
+ // spellings captured event=expression:undefined — broken listeners)
997
+ mouseover: "souris dessus",
998
+ mouseout: "souris dehors",
965
999
  mousemove: "sourisbouger",
966
- keydown: "toucheappuy\xE9e",
967
- keyup: "toucherel\xE2ch\xE9e",
1000
+ keydown: "touche bas",
1001
+ keyup: "touche haut",
968
1002
  keypress: "touchepress\xE9e",
969
1003
  focus: "focus",
970
1004
  blur: "flou",
@@ -1050,6 +1084,9 @@ var fr = {
1050
1084
  properties: "propri\xE9t\xE9s"
1051
1085
  },
1052
1086
  expressions: {
1087
+ characters: "caract\xE8res",
1088
+ inclusive: "inclusif",
1089
+ exclusive: "exclusif",
1053
1090
  first: "premier",
1054
1091
  last: "dernier",
1055
1092
  next: "suivant",
@@ -1140,7 +1177,8 @@ var de = {
1140
1177
  // löschen is a remove alternative in the profile
1141
1178
  close: "schlie\xDFen",
1142
1179
  open: "\xF6ffnen",
1143
- select: "ausw\xE4hlen",
1180
+ select: "markieren",
1181
+ // Batch 3: auswählen is the pick keyword — bare select rendered with it parses null
1144
1182
  clone: "klonen",
1145
1183
  prepend: "voranstellen",
1146
1184
  focus: "fokussieren"
@@ -1166,18 +1204,27 @@ var de = {
1166
1204
  events: {
1167
1205
  click: "klick",
1168
1206
  dblclick: "doppelklick",
1169
- mousedown: "mausunten",
1170
- mouseup: "mausoben",
1207
+ // mousedown/mouseup: English passthrough — no native form round-trips on the
1208
+ // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms
1209
+ // shattered to their first word — live broken listeners in repeat-until-event).
1210
+ // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.
1211
+ mousedown: "mousedown",
1212
+ mouseup: "mouseup",
1171
1213
  mouseenter: "mauseintreten",
1172
1214
  mouseleave: "mausverlassen",
1173
- mouseover: "maus\xFCber",
1174
- mouseout: "maushinaus",
1215
+ // V3 Batch 2: fused/dead event words realigned to the de tokenizer's
1216
+ // registered forms (S5b's `maus über`/`taste runter` are aspirational — they
1217
+ // do not tokenize; `mausüber` etc. captured event=expression:undefined).
1218
+ mouseover: "maus dr\xFCber",
1219
+ mouseout: "maus weg",
1175
1220
  mousemove: "mausbewegen",
1176
- keydown: "tasteunten",
1177
- keyup: "tasteoben",
1221
+ keydown: "taste unten",
1222
+ keyup: "taste oben",
1178
1223
  keypress: "tastedr\xFCcken",
1179
1224
  focus: "fokus",
1180
- blur: "unscharf",
1225
+ // matches commands.blur (which shadows this at render time) and the live
1226
+ // corpus render; `unscharf` was dead vocab that captured no event
1227
+ blur: "defokussieren",
1181
1228
  change: "\xE4ndern",
1182
1229
  input: "eingabe",
1183
1230
  submit: "absenden",
@@ -1260,6 +1307,9 @@ var de = {
1260
1307
  properties: "eigenschaften"
1261
1308
  },
1262
1309
  expressions: {
1310
+ characters: "Zeichen",
1311
+ inclusive: "inklusiv",
1312
+ exclusive: "exklusiv",
1263
1313
  first: "erste",
1264
1314
  last: "letzte",
1265
1315
  next: "n\xE4chste",
@@ -1352,7 +1402,8 @@ var ja = {
1352
1402
  clear: "\u30AF\u30EA\u30A2",
1353
1403
  close: "\u9589\u3058\u308B",
1354
1404
  open: "\u958B\u304F",
1355
- select: "\u9078\u629E",
1405
+ select: "\u9078\u3076",
1406
+ // Batch 3: 選択 is the pick keyword — bare select rendered with it parses null
1356
1407
  clone: "\u8907\u88FD",
1357
1408
  prepend: "\u5148\u982D\u8FFD\u52A0",
1358
1409
  socket: "\u30BD\u30B1\u30C3\u30C8"
@@ -1377,17 +1428,22 @@ var ja = {
1377
1428
  },
1378
1429
  events: {
1379
1430
  click: "\u30AF\u30EA\u30C3\u30AF",
1380
- dblclick: "\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF",
1431
+ dblclick: "dblclick",
1381
1432
  mousedown: "\u30DE\u30A6\u30B9\u62BC\u4E0B",
1382
1433
  mouseup: "\u30DE\u30A6\u30B9\u89E3\u653E",
1383
- mouseenter: "\u30DE\u30A6\u30B9\u5165\u308B",
1384
- mouseleave: "\u30DE\u30A6\u30B9\u96E2\u308C\u308B",
1385
- mouseover: "\u30DE\u30A6\u30B9\u4E0A",
1386
- mouseout: "\u30DE\u30A6\u30B9\u5916",
1387
- mousemove: "\u30DE\u30A6\u30B9\u79FB\u52D5",
1388
- keydown: "\u30AD\u30FC\u62BC\u4E0B",
1389
- keyup: "\u30AD\u30FC\u89E3\u653E",
1390
- keypress: "\u30AD\u30FC\u62BC\u3059",
1434
+ // V3c burn-down (2026-07-14): English passthrough — no native form round-trips
1435
+ // on the parse side (probe: split forms shatter, fused forms capture verbatim).
1436
+ mouseenter: "mouseenter",
1437
+ mouseleave: "mouseleave",
1438
+ // V3 Batch 2: kanji compounds realigned to the S5b/tokenizer katakana
1439
+ // loanwords (the standard JS event terms; the compounds captured
1440
+ // event=expression:undefined — broken listeners)
1441
+ mouseover: "\u30DE\u30A6\u30B9\u30AA\u30FC\u30D0\u30FC",
1442
+ mouseout: "\u30DE\u30A6\u30B9\u30A2\u30A6\u30C8",
1443
+ mousemove: "mousemove",
1444
+ keydown: "\u30AD\u30FC\u30C0\u30A6\u30F3",
1445
+ keyup: "\u30AD\u30FC\u30A2\u30C3\u30D7",
1446
+ keypress: "\u30AD\u30FC\u30D7\u30EC\u30B9",
1391
1447
  focus: "\u30D5\u30A9\u30FC\u30AB\u30B9",
1392
1448
  blur: "\u307C\u304B\u3057",
1393
1449
  change: "\u5909\u66F4",
@@ -1395,13 +1451,13 @@ var ja = {
1395
1451
  submit: "\u9001\u4FE1",
1396
1452
  reset: "\u30EA\u30BB\u30C3\u30C8",
1397
1453
  load: "\u8AAD\u307F\u8FBC\u307F",
1398
- unload: "\u8AAD\u307F\u8FBC\u307F\u89E3\u9664",
1454
+ unload: "unload",
1399
1455
  resize: "\u30B5\u30A4\u30BA\u5909\u66F4",
1400
1456
  scroll: "\u30B9\u30AF\u30ED\u30FC\u30EB",
1401
- touchstart: "\u30BF\u30C3\u30C1\u958B\u59CB",
1402
- touchend: "\u30BF\u30C3\u30C1\u7D42\u4E86",
1403
- touchmove: "\u30BF\u30C3\u30C1\u79FB\u52D5",
1404
- touchcancel: "\u30BF\u30C3\u30C1\u30AD\u30E3\u30F3\u30BB\u30EB"
1457
+ touchstart: "touchstart",
1458
+ touchend: "touchend",
1459
+ touchmove: "touchmove",
1460
+ touchcancel: "touchcancel"
1405
1461
  },
1406
1462
  logical: {
1407
1463
  when: "\u6642",
@@ -1473,6 +1529,9 @@ var ja = {
1473
1529
  properties: "\u30D7\u30ED\u30D1\u30C6\u30A3\u7FA4"
1474
1530
  },
1475
1531
  expressions: {
1532
+ characters: "\u6587\u5B57",
1533
+ inclusive: "\u542B\u3080",
1534
+ exclusive: "\u9664\u304F",
1476
1535
  first: "\u6700\u521D",
1477
1536
  last: "\u6700\u5F8C",
1478
1537
  next: "\u6B21",
@@ -1559,7 +1618,8 @@ var ar = {
1559
1618
  // امسح is a remove alternative in the profile
1560
1619
  close: "\u0623\u063A\u0644\u0642",
1561
1620
  open: "\u0627\u0641\u062A\u062D",
1562
- select: "\u0627\u062E\u062A\u0631",
1621
+ select: "\u0638\u0644\u0644",
1622
+ // Batch 3: اختر is the pick keyword — bare select rendered with it parses null
1563
1623
  clone: "\u0627\u0633\u062A\u0646\u0633\u062E",
1564
1624
  prepend: "\u0633\u0628\u0642",
1565
1625
  socket: "\u0645\u0642\u0628\u0633"
@@ -1584,31 +1644,33 @@ var ar = {
1584
1644
  },
1585
1645
  events: {
1586
1646
  click: "\u0646\u0642\u0631",
1587
- dblclick: "\u0646\u0642\u0631 \u0645\u0632\u062F\u0648\u062C",
1588
- mousedown: "\u0641\u0623\u0631\u0629 \u0623\u0633\u0641\u0644",
1589
- mouseup: "\u0641\u0623\u0631\u0629 \u0623\u0639\u0644\u0649",
1590
- mouseenter: "\u0641\u0623\u0631\u0629 \u062F\u062E\u0648\u0644",
1591
- mouseleave: "\u0641\u0623\u0631\u0629 \u062E\u0631\u0648\u062C",
1647
+ // V3c burn-down (2026-07-14): English passthrough — no native form round-trips
1648
+ // on the parse side (probe: split forms shatter, fused forms capture verbatim).
1649
+ dblclick: "dblclick",
1650
+ mousedown: "mousedown",
1651
+ mouseup: "mouseup",
1652
+ mouseenter: "mouseenter",
1653
+ mouseleave: "mouseleave",
1592
1654
  mouseover: "\u0641\u0623\u0631\u0629 \u0641\u0648\u0642",
1593
- mouseout: "\u0641\u0623\u0631\u0629 \u062E\u0627\u0631\u062C",
1594
- mousemove: "\u0641\u0623\u0631\u0629 \u062A\u062D\u0631\u0643",
1655
+ mouseout: "mouseout",
1656
+ mousemove: "mousemove",
1595
1657
  keydown: "\u0645\u0641\u062A\u0627\u062D \u0623\u0633\u0641\u0644",
1596
1658
  keyup: "\u0645\u0641\u062A\u0627\u062D \u0623\u0639\u0644\u0649",
1597
- keypress: "\u0645\u0641\u062A\u0627\u062D \u0636\u063A\u0637",
1659
+ keypress: "keypress",
1598
1660
  focus: "\u062A\u0631\u0643\u064A\u0632",
1599
1661
  blur: "\u0636\u0628\u0627\u0628\u064A\u0629",
1600
1662
  change: "\u062A\u063A\u064A\u064A\u0631",
1601
1663
  input: "\u0625\u062F\u062E\u0627\u0644",
1602
1664
  submit: "\u0625\u0631\u0633\u0627\u0644",
1603
- reset: "\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646",
1665
+ reset: "reset",
1604
1666
  load: "\u062A\u062D\u0645\u064A\u0644",
1605
- unload: "\u0625\u0644\u063A\u0627\u0621 \u062A\u062D\u0645\u064A\u0644",
1667
+ unload: "unload",
1606
1668
  resize: "\u062A\u063A\u064A\u064A\u0631 \u062D\u062C\u0645",
1607
1669
  scroll: "\u062A\u0645\u0631\u064A\u0631",
1608
- touchstart: "\u0628\u062F\u0627\u064A\u0629 \u0644\u0645\u0633",
1609
- touchend: "\u0646\u0647\u0627\u064A\u0629 \u0644\u0645\u0633",
1610
- touchmove: "\u062A\u062D\u0631\u0643 \u0644\u0645\u0633",
1611
- touchcancel: "\u0625\u0644\u063A\u0627\u0621 \u0644\u0645\u0633"
1670
+ touchstart: "touchstart",
1671
+ touchend: "touchend",
1672
+ touchmove: "touchmove",
1673
+ touchcancel: "touchcancel"
1612
1674
  },
1613
1675
  logical: {
1614
1676
  when: "\u0639\u0646\u062F\u0645\u0627",
@@ -1680,6 +1742,9 @@ var ar = {
1680
1742
  properties: "\u062E\u0635\u0627\u0626\u0635"
1681
1743
  },
1682
1744
  expressions: {
1745
+ characters: "\u062D\u0631\u0648\u0641",
1746
+ inclusive: "\u0634\u0627\u0645\u0644",
1747
+ exclusive: "\u062D\u0635\u0631\u064A",
1683
1748
  first: "\u0623\u0648\u0644",
1684
1749
  last: "\u0622\u062E\u0631",
1685
1750
  next: "\u0627\u0644\u062A\u0627\u0644\u064A",
@@ -1767,7 +1832,8 @@ var tr = {
1767
1832
  clear: "temizle",
1768
1833
  close: "kapat",
1769
1834
  open: "a\xE7",
1770
- select: "se\xE7",
1835
+ select: "vurgula",
1836
+ // Batch 3: seç is the pick keyword — bare select rendered with it parses null
1771
1837
  clone: "klonla",
1772
1838
  prepend: "ba\u015F\u0131naekle",
1773
1839
  socket: "soket"
@@ -1792,34 +1858,40 @@ var tr = {
1792
1858
  },
1793
1859
  events: {
1794
1860
  click: "t\u0131klama",
1795
- dblclick: "\xE7ift_t\u0131klama",
1861
+ dblclick: "dblclick",
1796
1862
  // Fused (no `_`): the semantic tokenizer splits on `_`, breaking event
1797
1863
  // recognition (mousedown → "bas" / mouseup mis-captured). Mirrors the #535
1798
1864
  // ru/uk fuse + #510 resize fix.
1799
1865
  mousedown: "farebas",
1800
1866
  mouseup: "fareb\u0131rak",
1801
- mouseenter: "fare_gir",
1802
- mouseleave: "fare_\xE7\u0131k",
1803
- mouseover: "fare_\xFCst\xFC",
1804
- mouseout: "fare_d\u0131\u015F\u0131",
1805
- mousemove: "fare_hareket",
1806
- keydown: "tu\u015F_bas",
1807
- keyup: "tu\u015F_b\u0131rak",
1808
- keypress: "tu\u015F_bas\u0131m",
1867
+ mouseenter: "mouseenter",
1868
+ mouseleave: "mouseleave",
1869
+ // V3 Batch 2: same `_`-split class (tuş_bas captured verbatim `bas` — a
1870
+ // listener for a DOM event named "bas") — realigned to the S5b/tokenizer
1871
+ // fused forms.
1872
+ mouseover: "farei\xE7inde",
1873
+ mouseout: "fared\u0131\u015F\u0131nda",
1874
+ mousemove: "mousemove",
1875
+ keydown: "tu\u015Fbasma",
1876
+ keyup: "tu\u015Fb\u0131rakma",
1877
+ // V3c burn-down (2026-07-14): English passthrough — no native form round-trips
1878
+ // on the parse side (probe: split forms shatter, fused forms capture verbatim).
1879
+ keypress: "keypress",
1809
1880
  focus: "odak",
1810
1881
  blur: "bulan\u0131k",
1811
1882
  change: "de\u011Fi\u015Fim",
1812
1883
  input: "giri\u015F",
1813
- submit: "g\xF6nder",
1884
+ submit: "g\xF6nderme",
1885
+ // Batch 3: gönder is the send verb — on-submit listener captured event "send"
1814
1886
  reset: "s\u0131f\u0131rla",
1815
1887
  load: "y\xFCkle",
1816
- unload: "y\xFCkle_kald\u0131r",
1888
+ unload: "unload",
1817
1889
  resize: "boyutland\u0131rma",
1818
1890
  scroll: "kayd\u0131r",
1819
- touchstart: "dokunma_ba\u015Fla",
1820
- touchend: "dokunma_bitir",
1821
- touchmove: "dokunma_hareket",
1822
- touchcancel: "dokunma_iptal"
1891
+ touchstart: "touchstart",
1892
+ touchend: "touchend",
1893
+ touchmove: "touchmove",
1894
+ touchcancel: "touchcancel"
1823
1895
  },
1824
1896
  logical: {
1825
1897
  when: "iken",
@@ -1890,6 +1962,9 @@ var tr = {
1890
1962
  properties: "\xF6zellikler"
1891
1963
  },
1892
1964
  expressions: {
1965
+ characters: "karakterler",
1966
+ inclusive: "dahil",
1967
+ exclusive: "hari\xE7",
1893
1968
  first: "ilk",
1894
1969
  // 'son' is also the END keyword emission (block terminator), and the
1895
1970
  // parser's end-recognizers match it by value — so a positional `last`
@@ -1986,9 +2061,11 @@ var id = {
1986
2061
  breakpoint: "titik-henti",
1987
2062
  clear: "bersihkan",
1988
2063
  // hapus is the remove PRIMARY in the profile
1989
- close: "tutup",
2064
+ close: "tutupkan",
2065
+ // Batch 3: tutup is the hide keyword — rendered close parsed as action=hide
1990
2066
  open: "buka",
1991
- select: "pilih",
2067
+ select: "tandai",
2068
+ // Batch 3: pilih is the pick keyword — bare select rendered with it parses null
1992
2069
  clone: "klon",
1993
2070
  prepend: "awali"
1994
2071
  },
@@ -2012,17 +2089,27 @@ var id = {
2012
2089
  },
2013
2090
  events: {
2014
2091
  click: "klik",
2015
- dblclick: "klik_ganda",
2016
- mousedown: "tekan_mouse",
2017
- mouseup: "lepas_mouse",
2018
- mouseenter: "mouse_masuk",
2019
- mouseleave: "mouse_keluar",
2020
- mouseover: "mouse_atas",
2021
- mouseout: "mouse_luar",
2022
- mousemove: "gerak_mouse",
2092
+ dblclick: "dblclick",
2093
+ // mousedown/mouseup: English passthrough — no native form round-trips on the
2094
+ // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms
2095
+ // shattered to their first word — live broken listeners in repeat-until-event).
2096
+ // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.
2097
+ mousedown: "mousedown",
2098
+ mouseup: "mouseup",
2099
+ mouseenter: "mouseenter",
2100
+ mouseleave: "mouseleave",
2101
+ // V3 Batch 2: mouse_atas/mouse_luar captured no event (the S5b forms
2102
+ // `mouse masuk`/`mouse keluar` are aspirational — they don't tokenize
2103
+ // either) — realigned to the tokenizer-registered natives. keydown keeps
2104
+ // tekan_tombol (captures keydown via the registered `tekan`; S5b-aliased).
2105
+ // keyup has NO parseable native (lepas is unregistered) → English
2106
+ // passthrough, matching the blur/reset precedent below.
2107
+ mouseover: "arahkan",
2108
+ mouseout: "tinggalkan",
2109
+ mousemove: "mousemove",
2023
2110
  keydown: "tekan_tombol",
2024
- keyup: "lepas_tombol",
2025
- keypress: "pencet_tombol",
2111
+ keyup: "keyup",
2112
+ keypress: "keypress",
2026
2113
  focus: "fokus",
2027
2114
  blur: "blur",
2028
2115
  change: "ubah",
@@ -2033,10 +2120,12 @@ var id = {
2033
2120
  unload: "bongkar",
2034
2121
  resize: "ubah_ukuran",
2035
2122
  scroll: "gulir",
2036
- touchstart: "mulai_sentuh",
2037
- touchend: "akhir_sentuh",
2038
- touchmove: "gerak_sentuh",
2039
- touchcancel: "batal_sentuh"
2123
+ touchstart: "touchstart",
2124
+ touchend: "touchend",
2125
+ touchmove: "touchmove",
2126
+ // V3c burn-down (2026-07-14): English passthrough — no native form round-trips
2127
+ // on the parse side (probe: split forms shatter, fused forms capture verbatim).
2128
+ touchcancel: "touchcancel"
2040
2129
  },
2041
2130
  logical: {
2042
2131
  when: "ketika",
@@ -2107,6 +2196,9 @@ var id = {
2107
2196
  properties: "properti_properti"
2108
2197
  },
2109
2198
  expressions: {
2199
+ characters: "karakter",
2200
+ inclusive: "inklusif",
2201
+ exclusive: "eksklusif",
2110
2202
  first: "pertama",
2111
2203
  last: "terakhir",
2112
2204
  next: "berikutnya",
@@ -2212,8 +2304,10 @@ var qu = {
2212
2304
  breakpoint: "sayachinay",
2213
2305
  clear: "pichay",
2214
2306
  close: "wichqay",
2215
- open: "kichay",
2216
- select: "akllay",
2307
+ open: "paskay",
2308
+ // Batch 3: kichay is the trigger keyword — rendered open parsed null
2309
+ select: "marcay",
2310
+ // Batch 3: akllay is the pick keyword — bare select rendered with it parses null
2217
2311
  clone: "kikinchay",
2218
2312
  prepend: "\xF1awpachiy",
2219
2313
  socket: "tinkina"
@@ -2238,33 +2332,42 @@ var qu = {
2238
2332
  },
2239
2333
  events: {
2240
2334
  click: "\xF1itiy",
2241
- dblclick: "iskay_\xF1itiy",
2335
+ dblclick: "dblclick",
2242
2336
  // Fused (no `_`): the semantic tokenizer splits on `_` — and `rat_ñitiy` then
2243
2337
  // mis-captured as the `click` event (ñitiy→click). Mirrors the #535 ru/uk fuse.
2244
2338
  mousedown: "rat\xF1itiy",
2245
2339
  mouseup: "rathuqariy",
2246
- mouseenter: "rat_yaykuy",
2247
- mouseleave: "rat_lluqsiy",
2248
- mouseover: "rat_hawapi",
2249
- mouseout: "rat_hawamanta",
2250
- mousemove: "rat_kuyuy",
2251
- keydown: "yupana_\xF1itiy",
2252
- keyup: "yupana_huqariy",
2253
- keypress: "yupana_\xF1itana",
2340
+ mouseenter: "mouseenter",
2341
+ mouseleave: "mouseleave",
2342
+ mouseover: "mouseover",
2343
+ mouseout: "mouseout",
2344
+ mousemove: "mousemove",
2345
+ // V3 Batch 2: `yupana_ñitiy` split at `_` and mis-captured as the `click`
2346
+ // event (ñitiy→click, the same mechanism as the mousedown fuse above);
2347
+ // `yupana_huqariy` captured verbatim `huqariy`. Realigned to the
2348
+ // S5b/tokenizer forms.
2349
+ keydown: "llave uray",
2350
+ keyup: "llave hawa",
2351
+ keypress: "keypress",
2254
2352
  focus: "qhaway",
2255
2353
  blur: "paqariy",
2256
- change: "tikray",
2354
+ change: "kambiay",
2355
+ // Batch 3: tikray is the toggle verb — on-change listener captured event "toggle"
2257
2356
  input: "yaykuchiy",
2258
- submit: "kachay",
2259
- reset: "qallariy",
2357
+ submit: "apaykachay",
2358
+ // Batch 3: kachay is the send verb — on-submit captured "send" in one corpus slot
2359
+ reset: "musuqchay",
2360
+ // Batch 3: qallariy is the init/start word — on-reset listener captured event "default"
2260
2361
  load: "apakuy",
2261
- unload: "urmay",
2362
+ unload: "unload",
2262
2363
  resize: "hatun_kay",
2263
2364
  scroll: "kunray",
2264
- touchstart: "llamiy_qallay",
2265
- touchend: "llamiy_tukuy",
2266
- touchmove: "llamiy_kuyuy",
2267
- touchcancel: "llamiy_hark_ay"
2365
+ // V3c burn-down (2026-07-14): English passthrough — no native form round-trips
2366
+ // on the parse side (probe: split forms shatter, fused forms capture verbatim).
2367
+ touchstart: "touchstart",
2368
+ touchend: "touchend",
2369
+ touchmove: "touchmove",
2370
+ touchcancel: "touchcancel"
2268
2371
  },
2269
2372
  logical: {
2270
2373
  when: "maykama",
@@ -2339,6 +2442,11 @@ var qu = {
2339
2442
  properties: "kanaykuna"
2340
2443
  },
2341
2444
  expressions: {
2445
+ // Pick unit word (arc 3): native-first per qu convention — `sanampa`
2446
+ // ("sign/letter", the standard term for alphabet characters) over a
2447
+ // loanword. Paired with the QUECHUA_EXTRAS entry in the semantic
2448
+ // tokenizer; both surfaces must match verbatim.
2449
+ characters: "sanampa",
2342
2450
  first: "\xF1awpaq",
2343
2451
  last: "qhipa",
2344
2452
  next: "qhipantin",
@@ -2397,7 +2505,10 @@ var sw = {
2397
2505
  wait: "ngoja",
2398
2506
  fetch: "leta",
2399
2507
  call: "ita",
2400
- return: "rudi",
2508
+ // `rudisha` (transitive, "give back a value"), not `rudi` ("go back"): the
2509
+ // semantic profile reads `rudisha`/`rejea`, so emitting `rudi` produced sw code
2510
+ // the parser could not read back. Kept clear of `rudia` (= `repeat`).
2511
+ return: "rudisha",
2401
2512
  make: "tengeneza",
2402
2513
  // auditor: dict emitted a word the profile reads differently
2403
2514
  log: "andika",
@@ -2411,7 +2522,8 @@ var sw = {
2411
2522
  go: "nenda",
2412
2523
  pushUrl: "sukumaUrl",
2413
2524
  replaceUrl: "badilishaUrl",
2414
- copy: "nakili",
2525
+ copy: "nakala",
2526
+ // Batch 3: nakili is the clone keyword — rendered copy parsed as action=clone
2415
2527
  pick: "chagua",
2416
2528
  beep: "lia",
2417
2529
  js: "js",
@@ -2430,7 +2542,8 @@ var sw = {
2430
2542
  // futa is a remove alternative in the profile
2431
2543
  close: "funga",
2432
2544
  open: "fungua",
2433
- select: "chagua",
2545
+ select: "alama",
2546
+ // Batch 3: chagua is the pick keyword — bare select rendered with it parses null
2434
2547
  clone: "nakili",
2435
2548
  prepend: "tanguliza",
2436
2549
  focus: "lenga",
@@ -2463,31 +2576,42 @@ var sw = {
2463
2576
  },
2464
2577
  events: {
2465
2578
  click: "bonyeza",
2466
- dblclick: "bonyeza_mara_mbili",
2579
+ // V3c burn-down (2026-07-14): English passthrough — no native form round-trips
2580
+ // on the parse side (probe: split forms shatter, fused forms capture verbatim).
2581
+ dblclick: "dblclick",
2467
2582
  mousedown: "panya_shuka",
2468
2583
  mouseup: "panya_juu",
2469
2584
  mouseenter: "panya_ingia",
2470
2585
  mouseleave: "panya_toka",
2471
- mouseover: "panya_juu",
2586
+ // V3 Batch 2: panya_juu is mouseup's form (shared here by mistake — the
2587
+ // tokenizer deliberately maps it to mouseup for the corpus row, so a
2588
+ // mouseover handler captured `mouseup`) — realigned to the
2589
+ // tokenizer-registered `sogeza juu`.
2590
+ mouseover: "sogeza juu",
2472
2591
  mouseout: "panya_nje",
2473
2592
  mousemove: "panya_sogea",
2474
2593
  keydown: "kitufe_shuka",
2475
2594
  keyup: "kitufe_juu",
2476
- keypress: "kitufe_bonyeza",
2477
- focus: "zingatia",
2478
- blur: "poteza_macho",
2479
- change: "badilisha",
2595
+ keypress: "keypress",
2596
+ // V3 Batch 2: zingatia captured no event → lenga (S5b/tokenizer form);
2597
+ // poteza_macho was a null parse → `blur` (the S5b identity form — matches
2598
+ // the live corpus render `kwenye blur`); badilisha is the toggle VERB
2599
+ // homonym (a change handler captured event=`toggle` — a listener for a DOM
2600
+ // event named "toggle") → kubadilisha (S5b/tokenizer form).
2601
+ focus: "lenga",
2602
+ blur: "blur",
2603
+ change: "kubadilisha",
2480
2604
  input: "ingizo",
2481
2605
  submit: "wasilisha",
2482
- reset: "weka_upya",
2606
+ reset: "reset",
2483
2607
  load: "pakia",
2484
2608
  unload: "shuka",
2485
2609
  resize: "badilisha_ukubwa",
2486
2610
  scroll: "sogeza",
2487
- touchstart: "gusa_anza",
2488
- touchend: "gusa_mwisho",
2489
- touchmove: "gusa_sogea",
2490
- touchcancel: "gusa_ghairi"
2611
+ touchstart: "touchstart",
2612
+ touchend: "touchend",
2613
+ touchmove: "touchmove",
2614
+ touchcancel: "touchcancel"
2491
2615
  },
2492
2616
  logical: {
2493
2617
  when: "wakati",
@@ -2558,6 +2682,7 @@ var sw = {
2558
2682
  properties: "mali"
2559
2683
  },
2560
2684
  expressions: {
2685
+ characters: "herufi",
2561
2686
  first: "kwanza",
2562
2687
  // 'mwisho' is the END keyword (block terminator) — the tokenizer's keyword
2563
2688
  // map is last-wins, so a positional `last` emission of 'mwisho' reads as
@@ -2687,18 +2812,21 @@ var pt = {
2687
2812
  mouseup: "mouseCima",
2688
2813
  mouseenter: "mouseEntrar",
2689
2814
  mouseleave: "mouseSair",
2690
- mouseover: "mouseSobre",
2691
- mouseout: "mouseFora",
2815
+ // V3 Batch 2: camelCase forms split to the S5b/tokenizer-known forms (the
2816
+ // fused spellings captured event=expression:undefined — broken listeners)
2817
+ mouseover: "mouse sobre",
2818
+ mouseout: "mouse fora",
2692
2819
  mousemove: "mouseMover",
2693
- keydown: "teclaBaixo",
2694
- keyup: "teclaCima",
2820
+ keydown: "tecla baixo",
2821
+ keyup: "tecla cima",
2695
2822
  keypress: "teclaPressionar",
2696
2823
  focus: "foco",
2697
2824
  blur: "desfoque",
2698
2825
  change: "mudan\xE7a",
2699
2826
  input: "entrada",
2700
2827
  submit: "envio",
2701
- reset: "reiniciar",
2828
+ reset: "redefinir",
2829
+ // Batch 3: reiniciar captured on.event as expression (broken listener) — profile word round-trips
2702
2830
  load: "carregar",
2703
2831
  unload: "descarregar",
2704
2832
  resize: "redimensionar",
@@ -2777,6 +2905,9 @@ var pt = {
2777
2905
  properties: "propriedades"
2778
2906
  },
2779
2907
  expressions: {
2908
+ characters: "caracteres",
2909
+ inclusive: "inclusivo",
2910
+ exclusive: "exclusivo",
2780
2911
  first: "primeiro",
2781
2912
  last: "\xFAltimo",
2782
2913
  next: "pr\xF3ximo",
@@ -2887,8 +3018,12 @@ var it = {
2887
3018
  events: {
2888
3019
  click: "clic",
2889
3020
  dblclick: "doppioclic",
2890
- mousedown: "mousegi\xF9",
2891
- mouseup: "mousesu",
3021
+ // mousedown/mouseup: English passthrough — no native form round-trips on the
3022
+ // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms
3023
+ // shattered to their first word — live broken listeners in repeat-until-event).
3024
+ // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.
3025
+ mousedown: "mousedown",
3026
+ mouseup: "mouseup",
2892
3027
  mouseenter: "mouseentra",
2893
3028
  mouseleave: "mouseesce",
2894
3029
  mouseover: "mousesopra",
@@ -2898,11 +3033,13 @@ var it = {
2898
3033
  keyup: "tastosu",
2899
3034
  keypress: "tastopremi",
2900
3035
  focus: "fuoco",
2901
- blur: "sfuocatura",
3036
+ blur: "sfuocare",
3037
+ // Batch 3: the noun form parsed the blur command with no patient; the verb round-trips both event and command slots
2902
3038
  change: "cambio",
2903
3039
  input: "input",
2904
3040
  submit: "invio",
2905
- reset: "reset",
3041
+ reset: "reimpostare",
3042
+ // Batch 3: English passthrough captured on.event as expression — profile verb round-trips
2906
3043
  load: "carica",
2907
3044
  unload: "scarica",
2908
3045
  resize: "ridimensiona",
@@ -2981,6 +3118,9 @@ var it = {
2981
3118
  properties: "propriet\xE0"
2982
3119
  },
2983
3120
  expressions: {
3121
+ characters: "caratteri",
3122
+ inclusive: "inclusivo",
3123
+ exclusive: "esclusivo",
2984
3124
  first: "primo",
2985
3125
  last: "ultimo",
2986
3126
  next: "prossimo",
@@ -3063,15 +3203,18 @@ var vi = {
3063
3203
  init: "kh\u1EDFi t\u1EA1o",
3064
3204
  behavior: "h\xE0nh vi",
3065
3205
  install: "c\xE0i \u0111\u1EB7t",
3066
- clone: "sao ch\xE9p",
3067
- prepend: "th\xEAm \u0111\u1EA7u",
3206
+ clone: "nh\xE2n b\u1EA3n",
3207
+ // Batch 3: 'sao chép' is the copy verb — rendered clone parsed as action=copy
3208
+ prepend: "th\xEAm v\xE0o \u0111\u1EA7u",
3209
+ // Batch 3: 'thêm đầu' shatters at 'thêm' (add) — parsed as action=add
3068
3210
  else: "kh\xF4ng th\xEC",
3069
3211
  breakpoint: "\u0111i\u1EC3m-d\u1EEBng",
3070
3212
  clear: "t\u1EA9y",
3071
3213
  // xóa is the remove PRIMARY in the profile
3072
3214
  close: "\u0111\xF3ng",
3073
3215
  open: "m\u1EDF",
3074
- select: "ch\u1ECDn"
3216
+ select: "\u0111\xE1nh-d\u1EA5u"
3217
+ // Batch 3: 'chọn' is the pick keyword — bare select rendered with it parses null
3075
3218
  },
3076
3219
  modifiers: {
3077
3220
  into: "v\xE0o",
@@ -3094,21 +3237,24 @@ var vi = {
3094
3237
  },
3095
3238
  events: {
3096
3239
  click: "nh\u1EA5p",
3097
- dblclick: "nh\u1EA5p \u0111\xFAp",
3240
+ dblclick: "dblclick",
3098
3241
  input: "nh\u1EADp",
3099
- change: "thay \u0111\u1ED5i",
3100
- submit: "g\u1EEDi",
3101
- keydown: "ph\xEDm xu\u1ED1ng",
3102
- keyup: "ph\xEDm l\xEAn",
3103
- keypress: "nh\u1EA5n ph\xEDm",
3104
- mouseover: "chu\u1ED9t v\xE0o",
3105
- mouseout: "chu\u1ED9t ra",
3106
- mouseenter: "chu\u1ED9t v\xE0o",
3107
- mouseleave: "chu\u1ED9t r\u1EDDi",
3108
- focus: "t\u1EADp trung",
3109
- blur: "m\u1EA5t t\u1EADp trung",
3110
- reset: "\u0111\u1EB7t-l\u1EA1i",
3111
- load: "t\u1EA3i",
3242
+ change: "change",
3243
+ submit: "n\u1ED9p",
3244
+ // Batch 3: 'gửi' is the send verb — on-submit listener captured event "send"
3245
+ keydown: "keydown",
3246
+ keyup: "keyup",
3247
+ keypress: "keypress",
3248
+ mouseover: "mouseover",
3249
+ mouseout: "mouseout",
3250
+ mouseenter: "mouseenter",
3251
+ mouseleave: "mouseleave",
3252
+ focus: "focus",
3253
+ blur: "blur",
3254
+ // V3c burn-down (2026-07-14): English passthrough — no native form round-trips
3255
+ // on the parse side (probe: split forms shatter, fused forms capture verbatim).
3256
+ reset: "reset",
3257
+ load: "load",
3112
3258
  scroll: "cu\u1ED9n",
3113
3259
  resize: "\u0111\u1ED5i k\xEDch th\u01B0\u1EDBc"
3114
3260
  },
@@ -3184,6 +3330,10 @@ var vi = {
3184
3330
  selected: "\u0111\u01B0\u1EE3c ch\u1ECDn"
3185
3331
  },
3186
3332
  expressions: {
3333
+ random: "ng\u1EABu nhi\xEAn",
3334
+ characters: "k\xFD t\u1EF1",
3335
+ inclusive: "bao g\u1ED3m",
3336
+ exclusive: "lo\u1EA1i tr\u1EEB",
3187
3337
  me: "t\xF4i",
3188
3338
  my: "c\u1EE7a t\xF4i",
3189
3339
  it: "n\xF3",
@@ -3275,7 +3425,8 @@ var pl = {
3275
3425
  // wyczyść is a remove alternative in the profile
3276
3426
  close: "zamknij",
3277
3427
  open: "otw\xF3rz",
3278
- select: "wybierz",
3428
+ select: "zaznacz",
3429
+ // Batch 3: wybierz is the pick keyword — bare select rendered with it parses null
3279
3430
  clone: "sklonuj",
3280
3431
  prepend: "poprzed\u017A",
3281
3432
  focus: "skup"
@@ -3301,8 +3452,12 @@ var pl = {
3301
3452
  events: {
3302
3453
  click: "klikni\u0119cie",
3303
3454
  dblclick: "podw\xF3jneklikni\u0119cie",
3304
- mousedown: "myszd\xF3\u0142",
3305
- mouseup: "myszg\xF3ra",
3455
+ // mousedown/mouseup: English passthrough — no native form round-trips on the
3456
+ // parse side (V3c probe 2026-07-14: fused forms captured verbatim, split forms
3457
+ // shattered to their first word — live broken listeners in repeat-until-event).
3458
+ // The Batch-2 id-keyup precedent; revisit if S5b + tokenizer gain native entries.
3459
+ mousedown: "mousedown",
3460
+ mouseup: "mouseup",
3306
3461
  mouseenter: "myszwej\u015Bcie",
3307
3462
  mouseleave: "myszwyj\u015Bcie",
3308
3463
  mouseover: "mysznad",
@@ -3315,8 +3470,10 @@ var pl = {
3315
3470
  blur: "rozmycie",
3316
3471
  change: "zmiana",
3317
3472
  input: "wej\u015Bcie",
3318
- submit: "wy\u015Blij",
3319
- reset: "resetuj",
3473
+ submit: "wys\u0142aniu",
3474
+ // Batch 3: wyślij is the send verb — on-submit listener captured event "send"
3475
+ reset: "zresetuj",
3476
+ // Batch 3: resetuj captured on.event as expression (broken listener) — profile word round-trips
3320
3477
  load: "za\u0142aduj",
3321
3478
  unload: "wy\u0142aduj",
3322
3479
  resize: "zmie\u0144rozmiar",
@@ -3395,6 +3552,9 @@ var pl = {
3395
3552
  properties: "w\u0142a\u015Bciwo\u015Bci"
3396
3553
  },
3397
3554
  expressions: {
3555
+ characters: "znaki",
3556
+ inclusive: "w\u0142\u0105cznie",
3557
+ exclusive: "wy\u0142\u0105cznie",
3398
3558
  first: "pierwszy",
3399
3559
  last: "ostatni",
3400
3560
  next: "nast\u0119pny",
@@ -3490,7 +3650,8 @@ var russianDictionary = {
3490
3650
  clear: "\u043E\u0447\u0438\u0441\u0442\u0438\u0442\u044C",
3491
3651
  close: "\u0437\u0430\u043A\u0440\u044B\u0442\u044C",
3492
3652
  open: "\u043E\u0442\u043A\u0440\u044B\u0442\u044C",
3493
- select: "\u0432\u044B\u0431\u0440\u0430\u0442\u044C"
3653
+ select: "\u0432\u044B\u0434\u0435\u043B\u0438\u0442\u044C"
3654
+ // Batch 3: выбрать is the pick keyword — bare select rendered with it parses null
3494
3655
  },
3495
3656
  modifiers: {
3496
3657
  to: "\u043A",
@@ -3532,7 +3693,8 @@ var russianDictionary = {
3532
3693
  change: "\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435",
3533
3694
  input: "\u0432\u0432\u043E\u0434",
3534
3695
  submit: "\u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0430",
3535
- reset: "\u0441\u0431\u0440\u043E\u0441",
3696
+ reset: "\u0441\u0431\u0440\u043E\u0441\u0438\u0442\u044C",
3697
+ // Batch 3: сброс captured on.event as expression (broken listener) — profile verb round-trips
3536
3698
  load: "\u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0430",
3537
3699
  unload: "\u0432\u044B\u0433\u0440\u0443\u0437\u043A\u0430",
3538
3700
  resize: "\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435\u0440\u0430\u0437\u043C\u0435\u0440\u0430",
@@ -3632,6 +3794,9 @@ var russianDictionary = {
3632
3794
  html: "html"
3633
3795
  },
3634
3796
  expressions: {
3797
+ characters: "\u0441\u0438\u043C\u0432\u043E\u043B\u044B",
3798
+ inclusive: "\u0432\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E",
3799
+ exclusive: "\u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E",
3635
3800
  first: "\u043F\u0435\u0440\u0432\u044B\u0439",
3636
3801
  last: "\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439",
3637
3802
  next: "\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439",
@@ -3727,7 +3892,8 @@ var ukrainianDictionary = {
3727
3892
  clear: "\u043E\u0447\u0438\u0441\u0442\u0438\u0442\u0438",
3728
3893
  close: "\u0437\u0430\u043A\u0440\u0438\u0442\u0438",
3729
3894
  open: "\u0432\u0456\u0434\u043A\u0440\u0438\u0442\u0438",
3730
- select: "\u0432\u0438\u0431\u0440\u0430\u0442\u0438"
3895
+ select: "\u0432\u0438\u0434\u0456\u043B\u0438\u0442\u0438"
3896
+ // Batch 3: вибрати is the pick keyword — bare select rendered with it parses null
3731
3897
  },
3732
3898
  modifiers: {
3733
3899
  to: "\u0434\u043E",
@@ -3768,7 +3934,8 @@ var ukrainianDictionary = {
3768
3934
  change: "\u0437\u043C\u0456\u043D\u0430",
3769
3935
  input: "\u0432\u0432\u0435\u0434\u0435\u043D\u043D\u044F",
3770
3936
  submit: "\u043D\u0430\u0434\u0441\u0438\u043B\u0430\u043D\u043D\u044F",
3771
- reset: "\u0441\u043A\u0438\u0434\u0430\u043D\u043D\u044F",
3937
+ reset: "\u0441\u043A\u0438\u043D\u0443\u0442\u0438",
3938
+ // Batch 3: скидання captured on.event as expression (broken listener) — profile verb round-trips
3772
3939
  load: "\u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F",
3773
3940
  unload: "\u0432\u0438\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F",
3774
3941
  resize: "\u0437\u043C\u0456\u043D\u0430\u0440\u043E\u0437\u043C\u0456\u0440\u0443",
@@ -3868,6 +4035,9 @@ var ukrainianDictionary = {
3868
4035
  html: "html"
3869
4036
  },
3870
4037
  expressions: {
4038
+ characters: "\u0441\u0438\u043C\u0432\u043E\u043B\u0438",
4039
+ inclusive: "\u0432\u043A\u043B\u044E\u0447\u043D\u043E",
4040
+ exclusive: "\u0432\u0438\u043A\u043B\u044E\u0447\u043D\u043E",
3871
4041
  first: "\u043F\u0435\u0440\u0448\u0438\u0439",
3872
4042
  last: "\u043E\u0441\u0442\u0430\u043D\u043D\u0456\u0439",
3873
4043
  next: "\u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439",
@@ -3952,13 +4122,15 @@ var hindiDictionary = {
3952
4122
  behavior: "\u0935\u094D\u092F\u0935\u0939\u093E\u0930",
3953
4123
  focus: "\u092B\u094B\u0915\u0938",
3954
4124
  blur: "\u0927\u0941\u0902\u0927\u0932\u093E",
3955
- clone: "\u0915\u0949\u092A\u0940",
4125
+ clone: "\u0915\u094D\u0932\u094B\u0928",
4126
+ // Batch 3: कॉपी is the copy verb — rendered clone parsed as action=copy
3956
4127
  prepend: "\u091C\u094B\u0921\u093C\u0947\u0902_\u0936\u0941\u0930\u0942",
3957
4128
  breakpoint: "\u092C\u094D\u0930\u0947\u0915\u092A\u094D\u0935\u093E\u0907\u0902\u091F",
3958
4129
  clear: "\u0938\u093E\u092B\u093C-\u0915\u0930\u0947\u0902",
3959
4130
  close: "\u092C\u0902\u0926-\u0915\u0930\u0947\u0902",
3960
4131
  open: "\u0916\u094B\u0932\u0947\u0902",
3961
- select: "\u091A\u0941\u0928\u0947\u0902",
4132
+ select: "\u091A\u093F\u0939\u094D\u0928\u093F\u0924-\u0915\u0930\u0947\u0902",
4133
+ // Batch 3: चुनें is the pick keyword — bare select rendered with it parses null
3962
4134
  socket: "\u0938\u0949\u0915\u0947\u091F"
3963
4135
  },
3964
4136
  modifiers: {
@@ -4103,6 +4275,7 @@ var hindiDictionary = {
4103
4275
  html: "html"
4104
4276
  },
4105
4277
  expressions: {
4278
+ characters: "\u0905\u0915\u094D\u0937\u0930",
4106
4279
  first: "\u092A\u0939\u0932\u093E",
4107
4280
  last: "\u0905\u0902\u0924\u093F\u092E",
4108
4281
  next: "\u0905\u0917\u0932\u093E",
@@ -4172,7 +4345,8 @@ var bengaliDictionary = {
4172
4345
  init: "\u09B6\u09C1\u09B0\u09C1",
4173
4346
  behavior: "\u0986\u099A\u09B0\u09A3",
4174
4347
  install: "\u0987\u09A8\u09B8\u09CD\u099F\u09B2",
4175
- clone: "\u0995\u09AA\u09BF",
4348
+ clone: "\u0995\u09CD\u09B2\u09CB\u09A8",
4349
+ // Batch 3: কপি is the copy verb — rendered clone parsed as action=copy
4176
4350
  swap: "\u09AC\u09A6\u09B2",
4177
4351
  morph: "\u09B0\u09C2\u09AA\u09BE\u09A8\u09CD\u09A4\u09B0",
4178
4352
  beep: "\u09AC\u09C0\u09AA",
@@ -4219,10 +4393,12 @@ var bengaliDictionary = {
4219
4393
  focus: "\u09AB\u09CB\u0995\u09BE\u09B8",
4220
4394
  blur: "\u099D\u09BE\u09AA\u09B8\u09BE",
4221
4395
  reset: "\u09B0\u09BF\u09B8\u09C7\u099F",
4222
- keydown: "\u0995\u09BF-\u09A1\u09BE\u0989\u09A8",
4223
- keyup: "\u0995\u09BF-\u0986\u09AA",
4224
- mouseover: "\u09AE\u09BE\u0989\u09B8-\u0993\u09AD\u09BE\u09B0",
4225
- mouseout: "\u09AE\u09BE\u0989\u09B8-\u0986\u0989\u099F",
4396
+ keydown: "keydown",
4397
+ keyup: "keyup",
4398
+ // V3c burn-down (2026-07-14): English passthrough — no native form round-trips
4399
+ // on the parse side (probe: split forms shatter, fused forms capture verbatim).
4400
+ mouseover: "mouseover",
4401
+ mouseout: "mouseout",
4226
4402
  scroll: "\u09B8\u09CD\u0995\u09CD\u09B0\u09CB\u09B2",
4227
4403
  resize: "\u09B0\u09BF\u09B8\u09BE\u0987\u099C",
4228
4404
  every: "\u09AA\u09CD\u09B0\u09A4\u09BF"
@@ -4284,6 +4460,9 @@ var bengaliDictionary = {
4284
4460
  checked: "\u099A\u09C7\u0995 \u0995\u09B0\u09BE"
4285
4461
  },
4286
4462
  expressions: {
4463
+ characters: "\u0985\u0995\u09CD\u09B7\u09B0",
4464
+ inclusive: "\u0985\u09A8\u09CD\u09A4\u09B0\u09CD\u09AD\u09C1\u0995\u09CD\u09A4",
4465
+ exclusive: "\u09AC\u09BE\u09A6",
4287
4466
  first: "\u09AA\u09CD\u09B0\u09A5\u09AE",
4288
4467
  last: "\u09B6\u09C7\u09B7",
4289
4468
  next: "\u09AA\u09B0\u09AC\u09B0\u09CD\u09A4\u09C0",
@@ -4352,7 +4531,8 @@ var thaiDictionary = {
4352
4531
  init: "\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19",
4353
4532
  behavior: "\u0E1E\u0E24\u0E15\u0E34\u0E01\u0E23\u0E23\u0E21",
4354
4533
  install: "\u0E15\u0E34\u0E14\u0E15\u0E31\u0E49\u0E07",
4355
- clone: "\u0E04\u0E31\u0E14\u0E25\u0E2D\u0E01",
4534
+ clone: "\u0E42\u0E04\u0E25\u0E19",
4535
+ // Batch 3: คัดลอก is the copy verb — rendered clone parsed as action=copy
4356
4536
  swap: "\u0E2A\u0E25\u0E31\u0E1A\u0E17\u0E35\u0E48",
4357
4537
  morph: "\u0E41\u0E1B\u0E25\u0E07\u0E23\u0E48\u0E32\u0E07",
4358
4538
  beep: "\u0E1A\u0E35\u0E4A\u0E1A",
@@ -4367,7 +4547,8 @@ var thaiDictionary = {
4367
4547
  clear: "\u0E40\u0E04\u0E25\u0E35\u0E22\u0E23\u0E4C",
4368
4548
  close: "\u0E1B\u0E34\u0E14",
4369
4549
  open: "\u0E40\u0E1B\u0E34\u0E14",
4370
- select: "\u0E40\u0E25\u0E37\u0E2D\u0E01"
4550
+ select: "\u0E17\u0E33\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E2B\u0E21\u0E32\u0E22"
4551
+ // Batch 3: เลือก is the pick keyword — bare select rendered with it parses null
4371
4552
  },
4372
4553
  modifiers: {
4373
4554
  to: "\u0E44\u0E1B\u0E22\u0E31\u0E07",
@@ -4462,6 +4643,9 @@ var thaiDictionary = {
4462
4643
  checked: "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E41\u0E25\u0E49\u0E27"
4463
4644
  },
4464
4645
  expressions: {
4646
+ characters: "\u0E2D\u0E31\u0E01\u0E02\u0E23\u0E30",
4647
+ inclusive: "\u0E23\u0E27\u0E21",
4648
+ exclusive: "\u0E22\u0E01\u0E40\u0E27\u0E49\u0E19",
4465
4649
  first: "\u0E41\u0E23\u0E01",
4466
4650
  last: "\u0E2A\u0E38\u0E14\u0E17\u0E49\u0E32\u0E22",
4467
4651
  next: "\u0E16\u0E31\u0E14\u0E44\u0E1B",
@@ -4548,7 +4732,8 @@ var malayDictionary = {
4548
4732
  // padam is a remove alternative in the profile
4549
4733
  close: "tutup",
4550
4734
  open: "buka",
4551
- select: "pilih",
4735
+ select: "tandai",
4736
+ // Batch 3: pilih is the pick keyword — bare select rendered with it parses null
4552
4737
  socket: "soket"
4553
4738
  // derived from the ms profile (socket.primary); see generate-i18n-dictionaries
4554
4739
  },
@@ -4688,6 +4873,9 @@ var malayDictionary = {
4688
4873
  checked: "ditanda"
4689
4874
  },
4690
4875
  expressions: {
4876
+ characters: "aksara",
4877
+ inclusive: "inklusif",
4878
+ exclusive: "eksklusif",
4691
4879
  first: "pertama",
4692
4880
  last: "terakhir",
4693
4881
  next: "seterusnya",
@@ -4780,7 +4968,8 @@ var tagalogDictionary = {
4780
4968
  install: "ikabit",
4781
4969
  behavior: "ugali",
4782
4970
  init: "simulan",
4783
- clone: "kopyahin",
4971
+ clone: "i-clone",
4972
+ // Batch 3: kopyahin is the copy verb — rendered clone parsed as action=copy
4784
4973
  breakpoint: "breakpoint",
4785
4974
  clear: "burahin",
4786
4975
  close: "isara",
@@ -4927,6 +5116,9 @@ var tagalogDictionary = {
4927
5116
  checked: "naka_tsek"
4928
5117
  },
4929
5118
  expressions: {
5119
+ characters: "karakter",
5120
+ inclusive: "kasama",
5121
+ exclusive: "bukod",
4930
5122
  first: "una",
4931
5123
  last: "huli",
4932
5124
  next: "susunod",
@@ -5049,6 +5241,10 @@ var he = {
5049
5241
  },
5050
5242
  attributes: {},
5051
5243
  expressions: {
5244
+ random: "\u05D0\u05E7\u05E8\u05D0\u05D9",
5245
+ characters: "\u05EA\u05D5\u05D5\u05D9\u05DD",
5246
+ inclusive: "\u05DB\u05D5\u05DC\u05DC",
5247
+ exclusive: "\u05D1\u05DC\u05E2\u05D3\u05D9",
5052
5248
  last: "\u05D0\u05D7\u05E8\u05D5\u05DF"
5053
5249
  }
5054
5250
  };