codex-chatgpt-control 0.5.1-alpha.4 → 0.5.1-alpha.6

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 (169) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/contracts/v1/fixtures/doctor-scenario-preflight.json +2 -2
  3. package/dist/codex-chatgpt-control-backend.mjs +576 -289
  4. package/dist/codex-chatgpt-control-live-smoke.bundle.mjs +592 -295
  5. package/dist/codex-chatgpt-control-release-canary.bundle.mjs +592 -295
  6. package/dist/codex-chatgpt-control.bundle.mjs +576 -289
  7. package/dist/src/browser/attach.js +8 -0
  8. package/dist/src/commands/chat-popover.d.ts +3 -0
  9. package/dist/src/commands/chat-popover.js +144 -27
  10. package/dist/src/commands/configuration.js +91 -19
  11. package/dist/src/commands/experience.d.ts +2 -0
  12. package/dist/src/commands/experience.js +52 -9
  13. package/dist/src/commands/files.js +14 -6
  14. package/dist/src/commands/messages.js +49 -3
  15. package/dist/src/commands/modes.js +6 -2
  16. package/dist/src/dom/generation-state.js +19 -4
  17. package/dist/src/dom/locale/am.d.ts +2 -0
  18. package/dist/src/dom/locale/am.js +7 -5
  19. package/dist/src/dom/locale/ar.d.ts +2 -0
  20. package/dist/src/dom/locale/ar.js +4 -2
  21. package/dist/src/dom/locale/bg.d.ts +2 -0
  22. package/dist/src/dom/locale/bg.js +4 -2
  23. package/dist/src/dom/locale/bn.d.ts +2 -0
  24. package/dist/src/dom/locale/bn.js +4 -2
  25. package/dist/src/dom/locale/bs.d.ts +3 -0
  26. package/dist/src/dom/locale/bs.js +10 -7
  27. package/dist/src/dom/locale/ca.d.ts +3 -0
  28. package/dist/src/dom/locale/ca.js +4 -1
  29. package/dist/src/dom/locale/cs.d.ts +3 -0
  30. package/dist/src/dom/locale/cs.js +7 -4
  31. package/dist/src/dom/locale/da.d.ts +3 -0
  32. package/dist/src/dom/locale/da.js +7 -4
  33. package/dist/src/dom/locale/de.d.ts +2 -0
  34. package/dist/src/dom/locale/de.js +4 -2
  35. package/dist/src/dom/locale/el.d.ts +2 -0
  36. package/dist/src/dom/locale/el.js +7 -5
  37. package/dist/src/dom/locale/en.d.ts +4 -3
  38. package/dist/src/dom/locale/en.js +4 -3
  39. package/dist/src/dom/locale/es-419.d.ts +2 -0
  40. package/dist/src/dom/locale/es-419.js +4 -2
  41. package/dist/src/dom/locale/es-ES.d.ts +2 -0
  42. package/dist/src/dom/locale/es-ES.js +4 -2
  43. package/dist/src/dom/locale/et.d.ts +2 -0
  44. package/dist/src/dom/locale/et.js +7 -5
  45. package/dist/src/dom/locale/fa.d.ts +2 -0
  46. package/dist/src/dom/locale/fa.js +4 -2
  47. package/dist/src/dom/locale/fi.d.ts +2 -0
  48. package/dist/src/dom/locale/fi.js +4 -2
  49. package/dist/src/dom/locale/fr-CA.d.ts +6 -0
  50. package/dist/src/dom/locale/fr-CA.js +7 -1
  51. package/dist/src/dom/locale/fr-FR.d.ts +2 -0
  52. package/dist/src/dom/locale/fr-FR.js +9 -7
  53. package/dist/src/dom/locale/gu.d.ts +2 -0
  54. package/dist/src/dom/locale/gu.js +7 -5
  55. package/dist/src/dom/locale/hi.d.ts +2 -0
  56. package/dist/src/dom/locale/hi.js +9 -7
  57. package/dist/src/dom/locale/hr.d.ts +3 -0
  58. package/dist/src/dom/locale/hr.js +4 -1
  59. package/dist/src/dom/locale/hu.d.ts +2 -0
  60. package/dist/src/dom/locale/hu.js +4 -2
  61. package/dist/src/dom/locale/hy.d.ts +2 -0
  62. package/dist/src/dom/locale/hy.js +4 -2
  63. package/dist/src/dom/locale/id.d.ts +3 -0
  64. package/dist/src/dom/locale/id.js +4 -1
  65. package/dist/src/dom/locale/index.d.ts +11 -0
  66. package/dist/src/dom/locale/index.js +19 -0
  67. package/dist/src/dom/locale/is.d.ts +2 -0
  68. package/dist/src/dom/locale/is.js +4 -2
  69. package/dist/src/dom/locale/it.d.ts +2 -0
  70. package/dist/src/dom/locale/it.js +7 -5
  71. package/dist/src/dom/locale/ja.d.ts +2 -0
  72. package/dist/src/dom/locale/ja.js +8 -6
  73. package/dist/src/dom/locale/ka.d.ts +2 -0
  74. package/dist/src/dom/locale/ka.js +4 -2
  75. package/dist/src/dom/locale/kk.d.ts +2 -0
  76. package/dist/src/dom/locale/kk.js +8 -6
  77. package/dist/src/dom/locale/kn.d.ts +3 -0
  78. package/dist/src/dom/locale/kn.js +8 -5
  79. package/dist/src/dom/locale/ko.d.ts +2 -0
  80. package/dist/src/dom/locale/ko.js +4 -2
  81. package/dist/src/dom/locale/lt.d.ts +2 -0
  82. package/dist/src/dom/locale/lt.js +5 -3
  83. package/dist/src/dom/locale/lv.d.ts +2 -0
  84. package/dist/src/dom/locale/lv.js +4 -2
  85. package/dist/src/dom/locale/mk.d.ts +2 -0
  86. package/dist/src/dom/locale/mk.js +4 -2
  87. package/dist/src/dom/locale/ml.d.ts +2 -0
  88. package/dist/src/dom/locale/ml.js +7 -5
  89. package/dist/src/dom/locale/mn.d.ts +2 -0
  90. package/dist/src/dom/locale/mn.js +4 -2
  91. package/dist/src/dom/locale/mr.d.ts +2 -0
  92. package/dist/src/dom/locale/mr.js +7 -5
  93. package/dist/src/dom/locale/ms.d.ts +3 -0
  94. package/dist/src/dom/locale/ms.js +4 -1
  95. package/dist/src/dom/locale/my.d.ts +2 -0
  96. package/dist/src/dom/locale/my.js +4 -2
  97. package/dist/src/dom/locale/nb.d.ts +2 -0
  98. package/dist/src/dom/locale/nb.js +4 -2
  99. package/dist/src/dom/locale/nl.d.ts +3 -0
  100. package/dist/src/dom/locale/nl.js +4 -1
  101. package/dist/src/dom/locale/pa.d.ts +2 -0
  102. package/dist/src/dom/locale/pa.js +4 -2
  103. package/dist/src/dom/locale/pl.d.ts +3 -0
  104. package/dist/src/dom/locale/pl.js +4 -1
  105. package/dist/src/dom/locale/pt-BR.d.ts +2 -0
  106. package/dist/src/dom/locale/pt-BR.js +11 -9
  107. package/dist/src/dom/locale/pt-PT.d.ts +2 -0
  108. package/dist/src/dom/locale/pt-PT.js +7 -5
  109. package/dist/src/dom/locale/ro.d.ts +3 -0
  110. package/dist/src/dom/locale/ro.js +4 -1
  111. package/dist/src/dom/locale/ru.d.ts +2 -0
  112. package/dist/src/dom/locale/ru.js +4 -2
  113. package/dist/src/dom/locale/sk.d.ts +3 -0
  114. package/dist/src/dom/locale/sk.js +4 -1
  115. package/dist/src/dom/locale/sl.d.ts +3 -0
  116. package/dist/src/dom/locale/sl.js +4 -1
  117. package/dist/src/dom/locale/so.d.ts +2 -0
  118. package/dist/src/dom/locale/so.js +4 -2
  119. package/dist/src/dom/locale/sq.d.ts +2 -0
  120. package/dist/src/dom/locale/sq.js +4 -2
  121. package/dist/src/dom/locale/sr.d.ts +2 -0
  122. package/dist/src/dom/locale/sr.js +4 -2
  123. package/dist/src/dom/locale/sv.d.ts +2 -0
  124. package/dist/src/dom/locale/sv.js +4 -2
  125. package/dist/src/dom/locale/sw.d.ts +2 -0
  126. package/dist/src/dom/locale/sw.js +5 -3
  127. package/dist/src/dom/locale/ta.d.ts +2 -0
  128. package/dist/src/dom/locale/ta.js +8 -6
  129. package/dist/src/dom/locale/te.d.ts +2 -0
  130. package/dist/src/dom/locale/te.js +7 -5
  131. package/dist/src/dom/locale/th.d.ts +2 -0
  132. package/dist/src/dom/locale/th.js +4 -2
  133. package/dist/src/dom/locale/tl.d.ts +3 -0
  134. package/dist/src/dom/locale/tl.js +4 -1
  135. package/dist/src/dom/locale/tr.d.ts +3 -0
  136. package/dist/src/dom/locale/tr.js +4 -1
  137. package/dist/src/dom/locale/types.d.ts +6 -0
  138. package/dist/src/dom/locale/uk.d.ts +2 -0
  139. package/dist/src/dom/locale/uk.js +7 -5
  140. package/dist/src/dom/locale/ur.d.ts +2 -0
  141. package/dist/src/dom/locale/ur.js +4 -2
  142. package/dist/src/dom/locale/vi.d.ts +2 -0
  143. package/dist/src/dom/locale/vi.js +4 -2
  144. package/dist/src/dom/locale/zh-HK.d.ts +2 -0
  145. package/dist/src/dom/locale/zh-HK.js +4 -2
  146. package/dist/src/dom/locale/zh-Hans.d.ts +2 -0
  147. package/dist/src/dom/locale/zh-Hans.js +7 -5
  148. package/dist/src/dom/locale/zh-TW.d.ts +2 -0
  149. package/dist/src/dom/locale/zh-TW.js +6 -4
  150. package/dist/src/dom/locale-labels.d.ts +1 -1
  151. package/dist/src/dom/locale-labels.js +1 -1
  152. package/dist/src/dom/message-format.js +17 -2
  153. package/dist/src/dom/messages.js +38 -11
  154. package/dist/src/dom/selectors.d.ts +3 -2
  155. package/dist/src/dom/selectors.js +5 -7
  156. package/dist/src/dom/wait-snapshot.js +24 -5
  157. package/dist/src/safety/blockers.js +1 -1
  158. package/dist/src/scripts/apply-intelligence-locale-captures.js +15 -6
  159. package/dist/src/scripts/capture-intelligence-locales.d.ts +5 -3
  160. package/dist/src/scripts/capture-intelligence-locales.js +185 -2
  161. package/dist/src/scripts/live-smoke/scenarios.d.ts +1 -0
  162. package/dist/src/scripts/live-smoke/scenarios.js +22 -6
  163. package/dist/src/scripts/locale-capture/slider-label.d.ts +1 -0
  164. package/dist/src/scripts/locale-capture/slider-label.js +14 -0
  165. package/dist/src/types.d.ts +2 -0
  166. package/package.json +1 -1
  167. package/references/backend-protocol.md +23 -0
  168. package/references/localization.md +15 -0
  169. package/references/python-parity.md +11 -0
@@ -195,7 +195,7 @@ var RULES = [
195
195
  {
196
196
  kind: "not_found",
197
197
  message: "The requested ChatGPT conversation or page was not found.",
198
- patterns: [/conversation not found/i, /404/i, /page not found/i]
198
+ patterns: [/conversation not found/i, /\b404\b/i, /page not found/i]
199
199
  }
200
200
  ];
201
201
  function classifyVisibleText(text) {
@@ -221,9 +221,10 @@ function classifyVisibleText(text) {
221
221
  var en = {
222
222
  // --- Primary interaction path (accessible names) ---
223
223
  composerTextbox: ["Chat with ChatGPT", "Ask ChatGPT"],
224
- workComposerTextbox: ["Work on anything", "Work on something"],
224
+ workComposerTextbox: ["Work on anything", "Work on something", "Work with ChatGPT"],
225
+ projectComposerPrefixes: ["New chat in"],
225
226
  newWork: ["Work on something else", "New work", "New task"],
226
- sendButton: ["Send prompt"],
227
+ sendButton: ["Send prompt", "Send"],
227
228
  searchChatsButton: ["Search chats"],
228
229
  searchChatsPlaceholder: ["Search chats..."],
229
230
  newChat: ["New chat"],
@@ -296,7 +297,7 @@ var en = {
296
297
  /** Exact-match transient assistant placeholders filtered out of captured responses. */
297
298
  transientAssistant: ["thinking", "reasoning", "searching", "searching the web"],
298
299
  /** Streaming "stop" control text, matched while a response generates. */
299
- stopControl: ["stop generating", "stop streaming", "stop answering"],
300
+ stopControl: ["stop generating", "stop streaming", "stop answering", "stop"],
300
301
  /** Interrupted generation markers shown after the assistant stops before completion. */
301
302
  stoppedAssistant: ["stopped thinking", "stopped answering", "generation stopped"],
302
303
  /** Response-action affordance text (fallback to the structural copy-button locator). */
@@ -314,8 +315,8 @@ var en = {
314
315
  var de = {
315
316
  configurationAxes: {
316
317
  power: ["Leistung"],
317
- model: ["Modell"],
318
- effort: ["Aufwand", "Denkaufwand"],
318
+ model: ["Modell", "Modell ausw\xE4hlen"],
319
+ effort: ["Aufwand", "Denkaufwand", "Leistung"],
319
320
  speed: ["Tempo"],
320
321
  advanced: ["Erweitert"]
321
322
  },
@@ -357,8 +358,8 @@ var de = {
357
358
  var esES = {
358
359
  configurationAxes: {
359
360
  power: ["Potencia"],
360
- model: ["Modelo"],
361
- effort: ["Esfuerzo"],
361
+ model: ["Modelo", "Seleccionar modelo"],
362
+ effort: ["Esfuerzo", "Potencia"],
362
363
  speed: ["Velocidad"],
363
364
  advanced: ["Avanzadas"]
364
365
  },
@@ -403,17 +404,17 @@ var esES = {
403
404
  var frFR = {
404
405
  configurationAxes: {
405
406
  power: ["Puissance"],
406
- model: ["Mod\xE8le"],
407
- effort: ["Niveau"],
407
+ model: ["Mod\xE8le", "S\xE9lectionner le mod\xE8le"],
408
+ effort: ["Niveau", "Puissance"],
408
409
  speed: ["Vitesse"],
409
410
  advanced: ["Avanc\xE9"]
410
411
  },
411
412
  configurationOptions: {
412
413
  instant: ["Instantan\xE9"],
413
414
  light: ["Minimal"],
414
- medium: ["Moyenne"],
415
- high: ["\xC9lev\xE9e"],
416
- extraHigh: ["Tr\xE8s \xE9lev\xE9e"],
415
+ medium: ["Moyenne", "Moyen"],
416
+ high: ["\xC9lev\xE9e", "\xC9lev\xE9"],
417
+ extraHigh: ["Tr\xE8s \xE9lev\xE9e", "Tr\xE8s \xE9lev\xE9"],
417
418
  max: ["Maximum"],
418
419
  fast: ["Rapide"]
419
420
  },
@@ -426,11 +427,11 @@ var frFR = {
426
427
  addFilesOpenerCandidates: ["Ajouter des fichiers et plus encore"],
427
428
  addPhotosFilesMenuItem: ["Ajouter des photos et fichiers"],
428
429
  copyResponse: ["Copier la r\xE9ponse"],
429
- modeLabels: ["Moyen", "Avanc\xE9", "Tr\xE8s \xE9lev\xE9", "Instantan\xE9e", "Moyenne", "\xC9lev\xE9e", "Tr\xE8s \xE9lev\xE9e", "Instantan\xE9"],
430
+ modeLabels: ["Moyen", "Avanc\xE9", "Tr\xE8s \xE9lev\xE9", "Instantan\xE9e", "Moyenne", "\xC9lev\xE9e", "Tr\xE8s \xE9lev\xE9e", "Instantan\xE9", "\xC9lev\xE9"],
430
431
  modeOptions: {
431
432
  instant: ["Instantan\xE9e", "Instantan\xE9"],
432
433
  medium: ["Moyen", "Moyenne"],
433
- high: ["Avanc\xE9", "\xC9lev\xE9e"],
434
+ high: ["Avanc\xE9", "\xC9lev\xE9e", "\xC9lev\xE9"],
434
435
  extraHigh: ["Tr\xE8s \xE9lev\xE9", "Tr\xE8s \xE9lev\xE9e"]
435
436
  },
436
437
  modeOpenerExtra: ["Configurer"],
@@ -448,8 +449,8 @@ var frFR = {
448
449
  var zhHK = {
449
450
  configurationAxes: {
450
451
  power: ["\u667A\u80FD\u5F37\u5EA6"],
451
- model: ["\u6A21\u578B"],
452
- effort: ["\u63A8\u7406\u5F37\u5EA6"],
452
+ model: ["\u6A21\u578B", "\u9078\u64C7\u6A21\u578B"],
453
+ effort: ["\u63A8\u7406\u5F37\u5EA6", "\u667A\u80FD\u5F37\u5EA6"],
453
454
  speed: ["\u56DE\u61C9\u901F\u5EA6"],
454
455
  advanced: ["\u9032\u968E"]
455
456
  },
@@ -498,8 +499,8 @@ var zhHK = {
498
499
  var zhTW = {
499
500
  configurationAxes: {
500
501
  power: ["\u80FD\u529B"],
501
- model: ["\u6A21\u578B"],
502
- effort: ["\u63A8\u7406\u5F37\u5EA6"],
502
+ model: ["\u6A21\u578B", "\u9078\u53D6\u6A21\u578B"],
503
+ effort: ["\u63A8\u7406\u5F37\u5EA6", "\u80FD\u529B"],
503
504
  speed: ["\u901F\u5EA6"],
504
505
  advanced: ["\u9032\u968E"]
505
506
  },
@@ -523,12 +524,12 @@ var zhTW = {
523
524
  addFilesOpenerCandidates: ["\u65B0\u589E\u6A94\u6848\u7B49\u66F4\u591A\u529F\u80FD"],
524
525
  addPhotosFilesMenuItem: ["\u65B0\u589E\u7167\u7247\u548C\u6A94\u6848"],
525
526
  copyResponse: ["\u8907\u88FD\u56DE\u61C9"],
526
- modeLabels: ["\u5373\u6642", "\u4E2D\u7B49", "\u9AD8", "\u8D85\u9AD8", "\u5C08\u696D", "\u4E2D"],
527
+ modeLabels: ["\u5373\u6642", "\u4E2D\u7B49", "\u9AD8", "\u8D85\u9AD8", "\u5C08\u696D", "\u4E2D", "\u6975\u9AD8"],
527
528
  modeOptions: {
528
529
  instant: ["\u5373\u6642"],
529
530
  medium: ["\u4E2D\u7B49", "\u4E2D"],
530
531
  high: ["\u9AD8"],
531
- extraHigh: ["\u8D85\u9AD8"],
532
+ extraHigh: ["\u8D85\u9AD8", "\u6975\u9AD8"],
532
533
  pro: ["\u5C08\u696D"]
533
534
  },
534
535
  modeOpenerExtra: ["\u8A2D\u5B9A"],
@@ -550,8 +551,8 @@ var zhTW = {
550
551
  var ja = {
551
552
  configurationAxes: {
552
553
  power: ["\u30D1\u30EF\u30FC"],
553
- model: ["\u30E2\u30C7\u30EB"],
554
- effort: ["\u601D\u8003\u30EC\u30D9\u30EB", "\u63A8\u8AD6\u30EC\u30D9\u30EB"],
554
+ model: ["\u30E2\u30C7\u30EB", "\u30E2\u30C7\u30EB\u3092\u9078\u629E"],
555
+ effort: ["\u601D\u8003\u30EC\u30D9\u30EB", "\u63A8\u8AD6\u30EC\u30D9\u30EB", "\u30D1\u30EF\u30FC"],
555
556
  speed: ["\u901F\u5EA6"],
556
557
  advanced: ["\u8A73\u7D30\u8A2D\u5B9A"]
557
558
  },
@@ -559,8 +560,8 @@ var ja = {
559
560
  instant: ["\u6700\u901F"],
560
561
  light: ["\u8EFD"],
561
562
  medium: ["\u4E2D\u7A0B\u5EA6"],
562
- high: ["\u9AD8\u3044"],
563
- extraHigh: ["\u975E\u5E38\u306B\u9AD8\u3044"],
563
+ high: ["\u9AD8\u3044", "\u9AD8"],
564
+ extraHigh: ["\u975E\u5E38\u306B\u9AD8\u3044", "\u6975\u9AD8"],
564
565
  max: ["\u6700\u5927"],
565
566
  ultra: ["\u30A6\u30EB\u30C8\u30E9"],
566
567
  standard: ["\u6A19\u6E96"],
@@ -575,12 +576,12 @@ var ja = {
575
576
  addFilesOpenerCandidates: ["\u30D5\u30A1\u30A4\u30EB\u306E\u8FFD\u52A0\u306A\u3069"],
576
577
  addPhotosFilesMenuItem: ["\u5199\u771F\u3068\u30D5\u30A1\u30A4\u30EB\u3092\u8FFD\u52A0"],
577
578
  copyResponse: ["\u56DE\u7B54\u3092\u30B3\u30D4\u30FC\u3059\u308B"],
578
- modeLabels: ["\u6700\u901F", "\u6A19\u6E96", "\u9AD8", "\u6700\u9AD8", "\u4E2D\u7A0B\u5EA6", "\u9AD8\u3044", "\u975E\u5E38\u306B\u9AD8\u3044"],
579
+ modeLabels: ["\u6700\u901F", "\u6A19\u6E96", "\u9AD8", "\u6700\u9AD8", "\u4E2D\u7A0B\u5EA6", "\u9AD8\u3044", "\u975E\u5E38\u306B\u9AD8\u3044", "\u6975\u9AD8"],
579
580
  modeOptions: {
580
581
  instant: ["\u6700\u901F"],
581
582
  medium: ["\u6A19\u6E96", "\u4E2D\u7A0B\u5EA6"],
582
583
  high: ["\u9AD8", "\u9AD8\u3044"],
583
- extraHigh: ["\u6700\u9AD8", "\u975E\u5E38\u306B\u9AD8\u3044"]
584
+ extraHigh: ["\u6700\u9AD8", "\u975E\u5E38\u306B\u9AD8\u3044", "\u6975\u9AD8"]
584
585
  },
585
586
  modeOpenerExtra: ["\u8A2D\u5B9A\u3059\u308B"],
586
587
  tools: {
@@ -596,13 +597,13 @@ var ja = {
596
597
  var it = {
597
598
  configurationAxes: {
598
599
  power: ["Potenza"],
599
- model: ["Modello"],
600
- effort: ["Sforzo"],
600
+ model: ["Modello", "Seleziona modello"],
601
+ effort: ["Sforzo", "Potenza"],
601
602
  speed: ["Velocit\xE0"],
602
603
  advanced: ["Avanzate"]
603
604
  },
604
605
  configurationOptions: {
605
- instant: ["Istantaneo"],
606
+ instant: ["Istantaneo", "Immediato"],
606
607
  medium: ["Medio"],
607
608
  high: ["Alto"],
608
609
  extraHigh: ["Molto alto"],
@@ -617,9 +618,9 @@ var it = {
617
618
  addFilesOpenerCandidates: ["Aggiungi file e altro"],
618
619
  addPhotosFilesMenuItem: ["Aggiungi foto e file"],
619
620
  copyResponse: ["Copia risposta"],
620
- modeLabels: ["Istantanea", "Media", "Alta", "Extra elevata", "Medio", "Alto", "Molto alto", "Istantaneo"],
621
+ modeLabels: ["Istantanea", "Media", "Alta", "Extra elevata", "Medio", "Alto", "Molto alto", "Istantaneo", "Immediato"],
621
622
  modeOptions: {
622
- instant: ["Istantanea", "Istantaneo"],
623
+ instant: ["Istantanea", "Istantaneo", "Immediato"],
623
624
  medium: ["Media", "Medio"],
624
625
  high: ["Alta", "Alto"],
625
626
  extraHigh: ["Extra elevata", "Molto alto"]
@@ -638,8 +639,8 @@ var it = {
638
639
  var vi = {
639
640
  configurationAxes: {
640
641
  power: ["S\u1EE9c m\u1EA1nh"],
641
- model: ["M\xF4 h\xECnh"],
642
- effort: ["M\u1EE9c \u0111\u1ED9", "M\u1EE9c suy lu\u1EADn"],
642
+ model: ["M\xF4 h\xECnh", "Ch\u1ECDn m\xF4 h\xECnh"],
643
+ effort: ["M\u1EE9c \u0111\u1ED9", "M\u1EE9c suy lu\u1EADn", "S\u1EE9c m\u1EA1nh"],
643
644
  speed: ["T\u1ED1c \u0111\u1ED9"],
644
645
  advanced: ["N\xE2ng cao"]
645
646
  },
@@ -688,13 +689,13 @@ var vi = {
688
689
  var am = {
689
690
  configurationAxes: {
690
691
  power: ["\u12A0\u1245\u121D"],
691
- model: ["\u121E\u12F4\u120D"],
692
- effort: ["\u1325\u1228\u1275"],
692
+ model: ["\u121E\u12F4\u120D", "\u121E\u12F4\u120D \u12ED\u121D\u1228\u1321"],
693
+ effort: ["\u1325\u1228\u1275", "\u12A0\u1245\u121D"],
693
694
  speed: ["\u134D\u1325\u1290\u1275"],
694
695
  advanced: ["\u12E8\u120B\u1240"]
695
696
  },
696
697
  configurationOptions: {
697
- instant: ["\u1348\u1323\u1295"],
698
+ instant: ["\u1348\u1323\u1295", "\u1245\u133D\u1260\u1273\u12CA"],
698
699
  light: ["\u1240\u120B\u120D"],
699
700
  medium: ["\u1218\u12AB\u12A8\u1208\u129B"],
700
701
  high: ["\u12A8\u134D\u1270\u129B"],
@@ -713,9 +714,9 @@ var am = {
713
714
  addFilesOpenerCandidates: ["\u134B\u12ED\u120E\u127D\u1295 \u12EB\u12AD\u1209 \u12A5\u1293 \u120C\u120E\u127D\u121D"],
714
715
  addPhotosFilesMenuItem: ["\u134E\u1276\u12CE\u127D\u1295 \u12A5\u1293 \u134B\u12ED\u120E\u127D\u1295 \u12EB\u12AD\u1209"],
715
716
  copyResponse: ["\u121D\u120B\u1239\u1295 \u12ED\u1245\u12F1"],
716
- modeLabels: ["\u1348\u1323\u1295", "\u1218\u12AB\u12A8\u1208\u129B", "\u12A8\u134D\u1270\u129B", "\u12A5\u1305\u130D \u12A8\u134D\u1270\u129B"],
717
+ modeLabels: ["\u1348\u1323\u1295", "\u1218\u12AB\u12A8\u1208\u129B", "\u12A8\u134D\u1270\u129B", "\u12A5\u1305\u130D \u12A8\u134D\u1270\u129B", "\u1245\u133D\u1260\u1273\u12CA"],
717
718
  modeOptions: {
718
- instant: ["\u1348\u1323\u1295"],
719
+ instant: ["\u1348\u1323\u1295", "\u1245\u133D\u1260\u1273\u12CA"],
719
720
  medium: ["\u1218\u12AB\u12A8\u1208\u129B"],
720
721
  high: ["\u12A8\u134D\u1270\u129B"],
721
722
  extraHigh: ["\u12A5\u1305\u130D \u12A8\u134D\u1270\u129B"]
@@ -739,8 +740,8 @@ var am = {
739
740
  var ar = {
740
741
  configurationAxes: {
741
742
  power: ["\u0627\u0644\u0642\u062F\u0631\u0629"],
742
- model: ["\u0627\u0644\u0646\u0645\u0648\u0630\u062C"],
743
- effort: ["\u0627\u0644\u062C\u0647\u062F"],
743
+ model: ["\u0627\u0644\u0646\u0645\u0648\u0630\u062C", "\u0627\u062E\u062A\u0631 \u0627\u0644\u0646\u0645\u0648\u0630\u062C"],
744
+ effort: ["\u0627\u0644\u062C\u0647\u062F", "\u0627\u0644\u0642\u062F\u0631\u0629"],
744
745
  speed: ["\u0627\u0644\u0633\u0631\u0639\u0629"],
745
746
  advanced: ["\u0645\u062A\u0642\u062F\u0645"]
746
747
  },
@@ -789,8 +790,8 @@ var ar = {
789
790
  var bg = {
790
791
  configurationAxes: {
791
792
  power: ["\u041C\u043E\u0449\u043D\u043E\u0441\u0442"],
792
- model: ["\u041C\u043E\u0434\u0435\u043B"],
793
- effort: ["\u0423\u0441\u0438\u043B\u0438\u0435"],
793
+ model: ["\u041C\u043E\u0434\u0435\u043B", "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043C\u043E\u0434\u0435\u043B"],
794
+ effort: ["\u0423\u0441\u0438\u043B\u0438\u0435", "\u041C\u043E\u0449\u043D\u043E\u0441\u0442"],
794
795
  speed: ["\u0421\u043A\u043E\u0440\u043E\u0441\u0442"],
795
796
  advanced: ["\u0420\u0430\u0437\u0448\u0438\u0440\u0435\u043D\u0438"]
796
797
  },
@@ -837,16 +838,17 @@ var bg = {
837
838
  var bs = {
838
839
  configurationAxes: {
839
840
  power: ["Snaga"],
840
- effort: ["Napor"],
841
+ model: ["Odaberi model"],
842
+ effort: ["Napor", "Snaga"],
841
843
  speed: ["Brzina"],
842
844
  advanced: ["Napredno"]
843
845
  },
844
846
  configurationOptions: {
845
847
  instant: ["Brzo"],
846
848
  light: ["Lagano"],
847
- medium: ["Srednja"],
848
- high: ["Visoka"],
849
- extraHigh: ["Veoma visoka"],
849
+ medium: ["Srednja", "Srednji"],
850
+ high: ["Visoka", "Visoki"],
851
+ extraHigh: ["Veoma visoka", "Veoma visoki"],
850
852
  max: ["Maks."],
851
853
  standard: ["Standardno"],
852
854
  fast: ["Brzo"]
@@ -860,12 +862,12 @@ var bs = {
860
862
  addFilesOpenerCandidates: ["Otpremite datoteke i jo\u0161 mnogo toga"],
861
863
  addPhotosFilesMenuItem: ["Dodaj slike i datoteke"],
862
864
  copyResponse: ["Kopiraj odgovor"],
863
- modeLabels: ["Brzo", "Srednji", "Visoko", "Vrlo visoko", "Srednja", "Visoka", "Veoma visoka"],
865
+ modeLabels: ["Brzo", "Srednji", "Visoko", "Vrlo visoko", "Srednja", "Visoka", "Veoma visoka", "Visoki", "Veoma visoki"],
864
866
  modeOptions: {
865
867
  instant: ["Brzo"],
866
868
  medium: ["Srednji", "Srednja"],
867
- high: ["Visoko", "Visoka"],
868
- extraHigh: ["Vrlo visoko", "Veoma visoka"]
869
+ high: ["Visoko", "Visoka", "Visoki"],
870
+ extraHigh: ["Vrlo visoko", "Veoma visoka", "Veoma visoki"]
869
871
  },
870
872
  modeOpenerExtra: ["Podesi"],
871
873
  tools: {
@@ -882,7 +884,8 @@ var bs = {
882
884
  var ca = {
883
885
  configurationAxes: {
884
886
  power: ["Pot\xE8ncia"],
885
- effort: ["Esfor\xE7"],
887
+ model: ["Selecciona un model"],
888
+ effort: ["Esfor\xE7", "Pot\xE8ncia"],
886
889
  speed: ["Velocitat"],
887
890
  advanced: ["Avan\xE7ades"]
888
891
  },
@@ -930,12 +933,13 @@ var ca = {
930
933
  var cs = {
931
934
  configurationAxes: {
932
935
  power: ["V\xFDkon"],
933
- effort: ["\xDAsil\xED", "M\xEDra \xFAsil\xED"],
936
+ model: ["Vyberte model"],
937
+ effort: ["\xDAsil\xED", "M\xEDra \xFAsil\xED", "V\xFDkon"],
934
938
  speed: ["Rychlost"],
935
939
  advanced: ["Pokro\u010Dil\xE9"]
936
940
  },
937
941
  configurationOptions: {
938
- instant: ["Okam\u017Eit\xE1"],
942
+ instant: ["Okam\u017Eit\xE1", "Instantn\xED"],
939
943
  light: ["N\xEDzk\xE1"],
940
944
  medium: ["St\u0159edn\xED"],
941
945
  high: ["Vysok\xE1"],
@@ -953,9 +957,9 @@ var cs = {
953
957
  addFilesOpenerCandidates: ["P\u0159id\xE1v\xE1n\xED soubor\u016F a dal\u0161\xED"],
954
958
  addPhotosFilesMenuItem: ["P\u0159idat fotografie a soubory"],
955
959
  copyResponse: ["Zkop\xEDrovat odpov\u011B\u010F"],
956
- modeLabels: ["Okam\u017Eit\xE1", "St\u0159edn\xED", "Vysok\xE1", "Velmi vysok\xE1"],
960
+ modeLabels: ["Okam\u017Eit\xE1", "St\u0159edn\xED", "Vysok\xE1", "Velmi vysok\xE1", "Instantn\xED"],
957
961
  modeOptions: {
958
- instant: ["Okam\u017Eit\xE1"],
962
+ instant: ["Okam\u017Eit\xE1", "Instantn\xED"],
959
963
  medium: ["St\u0159edn\xED"],
960
964
  high: ["Vysok\xE1"],
961
965
  extraHigh: ["Velmi vysok\xE1"]
@@ -975,12 +979,13 @@ var cs = {
975
979
  var da = {
976
980
  configurationAxes: {
977
981
  power: ["Styrke"],
978
- effort: ["Indsats", "T\xE6nkeindsats"],
982
+ model: ["V\xE6lg model"],
983
+ effort: ["Indsats", "T\xE6nkeindsats", "Styrke"],
979
984
  speed: ["Hastighed"],
980
985
  advanced: ["Avanceret"]
981
986
  },
982
987
  configurationOptions: {
983
- instant: ["\xD8jeblikkeligt"],
988
+ instant: ["\xD8jeblikkeligt", "\xD8jeblikkelig"],
984
989
  light: ["Let"],
985
990
  medium: ["Mellem"],
986
991
  high: ["H\xF8j"],
@@ -997,9 +1002,9 @@ var da = {
997
1002
  addFilesOpenerCandidates: ["Tilf\xF8j filer og mere"],
998
1003
  addPhotosFilesMenuItem: ["Tilf\xF8j billeder og filer"],
999
1004
  copyResponse: ["Kopi\xE9r svar"],
1000
- modeLabels: ["\xD8jeblikkeligt", "H\xF8j", "Ekstra h\xF8j", "Mellem"],
1005
+ modeLabels: ["\xD8jeblikkeligt", "H\xF8j", "Ekstra h\xF8j", "Mellem", "\xD8jeblikkelig"],
1001
1006
  modeOptions: {
1002
- instant: ["\xD8jeblikkeligt"],
1007
+ instant: ["\xD8jeblikkeligt", "\xD8jeblikkelig"],
1003
1008
  medium: ["Mellem"],
1004
1009
  high: ["H\xF8j"],
1005
1010
  extraHigh: ["Ekstra h\xF8j"]
@@ -1019,13 +1024,13 @@ var da = {
1019
1024
  var el = {
1020
1025
  configurationAxes: {
1021
1026
  power: ["\u0399\u03C3\u03C7\u03CD\u03C2"],
1022
- model: ["\u039C\u03BF\u03BD\u03C4\u03AD\u03BB\u03BF"],
1023
- effort: ["\u03A0\u03C1\u03BF\u03C3\u03C0\u03AC\u03B8\u03B5\u03B9\u03B1", "\u0395\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF \u03C3\u03C5\u03BB\u03BB\u03BF\u03B3\u03B9\u03C3\u03BC\u03BF\u03CD"],
1027
+ model: ["\u039C\u03BF\u03BD\u03C4\u03AD\u03BB\u03BF", "\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03BC\u03BF\u03BD\u03C4\u03AD\u03BB\u03BF\u03C5"],
1028
+ effort: ["\u03A0\u03C1\u03BF\u03C3\u03C0\u03AC\u03B8\u03B5\u03B9\u03B1", "\u0395\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF \u03C3\u03C5\u03BB\u03BB\u03BF\u03B3\u03B9\u03C3\u03BC\u03BF\u03CD", "\u0399\u03C3\u03C7\u03CD\u03C2"],
1024
1029
  speed: ["\u03A4\u03B1\u03C7\u03CD\u03C4\u03B7\u03C4\u03B1"],
1025
1030
  advanced: ["\u0393\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C7\u03C9\u03C1\u03B7\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2"]
1026
1031
  },
1027
1032
  configurationOptions: {
1028
- instant: ["\u0386\u03BC\u03B5\u03C3\u03B7"],
1033
+ instant: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u0393\u03C1\u03AE\u03B3\u03BF\u03C1\u03BF"],
1029
1034
  light: ["\u0395\u03BB\u03B1\u03C6\u03C1\u03B9\u03AC"],
1030
1035
  medium: ["\u039C\u03B5\u03C3\u03B1\u03AF\u03BF"],
1031
1036
  high: ["\u03A5\u03C8\u03B7\u03BB\u03CC"],
@@ -1043,9 +1048,9 @@ var el = {
1043
1048
  addFilesOpenerCandidates: ["\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD \u03BA\u03B1\u03B9 \u03AC\u03BB\u03BB\u03B1"],
1044
1049
  addPhotosFilesMenuItem: ["\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C6\u03C9\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03B9\u03CE\u03BD & \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD"],
1045
1050
  copyResponse: ["\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03B1\u03C0\u03AC\u03BD\u03C4\u03B7\u03C3\u03B7\u03C2"],
1046
- modeLabels: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u039C\u03B5\u03C3\u03B1\u03AF\u03B1", "\u03A5\u03C8\u03B7\u03BB\u03AE", "\u03A0\u03BF\u03BB\u03CD \u03C5\u03C8\u03B7\u03BB\u03CC", "\u039C\u03B5\u03C3\u03B1\u03AF\u03BF", "\u03A5\u03C8\u03B7\u03BB\u03CC"],
1051
+ modeLabels: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u039C\u03B5\u03C3\u03B1\u03AF\u03B1", "\u03A5\u03C8\u03B7\u03BB\u03AE", "\u03A0\u03BF\u03BB\u03CD \u03C5\u03C8\u03B7\u03BB\u03CC", "\u039C\u03B5\u03C3\u03B1\u03AF\u03BF", "\u03A5\u03C8\u03B7\u03BB\u03CC", "\u0393\u03C1\u03AE\u03B3\u03BF\u03C1\u03BF"],
1047
1052
  modeOptions: {
1048
- instant: ["\u0386\u03BC\u03B5\u03C3\u03B7"],
1053
+ instant: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u0393\u03C1\u03AE\u03B3\u03BF\u03C1\u03BF"],
1049
1054
  medium: ["\u039C\u03B5\u03C3\u03B1\u03AF\u03B1", "\u039C\u03B5\u03C3\u03B1\u03AF\u03BF"],
1050
1055
  high: ["\u03A5\u03C8\u03B7\u03BB\u03AE", "\u03A5\u03C8\u03B7\u03BB\u03CC"],
1051
1056
  extraHigh: ["\u03A0\u03BF\u03BB\u03CD \u03C5\u03C8\u03B7\u03BB\u03CC"]
@@ -1065,8 +1070,8 @@ var el = {
1065
1070
  var es419 = {
1066
1071
  configurationAxes: {
1067
1072
  power: ["Potencia"],
1068
- model: ["Modelo"],
1069
- effort: ["Esfuerzo"],
1073
+ model: ["Modelo", "Seleccionar modelo"],
1074
+ effort: ["Esfuerzo", "Potencia"],
1070
1075
  speed: ["Velocidad"],
1071
1076
  advanced: ["Avanzado"]
1072
1077
  },
@@ -1111,13 +1116,13 @@ var es419 = {
1111
1116
  var et = {
1112
1117
  configurationAxes: {
1113
1118
  power: ["V\xF5imsus"],
1114
- model: ["Mudel"],
1115
- effort: ["Pingutus", "P\xF5hjalikkus"],
1119
+ model: ["Mudel", "Vali mudel"],
1120
+ effort: ["Pingutus", "P\xF5hjalikkus", "V\xF5imsus"],
1116
1121
  speed: ["Kiirus"],
1117
1122
  advanced: ["T\xE4psemad seaded"]
1118
1123
  },
1119
1124
  configurationOptions: {
1120
- instant: ["Kohene"],
1125
+ instant: ["Kohene", "Kiire"],
1121
1126
  light: ["Kerge"],
1122
1127
  medium: ["Keskmine"],
1123
1128
  high: ["K\xF5rge"],
@@ -1133,9 +1138,9 @@ var et = {
1133
1138
  addFilesOpenerCandidates: ["Failide lisamine ja muud"],
1134
1139
  addPhotosFilesMenuItem: ["Lisa fotosid ja faile"],
1135
1140
  copyResponse: ["Kopeeri vastus"],
1136
- modeLabels: ["Kohene", "Keskmine", "K\xF5rge", "V\xE4ga k\xF5rge"],
1141
+ modeLabels: ["Kohene", "Keskmine", "K\xF5rge", "V\xE4ga k\xF5rge", "Kiire"],
1137
1142
  modeOptions: {
1138
- instant: ["Kohene"],
1143
+ instant: ["Kohene", "Kiire"],
1139
1144
  medium: ["Keskmine"],
1140
1145
  high: ["K\xF5rge"],
1141
1146
  extraHigh: ["V\xE4ga k\xF5rge"]
@@ -1155,8 +1160,8 @@ var et = {
1155
1160
  var fa = {
1156
1161
  configurationAxes: {
1157
1162
  power: ["\u062A\u0648\u0627\u0646"],
1158
- model: ["\u0645\u062F\u0644"],
1159
- effort: ["\u0633\u0637\u062D \u062A\u0644\u0627\u0634", "\u0645\u06CC\u0632\u0627\u0646 \u0627\u0633\u062A\u062F\u0644\u0627\u0644"],
1163
+ model: ["\u0645\u062F\u0644", "\u0627\u0646\u062A\u062E\u0627\u0628 \u0645\u062F\u0644"],
1164
+ effort: ["\u0633\u0637\u062D \u062A\u0644\u0627\u0634", "\u0645\u06CC\u0632\u0627\u0646 \u0627\u0633\u062A\u062F\u0644\u0627\u0644", "\u062A\u0648\u0627\u0646"],
1160
1165
  speed: ["\u0633\u0631\u0639\u062A"],
1161
1166
  advanced: ["\u067E\u06CC\u0634\u0631\u0641\u062A\u0647"]
1162
1167
  },
@@ -1205,8 +1210,8 @@ var fa = {
1205
1210
  var fi = {
1206
1211
  configurationAxes: {
1207
1212
  power: ["Teho"],
1208
- model: ["Malli"],
1209
- effort: ["M\xE4\xE4r\xE4", "P\xE4\xE4ttelytaso"],
1213
+ model: ["Malli", "Valitse malli"],
1214
+ effort: ["M\xE4\xE4r\xE4", "P\xE4\xE4ttelytaso", "Teho"],
1210
1215
  speed: ["Nopeus"],
1211
1216
  advanced: ["Lis\xE4asetukset"]
1212
1217
  },
@@ -1251,7 +1256,8 @@ var fi = {
1251
1256
  var frCA = {
1252
1257
  configurationAxes: {
1253
1258
  power: ["Puissance"],
1254
- model: ["Mod\xE8le"],
1259
+ model: ["Mod\xE8le", "S\xE9lectionner un mod\xE8le"],
1260
+ effort: ["Puissance"],
1255
1261
  speed: ["Vitesse"],
1256
1262
  advanced: ["Avanc\xE9"]
1257
1263
  },
@@ -1280,6 +1286,9 @@ var frCA = {
1280
1286
  extraHigh: ["Tr\xE8s \xE9lev\xE9"]
1281
1287
  },
1282
1288
  modeOpenerExtra: ["Configurer..."],
1289
+ experienceOptions: {
1290
+ chat: ["Clavardage"]
1291
+ },
1283
1292
  tools: {
1284
1293
  web_search: ["Recherche sur Internet"],
1285
1294
  deep_research: ["Recherche approfondie"],
@@ -1294,13 +1303,13 @@ var frCA = {
1294
1303
  var gu = {
1295
1304
  configurationAxes: {
1296
1305
  power: ["\u0A95\u0ACD\u0AB7\u0AAE\u0AA4\u0ABE"],
1297
- model: ["\u0AAE\u0ACB\u0AA1\u0AC7\u0AB2"],
1298
- effort: ["\u0AAA\u0ACD\u0AB0\u0AAF\u0ABE\u0AB8"],
1306
+ model: ["\u0AAE\u0ACB\u0AA1\u0AC7\u0AB2", "\u0AAE\u0ACB\u0AA1\u0AC7\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0ACB"],
1307
+ effort: ["\u0AAA\u0ACD\u0AB0\u0AAF\u0ABE\u0AB8", "\u0A95\u0ACD\u0AB7\u0AAE\u0AA4\u0ABE"],
1299
1308
  speed: ["\u0A9D\u0AA1\u0AAA"],
1300
1309
  advanced: ["\u0A8F\u0AA1\u0AB5\u0ABE\u0AA8\u0ACD\u0AB8\u0ACD\u0AA1"]
1301
1310
  },
1302
1311
  configurationOptions: {
1303
- instant: ["\u0AA4\u0AB0\u0AA4"],
1312
+ instant: ["\u0AA4\u0AB0\u0AA4", "\u0A87\u0AA8\u0ACD\u0AB8\u0ACD\u0A9F\u0AA8\u0ACD\u0A9F"],
1304
1313
  light: ["\u0AB2\u0ABE\u0A87\u0A9F"],
1305
1314
  medium: ["\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE"],
1306
1315
  high: ["\u0AB9\u0ABE\u0A87"],
@@ -1319,9 +1328,9 @@ var gu = {
1319
1328
  addFilesOpenerCandidates: ["\u0AAB\u0ABE\u0A87\u0AB2\u0ACB \u0A85\u0AA8\u0AC7 \u0AB5\u0AA7\u0AC1 \u0A89\u0AAE\u0AC7\u0AB0\u0ACB"],
1320
1329
  addPhotosFilesMenuItem: ["\u0AAB\u0ACB\u0A9F\u0ABE \u0A85\u0AA8\u0AC7 \u0AAB\u0ABE\u0A87\u0AB2\u0ACB \u0A89\u0AAE\u0AC7\u0AB0\u0ACB"],
1321
1330
  copyResponse: ["\u0AAA\u0ACD\u0AB0\u0AA4\u0ABF\u0AAD\u0ABE\u0AB5 \u0A95\u0AC9\u0AAA\u0ABF \u0A95\u0AB0\u0ACB"],
1322
- modeLabels: ["\u0AA4\u0AB0\u0AA4", "\u0AAE\u0AA7\u0ACD\u0AAF\u0AAE", "\u0A89\u0A9A\u0ACD\u0A9A", "\u0A85\u0AA4\u0ABF \u0A89\u0A9A\u0ACD\u0A9A", "\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE", "\u0AB9\u0ABE\u0A87", "\u0A8F\u0A95\u0ACD\u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABE \u0AB9\u0ABE\u0A87"],
1331
+ modeLabels: ["\u0AA4\u0AB0\u0AA4", "\u0AAE\u0AA7\u0ACD\u0AAF\u0AAE", "\u0A89\u0A9A\u0ACD\u0A9A", "\u0A85\u0AA4\u0ABF \u0A89\u0A9A\u0ACD\u0A9A", "\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE", "\u0AB9\u0ABE\u0A87", "\u0A8F\u0A95\u0ACD\u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABE \u0AB9\u0ABE\u0A87", "\u0A87\u0AA8\u0ACD\u0AB8\u0ACD\u0A9F\u0AA8\u0ACD\u0A9F"],
1323
1332
  modeOptions: {
1324
- instant: ["\u0AA4\u0AB0\u0AA4"],
1333
+ instant: ["\u0AA4\u0AB0\u0AA4", "\u0A87\u0AA8\u0ACD\u0AB8\u0ACD\u0A9F\u0AA8\u0ACD\u0A9F"],
1325
1334
  medium: ["\u0AAE\u0AA7\u0ACD\u0AAF\u0AAE", "\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE"],
1326
1335
  high: ["\u0A89\u0A9A\u0ACD\u0A9A", "\u0AB9\u0ABE\u0A87"],
1327
1336
  extraHigh: ["\u0A85\u0AA4\u0ABF \u0A89\u0A9A\u0ACD\u0A9A", "\u0A8F\u0A95\u0ACD\u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABE \u0AB9\u0ABE\u0A87"]
@@ -1345,16 +1354,16 @@ var gu = {
1345
1354
  var hi = {
1346
1355
  configurationAxes: {
1347
1356
  power: ["\u092A\u093E\u0935\u0930"],
1348
- model: ["\u092E\u0949\u0921\u0932"],
1349
- effort: ["\u092A\u094D\u0930\u092F\u093E\u0938", "\u0938\u094B\u091A\u0928\u0947 \u0915\u093E \u0938\u094D\u0924\u0930"],
1357
+ model: ["\u092E\u0949\u0921\u0932", "\u092E\u0949\u0921\u0932 \u091A\u0941\u0928\u0947\u0902"],
1358
+ effort: ["\u092A\u094D\u0930\u092F\u093E\u0938", "\u0938\u094B\u091A\u0928\u0947 \u0915\u093E \u0938\u094D\u0924\u0930", "\u092A\u093E\u0935\u0930"],
1350
1359
  speed: ["\u0917\u0924\u093F"],
1351
1360
  advanced: ["\u090F\u0921\u0935\u093E\u0902\u0938\u094D\u0921"]
1352
1361
  },
1353
1362
  configurationOptions: {
1354
- instant: ["\u0924\u0941\u0930\u0902\u0924"],
1363
+ instant: ["\u0924\u0941\u0930\u0902\u0924", "\u0907\u0902\u0938\u094D\u091F\u0947\u0902\u091F"],
1355
1364
  light: ["\u0932\u093E\u0907\u091F"],
1356
1365
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
1357
- high: ["\u0909\u091A\u094D\u091A"],
1366
+ high: ["\u0909\u091A\u094D\u091A", "\u0939\u093E\u0908"],
1358
1367
  extraHigh: ["\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908"],
1359
1368
  max: ["\u0905\u0927\u093F\u0915\u0924\u092E"],
1360
1369
  ultra: ["\u0905\u0932\u094D\u091F\u094D\u0930\u093E"],
@@ -1370,11 +1379,11 @@ var hi = {
1370
1379
  addFilesOpenerCandidates: ["\u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0915\u094B \u091C\u094B\u0921\u093C\u0947\u0902 \u0914\u0930 \u092D\u0940 \u092C\u0939\u0941\u0924 \u0915\u0941\u091B \u0915\u0930\u0947\u0902"],
1371
1380
  addPhotosFilesMenuItem: ["\u092B\u093C\u094B\u091F\u094B \u0914\u0930 \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u091C\u094B\u0921\u093C\u0947\u0902"],
1372
1381
  copyResponse: ["\u091C\u0935\u093E\u092C \u0915\u094B \u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902"],
1373
- modeLabels: ["\u0924\u0941\u0930\u0902\u0924", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u092C\u0939\u0941\u0924 \u0909\u091A\u094D\u091A", "\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908"],
1382
+ modeLabels: ["\u0924\u0941\u0930\u0902\u0924", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u092C\u0939\u0941\u0924 \u0909\u091A\u094D\u091A", "\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908", "\u0907\u0902\u0938\u094D\u091F\u0947\u0902\u091F", "\u0939\u093E\u0908"],
1374
1383
  modeOptions: {
1375
- instant: ["\u0924\u0941\u0930\u0902\u0924"],
1384
+ instant: ["\u0924\u0941\u0930\u0902\u0924", "\u0907\u0902\u0938\u094D\u091F\u0947\u0902\u091F"],
1376
1385
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
1377
- high: ["\u0909\u091A\u094D\u091A"],
1386
+ high: ["\u0909\u091A\u094D\u091A", "\u0939\u093E\u0908"],
1378
1387
  extraHigh: ["\u092C\u0939\u0941\u0924 \u0909\u091A\u094D\u091A", "\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908"]
1379
1388
  },
1380
1389
  modeOpenerExtra: ["\u0915\u0949\u0928\u094D\u092B\u093C\u093F\u0917\u0930 \u0915\u0930\u0947\u0902..."],
@@ -1396,7 +1405,8 @@ var hi = {
1396
1405
  var hr = {
1397
1406
  configurationAxes: {
1398
1407
  power: ["Snaga"],
1399
- effort: ["Razina napora"],
1408
+ model: ["Odaberite model"],
1409
+ effort: ["Razina napora", "Snaga"],
1400
1410
  speed: ["Brzina"],
1401
1411
  advanced: ["Napredno"]
1402
1412
  },
@@ -1439,8 +1449,8 @@ var hr = {
1439
1449
  var hu = {
1440
1450
  configurationAxes: {
1441
1451
  power: ["Teljes\xEDtm\xE9ny"],
1442
- model: ["Modell"],
1443
- effort: ["R\xE1ford\xEDt\xE1s", "Er\u0151fesz\xEDt\xE9s"],
1452
+ model: ["Modell", "Modell kiv\xE1laszt\xE1sa"],
1453
+ effort: ["R\xE1ford\xEDt\xE1s", "Er\u0151fesz\xEDt\xE9s", "Teljes\xEDtm\xE9ny"],
1444
1454
  speed: ["Sebess\xE9g"],
1445
1455
  advanced: ["Speci\xE1lis"]
1446
1456
  },
@@ -1484,8 +1494,8 @@ var hu = {
1484
1494
  var hy = {
1485
1495
  configurationAxes: {
1486
1496
  power: ["\u0540\u0566\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576"],
1487
- model: ["\u0544\u0578\u0564\u0565\u056C"],
1488
- effort: ["\u054B\u0561\u0576\u0584", "\u0544\u057F\u0561\u056E\u0578\u0572\u0578\u0582\u0569\u0575\u0561\u0576 \u0574\u0561\u056F\u0561\u0580\u0564\u0561\u056F"],
1497
+ model: ["\u0544\u0578\u0564\u0565\u056C", "\u0538\u0576\u057F\u0580\u0565\u056C \u0574\u0578\u0564\u0565\u056C\u0568"],
1498
+ effort: ["\u054B\u0561\u0576\u0584", "\u0544\u057F\u0561\u056E\u0578\u0572\u0578\u0582\u0569\u0575\u0561\u0576 \u0574\u0561\u056F\u0561\u0580\u0564\u0561\u056F", "\u0540\u0566\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576"],
1489
1499
  speed: ["\u0531\u0580\u0561\u0563\u0578\u0582\u0569\u0575\u0578\u0582\u0576"],
1490
1500
  advanced: ["\u0538\u0576\u0564\u056C\u0561\u0575\u0576\u057E\u0561\u056E"]
1491
1501
  },
@@ -1536,7 +1546,8 @@ var hy = {
1536
1546
  var id = {
1537
1547
  configurationAxes: {
1538
1548
  power: ["Daya"],
1539
- effort: ["Upaya"],
1549
+ model: ["Pilih model"],
1550
+ effort: ["Upaya", "Daya"],
1540
1551
  speed: ["Kecepatan"],
1541
1552
  advanced: ["Tingkat lanjut"]
1542
1553
  },
@@ -1581,8 +1592,8 @@ var id = {
1581
1592
  var is = {
1582
1593
  configurationAxes: {
1583
1594
  power: ["Afl"],
1584
- model: ["L\xEDkan"],
1585
- effort: ["\xC1reynsla", "Vinnsla"],
1595
+ model: ["L\xEDkan", "Velja l\xEDkan"],
1596
+ effort: ["\xC1reynsla", "Vinnsla", "Afl"],
1586
1597
  speed: ["Hra\xF0i"],
1587
1598
  advanced: ["\xCDtarlegt"]
1588
1599
  },
@@ -1630,8 +1641,8 @@ var is = {
1630
1641
  var ka = {
1631
1642
  configurationAxes: {
1632
1643
  power: ["\u10E1\u10D8\u10DB\u10EB\u10DA\u10D0\u10D5\u10E0\u10D4"],
1633
- model: ["\u10DB\u10DD\u10D3\u10D4\u10DA\u10D8"],
1634
- effort: ["\u10EB\u10D0\u10DA\u10D8\u10E1\u10EE\u10DB\u10D4\u10D5\u10D0", "\u10DB\u10E1\u10EF\u10D4\u10DA\u10DD\u10D1\u10D8\u10E1 \u10D3\u10DD\u10DC\u10D4"],
1644
+ model: ["\u10DB\u10DD\u10D3\u10D4\u10DA\u10D8", "\u10DB\u10DD\u10D3\u10D4\u10DA\u10D8\u10E1 \u10D0\u10E0\u10E9\u10D4\u10D5\u10D0"],
1645
+ effort: ["\u10EB\u10D0\u10DA\u10D8\u10E1\u10EE\u10DB\u10D4\u10D5\u10D0", "\u10DB\u10E1\u10EF\u10D4\u10DA\u10DD\u10D1\u10D8\u10E1 \u10D3\u10DD\u10DC\u10D4", "\u10E1\u10D8\u10DB\u10EB\u10DA\u10D0\u10D5\u10E0\u10D4"],
1635
1646
  speed: ["\u10E1\u10D8\u10E9\u10E5\u10D0\u10E0\u10D4"],
1636
1647
  advanced: ["\u10D2\u10D0\u10E4\u10D0\u10E0\u10D7\u10DD\u10D4\u10D1\u10E3\u10DA\u10D8"]
1637
1648
  },
@@ -1681,18 +1692,18 @@ var ka = {
1681
1692
  var kk = {
1682
1693
  configurationAxes: {
1683
1694
  power: ["\u049A\u0443\u0430\u0442"],
1684
- model: ["\u041C\u043E\u0434\u0435\u043B\u044C"],
1685
- effort: ["\u041A\u04AF\u0448-\u0436\u0456\u0433\u0435\u0440", "\u041E\u0439\u043B\u0430\u043D\u0443 \u0434\u0435\u04A3\u0433\u0435\u0439\u0456"],
1695
+ model: ["\u041C\u043E\u0434\u0435\u043B\u044C", "\u041C\u043E\u0434\u0435\u043B\u044C\u0434\u0456 \u0442\u0430\u04A3\u0434\u0430\u04A3\u044B\u0437"],
1696
+ effort: ["\u041A\u04AF\u0448-\u0436\u0456\u0433\u0435\u0440", "\u041E\u0439\u043B\u0430\u043D\u0443 \u0434\u0435\u04A3\u0433\u0435\u0439\u0456", "\u049A\u0443\u0430\u0442"],
1686
1697
  speed: ["\u0416\u044B\u043B\u0434\u0430\u043C\u0434\u044B\u049B"],
1687
1698
  advanced: ["\u041A\u0435\u04A3\u0435\u0439\u0442\u0456\u043B\u0433\u0435\u043D"]
1688
1699
  },
1689
1700
  configurationOptions: {
1690
- instant: ["\u0416\u0435\u0434\u0435\u043B"],
1701
+ instant: ["\u0416\u0435\u0434\u0435\u043B", "\u0422\u0435\u0437"],
1691
1702
  light: ["\u0416\u0435\u04A3\u0456\u043B"],
1692
1703
  medium: ["\u041E\u0440\u0442\u0430\u0448\u0430"],
1693
1704
  high: ["\u0416\u043E\u0493\u0430\u0440\u044B"],
1694
1705
  extraHigh: ["\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B"],
1695
- max: ["\u041C\u0430\u043A\u0441"],
1706
+ max: ["\u041C\u0430\u043A\u0441", "\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u0434\u044B"],
1696
1707
  ultra: ["\u0423\u043B\u044C\u0442\u0440\u0430"],
1697
1708
  standard: ["\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0442\u044B"],
1698
1709
  fast: ["\u0416\u044B\u043B\u0434\u0430\u043C"]
@@ -1706,9 +1717,9 @@ var kk = {
1706
1717
  addFilesOpenerCandidates: ["\u0424\u0430\u0439\u043B\u0434\u0430\u0440\u0434\u044B \u0436\u04D9\u043D\u0435 \u0431\u0430\u0441\u049B\u0430 \u0434\u0435\u0440\u0435\u043A\u0442\u0435\u0440\u0434\u0456 \u049B\u043E\u0441\u0443"],
1707
1718
  addPhotosFilesMenuItem: ["\u0424\u043E\u0442\u043E\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u043C\u0435\u043D \u0444\u0430\u0439\u043B\u0434\u0430\u0440 \u049B\u043E\u0441\u0443"],
1708
1719
  copyResponse: ["\u0416\u0430\u0443\u0430\u043F\u0442\u044B \u043A\u04E9\u0448\u0456\u0440\u0443"],
1709
- modeLabels: ["\u0416\u0435\u0434\u0435\u043B", "\u041E\u0440\u0442\u0430\u0448\u0430", "\u0416\u043E\u0493\u0430\u0440\u044B", "\u0410\u0441\u0430 \u0436\u043E\u0493\u0430\u0440\u044B", "\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B"],
1720
+ modeLabels: ["\u0416\u0435\u0434\u0435\u043B", "\u041E\u0440\u0442\u0430\u0448\u0430", "\u0416\u043E\u0493\u0430\u0440\u044B", "\u0410\u0441\u0430 \u0436\u043E\u0493\u0430\u0440\u044B", "\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B", "\u0422\u0435\u0437"],
1710
1721
  modeOptions: {
1711
- instant: ["\u0416\u0435\u0434\u0435\u043B"],
1722
+ instant: ["\u0416\u0435\u0434\u0435\u043B", "\u0422\u0435\u0437"],
1712
1723
  medium: ["\u041E\u0440\u0442\u0430\u0448\u0430"],
1713
1724
  high: ["\u0416\u043E\u0493\u0430\u0440\u044B"],
1714
1725
  extraHigh: ["\u0410\u0441\u0430 \u0436\u043E\u0493\u0430\u0440\u044B", "\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B"]
@@ -1732,13 +1743,13 @@ var kk = {
1732
1743
  var kn = {
1733
1744
  configurationAxes: {
1734
1745
  power: ["\u0CAA\u0CB5\u0CB0\u0CCD"],
1735
- model: ["\u0CAE\u0CBE\u0CA1\u0CC6\u0CB2\u0CCD"],
1736
- effort: ["\u0C8E\u0CAB\u0CB0\u0CCD\u0C9F\u0CCD", "\u0CAA\u0CCD\u0CB0\u0CAF\u0CA4\u0CCD\u0CA8"],
1746
+ model: ["\u0CAE\u0CBE\u0CA1\u0CC6\u0CB2\u0CCD", "\u0CAE\u0CBE\u0CA6\u0CB0\u0CBF\u0CAF\u0CA8\u0CCD\u0CA8\u0CC1 \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CBF"],
1747
+ effort: ["\u0C8E\u0CAB\u0CB0\u0CCD\u0C9F\u0CCD", "\u0CAA\u0CCD\u0CB0\u0CAF\u0CA4\u0CCD\u0CA8", "\u0CAA\u0CB5\u0CB0\u0CCD"],
1737
1748
  speed: ["\u0CB5\u0CC7\u0C97"],
1738
1749
  advanced: ["\u0CB8\u0CC1\u0CA7\u0CBE\u0CB0\u0CBF\u0CA4"]
1739
1750
  },
1740
1751
  configurationOptions: {
1741
- instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3"],
1752
+ instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0C87\u0CA8\u0CCD\u200C\u0CB8\u0CCD\u0C9F\u0C82\u0C9F\u0CCD"],
1742
1753
  light: ["\u0CB2\u0CC8\u0C9F\u0CCD"],
1743
1754
  medium: ["\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82"],
1744
1755
  high: ["\u0CB9\u0CC8"],
@@ -1757,9 +1768,9 @@ var kn = {
1757
1768
  addFilesOpenerCandidates: ["\u0CAB\u0CC8\u0CB2\u0CCD\u200C\u0C97\u0CB3\u0CC1 \u0CAE\u0CA4\u0CCD\u0CA4\u0CC1 \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CBF\u0CA8\u0CB5\u0CC1\u0C97\u0CB3\u0CA8\u0CCD\u0CA8\u0CC1 \u0CB8\u0CC7\u0CB0\u0CBF\u0CB8\u0CBF"],
1758
1769
  addPhotosFilesMenuItem: ["\u0CAB\u0CCB\u0C9F\u0CCA \u0CAE\u0CA4\u0CCD\u0CA4\u0CC1 \u0CAB\u0CC8\u0CB2\u0CCD\u200C\u0C97\u0CB3\u0CA8\u0CCD\u0CA8\u0CC1 \u0CB8\u0CC7\u0CB0\u0CBF\u0CB8\u0CBF"],
1759
1770
  copyResponse: ["\u0CAA\u0CCD\u0CB0\u0CA4\u0CBF\u0C95\u0CCD\u0CB0\u0CBF\u0CAF\u0CC6\u0CAF\u0CA8\u0CCD\u0CA8\u0CC1 \u0CA8\u0C95\u0CB2\u0CBF\u0CB8\u0CBF"],
1760
- modeLabels: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0CAE\u0CA7\u0CCD\u0CAF\u0CAE", "\u0C89\u0CA8\u0CCD\u0CA8\u0CA4", "\u0C85\u0CA4\u0CBF \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1", "\u0CAA\u0CCD\u0CB0\u0CCA", "\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82", "\u0CB9\u0CC8", "\u0C8E\u0C95\u0CCD\u0CB8\u0CCD\u200C\u0C9F\u0CCD\u0CB0\u0CBE \u0CB9\u0CC8"],
1771
+ modeLabels: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0CAE\u0CA7\u0CCD\u0CAF\u0CAE", "\u0C89\u0CA8\u0CCD\u0CA8\u0CA4", "\u0C85\u0CA4\u0CBF \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1", "\u0CAA\u0CCD\u0CB0\u0CCA", "\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82", "\u0CB9\u0CC8", "\u0C8E\u0C95\u0CCD\u0CB8\u0CCD\u200C\u0C9F\u0CCD\u0CB0\u0CBE \u0CB9\u0CC8", "\u0C87\u0CA8\u0CCD\u200C\u0CB8\u0CCD\u0C9F\u0C82\u0C9F\u0CCD"],
1761
1772
  modeOptions: {
1762
- instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3"],
1773
+ instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0C87\u0CA8\u0CCD\u200C\u0CB8\u0CCD\u0C9F\u0C82\u0C9F\u0CCD"],
1763
1774
  medium: ["\u0CAE\u0CA7\u0CCD\u0CAF\u0CAE", "\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82"],
1764
1775
  high: ["\u0C89\u0CA8\u0CCD\u0CA8\u0CA4", "\u0CB9\u0CC8"],
1765
1776
  extraHigh: ["\u0C85\u0CA4\u0CBF \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1", "\u0C8E\u0C95\u0CCD\u0CB8\u0CCD\u200C\u0C9F\u0CCD\u0CB0\u0CBE \u0CB9\u0CC8"],
@@ -1767,7 +1778,8 @@ var kn = {
1767
1778
  },
1768
1779
  modeOpenerExtra: ["\u0C95\u0CBE\u0CA8\u0CCD\u0CAB\u0CBF\u0C97\u0CB0\u0CCD \u0CAE\u0CBE\u0CA1\u0CBF..."],
1769
1780
  experienceOptions: {
1770
- chat: ["\u0C9A\u0CBE\u0C9F\u0CCD"]
1781
+ chat: ["\u0C9A\u0CBE\u0C9F\u0CCD"],
1782
+ work: ["\u0CB5\u0CB0\u0CCD\u0C95\u0CCD"]
1771
1783
  },
1772
1784
  tools: {
1773
1785
  web_search: ["\u0CB5\u0CC6\u0CAC\u0CCD \u0CB8\u0CB0\u0CCD\u0C9A\u0CCD"],
@@ -1783,8 +1795,8 @@ var kn = {
1783
1795
  var ko = {
1784
1796
  configurationAxes: {
1785
1797
  power: ["\uC131\uB2A5"],
1786
- model: ["\uBAA8\uB378"],
1787
- effort: ["\uCD94\uB860 \uC218\uC900", "\uCD94\uB860 \uAC15\uB3C4"],
1798
+ model: ["\uBAA8\uB378", "\uBAA8\uB378 \uC120\uD0DD"],
1799
+ effort: ["\uCD94\uB860 \uC218\uC900", "\uCD94\uB860 \uAC15\uB3C4", "\uC131\uB2A5"],
1788
1800
  speed: ["\uC18D\uB3C4"],
1789
1801
  advanced: ["\uACE0\uAE09"]
1790
1802
  },
@@ -1828,8 +1840,8 @@ var ko = {
1828
1840
  var lt = {
1829
1841
  configurationAxes: {
1830
1842
  power: ["Paj\u0117gumas"],
1831
- model: ["Modelis"],
1832
- effort: ["Pastangos", "M\u0105stymo lygis"],
1843
+ model: ["Modelis", "Pasirinkti model\u012F"],
1844
+ effort: ["Pastangos", "M\u0105stymo lygis", "Paj\u0117gumas"],
1833
1845
  speed: ["Greitis"],
1834
1846
  advanced: ["I\u0161pl\u0117stiniai"]
1835
1847
  },
@@ -1838,7 +1850,7 @@ var lt = {
1838
1850
  light: ["Lengvas"],
1839
1851
  medium: ["Vidutinis"],
1840
1852
  high: ["Auk\u0161tas"],
1841
- extraHigh: ["Labai auk\u0161tas"],
1853
+ extraHigh: ["Labai auk\u0161tas", "Ypa\u010D didel\u0117s"],
1842
1854
  max: ["Maks."],
1843
1855
  standard: ["Standartinis"],
1844
1856
  fast: ["Greitas"]
@@ -1875,13 +1887,13 @@ var lt = {
1875
1887
  var zhHans = {
1876
1888
  configurationAxes: {
1877
1889
  power: ["\u80FD\u529B"],
1878
- model: ["\u6A21\u578B"],
1879
- effort: ["\u63A8\u7406\u5F3A\u5EA6", "\u601D\u8003\u5F3A\u5EA6"],
1890
+ model: ["\u6A21\u578B", "\u9009\u62E9\u6A21\u578B"],
1891
+ effort: ["\u63A8\u7406\u5F3A\u5EA6", "\u601D\u8003\u5F3A\u5EA6", "\u80FD\u529B"],
1880
1892
  speed: ["\u901F\u5EA6"],
1881
1893
  advanced: ["\u9AD8\u7EA7"]
1882
1894
  },
1883
1895
  configurationOptions: {
1884
- instant: ["\u6781\u901F"],
1896
+ instant: ["\u6781\u901F", "\u5373\u65F6"],
1885
1897
  light: ["\u8F7B\u5EA6"],
1886
1898
  medium: ["\u4E2D"],
1887
1899
  high: ["\u9AD8"],
@@ -1900,9 +1912,9 @@ var zhHans = {
1900
1912
  addFilesOpenerCandidates: ["\u6DFB\u52A0\u6587\u4EF6\u7B49"],
1901
1913
  addPhotosFilesMenuItem: ["\u6DFB\u52A0\u7167\u7247\u548C\u6587\u4EF6"],
1902
1914
  copyResponse: ["\u590D\u5236\u56DE\u590D"],
1903
- modeLabels: ["\u6781\u901F", "\u5747\u8861", "\u9AD8\u7EA7", "\u8D85\u9AD8", "\u4E13\u4E1A", "\u4E2D", "\u9AD8", "\u6781\u9AD8"],
1915
+ modeLabels: ["\u6781\u901F", "\u5747\u8861", "\u9AD8\u7EA7", "\u8D85\u9AD8", "\u4E13\u4E1A", "\u4E2D", "\u9AD8", "\u6781\u9AD8", "\u5373\u65F6"],
1904
1916
  modeOptions: {
1905
- instant: ["\u6781\u901F"],
1917
+ instant: ["\u6781\u901F", "\u5373\u65F6"],
1906
1918
  medium: ["\u5747\u8861", "\u4E2D"],
1907
1919
  high: ["\u9AD8\u7EA7", "\u9AD8"],
1908
1920
  extraHigh: ["\u8D85\u9AD8", "\u6781\u9AD8"],
@@ -1926,8 +1938,8 @@ var zhHans = {
1926
1938
  // src/dom/locale/ur.ts
1927
1939
  var ur = {
1928
1940
  configurationAxes: {
1929
- model: ["\u0645\u0627\u0688\u0644"],
1930
- effort: ["\u06A9\u0648\u0634\u0634"],
1941
+ model: ["\u0645\u0627\u0688\u0644", "\u0645\u0627\u0688\u0644 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u06CC\u06BA"],
1942
+ effort: ["\u06A9\u0648\u0634\u0634", "Power"],
1931
1943
  speed: ["\u0631\u0641\u062A\u0627\u0631"],
1932
1944
  advanced: ["\u0627\u06CC\u0688\u0648\u0627\u0646\u0633\u0688"]
1933
1945
  },
@@ -1977,13 +1989,13 @@ var ur = {
1977
1989
  var uk = {
1978
1990
  configurationAxes: {
1979
1991
  power: ["\u041F\u043E\u0442\u0443\u0436\u043D\u0456\u0441\u0442\u044C"],
1980
- model: ["\u041C\u043E\u0434\u0435\u043B\u044C"],
1981
- effort: ["\u0417\u0443\u0441\u0438\u043B\u043B\u044F", "\u041C\u0456\u0440\u043A\u0443\u0432\u0430\u043D\u043D\u044F"],
1992
+ model: ["\u041C\u043E\u0434\u0435\u043B\u044C", "\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u043C\u043E\u0434\u0435\u043B\u044C"],
1993
+ effort: ["\u0417\u0443\u0441\u0438\u043B\u043B\u044F", "\u041C\u0456\u0440\u043A\u0443\u0432\u0430\u043D\u043D\u044F", "\u041F\u043E\u0442\u0443\u0436\u043D\u0456\u0441\u0442\u044C"],
1982
1994
  speed: ["\u0428\u0432\u0438\u0434\u043A\u0456\u0441\u0442\u044C"],
1983
1995
  advanced: ["\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u043E"]
1984
1996
  },
1985
1997
  configurationOptions: {
1986
- instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439"],
1998
+ instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u041C\u0438\u0442\u0442\u0454\u0432\u0435"],
1987
1999
  light: ["\u041D\u0438\u0437\u044C\u043A\u0438\u0439"],
1988
2000
  medium: ["\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439"],
1989
2001
  high: ["\u0412\u0438\u0441\u043E\u043A\u0438\u0439"],
@@ -2002,9 +2014,9 @@ var uk = {
2002
2014
  addFilesOpenerCandidates: ["\u0414\u043E\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043B\u0438 \u0439 \u0432\u0438\u043A\u043E\u043D\u0443\u0439\u0442\u0435 \u0456\u043D\u0448\u0456 \u0434\u0456\u0457"],
2003
2015
  addPhotosFilesMenuItem: ["\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0432\u0456\u0442\u043B\u0438\u043D\u0438 \u0442\u0430 \u0444\u0430\u0439\u043B\u0438"],
2004
2016
  copyResponse: ["\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u044C"],
2005
- modeLabels: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439", "\u0412\u0438\u0441\u043E\u043A\u0438\u0439", "\u0414\u0443\u0436\u0435 \u0432\u0438\u0441\u043E\u043A\u0438\u0439", "\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439"],
2017
+ modeLabels: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439", "\u0412\u0438\u0441\u043E\u043A\u0438\u0439", "\u0414\u0443\u0436\u0435 \u0432\u0438\u0441\u043E\u043A\u0438\u0439", "\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439", "\u041C\u0438\u0442\u0442\u0454\u0432\u0435"],
2006
2018
  modeOptions: {
2007
- instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439"],
2019
+ instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u041C\u0438\u0442\u0442\u0454\u0432\u0435"],
2008
2020
  medium: ["\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439"],
2009
2021
  high: ["\u0412\u0438\u0441\u043E\u043A\u0438\u0439"],
2010
2022
  extraHigh: ["\u0414\u0443\u0436\u0435 \u0432\u0438\u0441\u043E\u043A\u0438\u0439", "\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439"]
@@ -2028,16 +2040,16 @@ var uk = {
2028
2040
  var ptBR = {
2029
2041
  configurationAxes: {
2030
2042
  power: ["Pot\xEAncia"],
2031
- model: ["Modelo"],
2032
- effort: ["Esfor\xE7o", "N\xEDvel de racioc\xEDnio"],
2043
+ model: ["Modelo", "Selecionar modelo"],
2044
+ effort: ["Esfor\xE7o", "N\xEDvel de racioc\xEDnio", "Pot\xEAncia"],
2033
2045
  speed: ["Velocidade"],
2034
2046
  advanced: ["Avan\xE7ado"]
2035
2047
  },
2036
2048
  configurationOptions: {
2037
- instant: ["Instant\xE2neo"],
2049
+ instant: ["Instant\xE2neo", "Instant\xE2nea"],
2038
2050
  light: ["Leve"],
2039
- medium: ["M\xE9dio"],
2040
- high: ["Alto"],
2051
+ medium: ["M\xE9dio", "M\xE9dia"],
2052
+ high: ["Alto", "Alta"],
2041
2053
  extraHigh: ["Extra alto"],
2042
2054
  max: ["M\xE1ximo"],
2043
2055
  standard: ["Padr\xE3o"],
@@ -2052,11 +2064,11 @@ var ptBR = {
2052
2064
  addFilesOpenerCandidates: ["Adicionar arquivos e mais"],
2053
2065
  addPhotosFilesMenuItem: ["Carregar fotos e arquivos"],
2054
2066
  copyResponse: ["Copiar resposta"],
2055
- modeLabels: ["Instant\xE2neo", "M\xE9dio", "Alto", "Muito alta", "Extra alto"],
2067
+ modeLabels: ["Instant\xE2neo", "M\xE9dio", "Alto", "Muito alta", "Extra alto", "Instant\xE2nea", "M\xE9dia", "Alta"],
2056
2068
  modeOptions: {
2057
- instant: ["Instant\xE2neo"],
2058
- medium: ["M\xE9dio"],
2059
- high: ["Alto"],
2069
+ instant: ["Instant\xE2neo", "Instant\xE2nea"],
2070
+ medium: ["M\xE9dio", "M\xE9dia"],
2071
+ high: ["Alto", "Alta"],
2060
2072
  extraHigh: ["Muito alta", "Extra alto"]
2061
2073
  },
2062
2074
  modeOpenerExtra: ["Configurar\u2026"],
@@ -2074,8 +2086,8 @@ var ptBR = {
2074
2086
  var ptPT = {
2075
2087
  configurationAxes: {
2076
2088
  power: ["Capacidade"],
2077
- model: ["Modelo"],
2078
- effort: ["Esfor\xE7o"],
2089
+ model: ["Modelo", "Selecionar modelo"],
2090
+ effort: ["Esfor\xE7o", "Capacidade"],
2079
2091
  speed: ["Velocidade"],
2080
2092
  advanced: ["Avan\xE7ado"]
2081
2093
  },
@@ -2083,7 +2095,7 @@ var ptPT = {
2083
2095
  instant: ["Instant\xE2neo"],
2084
2096
  light: ["Leve"],
2085
2097
  medium: ["M\xE9dio"],
2086
- high: ["Elevado"],
2098
+ high: ["Elevado", "Elevada"],
2087
2099
  extraHigh: ["Muito elevado"],
2088
2100
  max: ["M\xE1x."],
2089
2101
  standard: ["Padr\xE3o"],
@@ -2098,11 +2110,11 @@ var ptPT = {
2098
2110
  addFilesOpenerCandidates: ["Adicionar ficheiros e mais"],
2099
2111
  addPhotosFilesMenuItem: ["Carregar fotos e ficheiros"],
2100
2112
  copyResponse: ["Copiar resposta"],
2101
- modeLabels: ["Instant\xE2neo", "M\xE9dia", "Alta", "M\xE1ximo", "M\xE9dio", "Elevado", "Muito elevado"],
2113
+ modeLabels: ["Instant\xE2neo", "M\xE9dia", "Alta", "M\xE1ximo", "M\xE9dio", "Elevado", "Muito elevado", "Elevada"],
2102
2114
  modeOptions: {
2103
2115
  instant: ["Instant\xE2neo"],
2104
2116
  medium: ["M\xE9dia", "M\xE9dio"],
2105
- high: ["Alta", "Elevado"],
2117
+ high: ["Alta", "Elevado", "Elevada"],
2106
2118
  extraHigh: ["M\xE1ximo", "Muito elevado"]
2107
2119
  },
2108
2120
  modeOpenerExtra: ["Configurar..."],
@@ -2120,7 +2132,8 @@ var ptPT = {
2120
2132
  var pl = {
2121
2133
  configurationAxes: {
2122
2134
  power: ["Moc"],
2123
- effort: ["Nak\u0142ad pracy", "Wysi\u0142ek"],
2135
+ model: ["Wybierz model"],
2136
+ effort: ["Nak\u0142ad pracy", "Wysi\u0142ek", "Moc"],
2124
2137
  speed: ["Szybko\u015B\u0107"],
2125
2138
  advanced: ["Zaawansowane"]
2126
2139
  },
@@ -2165,7 +2178,8 @@ var pl = {
2165
2178
  var sk = {
2166
2179
  configurationAxes: {
2167
2180
  power: ["V\xFDkon"],
2168
- effort: ["\xDAsilie"],
2181
+ model: ["Vyberte model"],
2182
+ effort: ["\xDAsilie", "V\xFDkon"],
2169
2183
  speed: ["R\xFDchlos\u0165"],
2170
2184
  advanced: ["Roz\u0161\xEDren\xE9"]
2171
2185
  },
@@ -2210,7 +2224,8 @@ var sk = {
2210
2224
  var ro = {
2211
2225
  configurationAxes: {
2212
2226
  power: ["Capacitate"],
2213
- effort: ["Efort"],
2227
+ model: ["Selecteaz\u0103 modelul"],
2228
+ effort: ["Efort", "Capacitate"],
2214
2229
  speed: ["Vitez\u0103"],
2215
2230
  advanced: ["Avansat"]
2216
2231
  },
@@ -2252,8 +2267,8 @@ var ro = {
2252
2267
  var nb = {
2253
2268
  configurationAxes: {
2254
2269
  power: ["Styrke"],
2255
- model: ["Modell"],
2256
- effort: ["Innsats", "Resonneringsniv\xE5"],
2270
+ model: ["Modell", "Velg modell"],
2271
+ effort: ["Innsats", "Resonneringsniv\xE5", "Styrke"],
2257
2272
  speed: ["Hastighet"],
2258
2273
  advanced: ["Avansert"]
2259
2274
  },
@@ -2297,13 +2312,13 @@ var nb = {
2297
2312
  var ml = {
2298
2313
  configurationAxes: {
2299
2314
  power: ["\u0D2A\u0D35\u0D7C"],
2300
- model: ["\u0D2E\u0D4B\u0D21\u0D7D"],
2301
- effort: ["\u0D36\u0D4D\u0D30\u0D2E\u0D02"],
2315
+ model: ["\u0D2E\u0D4B\u0D21\u0D7D", "\u0D2E\u0D4B\u0D21\u0D7D \u0D24\u0D3F\u0D30\u0D1E\u0D4D\u0D1E\u0D46\u0D1F\u0D41\u0D15\u0D4D\u0D15\u0D41\u0D15"],
2316
+ effort: ["\u0D36\u0D4D\u0D30\u0D2E\u0D02", "\u0D2A\u0D35\u0D7C"],
2302
2317
  speed: ["\u0D35\u0D47\u0D17\u0D24"],
2303
2318
  advanced: ["\u0D35\u0D3F\u0D2A\u0D41\u0D32\u0D2E\u0D3E\u0D2F\u0D24\u0D4D"]
2304
2319
  },
2305
2320
  configurationOptions: {
2306
- instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02"],
2321
+ instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D7B\u0D38\u0D4D\u0D31\u0D4D\u0D31\u0D7B\u0D4D\u0D31\u0D4D"],
2307
2322
  light: ["\u0D32\u0D33\u0D3F\u0D24\u0D02"],
2308
2323
  medium: ["\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02"],
2309
2324
  high: ["\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
@@ -2322,9 +2337,9 @@ var ml = {
2322
2337
  addFilesOpenerCandidates: ["\u0D2B\u0D2F\u0D32\u0D41\u0D15\u0D33\u0D41\u0D02 \u0D2E\u0D31\u0D4D\u0D31\u0D41\u0D02 \u0D1A\u0D47\u0D7C\u0D15\u0D4D\u0D15\u0D41\u0D15"],
2323
2338
  addPhotosFilesMenuItem: ["\u0D2B\u0D4B\u0D1F\u0D4D\u0D1F\u0D4B\u0D15\u0D33\u0D41\u0D02 \u0D2B\u0D2F\u0D32\u0D41\u0D15\u0D33\u0D41\u0D02 \u0D05\u0D2A\u0D4D\u200C\u0D32\u0D4B\u0D21\u0D4D \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D15"],
2324
2339
  copyResponse: ["\u0D2E\u0D31\u0D41\u0D2A\u0D1F\u0D3F \u0D15\u0D4B\u0D2A\u0D4D\u0D2A\u0D3F \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D15"],
2325
- modeLabels: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02", "\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D", "\u0D35\u0D33\u0D30\u0D46 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28", "\u0D2A\u0D4D\u0D30\u0D4B", "\u0D05\u0D24\u0D4D\u0D2F\u0D27\u0D3F\u0D15\u0D02 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
2340
+ modeLabels: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02", "\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D", "\u0D35\u0D33\u0D30\u0D46 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28", "\u0D2A\u0D4D\u0D30\u0D4B", "\u0D05\u0D24\u0D4D\u0D2F\u0D27\u0D3F\u0D15\u0D02 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D", "\u0D07\u0D7B\u0D38\u0D4D\u0D31\u0D4D\u0D31\u0D7B\u0D4D\u0D31\u0D4D"],
2326
2341
  modeOptions: {
2327
- instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02"],
2342
+ instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D7B\u0D38\u0D4D\u0D31\u0D4D\u0D31\u0D7B\u0D4D\u0D31\u0D4D"],
2328
2343
  medium: ["\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02"],
2329
2344
  high: ["\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
2330
2345
  extraHigh: ["\u0D35\u0D33\u0D30\u0D46 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28", "\u0D05\u0D24\u0D4D\u0D2F\u0D27\u0D3F\u0D15\u0D02 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
@@ -2348,8 +2363,8 @@ var ml = {
2348
2363
  // src/dom/locale/ru.ts
2349
2364
  var ru = {
2350
2365
  configurationAxes: {
2351
- model: ["\u041C\u043E\u0434\u0435\u043B\u044C"],
2352
- effort: ["\u0423\u0440\u043E\u0432\u0435\u043D\u044C", "\u0423\u0440\u043E\u0432\u0435\u043D\u044C \u043F\u0440\u043E\u0440\u0430\u0431\u043E\u0442\u043A\u0438"],
2366
+ model: ["\u041C\u043E\u0434\u0435\u043B\u044C", "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u044C"],
2367
+ effort: ["\u0423\u0440\u043E\u0432\u0435\u043D\u044C", "\u0423\u0440\u043E\u0432\u0435\u043D\u044C \u043F\u0440\u043E\u0440\u0430\u0431\u043E\u0442\u043A\u0438", "Power"],
2353
2368
  speed: ["\u0421\u043A\u043E\u0440\u043E\u0441\u0442\u044C"],
2354
2369
  advanced: ["\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0435"]
2355
2370
  },
@@ -2397,8 +2412,8 @@ var ru = {
2397
2412
  var pa = {
2398
2413
  configurationAxes: {
2399
2414
  power: ["\u0A2A\u0A3E\u0A35\u0A30"],
2400
- model: ["\u0A2E\u0A3E\u0A21\u0A32"],
2401
- effort: ["\u0A15\u0A4B\u0A38\u0A3C\u0A3F\u0A38\u0A3C"],
2415
+ model: ["\u0A2E\u0A3E\u0A21\u0A32", "\u0A2E\u0A3E\u0A21\u0A32 \u0A1A\u0A41\u0A23\u0A4B"],
2416
+ effort: ["\u0A15\u0A4B\u0A38\u0A3C\u0A3F\u0A38\u0A3C", "\u0A2A\u0A3E\u0A35\u0A30"],
2402
2417
  speed: ["\u0A17\u0A24\u0A40"],
2403
2418
  advanced: ["\u0A09\u0A71\u0A28\u0A24"]
2404
2419
  },
@@ -2449,13 +2464,13 @@ var pa = {
2449
2464
  var mr = {
2450
2465
  configurationAxes: {
2451
2466
  power: ["\u092A\u0949\u0935\u0930"],
2452
- model: ["\u092E\u0949\u0921\u0947\u0932"],
2453
- effort: ["\u092A\u094D\u0930\u092F\u0924\u094D\u0928"],
2467
+ model: ["\u092E\u0949\u0921\u0947\u0932", "\u092E\u0949\u0921\u0947\u0932 \u0928\u093F\u0935\u0921\u093E"],
2468
+ effort: ["\u092A\u094D\u0930\u092F\u0924\u094D\u0928", "\u092A\u0949\u0935\u0930"],
2454
2469
  speed: ["\u0935\u0947\u0917"],
2455
2470
  advanced: ["\u092A\u094D\u0930\u0917\u0924"]
2456
2471
  },
2457
2472
  configurationOptions: {
2458
- instant: ["\u091D\u091F\u092A\u091F"],
2473
+ instant: ["\u091D\u091F\u092A\u091F", "\u0907\u0928\u094D\u0938\u094D\u091F\u0902\u091F"],
2459
2474
  light: ["\u0939\u0932\u0915\u093E"],
2460
2475
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
2461
2476
  high: ["\u0909\u091A\u094D\u091A"],
@@ -2474,9 +2489,9 @@ var mr = {
2474
2489
  addFilesOpenerCandidates: ["\u092B\u093E\u0907\u0932\u094D\u0938 \u091C\u094B\u0921\u093E \u0906\u0923\u093F \u0907\u0924\u0930 \u0905\u0928\u0947\u0915 \u0917\u094B\u0937\u094D\u091F\u0940 \u0915\u0930\u093E"],
2475
2490
  addPhotosFilesMenuItem: ["\u092B\u094B\u091F\u094B \u0906\u0923\u093F \u092B\u093E\u0907\u0932\u094D\u0938 \u0905\u092A\u0932\u094B\u0921 \u0915\u0930\u093E"],
2476
2491
  copyResponse: ["\u092A\u094D\u0930\u0924\u093F\u0938\u093E\u0926 \u0915\u0949\u092A\u0940 \u0915\u0930\u093E"],
2477
- modeLabels: ["\u091D\u091F\u092A\u091F", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u0905\u0924\u093F\u0909\u091A\u094D\u091A", "\u092A\u094D\u0930\u094B", "\u0905\u0924\u094D\u092F\u0941\u091A\u094D\u091A"],
2492
+ modeLabels: ["\u091D\u091F\u092A\u091F", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u0905\u0924\u093F\u0909\u091A\u094D\u091A", "\u092A\u094D\u0930\u094B", "\u0905\u0924\u094D\u092F\u0941\u091A\u094D\u091A", "\u0907\u0928\u094D\u0938\u094D\u091F\u0902\u091F"],
2478
2493
  modeOptions: {
2479
- instant: ["\u091D\u091F\u092A\u091F"],
2494
+ instant: ["\u091D\u091F\u092A\u091F", "\u0907\u0928\u094D\u0938\u094D\u091F\u0902\u091F"],
2480
2495
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
2481
2496
  high: ["\u0909\u091A\u094D\u091A"],
2482
2497
  extraHigh: ["\u0905\u0924\u093F\u0909\u091A\u094D\u091A", "\u0905\u0924\u094D\u092F\u0941\u091A\u094D\u091A"],
@@ -2501,7 +2516,8 @@ var mr = {
2501
2516
  var tr = {
2502
2517
  configurationAxes: {
2503
2518
  power: ["G\xFC\xE7"],
2504
- effort: ["D\xFCzey", "\xC7aba"],
2519
+ model: ["Model se\xE7"],
2520
+ effort: ["D\xFCzey", "\xC7aba", "G\xFC\xE7"],
2505
2521
  speed: ["H\u0131z"],
2506
2522
  advanced: ["Geli\u015Fmi\u015F"]
2507
2523
  },
@@ -2550,8 +2566,8 @@ var tr = {
2550
2566
  var sw = {
2551
2567
  configurationAxes: {
2552
2568
  power: ["Umahiri"],
2553
- model: ["Modeli", "Mfumo"],
2554
- effort: ["Juhudi", "Kiwango cha uchambuzi"],
2569
+ model: ["Modeli", "Mfumo", "Chagua muundo"],
2570
+ effort: ["Juhudi", "Kiwango cha uchambuzi", "Umahiri"],
2555
2571
  speed: ["Kasi"],
2556
2572
  advanced: ["Za kina"]
2557
2573
  },
@@ -2560,7 +2576,7 @@ var sw = {
2560
2576
  light: ["Nyepesi"],
2561
2577
  medium: ["Wastani"],
2562
2578
  high: ["Juu"],
2563
- extraHigh: ["Juu Zaidi"],
2579
+ extraHigh: ["Juu Zaidi", "Juu Sana"],
2564
2580
  max: ["Juu kabisa"],
2565
2581
  standard: ["Kawaida"],
2566
2582
  fast: ["Haraka"]
@@ -2596,13 +2612,13 @@ var sw = {
2596
2612
  var te = {
2597
2613
  configurationAxes: {
2598
2614
  power: ["\u0C2A\u0C35\u0C30\u0C4D"],
2599
- model: ["\u0C2E\u0C4B\u0C21\u0C32\u0C4D"],
2600
- effort: ["\u0C2A\u0C4D\u0C30\u0C2F\u0C24\u0C4D\u0C28\u0C02", "\u0C06\u0C32\u0C4B\u0C1A\u0C28"],
2615
+ model: ["\u0C2E\u0C4B\u0C21\u0C32\u0C4D", "\u0C2E\u0C4B\u0C21\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F"],
2616
+ effort: ["\u0C2A\u0C4D\u0C30\u0C2F\u0C24\u0C4D\u0C28\u0C02", "\u0C06\u0C32\u0C4B\u0C1A\u0C28", "\u0C2A\u0C35\u0C30\u0C4D"],
2601
2617
  speed: ["\u0C35\u0C47\u0C17\u0C02"],
2602
2618
  advanced: ["\u0C05\u0C27\u0C41\u0C28\u0C3E\u0C24\u0C28\u0C02"]
2603
2619
  },
2604
2620
  configurationOptions: {
2605
- instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02"],
2621
+ instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C07\u0C28\u0C4D\u200C\u0C38\u0C4D\u0C1F\u0C46\u0C02\u0C1F\u0C4D\u200C\u0C17\u0C3E"],
2606
2622
  light: ["\u0C32\u0C48\u0C1F\u0C4D"],
2607
2623
  medium: ["\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02"],
2608
2624
  high: ["\u0C39\u0C48"],
@@ -2621,9 +2637,9 @@ var te = {
2621
2637
  addFilesOpenerCandidates: ["\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C32\u0C28\u0C41 \u0C2E\u0C30\u0C3F\u0C2F\u0C41 \u0C2E\u0C30\u0C3F\u0C28\u0C4D\u0C28\u0C3F \u0C1C\u0C4B\u0C21\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F"],
2622
2638
  addPhotosFilesMenuItem: ["\u0C2B\u0C4B\u0C1F\u0C4B\u0C32\u0C41 & \u0C2B\u0C48\u0C32\u0C4D\u200C\u0C32\u0C28\u0C41 \u0C05\u0C2A\u0C4D\u200C\u0C32\u0C4B\u0C21\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F"],
2623
2639
  copyResponse: ["\u0C2A\u0C4D\u0C30\u0C24\u0C3F\u0C38\u0C4D\u0C2A\u0C02\u0C26\u0C28\u0C28\u0C41 \u0C15\u0C3E\u0C2A\u0C40 \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F"],
2624
- modeLabels: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C2E\u0C27\u0C4D\u0C2F\u0C38\u0C4D\u0C25", "\u0C05\u0C27\u0C3F\u0C15", "\u0C05\u0C24\u0C4D\u0C2F\u0C27\u0C3F\u0C15", "\u0C2A\u0C4D\u0C30\u0C4B", "\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02", "\u0C39\u0C48", "\u0C0E\u0C15\u0C4D\u0C38\u0C4D\u200C\u0C1F\u0C4D\u0C30\u0C3E \u0C39\u0C48"],
2640
+ modeLabels: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C2E\u0C27\u0C4D\u0C2F\u0C38\u0C4D\u0C25", "\u0C05\u0C27\u0C3F\u0C15", "\u0C05\u0C24\u0C4D\u0C2F\u0C27\u0C3F\u0C15", "\u0C2A\u0C4D\u0C30\u0C4B", "\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02", "\u0C39\u0C48", "\u0C0E\u0C15\u0C4D\u0C38\u0C4D\u200C\u0C1F\u0C4D\u0C30\u0C3E \u0C39\u0C48", "\u0C07\u0C28\u0C4D\u200C\u0C38\u0C4D\u0C1F\u0C46\u0C02\u0C1F\u0C4D\u200C\u0C17\u0C3E"],
2625
2641
  modeOptions: {
2626
- instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02"],
2642
+ instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C07\u0C28\u0C4D\u200C\u0C38\u0C4D\u0C1F\u0C46\u0C02\u0C1F\u0C4D\u200C\u0C17\u0C3E"],
2627
2643
  medium: ["\u0C2E\u0C27\u0C4D\u0C2F\u0C38\u0C4D\u0C25", "\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02"],
2628
2644
  high: ["\u0C05\u0C27\u0C3F\u0C15", "\u0C39\u0C48"],
2629
2645
  extraHigh: ["\u0C05\u0C24\u0C4D\u0C2F\u0C27\u0C3F\u0C15", "\u0C0E\u0C15\u0C4D\u0C38\u0C4D\u200C\u0C1F\u0C4D\u0C30\u0C3E \u0C39\u0C48"],
@@ -2647,7 +2663,8 @@ var te = {
2647
2663
  // src/dom/locale/tl.ts
2648
2664
  var tl = {
2649
2665
  configurationAxes: {
2650
- effort: ["Pagsisikap", "Pag-iisip"],
2666
+ model: ["Mag-select ng model"],
2667
+ effort: ["Pagsisikap", "Pag-iisip", "Power"],
2651
2668
  speed: ["Bilis"]
2652
2669
  },
2653
2670
  configurationOptions: {
@@ -2676,8 +2693,8 @@ var tl = {
2676
2693
  var th = {
2677
2694
  configurationAxes: {
2678
2695
  power: ["\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16"],
2679
- model: ["\u0E42\u0E21\u0E40\u0E14\u0E25"],
2680
- effort: ["\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E01\u0E32\u0E23\u0E04\u0E34\u0E14"],
2696
+ model: ["\u0E42\u0E21\u0E40\u0E14\u0E25", "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E42\u0E21\u0E40\u0E14\u0E25"],
2697
+ effort: ["\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E01\u0E32\u0E23\u0E04\u0E34\u0E14", "\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16"],
2681
2698
  speed: ["\u0E04\u0E27\u0E32\u0E21\u0E40\u0E23\u0E47\u0E27"],
2682
2699
  advanced: ["\u0E02\u0E31\u0E49\u0E19\u0E2A\u0E39\u0E07"]
2683
2700
  },
@@ -2715,8 +2732,8 @@ var th = {
2715
2732
  var bn = {
2716
2733
  configurationAxes: {
2717
2734
  power: ["\u0995\u09CD\u09B7\u09AE\u09A4\u09BE"],
2718
- model: ["\u09AE\u09A1\u09C7\u09B2"],
2719
- effort: ["\u09AA\u09CD\u09B0\u099A\u09C7\u09B7\u09CD\u099F\u09BE"],
2735
+ model: ["\u09AE\u09A1\u09C7\u09B2", "\u09AE\u09A1\u09C7\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8"],
2736
+ effort: ["\u09AA\u09CD\u09B0\u099A\u09C7\u09B7\u09CD\u099F\u09BE", "\u0995\u09CD\u09B7\u09AE\u09A4\u09BE"],
2720
2737
  speed: ["\u0997\u09A4\u09BF"],
2721
2738
  advanced: ["\u0989\u09A8\u09CD\u09A8\u09A4"]
2722
2739
  },
@@ -2767,7 +2784,8 @@ var bn = {
2767
2784
  var ms = {
2768
2785
  configurationAxes: {
2769
2786
  power: ["Kuasa"],
2770
- effort: ["Usaha"],
2787
+ model: ["Pilih model"],
2788
+ effort: ["Usaha", "Kuasa"],
2771
2789
  speed: ["Kelajuan"],
2772
2790
  advanced: ["Lanjutan"]
2773
2791
  },
@@ -2815,8 +2833,8 @@ var ms = {
2815
2833
  var so = {
2816
2834
  configurationAxes: {
2817
2835
  power: ["Awood"],
2818
- model: ["Moodel"],
2819
- effort: ["Dadaal"],
2836
+ model: ["Moodel", "Dooro moodelka"],
2837
+ effort: ["Dadaal", "Awood"],
2820
2838
  speed: ["Xawaare"],
2821
2839
  advanced: ["Horumarsan"]
2822
2840
  },
@@ -2865,7 +2883,8 @@ var so = {
2865
2883
  var nl = {
2866
2884
  configurationAxes: {
2867
2885
  power: ["Rekenkracht"],
2868
- effort: ["Inspanning"],
2886
+ model: ["Model selecteren"],
2887
+ effort: ["Inspanning", "Rekenkracht"],
2869
2888
  speed: ["Snelheid"],
2870
2889
  advanced: ["Geavanceerd"]
2871
2890
  },
@@ -2908,8 +2927,8 @@ var nl = {
2908
2927
  var sv = {
2909
2928
  configurationAxes: {
2910
2929
  power: ["Prestanda"],
2911
- model: ["Modell"],
2912
- effort: ["Resonemangsniv\xE5"],
2930
+ model: ["Modell", "V\xE4lj modell"],
2931
+ effort: ["Resonemangsniv\xE5", "Prestanda"],
2913
2932
  speed: ["Hastighet"],
2914
2933
  advanced: ["Avancerat"]
2915
2934
  },
@@ -2952,8 +2971,8 @@ var sv = {
2952
2971
  var lv = {
2953
2972
  configurationAxes: {
2954
2973
  power: ["Jauda"],
2955
- model: ["Modelis"],
2956
- effort: ["P\u016Bles"],
2974
+ model: ["Modelis", "Izv\u0113l\u0113ties modeli"],
2975
+ effort: ["P\u016Bles", "Jauda"],
2957
2976
  speed: ["\u0100trums"],
2958
2977
  advanced: ["Papildu"]
2959
2978
  },
@@ -2998,8 +3017,8 @@ var lv = {
2998
3017
  var mk = {
2999
3018
  configurationAxes: {
3000
3019
  power: ["\u041C\u043E\u045C\u043D\u043E\u0441\u0442"],
3001
- model: ["\u041C\u043E\u0434\u0435\u043B"],
3002
- effort: ["\u041D\u0430\u043F\u043E\u0440"],
3020
+ model: ["\u041C\u043E\u0434\u0435\u043B", "\u0418\u0437\u0431\u0435\u0440\u0438 \u043C\u043E\u0434\u0435\u043B"],
3021
+ effort: ["\u041D\u0430\u043F\u043E\u0440", "\u041C\u043E\u045C\u043D\u043E\u0441\u0442"],
3003
3022
  speed: ["\u0411\u0440\u0437\u0438\u043D\u0430"],
3004
3023
  advanced: ["\u041D\u0430\u043F\u0440\u0435\u0434\u043D\u043E"]
3005
3024
  },
@@ -3047,8 +3066,8 @@ var mk = {
3047
3066
  var sq = {
3048
3067
  configurationAxes: {
3049
3068
  power: ["Fuqia"],
3050
- model: ["Modeli"],
3051
- effort: ["P\xEBrpjekje", "Arsyetim"],
3069
+ model: ["Modeli", "Zgjidh modelin"],
3070
+ effort: ["P\xEBrpjekje", "Arsyetim", "Fuqia"],
3052
3071
  speed: ["Shpejt\xEBsi"],
3053
3072
  advanced: ["T\xEB avancuara"]
3054
3073
  },
@@ -3096,7 +3115,8 @@ var sq = {
3096
3115
  var sl = {
3097
3116
  configurationAxes: {
3098
3117
  power: ["Mo\u010D"],
3099
- effort: ["Napor"],
3118
+ model: ["Izberite model"],
3119
+ effort: ["Napor", "Mo\u010D"],
3100
3120
  speed: ["Hitrost"],
3101
3121
  advanced: ["Napredno"]
3102
3122
  },
@@ -3145,8 +3165,8 @@ var sl = {
3145
3165
  var sr = {
3146
3166
  configurationAxes: {
3147
3167
  power: ["\u0421\u043D\u0430\u0433\u0430"],
3148
- model: ["\u041C\u043E\u0434\u0435\u043B"],
3149
- effort: ["\u041D\u0438\u0432\u043E", "\u041D\u0430\u043F\u043E\u0440"],
3168
+ model: ["\u041C\u043E\u0434\u0435\u043B", "\u0418\u0437\u0430\u0431\u0435\u0440\u0438 \u043C\u043E\u0434\u0435\u043B"],
3169
+ effort: ["\u041D\u0438\u0432\u043E", "\u041D\u0430\u043F\u043E\u0440", "\u0421\u043D\u0430\u0433\u0430"],
3150
3170
  speed: ["\u0411\u0440\u0437\u0438\u043D\u0430"],
3151
3171
  advanced: ["\u041D\u0430\u043F\u0440\u0435\u0434\u043D\u043E"]
3152
3172
  },
@@ -3194,8 +3214,8 @@ var sr = {
3194
3214
  var mn = {
3195
3215
  configurationAxes: {
3196
3216
  power: ["\u0427\u0430\u0434\u0430\u043B"],
3197
- model: ["\u0417\u0430\u0433\u0432\u0430\u0440"],
3198
- effort: ["\u0425\u04AF\u0447\u0438\u043D \u0447\u0430\u0440\u043C\u0430\u0439\u043B\u0442", "\u0422\u043E\u043E\u0446\u043E\u043E\u043B\u043E\u043B"],
3217
+ model: ["\u0417\u0430\u0433\u0432\u0430\u0440", "\u0417\u0430\u0433\u0432\u0430\u0440 \u0441\u043E\u043D\u0433\u043E\u0445"],
3218
+ effort: ["\u0425\u04AF\u0447\u0438\u043D \u0447\u0430\u0440\u043C\u0430\u0439\u043B\u0442", "\u0422\u043E\u043E\u0446\u043E\u043E\u043B\u043E\u043B", "\u0427\u0430\u0434\u0430\u043B"],
3199
3219
  speed: ["\u0425\u0443\u0440\u0434"],
3200
3220
  advanced: ["\u0414\u044D\u0432\u0448\u0438\u043B\u0442\u044D\u0442"]
3201
3221
  },
@@ -3246,8 +3266,8 @@ var mn = {
3246
3266
  var my = {
3247
3267
  configurationAxes: {
3248
3268
  power: ["\u1005\u103D\u1019\u103A\u1038\u1021\u102C\u1038"],
3249
- model: ["\u1019\u1031\u102C\u103A\u1012\u101A\u103A"],
3250
- effort: ["\u1021\u102C\u1038\u1011\u102F\u1010\u103A\u1019\u103E\u102F"],
3269
+ model: ["\u1019\u1031\u102C\u103A\u1012\u101A\u103A", "\u1019\u1031\u102C\u103A\u1012\u101A\u103A \u101B\u103D\u1031\u1038\u1001\u103B\u101A\u103A\u101B\u1014\u103A"],
3270
+ effort: ["\u1021\u102C\u1038\u1011\u102F\u1010\u103A\u1019\u103E\u102F", "\u1005\u103D\u1019\u103A\u1038\u1021\u102C\u1038"],
3251
3271
  speed: ["\u1021\u1019\u103C\u1014\u103A\u1014\u103E\u102F\u1014\u103A\u1038"],
3252
3272
  advanced: ["\u1021\u1006\u1004\u1037\u103A\u1019\u103C\u1004\u1037\u103A"]
3253
3273
  },
@@ -3296,8 +3316,8 @@ var my = {
3296
3316
  var ta = {
3297
3317
  configurationAxes: {
3298
3318
  power: ["\u0BA4\u0BBF\u0BB1\u0BA9\u0BCD"],
3299
- model: ["\u0BAE\u0BBE\u0BA4\u0BBF\u0BB0\u0BBF", "\u0BAE\u0BBE\u0B9F\u0BB2\u0BCD"],
3300
- effort: ["\u0BAE\u0BC1\u0BAF\u0BB1\u0BCD\u0B9A\u0BBF", "\u0B9A\u0BBF\u0BA8\u0BCD\u0BA4\u0BA9\u0BC8 \u0B85\u0BB3\u0BB5\u0BC1"],
3319
+ model: ["\u0BAE\u0BBE\u0BA4\u0BBF\u0BB0\u0BBF", "\u0BAE\u0BBE\u0B9F\u0BB2\u0BCD", "\u0BAE\u0BBE\u0B9F\u0BB2\u0BC8\u0BA4\u0BCD \u0BA4\u0BC7\u0BB0\u0BCD\u0BB5\u0BC1\u0B9A\u0BC6\u0BAF\u0BCD"],
3320
+ effort: ["\u0BAE\u0BC1\u0BAF\u0BB1\u0BCD\u0B9A\u0BBF", "\u0B9A\u0BBF\u0BA8\u0BCD\u0BA4\u0BA9\u0BC8 \u0B85\u0BB3\u0BB5\u0BC1", "\u0BA4\u0BBF\u0BB1\u0BA9\u0BCD"],
3301
3321
  speed: ["\u0BB5\u0BC7\u0B95\u0BAE\u0BCD"],
3302
3322
  advanced: ["\u0BAE\u0BC7\u0BAE\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F"]
3303
3323
  },
@@ -3305,8 +3325,8 @@ var ta = {
3305
3325
  instant: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF"],
3306
3326
  light: ["\u0B95\u0BC1\u0BB1\u0BC8\u0BB5\u0BC1"],
3307
3327
  medium: ["\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9"],
3308
- high: ["\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
3309
- extraHigh: ["\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
3328
+ high: ["\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
3329
+ extraHigh: ["\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
3310
3330
  max: ["\u0B85\u0BA4\u0BBF\u0B95\u0BAA\u0B9F\u0BCD\u0B9A\u0BAE\u0BCD"],
3311
3331
  ultra: ["\u0B85\u0BB2\u0BCD\u0B9F\u0BCD\u0BB0\u0BBE"],
3312
3332
  standard: ["\u0BB5\u0BB4\u0B95\u0BCD\u0B95\u0BAE\u0BBE\u0BA9"],
@@ -3321,11 +3341,11 @@ var ta = {
3321
3341
  addFilesOpenerCandidates: ["\u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BC8\u0BAF\u0BC1\u0BAE\u0BCD \u0BAE\u0BC7\u0BB2\u0BC1\u0BAE\u0BCD \u0BAA\u0BB2\u0BB5\u0BB1\u0BCD\u0BB1\u0BC8\u0BAF\u0BC1\u0BAE\u0BCD \u0B9A\u0BC7\u0BB0\u0BCD"],
3322
3342
  addPhotosFilesMenuItem: ["\u0BAA\u0B9F\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BAE\u0BB1\u0BCD\u0BB1\u0BC1\u0BAE\u0BCD \u0B83\u0BAA\u0BC8\u0BB2\u0BCD\u0B95\u0BB3\u0BC8\u0BAA\u0BCD \u0BAA\u0BA4\u0BBF\u0BB5\u0BC7\u0BB1\u0BCD\u0BB1\u0BC1"],
3323
3343
  copyResponse: ["\u0BAA\u0BA4\u0BBF\u0BB2\u0BC8 \u0BA8\u0B95\u0BB2\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BB2\u0BBE\u0BAE\u0BCD"],
3324
- modeLabels: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF", "\u0BA8\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BB0", "\u0B89\u0BAF\u0BB0\u0BCD", "\u0BAE\u0BBF\u0B95 \u0B89\u0BAF\u0BB0\u0BCD\u0BB5\u0BC1", "\u0BAA\u0BCD\u0BB0\u0BCB", "\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
3344
+ modeLabels: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF", "\u0BA8\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BB0", "\u0B89\u0BAF\u0BB0\u0BCD", "\u0BAE\u0BBF\u0B95 \u0B89\u0BAF\u0BB0\u0BCD\u0BB5\u0BC1", "\u0BAA\u0BCD\u0BB0\u0BCB", "\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
3325
3345
  modeOptions: {
3326
3346
  instant: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF"],
3327
3347
  medium: ["\u0BA8\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BB0", "\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9"],
3328
- high: ["\u0B89\u0BAF\u0BB0\u0BCD", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
3348
+ high: ["\u0B89\u0BAF\u0BB0\u0BCD", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
3329
3349
  extraHigh: ["\u0BAE\u0BBF\u0B95 \u0B89\u0BAF\u0BB0\u0BCD\u0BB5\u0BC1", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
3330
3350
  pro: ["\u0BAA\u0BCD\u0BB0\u0BCB"]
3331
3351
  },
@@ -3468,6 +3488,7 @@ function flattenNestedLabel(localeList, group, id2) {
3468
3488
  var nonToolKeys = [
3469
3489
  "composerTextbox",
3470
3490
  "workComposerTextbox",
3491
+ "projectComposerPrefixes",
3471
3492
  "newWork",
3472
3493
  "sendButton",
3473
3494
  "searchChatsButton",
@@ -3528,6 +3549,15 @@ function escapeRegExp(value) {
3528
3549
  function anyLabelPattern(candidates) {
3529
3550
  return new RegExp(candidates.map(escapeRegExp).join("|"), "i");
3530
3551
  }
3552
+ function labelOrPrefixPattern(candidates, prefixes) {
3553
+ const sources = candidates.map(escapeRegExp);
3554
+ for (const prefix of prefixes) {
3555
+ if (prefix.length > 0) {
3556
+ sources.push(`^${escapeRegExp(prefix)}\\s+\\S`);
3557
+ }
3558
+ }
3559
+ return new RegExp(sources.join("|"), "i");
3560
+ }
3531
3561
 
3532
3562
  // src/commands/timeouts.ts
3533
3563
  async function withTimeout(promise, timeoutMs, message) {
@@ -6409,6 +6439,13 @@ function normalizePage(pageOrTab) {
6409
6439
  const value = providerValue(primary, property) ?? providerValue(maybe, property);
6410
6440
  if (isProviderRecord(value)) normalized[property] = value;
6411
6441
  }
6442
+ const rawAx = providerValue(maybe, "ax");
6443
+ if (normalized.keyboard === void 0 && isProviderRecord(rawAx)) {
6444
+ const pressKey = providerCallable(rawAx, "pressKey");
6445
+ if (pressKey !== void 0) normalized.keyboard = { press: async (key) => {
6446
+ await pressKey(null, key);
6447
+ } };
6448
+ }
6412
6449
  if (isProviderRecord(embedded)) normalized.playwright = embedded;
6413
6450
  for (const method of [
6414
6451
  "url",
@@ -6615,10 +6652,19 @@ function extractRoleMessageHtml(html) {
6615
6652
  const root = parseHtmlFragment(html);
6616
6653
  const messages = [];
6617
6654
  walkElementsWithAncestors(root, [], (element, ancestors) => {
6618
- const role = element.attrs["data-message-author-role"];
6655
+ const current = element.attrs["data-message-author-role"] === void 0 && element.attrs["data-chatgpt-search-message-ids"] !== void 0;
6656
+ if (current && !ancestors.some((ancestor) => ancestor.tag === "main")) return;
6657
+ const role = element.attrs["data-message-author-role"] ?? (current ? element.attrs["data-chatgpt-search-unit-key"]?.split(":").at(-1) : void 0);
6619
6658
  if (role === "user" || role === "assistant") {
6620
6659
  const metadataElement = [...ancestors].reverse().find((ancestor) => ancestor.attrs["data-testid"]?.startsWith("conversation-turn")) ?? element;
6621
- messages.push({ role, html: serializeChildren(element), metadataHtml: serializeNode(metadataElement) });
6660
+ let content = element;
6661
+ if (current) {
6662
+ walkElements(element, (child) => {
6663
+ if (role === "user" && child.attrs["data-user-message-bubble"] === "true" || role === "assistant" && child.attrs["data-markdown-text-style"] === "assistant-message" && child.children.length > 0) content = child;
6664
+ });
6665
+ }
6666
+ const messageHtml = serializeChildren(content).replace(/<h4\b[^>]*data-conversation-role=["']assistant["'][^>]*>[\s\S]*?<\/h4>/i, "");
6667
+ messages.push({ role, html: messageHtml, metadataHtml: serializeNode(metadataElement) });
6622
6668
  }
6623
6669
  });
6624
6670
  return messages;
@@ -7153,15 +7199,19 @@ function extractMessagesFromHtml(html, args = {}) {
7153
7199
  async function readMessages(page, args = {}) {
7154
7200
  if (typeof page.evaluate === "function") {
7155
7201
  const messages = await page.evaluate(() => {
7156
- const nodes = Array.from(document.querySelectorAll("[data-message-author-role]"));
7202
+ const legacy = Array.from(document.querySelectorAll("[data-message-author-role]"));
7203
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
7204
+ "main [data-chatgpt-search-unit-key][data-chatgpt-search-message-ids]"
7205
+ ));
7157
7206
  return nodes.map((node) => {
7158
- const role = node.getAttribute("data-message-author-role");
7207
+ const role = node.getAttribute("data-message-author-role") ?? node.getAttribute("data-chatgpt-search-unit-key")?.split(":").at(-1);
7159
7208
  if (role !== "user" && role !== "assistant") {
7160
7209
  return void 0;
7161
7210
  }
7211
+ const content = role === "user" ? node.querySelector?.('[data-user-message-bubble="true"]') : node.querySelector?.('[data-markdown-text-style="assistant-message"]');
7162
7212
  return {
7163
7213
  role,
7164
- html: node.innerHTML,
7214
+ html: content?.innerHTML || node.innerHTML.replace(/<h4\b[^>]*data-conversation-role=["']assistant["'][^>]*>[\s\S]*?<\/h4>/i, ""),
7165
7215
  metadataHtml: node.closest("[data-testid^='conversation-turn']")?.outerHTML ?? node.outerHTML
7166
7216
  };
7167
7217
  }).filter(Boolean);
@@ -7177,12 +7227,16 @@ async function readMessages(page, args = {}) {
7177
7227
  async function readLatestMessage(page, role = "assistant", format = "markdown", maxChars) {
7178
7228
  if (typeof page.evaluate === "function") {
7179
7229
  const message = await page.evaluate((wantedRole) => {
7180
- const nodes = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
7230
+ const legacy = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
7231
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
7232
+ `main [data-chatgpt-search-unit-key$=":${wantedRole}"][data-chatgpt-search-message-ids]`
7233
+ ));
7181
7234
  const node = nodes.at(-1);
7182
7235
  if (node === void 0) return void 0;
7236
+ const content = wantedRole === "user" ? node.querySelector?.('[data-user-message-bubble="true"]') : node.querySelector?.('[data-markdown-text-style="assistant-message"]');
7183
7237
  return {
7184
7238
  role: wantedRole,
7185
- html: node.innerHTML,
7239
+ html: content?.innerHTML || node.innerHTML.replace(/<h4\b[^>]*data-conversation-role=["']assistant["'][^>]*>[\s\S]*?<\/h4>/i, ""),
7186
7240
  metadataHtml: node.closest("[data-testid^='conversation-turn']")?.outerHTML ?? node.outerHTML
7187
7241
  };
7188
7242
  }, role).catch(() => void 0);
@@ -7201,9 +7255,15 @@ async function readLatestMessage(page, role = "assistant", format = "markdown",
7201
7255
  async function readLatestMessageText(page, role = "assistant") {
7202
7256
  if (typeof page.evaluate === "function") {
7203
7257
  return page.evaluate((wantedRole) => {
7204
- const nodes = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
7258
+ const legacy = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
7259
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
7260
+ `main [data-chatgpt-search-unit-key$=":${wantedRole}"][data-chatgpt-search-message-ids]`
7261
+ ));
7205
7262
  const node = nodes.at(-1);
7206
- return node?.innerText ?? node?.textContent ?? void 0;
7263
+ if (node?.getAttribute("data-chatgpt-search-unit-key") === null) return node?.innerText ?? node?.textContent ?? void 0;
7264
+ if (node === void 0) return void 0;
7265
+ const content = wantedRole === "user" ? node.querySelector?.('[data-user-message-bubble="true"]') : node.querySelector?.('[data-markdown-text-style="assistant-message"]');
7266
+ return content?.innerText || content?.textContent || (node.innerText ?? node.textContent ?? "").replace(node.querySelector?.('[data-conversation-role="assistant"]')?.textContent ?? "", "").trim();
7207
7267
  }, role).catch(() => void 0);
7208
7268
  }
7209
7269
  return readLatestMessage(page, role, "normalized_text").then((message) => message?.text).catch(() => void 0);
@@ -7211,10 +7271,14 @@ async function readLatestMessageText(page, role = "assistant") {
7211
7271
  async function readLatestMessageTextSnapshot(page, role) {
7212
7272
  if (typeof page.evaluate === "function") {
7213
7273
  return page.evaluate((wantedRole) => {
7214
- const allNodes = Array.from(document.querySelectorAll("[data-message-author-role]"));
7215
- const roleNodes = allNodes.filter((node) => node.getAttribute("data-message-author-role") === wantedRole);
7274
+ const legacy = Array.from(document.querySelectorAll("[data-message-author-role]"));
7275
+ const allNodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
7276
+ "main [data-chatgpt-search-unit-key][data-chatgpt-search-message-ids]"
7277
+ )).filter((node) => /:(?:user|assistant)$/.test(node.getAttribute("data-chatgpt-search-unit-key") ?? ""));
7278
+ const roleNodes = allNodes.filter((node) => (node.getAttribute("data-message-author-role") ?? node.getAttribute("data-chatgpt-search-unit-key")?.split(":").at(-1)) === wantedRole);
7216
7279
  const latest = roleNodes.at(-1);
7217
- const latestText2 = latest?.innerText ?? latest?.textContent ?? void 0;
7280
+ const content = wantedRole === "user" ? latest?.querySelector?.('[data-user-message-bubble="true"]') : latest?.querySelector?.('[data-markdown-text-style="assistant-message"]');
7281
+ const latestText2 = content?.innerText || content?.textContent || (latest === void 0 ? void 0 : (latest.innerText ?? latest.textContent ?? "").replace(latest.querySelector?.('[data-conversation-role="assistant"]')?.textContent ?? "", "").trim());
7218
7282
  const snapshot2 = { turnCount: allNodes.length };
7219
7283
  if (latestText2 !== void 0) snapshot2.latestText = latestText2;
7220
7284
  return snapshot2;
@@ -7238,7 +7302,10 @@ async function countPageMessages(page, role) {
7238
7302
  if (typeof page.evaluate === "function") {
7239
7303
  return page.evaluate((wantedRole) => {
7240
7304
  const selector = wantedRole === void 0 ? "[data-message-author-role]" : `[data-message-author-role="${wantedRole}"]`;
7241
- return document.querySelectorAll(selector).length;
7305
+ const legacyCount = document.querySelectorAll(selector).length;
7306
+ if (legacyCount > 0) return legacyCount;
7307
+ const currentSelector = wantedRole === void 0 ? 'main [data-chatgpt-search-unit-key$=":user"][data-chatgpt-search-message-ids], main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]' : `main [data-chatgpt-search-unit-key$=":${wantedRole}"][data-chatgpt-search-message-ids]`;
7308
+ return document.querySelectorAll(currentSelector).length;
7242
7309
  }, role);
7243
7310
  }
7244
7311
  return countMessages(await readMessages(page), role);
@@ -7622,13 +7689,16 @@ function detectExperienceFromSnapshot(snapshot) {
7622
7689
  if (workConfigurationOpener) {
7623
7690
  evidence.push({ source: "control", label: "Work configuration opener" });
7624
7691
  }
7692
+ if (snapshot.workPopoverOpen === true) {
7693
+ evidence.push({ source: "control", label: "Work configuration popover" });
7694
+ }
7625
7695
  if (/\/work(?:\/|$|\?)/.test(url)) {
7626
7696
  evidence.push({ source: "url", label: snapshot.url });
7627
7697
  }
7628
7698
  if (containsAny(mainText, ["work on something else", "work on anything"])) {
7629
7699
  evidence.push({ source: "heading", label: "Work composer copy" });
7630
7700
  }
7631
- const workScore = workComposer.length * 4 + (workSurfaceSelected ? 10 : 0) + (workAxes ? 6 : 0) + (workConfigurationOpener ? 6 : 0) + (/\/work(?:\/|$|\?)/.test(url) ? 3 : 0) + (containsAny(mainText, ["work on something else", "work on anything"]) ? 2 : 0);
7701
+ const workScore = workComposer.length * 4 + (workSurfaceSelected ? 10 : 0) + (workAxes ? 6 : 0) + (workConfigurationOpener ? 6 : 0) + (snapshot.workPopoverOpen === true ? 10 : 0) + (/\/work(?:\/|$|\?)/.test(url) ? 3 : 0) + (containsAny(mainText, ["work on something else", "work on anything"]) ? 2 : 0);
7632
7702
  const chatScore = chatComposer.length * 4 + (chatSurfaceSelected ? 10 : 0);
7633
7703
  let experience = "unknown";
7634
7704
  let confidence = "low";
@@ -7671,8 +7741,13 @@ async function readSurfaceSnapshot(page) {
7671
7741
  };
7672
7742
  const normalize2 = (value) => value.replace(/\s+/g, " ").trim();
7673
7743
  const normalizeComparable = (value) => normalize2(value).toLocaleLowerCase();
7674
- const wantedSurfaceLabels = new Set(surfaceOptionLabels.map(normalizeComparable));
7675
- const composerRoots = Array.from(document.querySelectorAll(
7744
+ const chatSurfaceLabels = new Set(surfaceOptionLabels.chat.map(normalizeComparable));
7745
+ const workSurfaceLabels = new Set(surfaceOptionLabels.work.map(normalizeComparable));
7746
+ const wantedSurfaceLabels = /* @__PURE__ */ new Set([...chatSurfaceLabels, ...workSurfaceLabels]);
7747
+ const currentComposerRoots = Array.from(document.querySelectorAll(
7748
+ 'main form[data-thread-find-composer="true"]'
7749
+ )).filter(visible);
7750
+ const composerRoots = currentComposerRoots.length > 0 ? currentComposerRoots : Array.from(document.querySelectorAll(
7676
7751
  "main form, main [data-testid*='composer' i], main [class*='composer' i]"
7677
7752
  )).filter(visible);
7678
7753
  const main2 = document.querySelector("main");
@@ -7719,14 +7794,33 @@ async function readSurfaceSnapshot(page) {
7719
7794
  "h1, h2, h3, form, [data-testid*='composer' i], [class*='composer' i]"
7720
7795
  )).filter(visible).slice(0, 32);
7721
7796
  const mainText = normalize2(surfaceTextNodes.map(labelFor).join(" ")).slice(0, 2e3);
7722
- const selectedSurfaceLabels = Array.from(new Set(Array.from(document.querySelectorAll(
7797
+ const selectedRadioLabels = Array.from(document.querySelectorAll(
7723
7798
  "[role='radio'][aria-checked='true'], [role='radio'][data-state='checked'], input[type='radio']:checked"
7724
- )).filter(visible).map(labelFor).map(normalize2).filter((label) => wantedSurfaceLabels.has(normalizeComparable(label))))).slice(0, 4);
7725
- return { composerLabels, mainControls, composerControls, controlGroups, mainText, selectedSurfaceLabels };
7726
- }, [
7727
- ...localeLabels.experienceOptions.chat,
7728
- ...localeLabels.experienceOptions.work
7729
- ]).catch(() => ({ composerLabels: [], mainControls: [], mainText: "", selectedSurfaceLabels: [] }));
7799
+ )).filter(visible).map(labelFor).map(normalize2).filter((label) => wantedSurfaceLabels.has(normalizeComparable(label)));
7800
+ const pressedGroups = Array.from(document.querySelectorAll("main [role='group']")).filter(visible).filter((group) => {
7801
+ let ancestor = group;
7802
+ for (let depth = 0; ancestor !== null && depth < 64; depth += 1) {
7803
+ if (ancestor.hasAttribute("data-message-author-role") || ancestor.tagName === "ARTICLE" || ["dialog", "menu", "listbox"].includes(ancestor.getAttribute("role") ?? "")) return false;
7804
+ ancestor = ancestor.parentElement;
7805
+ }
7806
+ return ancestor === null;
7807
+ }).map((group) => Array.from(group.querySelectorAll("button[aria-pressed]")).filter((button) => button.parentElement === group && visible(button) && button.getAttribute("disabled") === null && button.getAttribute("aria-disabled") !== "true")).filter((buttons) => buttons.length === 2 && new Set(buttons.map((button) => normalizeComparable(labelFor(button)))).size === 2 && buttons.every((button) => wantedSurfaceLabels.has(normalizeComparable(labelFor(button))) && ["true", "false"].includes(button.getAttribute("aria-pressed") ?? "")) && buttons.filter((button) => chatSurfaceLabels.has(normalizeComparable(labelFor(button)))).length === 1 && buttons.filter((button) => workSurfaceLabels.has(normalizeComparable(labelFor(button)))).length === 1 && buttons.filter((button) => button.getAttribute("aria-pressed") === "true").length === 1);
7808
+ const selectedButtonLabels = pressedGroups.length === 1 ? pressedGroups[0].filter((button) => button.getAttribute("aria-pressed") === "true").map(labelFor).map(normalize2) : [];
7809
+ const selectedSurfaceLabels = Array.from(/* @__PURE__ */ new Set([...selectedRadioLabels, ...selectedButtonLabels])).slice(0, 4);
7810
+ const workPopoverOpen = Array.from(document.querySelectorAll(
7811
+ '[data-testid="composer-intelligence-picker-content"]'
7812
+ )).filter(visible).some((root) => {
7813
+ const speed = Array.from(root.querySelectorAll(
7814
+ '[role="menuitemcheckbox"][data-fast-mode-enabled]'
7815
+ )).filter(visible);
7816
+ const sliders = Array.from(root.querySelectorAll('[role="slider"]'));
7817
+ return speed.length === 1 && sliders.length === 1;
7818
+ });
7819
+ return { composerLabels, mainControls, composerControls, controlGroups, mainText, selectedSurfaceLabels, workPopoverOpen };
7820
+ }, {
7821
+ chat: localeLabels.experienceOptions.chat,
7822
+ work: localeLabels.experienceOptions.work
7823
+ }).catch(() => ({ composerLabels: [], mainControls: [], mainText: "", selectedSurfaceLabels: [] }));
7730
7824
  return { url, ...snapshot };
7731
7825
  }
7732
7826
  function profileFromSnapshot(snapshot, experience) {
@@ -8368,7 +8462,7 @@ async function readChatPopover(page) {
8368
8462
  return current2 === null;
8369
8463
  };
8370
8464
  const normalize2 = (value) => value.replace(/\s+/g, " ").trim();
8371
- const roots = document.querySelectorAll('[data-testid="composer-intelligence-picker-content"]');
8465
+ const roots = Array.from(document.querySelectorAll('[data-testid="composer-intelligence-picker-content"]')).concat(Array.from(document.querySelectorAll("[data-model-picker-view]")));
8372
8466
  if (roots.length > 8) return { acted: false };
8373
8467
  const activeRoots = Array.from(roots).filter((node) => visible(node));
8374
8468
  if (activeRoots.length !== 1) return { acted: false };
@@ -8384,7 +8478,12 @@ async function readChatPopover(page) {
8384
8478
  ancestor = ancestor.parentNode;
8385
8479
  }
8386
8480
  if (menu?.getAttribute("data-state") !== "open" || !visible(menu)) return { acted: false };
8387
- const nodes = [];
8481
+ const currentProfile = root.hasAttribute("data-model-picker-view");
8482
+ if (currentProfile) {
8483
+ const triggers = Array.from(document.querySelectorAll('button[data-codex-intelligence-trigger="true"]')).filter((trigger) => trigger.getAttribute("id") === menu.getAttribute("aria-labelledby") && trigger.getAttribute("aria-haspopup") === "menu" && trigger.getAttribute("aria-expanded") === "true");
8484
+ if (triggers.length !== 1) return { acted: false };
8485
+ }
8486
+ const nodes = [root];
8388
8487
  const text = /* @__PURE__ */ new Map();
8389
8488
  let current = root.firstChild;
8390
8489
  let count = 0;
@@ -8418,25 +8517,28 @@ async function readChatPopover(page) {
8418
8517
  }
8419
8518
  return false;
8420
8519
  };
8421
- const owners = nodes.filter((node) => node.getAttribute("data-has-slider") === "true" && node.getAttribute("data-has-advanced-view") === "true" && node.getAttribute("data-model-selection-view") === "true" && visible(node));
8520
+ const owners = currentProfile ? [root] : nodes.filter((node) => node.getAttribute("data-has-slider") === "true" && node.getAttribute("data-has-advanced-view") === "true" && node.getAttribute("data-model-selection-view") === "true" && visible(node));
8422
8521
  if (owners.length !== 1) return { acted: false };
8423
8522
  const owner = owners[0];
8424
- const view = owner.getAttribute("data-view");
8523
+ const view = owner.getAttribute(currentProfile ? "data-model-picker-view" : "data-view");
8425
8524
  if (view !== "simple" && view !== "advanced") return { acted: false };
8426
- const panels = nodes.filter((node) => node.getAttribute("data-testid") === `composer-model-picker-slider-${view}-view` && within(node, owner) && node.getAttribute("data-active") === "true" && visible(node));
8525
+ const panels = nodes.filter((node) => (currentProfile ? node.parentNode === owner : node.getAttribute("data-testid") === `composer-model-picker-slider-${view}-view` && within(node, owner)) && node.getAttribute("data-active") === "true" && visible(node));
8427
8526
  if (panels.length !== 1) return { acted: false };
8428
8527
  const panel = panels[0];
8429
- const toggles = nodes.filter((node) => node.getAttribute("role") === "menuitem" && node.getAttribute("data-interactive") === "true" && node.getAttribute("aria-expanded") === String(view === "advanced") && within(node, owner) && visible(node));
8528
+ const toggles = nodes.filter((node) => node.getAttribute("role") === "menuitem" && node.getAttribute("data-interactive") === "true" && (currentProfile ? node.getAttribute("data-model-picker-view-toggle") === "true" : node.getAttribute("aria-expanded") === String(view === "advanced")) && within(node, owner) && visible(node));
8430
8529
  if (toggles.length > 1 || view === "simple" && toggles.length !== 1) return { acted: false };
8431
8530
  const modelNodes = view === "advanced" ? nodes.filter((node) => within(node, panel) && node.getAttribute("role") === "menuitemradio" && visible(node)) : [];
8432
8531
  if (modelNodes.length > 32) return { acted: false };
8433
8532
  const modelLabel = (node) => {
8434
- const primary = nodes.filter((child) => within(child, node) && (child.getAttribute("class") ?? "").split(/\s+/).includes("truncate"));
8533
+ const primary = nodes.filter((child) => {
8534
+ const classes = (child.getAttribute("class") ?? "").split(/\s+/);
8535
+ return within(child, node) && classes.includes("truncate") && !classes.includes("text-xs");
8536
+ });
8435
8537
  return normalize2(primary.length === 1 ? text.get(primary[0]) ?? "" : text.get(node) ?? "");
8436
8538
  };
8437
8539
  const snapshot = {
8438
8540
  view,
8439
- rootIndex: Array.from(roots).indexOf(root),
8541
+ rootIndex: currentProfile ? Array.from(document.querySelectorAll("[data-model-picker-view]")).indexOf(root) : Array.from(document.querySelectorAll('[data-testid="composer-intelligence-picker-content"]')).indexOf(root),
8440
8542
  toggleIndex: nodes.filter((node) => node.getAttribute("role") === "menuitem" && node.getAttribute("data-interactive") === "true").indexOf(toggles[0]),
8441
8543
  modelOptions: modelNodes.map((node) => ({
8442
8544
  label: modelLabel(node),
@@ -8444,6 +8546,7 @@ async function readChatPopover(page) {
8444
8546
  index: nodes.filter((row) => within(row, panel) && row.getAttribute("role") === "menuitemradio").indexOf(node)
8445
8547
  })).filter((option) => option.label.length > 0)
8446
8548
  };
8549
+ if (currentProfile) snapshot.profile = "model_picker_v2";
8447
8550
  const triggerId = menu.getAttribute("aria-labelledby");
8448
8551
  if (triggerId !== null && triggerId.length > 0 && triggerId.length < 240 && !/\s/.test(triggerId)) snapshot.triggerId = triggerId;
8449
8552
  const checked = snapshot.modelOptions.filter((option) => option.checked);
@@ -8462,7 +8565,7 @@ async function readChatPopover(page) {
8462
8565
  if (sliders.length === 1) {
8463
8566
  const slider = sliders[0];
8464
8567
  const powers = nodes.filter((node) => within(slider, node) && within(node, panel) && node.getAttribute("role") === "menuitem" && visible(node) && config.powerLabels.some((label) => normalize2(node.getAttribute("aria-label") ?? "").toLocaleLowerCase() === label.toLocaleLowerCase()));
8465
- const sliderOwners = nodes.filter((node) => within(slider, node) && within(node, panel) && node.hasAttribute("data-model-reasoning-effort-slider"));
8568
+ const sliderOwners = nodes.filter((node) => within(slider, node) && within(node, panel) && node.hasAttribute(currentProfile ? "data-model-picker-power-slider" : "data-model-reasoning-effort-slider"));
8466
8569
  const integer = (name) => {
8467
8570
  const raw = slider.getAttribute(name);
8468
8571
  return raw !== null && /^-?\d+$/.test(raw) && Number.isSafeInteger(Number(raw)) ? Number(raw) : void 0;
@@ -8491,11 +8594,46 @@ async function readChatPopover(page) {
8491
8594
  return observation !== void 0 && observation !== null && typeof observation.acted === "boolean" ? observation : { acted: false };
8492
8595
  }
8493
8596
  function observedRoot(page, snapshot) {
8494
- const roots = page.locator?.('[data-testid="composer-intelligence-picker-content"]');
8597
+ const roots = page.locator?.(snapshot.profile === "model_picker_v2" ? "[data-model-picker-view]" : '[data-testid="composer-intelligence-picker-content"]');
8495
8598
  return roots?.nth?.(snapshot.rootIndex) ?? (snapshot.rootIndex === 0 ? roots : void 0);
8496
8599
  }
8600
+ async function openChatPopover(page) {
8601
+ if ((await readChatPopover(page)).snapshot !== void 0) return true;
8602
+ let trigger = page.locator?.('button[data-codex-intelligence-trigger="true"][aria-haspopup="menu"]');
8603
+ let count = await trigger?.count?.().catch(() => 0) ?? 0;
8604
+ if (count === 0) return void 0;
8605
+ if (count > 1 && count <= 8 && typeof trigger?.filter === "function") {
8606
+ trigger = trigger.filter({ visible: true });
8607
+ count = await trigger.count?.().catch(() => 0) ?? 0;
8608
+ }
8609
+ if (count !== 1) return false;
8610
+ if (trigger?.click === void 0 || trigger.evaluate === void 0) return void 0;
8611
+ const actionable = await trigger.evaluate((element) => {
8612
+ if (element.tagName !== "BUTTON" || element.getAttribute("data-codex-intelligence-trigger") !== "true" || element.getAttribute("aria-haspopup") !== "menu") return void 0;
8613
+ let current = element;
8614
+ for (let depth = 0; current !== null && depth < 64; depth += 1) {
8615
+ if (current.nodeType !== 1) break;
8616
+ const node = current;
8617
+ if (node.hidden || node.hasAttribute("hidden") || node.hasAttribute("inert") || node.disabled || node.getAttribute("aria-hidden") === "true" || node.getAttribute("aria-disabled") === "true") return false;
8618
+ const style = window.getComputedStyle(node);
8619
+ if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || current === element && style.pointerEvents === "none") return false;
8620
+ current = current.parentNode;
8621
+ }
8622
+ if (current?.nodeType === 1) return false;
8623
+ const rect = element.getBoundingClientRect();
8624
+ return rect.width > 0 && rect.height > 0 && element.getAttribute("aria-expanded") === "false";
8625
+ }).catch(() => void 0);
8626
+ if (actionable === void 0) return void 0;
8627
+ if (!actionable) return false;
8628
+ await trigger.click();
8629
+ for (let attempt = 0; attempt < 5; attempt += 1) {
8630
+ await waitForPopoverTransition(page, 100);
8631
+ if ((await readChatPopover(page)).snapshot !== void 0) return true;
8632
+ }
8633
+ return false;
8634
+ }
8497
8635
  async function clickObservedControl(page, snapshot, modelIndex) {
8498
- const selector = modelIndex === void 0 ? '[role="menuitem"][data-interactive="true"]' : '[data-testid="composer-model-picker-slider-advanced-view"][data-active="true"] [role="menuitemradio"]';
8636
+ const selector = modelIndex === void 0 ? '[role="menuitem"][data-interactive="true"]' : snapshot.profile === "model_picker_v2" ? ':scope > [data-active="true"] [role="menuitemradio"]' : '[data-testid="composer-model-picker-slider-advanced-view"][data-active="true"] [role="menuitemradio"]';
8499
8637
  const candidates = observedRoot(page, snapshot)?.locator?.(selector);
8500
8638
  const index = modelIndex ?? snapshot.toggleIndex;
8501
8639
  const target = candidates?.nth?.(index) ?? (index === 0 ? candidates : void 0);
@@ -8509,7 +8647,7 @@ async function clickObservedControl(page, snapshot, modelIndex) {
8509
8647
  if (node.hidden || node.hasAttribute("hidden") || node.hasAttribute("inert") || node.getAttribute("aria-hidden") === "true" || node.getAttribute("aria-disabled") === "true" || node.getAttribute("data-active") === "false") return void 0;
8510
8648
  const style = window.getComputedStyle(node);
8511
8649
  if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || style.pointerEvents === "none") return void 0;
8512
- if (node.getAttribute("data-testid") === "composer-intelligence-picker-content") owned = true;
8650
+ if (node.getAttribute("data-testid") === "composer-intelligence-picker-content" || node.getAttribute("data-model-picker-view") === "simple" || node.getAttribute("data-model-picker-view") === "advanced") owned = true;
8513
8651
  current = current.parentNode;
8514
8652
  }
8515
8653
  const rect = element.getBoundingClientRect();
@@ -8525,7 +8663,8 @@ async function clickObservedControl(page, snapshot, modelIndex) {
8525
8663
  if (label.length > 512) return void 0;
8526
8664
  let parent = child.parentNode;
8527
8665
  for (let depth = 0; parent !== null && parent !== element && depth < 64; depth += 1) {
8528
- if (parent.nodeType === 1 && (parent.getAttribute("class") ?? "").split(/\s+/).includes("truncate")) {
8666
+ const classes = parent.nodeType === 1 ? (parent.getAttribute("class") ?? "").split(/\s+/) : [];
8667
+ if (classes.includes("truncate") && !classes.includes("text-xs")) {
8529
8668
  primary.set(parent, (primary.get(parent) ?? "") + (child.nodeValue ?? ""));
8530
8669
  }
8531
8670
  parent = parent.parentNode;
@@ -8539,9 +8678,9 @@ async function clickObservedControl(page, snapshot, modelIndex) {
8539
8678
  if (child === element || child === null) break;
8540
8679
  child = child.nextSibling;
8541
8680
  }
8542
- return { role: element.getAttribute("role"), expanded: element.getAttribute("aria-expanded"), label: (primary.size === 1 ? [...primary.values()][0] : label).replace(/\s+/g, " ").trim() };
8681
+ return { role: element.getAttribute("role"), expanded: element.getAttribute("aria-expanded"), viewToggle: element.getAttribute("data-model-picker-view-toggle"), label: (primary.size === 1 ? [...primary.values()][0] : label).replace(/\s+/g, " ").trim() };
8543
8682
  }).catch(() => void 0);
8544
- if (state === void 0 || state.role !== (modelIndex === void 0 ? "menuitem" : "menuitemradio") || modelIndex === void 0 && state.expanded !== String(snapshot.view === "advanced")) return false;
8683
+ if (state === void 0 || state.role !== (modelIndex === void 0 ? "menuitem" : "menuitemradio") || modelIndex === void 0 && (snapshot.profile === "model_picker_v2" ? state.viewToggle !== "true" : state.expanded !== String(snapshot.view === "advanced"))) return false;
8545
8684
  const expectedModel = snapshot.modelOptions.find((option) => option.index === modelIndex);
8546
8685
  if (modelIndex !== void 0 && (expectedModel === void 0 || state.label !== expectedModel.label)) return false;
8547
8686
  await target.click();
@@ -8552,9 +8691,9 @@ async function closeChatPopover(page, before) {
8552
8691
  if (snapshot === void 0) return false;
8553
8692
  const escapedId = snapshot.triggerId?.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
8554
8693
  const menu = escapedId === void 0 ? void 0 : page.locator?.(`[role="menu"][aria-labelledby="${escapedId}"]`);
8555
- if (menu?.press !== void 0 && await menu.count?.() === 1) await menu.press("Escape");
8556
- else if (page.keyboard?.press !== void 0) await page.keyboard.press("Escape");
8694
+ if (page.keyboard?.press !== void 0) await page.keyboard.press("Escape");
8557
8695
  else if (page.cua?.keypress !== void 0) await page.cua.keypress({ keys: ["ESC"] });
8696
+ else if (menu?.press !== void 0 && await menu.count?.() === 1) await menu.press("Escape");
8558
8697
  else return false;
8559
8698
  for (let attempt = 0; attempt < 5; attempt += 1) {
8560
8699
  await waitForPopoverTransition(page, 100);
@@ -8569,6 +8708,7 @@ async function waitForPopoverTransition(page, milliseconds) {
8569
8708
  async function reopenChatPopover(page, before) {
8570
8709
  if (before.triggerId === void 0) return void 0;
8571
8710
  if (!await closeChatPopover(page, before)) return void 0;
8711
+ if (before.profile === "model_picker_v2") await waitForPopoverTransition(page, 250);
8572
8712
  const trigger = page.locator?.(`[id="${before.triggerId.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"]`);
8573
8713
  if (trigger?.click === void 0 || trigger.evaluate === void 0 || await trigger.count?.() !== 1) return void 0;
8574
8714
  const isVisible = () => trigger.evaluate((element) => {
@@ -8665,7 +8805,7 @@ async function selectChatPopoverEffort(page, labels) {
8665
8805
  return void 0;
8666
8806
  }
8667
8807
  if (before.slider.current === target) return before;
8668
- const candidates = observedRoot(page, before)?.locator?.('[data-testid="composer-model-picker-slider-simple-view"][data-active="true"] [role="slider"]');
8808
+ const candidates = observedRoot(page, before)?.locator?.(before.profile === "model_picker_v2" ? ':scope > [data-active="true"] [role="slider"]' : '[data-testid="composer-model-picker-slider-simple-view"][data-active="true"] [role="slider"]');
8669
8809
  const locator = candidates?.nth?.(before.slider.index) ?? (before.slider.index === 0 ? candidates : void 0);
8670
8810
  if (locator?.press === void 0 || locator.evaluate === void 0 || await locator.count?.() !== 1) return void 0;
8671
8811
  const locatorState = await locator.evaluate((element) => {
@@ -8679,6 +8819,12 @@ async function selectChatPopoverEffort(page, labels) {
8679
8819
  if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || style.pointerEvents === "none") return void 0;
8680
8820
  if (node.getAttribute("data-testid") === "composer-model-picker-slider-simple-view" && node.getAttribute("data-active") === "true") panel = true;
8681
8821
  if (node.getAttribute("data-testid") === "composer-intelligence-picker-content") owned = true;
8822
+ if (node.getAttribute("data-model-picker-view") === "simple") {
8823
+ owned = true;
8824
+ let track = element;
8825
+ while (track !== null && track.parentNode !== node) track = track.parentNode;
8826
+ if (track?.nodeType === 1 && track.getAttribute("data-active") === "true") panel = true;
8827
+ }
8682
8828
  current = current.parentNode;
8683
8829
  }
8684
8830
  const rect = element.getBoundingClientRect();
@@ -8725,7 +8871,10 @@ async function selectChatPopoverSpeed(page, labels) {
8725
8871
  const initial = (await readChatPopover(page)).snapshot;
8726
8872
  if (initial === void 0) return void 0;
8727
8873
  try {
8728
- const simple = await setChatPopoverView(page, "simple");
8874
+ const opened = await setChatPopoverView(page, "simple");
8875
+ if (opened?.speed === void 0 || opened.speedIndex === void 0) return void 0;
8876
+ await waitForPopoverTransition(page, 200);
8877
+ const simple = (await readChatPopover(page)).snapshot;
8729
8878
  if (simple?.speed === void 0 || simple.speedIndex === void 0) return void 0;
8730
8879
  const desired = ["Standard", "Fast"].filter((value) => labels.some((label) => normalizeForLabelMatch(label) === normalizeForLabelMatch(value)));
8731
8880
  if (desired.length !== 1) return void 0;
@@ -8733,7 +8882,7 @@ async function selectChatPopoverSpeed(page, labels) {
8733
8882
  const candidates = observedRoot(page, simple)?.locator?.('[role="menuitemcheckbox"][data-fast-mode-enabled]');
8734
8883
  const locator = candidates?.nth?.(simple.speedIndex) ?? (simple.speedIndex === 0 ? candidates : void 0);
8735
8884
  if (locator?.click === void 0 || locator.evaluate === void 0 || await locator.count?.() !== 1) return void 0;
8736
- const state = await locator.evaluate((element) => {
8885
+ const readActionableState = () => locator.evaluate((element) => {
8737
8886
  let current = element;
8738
8887
  let owned = false, simple2 = false, open6 = false;
8739
8888
  for (let depth = 0; current !== null && depth < 64; depth += 1) {
@@ -8742,7 +8891,10 @@ async function selectChatPopoverSpeed(page, labels) {
8742
8891
  if (node.hidden || node.hasAttribute("hidden") || node.hasAttribute("inert") || node.getAttribute("aria-hidden") === "true" || node.getAttribute("aria-disabled") === "true" || node.getAttribute("data-active") === "false" || node.getAttribute("data-locked") === "true") return void 0;
8743
8892
  const style = window.getComputedStyle(node);
8744
8893
  if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || style.pointerEvents === "none") return void 0;
8745
- if (node.getAttribute("role") === "menu" && node.getAttribute("data-state") === "open") open6 = true;
8894
+ if (node.getAttribute("role") === "menu" && node.getAttribute("data-state") === "open") {
8895
+ open6 = true;
8896
+ if (style.opacity !== "1") return void 0;
8897
+ }
8746
8898
  if (node.getAttribute("data-testid") === "composer-intelligence-picker-content") owned = true;
8747
8899
  if (node.getAttribute("data-view") === "simple" && node.getAttribute("data-model-selection-view") === "true") simple2 = true;
8748
8900
  current = current.parentNode;
@@ -8750,13 +8902,22 @@ async function selectChatPopoverSpeed(page, labels) {
8750
8902
  const rect = element.getBoundingClientRect();
8751
8903
  if (current?.nodeType === 1 || !owned || !simple2 || !open6 || rect.width <= 0 || rect.height <= 0 || element.getAttribute("role") !== "menuitemcheckbox" || element.getAttribute("data-visible") !== "true") return void 0;
8752
8904
  const checked = element.getAttribute("aria-checked");
8753
- return element.getAttribute("data-fast-mode-enabled") === checked ? checked : void 0;
8905
+ return element.getAttribute("data-fast-mode-enabled") === checked ? checked ?? void 0 : void 0;
8754
8906
  }).catch(() => void 0);
8907
+ let state;
8908
+ for (let attempt = 0; attempt < 8; attempt += 1) {
8909
+ state = await readActionableState();
8910
+ if (state === String(simple.speed === "Fast")) break;
8911
+ if (attempt + 1 < 8) await waitForPopoverTransition(page, 100);
8912
+ }
8755
8913
  if (state !== String(simple.speed === "Fast")) return void 0;
8756
8914
  await locator.click();
8757
- await waitForPopoverTransition(page, 150);
8758
- const after = (await readChatPopover(page)).snapshot;
8759
- return after !== void 0 && after.speed === desired[0] ? after.speed : void 0;
8915
+ for (let attempt = 0; attempt < 6; attempt += 1) {
8916
+ await waitForPopoverTransition(page, attempt === 0 ? 150 : 100);
8917
+ const after = (await readChatPopover(page)).snapshot;
8918
+ if (after?.speed === desired[0]) return desired[0];
8919
+ }
8920
+ return void 0;
8760
8921
  } finally {
8761
8922
  await setChatPopoverView(page, initial.view);
8762
8923
  }
@@ -9004,7 +9165,8 @@ async function getMode(env, args = {}) {
9004
9165
  }
9005
9166
  const page = env.page;
9006
9167
  try {
9007
- const modes = await visibleModeButtonLabelList(page);
9168
+ const popover = (await readChatPopover(page)).snapshot;
9169
+ const modes = popover?.effort === void 0 ? await visibleModeButtonLabelList(page) : [popover.effort];
9008
9170
  const warnings = modes.length === 0 ? ["No mode-labelled composer control is currently visible, so the active ChatGPT mode could not be read."] : [];
9009
9171
  return resultOk({ modes }, await contextFromPage(page), warnings);
9010
9172
  } catch (error) {
@@ -9091,6 +9253,8 @@ async function clickFirstUniqueButton(page, labels) {
9091
9253
  return false;
9092
9254
  }
9093
9255
  async function clickModeOpener(page, modeButtons) {
9256
+ const currentPicker = await openChatPopover(page);
9257
+ if (currentPicker !== void 0) return currentPicker;
9094
9258
  if (await clickFirstUniqueButton(page, modeButtons)) {
9095
9259
  return true;
9096
9260
  }
@@ -9556,14 +9720,30 @@ async function inspectConfiguration(env, args = {}) {
9556
9720
  }
9557
9721
  const page = env.page;
9558
9722
  try {
9559
- const detected = await detectExperience(
9723
+ let detected = await detectExperience(
9560
9724
  env,
9561
9725
  args.timeoutMs === void 0 ? {} : { timeoutMs: args.timeoutMs }
9562
9726
  );
9563
9727
  if (!detected.ok || detected.data === void 0) {
9564
9728
  return forwardFailure(detected);
9565
9729
  }
9566
- if (args.experience !== void 0 && detected.data.experience !== args.experience) {
9730
+ let detectedData = detected.data;
9731
+ if (args.experience !== void 0 && detectedData.experience !== args.experience) {
9732
+ const retryMs = Math.min(
9733
+ args.timeoutMs ?? CONFIGURATION_CONTROL_DISCOVERY_TIMEOUT_MS,
9734
+ CONFIGURATION_CONTROL_DISCOVERY_TIMEOUT_MS
9735
+ );
9736
+ const attempts = Math.max(1, Math.ceil(Math.max(0, retryMs) / CONFIGURATION_CONTROL_POLL_MS));
9737
+ for (let attempt = 1; attempt < attempts; attempt += 1) {
9738
+ await page.waitForTimeout?.(CONFIGURATION_CONTROL_POLL_MS);
9739
+ const retried = await detectExperience(env, { timeoutMs: 0 });
9740
+ if (!retried.ok || retried.data === void 0) return forwardFailure(retried);
9741
+ detected = retried;
9742
+ detectedData = retried.data;
9743
+ if (detectedData.experience === args.experience) break;
9744
+ }
9745
+ }
9746
+ if (args.experience !== void 0 && detectedData.experience !== args.experience) {
9567
9747
  return {
9568
9748
  ok: false,
9569
9749
  status: "unsupported",
@@ -9572,16 +9752,16 @@ async function inspectConfiguration(env, args = {}) {
9572
9752
  kind: "selector_drift",
9573
9753
  code: "experience_mismatch",
9574
9754
  fieldPath: "experience",
9575
- message: `Configuration inspection expected ${args.experience}, but the visible composer is ${detected.data.experience}. Call experience.open first or omit the expected experience.`,
9755
+ message: `Configuration inspection expected ${args.experience}, but the visible composer is ${detectedData.experience}. Call experience.open first or omit the expected experience.`,
9576
9756
  resumable: true
9577
9757
  },
9578
9758
  context: await contextFromPage(page, {
9579
- experience: detected.data.experience,
9580
- selectorProfile: detected.data.selectorProfile
9759
+ experience: detectedData.experience,
9760
+ selectorProfile: detectedData.selectorProfile
9581
9761
  })
9582
9762
  };
9583
9763
  }
9584
- const experience = detected.data.experience;
9764
+ const experience = detectedData.experience;
9585
9765
  const initialChatPopover = experience !== "unknown" ? (await readChatPopover(page)).snapshot : void 0;
9586
9766
  const initialPanel = await readConfigurationPanel(page);
9587
9767
  const rootOpened = experience !== "unknown" && await waitForConfigurationRoot(
@@ -9589,13 +9769,11 @@ async function inspectConfiguration(env, args = {}) {
9589
9769
  experience,
9590
9770
  args.timeoutMs
9591
9771
  );
9592
- if (rootOpened) {
9593
- await page.waitForTimeout?.(150);
9594
- }
9595
- if (experience !== "unknown" && (await readChatPopover(page)).snapshot !== void 0) {
9772
+ const openedPopover = rootOpened ? await waitForObservedChatPopover(page) : void 0;
9773
+ if (experience !== "unknown" && openedPopover !== void 0) {
9596
9774
  try {
9597
9775
  const chat = await inspectChatPopover(page);
9598
- const data2 = configurationInspectionFromPopover(experience, detected.data.evidence, chat);
9776
+ const data2 = configurationInspectionFromPopover(experience, detectedData.evidence, chat);
9599
9777
  if (args.includeOptions === false) data2.options = {};
9600
9778
  return resultOk(
9601
9779
  data2,
@@ -9617,8 +9795,8 @@ async function inspectConfiguration(env, args = {}) {
9617
9795
  const rootItems = rootOpened ? await enumerateVisibleMenuItems(page) : [];
9618
9796
  const data = configurationInspectionFromSurface(
9619
9797
  experience,
9620
- detected.data.selectorProfile,
9621
- detected.data.evidence,
9798
+ detectedData.selectorProfile,
9799
+ detectedData.evidence,
9622
9800
  panel,
9623
9801
  rootItems
9624
9802
  );
@@ -9742,7 +9920,11 @@ async function applyConfiguration(env, args) {
9742
9920
  }
9743
9921
  const selected = [];
9744
9922
  for (const [axis, requested] of selectionEntries(desired)) {
9745
- const currentResult = selected.length === 0 ? beforeResult : await inspectConfiguration(env, { includeOptions: false });
9923
+ const currentResult = selected.length === 0 ? beforeResult : await inspectConfiguration(env, {
9924
+ experience: before.experience,
9925
+ includeOptions: false,
9926
+ ...args.timeoutMs === void 0 ? {} : { timeoutMs: args.timeoutMs }
9927
+ });
9746
9928
  if (!currentResult.ok || currentResult.data === void 0) return forwardFailure(currentResult);
9747
9929
  const current = currentResult.data;
9748
9930
  if (current.experience !== before.experience) return configurationFailure(page, before, desired, selected, "The composer experience changed during configuration selection.", "experience_mismatch");
@@ -9823,7 +10005,7 @@ function configurationInspectionFromSurface(experience, detectedProfile, evidenc
9823
10005
  const modelRows = menuItems.filter((item) => item.role === "menuitemradio" && item.hasPopup !== true && (/^(?:gpt[\s-]|o\d+(?:\b|$)|\d+(?:\.\d+)?$)/i.test(item.label) || localeLabels.modeOptions.latest.some((label) => visibleLabelMatches(item.label, label))));
9824
10006
  const chatOptions = menuItems.filter((item) => !isConfigurationAxisRow(item.label) && !modelRows.includes(item) && item.hasPopup !== true && !/^gpt[\s-]/i.test(item.label) && item.ariaLabel !== "Select model").map(menuItemToOption);
9825
10007
  const selectedEffort = chatOptions.filter((option) => option.selected === true);
9826
- const openerValue = panel.openerValue ?? panel.openerLabel;
10008
+ const openerValue = chatOpenerEffortValue(panel.openerValue ?? panel.openerLabel);
9827
10009
  if (chatOptions.length > 0 || openerValue !== void 0) availableAxes.push(axis);
9828
10010
  if (selectedEffort.length === 1) active[axis] = selectedEffort[0].label;
9829
10011
  else if (openerValue !== void 0 && !isConfigurationAxisRow(openerValue) && !/^(?:thinking effort|select model|power)$/i.test(openerValue)) active[axis] = openerValue;
@@ -9846,6 +10028,24 @@ function configurationInspectionFromSurface(experience, detectedProfile, evidenc
9846
10028
  evidence
9847
10029
  };
9848
10030
  }
10031
+ function chatOpenerEffortValue(value) {
10032
+ if (value === void 0) return void 0;
10033
+ const combined = /^(?:gpt[-\s]*)?[\p{N}]+(?:[.,][\p{N}]+)?\s+(.+)$/u.exec(value.trim());
10034
+ if (combined === null) return value;
10035
+ const effort = combined[1]?.trim();
10036
+ if (effort === void 0 || effort.length === 0) return void 0;
10037
+ const labels = [
10038
+ ...localeLabels.configurationOptions.instant,
10039
+ ...localeLabels.configurationOptions.light,
10040
+ ...localeLabels.configurationOptions.medium,
10041
+ ...localeLabels.configurationOptions.high,
10042
+ ...localeLabels.configurationOptions.extraHigh,
10043
+ ...localeLabels.configurationOptions.max,
10044
+ ...localeLabels.configurationOptions.ultra,
10045
+ ...localeLabels.configurationOptions.pro
10046
+ ];
10047
+ return labels.some((label) => normalizeForLabelMatch(label) === normalizeForLabelMatch(effort)) ? effort : void 0;
10048
+ }
9849
10049
  async function inspectWorkAxisOptions(env, axis) {
9850
10050
  const page = env.page;
9851
10051
  const options = (await openWorkAxisOptions(env, axis)).map(menuItemToOption);
@@ -9859,12 +10059,24 @@ async function selectWorkAxis(env, axis, requested, timeoutMs) {
9859
10059
  }
9860
10060
  const initialPopover = (await readChatPopover(page)).snapshot;
9861
10061
  await openConfigurationRoot(page, "work");
9862
- if ((await readChatPopover(page)).snapshot !== void 0) {
10062
+ if (await waitForObservedChatPopover(page) !== void 0) {
9863
10063
  try {
9864
10064
  const labels = configurationSemanticLabels(requested);
9865
10065
  if (axis === "model") return await selectChatPopoverModel(page, labels);
9866
10066
  if (axis === "effort") return await selectChatPopoverEffort(page, labels);
9867
- if (axis === "speed") return await selectChatPopoverSpeed(page, labels);
10067
+ if (axis === "speed") {
10068
+ for (let attempt = 0; attempt < 3; attempt += 1) {
10069
+ const selected = await selectChatPopoverSpeed(page, labels);
10070
+ if (selected !== void 0) return selected;
10071
+ if (attempt + 1 < 3) {
10072
+ await closeConfigurationMenus(page);
10073
+ await page.waitForTimeout?.(CONFIGURATION_SELECTION_RETRY_MS);
10074
+ await openConfigurationRoot(page, "work");
10075
+ if (await waitForObservedChatPopover(page) === void 0) return void 0;
10076
+ }
10077
+ }
10078
+ return void 0;
10079
+ }
9868
10080
  return void 0;
9869
10081
  } finally {
9870
10082
  if (initialPopover === void 0) await closeConfigurationMenus(page);
@@ -9997,7 +10209,7 @@ async function selectChatAxis(env, axis, requested, timeoutMs) {
9997
10209
  const page = env.page;
9998
10210
  const initialPopover = (await readChatPopover(page)).snapshot;
9999
10211
  await openConfigurationRoot(page, "chat");
10000
- if ((await readChatPopover(page)).snapshot !== void 0) {
10212
+ if (await waitForObservedChatPopover(page) !== void 0) {
10001
10213
  try {
10002
10214
  if (axis === "modelVersion") return await selectChatPopoverModel(page, configurationSemanticLabels(requested));
10003
10215
  if (axis === "effort" || axis === "intelligence" || axis === "model") return await selectChatPopoverEffort(page, configurationSemanticLabels(requested));
@@ -10018,6 +10230,10 @@ async function selectChatAxis(env, axis, requested, timeoutMs) {
10018
10230
  }
10019
10231
  async function openConfigurationRoot(page, experience) {
10020
10232
  if (experience !== "unknown" && (await readChatPopover(page)).snapshot !== void 0) return true;
10233
+ if (experience !== "unknown") {
10234
+ const currentPicker = await openChatPopover(page);
10235
+ if (currentPicker !== void 0) return currentPicker;
10236
+ }
10021
10237
  const existing = await readConfigurationPanel(page);
10022
10238
  if (existing.axisRows.length > 0) {
10023
10239
  return true;
@@ -10092,6 +10308,14 @@ async function openConfigurationRoot(page, experience) {
10092
10308
  }
10093
10309
  return false;
10094
10310
  }
10311
+ async function waitForObservedChatPopover(page) {
10312
+ for (let attempt = 0; attempt < 6; attempt += 1) {
10313
+ const snapshot = (await readChatPopover(page)).snapshot;
10314
+ if (snapshot !== void 0) return snapshot;
10315
+ if (attempt + 1 < 6) await page.waitForTimeout?.(100);
10316
+ }
10317
+ return void 0;
10318
+ }
10095
10319
  function configurationMenuLooksRecognized(items, experience, openerLabel) {
10096
10320
  if (items.some((item) => /(?:model|mode|effort|speed)-(?:switcher|selector)|model-switcher/i.test(item.testId ?? ""))) {
10097
10321
  return true;
@@ -10367,6 +10591,7 @@ function normalizeConfigurationId(value) {
10367
10591
  async function closeConfigurationMenus(page) {
10368
10592
  if ((await readChatPopover(page)).snapshot !== void 0) {
10369
10593
  await closeChatPopover(page);
10594
+ await page.waitForTimeout?.(350);
10370
10595
  return;
10371
10596
  }
10372
10597
  if (!await pressConfigurationEscape(page)) return;
@@ -11335,8 +11560,9 @@ var generatedArtifactDownloadClauses = [
11335
11560
  ];
11336
11561
  var cssSelectors = {
11337
11562
  assistantMessages: "[data-message-author-role='assistant']",
11338
- userMessages: "[data-message-author-role='user']",
11339
- roleMessages: "[data-message-author-role]",
11563
+ currentAssistantMessages: "main [data-chatgpt-search-unit-key$=':assistant'][data-chatgpt-search-message-ids]",
11564
+ userMessages: "[data-message-author-role='user'], main [data-chatgpt-search-unit-key$=':user'][data-chatgpt-search-message-ids]",
11565
+ roleMessages: "[data-message-author-role], main [data-chatgpt-search-unit-key$=':user'][data-chatgpt-search-message-ids], main [data-chatgpt-search-unit-key$=':assistant'][data-chatgpt-search-message-ids]",
11340
11566
  conversationTurns: "[data-testid^='conversation-turn']",
11341
11567
  hiddenFileInputs: "input[type='file']",
11342
11568
  downloadControls: downloadControlClauses.join(", "),
@@ -11347,10 +11573,10 @@ function composerTextbox(page) {
11347
11573
  return requiredLocator(page, "[contenteditable='true'], textarea");
11348
11574
  }
11349
11575
  return page.getByRole("textbox", {
11350
- name: anyLabelPattern([
11351
- ...localeLabels.composerTextbox,
11352
- ...localeLabels.workComposerTextbox
11353
- ])
11576
+ name: labelOrPrefixPattern(
11577
+ [...localeLabels.composerTextbox, ...localeLabels.workComposerTextbox],
11578
+ localeLabels.projectComposerPrefixes
11579
+ )
11354
11580
  });
11355
11581
  }
11356
11582
  function sendButton(page) {
@@ -12230,8 +12456,11 @@ async function readAssistantGenerationState(page, options = {}) {
12230
12456
  const visibleStopButtons = Array.from(document.querySelectorAll("button")).filter((button) => isVisible(button) && button.disabled !== true && button.getAttribute("aria-disabled") !== "true" && isScopedStopControl(button) && matchingLabels2(button, args.send).length === 0 && matchingLabels2(button, args.stop).length > 0);
12231
12457
  const activeSignals = [...new Set(visibleStopButtons.flatMap((button) => matchingLabels2(button, args.stop)))];
12232
12458
  const turns = Array.from(document.querySelectorAll("[data-testid^='conversation-turn']"));
12233
- const latestAssistant = Array.from(document.querySelectorAll("[data-message-author-role='assistant']")).at(-1);
12234
- const latestTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? turns.at(-1);
12459
+ const legacyAssistants = Array.from(document.querySelectorAll("[data-message-author-role='assistant']"));
12460
+ const latestAssistant = (legacyAssistants.length > 0 ? legacyAssistants : Array.from(document.querySelectorAll(
12461
+ 'main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'
12462
+ ))).at(-1);
12463
+ const latestTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? turns.at(-1) ?? (latestAssistant?.hasAttribute?.("data-chatgpt-search-unit-key") === true ? latestAssistant : void 0);
12235
12464
  const stoppedSignals = latestTurn === void 0 ? [] : [...new Set(Array.from(latestTurn.querySelectorAll(
12236
12465
  "button, [role='status'], [aria-label], [title], p, span, div"
12237
12466
  )).filter((element) => isVisible(element)).flatMap((element) => matchingLabels2(element, args.stopped)))];
@@ -12269,7 +12498,17 @@ async function latestAssistantTurnHasResponseActions(page) {
12269
12498
  if (typeof page.evaluate === "function") {
12270
12499
  const scoped = await page.evaluate((phrases) => {
12271
12500
  const turns = Array.from(document.querySelectorAll("[data-testid^='conversation-turn']"));
12272
- if (turns.length === 0) return void 0;
12501
+ if (turns.length === 0) {
12502
+ const latest = Array.from(document.querySelectorAll('main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]')).at(-1);
12503
+ if (latest === void 0) return void 0;
12504
+ let owner = latest;
12505
+ for (let depth = 0; owner !== null && depth < 6 && owner.tagName !== "MAIN"; depth += 1, owner = owner.parentElement) {
12506
+ const assistants = Array.from(owner.querySelectorAll('[data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'));
12507
+ if (owner !== latest && (assistants.length !== 1 || assistants[0] !== latest)) break;
12508
+ if (Array.from(owner.querySelectorAll("button")).some((button) => phrases.some((phrase) => [button.innerText, button.textContent, button.getAttribute("aria-label"), button.getAttribute("title")].some((value) => (value ?? "").trim().toLowerCase() === phrase.trim().toLowerCase())))) return true;
12509
+ }
12510
+ return false;
12511
+ }
12273
12512
  const latestTurn = turns.reverse().find(
12274
12513
  (turn) => turn.querySelector("[data-message-author-role='assistant']") !== null
12275
12514
  );
@@ -12439,11 +12678,15 @@ async function readWaitDomSnapshot(page) {
12439
12678
  void __combinedWaitSnapshot;
12440
12679
  const normalizeWs = (value) => value.replace(/\s+/g, " ").trim();
12441
12680
  const normalizeLower = (value) => (value ?? "").trim().toLowerCase();
12442
- const nodes = Array.from(document.querySelectorAll("[data-message-author-role]"));
12443
- const assistantNodes = nodes.filter((node) => node.getAttribute("data-message-author-role") === "assistant");
12681
+ const legacy = Array.from(document.querySelectorAll("[data-message-author-role]"));
12682
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
12683
+ "main [data-chatgpt-search-unit-key][data-chatgpt-search-message-ids]"
12684
+ )).filter((node) => /:(?:user|assistant)$/.test(node.getAttribute("data-chatgpt-search-unit-key") ?? ""));
12685
+ const assistantNodes = nodes.filter((node) => (node.getAttribute("data-message-author-role") ?? node.getAttribute("data-chatgpt-search-unit-key")?.split(":").at(-1)) === "assistant");
12444
12686
  const latestAssistant = assistantNodes.at(-1);
12445
12687
  const latestAssistantTurnIndex = latestAssistant === void 0 ? void 0 : nodes.indexOf(latestAssistant) + 1;
12446
- const normalizedText = normalizeWs(latestAssistant?.innerText ?? latestAssistant?.textContent ?? "");
12688
+ const content = latestAssistant?.querySelector?.('[data-markdown-text-style="assistant-message"]');
12689
+ const normalizedText = normalizeWs(content?.innerText || content?.textContent || (latestAssistant?.innerText ?? latestAssistant?.textContent ?? "").replace(latestAssistant?.querySelector?.('[data-conversation-role="assistant"]')?.textContent ?? "", ""));
12447
12690
  let hash = 2166136261;
12448
12691
  for (let index = 0; index < normalizedText.length; index += 1) {
12449
12692
  hash ^= normalizedText.charCodeAt(index);
@@ -12481,7 +12724,7 @@ async function readWaitDomSnapshot(page) {
12481
12724
  };
12482
12725
  const visibleStopButtons = Array.from(document.querySelectorAll("button")).filter((button) => isVisible(button) && button.disabled !== true && button.getAttribute("aria-disabled") !== "true" && isScopedStopControl(button) && matchingLabels2(button, args.send).length === 0 && matchingLabels2(button, args.stop).length > 0);
12483
12726
  const activeSignals = [...new Set(visibleStopButtons.flatMap((button) => matchingLabels2(button, args.stop)))];
12484
- const latestAssistantTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? Array.from(document.querySelectorAll("[data-testid^='conversation-turn']")).at(-1);
12727
+ const latestAssistantTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? Array.from(document.querySelectorAll("[data-testid^='conversation-turn']")).at(-1) ?? (latestAssistant?.hasAttribute?.("data-chatgpt-search-unit-key") === true ? latestAssistant : void 0);
12485
12728
  const stoppedSignals = latestAssistantTurn === void 0 ? [] : [...new Set(Array.from(latestAssistantTurn.querySelectorAll(
12486
12729
  "button, [role='status'], [aria-label], [title], p, span, div"
12487
12730
  )).filter((element) => isVisible(element)).flatMap((element) => matchingLabels2(element, args.stopped)))];
@@ -12494,7 +12737,18 @@ async function readWaitDomSnapshot(page) {
12494
12737
  const turns = Array.from(document.querySelectorAll("[data-testid^='conversation-turn']"));
12495
12738
  let hasResponseActions;
12496
12739
  if (turns.length === 0) {
12497
- hasResponseActions = void 0;
12740
+ if (latestAssistant?.hasAttribute?.("data-chatgpt-search-unit-key") === true) {
12741
+ hasResponseActions = false;
12742
+ let owner = latestAssistant;
12743
+ for (let depth = 0; owner !== null && depth < 6 && owner.tagName !== "MAIN"; depth += 1, owner = owner.parentElement) {
12744
+ const assistants = Array.from(owner.querySelectorAll('[data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'));
12745
+ if (owner !== latestAssistant && (assistants.length !== 1 || assistants[0] !== latestAssistant)) break;
12746
+ if (Array.from(owner.querySelectorAll("button")).some((button) => args.actions.some((phrase) => [button.getAttribute("aria-label"), button.getAttribute("title"), button.textContent].some((value) => (value ?? "").trim().toLowerCase() === phrase.trim().toLowerCase())))) {
12747
+ hasResponseActions = true;
12748
+ break;
12749
+ }
12750
+ }
12751
+ }
12498
12752
  } else {
12499
12753
  const latestTurn = [...turns].reverse().find(
12500
12754
  (turn) => turn.querySelector("[data-message-author-role='assistant']") !== null
@@ -12635,6 +12889,9 @@ var ProbeTimeoutError = class extends Error {
12635
12889
  };
12636
12890
 
12637
12891
  // src/commands/messages.ts
12892
+ var COMPOSER_SETTLE_TIMEOUT_MS = 2e3;
12893
+ var COMPOSER_SETTLE_INTERVAL_MS = 100;
12894
+ var COMPOSER_SETTLE_ATTEMPTS = 20;
12638
12895
  function isResponseComplete(snapshot) {
12639
12896
  return snapshot.latestText.trim().length > 0 && !isTransientAssistantText(snapshot.latestText) && snapshot.textStableForMs >= snapshot.stableMs && snapshot.generation.observed && !snapshot.generation.active && !snapshot.generation.stopped && snapshot.hasResponseActions;
12640
12897
  }
@@ -12649,9 +12906,9 @@ async function composeMessage(env, args) {
12649
12906
  const text = args.mode === "append" ? `${await readLocatorText(textbox)}${args.text}` : args.text;
12650
12907
  await textbox.click?.();
12651
12908
  await textbox.fill?.(text);
12652
- const actual = normalizeWhitespace(await readLocatorText(textbox));
12653
12909
  const wanted = normalizeWhitespace(text);
12654
- if (actual !== wanted && actual.length > 0) {
12910
+ const actual = await settleComposerText(page, textbox, wanted, args.timeoutMs);
12911
+ if (actual !== wanted) {
12655
12912
  return {
12656
12913
  ok: false,
12657
12914
  status: "error",
@@ -13687,13 +13944,35 @@ function waitTargetReached(args, snapshot) {
13687
13944
  }
13688
13945
  async function readLocatorText(locator) {
13689
13946
  if (typeof locator.innerText === "function") {
13690
- return locator.innerText().catch(() => "");
13947
+ const text = await locator.innerText().catch(() => "");
13948
+ if (text.length > 0) {
13949
+ return text;
13950
+ }
13951
+ }
13952
+ if (typeof locator.inputValue === "function") {
13953
+ const value = await locator.inputValue().catch(() => "");
13954
+ if (value.length > 0) {
13955
+ return value;
13956
+ }
13691
13957
  }
13692
13958
  if (typeof locator.textContent === "function") {
13693
13959
  return locator.textContent().then((text) => text ?? "").catch(() => "");
13694
13960
  }
13695
13961
  return "";
13696
13962
  }
13963
+ async function settleComposerText(page, textbox, wanted, timeoutMs) {
13964
+ const budgetMs = Math.min(timeoutMs ?? COMPOSER_SETTLE_TIMEOUT_MS, COMPOSER_SETTLE_TIMEOUT_MS);
13965
+ const deadline = Date.now() + budgetMs;
13966
+ let actual = normalizeWhitespace(await readLocatorText(textbox));
13967
+ for (let attempt = 0; attempt < COMPOSER_SETTLE_ATTEMPTS && actual !== wanted; attempt += 1) {
13968
+ if (Date.now() >= deadline) {
13969
+ break;
13970
+ }
13971
+ await sleep(page, COMPOSER_SETTLE_INTERVAL_MS);
13972
+ actual = normalizeWhitespace(await readLocatorText(textbox));
13973
+ }
13974
+ return actual;
13975
+ }
13697
13976
  async function sleep(page, ms2) {
13698
13977
  if (typeof page.waitForTimeout === "function") {
13699
13978
  await page.waitForTimeout(ms2);
@@ -15684,12 +15963,16 @@ async function tryGeneratedFilePreviewDownload(page, args) {
15684
15963
  const selected = selectGeneratedFileAffordance(candidates, args);
15685
15964
  if (selected === void 0) return void 0;
15686
15965
  try {
15687
- const assistantMessages = requiredLocator(page, cssSelectors.assistantMessages);
15688
- const assistantCount = await locatorCountWithTimeout(
15966
+ let assistantMessages = requiredLocator(page, cssSelectors.assistantMessages);
15967
+ let assistantCount = await locatorCountWithTimeout(
15689
15968
  assistantMessages,
15690
15969
  localGuardTimeout(timeoutMs, 5e3),
15691
15970
  "generated_file_assistant_count_timeout"
15692
15971
  );
15972
+ if (assistantCount === 0) {
15973
+ assistantMessages = requiredLocator(page, cssSelectors.currentAssistantMessages);
15974
+ assistantCount = await locatorCountWithTimeout(assistantMessages, localGuardTimeout(timeoutMs, 5e3), "generated_file_assistant_count_timeout");
15975
+ }
15693
15976
  if (selected.assistantIndex < 0 || selected.assistantIndex >= assistantCount) {
15694
15977
  throw new Error("The selected generated-file assistant turn is no longer present.");
15695
15978
  }
@@ -15717,11 +16000,12 @@ async function tryGeneratedFilePreviewDownload(page, args) {
15717
16000
  }
15718
16001
  await affordance.click({ timeoutMs: localGuardTimeout(timeoutMs, 1e4) });
15719
16002
  const labelledPreview = requiredLocator(page, `section[aria-label="${escapeCssAttribute(selected.filename)}"]`);
16003
+ const currentPreview = page.getByRole?.("tabpanel", { name: selected.filename, exact: true });
15720
16004
  const workbookPreviews = requiredLocator(page, "section[data-testid^='popcorn-']");
15721
16005
  const workbookPreview = typeof workbookPreviews.filter === "function" ? workbookPreviews.filter({ hasText: selected.filename }) : void 0;
15722
16006
  const download = await waitForPreviewDownloadControl(
15723
16007
  page,
15724
- workbookPreview === void 0 ? [labelledPreview] : [labelledPreview, workbookPreview],
16008
+ [...currentPreview === void 0 ? [] : [currentPreview], labelledPreview, ...workbookPreview === void 0 ? [] : [workbookPreview]],
15725
16009
  timeoutMs
15726
16010
  );
15727
16011
  if (download === void 0) {
@@ -15762,17 +16046,20 @@ async function inspectGeneratedFileAffordances(page, timeoutMs) {
15762
16046
  const prefix = downloadLabels.map((label) => label.trim()).filter(Boolean).sort((left, right) => right.length - left.length).find((label) => lowered.startsWith(`${label.toLocaleLowerCase()} `));
15763
16047
  return prefix === void 0 ? trimmed : trimmed.slice(prefix.length).trim();
15764
16048
  };
15765
- const assistants = Array.from(document.querySelectorAll("[data-message-author-role='assistant']"));
16049
+ const legacyAssistants = Array.from(document.querySelectorAll("[data-message-author-role='assistant']"));
16050
+ const assistants = legacyAssistants.length > 0 ? legacyAssistants : Array.from(document.querySelectorAll(
16051
+ 'main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'
16052
+ ));
15766
16053
  return assistants.flatMap(
15767
16054
  (assistant, assistantIndex) => Array.from(assistant.querySelectorAll("button[aria-label], a[download], a[href*='/backend-api/files/']")).filter(visible).map((element) => {
15768
16055
  const controlLabel = (element.getAttribute("aria-label") ?? element.textContent ?? "").trim();
15769
16056
  const text = (element.textContent ?? "").trim();
15770
16057
  return {
15771
16058
  assistantIndex,
15772
- filename: normalizedFilename(controlLabel),
16059
+ filename: controlLabel.startsWith("Open preview of ") ? controlLabel.slice("Open preview of ".length) : normalizedFilename(controlLabel),
15773
16060
  controlLabel,
15774
16061
  tag: element.tagName.toLocaleLowerCase(),
15775
- textFilename: normalizedFilename(text)
16062
+ textFilename: controlLabel.startsWith("Open preview of ") ? element.parentElement?.querySelector("[title]")?.getAttribute("title") ?? "" : normalizedFilename(text)
15776
16063
  };
15777
16064
  }).filter((item) => (item.tag === "button" || item.tag === "a") && fileLike(item.filename) && item.filename === item.textFilename).map(({ assistantIndex: index, filename, controlLabel, tag }) => ({
15778
16065
  assistantIndex: index,
@@ -51723,11 +52010,18 @@ var optionalScenarios = [
51723
52010
  read: true
51724
52011
  });
51725
52012
  if (!generatedFileAskCanProceed(asked)) return fail2(meta, asked);
51726
- const result3 = await downloadLatestAttachment({
51727
- destDir: context.reportDir,
51728
- filenamePattern: "^chatgpt-live-smoke\\.csv$",
51729
- timeoutMs: 12e4
51730
- }, env);
52013
+ const downloadDeadline = Date.now() + 12e4;
52014
+ let result3;
52015
+ do {
52016
+ result3 = await downloadLatestAttachment({
52017
+ destDir: context.reportDir,
52018
+ filenamePattern: "^chatgpt-live-smoke\\.csv$",
52019
+ timeoutMs: Math.max(1e3, downloadDeadline - Date.now())
52020
+ }, env);
52021
+ if (!generatedFileDownloadShouldRetry(result3) || Date.now() >= downloadDeadline) break;
52022
+ if (env.page?.waitForTimeout !== void 0) await env.page.waitForTimeout(1e3);
52023
+ else await new Promise((resolve10) => setTimeout(resolve10, 1e3));
52024
+ } while (true);
51731
52025
  const download = typeof result3.data === "object" && result3.data !== null ? result3.data : void 0;
51732
52026
  const path3 = download?.path;
51733
52027
  const bytes = path3 === void 0 ? 0 : (await stat7(path3).catch(() => void 0))?.size ?? 0;
@@ -51790,7 +52084,10 @@ var optionalScenarios = [
51790
52084
  })
51791
52085
  ];
51792
52086
  function generatedFileAskCanProceed(result3) {
51793
- return result3.ok || result3.status === "partial" && result3.data?.generationActive !== true;
52087
+ return result3.ok || result3.status === "partial" && (result3.data?.generationActive !== true || result3.data?.submissionState === "submitted");
52088
+ }
52089
+ function generatedFileDownloadShouldRetry(result3) {
52090
+ return !result3.ok && result3.blocker?.kind === "download_unavailable" && result3.blocker.code === "download_filename_not_found";
51794
52091
  }
51795
52092
  function scenario(name, required, enabled, run) {
51796
52093
  return {