pygpt-net 2.6.41__py3-none-any.whl → 2.6.42__py3-none-any.whl

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 (208) hide show
  1. pygpt_net/CHANGELOG.txt +7 -0
  2. pygpt_net/__init__.py +1 -1
  3. pygpt_net/core/render/web/body.py +9 -4
  4. pygpt_net/css.qrc +1 -1
  5. pygpt_net/css_rc.py +1477 -221
  6. pygpt_net/data/config/config.json +5 -2
  7. pygpt_net/data/config/models.json +93 -2
  8. pygpt_net/data/config/settings.json +35 -1
  9. pygpt_net/data/icons/case.svg +1 -0
  10. pygpt_net/data/icons/chat1.svg +1 -0
  11. pygpt_net/data/icons/chat2.svg +1 -0
  12. pygpt_net/data/icons/chat3.svg +1 -0
  13. pygpt_net/data/icons/chat4.svg +1 -0
  14. pygpt_net/data/icons/fit.svg +1 -0
  15. pygpt_net/data/icons/note1.svg +1 -0
  16. pygpt_net/data/icons/note2.svg +1 -0
  17. pygpt_net/data/icons/note3.svg +1 -0
  18. pygpt_net/data/icons/stt.svg +1 -0
  19. pygpt_net/data/icons/translate.svg +1 -0
  20. pygpt_net/data/icons/tts.svg +1 -0
  21. pygpt_net/data/icons/url.svg +1 -0
  22. pygpt_net/data/icons/vision.svg +1 -0
  23. pygpt_net/data/js/app.js +37 -7
  24. pygpt_net/data/locale/locale.de.ini +9 -0
  25. pygpt_net/data/locale/locale.en.ini +10 -4
  26. pygpt_net/data/locale/locale.es.ini +9 -0
  27. pygpt_net/data/locale/locale.fr.ini +9 -0
  28. pygpt_net/data/locale/locale.it.ini +9 -0
  29. pygpt_net/data/locale/locale.pl.ini +11 -1
  30. pygpt_net/data/locale/locale.uk.ini +9 -0
  31. pygpt_net/data/locale/locale.zh.ini +9 -0
  32. pygpt_net/data/locale/plugin.agent.de.ini +0 -0
  33. pygpt_net/data/locale/plugin.agent.en.ini +0 -0
  34. pygpt_net/data/locale/plugin.agent.es.ini +0 -0
  35. pygpt_net/data/locale/plugin.agent.fr.ini +0 -0
  36. pygpt_net/data/locale/plugin.agent.it.ini +0 -0
  37. pygpt_net/data/locale/plugin.agent.pl.ini +0 -0
  38. pygpt_net/data/locale/plugin.agent.uk.ini +0 -0
  39. pygpt_net/data/locale/plugin.agent.zh.ini +0 -0
  40. pygpt_net/data/locale/plugin.audio_input.de.ini +0 -0
  41. pygpt_net/data/locale/plugin.audio_input.en.ini +0 -0
  42. pygpt_net/data/locale/plugin.audio_input.es.ini +0 -0
  43. pygpt_net/data/locale/plugin.audio_input.fr.ini +0 -0
  44. pygpt_net/data/locale/plugin.audio_input.it.ini +0 -0
  45. pygpt_net/data/locale/plugin.audio_input.pl.ini +0 -0
  46. pygpt_net/data/locale/plugin.audio_input.uk.ini +0 -0
  47. pygpt_net/data/locale/plugin.audio_input.zh.ini +0 -0
  48. pygpt_net/data/locale/plugin.audio_output.de.ini +0 -0
  49. pygpt_net/data/locale/plugin.audio_output.en.ini +0 -0
  50. pygpt_net/data/locale/plugin.audio_output.es.ini +0 -0
  51. pygpt_net/data/locale/plugin.audio_output.fr.ini +0 -0
  52. pygpt_net/data/locale/plugin.audio_output.it.ini +0 -0
  53. pygpt_net/data/locale/plugin.audio_output.pl.ini +0 -0
  54. pygpt_net/data/locale/plugin.audio_output.uk.ini +0 -0
  55. pygpt_net/data/locale/plugin.audio_output.zh.ini +0 -0
  56. pygpt_net/data/locale/plugin.cmd_api.de.ini +0 -0
  57. pygpt_net/data/locale/plugin.cmd_api.en.ini +0 -0
  58. pygpt_net/data/locale/plugin.cmd_api.es.ini +0 -0
  59. pygpt_net/data/locale/plugin.cmd_api.fr.ini +0 -0
  60. pygpt_net/data/locale/plugin.cmd_api.it.ini +0 -0
  61. pygpt_net/data/locale/plugin.cmd_api.pl.ini +0 -0
  62. pygpt_net/data/locale/plugin.cmd_api.uk.ini +0 -0
  63. pygpt_net/data/locale/plugin.cmd_api.zh.ini +0 -0
  64. pygpt_net/data/locale/plugin.cmd_code_interpreter.de.ini +0 -0
  65. pygpt_net/data/locale/plugin.cmd_code_interpreter.en.ini +0 -0
  66. pygpt_net/data/locale/plugin.cmd_code_interpreter.es.ini +0 -0
  67. pygpt_net/data/locale/plugin.cmd_code_interpreter.fr.ini +0 -0
  68. pygpt_net/data/locale/plugin.cmd_code_interpreter.it.ini +0 -0
  69. pygpt_net/data/locale/plugin.cmd_code_interpreter.pl.ini +0 -0
  70. pygpt_net/data/locale/plugin.cmd_code_interpreter.uk.ini +0 -0
  71. pygpt_net/data/locale/plugin.cmd_code_interpreter.zh.ini +0 -0
  72. pygpt_net/data/locale/plugin.cmd_custom.de.ini +0 -0
  73. pygpt_net/data/locale/plugin.cmd_custom.en.ini +0 -0
  74. pygpt_net/data/locale/plugin.cmd_custom.es.ini +0 -0
  75. pygpt_net/data/locale/plugin.cmd_custom.fr.ini +0 -0
  76. pygpt_net/data/locale/plugin.cmd_custom.it.ini +0 -0
  77. pygpt_net/data/locale/plugin.cmd_custom.pl.ini +0 -0
  78. pygpt_net/data/locale/plugin.cmd_custom.uk.ini +0 -0
  79. pygpt_net/data/locale/plugin.cmd_custom.zh.ini +0 -0
  80. pygpt_net/data/locale/plugin.cmd_files.de.ini +0 -0
  81. pygpt_net/data/locale/plugin.cmd_files.en.ini +0 -0
  82. pygpt_net/data/locale/plugin.cmd_files.es.ini +0 -0
  83. pygpt_net/data/locale/plugin.cmd_files.fr.ini +0 -0
  84. pygpt_net/data/locale/plugin.cmd_files.it.ini +0 -0
  85. pygpt_net/data/locale/plugin.cmd_files.pl.ini +0 -0
  86. pygpt_net/data/locale/plugin.cmd_files.uk.ini +0 -0
  87. pygpt_net/data/locale/plugin.cmd_files.zh.ini +0 -0
  88. pygpt_net/data/locale/plugin.cmd_history.de.ini +0 -0
  89. pygpt_net/data/locale/plugin.cmd_history.en.ini +0 -0
  90. pygpt_net/data/locale/plugin.cmd_history.es.ini +0 -0
  91. pygpt_net/data/locale/plugin.cmd_history.fr.ini +0 -0
  92. pygpt_net/data/locale/plugin.cmd_history.it.ini +0 -0
  93. pygpt_net/data/locale/plugin.cmd_history.pl.ini +0 -0
  94. pygpt_net/data/locale/plugin.cmd_history.uk.ini +0 -0
  95. pygpt_net/data/locale/plugin.cmd_history.zh.ini +0 -0
  96. pygpt_net/data/locale/plugin.cmd_mouse_control.de.ini +0 -0
  97. pygpt_net/data/locale/plugin.cmd_mouse_control.en.ini +0 -0
  98. pygpt_net/data/locale/plugin.cmd_mouse_control.es.ini +0 -0
  99. pygpt_net/data/locale/plugin.cmd_mouse_control.fr.ini +0 -0
  100. pygpt_net/data/locale/plugin.cmd_mouse_control.it.ini +0 -0
  101. pygpt_net/data/locale/plugin.cmd_mouse_control.pl.ini +0 -0
  102. pygpt_net/data/locale/plugin.cmd_mouse_control.uk.ini +0 -0
  103. pygpt_net/data/locale/plugin.cmd_mouse_control.zh.ini +0 -0
  104. pygpt_net/data/locale/plugin.cmd_serial.de.ini +0 -0
  105. pygpt_net/data/locale/plugin.cmd_serial.en.ini +0 -0
  106. pygpt_net/data/locale/plugin.cmd_serial.es.ini +0 -0
  107. pygpt_net/data/locale/plugin.cmd_serial.fr.ini +0 -0
  108. pygpt_net/data/locale/plugin.cmd_serial.it.ini +0 -0
  109. pygpt_net/data/locale/plugin.cmd_serial.pl.ini +0 -0
  110. pygpt_net/data/locale/plugin.cmd_serial.uk.ini +0 -0
  111. pygpt_net/data/locale/plugin.cmd_serial.zh.ini +0 -0
  112. pygpt_net/data/locale/plugin.cmd_system.de.ini +0 -0
  113. pygpt_net/data/locale/plugin.cmd_system.en.ini +0 -0
  114. pygpt_net/data/locale/plugin.cmd_system.es.ini +0 -0
  115. pygpt_net/data/locale/plugin.cmd_system.fr.ini +0 -0
  116. pygpt_net/data/locale/plugin.cmd_system.it.ini +0 -0
  117. pygpt_net/data/locale/plugin.cmd_system.pl.ini +0 -0
  118. pygpt_net/data/locale/plugin.cmd_system.uk.ini +0 -0
  119. pygpt_net/data/locale/plugin.cmd_system.zh.ini +0 -0
  120. pygpt_net/data/locale/plugin.cmd_web.de.ini +0 -0
  121. pygpt_net/data/locale/plugin.cmd_web.en.ini +0 -0
  122. pygpt_net/data/locale/plugin.cmd_web.es.ini +0 -0
  123. pygpt_net/data/locale/plugin.cmd_web.fr.ini +0 -0
  124. pygpt_net/data/locale/plugin.cmd_web.it.ini +0 -0
  125. pygpt_net/data/locale/plugin.cmd_web.pl.ini +0 -0
  126. pygpt_net/data/locale/plugin.cmd_web.uk.ini +0 -0
  127. pygpt_net/data/locale/plugin.cmd_web.zh.ini +0 -0
  128. pygpt_net/data/locale/plugin.crontab.de.ini +0 -0
  129. pygpt_net/data/locale/plugin.crontab.en.ini +0 -0
  130. pygpt_net/data/locale/plugin.crontab.es.ini +0 -0
  131. pygpt_net/data/locale/plugin.crontab.fr.ini +0 -0
  132. pygpt_net/data/locale/plugin.crontab.it.ini +0 -0
  133. pygpt_net/data/locale/plugin.crontab.pl.ini +0 -0
  134. pygpt_net/data/locale/plugin.crontab.uk.ini +0 -0
  135. pygpt_net/data/locale/plugin.crontab.zh.ini +0 -0
  136. pygpt_net/data/locale/plugin.experts.de.ini +0 -0
  137. pygpt_net/data/locale/plugin.experts.en.ini +0 -0
  138. pygpt_net/data/locale/plugin.experts.es.ini +0 -0
  139. pygpt_net/data/locale/plugin.experts.fr.ini +0 -0
  140. pygpt_net/data/locale/plugin.experts.it.ini +0 -0
  141. pygpt_net/data/locale/plugin.experts.pl.ini +0 -0
  142. pygpt_net/data/locale/plugin.experts.uk.ini +0 -0
  143. pygpt_net/data/locale/plugin.experts.zh.ini +0 -0
  144. pygpt_net/data/locale/plugin.extra_prompt.de.ini +0 -0
  145. pygpt_net/data/locale/plugin.extra_prompt.en.ini +0 -0
  146. pygpt_net/data/locale/plugin.extra_prompt.es.ini +0 -0
  147. pygpt_net/data/locale/plugin.extra_prompt.fr.ini +0 -0
  148. pygpt_net/data/locale/plugin.extra_prompt.it.ini +0 -0
  149. pygpt_net/data/locale/plugin.extra_prompt.pl.ini +0 -0
  150. pygpt_net/data/locale/plugin.extra_prompt.uk.ini +0 -0
  151. pygpt_net/data/locale/plugin.extra_prompt.zh.ini +0 -0
  152. pygpt_net/data/locale/plugin.idx_llama_index.de.ini +0 -0
  153. pygpt_net/data/locale/plugin.idx_llama_index.en.ini +0 -0
  154. pygpt_net/data/locale/plugin.idx_llama_index.es.ini +0 -0
  155. pygpt_net/data/locale/plugin.idx_llama_index.fr.ini +0 -0
  156. pygpt_net/data/locale/plugin.idx_llama_index.it.ini +0 -0
  157. pygpt_net/data/locale/plugin.idx_llama_index.pl.ini +0 -0
  158. pygpt_net/data/locale/plugin.idx_llama_index.uk.ini +0 -0
  159. pygpt_net/data/locale/plugin.idx_llama_index.zh.ini +0 -0
  160. pygpt_net/data/locale/plugin.mailer.en.ini +0 -0
  161. pygpt_net/data/locale/plugin.openai_dalle.de.ini +0 -0
  162. pygpt_net/data/locale/plugin.openai_dalle.en.ini +0 -0
  163. pygpt_net/data/locale/plugin.openai_dalle.es.ini +0 -0
  164. pygpt_net/data/locale/plugin.openai_dalle.fr.ini +0 -0
  165. pygpt_net/data/locale/plugin.openai_dalle.it.ini +0 -0
  166. pygpt_net/data/locale/plugin.openai_dalle.pl.ini +0 -0
  167. pygpt_net/data/locale/plugin.openai_dalle.uk.ini +0 -0
  168. pygpt_net/data/locale/plugin.openai_dalle.zh.ini +0 -0
  169. pygpt_net/data/locale/plugin.openai_vision.de.ini +0 -0
  170. pygpt_net/data/locale/plugin.openai_vision.en.ini +0 -0
  171. pygpt_net/data/locale/plugin.openai_vision.es.ini +0 -0
  172. pygpt_net/data/locale/plugin.openai_vision.fr.ini +0 -0
  173. pygpt_net/data/locale/plugin.openai_vision.it.ini +0 -0
  174. pygpt_net/data/locale/plugin.openai_vision.pl.ini +0 -0
  175. pygpt_net/data/locale/plugin.openai_vision.uk.ini +0 -0
  176. pygpt_net/data/locale/plugin.openai_vision.zh.ini +0 -0
  177. pygpt_net/data/locale/plugin.real_time.de.ini +0 -0
  178. pygpt_net/data/locale/plugin.real_time.en.ini +0 -0
  179. pygpt_net/data/locale/plugin.real_time.es.ini +0 -0
  180. pygpt_net/data/locale/plugin.real_time.fr.ini +0 -0
  181. pygpt_net/data/locale/plugin.real_time.it.ini +0 -0
  182. pygpt_net/data/locale/plugin.real_time.pl.ini +0 -0
  183. pygpt_net/data/locale/plugin.real_time.uk.ini +0 -0
  184. pygpt_net/data/locale/plugin.real_time.zh.ini +0 -0
  185. pygpt_net/data/locale/plugin.voice_control.de.ini +0 -0
  186. pygpt_net/data/locale/plugin.voice_control.en.ini +0 -0
  187. pygpt_net/data/locale/plugin.voice_control.es.ini +0 -0
  188. pygpt_net/data/locale/plugin.voice_control.fr.ini +0 -0
  189. pygpt_net/data/locale/plugin.voice_control.it.ini +0 -0
  190. pygpt_net/data/locale/plugin.voice_control.pl.ini +0 -0
  191. pygpt_net/data/locale/plugin.voice_control.uk.ini +0 -0
  192. pygpt_net/data/locale/plugin.voice_control.zh.ini +0 -0
  193. pygpt_net/fonts.qrc +60 -60
  194. pygpt_net/fonts_rc.py +3 -65
  195. pygpt_net/icons.qrc +152 -138
  196. pygpt_net/icons_rc.py +680 -366
  197. pygpt_net/js.qrc +6 -6
  198. pygpt_net/js_rc.py +97483 -26906
  199. pygpt_net/provider/core/config/patch.py +11 -0
  200. pygpt_net/provider/core/model/patch.py +9 -0
  201. pygpt_net/tools/translator/tool.py +2 -2
  202. pygpt_net/ui/widget/draw/painter.py +1 -1
  203. pygpt_net/ui/widget/textarea/web.py +13 -1
  204. {pygpt_net-2.6.41.dist-info → pygpt_net-2.6.42.dist-info}/METADATA +9 -2
  205. {pygpt_net-2.6.41.dist-info → pygpt_net-2.6.42.dist-info}/RECORD +47 -33
  206. {pygpt_net-2.6.41.dist-info → pygpt_net-2.6.42.dist-info}/LICENSE +0 -0
  207. {pygpt_net-2.6.41.dist-info → pygpt_net-2.6.42.dist-info}/WHEEL +0 -0
  208. {pygpt_net-2.6.41.dist-info → pygpt_net-2.6.42.dist-info}/entry_points.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.41",
4
- "app.version": "2.6.41",
3
+ "version": "2.6.42",
4
+ "app.version": "2.6.42",
5
5
  "updated_at": "2025-09-11T00:00:00"
6
6
  },
7
7
  "access.audio.event.speech": false,
@@ -430,6 +430,9 @@
430
430
  "remote_tools.xai.sources.news": false,
431
431
  "render.blocks": true,
432
432
  "render.code_syntax": "github-dark",
433
+ "render.code_syntax.stream_max_lines": 1000,
434
+ "render.code_syntax.final_max_lines": 1500,
435
+ "render.code_syntax.final_max_chars": 350000,
433
436
  "render.engine": "web",
434
437
  "render.memory.limit": "2.5GB",
435
438
  "render.open_gl": false,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.41",
4
- "app.version": "2.6.41",
3
+ "version": "2.6.42",
4
+ "app.version": "2.6.42",
5
5
  "updated_at": "2025-09-11T08:03:34"
6
6
  },
7
7
  "items": {
@@ -872,6 +872,49 @@
872
872
  "provider": "google",
873
873
  "tool_calls": true
874
874
  },
875
+ "gemini-2.5-flash-image-preview": {
876
+ "id": "gemini-2.5-flash-image-preview",
877
+ "name": "gemini-2.5-flash-image-preview",
878
+ "mode": [
879
+ "chat",
880
+ "llama_index",
881
+ "img",
882
+ "agent_llama",
883
+ "agent_openai",
884
+ "agent",
885
+ "expert"
886
+ ],
887
+ "llama_index": {
888
+ "args": [
889
+ {
890
+ "name": "model",
891
+ "value": "models/gemini-2.5-flash-image-preview",
892
+ "type": "str"
893
+ }
894
+ ],
895
+ "env": [
896
+ {
897
+ "name": "GOOGLE_API_KEY",
898
+ "value": "{api_key_google}",
899
+ "type": "str"
900
+ }
901
+ ]
902
+ },
903
+ "ctx": 128000,
904
+ "tokens": 0,
905
+ "default": false,
906
+ "input": [
907
+ "text"
908
+ ],
909
+ "output": [
910
+ "text",
911
+ "image"
912
+ ],
913
+ "extra": {},
914
+ "imported": true,
915
+ "provider": "google",
916
+ "tool_calls": true
917
+ },
875
918
  "gemini-2.5-flash-preview-native-audio-dialog": {
876
919
  "id": "gemini-2.5-flash-preview-native-audio-dialog",
877
920
  "name": "gemini-2.5-flash-preview-native-audio-dialog",
@@ -2390,6 +2433,54 @@
2390
2433
  "provider": "x_ai",
2391
2434
  "tool_calls": true
2392
2435
  },
2436
+ "grok-2-image-1212": {
2437
+ "id": "grok-2-image-1212",
2438
+ "name": "grok-2-image-1212",
2439
+ "mode": [
2440
+ "chat",
2441
+ "llama_index",
2442
+ "img",
2443
+ "agent_llama",
2444
+ "agent_openai",
2445
+ "agent",
2446
+ "expert"
2447
+ ],
2448
+ "llama_index": {
2449
+ "args": [
2450
+ {
2451
+ "name": "model",
2452
+ "value": "grok-2-image-1212",
2453
+ "type": "str"
2454
+ }
2455
+ ],
2456
+ "env": [
2457
+ {
2458
+ "name": "OPENAI_API_KEY",
2459
+ "value": "{api_key_xai}",
2460
+ "type": "str"
2461
+ },
2462
+ {
2463
+ "name": "OPENAI_API_BASE",
2464
+ "value": "{api_endpoint_xai}",
2465
+ "type": "str"
2466
+ }
2467
+ ]
2468
+ },
2469
+ "ctx": 128000,
2470
+ "tokens": 0,
2471
+ "default": false,
2472
+ "input": [
2473
+ "text"
2474
+ ],
2475
+ "output": [
2476
+ "text",
2477
+ "image"
2478
+ ],
2479
+ "extra": {},
2480
+ "imported": true,
2481
+ "provider": "x_ai",
2482
+ "tool_calls": true
2483
+ },
2393
2484
  "grok-3": {
2394
2485
  "id": "grok-3",
2395
2486
  "name": "grok-3",
@@ -623,7 +623,41 @@
623
623
  "label": "settings.render.code_syntax",
624
624
  "description": "settings.render.web.only.desc",
625
625
  "value": "github-dark",
626
- "advanced": false
626
+ "advanced": false,
627
+ "tab": "code_syntax"
628
+ },
629
+ "render.code_syntax.stream_max_lines": {
630
+ "section": "layout",
631
+ "type": "int",
632
+ "min": 0,
633
+ "slider": false,
634
+ "label": "settings.render.code_syntax.stream_max_lines",
635
+ "description": "settings.render.code_syntax.stream_max_lines.desc",
636
+ "value": 300,
637
+ "advanced": false,
638
+ "tab": "code_syntax"
639
+ },
640
+ "render.code_syntax.final_max_lines": {
641
+ "section": "layout",
642
+ "type": "int",
643
+ "min": 0,
644
+ "slider": false,
645
+ "label": "settings.render.code_syntax.final_max_lines",
646
+ "description": "settings.render.code_syntax.final_max_lines.desc",
647
+ "value": 1500,
648
+ "advanced": false,
649
+ "tab": "code_syntax"
650
+ },
651
+ "render.code_syntax.final_max_chars": {
652
+ "section": "layout",
653
+ "type": "int",
654
+ "min": 0,
655
+ "slider": false,
656
+ "label": "settings.render.code_syntax.final_max_chars",
657
+ "description": "settings.render.code_syntax.final_max_chars.desc",
658
+ "value": 350000,
659
+ "advanced": false,
660
+ "tab": "code_syntax"
627
661
  },
628
662
  "font_size": {
629
663
  "section": "layout",
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="m131-252 165-440h79l165 440h-76l-39-112H247l-40 112h-76Zm139-176h131l-64-182h-4l-63 182Zm395 186q-51 0-81-27.5T554-342q0-44 34.5-72.5T677-443q23 0 45 4t38 11v-12q0-29-20.5-47T685-505q-23 0-42 9.5T610-468l-47-35q24-29 54.5-43t68.5-14q69 0 103 32.5t34 97.5v178h-63v-37h-4q-14 23-38 35t-53 12Zm12-54q35 0 59.5-24t24.5-56q-14-8-33.5-12.5T689-393q-32 0-50 14t-18 37q0 20 16 33t40 13Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H240L80-80Zm126-240h594v-480H160v525l46-45Zm-46 0v-480 480Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M80-80v-720q0-33 23.5-56.5T160-880h404q-4 20-4 40t4 40H160v525l46-45h594v-324q23-5 43-13.5t37-22.5v360q0 33-23.5 56.5T800-240H240L80-80Zm80-720v480-480Zm600 80q-50 0-85-35t-35-85q0-50 35-85t85-35q50 0 85 35t35 85q0 50-35 85t-85 35Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M440-400h80v-120h120v-80H520v-120h-80v120H320v80h120v120ZM80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v480q0 33-23.5 56.5T800-240H240L80-80Zm126-240h594v-480H160v525l46-45Zm-46 0v-480 480Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M694-160 553-302l56-56 85 85 170-170 56 57-226 226ZM80-80v-720q0-33 23.5-56.5T160-880h640q33 0 56.5 23.5T880-800v280h-80v-280H160v525l46-45h274v80H240L80-80Zm80-240v-480 480Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M800-600v-120H680v-80h120q33 0 56.5 23.5T880-720v120h-80Zm-720 0v-120q0-33 23.5-56.5T160-800h120v80H160v120H80Zm600 440v-80h120v-120h80v120q0 33-23.5 56.5T800-160H680Zm-520 0q-33 0-56.5-23.5T80-240v-120h80v120h120v80H160Zm80-160v-320h480v320H240Zm80-80h320v-160H320v160Zm0 0v-160 160Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M160-400v-80h280v80H160Zm0-160v-80h440v80H160Zm0-160v-80h440v80H160Zm360 560v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q8 9 12.5 20t4.5 22q0 11-4 22.5T863-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M440-240h80v-120h120v-80H520v-120h-80v120H320v80h120v120ZM240-80q-33 0-56.5-23.5T160-160v-640q0-33 23.5-56.5T240-880h320l240 240v480q0 33-23.5 56.5T720-80H240Zm280-520v-200H240v640h480v-440H520ZM240-800v200-200 640-640Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M280-160v-441q0-33 24-56t57-23h439q33 0 56.5 23.5T880-600v320L680-80H360q-33 0-56.5-23.5T280-160ZM81-710q-6-33 13-59.5t52-32.5l434-77q33-6 59.5 13t32.5 52l10 54h-82l-7-40-433 77 40 226v279q-16-9-27.5-24T158-276L81-710Zm279 110v440h280v-160h160v-280H360Zm220 220Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M680-560q-33 0-56.5-23T600-640v-160q0-34 23.5-57t56.5-23q34 0 57 23t23 57v160q0 34-23 57t-57 23ZM200-80q-33 0-56.5-23.5T120-160v-640q0-33 23.5-56.5T200-880h320v80H200v640h440v-80h80v80q0 33-23.5 56.5T640-80H200Zm80-160v-80h280v80H280Zm0-120v-80h200v80H280Zm440 40h-80v-104q-77-14-128.5-74.5T460-640h80q0 58 41 99t99 41q59 0 99.5-41t40.5-99h80q0 81-51 141.5T720-424v104Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="m476-80 182-480h84L924-80h-84l-43-122H603L560-80h-84ZM160-200l-56-56 202-202q-35-35-63.5-80T190-640h84q20 39 40 68t48 58q33-33 68.5-92.5T484-720H40v-80h280v-80h80v80h280v80H564q-21 72-63 148t-83 116l96 98-30 82-122-125-202 201Zm468-72h144l-72-204-72 204Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M160-80q-33 0-56.5-23.5T80-160v-640q0-33 23.5-56.5T160-880h326l-80 80H160v640h440v-80h80v80q0 33-23.5 56.5T600-80H160Zm80-160v-80h280v80H240Zm0-120v-80h200v80H240Zm360 0L440-520H320v-200h120l160-160v520Zm80-122v-276q36 21 58 57t22 81q0 45-22 81t-58 57Zm0 172v-84q70-25 115-86.5T840-620q0-78-45-139.5T680-846v-84q104 27 172 112.5T920-620q0 112-68 197.5T680-310Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M440-280H280q-83 0-141.5-58.5T80-480q0-83 58.5-141.5T280-680h160v80H280q-50 0-85 35t-35 85q0 50 35 85t85 35h160v80ZM320-440v-80h320v80H320Zm200 160v-80h160q50 0 85-35t35-85q0-50-35-85t-85-35H520v-80h160q83 0 141.5 58.5T880-480q0 83-58.5 141.5T680-280H520Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M480-320q75 0 127.5-52.5T660-500q0-75-52.5-127.5T480-680q-75 0-127.5 52.5T300-500q0 75 52.5 127.5T480-320Zm0-72q-45 0-76.5-31.5T372-500q0-45 31.5-76.5T480-608q45 0 76.5 31.5T588-500q0 45-31.5 76.5T480-392Zm0 192q-146 0-266-81.5T40-500q54-137 174-218.5T480-800q146 0 266 81.5T920-500q-54 137-174 218.5T480-200Zm0-300Zm0 220q113 0 207.5-59.5T832-500q-50-101-144.5-160.5T480-720q-113 0-207.5 59.5T128-500q50 101 144.5 160.5T480-280Z"/></svg>
pygpt_net/data/js/app.js CHANGED
@@ -557,11 +557,11 @@
557
557
  promoteMinInterval: 300, promoteMaxLatency: 800, promoteMinLines: 50,
558
558
  adaptiveStep: Utils.g('PROFILE_CODE_ADAPTIVE_STEP', true),
559
559
  // Hard switches to plain streaming (no incremental hljs, minimal DOM churn)
560
- stopAfterLines: 300, // Turn off incremental hljs very early
560
+ stopAfterLines: Utils.g('PROFILE_CODE_STOP_HL_AFTER_LINES', 300), // Stop incremental hljs after this many lines
561
561
  streamPlainAfterLines: 0, // Belt-and-suspenders: enforce plain mode soon after
562
562
  streamPlainAfterChars: 0, // Also guard huge single-line code (chars cap)
563
563
  maxFrozenChars: 32000, // If promotions slipped through, cap before spans grow too large
564
- finalHighlightMaxLines: Utils.g('PROFILE_CODE_FINAL_HL_MAX_LINES', 1000),
564
+ finalHighlightMaxLines: Utils.g('PROFILE_CODE_FINAL_HL_MAX_LINES', 1500),
565
565
  finalHighlightMaxChars: Utils.g('PROFILE_CODE_FINAL_HL_MAX_CHARS', 350000)
566
566
  };
567
567
 
@@ -1302,21 +1302,30 @@
1302
1302
  if (t.indexOf('[!') === -1) return false;
1303
1303
 
1304
1304
  for (const rule of rules) {
1305
- if (!rule || rule.tag !== 'p') continue;
1305
+ if (!rule) continue;
1306
+
1307
+ // Tolerant full-paragraph detection using textContent survives linkify splits.
1306
1308
  const m = rule.reFullTrim ? rule.reFullTrim.exec(t) : null;
1307
1309
  if (!m) continue;
1308
1310
 
1309
- const out = document.createElement('p');
1311
+ // IMPORTANT: create the replacement element using the rule's tag (was hard-coded to <p>).
1312
+ // This makes [!cmd] ... [/!cmd] (configured with tag: 'div') work even when linkify
1313
+ // inserted <a> tags inside the paragraph — detection is done on textContent, not DOM nodes.
1314
+ const outTag = (rule.tag && typeof rule.tag === 'string') ? rule.tag.toLowerCase() : 'span';
1315
+ const out = document.createElement(outTag === 'p' ? 'p' : outTag);
1310
1316
  if (rule.className) out.className = rule.className;
1311
1317
  out.setAttribute('data-cm', rule.name);
1318
+
1312
1319
  const innerText = m[1] || '';
1320
+ // Use mode-driven inner content materialization (text or markdown-inline).
1313
1321
  this.setInnerByMode(out, rule.innerMode, innerText, MD);
1314
1322
 
1323
+ // Replace the original <p> with the desired container (<div>, <think>, <p>, etc.).
1315
1324
  try { el.replaceWith(out); } catch (_) {
1316
1325
  const parent = el.parentNode; if (parent) parent.replaceChild(out, el);
1317
1326
  }
1318
1327
 
1319
- this._d('P_REPLACED', { rule: rule.name, preview: this.logger.pv(t, 160) });
1328
+ this._d('P_REPLACED', { rule: rule.name, asTag: outTag, preview: this.logger.pv(t, 160) });
1320
1329
  return true;
1321
1330
  }
1322
1331
  this._d('P_NO_FULL_MATCH', { preview: this.logger.pv(t, 160) });
@@ -2754,6 +2763,10 @@
2754
2763
 
2755
2764
  // Streaming mode flag – controls reduced rendering (no linkify etc.) on hot path.
2756
2765
  this.isStreaming = false;
2766
+
2767
+ // Tracks whether renderSnapshot injected a one-off synthetic EOL for parsing an open fence
2768
+ // (used to strip it from the initial streaming tail to avoid "#\n foo" on first line).
2769
+ this._lastInjectedEOL = false;
2757
2770
  }
2758
2771
  _d(tag, data) { this.logger.debug('STREAM', tag, data); }
2759
2772
 
@@ -2798,6 +2811,10 @@
2798
2811
  this.activeCode = null; this.suppressPostFinalizePass = false;
2799
2812
  this._promoteScheduled = false;
2800
2813
  this._firstCodeOpenSnapDone = false;
2814
+
2815
+ // Clear any previous synthetic EOL marker.
2816
+ this._lastInjectedEOL = false;
2817
+
2801
2818
  this._d('RESET', { });
2802
2819
  }
2803
2820
  // Turn active streaming code block into plain text (safety on abort).
@@ -3024,6 +3041,15 @@
3024
3041
  const cls = Array.from(last.classList).find(c => c.startsWith('language-')) || 'language-plaintext';
3025
3042
  const lang = (cls.replace('language-', '') || 'plaintext');
3026
3043
  const parts = this.ensureSplitCodeEl(last); if (!parts) return null;
3044
+
3045
+ // If we injected a synthetic EOL for parsing an open fence, remove it from the streaming tail now.
3046
+ // This prevents breaking the very first code line into "#\n foo" when the next chunk starts with " foo".
3047
+ if (this._lastInjectedEOL && parts.tailEl && parts.tailEl.textContent && parts.tailEl.textContent.endsWith('\n')) {
3048
+ parts.tailEl.textContent = parts.tailEl.textContent.slice(0, -1);
3049
+ // Reset the marker so we don't accidentally trim again in this snapshot lifecycle.
3050
+ this._lastInjectedEOL = false;
3051
+ }
3052
+
3027
3053
  const st = this.codeScroll.state(parts.codeEl); st.autoFollow = true; st.userInteracted = false;
3028
3054
  parts.codeEl.dataset._active_stream = '1';
3029
3055
  const baseFrozenNL = Utils.countNewlines(parts.frozenEl.textContent || ''); const baseTailNL = Utils.countNewlines(parts.tailEl.textContent || '');
@@ -3412,9 +3438,13 @@
3412
3438
 
3413
3439
  const t0 = Utils.now();
3414
3440
 
3415
- // Slightly adjusted: when fence is open we append '\n' to ensure stable fence-close detection
3441
+ // When an open fence is present, append a synthetic EOL only if the current buffer
3442
+ // does not already end with EOL. This stabilizes markdown-it parsing without polluting
3443
+ // the real code tail (we will strip this EOL from the active tail right after snapshot).
3416
3444
  const allText = this.getStreamText();
3417
- const src = this.fenceOpen ? (allText + '\n') : allText;
3445
+ const needSyntheticEOL = (this.fenceOpen && !/[\r\n]$/.test(allText));
3446
+ this._lastInjectedEOL = !!needSyntheticEOL;
3447
+ const src = needSyntheticEOL ? (allText + '\n') : allText;
3418
3448
 
3419
3449
  // Use streaming renderer (no linkify) on hot path to reduce CPU/allocs
3420
3450
  const html = streaming ? this.renderer.renderStreamingSnapshot(src) : this.renderer.renderFinalSnapshot(src);
@@ -1321,7 +1321,15 @@ settings.remote_tools.mcp.desc = Aktivieren Sie das `mcp` Fern-Tool im Chat-Modu
1321
1321
  settings.remote_tools.web_search = Web Search
1322
1322
  settings.remote_tools.web_search.desc = Aktiviert das `web_search` Remote-Tool im Chat-Modus / über die OpenAI Responses API.
1323
1323
  settings.render.code_syntax = Stil der Syntaxhervorhebung für Code
1324
+ settings.render.code_syntax.final_max_chars = Maximale Zeichen zum Kolorieren (statisch)
1325
+ settings.render.code_syntax.final_max_chars.desc = Code-Kolorierung: maximale Zeichenanzahl zum Kolorieren in statischem Inhalt, 0 zum Deaktivieren
1326
+ settings.render.code_syntax.final_max_lines = Maximale Zeilen zum Kolorieren (statisch)
1327
+ settings.render.code_syntax.final_max_lines.desc = Code-Kolorierung: maximale Zeilenanzahl zum Kolorieren in statischem Inhalt, 0 zum Deaktivieren
1328
+ settings.render.code_syntax.stream_max_lines = Maximale Zeilen zum Kolorieren (Echtzeit)
1329
+ settings.render.code_syntax.stream_max_lines.desc = Code-Kolorierung: maximale Zeilenanzahl zum Kolorieren im Stream, 0 zum Deaktivieren
1324
1330
  settings.render.engine = Render-Engine
1331
+ settings.render.memory.limit = Speicherlimit
1332
+ settings.render.memory.limit.desc = Speicherlimit des Renderers; auf 0 setzen, um zu deaktivieren. Wenn > 0, versucht die App, Speicher nach Erreichen des Limits freizugeben. Akzeptierte Formate: 3.5GB, 2GB, 2048MB, 1_000_000. Minimum: 2GB.
1325
1333
  settings.render.open_gl = OpenGL-Hardwarebeschleunigung
1326
1334
  settings.render.plain = Markdown-Formatierung in der Ausgabe deaktivieren (RAW-Textmodus)
1327
1335
  settings.render.web.only.desc = Nur WebEngine / Chromium-Rendering-Engine
@@ -1353,6 +1361,7 @@ settings.section.images = Bilder und Videos
1353
1361
  settings.section.images.image = Bild
1354
1362
  settings.section.images.video = Video
1355
1363
  settings.section.layout = Layout
1364
+ settings.section.layout.code_syntax = Code-Kolorierung
1356
1365
  settings.section.llama_index = Indizes / LlamaIndex
1357
1366
  settings.section.llama-index.chat = Chat
1358
1367
  settings.section.llama-index.data_loaders = Datenlader
@@ -782,6 +782,7 @@ menu.debug.config = Config...
782
782
  menu.debug.context = Context...
783
783
  menu.debug.db = DB Viewer
784
784
  menu.debug.events = Events...
785
+ menu.debug.fake_stream = Stream: Generator
785
786
  menu.debug.indexes = Indexes...
786
787
  menu.debug.kernel = Kernel...
787
788
  menu.debug.logger = Open Logger
@@ -1376,7 +1377,15 @@ settings.remote_tools.xai.sources.web.desc = Enable Web in Live Search
1376
1377
  settings.remote_tools.xai.sources.x = Source: X / Twitter
1377
1378
  settings.remote_tools.xai.sources.x.desc = Enable X / Twitter in Live Search
1378
1379
  settings.render.code_syntax = Code syntax highlight
1380
+ settings.render.code_syntax.final_max_chars = Max chars to highlight (static)
1381
+ settings.render.code_syntax.final_max_chars.desc = Syntax highlight: max chars to highlight in static content, 0 to disable
1382
+ settings.render.code_syntax.final_max_lines = Max lines to highlight (static)
1383
+ settings.render.code_syntax.final_max_lines.desc = Syntax highlight: max lines to highlight in static content, 0 to disable
1384
+ settings.render.code_syntax.stream_max_lines = Max lines to highlight (real-time)
1385
+ settings.render.code_syntax.stream_max_lines.desc = Syntax highlight: max lines to highlight in stream, 0 to disable
1379
1386
  settings.render.engine = Rendering engine
1387
+ settings.render.memory.limit = Memory Limit
1388
+ settings.render.memory.limit.desc = Renderer memory limit; set to 0 to disable. If > 0, the app will try to free memory after the limit is reached. Accepted formats: 3.5GB, 2GB, 2048MB, 1_000_000. Minimum: 2GB.
1380
1389
  settings.render.open_gl = OpenGL hardware acceleration
1381
1390
  settings.render.plain = Disable markdown formatting in output (RAW plain text mode)
1382
1391
  settings.render.web.only.desc = WebEngine / Chromium rendering engine only
@@ -1410,6 +1419,7 @@ settings.section.images = Images and video
1410
1419
  settings.section.images.image = Image
1411
1420
  settings.section.images.video = Video
1412
1421
  settings.section.layout = Layout
1422
+ settings.section.layout.code_syntax = Code syntax
1413
1423
  settings.section.llama_index = Indexes / LlamaIndex
1414
1424
  settings.section.llama-index.chat = Chat
1415
1425
  settings.section.llama-index.data_loaders = Data loaders
@@ -1634,7 +1644,3 @@ vision.capture.manual.captured.success = Image captured from the camera:
1634
1644
  vision.capture.name.prefix = Camera capture:
1635
1645
  vision.capture.options.title = Video capture
1636
1646
  vision.checkbox.tooltip = If checked, the vision model is active. It will be automatically activated upon image upload. You can deactivate it in real-time.
1637
-
1638
- settings.render.memory.limit = Memory Limit
1639
- settings.render.memory.limit.desc = Renderer memory limit; set to 0 to disable. If > 0, the app will try to free memory after the limit is reached. Accepted formats: 3.5GB, 2GB, 2048MB, 1_000_000. Minimum: 2GB.
1640
- menu.debug.fake_stream = Stream: Generator
@@ -1322,7 +1322,15 @@ settings.remote_tools.mcp.desc = Habilitar la herramienta remota `mcp` en modo c
1322
1322
  settings.remote_tools.web_search = Web Search
1323
1323
  settings.remote_tools.web_search.desc = Habilitar la herramienta remota `web_search` en modo Chat / a través de la API de OpenAI Responses.
1324
1324
  settings.render.code_syntax = Estilo de resaltado de sintaxis de código
1325
+ settings.render.code_syntax.final_max_chars = Máx. caracteres para colorear (estáticos)
1326
+ settings.render.code_syntax.final_max_chars.desc = Coloreado de código: máx. caracteres para colorear en contenido estático, 0 para desactivar
1327
+ settings.render.code_syntax.final_max_lines = Máx. líneas para colorear (estáticas)
1328
+ settings.render.code_syntax.final_max_lines.desc = Coloreado de código: máx. líneas para colorear en contenido estático, 0 para desactivar
1329
+ settings.render.code_syntax.stream_max_lines = Máx. líneas para colorear (en tiempo real)
1330
+ settings.render.code_syntax.stream_max_lines.desc = Coloreado de código: máx. líneas para colorear en la transmisión, 0 para desactivar
1325
1331
  settings.render.engine = Motor de renderizado
1332
+ settings.render.memory.limit = Límite de memoria
1333
+ settings.render.memory.limit.desc = Límite de memoria del renderizador; establecer a 0 para desactivar. Si > 0, la aplicación intentará liberar memoria después de alcanzar el límite. Formatos aceptados: 3.5GB, 2GB, 2048MB, 1_000_000. Mínimo: 2GB.
1326
1334
  settings.render.open_gl = Aceleración de hardware OpenGL
1327
1335
  settings.render.plain = Desactivar el formato markdown en la salida (modo de texto plano RAW)
1328
1336
  settings.render.web.only.desc = Motor de renderizado solo WebEngine / Chromium
@@ -1354,6 +1362,7 @@ settings.section.images = Imágenes y vídeo
1354
1362
  settings.section.images.image = Imagen
1355
1363
  settings.section.images.video = Video
1356
1364
  settings.section.layout = Diseño
1365
+ settings.section.layout.code_syntax = Coloreado de código
1357
1366
  settings.section.llama_index = Índices / LlamaIndex
1358
1367
  settings.section.llama-index.chat = Chat
1359
1368
  settings.section.llama-index.data_loaders = Cargadores de datos
@@ -1321,7 +1321,15 @@ settings.remote_tools.mcp.desc = Activer l'outil distant `mcp` en mode chat / vi
1321
1321
  settings.remote_tools.web_search = Web Search
1322
1322
  settings.remote_tools.web_search.desc = Activer l'outil distant `web_search` en mode Chat / via l'API OpenAI Responses.
1323
1323
  settings.render.code_syntax = Style de mise en évidence de la syntaxe du code
1324
+ settings.render.code_syntax.final_max_chars = Caractères max à coloriser (statique)
1325
+ settings.render.code_syntax.final_max_chars.desc = Coloration de code : caractères max à coloriser dans le contenu statique, 0 pour désactiver
1326
+ settings.render.code_syntax.final_max_lines = Lignes max à coloriser (statique)
1327
+ settings.render.code_syntax.final_max_lines.desc = Coloration de code : lignes max à coloriser dans le contenu statique, 0 pour désactiver
1328
+ settings.render.code_syntax.stream_max_lines = Lignes max à coloriser (temps réel)
1329
+ settings.render.code_syntax.stream_max_lines.desc = Coloration de code : lignes max à coloriser dans le flux, 0 pour désactiver
1324
1330
  settings.render.engine = Moteur de rendu
1331
+ settings.render.memory.limit = Limite de mémoire
1332
+ settings.render.memory.limit.desc = Limite de mémoire du moteur; définir à 0 pour désactiver. Si > 0, l'application essaiera de libérer de la mémoire après avoir atteint la limite. Formats acceptés : 3.5GB, 2GB, 2048MB, 1_000_000. Minimum : 2GB.
1325
1333
  settings.render.open_gl = Accélération matérielle OpenGL
1326
1334
  settings.render.plain = Désactiver le formatage markdown dans la sortie (mode texte brut RAW)
1327
1335
  settings.render.web.only.desc = Moteur de rendu WebEngine / Chromium uniquement
@@ -1353,6 +1361,7 @@ settings.section.images = Images et vidéos
1353
1361
  settings.section.images.image = Image
1354
1362
  settings.section.images.video = Vidéo
1355
1363
  settings.section.layout = Mise en page
1364
+ settings.section.layout.code_syntax = Coloration de code
1356
1365
  settings.section.llama_index = Indexes / LlamaIndex
1357
1366
  settings.section.llama-index.chat = Chat
1358
1367
  settings.section.llama-index.data_loaders = Chargeurs de données
@@ -1321,7 +1321,15 @@ settings.remote_tools.mcp.desc = Abilita lo strumento remoto `mcp` in modalità
1321
1321
  settings.remote_tools.web_search = Web Search
1322
1322
  settings.remote_tools.web_search.desc = Abilita lo strumento remoto `web_search` in modalità Chat / tramite OpenAI Responses API.
1323
1323
  settings.render.code_syntax = Stile di evidenziazione della sintassi del codice
1324
+ settings.render.code_syntax.final_max_chars = Max caratteri da colorare (statici)
1325
+ settings.render.code_syntax.final_max_chars.desc = Colorazione del codice: max caratteri da colorare in contenuto statico, 0 per disabilitare
1326
+ settings.render.code_syntax.final_max_lines = Max righe da colorare (statiche)
1327
+ settings.render.code_syntax.final_max_lines.desc = Colorazione del codice: max righe da colorare in contenuto statico, 0 per disabilitare
1328
+ settings.render.code_syntax.stream_max_lines = Max righe da colorare (in tempo reale)
1329
+ settings.render.code_syntax.stream_max_lines.desc = Colorazione del codice: max righe da colorare nello stream, 0 per disabilitare
1324
1330
  settings.render.engine = Motore di rendering
1331
+ settings.render.memory.limit = Limite di memoria
1332
+ settings.render.memory.limit.desc = Limite di memoria del renderer; impostare a 0 per disabilitare. Se > 0, l'app proverà a liberare memoria dopo aver raggiunto il limite. Formati accettati: 3.5GB, 2GB, 2048MB, 1_000_000. Minimo: 2GB.
1325
1333
  settings.render.open_gl = Accelerazione hardware OpenGL
1326
1334
  settings.render.plain = Disabilita formattazione markdown nell'output (modalità testo semplice RAW)
1327
1335
  settings.render.web.only.desc = Solo motore di rendering WebEngine / Chromium
@@ -1353,6 +1361,7 @@ settings.section.images = Immagini e video
1353
1361
  settings.section.images.image = Immagine
1354
1362
  settings.section.images.video = Video
1355
1363
  settings.section.layout = Layout
1364
+ settings.section.layout.code_syntax = Colorazione del codice
1356
1365
  settings.section.llama_index = Indici / LlamaIndex
1357
1366
  settings.section.llama-index.chat = Chat
1358
1367
  settings.section.llama-index.data_loaders = Caricatori dati
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
 
5
+
5
6
  about.btn.github = GitHub
6
7
  about.btn.support = Wsparcie
7
8
  about.btn.website = WWW
@@ -898,7 +899,7 @@ model.openai = OpenAI API
898
899
  model.openai.desc = Wspiera OpenAI API (lub kompatybilny)
899
900
  model.output = Wyjście
900
901
  model.provider = Dostawca
901
- model.provider.desc = Wybierz dostawcę dla modelu
902
+ model.provider.desc = Wybierz dostawcę dla modelu
902
903
  models.importer.all = Pokaż wszystkie
903
904
  models.importer.available.label = Dostępne modele
904
905
  models.importer.current.default = Wybierz dostawcę z listy.
@@ -1325,7 +1326,15 @@ settings.remote_tools.mcp.desc = Włącz narzędzie zdalne `mcp` w trybie czatu
1325
1326
  settings.remote_tools.web_search = Web Search
1326
1327
  settings.remote_tools.web_search.desc = Włącz zdalne narzędzie `web_search` w trybie czatu / używając OpenAI Responses API.
1327
1328
  settings.render.code_syntax = Styl podświetlenia składni kodu
1329
+ settings.render.code_syntax.final_max_chars = Maks. znaki do kolorowania (statyczne)
1330
+ settings.render.code_syntax.final_max_chars.desc = Kolorowanie kodu: maksymalna liczba znaków do kolorowania w treści statycznej, 0 aby wyłączyć
1331
+ settings.render.code_syntax.final_max_lines = Maks. linie do kolorowania (statyczne)
1332
+ settings.render.code_syntax.final_max_lines.desc = Kolorowanie kodu: maksymalna liczba linii do kolorowania w treści statycznej, 0 aby wyłączyć
1333
+ settings.render.code_syntax.stream_max_lines = Maks. linie do kolorowania (na żywo)
1334
+ settings.render.code_syntax.stream_max_lines.desc = Kolorowanie kodu: maksymalna liczba linii do kolorowania w strumieniu, 0 aby wyłączyć
1328
1335
  settings.render.engine = Silnik renderingu
1336
+ settings.render.memory.limit = Limit pamięci
1337
+ settings.render.memory.limit.desc = Limit pamięci renderera; ustaw na 0, aby wyłączyć. Jeśli > 0, aplikacja spróbuje zwolnić pamięć po osiągnięciu limitu. Akceptowane formaty: 3.5GB, 2GB, 2048MB, 1_000_000. Minimum: 2GB.
1329
1338
  settings.render.open_gl = Przyspieszenie sprzętowe OpenGL
1330
1339
  settings.render.plain = Wyłącz formatowanie markdown w wyjściu (tryb plain-text)
1331
1340
  settings.render.web.only.desc = Tylko silnik renderingu WebEngine / Chromium
@@ -1357,6 +1366,7 @@ settings.section.images = Obrazy i wideo
1357
1366
  settings.section.images.image = Image
1358
1367
  settings.section.images.video = Video
1359
1368
  settings.section.layout = Wygląd
1369
+ settings.section.layout.code_syntax = Kolorowanie kodu
1360
1370
  settings.section.llama_index = Indeksy / LlamaIndex
1361
1371
  settings.section.llama-index.chat = Czat
1362
1372
  settings.section.llama-index.data_loaders = Ładowarki danych
@@ -1321,7 +1321,15 @@ settings.remote_tools.mcp.desc = Увімкніть віддалений інс
1321
1321
  settings.remote_tools.web_search = Web Search
1322
1322
  settings.remote_tools.web_search.desc = Увімкнути віддалений інструмент `web_search` у режимі чату / через API відповідей OpenAI.
1323
1323
  settings.render.code_syntax = Стиль підсвічування синтаксису коду
1324
+ settings.render.code_syntax.final_max_chars = Макс. символів для кольорування (статичні)
1325
+ settings.render.code_syntax.final_max_chars.desc = Кольорування коду: макс. символів для кольорування у статичному вмісті, 0 для вимкнення
1326
+ settings.render.code_syntax.final_max_lines = Макс. ліній для кольорування (статичні)
1327
+ settings.render.code_syntax.final_max_lines.desc = Кольорування коду: макс. ліній для кольорування у статичному вмісті, 0 для вимкнення
1328
+ settings.render.code_syntax.stream_max_lines = Макс. ліній для кольорування (у реальному часі)
1329
+ settings.render.code_syntax.stream_max_lines.desc = Кольорування коду: макс. ліній для кольорування у потоці, 0 для вимкнення
1324
1330
  settings.render.engine = Двигун рендерингу
1331
+ settings.render.memory.limit = Обмеження пам'яті
1332
+ settings.render.memory.limit.desc = Обмеження пам'яті рендера; встановити 0, щоб вимкнути. Якщо > 0, додаток намагатиметься звільнити пам'ять після досягнення межі. Допустимі формати: 3.5GB, 2GB, 2048MB, 1_000_000. Мінімум: 2GB.
1325
1333
  settings.render.open_gl = Прискорення апаратного забезпечення OpenGL
1326
1334
  settings.render.plain = Вимкнути форматування markdown у виводі (режим простого тексту RAW)
1327
1335
  settings.render.web.only.desc = Двигун рендерування лише WebEngine / Chromium
@@ -1353,6 +1361,7 @@ settings.section.images = Зображення і відео
1353
1361
  settings.section.images.image = Зображення
1354
1362
  settings.section.images.video = Відео
1355
1363
  settings.section.layout = Макет
1364
+ settings.section.layout.code_syntax = Кольорування коду
1356
1365
  settings.section.llama_index = Індекси / LlamaIndex
1357
1366
  settings.section.llama-index.chat = Чат
1358
1367
  settings.section.llama-index.data_loaders = Завантажувачі даних
@@ -1321,7 +1321,15 @@ settings.remote_tools.mcp.desc = 在聊天模式/通过OpenAI Responses API启
1321
1321
  settings.remote_tools.web_search = Web Search
1322
1322
  settings.remote_tools.web_search.desc = 在聊天模式/通过 OpenAI Responses API 启用 `web_search` 远程工具。
1323
1323
  settings.render.code_syntax = 代码语法高亮样式
1324
+ settings.render.code_syntax.final_max_chars = 静态最大着色字符数
1325
+ settings.render.code_syntax.final_max_chars.desc = 代码着色:静态内容中最大着色字符数,0为禁用
1326
+ settings.render.code_syntax.final_max_lines = 静态最大着色行数
1327
+ settings.render.code_syntax.final_max_lines.desc = 代码着色:静态内容中最大着色行数,0为禁用
1328
+ settings.render.code_syntax.stream_max_lines = 实时最大着色行数
1329
+ settings.render.code_syntax.stream_max_lines.desc = 代码着色:流中最大着色行数,0为禁用
1324
1330
  settings.render.engine = 渲染引擎
1331
+ settings.render.memory.limit = 内存限制
1332
+ settings.render.memory.limit.desc = 渲染器内存限制;设置为0以禁用。如果 > 0,应用将在达到限制后尝试释放内存。接受的格式:3.5GB, 2GB, 2048MB, 1_000_000。最小值:2GB。
1325
1333
  settings.render.open_gl = OpenGL 硬件加速
1326
1334
  settings.render.plain = 在輸出中禁用markdown格式化(RAW純文本模式)
1327
1335
  settings.render.web.only.desc = 仅 WebEngine / Chromium 渲染引擎
@@ -1353,6 +1361,7 @@ settings.section.images = 图像和视频
1353
1361
  settings.section.images.image = 图像
1354
1362
  settings.section.images.video = 视频
1355
1363
  settings.section.layout = 布局
1364
+ settings.section.layout.code_syntax = 代码着色
1356
1365
  settings.section.llama_index = 索引 / LlamaIndex
1357
1366
  settings.section.llama-index.chat = 聊天
1358
1367
  settings.section.llama-index.data_loaders = 數據加載器
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes