pygpt-net 2.6.47__py3-none-any.whl → 2.6.48__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 +4 -0
- pygpt_net/__init__.py +1 -1
- pygpt_net/app_core.py +39 -39
- pygpt_net/controller/__init__.py +72 -62
- pygpt_net/controller/ctx/common.py +0 -7
- pygpt_net/controller/ctx/ctx.py +172 -6
- pygpt_net/controller/ctx/extra.py +3 -3
- pygpt_net/controller/settings/editor.py +3 -1
- pygpt_net/controller/theme/common.py +8 -2
- pygpt_net/controller/ui/tabs.py +6 -37
- pygpt_net/core/ctx/ctx.py +79 -26
- pygpt_net/core/tabs/tabs.py +57 -10
- pygpt_net/data/config/config.json +2 -2
- pygpt_net/data/config/models.json +2 -2
- pygpt_net/data/css/web-blocks.css +256 -270
- pygpt_net/data/css/web-chatgpt.css +276 -301
- pygpt_net/data/css/web-chatgpt_wide.css +286 -294
- pygpt_net/provider/core/config/patch.py +9 -0
- pygpt_net/provider/core/ctx/db_sqlite/storage.py +19 -5
- pygpt_net/ui/__init__.py +9 -14
- pygpt_net/ui/layout/chat/chat.py +2 -2
- pygpt_net/ui/layout/ctx/ctx_list.py +71 -1
- pygpt_net/ui/widget/lists/base.py +32 -1
- pygpt_net/ui/widget/lists/context.py +45 -2
- {pygpt_net-2.6.47.dist-info → pygpt_net-2.6.48.dist-info}/METADATA +6 -2
- {pygpt_net-2.6.47.dist-info → pygpt_net-2.6.48.dist-info}/RECORD +29 -29
- {pygpt_net-2.6.47.dist-info → pygpt_net-2.6.48.dist-info}/LICENSE +0 -0
- {pygpt_net-2.6.47.dist-info → pygpt_net-2.6.48.dist-info}/WHEEL +0 -0
- {pygpt_net-2.6.47.dist-info → pygpt_net-2.6.48.dist-info}/entry_points.txt +0 -0
|
@@ -88,6 +88,15 @@ class Patch:
|
|
|
88
88
|
patch_css('web-chatgpt_wide.light.css', True)
|
|
89
89
|
updated = True
|
|
90
90
|
|
|
91
|
+
# < 2.6.48
|
|
92
|
+
if old < parse_version("2.6.48"):
|
|
93
|
+
print("Migrating config from < 2.6.48...")
|
|
94
|
+
# reformat
|
|
95
|
+
patch_css('web-chatgpt.css', True)
|
|
96
|
+
patch_css('web-chatgpt_wide.css', True)
|
|
97
|
+
patch_css('web-blocks.css', True)
|
|
98
|
+
updated = True
|
|
99
|
+
|
|
91
100
|
# update file
|
|
92
101
|
migrated = False
|
|
93
102
|
if updated:
|
|
@@ -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:
|
|
9
|
+
# Updated Date: 2025.09.15 22:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from datetime import datetime
|
|
@@ -109,6 +109,12 @@ class Storage:
|
|
|
109
109
|
continue
|
|
110
110
|
mode = filter.get('mode', '=')
|
|
111
111
|
value = filter.get('value', '')
|
|
112
|
+
|
|
113
|
+
# handle special case for "ungrouped" (group_id IS NULL OR = 0)
|
|
114
|
+
if key == 'group_id' and str(mode).upper() == 'NULL_OR_ZERO':
|
|
115
|
+
where_clauses.append("(m.group_id IS NULL OR m.group_id = 0)")
|
|
116
|
+
continue
|
|
117
|
+
|
|
112
118
|
key_name = 'm.' + key
|
|
113
119
|
if isinstance(value, int):
|
|
114
120
|
where_clauses.append(f"{key_name} {mode} :{key}")
|
|
@@ -116,7 +122,7 @@ class Storage:
|
|
|
116
122
|
elif isinstance(value, str):
|
|
117
123
|
where_clauses.append(f"{key_name} {mode} :{key}")
|
|
118
124
|
bind_params[key] = f"%{value}%"
|
|
119
|
-
elif isinstance(value, list):
|
|
125
|
+
elif isinstance(value, list) and len(value) > 0:
|
|
120
126
|
values = "(" + ",".join([str(x) for x in value]) + ")"
|
|
121
127
|
where_clauses.append(f"{key_name} {mode} {values}")
|
|
122
128
|
|
|
@@ -148,15 +154,21 @@ class Storage:
|
|
|
148
154
|
:return: dict of CtxMeta
|
|
149
155
|
"""
|
|
150
156
|
limit_suffix = ""
|
|
151
|
-
if limit is not None and limit > 0:
|
|
152
|
-
limit_suffix = " LIMIT {}".format(limit)
|
|
153
|
-
|
|
154
157
|
where_statement, join_statement, bind_params = self.prepare_query(
|
|
155
158
|
search_string=search_string,
|
|
156
159
|
filters=filters,
|
|
157
160
|
search_content=search_content,
|
|
158
161
|
append_date_ranges=True,
|
|
159
162
|
)
|
|
163
|
+
|
|
164
|
+
# Build LIMIT/OFFSET only when limit > 0; LIMIT 0 would mean "no rows"
|
|
165
|
+
if limit is not None and int(limit) > 0:
|
|
166
|
+
limit_suffix = " LIMIT :limit"
|
|
167
|
+
bind_params['limit'] = int(limit)
|
|
168
|
+
if offset is not None and int(offset) > 0:
|
|
169
|
+
limit_suffix += " OFFSET :offset"
|
|
170
|
+
bind_params['offset'] = int(offset)
|
|
171
|
+
|
|
160
172
|
stmt_text = f"""
|
|
161
173
|
SELECT
|
|
162
174
|
m.*,
|
|
@@ -168,6 +180,8 @@ class Storage:
|
|
|
168
180
|
{join_statement}
|
|
169
181
|
WHERE
|
|
170
182
|
{where_statement}
|
|
183
|
+
GROUP BY
|
|
184
|
+
m.id
|
|
171
185
|
ORDER BY
|
|
172
186
|
m.updated_ts DESC {limit_suffix}
|
|
173
187
|
"""
|
pygpt_net/ui/__init__.py
CHANGED
|
@@ -16,13 +16,13 @@ from PySide6.QtCore import Qt, QTimer
|
|
|
16
16
|
from PySide6.QtGui import QFontDatabase, QIcon
|
|
17
17
|
from PySide6.QtWidgets import QSplitter, QMessageBox
|
|
18
18
|
|
|
19
|
-
from
|
|
20
|
-
from
|
|
21
|
-
from
|
|
22
|
-
from
|
|
23
|
-
from
|
|
24
|
-
from
|
|
25
|
-
from
|
|
19
|
+
from .base.context_menu import ContextMenu
|
|
20
|
+
from .dialogs import Dialogs
|
|
21
|
+
from .layout.chat import ChatMain
|
|
22
|
+
from .layout.ctx import CtxMain
|
|
23
|
+
from .layout.toolbox import ToolboxMain
|
|
24
|
+
from .menu import Menu
|
|
25
|
+
from .tray import Tray
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class UI:
|
|
@@ -139,12 +139,7 @@ class UI:
|
|
|
139
139
|
suffix = self.window.core.platforms.get_env_suffix()
|
|
140
140
|
profile_name = self.window.core.config.profile.get_current_name()
|
|
141
141
|
self.window.setWindowTitle(
|
|
142
|
-
|
|
143
|
-
self.window.meta['version'],
|
|
144
|
-
self.window.meta['build'].replace('.', '-'),
|
|
145
|
-
suffix,
|
|
146
|
-
profile_name,
|
|
147
|
-
)
|
|
142
|
+
f"PyGPT - Desktop AI Assistant {self.window.meta['version']} | build {self.window.meta['build'].replace('.', '-')}{suffix} ({profile_name})"
|
|
148
143
|
)
|
|
149
144
|
|
|
150
145
|
def post_setup(self):
|
|
@@ -164,7 +159,7 @@ class UI:
|
|
|
164
159
|
return
|
|
165
160
|
msg = str(text)
|
|
166
161
|
msg = msg.replace("\n", " ")
|
|
167
|
-
status = msg[:self.STATUS_MAX_CHARS]
|
|
162
|
+
status = f"{msg[:self.STATUS_MAX_CHARS]}..." if len(msg) > self.STATUS_MAX_CHARS else msg # truncate
|
|
168
163
|
self.nodes['status'].setText(status)
|
|
169
164
|
|
|
170
165
|
def get_status(self):
|
pygpt_net/ui/layout/chat/chat.py
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
from PySide6.QtCore import Qt, Slot
|
|
13
13
|
from PySide6.QtWidgets import QSplitter
|
|
14
14
|
|
|
15
|
-
from
|
|
16
|
-
from
|
|
15
|
+
from .input import Input
|
|
16
|
+
from .output import Output
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class ChatMain:
|
|
@@ -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.
|
|
9
|
+
# Updated Date: 2025.09.15 22:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from PySide6 import QtCore
|
|
@@ -113,9 +113,79 @@ class CtxList:
|
|
|
113
113
|
self.update_items_pinned(id, data)
|
|
114
114
|
self.update_items(id, data)
|
|
115
115
|
self.update_groups(id, data, expand=expand)
|
|
116
|
+
|
|
117
|
+
# APPLY PENDING SCROLL BEFORE RE-ENABLING UPDATES (prevents top flicker)
|
|
118
|
+
try:
|
|
119
|
+
node.apply_pending_scroll()
|
|
120
|
+
node.clear_pending_scroll()
|
|
121
|
+
except Exception:
|
|
122
|
+
pass
|
|
116
123
|
finally:
|
|
117
124
|
node.setUpdatesEnabled(True)
|
|
118
125
|
|
|
126
|
+
def _find_first_group_row(self, model) -> int:
|
|
127
|
+
"""Find the row index of the first GroupItem; return -1 if none."""
|
|
128
|
+
for r in range(model.rowCount()):
|
|
129
|
+
it = model.item(r)
|
|
130
|
+
if isinstance(it, GroupItem):
|
|
131
|
+
return r
|
|
132
|
+
return -1
|
|
133
|
+
|
|
134
|
+
def append_unpaginated(self, id: str, data: dict, add_ids: list[int]):
|
|
135
|
+
"""
|
|
136
|
+
Append more ungrouped and not pinned items without rebuilding the model.
|
|
137
|
+
Keeps scroll position perfectly stable.
|
|
138
|
+
"""
|
|
139
|
+
if not add_ids:
|
|
140
|
+
return
|
|
141
|
+
node = self.window.ui.nodes[id]
|
|
142
|
+
model = self.window.ui.models[id]
|
|
143
|
+
|
|
144
|
+
folders_top = bool(self.window.core.config.get("ctx.records.folders.top"))
|
|
145
|
+
# decide insertion point: at the end, or just before the first group row
|
|
146
|
+
insert_pos = model.rowCount()
|
|
147
|
+
if not folders_top:
|
|
148
|
+
grp_idx = self._find_first_group_row(model)
|
|
149
|
+
insert_pos = grp_idx if grp_idx >= 0 else model.rowCount()
|
|
150
|
+
|
|
151
|
+
# find last dt of existing ungrouped area before insertion point (for date sections)
|
|
152
|
+
last_dt_str = None
|
|
153
|
+
for r in range(insert_pos - 1, -1, -1):
|
|
154
|
+
it = model.item(r)
|
|
155
|
+
if isinstance(it, Item):
|
|
156
|
+
data_role = it.data(QtCore.Qt.ItemDataRole.UserRole) or {}
|
|
157
|
+
if not data_role.get("in_group", False) and not data_role.get("is_important", False):
|
|
158
|
+
last_dt_str = getattr(it, "dt", None)
|
|
159
|
+
break
|
|
160
|
+
elif isinstance(it, GroupItem):
|
|
161
|
+
break # hit groups boundary going upwards
|
|
162
|
+
else:
|
|
163
|
+
# SectionItem or others – skip
|
|
164
|
+
continue
|
|
165
|
+
|
|
166
|
+
node.setUpdatesEnabled(False)
|
|
167
|
+
try:
|
|
168
|
+
# append strictly in the order provided by add_ids (older first)
|
|
169
|
+
for mid in add_ids:
|
|
170
|
+
meta = data.get(mid)
|
|
171
|
+
if meta is None:
|
|
172
|
+
continue
|
|
173
|
+
item = self.build_item(mid, meta, is_group=False)
|
|
174
|
+
|
|
175
|
+
# Optional date sections (same logic as in update_items)
|
|
176
|
+
if self._group_separators and (not item.isPinned or self._pinned_separators):
|
|
177
|
+
if last_dt_str is None or last_dt_str != item.dt:
|
|
178
|
+
section = self.build_date_section(item.dt, group=False)
|
|
179
|
+
if section:
|
|
180
|
+
model.insertRow(insert_pos, section)
|
|
181
|
+
insert_pos += 1
|
|
182
|
+
last_dt_str = item.dt
|
|
183
|
+
|
|
184
|
+
model.insertRow(insert_pos, item)
|
|
185
|
+
insert_pos += 1
|
|
186
|
+
finally:
|
|
187
|
+
node.setUpdatesEnabled(True)
|
|
188
|
+
|
|
119
189
|
def update_items(self, id, data):
|
|
120
190
|
"""
|
|
121
191
|
Update items
|
|
@@ -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.
|
|
9
|
+
# Updated Date: 2025.09.15 22:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from PySide6.QtCore import QItemSelectionModel
|
|
@@ -36,6 +36,10 @@ class BaseList(QTreeView):
|
|
|
36
36
|
self.v_scroll_value = 0
|
|
37
37
|
self.h_scroll_value = 0
|
|
38
38
|
|
|
39
|
+
# pending scroll values applied while updates are disabled (to avoid top flicker)
|
|
40
|
+
self._pending_v_scroll_value = None
|
|
41
|
+
self._pending_h_scroll_value = None
|
|
42
|
+
|
|
39
43
|
def click(self, val):
|
|
40
44
|
self.window.controller.mode.select(self.id)
|
|
41
45
|
self.selection = self.selectionModel().selection()
|
|
@@ -103,3 +107,30 @@ class BaseList(QTreeView):
|
|
|
103
107
|
"""Restore scroll position"""
|
|
104
108
|
self.verticalScrollBar().setValue(self.v_scroll_value)
|
|
105
109
|
self.horizontalScrollBar().setValue(self.h_scroll_value)
|
|
110
|
+
|
|
111
|
+
def set_pending_v_scroll(self, value: int):
|
|
112
|
+
"""
|
|
113
|
+
Set vertical scroll value to apply while updates are disabled.
|
|
114
|
+
This prevents a visible jump to the top during model rebuild.
|
|
115
|
+
"""
|
|
116
|
+
self._pending_v_scroll_value = int(value)
|
|
117
|
+
|
|
118
|
+
def set_pending_h_scroll(self, value: int):
|
|
119
|
+
"""Optional: set horizontal pending value."""
|
|
120
|
+
self._pending_h_scroll_value = int(value)
|
|
121
|
+
|
|
122
|
+
def clear_pending_scroll(self):
|
|
123
|
+
"""Clear pending scroll values."""
|
|
124
|
+
self._pending_v_scroll_value = None
|
|
125
|
+
self._pending_h_scroll_value = None
|
|
126
|
+
|
|
127
|
+
def apply_pending_scroll(self):
|
|
128
|
+
"""
|
|
129
|
+
Apply pending scroll values immediately.
|
|
130
|
+
IMPORTANT: Call this before re-enabling updates to avoid repaint at top.
|
|
131
|
+
"""
|
|
132
|
+
if self._pending_v_scroll_value is not None:
|
|
133
|
+
self.verticalScrollBar().setValue(self._pending_v_scroll_value)
|
|
134
|
+
if self._pending_h_scroll_value is not None:
|
|
135
|
+
self.horizontalScrollBar().setValue(self._pending_h_scroll_value)
|
|
136
|
+
# do not clear here; let caller decide when to clear
|
|
@@ -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.
|
|
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
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pygpt-net
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.48
|
|
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
|
[](https://snapcraft.io/pygpt)
|
|
120
120
|
|
|
121
|
-
Release: **2.6.
|
|
121
|
+
Release: **2.6.48** | build: **2025-09-15** | Python: **>=3.10, <3.14**
|
|
122
122
|
|
|
123
123
|
> Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
|
|
124
124
|
>
|
|
@@ -3612,6 +3612,10 @@ may consume additional tokens that are not displayed in the main window.
|
|
|
3612
3612
|
|
|
3613
3613
|
## Recent changes:
|
|
3614
3614
|
|
|
3615
|
+
**2.6.48 (2025-09-15)**
|
|
3616
|
+
|
|
3617
|
+
- Added: auto-loading of next items to the list of contexts when scrolling to the end of the list.
|
|
3618
|
+
|
|
3615
3619
|
**2.6.47 (2025-09-15)**
|
|
3616
3620
|
|
|
3617
3621
|
- Improved: Parsing of custom markup tags.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
pygpt_net/CHANGELOG.txt,sha256=
|
|
1
|
+
pygpt_net/CHANGELOG.txt,sha256=nkKLzPZGyGTI2MiFPCaFRWDXarnV1idNnrd2_5ZSfOY,106248
|
|
2
2
|
pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
|
|
3
|
-
pygpt_net/__init__.py,sha256=
|
|
3
|
+
pygpt_net/__init__.py,sha256=in6Dc_96ApNHm7bEI0zUiJCtcqyQj2Rxrwvq1LQLm1Q,1373
|
|
4
4
|
pygpt_net/app.py,sha256=prS80WfKSu8U_Ox9oUdxgzgHgRB1nvQQAMFTNltiECY,21954
|
|
5
|
-
pygpt_net/app_core.py,sha256=
|
|
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=
|
|
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=
|
|
75
|
-
pygpt_net/controller/ctx/ctx.py,sha256=
|
|
76
|
-
pygpt_net/controller/ctx/extra.py,sha256=
|
|
74
|
+
pygpt_net/controller/ctx/common.py,sha256=1oR7cUgVzO_asqiRln4L4vZaxXsssAPtGyAp-B0FUE4,6409
|
|
75
|
+
pygpt_net/controller/ctx/ctx.py,sha256=m2Obm6l7dW7umdS89xz3r2V57oJQnLuqaz1ls7BqUvY,46152
|
|
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=
|
|
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
|
|
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=
|
|
149
|
+
pygpt_net/controller/ui/tabs.py,sha256=Zm08Azux-m00Yg4F2aPyyx3Zk3KNXxHd5yBpXSa7ylg,29242
|
|
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=
|
|
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
|
|
@@ -360,7 +360,7 @@ pygpt_net/core/settings/__init__.py,sha256=GQ6_gJ2jf_Chm7ZuZLvkcvEh_sfMDVMBieeoJ
|
|
|
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=
|
|
363
|
+
pygpt_net/core/tabs/tabs.py,sha256=1ZXr29hf5CHT5k6vtZfoGQk1U274enDgw_l-7WeT1Zw,32786
|
|
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=
|
|
399
|
-
pygpt_net/data/config/models.json,sha256=
|
|
398
|
+
pygpt_net/data/config/config.json,sha256=9Mf-6mkX3gbGUS7ozcnaq38U7Xn4YaojLpPbJ1yjqyE,30845
|
|
399
|
+
pygpt_net/data/config/models.json,sha256=10vP2grytO1djdniFLxS2K3uUvvjPdkCdNmrPugMW1M,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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
@@ -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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
@@ -2570,8 +2570,8 @@ pygpt_net/ui/widget/textarea/web.py,sha256=t6ZppPxmkpw6z2hgL0w0-0EF_ez_0ZPi-JYWi
|
|
|
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.
|
|
2574
|
-
pygpt_net-2.6.
|
|
2575
|
-
pygpt_net-2.6.
|
|
2576
|
-
pygpt_net-2.6.
|
|
2577
|
-
pygpt_net-2.6.
|
|
2573
|
+
pygpt_net-2.6.48.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
|
|
2574
|
+
pygpt_net-2.6.48.dist-info/METADATA,sha256=SJJStYIxg52hrjfdNCw-suGv3WT4cBv2se5k5Q5gpKE,163206
|
|
2575
|
+
pygpt_net-2.6.48.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
2576
|
+
pygpt_net-2.6.48.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
|
|
2577
|
+
pygpt_net-2.6.48.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|