pygpt-net 2.7.0__py3-none-any.whl → 2.7.2__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 (37) hide show
  1. pygpt_net/CHANGELOG.txt +14 -0
  2. pygpt_net/__init__.py +3 -3
  3. pygpt_net/controller/ctx/ctx.py +4 -1
  4. pygpt_net/controller/painter/common.py +43 -11
  5. pygpt_net/core/filesystem/filesystem.py +70 -0
  6. pygpt_net/core/filesystem/packer.py +161 -1
  7. pygpt_net/core/image/image.py +2 -2
  8. pygpt_net/core/platforms/platforms.py +14 -1
  9. pygpt_net/core/updater/updater.py +24 -12
  10. pygpt_net/core/video/video.py +2 -3
  11. pygpt_net/data/config/config.json +3 -3
  12. pygpt_net/data/config/models.json +3 -3
  13. pygpt_net/data/css/style.dark.css +13 -6
  14. pygpt_net/data/css/style.light.css +13 -5
  15. pygpt_net/data/locale/locale.de.ini +2 -0
  16. pygpt_net/data/locale/locale.en.ini +2 -0
  17. pygpt_net/data/locale/locale.es.ini +2 -0
  18. pygpt_net/data/locale/locale.fr.ini +2 -0
  19. pygpt_net/data/locale/locale.it.ini +2 -0
  20. pygpt_net/data/locale/locale.pl.ini +3 -1
  21. pygpt_net/data/locale/locale.uk.ini +2 -0
  22. pygpt_net/data/locale/locale.zh.ini +2 -0
  23. pygpt_net/provider/core/config/patch.py +16 -0
  24. pygpt_net/ui/dialog/preset.py +1 -0
  25. pygpt_net/ui/layout/toolbox/image.py +2 -1
  26. pygpt_net/ui/layout/toolbox/indexes.py +2 -0
  27. pygpt_net/ui/layout/toolbox/video.py +5 -1
  28. pygpt_net/ui/main.py +1 -0
  29. pygpt_net/ui/widget/dialog/update.py +18 -7
  30. pygpt_net/ui/widget/draw/painter.py +238 -51
  31. pygpt_net/ui/widget/filesystem/explorer.py +82 -0
  32. pygpt_net/ui/widget/option/combo.py +179 -13
  33. {pygpt_net-2.7.0.dist-info → pygpt_net-2.7.2.dist-info}/METADATA +44 -4
  34. {pygpt_net-2.7.0.dist-info → pygpt_net-2.7.2.dist-info}/RECORD +37 -37
  35. {pygpt_net-2.7.0.dist-info → pygpt_net-2.7.2.dist-info}/LICENSE +0 -0
  36. {pygpt_net-2.7.0.dist-info → pygpt_net-2.7.2.dist-info}/WHEEL +0 -0
  37. {pygpt_net-2.7.0.dist-info → pygpt_net-2.7.2.dist-info}/entry_points.txt +0 -0
@@ -379,7 +379,9 @@ class SearchableCombo(SeparatorComboBox):
379
379
  """
380
380
  def __init__(self, parent=None):
381
381
  super().__init__(parent)
382
+ self.setObjectName("SearchableCombo")
382
383
  self.search: bool = True
384
+
383
385
  self._popup_open: bool = False
384
386
  self._search_line: QLineEdit | None = None
385
387
  self._search_action = None
@@ -393,6 +395,15 @@ class SearchableCombo(SeparatorComboBox):
393
395
  self._last_query_text: str = ""
394
396
  self._suppress_search: bool = False
395
397
 
398
+ # Guard flags for mouse handling
399
+ self._swallow_release_once: bool = False # kept for compatibility; not used in the new flow
400
+ self._open_on_release: bool = False # open popup on mouse release (non-arrow path)
401
+
402
+ # Popup fitting helpers
403
+ self._fit_in_progress: bool = False
404
+ self._popup_parent_window = None
405
+ self._popup_right_margin_px: int = 4 # small safety margin from window right edge
406
+
396
407
  self._install_persistent_editor()
397
408
  self._init_popup_view_style_targets()
398
409
 
@@ -491,13 +502,18 @@ class SearchableCombo(SeparatorComboBox):
491
502
  if self.search:
492
503
  self._prepare_popup_header()
493
504
 
505
+ # Ensure geometry fits horizontally within window bounds
506
+ self._fit_popup_to_window()
494
507
  QTimer.singleShot(0, self._apply_popup_max_rows)
508
+ QTimer.singleShot(0, self._fit_popup_to_window)
495
509
  self._refresh_popup_view()
496
510
 
497
511
  def hidePopup(self):
498
512
  """Close popup and restore normal display text; remove header/margins."""
499
513
  super().hidePopup()
500
514
  self._popup_open = False
515
+ self._swallow_release_once = False # ensure release guard is cleared when popup closes
516
+ self._open_on_release = False
501
517
 
502
518
  if self._popup_header is not None:
503
519
  try:
@@ -539,12 +555,22 @@ class SearchableCombo(SeparatorComboBox):
539
555
  try:
540
556
  container.setObjectName("ComboPopupWindow") # QWidget#ComboPopupWindow { ... }
541
557
  container.setProperty("class", "combo-popup-window")
558
+ container.setAttribute(Qt.WA_NoMouseReplay, True) # prevent unwanted mouse replays on popup show
542
559
  except Exception:
543
560
  pass
544
561
 
545
562
  self._popup_container = container
546
563
  container.installEventFilter(self)
547
564
 
565
+ # Track parent window moves/resizes while popup is open
566
+ try:
567
+ top = self.window()
568
+ if top is not None:
569
+ top.installEventFilter(self)
570
+ self._popup_parent_window = top
571
+ except Exception:
572
+ self._popup_parent_window = None
573
+
548
574
  if self._popup_header is None:
549
575
  self._popup_header = QLineEdit(container)
550
576
  self._popup_header.setObjectName("comboSearchHeader")
@@ -619,7 +645,14 @@ class SearchableCombo(SeparatorComboBox):
619
645
  self._popup_container.removeEventFilter(self)
620
646
  except Exception:
621
647
  pass
648
+ # Unhook parent window filter if any
649
+ if self._popup_parent_window is not None:
650
+ try:
651
+ self._popup_parent_window.removeEventFilter(self)
652
+ except Exception:
653
+ pass
622
654
  self._popup_container = None
655
+ self._popup_parent_window = None
623
656
 
624
657
  # ----- Mouse handling on combo (display area) -----
625
658
 
@@ -637,25 +670,51 @@ class SearchableCombo(SeparatorComboBox):
637
670
 
638
671
  def mousePressEvent(self, event):
639
672
  """
640
- Open popup on left-click anywhere in the combo area; let the arrow retain default toggle behaviour.
641
-
642
- :param event: QMouseEvent
673
+ Use release-to-open on the non-arrow area to avoid immediate close when the popup opens upward.
674
+ Keep the arrow area with the default toggle behaviour from the base class.
643
675
  """
644
676
  if event.button() == Qt.LeftButton and self.isEnabled():
645
677
  arrow_rect = self._arrow_rect()
646
678
  if arrow_rect.contains(event.pos()):
679
+ # Arrow path: keep default toggle semantics
680
+ self._open_on_release = False
681
+ self._swallow_release_once = False
647
682
  return super().mousePressEvent(event)
648
- if not self._popup_open:
649
- self.showPopup()
683
+
684
+ # Non-arrow path
685
+ if self._popup_open:
686
+ # Toggle close if already open
687
+ self.hidePopup()
688
+ self._open_on_release = False
689
+ self._swallow_release_once = False
690
+ event.accept()
691
+ return
692
+
693
+ # Defer opening until mouse release to prevent instant close when popup is above
694
+ self._open_on_release = True
695
+ self._swallow_release_once = False
650
696
  event.accept()
651
697
  return
698
+
652
699
  super().mousePressEvent(event)
653
700
 
701
+ def mouseReleaseEvent(self, event):
702
+ """
703
+ Open the popup on release if the press started on the non-arrow area.
704
+ This avoids the popup being created mid-click (which can close immediately when opening upward).
705
+ """
706
+ if event.button() == Qt.LeftButton and self._open_on_release:
707
+ self._open_on_release = False
708
+ if self.isEnabled() and not self._popup_open and self.rect().contains(event.pos()):
709
+ self.showPopup()
710
+ event.accept()
711
+ return
712
+
713
+ super().mouseReleaseEvent(event)
714
+
654
715
  def keyPressEvent(self, event):
655
716
  """
656
717
  Commit the highlighted item with Enter/Return while the popup is open.
657
-
658
- :param event: QKeyEvent
659
718
  """
660
719
  if self._popup_open:
661
720
  if event.key() in (Qt.Key_Return, Qt.Key_Enter):
@@ -675,13 +734,19 @@ class SearchableCombo(SeparatorComboBox):
675
734
  - Handle navigation/confirm keys in the header.
676
735
  - Handle Enter on the popup list as well.
677
736
  - Do not close popup on ESC.
678
-
679
- :param obj: QObject
680
- :param event: QEvent
737
+ - Keep popup horizontally inside the parent window while resizing/moving.
681
738
  """
682
739
  if obj is self._popup_container and self._popup_container is not None:
683
740
  if event.type() in (QEvent.Resize, QEvent.Show):
684
741
  self._place_popup_header()
742
+ # Also ensure fitting after container geometry changes
743
+ self._fit_popup_to_window()
744
+ return False
745
+
746
+ # Track top-level parent window resize/move to keep popup clamped within it
747
+ if obj is self._popup_parent_window and self._popup_parent_window is not None:
748
+ if event.type() in (QEvent.Resize, QEvent.Move):
749
+ self._fit_popup_to_window()
685
750
  return False
686
751
 
687
752
  if obj is self._popup_header:
@@ -1119,6 +1184,99 @@ class SearchableCombo(SeparatorComboBox):
1119
1184
  except Exception:
1120
1185
  pass
1121
1186
 
1187
+ # ----- Horizontal fitting helpers (keep popup inside window bounds) -----
1188
+
1189
+ def _popup_allowed_rect(self) -> QRect:
1190
+ """Return the allowed global rectangle for the popup (intersection of window frame and screen)."""
1191
+ try:
1192
+ win = self.window()
1193
+ if win is not None:
1194
+ allowed = win.frameGeometry()
1195
+ else:
1196
+ scr = self.screen()
1197
+ allowed = scr.availableGeometry() if scr is not None else None
1198
+ # Intersect with the window's screen available area to avoid going off-screen
1199
+ scr = (win.screen() if win is not None else self.screen())
1200
+ if allowed is not None and scr is not None:
1201
+ allowed = allowed.intersected(scr.availableGeometry())
1202
+ if allowed is None:
1203
+ scr = self.screen()
1204
+ allowed = scr.availableGeometry() if scr is not None else QRect(0, 0, 1920, 1080)
1205
+ except Exception:
1206
+ allowed = QRect(0, 0, 1920, 1080)
1207
+ # Small inward adjustment to avoid touching the edge
1208
+ try:
1209
+ margin = max(0, int(self._popup_right_margin_px))
1210
+ except Exception:
1211
+ margin = 4
1212
+ return allowed.adjusted(margin, 0, -margin, 0)
1213
+
1214
+ def _cap_width_to_window(self, desired_width: int) -> int:
1215
+ """
1216
+ Cap desired popup width to the allowed width inside the parent window.
1217
+
1218
+ :param desired_width: desired popup width
1219
+ :return: capped width
1220
+ """
1221
+ try:
1222
+ allowed = self._popup_allowed_rect()
1223
+ max_w = max(50, allowed.width())
1224
+ return max(50, min(desired_width, max_w))
1225
+ except Exception:
1226
+ return desired_width
1227
+
1228
+ def _fit_popup_to_window(self):
1229
+ """
1230
+ Ensure popup container stays horizontally within the parent window:
1231
+ - clamp width to allowed rect,
1232
+ - shift left if right edge would overflow.
1233
+ """
1234
+ if self._fit_in_progress:
1235
+ return
1236
+ view = self.view()
1237
+ container = self._popup_container or (view.window() if view is not None else None)
1238
+ if container is None:
1239
+ return
1240
+ try:
1241
+ self._fit_in_progress = True
1242
+
1243
+ allowed = self._popup_allowed_rect()
1244
+
1245
+ cg = container.geometry()
1246
+ y, h = cg.y(), cg.height()
1247
+
1248
+ # Determine target width: prefer the larger of container or combo width, but not over allowed.
1249
+ desired_w = max(cg.width(), self.width())
1250
+ target_w = self._cap_width_to_window(desired_w)
1251
+
1252
+ # Position: keep current left if possible, otherwise shift to keep right edge inside.
1253
+ left_allowed = allowed.x()
1254
+ right_allowed = allowed.x() + allowed.width()
1255
+ new_x = cg.x()
1256
+ if new_x + target_w > right_allowed:
1257
+ new_x = right_allowed - target_w
1258
+ if new_x < left_allowed:
1259
+ new_x = left_allowed
1260
+
1261
+ # Apply constraints to the internal view as well to avoid relayout expanding the container back
1262
+ try:
1263
+ if view is not None:
1264
+ if view.minimumWidth() > target_w:
1265
+ view.setMinimumWidth(target_w)
1266
+ view.setMaximumWidth(target_w)
1267
+ except Exception:
1268
+ pass
1269
+
1270
+ if cg.x() != new_x or cg.width() != target_w:
1271
+ container.setGeometry(new_x, y, target_w, h)
1272
+
1273
+ # Keep header sized to new width
1274
+ self._place_popup_header()
1275
+ except Exception:
1276
+ pass
1277
+ finally:
1278
+ self._fit_in_progress = False
1279
+
1122
1280
  # ----- Internal helpers -----
1123
1281
 
1124
1282
  def _refresh_popup_view(self, *_):
@@ -1146,7 +1304,7 @@ class NoScrollCombo(SearchableCombo):
1146
1304
  event.ignore()
1147
1305
 
1148
1306
  def showPopup(self):
1149
- """Adjust popup width to fit the longest item before showing."""
1307
+ """Adjust popup width to fit the longest item before showing, capped to the window width."""
1150
1308
  max_width = 0
1151
1309
  font_metrics = QFontMetrics(self.font())
1152
1310
  for i in range(self.count()):
@@ -1154,11 +1312,19 @@ class NoScrollCombo(SearchableCombo):
1154
1312
  width = font_metrics.horizontalAdvance(text)
1155
1313
  max_width = max(max_width, width)
1156
1314
  extra_margin = 80
1157
- max_width += extra_margin
1315
+ desired = max_width + extra_margin
1316
+
1317
+ # Cap desired width to parent window to avoid right overflow when window is not maximized
1318
+ capped = self._cap_width_to_window(desired)
1319
+
1158
1320
  try:
1159
- self.view().setMinimumWidth(max_width)
1321
+ v = self.view()
1322
+ if v is not None:
1323
+ v.setMinimumWidth(capped)
1324
+ v.setMaximumWidth(capped)
1160
1325
  except Exception:
1161
1326
  pass
1327
+
1162
1328
  super().showPopup()
1163
1329
 
1164
1330
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pygpt-net
3
- Version: 2.7.0
3
+ Version: 2.7.2
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, MCP, 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
@@ -119,7 +119,7 @@ Description-Content-Type: text/markdown
119
119
 
120
120
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
121
121
 
122
- Release: **2.7.0** | build: **2025-12-28** | Python: **>=3.10, <3.14**
122
+ Release: **2.7.2** | build: **2025-12-29** | Python: **>=3.10, <3.14**
123
123
 
124
124
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
125
125
  >
@@ -216,7 +216,33 @@ You can download compiled binary versions for `Linux` and `Windows` (10/11).
216
216
 
217
217
  Linux version requires `GLIBC` >= `2.35`.
218
218
 
219
- ## Snap Store
219
+ ## Microsoft Store (Windows)
220
+
221
+ For Windows 10/11, you can install **PyGPT** directly from Microsoft Store:
222
+
223
+ [![Get it from Microsoft Store](https://get.microsoft.com/images/en-us%20dark.svg)](https://apps.microsoft.com/detail/XP99R4MX3X65VQ)
224
+
225
+ Link to MS Store: https://apps.microsoft.com/detail/XP99R4MX3X65VQ
226
+
227
+ ## AppImage (Linux)
228
+
229
+ You can download the latest **PyGPT** `AppImage` for Linux from the release page:
230
+
231
+ **Releases:** https://github.com/szczyglis-dev/py-gpt/releases
232
+
233
+ **Tip:** Remember to give execution permissions to the downloaded file:
234
+
235
+ ```chmod +x ./PyGPT-X.X.X-x86_64.AppImage```
236
+
237
+ To manage future updates you can use `AppImageUpdate` tool:
238
+
239
+ You can download it from: https://github.com/AppImage/AppImageUpdate/releases
240
+
241
+ After downloading, run the following command in terminal:
242
+
243
+ ```appimageupdatetool ./PyGPT-X.X.X-x86_64.AppImage```
244
+
245
+ ## Snap Store (Linux)
220
246
 
221
247
  You can install **PyGPT** directly from Snap Store:
222
248
 
@@ -224,7 +250,7 @@ You can install **PyGPT** directly from Snap Store:
224
250
  sudo snap install pygpt
225
251
  ```
226
252
 
227
- To manage future updates just use:
253
+ To manage future updates use:
228
254
 
229
255
  ```commandline
230
256
  sudo snap refresh pygpt
@@ -3753,6 +3779,20 @@ may consume additional tokens that are not displayed in the main window.
3753
3779
 
3754
3780
  ## Recent changes:
3755
3781
 
3782
+ **2.7.2 (2025-12-29)**
3783
+
3784
+ - Fixed: non-searchable combobox width.
3785
+ - Improved updater.
3786
+ - Added .AppImage build.
3787
+
3788
+ **2.7.1 (2025-12-28)**
3789
+
3790
+ - Improved UI elements.
3791
+ - Optimized Painter rendering and redraw functions.
3792
+ - Added Pack/Unpack feature to File Explorer.
3793
+ - Fixed: image restoration in Painter.
3794
+ - Fixed: tab title updating upon context deletion.
3795
+
3756
3796
  **2.7.0 (2025-12-28)**
3757
3797
 
3758
3798
  - Added multi-select functionality using CTRL or SHIFT and batch actions to the context list, preset list, attachments list, and other list-based widgets.
@@ -1,6 +1,6 @@
1
- pygpt_net/CHANGELOG.txt,sha256=igNVCCyHsWBvgqC4bKfnsxk_mk3pLwBXdj4CeyUkano,111033
1
+ pygpt_net/CHANGELOG.txt,sha256=opyjVHDzLy4dzClQfz3U3t3g6x65e4mTbazHXboFqpY,111372
2
2
  pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
3
- pygpt_net/__init__.py,sha256=V9VvgscAQL_HFmE8inExLRmTXQkAI4q6RxLE6auxdsE,1372
3
+ pygpt_net/__init__.py,sha256=oZLbWKFXTi7d4UvffTI_nfQT_-Mg7ske84JqOw2G0A0,1372
4
4
  pygpt_net/app.py,sha256=W-2rCYLndMgVV7cZZqeloqzifCggjISrFdMhHg0dMvM,23419
5
5
  pygpt_net/app_core.py,sha256=PwBOV9wZLtr-O6SxBiazABhYXMHH8kZ6OgbvSv2OiZA,3827
6
6
  pygpt_net/config.py,sha256=3CA7xXPKQsdRie1CY8_b5-Kk1taWMciUP9CesXRQNNY,18302
@@ -73,7 +73,7 @@ pygpt_net/controller/config/field/textarea.py,sha256=yhP0edUXlnmCEAkqevoeFqrBdtZ
73
73
  pygpt_net/controller/config/placeholder.py,sha256=-PWPNILPVkxMsY64aYnKTWvgUIvx7KA2Nwfd2LW_K30,16711
74
74
  pygpt_net/controller/ctx/__init__.py,sha256=0wH7ziC75WscBW8cxpeGBwEz5tolo_kCxGPoz2udI_E,507
75
75
  pygpt_net/controller/ctx/common.py,sha256=C0Nz2f3PlWkg2Z7wwT-poiDlwdEbQWF6QGC5xcs4sTg,6904
76
- pygpt_net/controller/ctx/ctx.py,sha256=ZztnMYy27efAvDwnt54NNXRU-6mfMFcogeJUMLdZoJE,49601
76
+ pygpt_net/controller/ctx/ctx.py,sha256=iQnAITxXeYf5DIyUzk1Uej9xg-fEznBNXjVbUPEsM-g,49708
77
77
  pygpt_net/controller/ctx/extra.py,sha256=0r-G6Tlm9WPDkLRmgPDlgyRr_XLfCJntnUGlYPJiXVw,8598
78
78
  pygpt_net/controller/ctx/summarizer.py,sha256=UNsq-JTARblGNT97uSMpZEVzdUuDJ8YA2j2dw9R2X3o,3079
79
79
  pygpt_net/controller/debug/__init__.py,sha256=dOJGTICjvTtrPIEDOsxCzcOHsfu8AFPLpSKbdN0q0KI,509
@@ -119,7 +119,7 @@ pygpt_net/controller/notepad/__init__.py,sha256=ZbMh4D6nsGuI4AwYMdegfij5ubmUznEE
119
119
  pygpt_net/controller/notepad/notepad.py,sha256=x1KBbZxIZls01ek4iOP9sCTMB6rk1_qNbAbPbWVIDFM,11110
120
120
  pygpt_net/controller/painter/__init__.py,sha256=ZNZE6YcKprDPqLK5kiwtcJVvcW3H-YkerFW0PwbeQ1Y,511
121
121
  pygpt_net/controller/painter/capture.py,sha256=X3TqnNypxT_wngkQ4ovfS9glQwoGHyM-peR5aLJQGvk,6666
122
- pygpt_net/controller/painter/common.py,sha256=O_AQKhM7iHb6aqzqMW0a9KH66MX8tho3HOJUpfLx39Y,15411
122
+ pygpt_net/controller/painter/common.py,sha256=Jp4vGVgq52fq4Hy4D6hqniopmegWkMLwvbROU354Zac,16523
123
123
  pygpt_net/controller/painter/painter.py,sha256=-qmVxxmsL_5aQs_DVoMLe0m6xZLIvijcItG4J1XHVfo,2866
124
124
  pygpt_net/controller/plugins/__init__.py,sha256=iocY37De1H2Nh7HkC7ZYvUus2xzcckslgr5a4PwtQII,511
125
125
  pygpt_net/controller/plugins/plugins.py,sha256=2y__KawXRKCKD-UR4yFnwJxo9bERfOUFBLpxhFLm7gA,16161
@@ -287,9 +287,9 @@ pygpt_net/core/experts/worker.py,sha256=KdVJv0ovjJ9oJ0Gj79m35JxiQbAxNPcQ5hUnqxG7
287
287
  pygpt_net/core/filesystem/__init__.py,sha256=KZLS3s_otd3Md9eDA6FN-b4CtOCWl_fplUlM9V6hTy8,514
288
288
  pygpt_net/core/filesystem/actions.py,sha256=mGvNDg8vr6E4rISIjguzJqb00lazsq4_-TN0V0b4qgs,7625
289
289
  pygpt_net/core/filesystem/editor.py,sha256=or7cT2xhZfDwjX47reyXQCt-_1c4h_xPJDddYi1auNw,4284
290
- pygpt_net/core/filesystem/filesystem.py,sha256=GmJrpxCLKcH9PPCDXoL968oMr8junUvwq6Jo9GK1K-U,15685
290
+ pygpt_net/core/filesystem/filesystem.py,sha256=-wds_6cwZvcG6426w4lUvX0z919Kt2GIYI8ffdKDv40,18385
291
291
  pygpt_net/core/filesystem/opener.py,sha256=8EkieR_FwSz0HBykLcmV8TEw8Bn0e7WHqqiPTkDPp-M,7851
292
- pygpt_net/core/filesystem/packer.py,sha256=9CmQgq-lja2QGtc0JFqh197mLLViJ7TDPc8fVWTok1w,2568
292
+ pygpt_net/core/filesystem/packer.py,sha256=aXxdxaoFmFjN1QCBkyXyh1_61H_-8pCGVzoSsRh_iBY,8435
293
293
  pygpt_net/core/filesystem/parser.py,sha256=CLESCdASVQ1-cJ_6ZxbgDSxvwC-haznj_coE1_tWaQE,3548
294
294
  pygpt_net/core/filesystem/types.py,sha256=1HFubxAHYup_SLQ7SlR5EvZb3KgVyd8K8vBRUkTcqaA,3458
295
295
  pygpt_net/core/filesystem/url.py,sha256=0eT7QbRQw-G19oxG3AwKgREU2CsaLSF8Fw-IO04CvUU,3676
@@ -314,7 +314,7 @@ pygpt_net/core/idx/ui/__init__.py,sha256=nfCat59itYOlE7hgn-Y5iemtkgU2NWSnKZK_ffZ
314
314
  pygpt_net/core/idx/ui/loaders.py,sha256=15-5Q5C9jGcLZkNkcqZDfAsQqwzLCZOFzHXCTGiYN6k,8732
315
315
  pygpt_net/core/idx/worker.py,sha256=c6sywqK9U0p3kFFf94MUoqM8XIYJUAnIBTDJzU-XqfI,4428
316
316
  pygpt_net/core/image/__init__.py,sha256=HEXciv02RFJC3BkrzP9tvzvZlr36WYMz5v9W80JLqlQ,509
317
- pygpt_net/core/image/image.py,sha256=xCknsdRyulidbkVPo7sIOuERCNJ57q61w5B7GqcRrIg,6446
317
+ pygpt_net/core/image/image.py,sha256=VKnLN1bHpFatwN3YfAVHnWTF58S4L-AyrwgPODCmSYs,6450
318
318
  pygpt_net/core/info/__init__.py,sha256=SJUPrGXxdvHTpM3AyvsaD_Z_Fuzrg2cbcNevB7A6X-8,508
319
319
  pygpt_net/core/info/info.py,sha256=YJEDJnGVMmMp0sQ0tEDyri6Kr94CopcZF6L97w9dXDg,829
320
320
  pygpt_net/core/installer/__init__.py,sha256=ReDXTveTr-U9brtM1bbtdC5vU92Jjo6mVvc7bfwQl_I,513
@@ -336,7 +336,7 @@ pygpt_net/core/node_editor/utils.py,sha256=FLnHXHQ6W2ZPYz39e5WqVY7SkBLoqVtPFGVNb
336
336
  pygpt_net/core/notepad/__init__.py,sha256=Uro9_4CfihHzn92I2Ar0q0t-MAGkikUMrY5kGAuLlSw,511
337
337
  pygpt_net/core/notepad/notepad.py,sha256=zYE7BRERDOxROMMfjTwS6M5Vk08DXxXqHdKi1aX33i0,4243
338
338
  pygpt_net/core/platforms/__init__.py,sha256=NRmTzf4xFxcYseYs1mgCPZA0YUH2v0Aufq4CG1_mKDE,513
339
- pygpt_net/core/platforms/platforms.py,sha256=4zCAfzZQnxwsJ8lMwKTDvHj7EOMgVS7H4-lTGEErbQA,5203
339
+ pygpt_net/core/platforms/platforms.py,sha256=1cxu8blqHz3f1dYggxKifh5AOjBMJ21afieUkukqwdw,5605
340
340
  pygpt_net/core/plugins/__init__.py,sha256=NOKL-CNsF4rrKTBpsN-ue92H4pTUGKlgDCwr1iA0geY,511
341
341
  pygpt_net/core/plugins/plugins.py,sha256=BGGo-q6VLdk-fcsb4vQjORuh9LHGjHVPMO9-roTNZ5A,17131
342
342
  pygpt_net/core/presets/__init__.py,sha256=NZjBxjGv4fgEX6Hp8FznsWK5QqD1Tl7zyp2Ir3ufXv4,511
@@ -404,9 +404,9 @@ pygpt_net/core/types/multimodal.py,sha256=yeKLZ5MrCHU5LhWwFE-yGApt-FB59kTmElo3G7
404
404
  pygpt_net/core/types/openai.py,sha256=LQyJ506IbG2EJxLVHgKBDAjMLi_qbIC7ow_kM2zHwkw,1516
405
405
  pygpt_net/core/types/tools.py,sha256=BdonNwytk5SxYtYdlDkMg5lMvFoXz3CQJHZ__oVlm_8,1223
406
406
  pygpt_net/core/updater/__init__.py,sha256=fC4g0Xn9S8lLxGbop1q2o2qi9IZegoVayNVWemgBwds,511
407
- pygpt_net/core/updater/updater.py,sha256=RArlEaYWNw5PIKcG2hMWqZI3DLbi8vq7Ip_rc8TBBNI,17045
407
+ pygpt_net/core/updater/updater.py,sha256=YHv8zbndCe5RapaunirTAIZq-eRjpdceX-Fi2cZcxUw,17656
408
408
  pygpt_net/core/video/__init__.py,sha256=PBAsunvkPSJJvcx2XivIul96XsbcW8mPAda_CX3dK1U,513
409
- pygpt_net/core/video/video.py,sha256=P3bx0KzPosGNF9jnARMgP13gdY2FX9Hm6JHuxc5XGdo,10103
409
+ pygpt_net/core/video/video.py,sha256=-EUt5halPea0I77oktZqoVCw0mmpDMbUX20gUb7FYfI,10078
410
410
  pygpt_net/core/vision/__init__.py,sha256=dFEilXM2Z128SmgBlLn1DvyLCksdcyqFI7rln_VPsf8,510
411
411
  pygpt_net/core/vision/analyzer.py,sha256=kzIBRhYrsPz3GD7ekN6GmQoF_f2e1w3WyVDnhse2s0g,4626
412
412
  pygpt_net/core/vision/vision.py,sha256=JX_tazW31Xesd6nPY1I1UcGmPd_V0hCG3JfMYW06oHo,728
@@ -420,8 +420,8 @@ pygpt_net/css_rc.py,sha256=PX6g9z5BsD-DXISuR2oq3jHcjiKfcJ4HsgcHez6wGMc,27762
420
420
  pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
421
421
  pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
422
422
  pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
423
- pygpt_net/data/config/config.json,sha256=iscXUe9iOGjtQQET6_JE3Cq91RWVSa4B8g8D9Fvjet0,30935
424
- pygpt_net/data/config/models.json,sha256=cLEqhXUJPrE3elZ-PxOwTtQXK2oRtezrFvzudqyPvaE,135705
423
+ pygpt_net/data/config/config.json,sha256=cE-1UMv5Lq8fibZ9_mifDCNZCMyX26hmp6wfm4b4Sjw,30935
424
+ pygpt_net/data/config/models.json,sha256=xWo4_f1kP6ZLIvXasdmuc0u7qZtKT5PZ4orYCoK3Xg8,135705
425
425
  pygpt_net/data/config/modes.json,sha256=IpjLOm428_vs6Ma9U-YQTNKJNtZw-qyM1lwhh73xl1w,2111
426
426
  pygpt_net/data/config/presets/agent_code_act.json,sha256=GYHqhxtKFLUCvRI3IJAJ7Qe1k8yD9wGGNwManldWzlI,754
427
427
  pygpt_net/data/config/presets/agent_openai.json,sha256=bpDJgLRey_effQkzFRoOEGd4aHUrmzeODSDdNzrf62I,730
@@ -465,8 +465,8 @@ pygpt_net/data/css/markdown.css,sha256=yaoJPogZZ_ghbqP8vTXTycwVyD61Ik5_033NpzuUz
465
465
  pygpt_net/data/css/markdown.dark.css,sha256=ixAwuT69QLesZttKhO4RAy-QukplZwwfXCZsWLN9TP4,730
466
466
  pygpt_net/data/css/markdown.light.css,sha256=UZdv0jtuFgJ_4bYWsDaDQ4X4AP9tVNLUHBAckC_oD8k,833
467
467
  pygpt_net/data/css/style.css,sha256=dgVlVqEL38zF-4Ok-y1rwfALC8zETJAIuIbkwat_hTk,337
468
- pygpt_net/data/css/style.dark.css,sha256=t4e7BO6rqukdIgV0Xa3EJT2mcvX-nWhDHqSUmfwze1w,4004
469
- pygpt_net/data/css/style.light.css,sha256=2zi1sinZCj7xGV3OP-naMIG7wNYfCAcjS745coW6Czg,6353
468
+ pygpt_net/data/css/style.dark.css,sha256=CJGXyfC3EgCb32me8baFCvi2fTg3pklVj7dZ2oBkY1k,4156
469
+ pygpt_net/data/css/style.light.css,sha256=qsooKdqMSJzV1QYWeyzQnZmn839fpmkPf88O7KK8xxA,6494
470
470
  pygpt_net/data/css/web-blocks.css,sha256=i8BwIwauKvKiWq3bte45R6_bI6bjFyjKyshkTb2JWgs,7598
471
471
  pygpt_net/data/css/web-blocks.dark.css,sha256=mck2u9KiO-pvnms0N0XJkoM_RBuf8QdC_3iSWAg8r40,1855
472
472
  pygpt_net/data/css/web-blocks.darkest.css,sha256=p3929omAaS1yxNtcOk9yR6cdVGkTVLCIyVsmltxLVf4,1807
@@ -1730,14 +1730,14 @@ pygpt_net/data/js/katex/katex.min.js,sha256=KLASOtKS2x8pUxWVzCDmlWJ4jhuLb0vtrgak
1730
1730
  pygpt_net/data/js/markdown-it/markdown-it-katex.min.js,sha256=-wMst2a9i8Borapa9_hxPvpQysfFE-yph8GrBmDoA68,1670
1731
1731
  pygpt_net/data/js/markdown-it/markdown-it.min.js,sha256=OMcKHnypGrQOLZ5uYBKYUacX7Rx9Ssu91Bv5UDeRz2g,123618
1732
1732
  pygpt_net/data/languages.csv,sha256=fvtER6vnTXFHQslCh-e0xCfZDQ-ijgW4GYpOJG4U7LY,8289
1733
- pygpt_net/data/locale/locale.de.ini,sha256=PIGIH3G02Bz6CZbsiJSOa36KjdXWLjwlSjx9vizNwH0,112614
1734
- pygpt_net/data/locale/locale.en.ini,sha256=rUlqqBGF9OaRqkrCUgz7KUlB-xW_epoCf_G1yh5hzks,106714
1735
- pygpt_net/data/locale/locale.es.ini,sha256=AsAGeCK7jub9PRcTcci8PcqHVSYIrzT2UNIDvr_miYA,113156
1736
- pygpt_net/data/locale/locale.fr.ini,sha256=9J1ud2grqoDrK5XVkCk03vATFqKU7Btp36TnTTuV51I,116028
1737
- pygpt_net/data/locale/locale.it.ini,sha256=UdYyyKC1qYHYOAKHr2DXlXb5ho3IGES0MNpv_WjwrGQ,110848
1738
- pygpt_net/data/locale/locale.pl.ini,sha256=tijdm_QqwBk5L0enbAZ2MRKbZJ6UPVjL06TuUlI5xTg,110530
1739
- pygpt_net/data/locale/locale.uk.ini,sha256=HSgxOzDkKLGNzur3PdtkG7NHAouddt9PQWlcMcge_BM,154022
1740
- pygpt_net/data/locale/locale.zh.ini,sha256=PMJAaTthf2HYvqxx3HYBnuw7uXurVCKACsqz6SfcqNc,98891
1733
+ pygpt_net/data/locale/locale.de.ini,sha256=rLvE1O4mB9_3CAKZpzgZ9w0C5bjQ0XODgBheVlr2tq0,112664
1734
+ pygpt_net/data/locale/locale.en.ini,sha256=katEw0ZBZyU9LhYKFViMunA4mUmP3k-NwaTGmb-fZjg,106756
1735
+ pygpt_net/data/locale/locale.es.ini,sha256=4IyNjd3AesvVlHlIWyWNoAP04Rd1pdQFDZzDRIqqHjk,113211
1736
+ pygpt_net/data/locale/locale.fr.ini,sha256=XMCFZc4fpv-H4BdZgIiv6Gr9HUxaMrHWPl6fV_2L_Jc,116077
1737
+ pygpt_net/data/locale/locale.it.ini,sha256=u5QVLrtZ9A3-2oDijuWOS7Yp8aNmQ7rBmzH_XF8qXDY,110897
1738
+ pygpt_net/data/locale/locale.pl.ini,sha256=aqeNHvTGRp0d8Bm3wJBxbLE-ahpHkgfJ9Tip54QwzW8,110578
1739
+ pygpt_net/data/locale/locale.uk.ini,sha256=XF6CL_W_fIyQ6o7kTq1j9bAQCXl8jMDCa-UsIgGrrGc,154096
1740
+ pygpt_net/data/locale/locale.zh.ini,sha256=KAdfNXxlAOfaIafBGt9yb-mq12ioSMmOSOR4i7iv3zQ,98935
1741
1741
  pygpt_net/data/locale/plugin.agent.de.ini,sha256=BY28KpfFvgfVYJzcw2o5ScWnR4uuErIYGyc3NVHlmTw,1714
1742
1742
  pygpt_net/data/locale/plugin.agent.en.ini,sha256=HwOWCI7e8uzlIgyRWRVyr1x6Xzs8Xjv5pfEc7jfLOo4,1728
1743
1743
  pygpt_net/data/locale/plugin.agent.es.ini,sha256=bqaJQne8HPKFVtZ8Ukzo1TSqVW41yhYbGUqW3j2x1p8,1680
@@ -2250,7 +2250,7 @@ pygpt_net/provider/core/calendar/db_sqlite/storage.py,sha256=QDclQCQdr4QyRIqjgGX
2250
2250
  pygpt_net/provider/core/config/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
2251
2251
  pygpt_net/provider/core/config/base.py,sha256=cbvzbMNqL2XgC-36gGubnU37t94AX7LEw0lecb2Nm80,1365
2252
2252
  pygpt_net/provider/core/config/json_file.py,sha256=GCcpCRQnBiSLWwlGbG9T3ZgiHkTfp5Jsg2KYkZcakBw,6789
2253
- pygpt_net/provider/core/config/patch.py,sha256=EN5Iiegsvbto8p3y95_ZKvvtn7paLSX-nhzIMEqmfQU,8235
2253
+ pygpt_net/provider/core/config/patch.py,sha256=XD39PBWrJUoShasOtJq8Q_-22boHZsW4-tBpK2XvdFg,8838
2254
2254
  pygpt_net/provider/core/config/patches/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2255
2255
  pygpt_net/provider/core/config/patches/patch_before_2_6_42.py,sha256=_IcpB3DdiD01P2_jpt2ZvUs8WJRIeO6t5oQeNxY6_eE,126808
2256
2256
  pygpt_net/provider/core/ctx/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
@@ -2488,7 +2488,7 @@ pygpt_net/ui/dialog/logger.py,sha256=OGFKlAyeMgNQI4a-VW9bDXSrcsPtEC6rLhtdu11lsJc
2488
2488
  pygpt_net/ui/dialog/models.py,sha256=kog8P4O061LetxHTJARwrQxXu3so_xkhMK31iC-Ceog,20376
2489
2489
  pygpt_net/ui/dialog/models_importer.py,sha256=14kxf7KkOdTP-tcgTN5OphNZajlivDPTDKBosebuyog,4505
2490
2490
  pygpt_net/ui/dialog/plugins.py,sha256=88TsvYWHdmR5hepld6ouSEa4BDhewAQ-JFE7RWGSdy8,20287
2491
- pygpt_net/ui/dialog/preset.py,sha256=3Uv29ie0a-mtyDNcF4C1NS75icbW6FNY_iIoJPTOnGA,20533
2491
+ pygpt_net/ui/dialog/preset.py,sha256=LQbhA1u9tt64DAbqsjQgc-tpqffzesR0wmikBiRODbY,20592
2492
2492
  pygpt_net/ui/dialog/preset_plugins.py,sha256=ynqc0aWjU7MTL4jxcVKaRH_tC9uzeWJCUzUjI74ADb0,3796
2493
2493
  pygpt_net/ui/dialog/profile.py,sha256=Xk9NNQmr1A5pRUxdedu7ePEBq5OYhLT8UInuRWYBktU,4105
2494
2494
  pygpt_net/ui/dialog/rename.py,sha256=Spb7cUVq1ivy3Zg28SBACJ7p_GwJ1gm82Oz9Ld_a_FU,973
@@ -2524,8 +2524,8 @@ pygpt_net/ui/layout/toolbox/assistants.py,sha256=pZ_jOo4-Khqbm04rJuvENVZ5AUhXDUK
2524
2524
  pygpt_net/ui/layout/toolbox/audio.py,sha256=8k2qYzVmSv6g0KXhQBY9_diuGBPODSe7VHiEBpsCzUU,2030
2525
2525
  pygpt_net/ui/layout/toolbox/computer_env.py,sha256=QP_Qv4X28ineVX4vFfykmV-RDjgJpQp_oBHne3R4zY4,2210
2526
2526
  pygpt_net/ui/layout/toolbox/footer.py,sha256=LbLDXbcarPfH-tpBKgXlQqkAvm1HcNZpR7fPjbD76KA,4278
2527
- pygpt_net/ui/layout/toolbox/image.py,sha256=sqh5lAlWzmeUlQPqNABoHltKIEtug2UNMpqL43qC4yQ,1915
2528
- pygpt_net/ui/layout/toolbox/indexes.py,sha256=o-f1jKhypjdQA-1NEDIxJwwMaFdIdjU48GFPcjHq0aY,6824
2527
+ pygpt_net/ui/layout/toolbox/image.py,sha256=NjAcyUaLmQp8M18vc2Z4Aq0nGQp-BRMgZEaC4qXHzSE,1974
2528
+ pygpt_net/ui/layout/toolbox/indexes.py,sha256=GfiQ-DA-mE-fr_1P5r-8jeMJ_LeQR9PvpH5oo4oBEwc,6882
2529
2529
  pygpt_net/ui/layout/toolbox/mode.py,sha256=MfVunjZZ3Wi0o4sbWBqg74c2-W6BNDHr3ylZevLZb8c,2085
2530
2530
  pygpt_net/ui/layout/toolbox/model.py,sha256=OxcxSyFCQ3z6XAwj991X4KiSb78Upfn4v4m3991yvsw,1707
2531
2531
  pygpt_net/ui/layout/toolbox/presets.py,sha256=dOpZBcbE6ygIOjLrj-O5O0Cj6IIoH7Y5SerOYmBTpI4,8150
@@ -2533,9 +2533,9 @@ pygpt_net/ui/layout/toolbox/prompt.py,sha256=subUUZJgkCmvSRekZcgVYs6wzl-MYPBLXKT
2533
2533
  pygpt_net/ui/layout/toolbox/raw.py,sha256=Uvkk0QnrOIZ9sHJ3EnDzTRaWDLNC6cdgYyICPI8lJCk,1803
2534
2534
  pygpt_net/ui/layout/toolbox/split.py,sha256=Hs9hZPciLXCRV_izoayrBlJSCuTGumdNki6z1giWUUo,1696
2535
2535
  pygpt_net/ui/layout/toolbox/toolbox.py,sha256=VHzyzm7LjcAN30h111SEP6fdXwi84DYyf8CE1X3pdt8,2799
2536
- pygpt_net/ui/layout/toolbox/video.py,sha256=MWQiDmO7ajpUDotb5tYaLr15UFS27E9s4LG-ReMenEc,2014
2536
+ pygpt_net/ui/layout/toolbox/video.py,sha256=2XmLlFns53H65xd_9RaIkCrOdh-ZKQ96MssHgvVaaM0,2197
2537
2537
  pygpt_net/ui/layout/toolbox/vision.py,sha256=E6-lLfU3vrWdlprayr6gxFs7F7AGkn4OIrFXrQ9p5XA,2035
2538
- pygpt_net/ui/main.py,sha256=PYPVQf_5l3CVdsTB7S4lmO3Qs3aEVYhtwuXeOQeGFsM,14311
2538
+ pygpt_net/ui/main.py,sha256=IIxb9UmVBl-hI64rjTTRhnxycQGfHjVzkx9WY5A4Ynk,14418
2539
2539
  pygpt_net/ui/menu/__init__.py,sha256=wAIKG9wLWfYv6tpXCTXptWb_XKoCc-4lYWLDvV1bVYk,508
2540
2540
  pygpt_net/ui/menu/about.py,sha256=BtelbYhpXJGgsoEwsPuw61wVuGkzogpY3FVvWtd09HE,4619
2541
2541
  pygpt_net/ui/menu/audio.py,sha256=3vQhMq8vk_h7yb_Gk2dZMRviFR2PExgR_ynpgOkyl-g,4226
@@ -2584,11 +2584,11 @@ pygpt_net/ui/widget/dialog/rename.py,sha256=HcImKH_gUHcyB1k5llwStmrlXvcSpxgR2V6I
2584
2584
  pygpt_net/ui/widget/dialog/settings.py,sha256=fKzbme2tdxzTSiQMNnCEgyD3lwCzFjLi85ikWulisGw,1614
2585
2585
  pygpt_net/ui/widget/dialog/settings_plugin.py,sha256=Kf1ZK_RY9CAnfeuzPoQ4wgsFb2yQl7X-VKzsYETA55o,1696
2586
2586
  pygpt_net/ui/widget/dialog/snap.py,sha256=4JojKDrDECFbNBnsE0505z336xLVskFz9TK3XF02Mtk,4074
2587
- pygpt_net/ui/widget/dialog/update.py,sha256=YGUouxuEqvO8rkjI52F7wG4R8OgqcpJKB1FVqksOsC4,7453
2587
+ pygpt_net/ui/widget/dialog/update.py,sha256=eaZc160dk_fb7cq5k-dIL635IfoirLptA4XXVdz-ywk,8110
2588
2588
  pygpt_net/ui/widget/dialog/url.py,sha256=7I17Pp9P2c3G1pODEY5dum_AF0nFnu2BMfbWTgEES-M,8765
2589
2589
  pygpt_net/ui/widget/dialog/workdir.py,sha256=D-C3YIt-wCoI-Eh7z--Z4R6P1UvtpkxeiaVcI-ycFck,1523
2590
2590
  pygpt_net/ui/widget/draw/__init__.py,sha256=oSYKtNEGNL0vDjn3wCgdnBAbxUqNGIEIf-75I2DIn7Q,488
2591
- pygpt_net/ui/widget/draw/painter.py,sha256=fQHivp8Uj9L1zjt-ea3F3k0Vl6o7Y-ljkftyL3X8G3Q,52779
2591
+ pygpt_net/ui/widget/draw/painter.py,sha256=oiIrNos6SGLCCFeqEHFLy9hyccQIOQCQwFhVjt_-fYw,60212
2592
2592
  pygpt_net/ui/widget/element/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
2593
2593
  pygpt_net/ui/widget/element/button.py,sha256=rhy8_RVHRV8xl0pegul31z9fNBjjIAi5Nd0hHGF6cF8,4393
2594
2594
  pygpt_net/ui/widget/element/checkbox.py,sha256=qyX6T31c3a8Wb8B4JZwhuejD9SUAFSesdIjZdj4tv8I,2948
@@ -2596,7 +2596,7 @@ pygpt_net/ui/widget/element/group.py,sha256=9wedtjRTls4FdyHSwUblzdtPOaQ0-8djnjTN
2596
2596
  pygpt_net/ui/widget/element/labels.py,sha256=C16DWoWzSt-VFnfLM5Yg7NiM1iVZj6DyttoIShely84,6749
2597
2597
  pygpt_net/ui/widget/element/status.py,sha256=csRP1xzqB2yNyW2wdYQdGy7VVvzBucKHzjZ0DTHI-Q8,1773
2598
2598
  pygpt_net/ui/widget/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2599
- pygpt_net/ui/widget/filesystem/explorer.py,sha256=2fKukiORrp6shL7WPm5flO63mzX4HhSnsGzkW9OjzNw,65253
2599
+ pygpt_net/ui/widget/filesystem/explorer.py,sha256=T-0cQ-jwmlYglo2gKjaj02Q0V5Z6XMiztCB7nqf2rAQ,68297
2600
2600
  pygpt_net/ui/widget/image/__init__.py,sha256=X9-pucLqQF9_ocDV-qNY6EQAJ_4dubGb-7TcWIzCXBo,488
2601
2601
  pygpt_net/ui/widget/image/display.py,sha256=73lBXCdmdAxjCCD2XV3HBdvYU6PgL_PpybweONMOSik,3771
2602
2602
  pygpt_net/ui/widget/lists/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
@@ -2638,7 +2638,7 @@ pygpt_net/ui/widget/option/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5e
2638
2638
  pygpt_net/ui/widget/option/checkbox.py,sha256=duzgGPOVbHFnWILVEu5gDUa6sHeDOvQaaj9IsY-HbU8,3954
2639
2639
  pygpt_net/ui/widget/option/checkbox_list.py,sha256=SgnkLTlVZCcU3ehqAfi_w28x693w_AeNsK-_0k-uOwA,6198
2640
2640
  pygpt_net/ui/widget/option/cmd.py,sha256=Ii_i9hR4oRmG4-TPZ-FHuTv3I1vL96YLcDP2QSKmAbI,5800
2641
- pygpt_net/ui/widget/option/combo.py,sha256=2A4BOBNkMWcHVYFBtTL_0UFWFeZh377X_D-1BUMwd0g,46897
2641
+ pygpt_net/ui/widget/option/combo.py,sha256=d1NIki7rH_Q4BnQ9iBY3lYRKhJYdOIGcuedz_646bxM,53899
2642
2642
  pygpt_net/ui/widget/option/dictionary.py,sha256=ZeaBk-wEZ0SBU_iBBL6eHUEIGOrahh-z2xTa7LBvsdM,14736
2643
2643
  pygpt_net/ui/widget/option/input.py,sha256=-pLXzkOO2OvOoUKTuocbOt8JcPWQO3W3cmrSh0WhJcc,9718
2644
2644
  pygpt_net/ui/widget/option/prompt.py,sha256=SgRd0acp13_c19tWjYYChcGgAwik9tsZKKsX1Ciqgp4,2818
@@ -2669,8 +2669,8 @@ pygpt_net/ui/widget/textarea/web.py,sha256=sVRSmudPwPfjK2h7q-e6Ae4b-677BHLe20t-x
2669
2669
  pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
2670
2670
  pygpt_net/ui/widget/vision/camera.py,sha256=DCx7h1nHruuUkU0Tw8Ay4OUVoNJhkuLsW4hIvGF5Skw,6985
2671
2671
  pygpt_net/utils.py,sha256=r-Dum4brfBaZaHJr-ux86FfdMuMHFwyuUL2bEFirdhc,14649
2672
- pygpt_net-2.7.0.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2673
- pygpt_net-2.7.0.dist-info/METADATA,sha256=j_w0rt8IMMUGTU5MUCKbnbfARb4B2qL5qppkpFxm3dY,169705
2674
- pygpt_net-2.7.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2675
- pygpt_net-2.7.0.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2676
- pygpt_net-2.7.0.dist-info/RECORD,,
2672
+ pygpt_net-2.7.2.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2673
+ pygpt_net-2.7.2.dist-info/METADATA,sha256=f5cbwnrsihuXuJ9Mz5x8caC-PO8u7Zljx4-YpjmvkYc,170907
2674
+ pygpt_net-2.7.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2675
+ pygpt_net-2.7.2.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2676
+ pygpt_net-2.7.2.dist-info/RECORD,,