pygpt-net 2.6.64__py3-none-any.whl → 2.6.66__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 +21 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/app.py +5 -1
- pygpt_net/controller/chat/chat.py +0 -0
- pygpt_net/controller/chat/handler/openai_stream.py +137 -7
- pygpt_net/controller/chat/render.py +0 -0
- pygpt_net/controller/config/field/checkbox_list.py +34 -1
- pygpt_net/controller/files/files.py +71 -2
- pygpt_net/controller/media/media.py +20 -1
- pygpt_net/controller/presets/editor.py +137 -22
- pygpt_net/controller/presets/presets.py +4 -1
- pygpt_net/controller/ui/mode.py +14 -10
- pygpt_net/controller/ui/ui.py +18 -1
- pygpt_net/core/agents/custom/__init__.py +18 -2
- pygpt_net/core/agents/custom/runner.py +2 -2
- pygpt_net/core/attachments/clipboard.py +146 -0
- pygpt_net/core/image/image.py +34 -1
- pygpt_net/core/render/web/renderer.py +33 -11
- pygpt_net/core/tabs/tabs.py +0 -0
- pygpt_net/core/types/image.py +61 -3
- pygpt_net/data/config/config.json +4 -3
- pygpt_net/data/config/models.json +629 -41
- pygpt_net/data/css/style.dark.css +12 -0
- pygpt_net/data/css/style.light.css +12 -0
- pygpt_net/data/icons/pin2.svg +1 -0
- pygpt_net/data/icons/pin3.svg +3 -0
- pygpt_net/data/icons/point.svg +1 -0
- pygpt_net/data/icons/target.svg +1 -0
- pygpt_net/data/js/app/ui.js +19 -2
- pygpt_net/data/js/app/user.js +22 -54
- pygpt_net/data/js/app.min.js +7 -9
- pygpt_net/data/locale/locale.de.ini +4 -0
- pygpt_net/data/locale/locale.en.ini +8 -0
- pygpt_net/data/locale/locale.es.ini +4 -0
- pygpt_net/data/locale/locale.fr.ini +4 -0
- pygpt_net/data/locale/locale.it.ini +4 -0
- pygpt_net/data/locale/locale.pl.ini +4 -0
- pygpt_net/data/locale/locale.uk.ini +4 -0
- pygpt_net/data/locale/locale.zh.ini +4 -0
- pygpt_net/icons.qrc +4 -0
- pygpt_net/icons_rc.py +274 -137
- pygpt_net/item/model.py +15 -19
- pygpt_net/js_rc.py +2038 -2075
- pygpt_net/provider/agents/openai/agent.py +0 -0
- pygpt_net/provider/api/google/__init__.py +20 -9
- pygpt_net/provider/api/google/image.py +161 -28
- pygpt_net/provider/api/google/video.py +73 -36
- pygpt_net/provider/api/openai/__init__.py +21 -11
- pygpt_net/provider/api/openai/agents/client.py +0 -0
- pygpt_net/provider/api/openai/video.py +562 -0
- pygpt_net/provider/core/config/patch.py +15 -0
- pygpt_net/provider/core/model/patch.py +29 -3
- pygpt_net/provider/vector_stores/qdrant.py +117 -0
- pygpt_net/ui/__init__.py +6 -1
- pygpt_net/ui/dialog/preset.py +9 -4
- pygpt_net/ui/layout/chat/attachments.py +18 -1
- pygpt_net/ui/layout/status.py +3 -3
- pygpt_net/ui/layout/toolbox/raw.py +7 -1
- pygpt_net/ui/widget/element/status.py +55 -0
- pygpt_net/ui/widget/filesystem/explorer.py +116 -2
- pygpt_net/ui/widget/lists/context.py +26 -16
- pygpt_net/ui/widget/option/checkbox_list.py +14 -2
- pygpt_net/ui/widget/textarea/input.py +71 -17
- {pygpt_net-2.6.64.dist-info → pygpt_net-2.6.66.dist-info}/METADATA +76 -25
- {pygpt_net-2.6.64.dist-info → pygpt_net-2.6.66.dist-info}/RECORD +63 -55
- {pygpt_net-2.6.64.dist-info → pygpt_net-2.6.66.dist-info}/LICENSE +0 -0
- {pygpt_net-2.6.64.dist-info → pygpt_net-2.6.66.dist-info}/WHEEL +0 -0
- {pygpt_net-2.6.64.dist-info → pygpt_net-2.6.66.dist-info}/entry_points.txt +0 -0
|
@@ -29,6 +29,13 @@ QListView::item {{
|
|
|
29
29
|
padding: 4px;
|
|
30
30
|
min-height: 20px;
|
|
31
31
|
}}
|
|
32
|
+
|
|
33
|
+
/* Subtle hover for list/tree items (non-selected) */
|
|
34
|
+
QListView::item:hover:!selected,
|
|
35
|
+
QTreeView::item:hover:!selected {{
|
|
36
|
+
background-color: rgba(255, 255, 255, 5);
|
|
37
|
+
}}
|
|
38
|
+
|
|
32
39
|
QListView::item:selected,
|
|
33
40
|
QTreeView::item:selected {{
|
|
34
41
|
color: #ffffff;
|
|
@@ -162,4 +169,9 @@ NodeEditor {{
|
|
|
162
169
|
|
|
163
170
|
qproperty-edgeColor: #c0c0c0;
|
|
164
171
|
qproperty-edgeSelectedColor: #ff8a5c;
|
|
172
|
+
}}
|
|
173
|
+
|
|
174
|
+
/* Status Bar */
|
|
175
|
+
#StatusBarTimer {{
|
|
176
|
+
color: #999 !important;
|
|
165
177
|
}}
|
|
@@ -82,6 +82,13 @@ QListView::item {{
|
|
|
82
82
|
padding: 4px;
|
|
83
83
|
min-height: 20px;
|
|
84
84
|
}}
|
|
85
|
+
|
|
86
|
+
/* Subtle hover for list/tree items (non-selected) */
|
|
87
|
+
QListView::item:hover:!selected,
|
|
88
|
+
QTreeView::item:hover:!selected {{
|
|
89
|
+
background-color: #f6f8fb;
|
|
90
|
+
}}
|
|
91
|
+
|
|
85
92
|
QCalendarWidget QWidget {{
|
|
86
93
|
background: #fff;
|
|
87
94
|
}}
|
|
@@ -278,4 +285,9 @@ NodeEditor {{
|
|
|
278
285
|
|
|
279
286
|
qproperty-edgeColor: #c0c0c0;
|
|
280
287
|
qproperty-edgeSelectedColor: #ff8a5c;
|
|
288
|
+
}}
|
|
289
|
+
|
|
290
|
+
/* Status Bar */
|
|
291
|
+
#StatusBarTimer {{
|
|
292
|
+
color: #5d5d5d !important;
|
|
281
293
|
}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="m640-480 80 80v80H520v240l-40 40-40-40v-240H240v-80l80-80v-280h-40v-80h400v80h-40v280Zm-286 80h252l-46-46v-314H400v314l-46 46Zm126 0Z"/></svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="24px" height="24px" fill="#686868" version="1.1" viewBox="0 -960 960 960" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="m621.42-355.15v113.14l-56.569 56.569-141.42-141.42-169.71 169.71h-56.569v-56.569l169.71-169.71-141.42-141.42 56.569-56.569h113.14l197.99-197.99-28.284-28.284 56.569-56.569 282.84 282.84-56.569 56.569-28.284-28.284zm-258.8-145.66 178.19 178.19v-65.054l222.03-222.03-113.14-113.14-222.03 222.03z"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M480-400q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm-40-240v-200h80v200h-80Zm0 520v-200h80v200h-80Zm200-320v-80h200v80H640Zm-520 0v-80h200v80H120Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#686868"><path d="M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-80q-100 0-170-70t-70-170q0-100 70-170t170-70q100 0 170 70t70 170q0 100-70 170t-170 70Zm0-80q66 0 113-47t47-113q0-66-47-113t-113-47q-66 0-113 47t-47 113q0 66 47 113t113 47Zm0-80q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Z"/></svg>
|
pygpt_net/data/js/app/ui.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// app/ui.js
|
|
2
|
+
|
|
1
3
|
// ==========================================================================
|
|
2
4
|
// UI manager
|
|
3
5
|
// ==========================================================================
|
|
@@ -30,10 +32,25 @@ class UIManager {
|
|
|
30
32
|
'#_loader_.hidden { display: none !important; visibility: hidden !important; }',
|
|
31
33
|
'#_loader_.visible { display: block; visibility: visible; }',
|
|
32
34
|
|
|
33
|
-
/* User message collapse (uc-*)
|
|
35
|
+
/* User message collapse (uc-*)
|
|
36
|
+
Collapsed content now fades out towards the bottom using a CSS mask.
|
|
37
|
+
This removes the need for an inline "..." overlay and works in light/dark themes. */
|
|
34
38
|
'.msg-box.msg-user .msg { position: relative; }',
|
|
35
39
|
'.msg-box.msg-user .msg > .uc-content { display: block; overflow: visible; }',
|
|
36
|
-
'.msg-box.msg-user .msg > .uc-content.uc-collapsed {
|
|
40
|
+
'.msg-box.msg-user .msg > .uc-content.uc-collapsed {',
|
|
41
|
+
' max-height: var(--user-msg-collapse-max-h, 1000px);',
|
|
42
|
+
' overflow: hidden;',
|
|
43
|
+
' -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,1) calc(100% - var(--uc-fade-height, 64px)), rgba(0,0,0,0) 100%);',
|
|
44
|
+
' mask-image: linear-gradient(to bottom, rgba(0,0,0,1) calc(100% - var(--uc-fade-height, 64px)), rgba(0,0,0,0) 100%);',
|
|
45
|
+
' -webkit-mask-size: 100% 100%;',
|
|
46
|
+
' mask-size: 100% 100%;',
|
|
47
|
+
' -webkit-mask-repeat: no-repeat;',
|
|
48
|
+
' mask-repeat: no-repeat;',
|
|
49
|
+
'}',
|
|
50
|
+
'.msg-box.msg-user .msg > .uc-content.uc-expanded {',
|
|
51
|
+
' -webkit-mask-image: none;',
|
|
52
|
+
' mask-image: none;',
|
|
53
|
+
'}',
|
|
37
54
|
'.msg-box.msg-user .msg > .uc-toggle { display: none; margin-top: 8px; text-align: center; cursor: pointer; user-select: none; }',
|
|
38
55
|
'.msg-box.msg-user .msg > .uc-toggle.visible { display: block; }',
|
|
39
56
|
|
pygpt_net/data/js/app/user.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// app/user.js
|
|
2
|
+
|
|
1
3
|
// ==========================================================================
|
|
2
4
|
// User collapse manager
|
|
3
5
|
// ==========================================================================
|
|
@@ -12,8 +14,7 @@ class UserCollapseManager {
|
|
|
12
14
|
// Track processed .msg elements to allow cheap remeasure on resize if needed.
|
|
13
15
|
this._processed = new Set();
|
|
14
16
|
|
|
15
|
-
// Visual indicator
|
|
16
|
-
this.ellipsisText = ' [...]';
|
|
17
|
+
// Visual indicator is now purely CSS-based (mask fade) – no inline "..." text injected anymore.
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
// Icon paths for the collapse/expand buttons.
|
|
@@ -158,60 +159,27 @@ class UserCollapseManager {
|
|
|
158
159
|
};
|
|
159
160
|
}
|
|
160
161
|
|
|
161
|
-
//
|
|
162
|
+
// Previously created an inline "..." indicator; now acts as a no-op and cleans legacy nodes if present.
|
|
162
163
|
_ensureEllipsisEl(msg, contentEl) {
|
|
163
164
|
const content = contentEl || (msg && msg.querySelector('.uc-content'));
|
|
164
165
|
if (!content) return null;
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (!dot) {
|
|
173
|
-
dot = document.createElement('span');
|
|
174
|
-
dot.className = 'uc-ellipsis';
|
|
175
|
-
dot.textContent = this.ellipsisText;
|
|
176
|
-
// Inline, theme-agnostic styles; kept minimal and non-interactive.
|
|
177
|
-
dot.style.position = 'absolute';
|
|
178
|
-
dot.style.right = '0';
|
|
179
|
-
dot.style.bottom = '0';
|
|
180
|
-
dot.style.paddingLeft = '6px';
|
|
181
|
-
dot.style.pointerEvents = 'none';
|
|
182
|
-
dot.style.zIndex = '1';
|
|
183
|
-
dot.style.fontWeight = '500';
|
|
184
|
-
dot.style.opacity = '0.75';
|
|
185
|
-
// Do not include in copy-to-clipboard.
|
|
186
|
-
dot.setAttribute('aria-hidden', 'true');
|
|
187
|
-
dot.setAttribute('data-copy-ignore', '1');
|
|
188
|
-
|
|
189
|
-
content.appendChild(dot);
|
|
190
|
-
}
|
|
191
|
-
return dot;
|
|
166
|
+
try {
|
|
167
|
+
const legacy = content.querySelector('.uc-ellipsis');
|
|
168
|
+
if (legacy && legacy.parentNode) {
|
|
169
|
+
legacy.parentNode.removeChild(legacy);
|
|
170
|
+
}
|
|
171
|
+
} catch (_) {}
|
|
172
|
+
return null;
|
|
192
173
|
}
|
|
193
174
|
|
|
194
|
-
//
|
|
175
|
+
// No visual node is needed anymore; fade is applied via CSS on .uc-collapsed.
|
|
195
176
|
_showEllipsis(msg, contentEl) {
|
|
196
|
-
|
|
197
|
-
if (dot) dot.style.display = 'inline';
|
|
177
|
+
this._ensureEllipsisEl(msg, contentEl);
|
|
198
178
|
}
|
|
199
|
-
|
|
200
|
-
//
|
|
179
|
+
|
|
180
|
+
// No visual node is needed anymore; keep DOM lean and clean any legacy nodes.
|
|
201
181
|
_hideEllipsis(msg) {
|
|
202
|
-
|
|
203
|
-
if (!content) return;
|
|
204
|
-
const dot = content.querySelector('.uc-ellipsis');
|
|
205
|
-
if (dot && dot.parentNode) {
|
|
206
|
-
// Remove the indicator to avoid accidental copy/select and keep DOM lean.
|
|
207
|
-
dot.parentNode.removeChild(dot);
|
|
208
|
-
}
|
|
209
|
-
// Drop positioning context when no indicator is present (keep styles minimal).
|
|
210
|
-
try {
|
|
211
|
-
if (content && content.style && content.querySelector('.uc-ellipsis') == null) {
|
|
212
|
-
content.style.position = '';
|
|
213
|
-
}
|
|
214
|
-
} catch (_) {}
|
|
182
|
+
this._ensureEllipsisEl(msg, null);
|
|
215
183
|
}
|
|
216
184
|
|
|
217
185
|
// Apply collapse to all user messages under root.
|
|
@@ -247,7 +215,7 @@ class UserCollapseManager {
|
|
|
247
215
|
c.classList.remove('uc-expanded'); // No class => fully expanded by default CSS.
|
|
248
216
|
msg.dataset.ucState = 'expanded';
|
|
249
217
|
|
|
250
|
-
// Hide ellipsis in disabled mode.
|
|
218
|
+
// Hide ellipsis in disabled mode (no-op, CSS fade not applied without .uc-collapsed).
|
|
251
219
|
this._hideEllipsis(msg);
|
|
252
220
|
|
|
253
221
|
// Hide toggle in disabled mode to avoid user interaction.
|
|
@@ -279,10 +247,10 @@ class UserCollapseManager {
|
|
|
279
247
|
|
|
280
248
|
if (expand) {
|
|
281
249
|
c.classList.add('uc-expanded');
|
|
282
|
-
this._hideEllipsis(msg); // Expanded =>
|
|
250
|
+
this._hideEllipsis(msg); // Expanded => nothing to show (CSS fade applies only to .uc-collapsed)
|
|
283
251
|
} else {
|
|
284
252
|
c.classList.add('uc-collapsed');
|
|
285
|
-
this._showEllipsis(msg, c); // Collapsed =>
|
|
253
|
+
this._showEllipsis(msg, c); // Collapsed => CSS fade handled by stylesheet
|
|
286
254
|
}
|
|
287
255
|
|
|
288
256
|
if (t) {
|
|
@@ -300,7 +268,7 @@ class UserCollapseManager {
|
|
|
300
268
|
t.title = expand ? labels.collapse : labels.expand;
|
|
301
269
|
}
|
|
302
270
|
} else {
|
|
303
|
-
// Short content – ensure fully expanded and hide toggle + ellipsis.
|
|
271
|
+
// Short content – ensure fully expanded and hide toggle + (legacy) ellipsis cleanup.
|
|
304
272
|
c.classList.remove('uc-collapsed');
|
|
305
273
|
c.classList.remove('uc-expanded');
|
|
306
274
|
msg.dataset.ucState = 'expanded';
|
|
@@ -331,7 +299,7 @@ class UserCollapseManager {
|
|
|
331
299
|
|
|
332
300
|
const isCollapsed = c.classList.contains('uc-collapsed');
|
|
333
301
|
if (isCollapsed) {
|
|
334
|
-
// Expand – leave scroll as-is
|
|
302
|
+
// Expand – leave scroll as-is.
|
|
335
303
|
c.classList.remove('uc-collapsed');
|
|
336
304
|
c.classList.add('uc-expanded');
|
|
337
305
|
msg.dataset.ucState = 'expanded';
|
|
@@ -346,7 +314,7 @@ class UserCollapseManager {
|
|
|
346
314
|
}
|
|
347
315
|
}
|
|
348
316
|
} else {
|
|
349
|
-
// Collapse – apply classes,
|
|
317
|
+
// Collapse – apply classes, then bring toggle into view (scroll up if needed).
|
|
350
318
|
c.classList.remove('uc-expanded');
|
|
351
319
|
c.classList.add('uc-collapsed');
|
|
352
320
|
msg.dataset.ucState = 'collapsed';
|
pygpt_net/data/js/app.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* app.min.js — generated on 2025-09-
|
|
1
|
+
/* app.min.js — generated on 2025-09-28 09:12:33 by bin/minify_js.py using rjsmin */
|
|
2
2
|
|
|
3
3
|
/* data/js/app/async.js */
|
|
4
4
|
class AsyncRunner{constructor(cfg,raf){this.cfg=cfg||{};this.raf=raf||null;const A=this.cfg.ASYNC||{};this.SLICE_MS=Utils.g('ASYNC_SLICE_MS',A.SLICE_MS??12);this.SLICE_HIDDEN_MS=Utils.g('ASYNC_SLICE_HIDDEN_MS',A.SLICE_HIDDEN_MS??Math.min(this.SLICE_MS,6));this.MIN_YIELD_MS=Utils.g('ASYNC_MIN_YIELD_MS',A.MIN_YIELD_MS??0);this._opGen=new Map();}
|
|
@@ -804,7 +804,7 @@ toggle(id){const el=document.getElementById('msg-bot-'+id);if(!el)return;const o
|
|
|
804
804
|
/* data/js/app/ui.js */
|
|
805
805
|
class UIManager{updateCSS(styles){let style=document.getElementById('app-style');if(!style){style=document.createElement('style');style.id='app-style';document.head.appendChild(style);}
|
|
806
806
|
style.textContent=styles;}
|
|
807
|
-
ensureStickyHeaderStyle(){let style=document.getElementById('code-sticky-style');if(style)return;style=document.createElement('style');style.id='code-sticky-style';style.textContent=['.code-wrapper { position: relative; }','.code-wrapper .code-header-wrapper { position: sticky; top: var(--code-header-sticky-top, -2px); z-index: 2; box-shadow: 0 1px 0 rgba(0,0,0,.06); }','.code-wrapper pre { overflow: visible; margin-top: 0; }','.code-wrapper pre code { display: block; white-space: pre; max-height: 100dvh; overflow: auto;',' overscroll-behavior: contain; -webkit-overflow-scrolling: touch; overflow-anchor: none; scrollbar-gutter: stable both-edges; scroll-behavior: auto; }','#_loader_.hidden { display: none !important; visibility: hidden !important; }','#_loader_.visible { display: block; visibility: visible; }','.msg-box.msg-user .msg { position: relative; }','.msg-box.msg-user .msg > .uc-content { display: block; overflow: visible; }','.msg-box.msg-user .msg > .uc-content.uc-collapsed {
|
|
807
|
+
ensureStickyHeaderStyle(){let style=document.getElementById('code-sticky-style');if(style)return;style=document.createElement('style');style.id='code-sticky-style';style.textContent=['.code-wrapper { position: relative; }','.code-wrapper .code-header-wrapper { position: sticky; top: var(--code-header-sticky-top, -2px); z-index: 2; box-shadow: 0 1px 0 rgba(0,0,0,.06); }','.code-wrapper pre { overflow: visible; margin-top: 0; }','.code-wrapper pre code { display: block; white-space: pre; max-height: 100dvh; overflow: auto;',' overscroll-behavior: contain; -webkit-overflow-scrolling: touch; overflow-anchor: none; scrollbar-gutter: stable both-edges; scroll-behavior: auto; }','#_loader_.hidden { display: none !important; visibility: hidden !important; }','#_loader_.visible { display: block; visibility: visible; }','.msg-box.msg-user .msg { position: relative; }','.msg-box.msg-user .msg > .uc-content { display: block; overflow: visible; }','.msg-box.msg-user .msg > .uc-content.uc-collapsed {',' max-height: var(--user-msg-collapse-max-h, 1000px);',' overflow: hidden;',' -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,1) calc(100% - var(--uc-fade-height, 64px)), rgba(0,0,0,0) 100%);',' mask-image: linear-gradient(to bottom, rgba(0,0,0,1) calc(100% - var(--uc-fade-height, 64px)), rgba(0,0,0,0) 100%);',' -webkit-mask-size: 100% 100%;',' mask-size: 100% 100%;',' -webkit-mask-repeat: no-repeat;',' mask-repeat: no-repeat;','}','.msg-box.msg-user .msg > .uc-content.uc-expanded {',' -webkit-mask-image: none;',' mask-image: none;','}','.msg-box.msg-user .msg > .uc-toggle { display: none; margin-top: 8px; text-align: center; cursor: pointer; user-select: none; }','.msg-box.msg-user .msg > .uc-toggle.visible { display: block; }','.msg-box.msg-user .msg > .uc-toggle img { width: var(--uc-toggle-icon-size, 26px); height: var(--uc-toggle-icon-size, 26px); opacity: .8; }','.msg-box.msg-user .msg > .uc-toggle:hover img { opacity: 1; }','.msg-box.msg-user .msg .msg-copy-btn { position: absolute; top: 2px; right: 0px; z-index: 3;',' opacity: 0; pointer-events: none; transition: opacity .15s ease, transform .15s ease, background-color .15s ease, border-color .15s ease;',' border-radius: 6px; padding: 4px; line-height: 0; border: 1px solid transparent; background: transparent; }','.msg-box.msg-user .msg:hover .msg-copy-btn, .msg-box.msg-user .msg:focus-within .msg-copy-btn { opacity: 1; pointer-events: auto; }','.msg-box.msg-user .msg .msg-copy-btn:hover { transform: scale(1.06); background: var(--copy-btn-bg-hover, rgba(0,0,0,.86)); border-color: var(--copy-btn-border, rgba(0,0,0,.08)); }','.msg-box.msg-user .msg .msg-copy-btn.copied { background: var(--copy-btn-bg-copied, rgba(150,150,150,.12)); border-color: var(--copy-btn-border-copied, rgba(150,150,150,.35)); animation: msg-copy-pop .25s ease; }','.msg-box.msg-user .msg .msg-copy-btn img { display: block; width: 18px; height: 18px; }','.code-wrapper .code-header-action.code-header-copy,','.code-wrapper .code-header-action.code-header-collapse { display: inline-flex; align-items: center; border-radius: 6px; padding: 2px; line-height: 0; border: 1px solid transparent; transition: transform .15s ease, background-color .15s ease, border-color .15s ease; }','.code-wrapper .code-header-action.code-header-copy:hover,','.code-wrapper .code-header-action.code-header-collapse:hover { transform: scale(1.06); background: var(--copy-btn-bg-hover, rgba(0,0,0,.76)); border-color: var(--copy-btn-border, rgba(0,0,0,.08)); }','.code-wrapper .code-header-action.copied { background: var(--copy-btn-bg-copied, rgba(150,150,150,.12)); border-color: var(--copy-btn-border-copied, rgba(150,150,150,.35)); animation: msg-copy-pop .25s ease; }','@keyframes msg-copy-pop { 0%{ transform: scale(1); } 60%{ transform: scale(1.1); } 100%{ transform: scale(1); } }'].join('\n');document.head.appendChild(style);}
|
|
808
808
|
enableEditIcons(){document.body&&document.body.classList.add('display-edit-icons');}
|
|
809
809
|
disableEditIcons(){document.body&&document.body.classList.remove('display-edit-icons');}
|
|
810
810
|
enableTimestamp(){document.body&&document.body.classList.add('display-timestamp');}
|
|
@@ -813,7 +813,7 @@ enableBlocks(){document.body&&document.body.classList.add('display-blocks');}
|
|
|
813
813
|
disableBlocks(){document.body&&document.body.classList.remove('display-blocks');}};
|
|
814
814
|
|
|
815
815
|
/* data/js/app/user.js */
|
|
816
|
-
class UserCollapseManager{constructor(cfg){this.cfg=cfg||{};this.threshold=Utils.g('USER_MSG_COLLAPSE_HEIGHT_PX',1000);this._processed=new Set();
|
|
816
|
+
class UserCollapseManager{constructor(cfg){this.cfg=cfg||{};this.threshold=Utils.g('USER_MSG_COLLAPSE_HEIGHT_PX',1000);this._processed=new Set();}
|
|
817
817
|
_icons(){const I=(this.cfg&&this.cfg.ICONS)||{};return{expand:I.EXPAND||'',collapse:I.COLLAPSE||''};}
|
|
818
818
|
_labels(){const L=(this.cfg&&this.cfg.LOCALE)||{};return{expand:L.EXPAND||'Expand',collapse:L.COLLAPSE||'Collapse'};}
|
|
819
819
|
_afterLayout(fn){try{if(typeof runtime!=='undefined'&&runtime.raf&&typeof runtime.raf.schedule==='function'){const key={t:'UC:afterLayout',i:Math.random()};runtime.raf.schedule(key,()=>{try{fn&&fn();}catch(_){}},'UserCollapse',0);return;}}catch(_){}
|
|
@@ -823,12 +823,10 @@ this._afterLayout(()=>{try{if(toggleEl.scrollIntoView){try{toggleEl.scrollIntoVi
|
|
|
823
823
|
_ensureStructure(msg){if(!msg||!msg.isConnected)return null;let content=msg.querySelector('.uc-content');if(!content){content=document.createElement('div');content.className='uc-content';const frag=document.createDocumentFragment();while(msg.firstChild)frag.appendChild(msg.firstChild);content.appendChild(frag);msg.appendChild(content);}
|
|
824
824
|
let toggle=msg.querySelector('.uc-toggle');if(!toggle){const icons=this._icons();const labels=this._labels();toggle=document.createElement('div');toggle.className='uc-toggle';toggle.tabIndex=0;toggle.setAttribute('role','button');toggle.setAttribute('aria-expanded','false');toggle.title=labels.expand;const img=document.createElement('img');img.className='uc-toggle-icon';img.alt=labels.expand;img.src=icons.expand;img.width=26;img.height=26;toggle.appendChild(img);toggle.addEventListener('click',(ev)=>{ev.preventDefault();ev.stopPropagation();this.toggleFromToggle(toggle);});toggle.addEventListener('keydown',(ev)=>{if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();ev.stopPropagation();this.toggleFromToggle(toggle);}},{passive:false});msg.appendChild(toggle);}
|
|
825
825
|
this._processed.add(msg);msg.dataset.ucInit='1';return{content,toggle};}
|
|
826
|
-
_ensureEllipsisEl(msg,contentEl){const content=contentEl||(msg&&msg.querySelector('.uc-content'));if(!content)return null;
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
_hideEllipsis(msg){const content=msg&&msg.querySelector('.uc-content');if(!content)return;const dot=content.querySelector('.uc-ellipsis');if(dot&&dot.parentNode){dot.parentNode.removeChild(dot);}
|
|
831
|
-
try{if(content&&content.style&&content.querySelector('.uc-ellipsis')==null){content.style.position='';}}catch(_){}}
|
|
826
|
+
_ensureEllipsisEl(msg,contentEl){const content=contentEl||(msg&&msg.querySelector('.uc-content'));if(!content)return null;try{const legacy=content.querySelector('.uc-ellipsis');if(legacy&&legacy.parentNode){legacy.parentNode.removeChild(legacy);}}catch(_){}
|
|
827
|
+
return null;}
|
|
828
|
+
_showEllipsis(msg,contentEl){this._ensureEllipsisEl(msg,contentEl);}
|
|
829
|
+
_hideEllipsis(msg){this._ensureEllipsisEl(msg,null);}
|
|
832
830
|
apply(root){const scope=root||document;let list;if(scope.nodeType===1)list=scope.querySelectorAll('.msg-box.msg-user .msg');else list=document.querySelectorAll('.msg-box.msg-user .msg');if(!list||!list.length)return;for(let i=0;i<list.length;i++){const msg=list[i];const st=this._ensureStructure(msg);if(!st)continue;this._update(msg,st.content,st.toggle);}}
|
|
833
831
|
_update(msg,contentEl,toggleEl){const c=contentEl||(msg&&msg.querySelector('.uc-content'));if(!msg||!c)return;if(this.threshold===0||this.threshold==='0'){const t=toggleEl||msg.querySelector('.uc-toggle');const labels=this._labels();c.classList.remove('uc-collapsed');c.classList.remove('uc-expanded');msg.dataset.ucState='expanded';this._hideEllipsis(msg);if(t){t.classList.remove('visible');t.setAttribute('aria-expanded','false');t.title=labels.expand;const img=t.querySelector('img');if(img){img.alt=labels.expand;}}
|
|
834
832
|
return;}
|
|
@@ -51,6 +51,7 @@ action.save = Speichern
|
|
|
51
51
|
action.save_as = Speichern unter...
|
|
52
52
|
action.save_selection_as = Auswahl speichern unter...
|
|
53
53
|
action.select_all = Alle auswählen
|
|
54
|
+
action.select_unselect_all = Alle auswählen/abwählen
|
|
54
55
|
action.tab.add.chat: Neuen Chat hinzufügen
|
|
55
56
|
action.tab.add.chat.tooltip: Neuen Chat hinzufügen (RMT für mehr Optionen...)
|
|
56
57
|
action.tab.add.notepad = Neuen Notizblock hinzufügen
|
|
@@ -902,7 +903,10 @@ mode.computer.tooltip = Computerbenutzung (Maus, Tastatur, Navigation)
|
|
|
902
903
|
mode.expert = Experten (Kooperation)
|
|
903
904
|
mode.expert.tooltip = Experten zum Hintergrund rufen
|
|
904
905
|
mode.img = Bild und Video
|
|
906
|
+
mode.img.image = Bild
|
|
907
|
+
mode.img.music = Musik
|
|
905
908
|
mode.img.tooltip = Bildgenerierung mit DALL-E
|
|
909
|
+
mode.img.video = Video
|
|
906
910
|
mode.langchain = Langchain
|
|
907
911
|
mode.langchain.tooltip = Chat mit Modellen von Langchain
|
|
908
912
|
model.ctx = Kontext-Token
|
|
@@ -51,6 +51,7 @@ action.save = Save
|
|
|
51
51
|
action.save_as = Save as...
|
|
52
52
|
action.save_selection_as = Save selection as...
|
|
53
53
|
action.select_all = Select all
|
|
54
|
+
action.select_unselect_all = Select/Unselect All
|
|
54
55
|
action.tab.add.chat = Add a new chat
|
|
55
56
|
action.tab.add.chat.tooltip = Add a new chat (RMB click to more options...)
|
|
56
57
|
action.tab.add.notepad = Add a new notepad
|
|
@@ -95,6 +96,8 @@ agent.evolve.winner = Winner: agent
|
|
|
95
96
|
agent.infinity.confirm.content = WARNING: You are attempting to run an infinite loop! This may cause heavy token usage. Are you sure you want to continue?
|
|
96
97
|
agent.name.supervisor = Supervisor
|
|
97
98
|
agent.name.worker = Worker
|
|
99
|
+
agent.option.debug.trace_id = Trace ID
|
|
100
|
+
agent.option.debug.trace_id.desc = Optional Trace ID for tracing in OpenAI panel: https://platform.openai.com/logs?api=traces (OpenAI agents only)
|
|
98
101
|
agent.option.model = Model
|
|
99
102
|
agent.option.name = Name
|
|
100
103
|
agent.option.prompt = Prompt
|
|
@@ -112,6 +115,7 @@ agent.option.prompt.worker.desc = Prompt for Worker
|
|
|
112
115
|
agent.option.refine.after_each = After each step
|
|
113
116
|
agent.option.refine.after_each.desc = Refine plan after each step
|
|
114
117
|
agent.option.role = Short description of the agent's operation for instructing the model (optional)
|
|
118
|
+
agent.option.role.label = Role
|
|
115
119
|
agent.option.section.base = Base agent
|
|
116
120
|
agent.option.section.chooser = Chooser
|
|
117
121
|
agent.option.section.feedback = Feedback
|
|
@@ -159,6 +163,7 @@ agent.planner.ui.subtask_finished = Finished Sub Task {index}/{total}: {name}
|
|
|
159
163
|
agent.planner.ui.subtask_header.one = **===== Sub Task {index}: {name} =====**
|
|
160
164
|
agent.planner.ui.subtask_header.progress = **===== Sub Task {index}/{total}: {name} =====**
|
|
161
165
|
agent.planner.ui.updated_remaining_plan = Updated remaining plan:
|
|
166
|
+
agent.tab.debug = Debug
|
|
162
167
|
alert.preset.empty_id = Name is required.
|
|
163
168
|
alert.preset.no_chat_completion = At least one of: chat, completion, img or vision option is required!
|
|
164
169
|
alert.snap.file_manager = Snap detected. Please open the directory manually in your file manager:
|
|
@@ -913,7 +918,10 @@ mode.computer.tooltip = Computer use (mouse, keyboard, navigation)
|
|
|
913
918
|
mode.expert = Experts (Co-op)
|
|
914
919
|
mode.expert.tooltip = Experts to call in the background
|
|
915
920
|
mode.img = Image and video
|
|
921
|
+
mode.img.image = Image
|
|
922
|
+
mode.img.music = Music
|
|
916
923
|
mode.img.tooltip = Image generation
|
|
924
|
+
mode.img.video = Video
|
|
917
925
|
mode.langchain = Langchain
|
|
918
926
|
mode.langchain.tooltip = Chat with models provided by Langchain
|
|
919
927
|
model.ctx = Context tokens
|
|
@@ -51,6 +51,7 @@ action.save = Guardar
|
|
|
51
51
|
action.save_as = Guardar como...
|
|
52
52
|
action.save_selection_as = Guardar selección como...
|
|
53
53
|
action.select_all = Seleccionar todo
|
|
54
|
+
action.select_unselect_all = Seleccionar/Deseleccionar todo
|
|
54
55
|
action.tab.add.chat: Añadir un nuevo chat
|
|
55
56
|
action.tab.add.chat.tooltip: Añadir un nuevo chat (clic derecho para más opciones...)
|
|
56
57
|
action.tab.add.notepad = Agregar un nuevo bloc de notas
|
|
@@ -903,7 +904,10 @@ mode.computer.tooltip = Uso de la computadora (ratón, teclado, navegación)
|
|
|
903
904
|
mode.expert = Expertos (cooperación)
|
|
904
905
|
mode.expert.tooltip = Llamar a expertos en segundo plano
|
|
905
906
|
mode.img = Imagen y video
|
|
907
|
+
mode.img.image = Imagen
|
|
908
|
+
mode.img.music = Música
|
|
906
909
|
mode.img.tooltip = Generar imagen usando DALL-E
|
|
910
|
+
mode.img.video = Vídeo
|
|
907
911
|
mode.langchain = Langchain
|
|
908
912
|
mode.langchain.tooltip = Chatear con modelos proporcionados por Langchain
|
|
909
913
|
model.ctx = Tokens de contexto
|
|
@@ -51,6 +51,7 @@ action.save = Enregistrer
|
|
|
51
51
|
action.save_as = Enregistrer sous...
|
|
52
52
|
action.save_selection_as = Enregistrer la sélection sous...
|
|
53
53
|
action.select_all = Sélectionner tout
|
|
54
|
+
action.select_unselect_all = Sélectionner/Désélectionner tout
|
|
54
55
|
action.tab.add.chat: Ajouter une nouvelle discussion
|
|
55
56
|
action.tab.add.chat.tooltip: Ajouter une nouvelle discussion (Clic Droit pour plus d'options...)
|
|
56
57
|
action.tab.add.notepad = Ajouter un nouveau bloc-notes
|
|
@@ -902,7 +903,10 @@ mode.computer.tooltip = Utilisation de l'ordinateur (souris, clavier, navigation
|
|
|
902
903
|
mode.expert = Experts (co-opération)
|
|
903
904
|
mode.expert.tooltip = Appeler des experts en arrière-plan
|
|
904
905
|
mode.img = Image et vidéo
|
|
906
|
+
mode.img.image = Image
|
|
907
|
+
mode.img.music = Musique
|
|
905
908
|
mode.img.tooltip = Génération d'image avec DALL-E
|
|
909
|
+
mode.img.video = Vidéo
|
|
906
910
|
mode.langchain = Langchain
|
|
907
911
|
mode.langchain.tooltip = Discussion avec les modèles fournis par Langchain
|
|
908
912
|
model.ctx = Jetons de contexte
|
|
@@ -51,6 +51,7 @@ action.save = Salva
|
|
|
51
51
|
action.save_as = Salva con nome...
|
|
52
52
|
action.save_selection_as = Salva selezione come...
|
|
53
53
|
action.select_all = Seleziona tutto
|
|
54
|
+
action.select_unselect_all = Seleziona/Deseleziona tutto
|
|
54
55
|
action.tab.add.chat: Aggiungi una nuova chat
|
|
55
56
|
action.tab.add.chat.tooltip: Aggiungi una nuova chat (Clic Destro per maggiori opzioni...)
|
|
56
57
|
action.tab.add.notepad = Aggiungi un nuovo blocco note
|
|
@@ -902,7 +903,10 @@ mode.computer.tooltip = Uso del computer (mouse, tastiera, navigazione)
|
|
|
902
903
|
mode.expert = Esperti (cooperazione)
|
|
903
904
|
mode.expert.tooltip = Chiamare esperti in background
|
|
904
905
|
mode.img = Immagine e video
|
|
906
|
+
mode.img.image = Immagine
|
|
907
|
+
mode.img.music = Musica
|
|
905
908
|
mode.img.tooltip = Generazione immagini con DALL-E
|
|
909
|
+
mode.img.video = Video
|
|
906
910
|
mode.langchain = Langchain
|
|
907
911
|
mode.langchain.tooltip = Chattare con modelli forniti da Langchain
|
|
908
912
|
model.ctx = Token di contesto
|
|
@@ -51,6 +51,7 @@ action.save = Zapisz
|
|
|
51
51
|
action.save_as = Zapisz jako...
|
|
52
52
|
action.save_selection_as = Zapisz zaznaczenie jako...
|
|
53
53
|
action.select_all = Wybierz wszystko
|
|
54
|
+
action.select_unselect_all = Zaznacz/Odznacz wszystko
|
|
54
55
|
action.tab.add.chat: Dodaj nowy czat
|
|
55
56
|
action.tab.add.chat.tooltip: Dodaj nowy czat (PPM dla więcej opcji...)
|
|
56
57
|
action.tab.add.notepad = Dodaj nowy notatnik
|
|
@@ -903,7 +904,10 @@ mode.computer.tooltip = Kontrola komputera (mysz, klawiatura)
|
|
|
903
904
|
mode.expert = Eksperci (współpraca)
|
|
904
905
|
mode.expert.tooltip = Eksperci do wezwania w tle
|
|
905
906
|
mode.img = Obraz i wideo
|
|
907
|
+
mode.img.image = Obraz
|
|
908
|
+
mode.img.music = Muzyka
|
|
906
909
|
mode.img.tooltip = Generowanie obrazów przy użyciu DALL-E
|
|
910
|
+
mode.img.video = Wideo
|
|
907
911
|
mode.langchain = Langchain
|
|
908
912
|
mode.langchain.tooltip = Czat z modelami dostarczonymi przez Langchain
|
|
909
913
|
model.ctx = Tokeny kontekstu
|
|
@@ -51,6 +51,7 @@ action.save = Зберегти
|
|
|
51
51
|
action.save_as = Зберегти як...
|
|
52
52
|
action.save_selection_as = Зберегти вибір як...
|
|
53
53
|
action.select_all = Вибрати все
|
|
54
|
+
action.select_unselect_all = Вибрати/Скасувати вибір всіх
|
|
54
55
|
action.tab.add.chat: Додати новий чат
|
|
55
56
|
action.tab.add.chat.tooltip: Додати новий чат (ПКМ для більше опцій...)
|
|
56
57
|
action.tab.add.notepad = Додати новий блокнот
|
|
@@ -902,7 +903,10 @@ mode.computer.tooltip = Використання комп'ютера (миша,
|
|
|
902
903
|
mode.expert = Експерти (співпраця)
|
|
903
904
|
mode.expert.tooltip = Виклик експертів на задній план
|
|
904
905
|
mode.img = Зображення та відео
|
|
906
|
+
mode.img.image = Зображення
|
|
907
|
+
mode.img.music = Музика
|
|
905
908
|
mode.img.tooltip = Генерація зображень за допомогою DALL-E
|
|
909
|
+
mode.img.video = Відео
|
|
906
910
|
mode.langchain = Langchain
|
|
907
911
|
mode.langchain.tooltip = Чат з моделями, наданими Langchain
|
|
908
912
|
model.ctx = Токени контексту
|
|
@@ -51,6 +51,7 @@ action.save = 保存
|
|
|
51
51
|
action.save_as = 另存為...
|
|
52
52
|
action.save_selection_as = 将选择保存为...
|
|
53
53
|
action.select_all = 选择全部
|
|
54
|
+
action.select_unselect_all = 全选/取消全选
|
|
54
55
|
action.tab.add.chat: 添加新聊天
|
|
55
56
|
action.tab.add.chat.tooltip: 添加新聊天(右键单击获取更多选项...)
|
|
56
57
|
action.tab.add.notepad = 添加新记事本
|
|
@@ -902,7 +903,10 @@ mode.computer.tooltip = 使用计算机(鼠标、键盘、导航)
|
|
|
902
903
|
mode.expert = 专家 (合作)
|
|
903
904
|
mode.expert.tooltip = 背景中呼叫专家
|
|
904
905
|
mode.img = 图像和视频
|
|
906
|
+
mode.img.image = 图片
|
|
907
|
+
mode.img.music = 音乐
|
|
905
908
|
mode.img.tooltip = 使用DALL-E生成圖像
|
|
909
|
+
mode.img.video = 视频
|
|
906
910
|
mode.langchain = Langchain模式
|
|
907
911
|
mode.langchain.tooltip = 使用Langchain提供的模型進行聊天
|
|
908
912
|
model.ctx = 上下文令牌
|
pygpt_net/icons.qrc
CHANGED
|
@@ -92,9 +92,12 @@
|
|
|
92
92
|
<file alias="pause_circle.svg">data/icons/pause_circle.svg</file>
|
|
93
93
|
<file alias="photos.svg">data/icons/photos.svg</file>
|
|
94
94
|
<file alias="pin.svg">data/icons/pin.svg</file>
|
|
95
|
+
<file alias="pin2.svg">data/icons/pin2.svg</file>
|
|
96
|
+
<file alias="pin3.svg">data/icons/pin3.svg</file>
|
|
95
97
|
<file alias="play.svg">data/icons/play.svg</file>
|
|
96
98
|
<file alias="play_pause.svg">data/icons/play_pause.svg</file>
|
|
97
99
|
<file alias="playlist_add.svg">data/icons/playlist_add.svg</file>
|
|
100
|
+
<file alias="point.svg">data/icons/point.svg</file>
|
|
98
101
|
<file alias="power.svg">data/icons/power.svg</file>
|
|
99
102
|
<file alias="print.svg">data/icons/print.svg</file>
|
|
100
103
|
<file alias="public_filled.svg">data/icons/public_filled.svg</file>
|
|
@@ -125,6 +128,7 @@
|
|
|
125
128
|
<file alias="stt.svg">data/icons/stt.svg</file>
|
|
126
129
|
<file alias="sync.svg">data/icons/sync.svg</file>
|
|
127
130
|
<file alias="tag.svg">data/icons/tag.svg</file>
|
|
131
|
+
<file alias="target.svg">data/icons/target.svg</file>
|
|
128
132
|
<file alias="task.svg">data/icons/task.svg</file>
|
|
129
133
|
<file alias="terminal.svg">data/icons/terminal.svg</file>
|
|
130
134
|
<file alias="text.svg">data/icons/text.svg</file>
|