pygpt-net 2.6.47__py3-none-any.whl → 2.6.49__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 (35) hide show
  1. pygpt_net/CHANGELOG.txt +8 -0
  2. pygpt_net/__init__.py +3 -3
  3. pygpt_net/app_core.py +39 -39
  4. pygpt_net/controller/__init__.py +72 -62
  5. pygpt_net/controller/ctx/common.py +0 -7
  6. pygpt_net/controller/ctx/ctx.py +176 -8
  7. pygpt_net/controller/ctx/extra.py +3 -3
  8. pygpt_net/controller/settings/editor.py +3 -1
  9. pygpt_net/controller/theme/common.py +8 -2
  10. pygpt_net/controller/ui/tabs.py +10 -43
  11. pygpt_net/core/ctx/ctx.py +79 -26
  12. pygpt_net/core/render/web/renderer.py +4 -10
  13. pygpt_net/core/tabs/tabs.py +50 -11
  14. pygpt_net/data/config/config.json +3 -3
  15. pygpt_net/data/config/models.json +3 -3
  16. pygpt_net/data/css/web-blocks.css +256 -270
  17. pygpt_net/data/css/web-chatgpt.css +276 -301
  18. pygpt_net/data/css/web-chatgpt_wide.css +286 -294
  19. pygpt_net/provider/core/config/patch.py +9 -0
  20. pygpt_net/provider/core/ctx/db_sqlite/storage.py +19 -5
  21. pygpt_net/tools/code_interpreter/ui/html.py +176 -31
  22. pygpt_net/tools/code_interpreter/ui/widgets.py +1 -4
  23. pygpt_net/tools/html_canvas/ui/widgets.py +2 -5
  24. pygpt_net/ui/__init__.py +9 -14
  25. pygpt_net/ui/layout/chat/chat.py +2 -2
  26. pygpt_net/ui/layout/ctx/ctx_list.py +71 -1
  27. pygpt_net/ui/widget/lists/base.py +32 -1
  28. pygpt_net/ui/widget/lists/context.py +45 -2
  29. pygpt_net/ui/widget/tabs/body.py +23 -1
  30. pygpt_net/ui/widget/textarea/web.py +85 -45
  31. {pygpt_net-2.6.47.dist-info → pygpt_net-2.6.49.dist-info}/METADATA +10 -2
  32. {pygpt_net-2.6.47.dist-info → pygpt_net-2.6.49.dist-info}/RECORD +35 -35
  33. {pygpt_net-2.6.47.dist-info → pygpt_net-2.6.49.dist-info}/LICENSE +0 -0
  34. {pygpt_net-2.6.47.dist-info → pygpt_net-2.6.49.dist-info}/WHEEL +0 -0
  35. {pygpt_net-2.6.47.dist-info → pygpt_net-2.6.49.dist-info}/entry_points.txt +0 -0
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.09.12 23:47:47 #
9
+ # Updated Date: 2025.09.15 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import datetime
@@ -17,7 +17,7 @@ from PySide6.QtCore import Qt, QPoint, QItemSelectionModel
17
17
  from PySide6.QtGui import QIcon, QColor, QPixmap, QStandardItem
18
18
  from PySide6.QtWidgets import QMenu
19
19
 
20
- from pygpt_net.ui.widget.lists.base import BaseList
20
+ from .base import BaseList
21
21
  from pygpt_net.utils import trans
22
22
 
23
23
 
@@ -67,6 +67,30 @@ class ContextList(BaseList):
67
67
  # Safe no-op if the underlying view does not support setIndentation
68
68
  pass
69
69
 
70
+ self._loading_more = False # guard to avoid multiple triggers while updating
71
+ try:
72
+ self.verticalScrollBar().valueChanged.connect(self._on_vertical_scroll)
73
+ except Exception:
74
+ pass # safe no-op if view doesn't expose verticalScrollBar
75
+
76
+ def _on_vertical_scroll(self, value: int):
77
+ """
78
+ Trigger infinite scroll: when scrollbar reaches bottom, request the next page.
79
+ """
80
+ try:
81
+ sb = self.verticalScrollBar()
82
+ except Exception:
83
+ return
84
+ if sb.maximum() <= 0:
85
+ return # nothing to scroll
86
+ # Close-to-bottom detection; keep a tiny threshold for stability
87
+ if not self._loading_more and value >= sb.maximum():
88
+ self._loading_more = True
89
+ # Ask controller to increase the total limit and refresh the list
90
+ self.window.controller.ctx.load_more()
91
+ # Release the guard shortly after model updates
92
+ QtCore.QTimer.singleShot(250, lambda: setattr(self, "_loading_more", False))
93
+
70
94
  @property
71
95
  def _model(self):
72
96
  return self.window.ui.models['ctx.list']
@@ -292,6 +316,25 @@ class ContextList(BaseList):
292
316
  self.restore_after_ctx_menu = True
293
317
  self.restore_scroll_position()
294
318
 
319
+ def get_visible_unpaged_ids(self) -> set:
320
+ """
321
+ Return a set of IDs for currently visible, ungrouped and not pinned items (top-level only).
322
+ """
323
+ ids = set()
324
+ model = self._model
325
+ for r in range(model.rowCount()):
326
+ it = model.item(r)
327
+ # skip groups and date sections
328
+ if isinstance(it, GroupItem) or isinstance(it, SectionItem):
329
+ continue
330
+ if isinstance(it, Item):
331
+ data = it.data(QtCore.Qt.ItemDataRole.UserRole) or {}
332
+ in_group = bool(data.get("in_group", False))
333
+ is_important = bool(data.get("is_important", False))
334
+ if not in_group and not is_important and hasattr(it, "id"):
335
+ ids.add(int(it.id))
336
+ return ids
337
+
295
338
  def action_open(self, id: int, idx: int = None):
296
339
  """
297
340
  Open context action handler
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.09.14 20:00:00 #
9
+ # Updated Date: 2025.09.16 02:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from typing import Any
@@ -35,6 +35,28 @@ class TabBody(QTabWidget):
35
35
  self.on_delete(self)
36
36
  self.delete_refs()
37
37
 
38
+ def remove_widget(self, widget: QWidget) -> None:
39
+ """
40
+ Remove widget from tab body
41
+
42
+ :param widget: widget to remove
43
+ """
44
+ layout = self.layout()
45
+ if layout is not None:
46
+ layout.removeWidget(widget)
47
+ self.delete_ref(widget)
48
+
49
+ def remove_all_widgets(self) -> None:
50
+ """
51
+ Remove all widgets from tab body
52
+ """
53
+ layout = self.layout()
54
+ if layout is not None:
55
+ while layout.count():
56
+ item = layout.takeAt(0)
57
+ widget = item.widget()
58
+ layout.removeWidget(widget)
59
+
38
60
  def add_ref(self, ref: Any) -> None:
39
61
  """
40
62
  Add reference to widget in this tab
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.09.11 08:00:00 #
9
+ # Updated Date: 2025.09.16 02:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from PySide6.QtCore import Qt, QObject, Signal, Slot, QEvent, QUrl, QCoreApplication, QEventLoop
@@ -22,6 +22,7 @@ from pygpt_net.core.text.web_finder import WebFinder
22
22
  from pygpt_net.ui.widget.tabs.layout import FocusEventFilter
23
23
  from pygpt_net.utils import trans
24
24
 
25
+
25
26
  class ChatWebOutput(QWebEngineView):
26
27
  def __init__(self, window=None):
27
28
  """
@@ -47,113 +48,153 @@ class ChatWebOutput(QWebEngineView):
47
48
  # OpenGL widgets
48
49
  self._glwidget = None
49
50
  self._glwidget_filter_installed = False
51
+ self._unloaded = False
52
+ self._destroyed = False
50
53
 
51
54
  # set the page with a shared profile
52
55
  self.setUpdatesEnabled(False) # disable updates until the page is set, re-enable in `on_page_loaded`
53
56
 
54
- self._profile = QWebEngineProfile(self)
57
+ # self._profile = self._make_profile(self)
58
+ self.setPage(CustomWebEnginePage(self.window, self, profile=None))
59
+
60
+ def _make_profile(self, parent=None) -> QWebEngineProfile:
61
+ """Make profile"""
62
+ profile = QWebEngineProfile(parent)
55
63
  # self._profile.setHttpCacheType(QWebEngineProfile.MemoryHttpCache)
56
64
  # self._profile.setHttpCacheMaximumSize(32 * 1024 * 1024) # 32MB
57
- self._profile.setPersistentCookiesPolicy(QWebEngineProfile.NoPersistentCookies)
65
+ profile.setPersistentCookiesPolicy(QWebEngineProfile.NoPersistentCookies)
58
66
  # self._profile.setHttpCacheType(QWebEngineProfile.NoCache)
59
- self._profile.setSpellCheckEnabled(False)
60
- # self._profile.setOffTheRecord(True)
61
- self.setPage(CustomWebEnginePage(self.window, self, profile=self._profile))
67
+ profile.setSpellCheckEnabled(False)
68
+ return profile
69
+
62
70
 
63
71
  def _detach_gl_event_filter(self):
64
72
  """Detach OpenGL widget event filter if installed"""
65
73
  if self._glwidget and self._glwidget_filter_installed:
66
74
  try:
67
75
  self._glwidget.removeEventFilter(self)
68
- except Exception:
69
- pass
76
+ except Exception as e:
77
+ self._on_delete_failed(e)
70
78
  self._glwidget = None
71
79
  self._glwidget_filter_installed = False
72
80
 
81
+ def _on_delete_failed(self, e):
82
+ """
83
+ Handle delete failure
84
+
85
+ :param e: Exception instance
86
+ """
87
+ pass
88
+ # self.window.core.debug.log(e)
89
+
90
+ def unload(self):
91
+ """Unload the current page and free resources"""
92
+ try:
93
+ self.hide()
94
+ p = self.page()
95
+ p.triggerAction(QWebEnginePage.Stop)
96
+ p.setUrl(QUrl("about:blank"))
97
+ p.history().clear()
98
+ p.setLifecycleState(QWebEnginePage.LifecycleState.Discarded)
99
+ except Exception as e:
100
+ self._on_delete_failed(e)
101
+ finally:
102
+ self._unloaded = True
103
+
73
104
  def on_delete(self):
74
105
  """Clean up on delete"""
106
+ if self._destroyed:
107
+ return
108
+ if not self._unloaded:
109
+ self.unload()
110
+
75
111
  self.hide()
76
112
  self._detach_gl_event_filter()
77
-
113
+
78
114
  if self.finder:
79
115
  try:
80
116
  self.finder.disconnect()
81
- except Exception:
82
- pass
83
- self.finder = None
117
+ except Exception as e:
118
+ self._on_delete_failed(e)
119
+ finally:
120
+ self.finder = None
84
121
 
85
122
  self.tab = None
86
123
  self.meta = None
87
124
 
88
125
  # safely unhook signals (may not have been hooked)
89
126
  for sig, slot in (
90
- (self.loadFinished, self.on_page_loaded),
91
- (self.customContextMenuRequested, self.on_context_menu),
92
- (self.signals.save_as, getattr(self.window.controller.chat.render, "handle_save_as", None)),
93
- (self.signals.audio_read, getattr(self.window.controller.chat.render, "handle_audio_read", None)),
127
+ (self.loadFinished, self.on_page_loaded),
128
+ (self.customContextMenuRequested, self.on_context_menu),
129
+ (self.signals.save_as, getattr(self.window.controller.chat.render, "handle_save_as", None)),
130
+ (self.signals.audio_read, getattr(self.window.controller.chat.render, "handle_audio_read", None)),
94
131
  ):
95
132
  if slot:
96
133
  try:
97
134
  sig.disconnect(slot)
98
- except Exception:
99
- pass
135
+ except Exception as e:
136
+ self._on_delete_failed(e)
100
137
 
101
138
  page = self.page()
102
139
  page.set_loaded(False)
103
140
 
104
141
  try:
105
142
  page.triggerAction(QWebEnginePage.Stop)
106
- except Exception:
107
- pass
143
+ except Exception as e:
144
+ self._on_delete_failed(e)
145
+
108
146
  try:
109
147
  page.setUrl(QUrl("about:blank"))
110
- except Exception:
111
- pass
148
+ except Exception as e:
149
+ self._on_delete_failed(e)
150
+
112
151
  try:
113
152
  page.history().clear()
114
- except Exception:
115
- pass
153
+ except Exception as e:
154
+ self._on_delete_failed(e)
155
+
116
156
  try:
117
157
  page.setLifecycleState(QWebEnginePage.LifecycleState.Discarded)
118
- except Exception:
119
- pass
158
+ except Exception as e:
159
+ self._on_delete_failed(e)
160
+
120
161
  try:
121
162
  if hasattr(page, "setWebChannel"):
122
163
  page.setWebChannel(None)
123
- except Exception:
124
- pass
125
- try:
126
- self.disconnect()
127
- except Exception:
128
- pass
164
+ except Exception as e:
165
+ self._on_delete_failed(e)
129
166
 
130
167
  prof = None
131
168
  try:
132
169
  prof = page.profile()
133
- except Exception:
134
- pass
170
+ except Exception as e:
171
+ self._on_delete_failed(e)
135
172
 
136
173
  try:
137
174
  page.cleanup()
138
- except Exception:
139
- pass
175
+ except Exception as e:
176
+ self._on_delete_failed(e)
140
177
 
178
+ """
141
179
  if prof is not None:
142
180
  try:
143
181
  prof.deleteLater()
144
- except Exception:
145
- pass
182
+ except Exception as e:
183
+ self._on_delete_failed(e)
184
+ """
146
185
 
147
186
  try:
148
187
  self.deleteLater()
149
- except Exception:
150
- pass
188
+ except Exception as e:
189
+ self._on_delete_failed(e)
151
190
 
152
191
  try:
153
192
  QCoreApplication.sendPostedEvents(None, QEvent.DeferredDelete)
154
193
  QCoreApplication.processEvents(QEventLoop.AllEvents, 50)
155
- except Exception:
156
- pass
194
+ except Exception as e:
195
+ self._on_delete_failed(e)
196
+
197
+ self._destroyed = True
157
198
 
158
199
  def eventFilter(self, source, event):
159
200
  """
@@ -390,6 +431,7 @@ class ChatWebOutput(QWebEngineView):
390
431
 
391
432
  class CustomWebEnginePage(QWebEnginePage):
392
433
  """Custom WebEnginePage to handle web events"""
434
+
393
435
  def __init__(self, window, view, profile: QWebEngineProfile = None):
394
436
 
395
437
  # use the profile if provided, otherwise the default
@@ -495,12 +537,10 @@ class CustomWebEnginePage(QWebEnginePage):
495
537
  pass
496
538
  self.signals = None
497
539
 
498
- # delete the page object
499
- self.deleteLater()
500
-
501
540
 
502
541
  class Bridge(QObject):
503
542
  """Bridge between Python and JavaScript"""
543
+
504
544
  def __init__(self, window, parent=None):
505
545
  super(Bridge, self).__init__(parent)
506
546
  self.window = window
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pygpt-net
3
- Version: 2.6.47
3
+ Version: 2.6.49
4
4
  Summary: Desktop AI Assistant powered by: OpenAI GPT-5, GPT-4, o1, o3, 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: ai,api,api key,app,assistant,bielik,chat,chatbot,chatgpt,claude,dall-e,deepseek,desktop,gemini,gpt,gpt-3.5,gpt-4,gpt-4-vision,gpt-4o,gpt-5,gpt-oss,gpt3.5,gpt4,grok,langchain,llama-index,llama3,mistral,o1,o3,ollama,openai,presets,py-gpt,py_gpt,pygpt,pyside,qt,text completion,tts,ui,vision,whisper
@@ -118,7 +118,7 @@ Description-Content-Type: text/markdown
118
118
 
119
119
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
120
120
 
121
- Release: **2.6.47** | build: **2025-09-15** | Python: **>=3.10, <3.14**
121
+ Release: **2.6.49** | build: **2025-09-16** | Python: **>=3.10, <3.14**
122
122
 
123
123
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
124
124
  >
@@ -3612,6 +3612,14 @@ may consume additional tokens that are not displayed in the main window.
3612
3612
 
3613
3613
  ## Recent changes:
3614
3614
 
3615
+ **2.6.49 (2025-09-16)**
3616
+
3617
+ - Fixed: Occasional crashes when focusing on an output container unloaded from memory in the second column.
3618
+
3619
+ **2.6.48 (2025-09-15)**
3620
+
3621
+ - Added: auto-loading of next items to the list of contexts when scrolling to the end of the list.
3622
+
3615
3623
  **2.6.47 (2025-09-15)**
3616
3624
 
3617
3625
  - Improved: Parsing of custom markup tags.
@@ -1,10 +1,10 @@
1
- pygpt_net/CHANGELOG.txt,sha256=lNeDrd5P43P2vv7IdEbYYJtrqCWnEbDTXQ2owdzGQn4,106127
1
+ pygpt_net/CHANGELOG.txt,sha256=p65ExEC2HTbdlw2RFL75_4I2T5TAc2R0j4Pi4uNh2vc,106378
2
2
  pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
3
- pygpt_net/__init__.py,sha256=8E61EWWaPHjtNWP1iDuNpmvqyilyniVqZl2vgQCgD2U,1373
3
+ pygpt_net/__init__.py,sha256=vxaKvvX5rLWJ_cLCuVaUaVEvyJon-6Ja6Ga0CG4wb4k,1373
4
4
  pygpt_net/app.py,sha256=prS80WfKSu8U_Ox9oUdxgzgHgRB1nvQQAMFTNltiECY,21954
5
- pygpt_net/app_core.py,sha256=y7mHzH_sdUg2yoG_BKvMdJA6v5jCBSHhwcXqIZfxXs4,4169
5
+ pygpt_net/app_core.py,sha256=PwBOV9wZLtr-O6SxBiazABhYXMHH8kZ6OgbvSv2OiZA,3827
6
6
  pygpt_net/config.py,sha256=SCps_FfwdrynVAgpn37Ci1qTN8BFC05IGl9sYIi9e0w,16720
7
- pygpt_net/controller/__init__.py,sha256=hW7grzRBqMZhI57NygWq3Eg8rqTLz1Cb9hTAYQwYG6s,6379
7
+ pygpt_net/controller/__init__.py,sha256=_j2LRj4lYVXeP_JteINlOJwuBbxbOj3WP3v5bw1nDqE,6060
8
8
  pygpt_net/controller/access/__init__.py,sha256=_XZxGy5U93JGU49GbIB9E_I26_uRV_Zbz18lcp7u23A,510
9
9
  pygpt_net/controller/access/access.py,sha256=nPttwQf6RZHJAlXZ-3fnlcplwXxcJWp8ciq3FMsSssI,3974
10
10
  pygpt_net/controller/access/control.py,sha256=MhtgCBB2eIpr358qB5uzBkGX8EkT48u84dhZqyuXDss,17182
@@ -71,9 +71,9 @@ pygpt_net/controller/config/field/slider.py,sha256=dYbICd3ID-aLlc2a-bvFgWS4jceVz
71
71
  pygpt_net/controller/config/field/textarea.py,sha256=Ln545IHzXBeFIjnfMIpmlUr-V3wNYjw4qGiz4NYRw34,2796
72
72
  pygpt_net/controller/config/placeholder.py,sha256=-PWPNILPVkxMsY64aYnKTWvgUIvx7KA2Nwfd2LW_K30,16711
73
73
  pygpt_net/controller/ctx/__init__.py,sha256=0wH7ziC75WscBW8cxpeGBwEz5tolo_kCxGPoz2udI_E,507
74
- pygpt_net/controller/ctx/common.py,sha256=1jjRfEK1S4IqnzEGg1CIF-QqSN_83NLpaVtfB610NcM,6592
75
- pygpt_net/controller/ctx/ctx.py,sha256=i14sK7LbFHJQ_cvNI0X68vM1yBtSbp38a9NW-tLIlBw,39401
76
- pygpt_net/controller/ctx/extra.py,sha256=WApWjnIfl3SoI0VZVbptvjjqhFPJl-dSfqW12tlBHrY,8599
74
+ pygpt_net/controller/ctx/common.py,sha256=1oR7cUgVzO_asqiRln4L4vZaxXsssAPtGyAp-B0FUE4,6409
75
+ pygpt_net/controller/ctx/ctx.py,sha256=bjz0qCFRAoFpAR3EglV-Lo3yX-sRIo9I85i1sgzfaCs,46250
76
+ pygpt_net/controller/ctx/extra.py,sha256=0r-G6Tlm9WPDkLRmgPDlgyRr_XLfCJntnUGlYPJiXVw,8598
77
77
  pygpt_net/controller/ctx/summarizer.py,sha256=UNsq-JTARblGNT97uSMpZEVzdUuDJ8YA2j2dw9R2X3o,3079
78
78
  pygpt_net/controller/debug/__init__.py,sha256=dOJGTICjvTtrPIEDOsxCzcOHsfu8AFPLpSKbdN0q0KI,509
79
79
  pygpt_net/controller/debug/debug.py,sha256=Bn8DIGjlHJ_Nm2CtYDtn1IHbsqJsami8lgrw2CY9Rrs,8990
@@ -132,12 +132,12 @@ pygpt_net/controller/realtime/__init__.py,sha256=MhvJb5wBqcpX6uylof01qEDRdU3SepT
132
132
  pygpt_net/controller/realtime/manager.py,sha256=qtifO3sAtT1ROtRs9N_8t6A8_wgxOxxGl-PfLHzhdxY,1762
133
133
  pygpt_net/controller/realtime/realtime.py,sha256=VFeunTSdyD7dxh_5l1q6PnLrF-egQQdqxrYB-TOEBQg,10710
134
134
  pygpt_net/controller/settings/__init__.py,sha256=hn5n_Hti6byJQdQCs4Ld2EbPoZF7dHVMwqaBPscePQ8,512
135
- pygpt_net/controller/settings/editor.py,sha256=gmUXjLuRoa-l-xwrqkAzEie0EWjr6eawhBvfiKX-SJ8,18748
135
+ pygpt_net/controller/settings/editor.py,sha256=Qz0hlUPv0X4KHLKfs7Tyo3-Vv5x75mxAldpo3Jy4s2M,18900
136
136
  pygpt_net/controller/settings/profile.py,sha256=L9tEorMfT36aiWP9faE5jhyoU087R7u2ReOWCqXMYJc,18586
137
137
  pygpt_net/controller/settings/settings.py,sha256=cFA4ZKjcsu8uoapWMTllUUB9DvJXVBzbxLT6InRS4zU,7768
138
138
  pygpt_net/controller/settings/workdir.py,sha256=h1-S6xU4_naPvfOCOtonOUrSnPlhX3_y7km_oD43D0Y,22163
139
139
  pygpt_net/controller/theme/__init__.py,sha256=-HMDkTGRa7Q6_AGomkZPVyasIOgNCqeez0Ocw_z9gMc,509
140
- pygpt_net/controller/theme/common.py,sha256=J62AwAxycJ3KNF8fHt2EJYzvqW7l8zVfucpDAUykZ4s,7200
140
+ pygpt_net/controller/theme/common.py,sha256=-0wW231FH9RPAOfPQGgV4qWWchQGApoH9bv7dizFEvg,7392
141
141
  pygpt_net/controller/theme/markdown.py,sha256=ot4LQEDyavt1sb7-Tw3d9MXIlPMlF5MOHh-sS7e851U,6172
142
142
  pygpt_net/controller/theme/menu.py,sha256=17D8mW5i97D_nENKFM2EZ9KgR7RP0whiaYXLzHO2rb8,7452
143
143
  pygpt_net/controller/theme/nodes.py,sha256=RTaxLR2aXXDrVNIpS9585xbFQlqrGI3gAO7Jng8NUHs,4871
@@ -146,7 +146,7 @@ pygpt_net/controller/tools/__init__.py,sha256=ds63rOuwLEIe-SlY_sQkhWSdXS0lfVwseU
146
146
  pygpt_net/controller/tools/tools.py,sha256=bWxdwL3J2-WHBS3MBiKsS3kTW_rQI_nS9z8-8iKifKg,2920
147
147
  pygpt_net/controller/ui/__init__.py,sha256=cxfh2SYeEDATGAZpcYDqCxYfp4KReQ1CYehevSf89EU,507
148
148
  pygpt_net/controller/ui/mode.py,sha256=35J5TRCg33D-RP9epFsWD-ZO-jQ2O0Q41iuqrePC1zM,9107
149
- pygpt_net/controller/ui/tabs.py,sha256=x6j4MjZ7WJEuCSXFi9Yvx4yjXDLn6EtwM3Vr5F951Sk,30723
149
+ pygpt_net/controller/ui/tabs.py,sha256=Pih53K5G6hD3dWeCF_EWaG5VIF6-x1z1Vs1enmpA6q0,29190
150
150
  pygpt_net/controller/ui/ui.py,sha256=w6rxJ0bNk_43Hd0vZB0roxZo7h-AmISEhr8ZiqcBTgA,8496
151
151
  pygpt_net/controller/ui/vision.py,sha256=tnzllFV2-sYDHfrP12ATY6ZKi6FcGtQofrsoKF6UcCU,2407
152
152
  pygpt_net/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -223,7 +223,7 @@ pygpt_net/core/command/command.py,sha256=Ix8Y_T8Ayn2a86tZdVGcFJ5VEoSW2IkcU-_Aog5
223
223
  pygpt_net/core/ctx/__init__.py,sha256=hsqzIDxcwIIjF-7Zr5SkkhQV9LLmIYndQ_dohK20bg0,507
224
224
  pygpt_net/core/ctx/bag.py,sha256=j_10HBqkswdz5vW140SuGvJRf7E7J7hQyz6DCVe5D44,1570
225
225
  pygpt_net/core/ctx/container.py,sha256=5nlgM_8laH0igUASILD5zIiK3YhB-BA9pTKI0jVqHeQ,4938
226
- pygpt_net/core/ctx/ctx.py,sha256=vhHFTvEY-i2d2dHuLeRc2Jqav_dzJ1Beytp4w1GDqrg,41340
226
+ pygpt_net/core/ctx/ctx.py,sha256=nl-xYi8u6bmqRCX51wwd6bXcd2FaOH1pdaSVJcgH9kM,43530
227
227
  pygpt_net/core/ctx/idx.py,sha256=3Zi-48OWlU80si-Z7mVjnsc7TYATXK9g1dM0M5sXsV4,8167
228
228
  pygpt_net/core/ctx/output.py,sha256=ecb7tgU7C9Ip5ww16M-HejScN1Btp9IlPgzQyadOCls,8829
229
229
  pygpt_net/core/ctx/reply.py,sha256=nm-TzBoIDE9GrYyNjtIT7DvJVf8duAS2fVMeInHNEH4,2324
@@ -354,13 +354,13 @@ pygpt_net/core/render/web/debug.py,sha256=784RYXF6inn_bkRtYD1_FllQSyk67JmxKGWPiA
354
354
  pygpt_net/core/render/web/helpers.py,sha256=8-JkbEOOLoCEAkylJWr8yk3aIliQBMyqcatsyW99VWY,7340
355
355
  pygpt_net/core/render/web/parser.py,sha256=pDFc9Tf8P-jvrDilXyT1fukcQHbixHRJ9Dn9hF10Gko,12892
356
356
  pygpt_net/core/render/web/pid.py,sha256=F33x_OtrHL9BDMXx_JUbfo8-DOiN4vo1Tv4rrRVADTo,4343
357
- pygpt_net/core/render/web/renderer.py,sha256=fsdFr6jnO69KnKQVXHDkhshotI_wH0T4tpWQ0GNI4kg,69068
357
+ pygpt_net/core/render/web/renderer.py,sha256=baP3vaZHk21k_M6aIiMIaj7p-Bi3CtgmkR3L7EQ_MOE,68859
358
358
  pygpt_net/core/render/web/syntax_highlight.py,sha256=QSLGF5cJL_Xeqej7_TYwY_5C2w9enXV_cMEuaJ3C43U,2005
359
359
  pygpt_net/core/settings/__init__.py,sha256=GQ6_gJ2jf_Chm7ZuZLvkcvEh_sfMDVMBieeoJi2iPI4,512
360
360
  pygpt_net/core/settings/settings.py,sha256=Ix06y-gJ3q7NJDf55XAWBBYulBLpinBqzYqsytH_9mo,8686
361
361
  pygpt_net/core/tabs/__init__.py,sha256=reDufOWWDQsZwfvtnXrFQROEdl9nqoKI7S3bFA3D9As,508
362
362
  pygpt_net/core/tabs/tab.py,sha256=oUQEBWLmVEAp8ck7ur6BI9Ax98csQEHgKiAf1BnWjQk,6138
363
- pygpt_net/core/tabs/tabs.py,sha256=qppWQsyBDZTpi-D6SbPZaFOuEKzjrGn_dPLfilGvKFE,30796
363
+ pygpt_net/core/tabs/tabs.py,sha256=D18xA9dkQw2AhkA6Mbqmcc3-x9GHLA3mo1k2pSciwng,32359
364
364
  pygpt_net/core/text/__init__.py,sha256=6aEjrckL5kWVfyxpi5mVpSPB6XWV83e_30g_V5meL1M,19
365
365
  pygpt_net/core/text/finder.py,sha256=NBzYUE_Av3oZH8RlCrSe6EeLcHpfz79WJV_vSK0P1jI,6656
366
366
  pygpt_net/core/text/text.py,sha256=WyQdXx4TpBGgr3XU6AhPILvhaipB57S2XtIs8FYif84,3217
@@ -395,8 +395,8 @@ pygpt_net/css_rc.py,sha256=PX6g9z5BsD-DXISuR2oq3jHcjiKfcJ4HsgcHez6wGMc,27762
395
395
  pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
396
396
  pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
397
397
  pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
398
- pygpt_net/data/config/config.json,sha256=AdzmM9BDcupteG3VM4ZKvfqW2kTTw31f9xt5V5dqK4U,30845
399
- pygpt_net/data/config/models.json,sha256=4MoiIgfXZRrcDF_B5_Z_QakPPx9HwEo_6x3-D3VXxDg,118192
398
+ pygpt_net/data/config/config.json,sha256=H-h9zQr_rSrCy5MsXResKny8XtUDaUE3S98q4477h0Y,30845
399
+ pygpt_net/data/config/models.json,sha256=Jrqq-Jgyx730ZlXrdDASa5MN57BQYRkmEieBKrl_x_k,118192
400
400
  pygpt_net/data/config/modes.json,sha256=IpjLOm428_vs6Ma9U-YQTNKJNtZw-qyM1lwhh73xl1w,2111
401
401
  pygpt_net/data/config/presets/agent_code_act.json,sha256=GYHqhxtKFLUCvRI3IJAJ7Qe1k8yD9wGGNwManldWzlI,754
402
402
  pygpt_net/data/config/presets/agent_openai.json,sha256=bpDJgLRey_effQkzFRoOEGd4aHUrmzeODSDdNzrf62I,730
@@ -442,15 +442,15 @@ pygpt_net/data/css/markdown.light.css,sha256=UZdv0jtuFgJ_4bYWsDaDQ4X4AP9tVNLUHBA
442
442
  pygpt_net/data/css/style.css,sha256=dgVlVqEL38zF-4Ok-y1rwfALC8zETJAIuIbkwat_hTk,337
443
443
  pygpt_net/data/css/style.dark.css,sha256=_GxmvAJgBc_YnbKFBcSSr533EOyRh24TXfQ2rnu7Hsw,2441
444
444
  pygpt_net/data/css/style.light.css,sha256=qJumh5HSwzGiDPoYKcKz_-8cOvV8D9QM74PtxnHBOqE,4914
445
- pygpt_net/data/css/web-blocks.css,sha256=EOm_i4Xp3EDtWFlA_LqbcWs8zmlYv1l25TysLhS1rr4,7907
445
+ pygpt_net/data/css/web-blocks.css,sha256=naAJKmdLqFYaVey_urdbZ1rNCwUdVgbBMypUHxuQA5M,7420
446
446
  pygpt_net/data/css/web-blocks.dark.css,sha256=J4koULn9xZynOPsCM8zI0HwG0ChwwROaac00oOduqvA,1579
447
447
  pygpt_net/data/css/web-blocks.darkest.css,sha256=425pvVNX-HDMnPe-uarrK28kiEr4teudwwW8Qk8MtKI,1531
448
448
  pygpt_net/data/css/web-blocks.light.css,sha256=Sa6SLiVBA_ck6o2TXhXT7qAWZMWxwzKdaJZF7YH6kZk,1541
449
- pygpt_net/data/css/web-chatgpt.css,sha256=Z6BsysHRy98hvvWNdL2WBZOZakcJoK2PDYtNKGfeTC4,8475
449
+ pygpt_net/data/css/web-chatgpt.css,sha256=1zyYs8XPPErh4GB4_Bb8g1yPwH2YtKHyqFbj6RZZu1k,7829
450
450
  pygpt_net/data/css/web-chatgpt.dark.css,sha256=C4wgIbI8oOQ7BdnCTX3ceuXRDBsp8pvvCBjiOhn0ZO0,1500
451
451
  pygpt_net/data/css/web-chatgpt.darkest.css,sha256=oclQT4ZjjIU-icpNaBoci81Ya6jWRoRYP9dtnofR5xg,1452
452
452
  pygpt_net/data/css/web-chatgpt.light.css,sha256=AW8d8jppB6jGqFRDSUqL1Al_G9--UIqR696Ucu95llo,1536
453
- pygpt_net/data/css/web-chatgpt_wide.css,sha256=wAHSM_cDTHmvf0Mgwlpx92tbMkIa96c-LMqLSbo4Lxo,8381
453
+ pygpt_net/data/css/web-chatgpt_wide.css,sha256=Bn_9omkRu0SqSCzvHzZdnrudQf-Vd6zEJf_CmyhRm5A,8046
454
454
  pygpt_net/data/css/web-chatgpt_wide.dark.css,sha256=C4wgIbI8oOQ7BdnCTX3ceuXRDBsp8pvvCBjiOhn0ZO0,1500
455
455
  pygpt_net/data/css/web-chatgpt_wide.darkest.css,sha256=oclQT4ZjjIU-icpNaBoci81Ya6jWRoRYP9dtnofR5xg,1452
456
456
  pygpt_net/data/css/web-chatgpt_wide.light.css,sha256=hDe7OqU7kd8ST9nuFcZmB-KuNKex6WyBNGKl2pHYjYk,1503
@@ -2171,7 +2171,7 @@ pygpt_net/provider/core/calendar/db_sqlite/storage.py,sha256=QDclQCQdr4QyRIqjgGX
2171
2171
  pygpt_net/provider/core/config/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
2172
2172
  pygpt_net/provider/core/config/base.py,sha256=cbvzbMNqL2XgC-36gGubnU37t94AX7LEw0lecb2Nm80,1365
2173
2173
  pygpt_net/provider/core/config/json_file.py,sha256=GCcpCRQnBiSLWwlGbG9T3ZgiHkTfp5Jsg2KYkZcakBw,6789
2174
- pygpt_net/provider/core/config/patch.py,sha256=46eD5qGzc_A8f9o8jO3fdf8_KZvkY8YfDqog4RUSgj0,3880
2174
+ pygpt_net/provider/core/config/patch.py,sha256=OLobSe5baE7abffQYiw94zAlgWNJlCQjMX0OlGFW-JE,4224
2175
2175
  pygpt_net/provider/core/config/patches/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2176
2176
  pygpt_net/provider/core/config/patches/patch_before_2_6_42.py,sha256=LRjSyLwpLObmN4JWnzQpjLIdf4PHvq-l-5q6ZdNV_WY,127092
2177
2177
  pygpt_net/provider/core/ctx/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
@@ -2179,7 +2179,7 @@ pygpt_net/provider/core/ctx/base.py,sha256=Tfb4MDNe9BXXPU3lbzpdYwJF9S1oa2-mzgu5X
2179
2179
  pygpt_net/provider/core/ctx/db_sqlite/__init__.py,sha256=0dP8VhI4bnFsQQKxAkaleKFlyaMycDD_cnE7gBCa57Y,512
2180
2180
  pygpt_net/provider/core/ctx/db_sqlite/patch.py,sha256=YN_KRCvV8WqW_wmtbLurqikhT_46PbhoFpZcMNksKag,3121
2181
2181
  pygpt_net/provider/core/ctx/db_sqlite/provider.py,sha256=G2pB7kZfREJRLJZmfv3DKTslXC-K7EhNN2sn56q6BFA,11753
2182
- pygpt_net/provider/core/ctx/db_sqlite/storage.py,sha256=YkyS29h3vroGyiAdHdW5A3T5zF3KbQXpG3pd6hsQRJk,43714
2182
+ pygpt_net/provider/core/ctx/db_sqlite/storage.py,sha256=JYFFiyo7I9QBxx5pf53YZRZIdwSBsbOwzmsQohtAvpk,44326
2183
2183
  pygpt_net/provider/core/ctx/db_sqlite/utils.py,sha256=NwzD1HMOUkbroF7KJ1EpAw4cUfMbBjTJelFmGEG4Xzs,8953
2184
2184
  pygpt_net/provider/core/ctx/json_file.py,sha256=g1U4vOxfyA2jydwYvPQ9HpUIQihyBK2K4K6SQ75jEEs,11665
2185
2185
  pygpt_net/provider/core/history/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
@@ -2340,13 +2340,13 @@ pygpt_net/tools/code_interpreter/body.py,sha256=jDEHJuAI8U1RjV0Dhm5CcL4Y8b09UNDw
2340
2340
  pygpt_net/tools/code_interpreter/tool.py,sha256=XH3_ZUWp1tp21rGlj6-ULI723DXfY1xs7dN9Ye03Pm8,24185
2341
2341
  pygpt_net/tools/code_interpreter/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2342
2342
  pygpt_net/tools/code_interpreter/ui/dialogs.py,sha256=iYCtmn_gPMKhvy8Ygga_oYPVg80zP3-10SZgv0O6xYQ,5429
2343
- pygpt_net/tools/code_interpreter/ui/html.py,sha256=Ql0tXEIsjlfXbRznoRY8F_6XTK-RpkTLMfaAkIv_9rc,23551
2344
- pygpt_net/tools/code_interpreter/ui/widgets.py,sha256=77bUzSme7fJIALivC0EXLWhZhx8BwiLkKywrUQ1J3LM,18117
2343
+ pygpt_net/tools/code_interpreter/ui/html.py,sha256=8XI_RVZsOm6x95LTp3Lol4xmuTb_Mnb08lnNHxp6QpM,27414
2344
+ pygpt_net/tools/code_interpreter/ui/widgets.py,sha256=noOvecQNHcZKDfyfmgnupNr8KtY8WPvfbds63z6vOV0,18020
2345
2345
  pygpt_net/tools/html_canvas/__init__.py,sha256=7FScUoJWFBsF6Rbmt14zb2YEERcywW_xAeX0GTAHhX4,508
2346
2346
  pygpt_net/tools/html_canvas/tool.py,sha256=F0rozMO1rva7ABr1hXhOBCW9XWq9hL8RjTWsI6cp-wc,9875
2347
2347
  pygpt_net/tools/html_canvas/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2348
2348
  pygpt_net/tools/html_canvas/ui/dialogs.py,sha256=zw4XusCoZ-52ks8ogcasEVAxDHQwSHh88FtW2rk4HP0,4825
2349
- pygpt_net/tools/html_canvas/ui/widgets.py,sha256=8SmIQ0M3XUy-4u-MIAqerBcMN5VAaq6QhU7RjewkYaQ,5168
2349
+ pygpt_net/tools/html_canvas/ui/widgets.py,sha256=Yp_IP1VhAF5zRymdQ2ADG_wObKOf44rNgI58Vn2c3_4,5050
2350
2350
  pygpt_net/tools/image_viewer/__init__.py,sha256=BQLr8Kg670xPAyv_qoRA_EjWq5WZclqoc4OpTk5V11k,508
2351
2351
  pygpt_net/tools/image_viewer/tool.py,sha256=8cIcEG9R0HGUXwikD8XOxQHqt0QZkgB4LzpiQ4GAWwU,9269
2352
2352
  pygpt_net/tools/image_viewer/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -2375,7 +2375,7 @@ pygpt_net/tools/translator/tool.py,sha256=hm3dEfQJRo8u45gyRXyIOp92khQuBJ6hnqIxO9
2375
2375
  pygpt_net/tools/translator/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2376
2376
  pygpt_net/tools/translator/ui/dialogs.py,sha256=qC-dCNtOLbOe-h586iBmsBTlv4KlUoxCkPqYOq8336k,4137
2377
2377
  pygpt_net/tools/translator/ui/widgets.py,sha256=6gEVlMd96tHOwKKDV6eoMoItTOcr2Bd_ig5Y2KihZ5o,17735
2378
- pygpt_net/ui/__init__.py,sha256=OoyVKGWLxPSlwTnEJ-fpwe5EH1GLdRGbTaNHwDoJ7PI,9313
2378
+ pygpt_net/ui/__init__.py,sha256=YjRnv1py7ZtxeD6Q1pPtG89uXRYQl8WHGKLmvzT_KRk,9136
2379
2379
  pygpt_net/ui/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2380
2380
  pygpt_net/ui/base/config_dialog.py,sha256=P-7u7DQUZtr9D237SBjFt-QcYOeAWD8hD_rDJLc-C0Y,8913
2381
2381
  pygpt_net/ui/base/context_menu.py,sha256=l-Z9LqPa_xGsjdV3ay65Rqu8JLzZDx2s8GUzYMt4eSk,4462
@@ -2415,7 +2415,7 @@ pygpt_net/ui/layout/chat/attachments.py,sha256=yjW3RAQrp-h-0yWslKoaaI1q0dnkka82Y
2415
2415
  pygpt_net/ui/layout/chat/attachments_ctx.py,sha256=JOQldJFWPMIvV-QMkw9Zqb6N-1utwZDgeQSEsvQ9JTM,6809
2416
2416
  pygpt_net/ui/layout/chat/attachments_uploaded.py,sha256=MZA0aFOm9iKbYc6NrM7Ivg2i_AovAL2x8SM4IeyUtNI,5207
2417
2417
  pygpt_net/ui/layout/chat/calendar.py,sha256=hE9Gl0h5kPXe0OUkimRfys2aFti0Y4wzKxhh1gyGnjs,6578
2418
- pygpt_net/ui/layout/chat/chat.py,sha256=qB4RwT9N0eCtrbyasgO0Cxvcm2nXACck6MflGAoQqK0,2221
2418
+ pygpt_net/ui/layout/chat/chat.py,sha256=xfdVb_HUqiC9HkV-iXbt1ucqnFeIVYVVc8yG0cW3ff4,2173
2419
2419
  pygpt_net/ui/layout/chat/explorer.py,sha256=Jg6aK5qTCTNgb4EXr-zeZXSexARQSzn4W8unqV1MGe8,1358
2420
2420
  pygpt_net/ui/layout/chat/input.py,sha256=Wnb29-1MQPD4AUU4CZN4vz6tba_L6tgIyJX-Xr4cgxY,9969
2421
2421
  pygpt_net/ui/layout/chat/markdown.py,sha256=hjYY8Da1z0IZZD086_csMcDY1wwagpuQTDZ-XfgeNgs,18656
@@ -2423,7 +2423,7 @@ pygpt_net/ui/layout/chat/output.py,sha256=Skt2-Zeka7fY_uzh_8H8MsvusJaWpaesfk2Ezy
2423
2423
  pygpt_net/ui/layout/chat/painter.py,sha256=XmogOPKRIBMldZOmJDNSVZLqFC_JTCXLu6Eyfw1Da3c,8552
2424
2424
  pygpt_net/ui/layout/ctx/__init__.py,sha256=NJ9L0yJKIx1nKnk2sczp7ILWVbu2hfpvUz4E56EFuPI,509
2425
2425
  pygpt_net/ui/layout/ctx/ctx.py,sha256=GDJyolAnFlAd49bbu9-LGsCxOUTAImSH5In4i8YHFOo,1653
2426
- pygpt_net/ui/layout/ctx/ctx_list.py,sha256=VLESOMZTtiF3sLcKCDI_6uKFJZ0my-H7DRuYGlMtwXM,12017
2426
+ pygpt_net/ui/layout/ctx/ctx_list.py,sha256=GuVyk85vcWvYxwdKstssCd8j-QYm9fXDeBsjWF7PMf0,14950
2427
2427
  pygpt_net/ui/layout/ctx/search_input.py,sha256=yM_X2sxeR09JRqmkd2R4z82GRo3I1k4rOb75PgIFydE,1441
2428
2428
  pygpt_net/ui/layout/ctx/video.py,sha256=RzzyGObhlXamXIJHRqA9D2o6eVVulF4kNPVf3BkURGI,1068
2429
2429
  pygpt_net/ui/layout/status.py,sha256=bhRCXP25ODBZHl-aXCZft68Y_6ccprDkrQjJVIG_ulM,2015
@@ -2513,10 +2513,10 @@ pygpt_net/ui/widget/lists/assistant.py,sha256=496IcQQ9Vk1_UMyeVyGV-X6yEcK_8u6zoI
2513
2513
  pygpt_net/ui/widget/lists/assistant_store.py,sha256=WupZMOI4-x-r21JCg8rdR45NMyAxI_yQxFXkvGhC7GM,3715
2514
2514
  pygpt_net/ui/widget/lists/attachment.py,sha256=QHoOQLg86RWEyGpjvRg7hnQEMTTnJiJyIkv20G5GiWo,8678
2515
2515
  pygpt_net/ui/widget/lists/attachment_ctx.py,sha256=emcm2BMrKL4RlzmzKR1-_QJ0fxbFXsflWo_sFJvylzM,5474
2516
- pygpt_net/ui/widget/lists/base.py,sha256=hGoDSLpPVyGn5rdTzn3ixEigM67NLoO7Kc27Un6HNgM,3536
2516
+ pygpt_net/ui/widget/lists/base.py,sha256=HGRmr3PHooQsidZ_K8FPIa9lhkJCpy8u1mXNfJ2r9Ak,4812
2517
2517
  pygpt_net/ui/widget/lists/base_combo.py,sha256=-ZXvof8eJfSoB0_ONVxVuCJP8acss-f066XreG_GfnY,4132
2518
2518
  pygpt_net/ui/widget/lists/base_list_combo.py,sha256=DTm5qiT08pfHu8DKH_gA6aodDY3XELtKfDudJTOL3RU,5721
2519
- pygpt_net/ui/widget/lists/context.py,sha256=TCpVsL-2H9EOOW0IAQTIAAS-NOs-6sKiFKWwQtXJj3E,27611
2519
+ pygpt_net/ui/widget/lists/context.py,sha256=spJFFcOOne34D10mfhAJ8RvycZ4Ss2AZr0jOHSayuDs,29453
2520
2520
  pygpt_net/ui/widget/lists/db.py,sha256=2eKdcSY78WHxCHBAMSpZoSChACJ6Sjfbb2gkt-6l8uM,5908
2521
2521
  pygpt_net/ui/widget/lists/debug.py,sha256=POWO_G8ah4wTNjXKxp6Si-07OkttJ7WL27dmSsNRIuQ,3705
2522
2522
  pygpt_net/ui/widget/lists/experts.py,sha256=c6o0TIQ6YkIAMHoHHYBA-474z9tyPPw7YUn4R-oaXio,5957
@@ -2549,7 +2549,7 @@ pygpt_net/ui/widget/option/toggle.py,sha256=ainYgH-1UKeHf_BP0yZ48luD0k4zAvZ5jMLd
2549
2549
  pygpt_net/ui/widget/option/toggle_label.py,sha256=JZwI_mpqLX6Ml9ovijXMWBHTT0t_nf3aYTqRqTYFtpY,2271
2550
2550
  pygpt_net/ui/widget/tabs/Input.py,sha256=ELHpaWjhHJdKRhtTjDIByaMF_BqaHCyKwEWDofm0Gls,1875
2551
2551
  pygpt_net/ui/widget/tabs/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
2552
- pygpt_net/ui/widget/tabs/body.py,sha256=BAj1uw6n0vShg01tWFWMfq66yM93zW_lpEzCOuLtOsw,3756
2552
+ pygpt_net/ui/widget/tabs/body.py,sha256=dNHfsQ1c6qVylg44I3PvDN21zyJKOkUz2KdH93St5l8,4373
2553
2553
  pygpt_net/ui/widget/tabs/layout.py,sha256=6b6bN04IFS0I0cYvq-nUxN2eWwHVUBiNwPXoNgLokM4,6628
2554
2554
  pygpt_net/ui/widget/tabs/output.py,sha256=OwlRYcAwb12kMp5RT-DjsEOkXHG9FNQfJuVQBL7XnKA,25082
2555
2555
  pygpt_net/ui/widget/textarea/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
@@ -2566,12 +2566,12 @@ pygpt_net/ui/widget/textarea/output.py,sha256=krWta3GHwdlPOqcxLln150bo7iUOtbFL_y
2566
2566
  pygpt_net/ui/widget/textarea/rename.py,sha256=NwuGRIeWMo7WfsMguAFpTqdOz1eTiXbxrDXGsbWF_TY,1358
2567
2567
  pygpt_net/ui/widget/textarea/search_input.py,sha256=aoOlunBwxn-z3gIMNKfnghHX00sC36wQHl87dRlDJlM,5227
2568
2568
  pygpt_net/ui/widget/textarea/url.py,sha256=xbNQxoM5fYI1ZWbvybQkPmNPrIq3yhtNPBOSOWftZCg,1337
2569
- pygpt_net/ui/widget/textarea/web.py,sha256=t6ZppPxmkpw6z2hgL0w0-0EF_ez_0ZPi-JYWiTnpN6E,18086
2569
+ pygpt_net/ui/widget/textarea/web.py,sha256=FGS0NGSpzKgtP8AzMwnC-LHDXEOY7baHImmnxsbIyGY,19279
2570
2570
  pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
2571
2571
  pygpt_net/ui/widget/vision/camera.py,sha256=v1qEncaZr5pXocO5Cpk_lsgfCMvfFigdJmzsYfzvCl0,1877
2572
2572
  pygpt_net/utils.py,sha256=7lZj_YSzx7ZfvqFtjYThEvRJNSBZzrJyK7ZxDAtYPAQ,9708
2573
- pygpt_net-2.6.47.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2574
- pygpt_net-2.6.47.dist-info/METADATA,sha256=tWkKsnyQUPruz8qtdksT5_9C-G0RCkuJnS5vlBDiutI,163081
2575
- pygpt_net-2.6.47.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2576
- pygpt_net-2.6.47.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2577
- pygpt_net-2.6.47.dist-info/RECORD,,
2573
+ pygpt_net-2.6.49.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2574
+ pygpt_net-2.6.49.dist-info/METADATA,sha256=AykZ3KQvjl_5RGn7sLhu76V2NsPRRCFZDPg9aKAB7Uo,163340
2575
+ pygpt_net-2.6.49.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2576
+ pygpt_net-2.6.49.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2577
+ pygpt_net-2.6.49.dist-info/RECORD,,