pygpt-net 2.6.6__py3-none-any.whl → 2.6.8__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.
pygpt_net/CHANGELOG.txt CHANGED
@@ -1,3 +1,14 @@
1
+ 2.6.8 (2025-08-16)
2
+
3
+ - Fixed: updated paragraph color on theme switch.
4
+ - Added switching to duplicated preset after creation.
5
+ - Reduced delay after selecting context.
6
+ - Optimized rendering of mathematical formulas.
7
+
8
+ 2.6.7 (2025-08-16)
9
+
10
+ - Fix: missing entity sanitize.
11
+
1
12
  2.6.6 (2025-08-16)
2
13
 
3
14
  - Output rendering optimization.
pygpt_net/__init__.py CHANGED
@@ -13,7 +13,7 @@ __author__ = "Marcin Szczygliński"
13
13
  __copyright__ = "Copyright 2025, Marcin Szczygliński"
14
14
  __credits__ = ["Marcin Szczygliński"]
15
15
  __license__ = "MIT"
16
- __version__ = "2.6.6"
16
+ __version__ = "2.6.8"
17
17
  __build__ = "2025-08-16"
18
18
  __maintainer__ = "Marcin Szczygliński"
19
19
  __github__ = "https://github.com/szczyglis-dev/py-gpt"
pygpt_net/app.py CHANGED
@@ -22,10 +22,6 @@ if platform.system() == 'Windows':
22
22
  # fix ffmpeg bug: [SWR] Output channel layout "" is invalid or unsupported.
23
23
  os.environ['QT_MEDIA_BACKEND'] = 'windows'
24
24
 
25
- elif platform.system() == 'Linux':
26
- os.environ.setdefault("MALLOC_ARENA_MAX", "2") # 2 arenas
27
- os.environ.setdefault("MALLOC_TRIM_THRESHOLD_", "131072") # 128 KiB
28
-
29
25
  # enable debug logging
30
26
  # os.environ["QT_LOGGING_RULES"] = "*.debug=true"
31
27
  # os.environ["QTWEBENGINE_REMOTE_DEBUGGING"] = "9222"
@@ -78,7 +78,7 @@ class Ctx:
78
78
  self.select_by_current(focus=True) # scroll to current ctx
79
79
 
80
80
  # focus input after loading
81
- QTimer.singleShot(100, self.window.controller.chat.common.focus_input)
81
+ QTimer.singleShot(10, self.window.controller.chat.common.focus_input)
82
82
 
83
83
  def update_mode_in_current(self):
84
84
  """Update current ctx mode"""
@@ -103,7 +103,7 @@ class Ctx:
103
103
  reload: bool = True,
104
104
  all: bool = True,
105
105
  select: bool = True,
106
- no_scroll: bool = False
106
+ no_scroll: bool = False,
107
107
  ):
108
108
  """
109
109
  Update ctx list
@@ -685,7 +685,7 @@ class Ctx:
685
685
  meta.label = label_id
686
686
  self.window.core.ctx.save(id)
687
687
  QTimer.singleShot(
688
- 100,
688
+ 10,
689
689
  lambda: self.update(no_scroll=True)
690
690
  )
691
691
 
@@ -963,7 +963,7 @@ class Ctx:
963
963
  self.group_id = group_id
964
964
  if update:
965
965
  QTimer.singleShot(
966
- 100,
966
+ 10,
967
967
  lambda: self.update()
968
968
  )
969
969
 
@@ -976,7 +976,7 @@ class Ctx:
976
976
  self.window.core.ctx.update_meta_group_id(meta_id, None)
977
977
  self.group_id = None
978
978
  QTimer.singleShot(
979
- 100,
979
+ 10,
980
980
  lambda: self.update(no_scroll=True)
981
981
  )
982
982
 
@@ -522,6 +522,7 @@ class Presets:
522
522
  self.refresh(no_scroll=True)
523
523
  idx = w.core.presets.get_idx_by_id(mode, new_id)
524
524
  self.editor.edit(idx)
525
+ self.select(idx) # switch to the new preset
525
526
  w.update_status(trans('status.preset.duplicated'))
526
527
 
527
528
  def enable(self, idx: Optional[int] = None):
@@ -392,10 +392,10 @@ class Body:
392
392
  if (replace) {
393
393
  msg.replaceChildren();
394
394
  if (content) {
395
- msg.insertAdjacentHTML('afterbegin', content);
395
+ msg.insertAdjacentHTML('afterbegin', sanitize(content));
396
396
  }
397
397
  let doMath = true;
398
- if (!is_code_block) {
398
+ if (is_code_block) {
399
399
  doMath = false;
400
400
  }
401
401
  highlightCode(doMath, msg);
@@ -413,10 +413,10 @@ class Body:
413
413
  }
414
414
  }
415
415
  if (lastCodeBlock) {
416
- lastCodeBlock.insertAdjacentHTML('beforeend', chunk);
416
+ lastCodeBlock.insertAdjacentHTML('beforeend', sanitize(chunk));
417
417
  domLastCodeBlock = lastCodeBlock;
418
418
  } else {
419
- msg.insertAdjacentHTML('beforeend', chunk);
419
+ msg.insertAdjacentHTML('beforeend', sanitize(chunk));
420
420
  domLastCodeBlock = null;
421
421
  }
422
422
  } else {
@@ -1084,7 +1084,7 @@ class Body:
1084
1084
  f'<a href="{url}"><img src="{path}" class="image"></a>'
1085
1085
  f'</div>'
1086
1086
  f'<a href="{url}" class="title">{basename}</a>'
1087
- f'</div></div>'
1087
+ f'</div></div><br/>'
1088
1088
  )
1089
1089
 
1090
1090
  def get_url_html(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.6",
4
- "app.version": "2.6.6",
3
+ "version": "2.6.8",
4
+ "app.version": "2.6.8",
5
5
  "updated_at": "2025-08-16T00:00:00"
6
6
  },
7
7
  "access.audio.event.speech": false,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.6",
4
- "app.version": "2.6.6",
3
+ "version": "2.6.8",
4
+ "app.version": "2.6.8",
5
5
  "updated_at": "2025-08-16T23:07:35"
6
6
  },
7
7
  "items": {
@@ -131,4 +131,7 @@ QCalendarWidget QAbstractItemView::item:hover {{
131
131
  padding-top: 6px;
132
132
  padding-bottom: 2px;
133
133
  height: 20px;
134
+ }}
135
+ .file-explorer QTreeView::branch {{
136
+ background: #262a2e;
134
137
  }}
@@ -237,13 +237,6 @@ QCalendarWidget QToolButton,
237
237
  QCalendarWidget QToolButton:hover {{
238
238
  border: none;
239
239
  }}
240
- QCalendarWidget QAbstractItemView::item:selected:focus,
241
- QCalendarWidget QAbstractItemView::item:selected {{
242
- background: #ffffd4;
243
- }}
244
- QCalendarWidget QAbstractItemView::item:hover {{
245
- background: #f6f6f6;
246
- }}
247
240
  .file-explorer QTreeView,
248
241
  .file-explorer QHeaderView::section,
249
242
  .file-explorer QTreeView::branch,
@@ -254,7 +247,17 @@ QCalendarWidget QAbstractItemView::item:hover {{
254
247
  padding-top: 6px;
255
248
  padding-bottom: 2px;
256
249
  height: 20px;
257
- }}
250
+ }}
258
251
  QMenu::indicator {{
259
- border: 1px solid gray;
252
+ border: 1px solid gray; /* tu ustawiasz border */
253
+ }}
254
+ QCalendarWidget QAbstractItemView::item:selected:focus,
255
+ QCalendarWidget QAbstractItemView::item:selected {{
256
+ background: #ffffd4;
257
+ }}
258
+ QCalendarWidget QAbstractItemView::item:hover {{
259
+ background: #f6f6f6;
260
+ }}
261
+ .file-explorer QTreeView::branch {{
262
+ background: #fff;
260
263
  }}
@@ -14,6 +14,9 @@ body {{
14
14
  ::-webkit-scrollbar-corner {{
15
15
  background: #232629;
16
16
  }}
17
+ p {{
18
+ color: #fff;
19
+ }}
17
20
  a {{
18
21
  color: #a1b5c4 !important;
19
22
  }}
@@ -14,6 +14,9 @@ body {{
14
14
  ::-webkit-scrollbar-corner {{
15
15
  background: #232629;
16
16
  }}
17
+ p {{
18
+ color: #fff;
19
+ }}
17
20
  a {{
18
21
  color: #a1b5c4 !important;
19
22
  }}
@@ -2250,6 +2250,18 @@ class Patch:
2250
2250
  self.window.core.updater.patch_css('style.dark.css', True) # calendar fix
2251
2251
  updated = True
2252
2252
 
2253
+ # < 2.6.8
2254
+ if old < parse_version("2.6.8"):
2255
+ print("Migrating config from < 2.6.8...")
2256
+ self.window.core.updater.patch_css('web-chatgpt.light.css', True) # p color
2257
+ self.window.core.updater.patch_css('web-chatgpt.dark.css', True) # p color
2258
+ self.window.core.updater.patch_css('web-chatgpt_wide.light.css', True) # p color
2259
+ self.window.core.updater.patch_css('web-chatgpt_wide.dark.css', True) # p color
2260
+ self.window.core.updater.patch_css('style.light.css', True) # tree
2261
+ self.window.core.updater.patch_css('style.dark.css', True) # tree
2262
+ updated = True
2263
+
2264
+
2253
2265
  # update file
2254
2266
  migrated = False
2255
2267
  if updated:
@@ -54,6 +54,20 @@ class About:
54
54
  self.window.ui.menu['info.license'] = QAction(QIcon(":/icons/info.svg"), trans("menu.info.license"),
55
55
  self.window)
56
56
 
57
+ self.window.ui.menu['donate.coffee'] = QAction(QIcon(":/icons/favorite.svg"), "Buy me a coffee",
58
+ self.window)
59
+ self.window.ui.menu['donate.coffee'].setMenuRole(QAction.MenuRole.NoRole)
60
+ self.window.ui.menu['donate.paypal'] = QAction(QIcon(":/icons/favorite.svg"), "PayPal",
61
+ self.window)
62
+ self.window.ui.menu['donate.github'] = QAction(QIcon(":/icons/favorite.svg"), "GitHub Sponsors", self.window)
63
+
64
+ self.window.ui.menu['donate.coffee'].triggered.connect(
65
+ lambda: self.window.controller.dialogs.info.donate('coffee'))
66
+ self.window.ui.menu['donate.paypal'].triggered.connect(
67
+ lambda: self.window.controller.dialogs.info.donate('paypal'))
68
+ self.window.ui.menu['donate.github'].triggered.connect(
69
+ lambda: self.window.controller.dialogs.info.donate('github'))
70
+
57
71
  self.window.ui.menu['info.about'].triggered.connect(
58
72
  lambda: self.window.controller.dialogs.info.toggle('about'))
59
73
  self.window.ui.menu['info.changelog'].triggered.connect(
@@ -96,3 +110,8 @@ class About:
96
110
  self.window.ui.menu['menu.about'].addAction(self.window.ui.menu['info.ms_store'])
97
111
  self.window.ui.menu['menu.about'].addAction(self.window.ui.menu['info.discord'])
98
112
  self.window.ui.menu['menu.about'].addAction(self.window.ui.menu['info.license'])
113
+
114
+ self.window.ui.menu['menu.donate'] = self.window.ui.menu['menu.about'].addMenu(trans("menu.info.donate"))
115
+ self.window.ui.menu['menu.donate'].addAction(self.window.ui.menu['donate.coffee'])
116
+ self.window.ui.menu['menu.donate'].addAction(self.window.ui.menu['donate.paypal'])
117
+ self.window.ui.menu['menu.donate'].addAction(self.window.ui.menu['donate.github'])
pygpt_net/ui/menu/menu.py CHANGED
@@ -13,7 +13,6 @@ from .about import About
13
13
  from .audio import Audio
14
14
  from .config import Config
15
15
  from .debug import Debug
16
- from .donate import Donate
17
16
  from .file import File
18
17
  from .lang import Lang
19
18
  from .plugins import Plugins
@@ -34,7 +33,6 @@ class Menu:
34
33
  self.audio = Audio(window)
35
34
  self.config = Config(window)
36
35
  self.debug = Debug(window)
37
- self.donate = Donate(window)
38
36
  self.file = File(window)
39
37
  self.lang = Lang(window)
40
38
  self.plugins = Plugins(window)
@@ -61,5 +59,3 @@ class Menu:
61
59
  show = self.window.core.config.get('debug')
62
60
  self.debug.setup()
63
61
  self.window.ui.menu['menu.debug'].menuAction().setVisible(show)
64
-
65
- self.donate.setup()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pygpt-net
3
- Version: 2.6.6
3
+ Version: 2.6.8
4
4
  Summary: Desktop AI Assistant powered by: OpenAI GPT-5, o1, o3, GPT-4, Gemini, Claude, Grok, DeepSeek, and other models supported by Llama Index, and Ollama. Chatbot, agents, completion, image generation, vision analysis, speech-to-text, plugins, internet access, file handling, command execution and more.
5
5
  License: MIT
6
6
  Keywords: py_gpt,py-gpt,pygpt,desktop,app,o1,o3,gpt-5,gpt,gpt4,gpt-4o,gpt-4v,gpt3.5,gpt-4,gpt-4-vision,gpt-3.5,llama3,mistral,gemini,grok,deepseek,bielik,claude,tts,whisper,vision,chatgpt,dall-e,chat,chatbot,assistant,text completion,image generation,ai,api,openai,api key,langchain,llama-index,ollama,presets,ui,qt,pyside
@@ -108,7 +108,7 @@ Description-Content-Type: text/markdown
108
108
 
109
109
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
110
110
 
111
- Release: **2.6.6** | build: **2025-08-16** | Python: **>=3.10, <3.14**
111
+ Release: **2.6.8** | build: **2025-08-16** | Python: **>=3.10, <3.14**
112
112
 
113
113
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
114
114
  >
@@ -4514,6 +4514,17 @@ may consume additional tokens that are not displayed in the main window.
4514
4514
 
4515
4515
  ## Recent changes:
4516
4516
 
4517
+ **2.6.8 (2025-08-16)**
4518
+
4519
+ - Fixed: updated paragraph color on theme switch.
4520
+ - Added switching to duplicated preset after creation.
4521
+ - Reduced delay after selecting context.
4522
+ - Optimized rendering of mathematical formulas.
4523
+
4524
+ **2.6.7 (2025-08-16)**
4525
+
4526
+ - Fix: missing entity sanitize.
4527
+
4517
4528
  **2.6.6 (2025-08-16)**
4518
4529
 
4519
4530
  - Output rendering optimization.
@@ -1,7 +1,7 @@
1
- pygpt_net/CHANGELOG.txt,sha256=MhuUvGqy0keKHP9ozb0RoS1d0ZCQiN_7C9MQMQixL8s,98725
1
+ pygpt_net/CHANGELOG.txt,sha256=b2F1vAbO75sqXz72pIk5Aq7EtFcNuZWNMny-Ds5VUfw,98993
2
2
  pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
3
- pygpt_net/__init__.py,sha256=Bb92abbrZLqEw9Y_0135vgkY99rEFq3KxrJT9w_Faq8,1372
4
- pygpt_net/app.py,sha256=H0bDAM1kNQswEPnMRgbxJ_wa5KF1LIG-eLwAhXzdNxI,20675
3
+ pygpt_net/__init__.py,sha256=50wp_dosrptf_Pbg1lYb0EcWQMSm0d2oNFjS-hW4RW8,1372
4
+ pygpt_net/app.py,sha256=W1zjJBIEfzrrp5L5Dxk5Z5n2U0zJjjKcevxAuU_ETAs,20503
5
5
  pygpt_net/config.py,sha256=P-D-vRWwq77moEMveMNyUImH8hG3PXpxqBsWyriEGzs,16731
6
6
  pygpt_net/container.py,sha256=NsMSHURaEC_eW8vrCNdztwqkxB7jui3yVlzUOMYvCHg,4124
7
7
  pygpt_net/controller/__init__.py,sha256=FiAP-Md0a57HSH1sSFflB4aq6Jho9M1lejk9VJxM8is,5969
@@ -62,7 +62,7 @@ pygpt_net/controller/config/field/textarea.py,sha256=Ln545IHzXBeFIjnfMIpmlUr-V3w
62
62
  pygpt_net/controller/config/placeholder.py,sha256=Q4csMg6q1xpV5Yz8jb2eh33lqdvqE5AAUg7L9ProRRY,16030
63
63
  pygpt_net/controller/ctx/__init__.py,sha256=0wH7ziC75WscBW8cxpeGBwEz5tolo_kCxGPoz2udI_E,507
64
64
  pygpt_net/controller/ctx/common.py,sha256=7F6xuCr-LIs909oTVYd9z_iZnsC69i7KFKbDMurg1oI,6491
65
- pygpt_net/controller/ctx/ctx.py,sha256=tBeXYhBfFmladlvy4Q2S0j_Y3CU4QkgqSjyXMyS4ltk,35677
65
+ pygpt_net/controller/ctx/ctx.py,sha256=HvIN6Y7HJqK8O-yed2o_zZBL-ULSDu0aQUuREL9L48k,35674
66
66
  pygpt_net/controller/ctx/extra.py,sha256=WApWjnIfl3SoI0VZVbptvjjqhFPJl-dSfqW12tlBHrY,8599
67
67
  pygpt_net/controller/ctx/summarizer.py,sha256=dO-LqIclwI7gIot1yjNo9eZ0HxakWCSoqePORgCLOk8,3072
68
68
  pygpt_net/controller/debug/__init__.py,sha256=dOJGTICjvTtrPIEDOsxCzcOHsfu8AFPLpSKbdN0q0KI,509
@@ -114,7 +114,7 @@ pygpt_net/controller/plugins/settings.py,sha256=pa0iJvpb1SXWD8hqYoC_BuSogx2-5u6n
114
114
  pygpt_net/controller/presets/__init__.py,sha256=Bb9_aAvGxQcKCW2fvG5CAJ6ZUwNYN3GaCf3BXB9eGfI,511
115
115
  pygpt_net/controller/presets/editor.py,sha256=NJypX8a4QAZ_S1YuLHk5YKfKl0QASZ4xcJnSVK2VLHQ,39468
116
116
  pygpt_net/controller/presets/experts.py,sha256=dfPKmAPO-7gaUD2ILs3lR005ir32G5vV-Sa5TGEHwOU,5820
117
- pygpt_net/controller/presets/presets.py,sha256=P24KyNyGHQBHCCptsNPc8xtEBVmDGJAk0m6-4kWqWWY,21854
117
+ pygpt_net/controller/presets/presets.py,sha256=Tq9AIgr042ALu6hEQunBxnUZTzLdzmp4IStWprzmyjg,21918
118
118
  pygpt_net/controller/settings/__init__.py,sha256=hn5n_Hti6byJQdQCs4Ld2EbPoZF7dHVMwqaBPscePQ8,512
119
119
  pygpt_net/controller/settings/editor.py,sha256=vpXhDDrr8Jn5-dn2KXMbjlu-Dawrq9s7TdEYaAdq-fE,18772
120
120
  pygpt_net/controller/settings/profile.py,sha256=Zom4qT2j71lZadB2nbJvn5Ewoek8jdf5fc9HERwUZtE,20049
@@ -303,7 +303,7 @@ pygpt_net/core/render/plain/helpers.py,sha256=CMF84kSeuQnkgZVHmN_9YWaL5BC958tDE9
303
303
  pygpt_net/core/render/plain/pid.py,sha256=Pz3v1tnLj-XI_9vcaVkCf9SZ2EgVs4LYV4qzelBMoOg,1119
304
304
  pygpt_net/core/render/plain/renderer.py,sha256=Cm-HXHd5Mc6LAiDW5qNXOyZoLKlUo16I_cU-B2cGnYM,15595
305
305
  pygpt_net/core/render/web/__init__.py,sha256=istp5dsn6EkLEP7lOBeDb8RjodUcWZqjcEvTroaTT-w,489
306
- pygpt_net/core/render/web/body.py,sha256=1dXAXu8MJzPuyFG5peS18W-jKbZ7ozxwck7pK-tsLbU,55945
306
+ pygpt_net/core/render/web/body.py,sha256=81A6hRtnq5gl4PJBeBxEKbeCSyuSrHUZy-y1WivodqY,55979
307
307
  pygpt_net/core/render/web/helpers.py,sha256=ivrXrCqRIUWHDmu3INu-i6XUlB2W9IOO8iYyqpbnSRU,5438
308
308
  pygpt_net/core/render/web/parser.py,sha256=2ATdydXNDIgf4Jq44m1kvd7Vr4mW_FopovrYbwfv7rc,12740
309
309
  pygpt_net/core/render/web/pid.py,sha256=EOp8hUJMFXNgZs8Kl5Qt8fz3Rslj6meK8Yn9aDmUrdM,3092
@@ -343,8 +343,8 @@ pygpt_net/css_rc.py,sha256=i13kX7irhbYCWZ5yJbcMmnkFp_UfS4PYnvRFSPF7XXo,11349
343
343
  pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
344
344
  pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
345
345
  pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
346
- pygpt_net/data/config/config.json,sha256=bJ-HMngrPQZiUPqA_USkXVKSzlwQCFazjNQlPJEwcSM,24887
347
- pygpt_net/data/config/models.json,sha256=M8YB8xq5quuE_iaA4KXxFp2opa2kZDM6Pmp27ZKzpz0,109648
346
+ pygpt_net/data/config/config.json,sha256=9kUaXJQnXcU41gF1vqHOQfqCqu_FFEtkfF6yOhVgn4Y,24887
347
+ pygpt_net/data/config/models.json,sha256=iH5RC1yK0JOrm6P_m8bAwfKQQP-w4QMhNoi9Gky8pJM,109648
348
348
  pygpt_net/data/config/modes.json,sha256=M882iiqX_R2sNQl9cqZ3k-uneEvO9wpARtHRMLx_LHw,2265
349
349
  pygpt_net/data/config/presets/agent_code_act.json,sha256=GYHqhxtKFLUCvRI3IJAJ7Qe1k8yD9wGGNwManldWzlI,754
350
350
  pygpt_net/data/config/presets/agent_openai.json,sha256=vMTR-soRBiEZrpJJHuFLWyx8a3Ez_BqtqjyXgxCAM_Q,733
@@ -386,16 +386,16 @@ pygpt_net/data/css/markdown.css,sha256=yaoJPogZZ_ghbqP8vTXTycwVyD61Ik5_033NpzuUz
386
386
  pygpt_net/data/css/markdown.dark.css,sha256=ixAwuT69QLesZttKhO4RAy-QukplZwwfXCZsWLN9TP4,730
387
387
  pygpt_net/data/css/markdown.light.css,sha256=UZdv0jtuFgJ_4bYWsDaDQ4X4AP9tVNLUHBAckC_oD8k,833
388
388
  pygpt_net/data/css/style.css,sha256=dgVlVqEL38zF-4Ok-y1rwfALC8zETJAIuIbkwat_hTk,337
389
- pygpt_net/data/css/style.dark.css,sha256=3gF_AZlCMtbk53Xc7VgkxTHb510gJz7DHFxjdr9g6fE,2277
390
- pygpt_net/data/css/style.light.css,sha256=BkWq1TYUHfjnsN00ryVTXYo5oS9cmDfznbNkGFKo268,4838
389
+ pygpt_net/data/css/style.dark.css,sha256=Uzgr_KomVwwRVvFoJY4duLymLv7aBYRW_SBRrzHqUMw,2339
390
+ pygpt_net/data/css/style.light.css,sha256=g8tWOpjPgm6PBi1XyQoXQqi5-txDBzDkD9EEggw6T_A,4924
391
391
  pygpt_net/data/css/web-blocks.css,sha256=hI2G0a7J6fsoiQUq8k9w_n0mBEIkoPCxC2H6x_eB4EU,7345
392
392
  pygpt_net/data/css/web-blocks.dark.css,sha256=9YLFgNGAqhIeeVBoK1LzLIaLlphgpAEUuMBjw-Dw6Wk,1453
393
393
  pygpt_net/data/css/web-blocks.light.css,sha256=16DMT58e5I5Rj41H5yQHfukPsZJItrNtkSrHQ5nFuoo,1529
394
394
  pygpt_net/data/css/web-chatgpt.css,sha256=k7kCJ-RCRimk5I_CUPhIOA4_RC4U2VwyMhlowsibTEg,7846
395
- pygpt_net/data/css/web-chatgpt.dark.css,sha256=gkY2F2ocq65UrBRpbq2aKrtjDDgW1F2K2-cgO7av784,1281
395
+ pygpt_net/data/css/web-chatgpt.dark.css,sha256=H8CtcPM0utsKqjNBdUCd2BQZmcRi_0RqiZBTHaJaGQk,1307
396
396
  pygpt_net/data/css/web-chatgpt.light.css,sha256=wpJn_SAVRFhpGalE0_3w4PdftnxwAWGPUiaYv2xvmlg,1387
397
397
  pygpt_net/data/css/web-chatgpt_wide.css,sha256=qU8TkohtZCwb2FC4S1AoqFi99_NBc4_gW5wdW3RD9Aw,7729
398
- pygpt_net/data/css/web-chatgpt_wide.dark.css,sha256=gkY2F2ocq65UrBRpbq2aKrtjDDgW1F2K2-cgO7av784,1281
398
+ pygpt_net/data/css/web-chatgpt_wide.dark.css,sha256=H8CtcPM0utsKqjNBdUCd2BQZmcRi_0RqiZBTHaJaGQk,1307
399
399
  pygpt_net/data/css/web-chatgpt_wide.light.css,sha256=wpJn_SAVRFhpGalE0_3w4PdftnxwAWGPUiaYv2xvmlg,1387
400
400
  pygpt_net/data/fonts/Lato/Lato-Black.ttf,sha256=iUTaWoYezgAYX6Fz6mUyTn1Hl6qGPG-g8D4GaAWXS2w,69484
401
401
  pygpt_net/data/fonts/Lato/Lato-BlackItalic.ttf,sha256=G7asNGubFS-gk9VAMO_NBz4o5R7AB8-3bCAflv103mc,71948
@@ -2025,7 +2025,7 @@ pygpt_net/provider/core/calendar/db_sqlite/storage.py,sha256=QDclQCQdr4QyRIqjgGX
2025
2025
  pygpt_net/provider/core/config/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
2026
2026
  pygpt_net/provider/core/config/base.py,sha256=cbvzbMNqL2XgC-36gGubnU37t94AX7LEw0lecb2Nm80,1365
2027
2027
  pygpt_net/provider/core/config/json_file.py,sha256=GCcpCRQnBiSLWwlGbG9T3ZgiHkTfp5Jsg2KYkZcakBw,6789
2028
- pygpt_net/provider/core/config/patch.py,sha256=6-imYlLAiDlZGieOWiiVEqa1ocWOzHmdBqKEmPyL8HE,118941
2028
+ pygpt_net/provider/core/config/patch.py,sha256=ylMm-WtTAPjcSVNGYVi_ELcObfNHo_KO-1aqsLszAJU,119646
2029
2029
  pygpt_net/provider/core/ctx/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
2030
2030
  pygpt_net/provider/core/ctx/base.py,sha256=Tfb4MDNe9BXXPU3lbzpdYwJF9S1oa2-mzgu5XT4It9g,3003
2031
2031
  pygpt_net/provider/core/ctx/db_sqlite/__init__.py,sha256=0dP8VhI4bnFsQQKxAkaleKFlyaMycDD_cnE7gBCa57Y,512
@@ -2309,14 +2309,13 @@ pygpt_net/ui/layout/toolbox/toolbox.py,sha256=zEZr_XDz9QbPKL0u0KMSt1b8yOG-ao1gmZ
2309
2309
  pygpt_net/ui/layout/toolbox/vision.py,sha256=GZY-N2z8re1LN1ntsy-3Ius8OY4DujmJpyJ1qP2ZRxs,2447
2310
2310
  pygpt_net/ui/main.py,sha256=ObCj3nMmjzDEWgNSdh0Dwn8BocEjmuSl-AALDQr2g8I,13783
2311
2311
  pygpt_net/ui/menu/__init__.py,sha256=wAIKG9wLWfYv6tpXCTXptWb_XKoCc-4lYWLDvV1bVYk,508
2312
- pygpt_net/ui/menu/about.py,sha256=bs0iGge52THU72oyu98QBxvh5iKA9APQIStRKQT5IQc,5891
2312
+ pygpt_net/ui/menu/about.py,sha256=Y5Ok96MVsFPekvL4dPYK01QPGUUbZvfAsZztcxQhXh8,7232
2313
2313
  pygpt_net/ui/menu/audio.py,sha256=Sb8NTAyMnPj4johTvBKwocHzq67XypIdw7K7hjf2760,3494
2314
2314
  pygpt_net/ui/menu/config.py,sha256=Yf1hNfruBozWtkCzHAtHlQPepJEAcFa-I15Tv3WQaMg,9026
2315
2315
  pygpt_net/ui/menu/debug.py,sha256=umXmXVUyKvmIjZBMqD1luAykX62HSj7QCponycwHqIY,6779
2316
- pygpt_net/ui/menu/donate.py,sha256=5jpmnl31N-3yy79juL289E-9uEuEv7E0_8uHq7R77aw,2136
2317
2316
  pygpt_net/ui/menu/file.py,sha256=gi4XIMs3l2-9sc5Vl6L9t_le9YP-UUVDIBr1tAREEOE,3360
2318
2317
  pygpt_net/ui/menu/lang.py,sha256=99dSS3mM4KIftgXgsgZoq2bJ_DnmgqA7z7cP49kICP4,897
2319
- pygpt_net/ui/menu/menu.py,sha256=hGxe2_tp3-hDGm2EjjMwBc69zmK3cr664LoV3cm2vGk,1877
2318
+ pygpt_net/ui/menu/menu.py,sha256=MPT0fb5LI3nIOpXI0rjCgAeSOmuTRPlaIXPyiBoIukA,1784
2320
2319
  pygpt_net/ui/menu/plugins.py,sha256=z0cUg_S5dY1T4oZH3Vv0Dxx0rOuHVaiprPZj2FfBzD0,2880
2321
2320
  pygpt_net/ui/menu/theme.py,sha256=HVqFp39QaeGdTqvDjL5mLJfI8GS0YACbQh23lwPyrPc,3709
2322
2321
  pygpt_net/ui/menu/tools.py,sha256=YhxTI4uyDob1oCIowJQbakOjqOEVYt4mNpsRdSuCEvE,4349
@@ -2433,8 +2432,8 @@ pygpt_net/ui/widget/textarea/web.py,sha256=6Kt9IUkjx3rhWBmH3xdnmX1X-ACUMYnfHnRN0
2433
2432
  pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
2434
2433
  pygpt_net/ui/widget/vision/camera.py,sha256=T8b5cmK6uhf_WSSxzPt_Qod8JgMnst6q8sQqRvgQiSA,2584
2435
2434
  pygpt_net/utils.py,sha256=YL0czRa1v6ilKNszAI9NyaE9Lgz6HiUGpNFAYQ9Wj8s,8835
2436
- pygpt_net-2.6.6.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2437
- pygpt_net-2.6.6.dist-info/METADATA,sha256=jYMsG6fDG0wpehBYdg1AhRRSaqkP8JAqlSRMgSe2srk,186575
2438
- pygpt_net-2.6.6.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2439
- pygpt_net-2.6.6.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2440
- pygpt_net-2.6.6.dist-info/RECORD,,
2435
+ pygpt_net-2.6.8.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2436
+ pygpt_net-2.6.8.dist-info/METADATA,sha256=ZwRQepmMsnTcvXwW9T5M9raLnm_IoTTeENn8kr4gw0M,186851
2437
+ pygpt_net-2.6.8.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2438
+ pygpt_net-2.6.8.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2439
+ pygpt_net-2.6.8.dist-info/RECORD,,
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- # ================================================== #
4
- # This file is a part of PYGPT package #
5
- # Website: https://pygpt.net #
6
- # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
- # MIT License #
8
- # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.01.16 01:00:00 #
10
- # ================================================== #
11
-
12
- from PySide6.QtGui import QAction, QIcon
13
-
14
- from pygpt_net.utils import trans
15
- import pygpt_net.icons_rc
16
-
17
-
18
- class Donate:
19
- def __init__(self, window=None):
20
- """
21
- Menu setup
22
-
23
- :param window: Window instance
24
- """
25
- self.window = window
26
-
27
- def setup(self):
28
- """Setup donate menu"""
29
- self.window.ui.menu['donate.coffee'] = QAction(QIcon(":/icons/favorite.svg"), "Buy me a coffee",
30
- self.window)
31
- self.window.ui.menu['donate.coffee'].setMenuRole(QAction.MenuRole.NoRole)
32
- self.window.ui.menu['donate.paypal'] = QAction(QIcon(":/icons/favorite.svg"), "PayPal",
33
- self.window)
34
- self.window.ui.menu['donate.github'] = QAction(QIcon(":/icons/favorite.svg"), "GitHub Sponsors", self.window)
35
-
36
- self.window.ui.menu['donate.coffee'].triggered.connect(
37
- lambda: self.window.controller.dialogs.info.donate('coffee'))
38
- self.window.ui.menu['donate.paypal'].triggered.connect(
39
- lambda: self.window.controller.dialogs.info.donate('paypal'))
40
- self.window.ui.menu['donate.github'].triggered.connect(
41
- lambda: self.window.controller.dialogs.info.donate('github'))
42
-
43
- self.window.ui.menu['menu.donate'] = self.window.menuBar().addMenu(trans("menu.info.donate"))
44
- self.window.ui.menu['menu.donate'].addAction(self.window.ui.menu['donate.coffee'])
45
- self.window.ui.menu['menu.donate'].addAction(self.window.ui.menu['donate.paypal'])
46
- self.window.ui.menu['menu.donate'].addAction(self.window.ui.menu['donate.github'])