dsh-ask-from-text 0.1.20 → 0.1.22
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.
- package/CHANGELOG.md +36 -0
- package/README.md +2 -2
- package/client.js +347 -6
- package/locale/de.json +6 -0
- package/locale/es.json +6 -0
- package/locale/fr.json +6 -0
- package/locale/ja.json +6 -0
- package/locale/pt.json +6 -0
- package/locale/ru.json +6 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,22 @@ All notable changes to `dsh-ask-from-text` are documented here. The format is
|
|
|
4
4
|
based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this
|
|
5
5
|
project follows [Semantic Versioning](https://semver.org/).
|
|
6
6
|
|
|
7
|
+
## [0.1.22] - 2026-11-13
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Collapse the host's “show remaining conversations” / “show less” controls
|
|
12
|
+
together with the `追问分支` group, and label the group with the total number
|
|
13
|
+
of branch sessions rather than only the rendered rows.
|
|
14
|
+
|
|
15
|
+
## [0.1.21] - 2026-11-13
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Runtime dictionaries and Plugin Manager metadata for Japanese, Spanish,
|
|
20
|
+
French, German, Russian, and Brazilian Portuguese, completing the eight DSH
|
|
21
|
+
languages. Unsupported locales fall back to English.
|
|
22
|
+
|
|
7
23
|
## [0.1.20] - 2026-11-13
|
|
8
24
|
|
|
9
25
|
### Added
|
|
@@ -63,6 +79,22 @@ project follows [Semantic Versioning](https://semver.org/).
|
|
|
63
79
|
|
|
64
80
|
- README screenshots now use absolute CDN URLs so they render on the npm package page.
|
|
65
81
|
|
|
82
|
+
## [0.1.22] - 2026-11-13
|
|
83
|
+
|
|
84
|
+
### Fixed
|
|
85
|
+
|
|
86
|
+
- Collapse the host's “show remaining conversations” / “show less” controls
|
|
87
|
+
together with the `追问分支` group, and label the group with the total number
|
|
88
|
+
of branch sessions rather than only the rendered rows.
|
|
89
|
+
|
|
90
|
+
## [0.1.21] - 2026-11-13
|
|
91
|
+
|
|
92
|
+
### Added
|
|
93
|
+
|
|
94
|
+
- Runtime dictionaries and Plugin Manager metadata for Japanese, Spanish,
|
|
95
|
+
French, German, Russian, and Brazilian Portuguese, completing the eight DSH
|
|
96
|
+
languages. Unsupported locales fall back to English.
|
|
97
|
+
|
|
66
98
|
## [0.1.20] - 2026-11-13
|
|
67
99
|
|
|
68
100
|
### Added
|
|
@@ -211,6 +243,8 @@ project follows [Semantic Versioning](https://semver.org/).
|
|
|
211
243
|
[0.1.18]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.18
|
|
212
244
|
[0.1.19]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.19
|
|
213
245
|
[0.1.20]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.20
|
|
246
|
+
[0.1.21]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.21
|
|
247
|
+
[0.1.22]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.22
|
|
214
248
|
[0.1.13]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.13
|
|
215
249
|
[0.1.14]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.14
|
|
216
250
|
[0.1.15]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.15
|
|
@@ -219,3 +253,5 @@ project follows [Semantic Versioning](https://semver.org/).
|
|
|
219
253
|
[0.1.18]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.18
|
|
220
254
|
[0.1.19]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.19
|
|
221
255
|
[0.1.20]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.20
|
|
256
|
+
[0.1.21]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.21
|
|
257
|
+
[0.1.22]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.22
|
package/README.md
CHANGED
|
@@ -103,7 +103,7 @@ dsh plugin --profile web add /absolute/path/to/dsh-ask-from-text
|
|
|
103
103
|
- 追问回答是真实的 DSH Session,可以使用思考、工具调用、Stop 和原生输入框。
|
|
104
104
|
- 分支只看到父级和祖先内容,不看到兄弟分支,也不会自动获得父级后来新增的内容。
|
|
105
105
|
- 分支对话会出现在普通 Session 列表中,这是正常现象。
|
|
106
|
-
- 界面文案跟随 DSH
|
|
106
|
+
- 界面文案跟随 DSH 语言,内置中文、英文、日语、西班牙语、法语、德语、俄语、巴西葡萄牙语;其他语言回退英文。原生对话区域继续跟随 DSH 自身的语言。
|
|
107
107
|
- 目前主要面向 DSH Desktop;Web 共用同一套 UI,窄屏体验尚未专门优化。
|
|
108
108
|
|
|
109
109
|
## 常见问题
|
|
@@ -225,7 +225,7 @@ These sessions are grouped under a `追问分支` header. Click the header to co
|
|
|
225
225
|
- A follow-up is a real DSH Session. It can use reasoning, tool calls, Stop, and the native composer.
|
|
226
226
|
- A branch sees its parent and ancestors, not siblings, and does not automatically receive later turns added to its parent.
|
|
227
227
|
- Branch conversations also appear in the normal Session list. This is expected.
|
|
228
|
-
- Runtime UI follows the DSH language: Chinese and
|
|
228
|
+
- Runtime UI follows the DSH language: Chinese, English, Japanese, Spanish, French, German, Russian, and Brazilian Portuguese are bundled; other languages fall back to English. The native conversation follows DSH.
|
|
229
229
|
- DSH Desktop is the primary target. The Web client shares the same UI, but narrow-screen behavior has not been specifically polished.
|
|
230
230
|
|
|
231
231
|
### FAQ
|
package/client.js
CHANGED
|
@@ -83,7 +83,7 @@ window.__ModuleLoader__.load({
|
|
|
83
83
|
contextStart: '上下文起点',
|
|
84
84
|
waiting: '待提问',
|
|
85
85
|
treeNote: '当前模型上下文:{context}。兄弟分支不在其中。',
|
|
86
|
-
anchorMissing: '的原文当前不可见,可能已被折叠或尚未加载',
|
|
86
|
+
anchorMissing: '#{n} 的原文当前不可见,可能已被折叠或尚未加载',
|
|
87
87
|
draftWait: '在下方输入浮窗中提问',
|
|
88
88
|
},
|
|
89
89
|
en: {
|
|
@@ -138,10 +138,334 @@ window.__ModuleLoader__.load({
|
|
|
138
138
|
contextStart: 'Context root',
|
|
139
139
|
waiting: 'Waiting for question',
|
|
140
140
|
treeNote: 'Current model context: {context}. Sibling branches are not included.',
|
|
141
|
-
anchorMissing: '
|
|
141
|
+
anchorMissing: 'Source text for #{n} is not visible; it may be folded or not loaded yet',
|
|
142
142
|
draftWait: 'Ask in the input window below',
|
|
143
143
|
},
|
|
144
|
-
|
|
144
|
+
ja: {
|
|
145
|
+
chip: '質問',
|
|
146
|
+
chipHint: '選択したテキストについて独立したブランチで質問',
|
|
147
|
+
branch: 'ブランチ',
|
|
148
|
+
branchN: 'ブランチ',
|
|
149
|
+
basedOn: '基準',
|
|
150
|
+
main: 'メイン会話',
|
|
151
|
+
independent: '独立ブランチ',
|
|
152
|
+
draft: '下書き',
|
|
153
|
+
sending: '作成中',
|
|
154
|
+
running: '実行中',
|
|
155
|
+
ready: '作成済み',
|
|
156
|
+
failed: '失敗',
|
|
157
|
+
send: '送信',
|
|
158
|
+
sendingAction: '送信中…',
|
|
159
|
+
quote: '引用済み',
|
|
160
|
+
defaultQuestion: 'この内容についてさらに説明してください。',
|
|
161
|
+
empty: 'ここに質問を追加…',
|
|
162
|
+
sendHint: 'Enter で送信 · Shift + Enter で改行',
|
|
163
|
+
collapse: '折りたたむ',
|
|
164
|
+
input: '入力',
|
|
165
|
+
deleteDraft: '下書きを削除',
|
|
166
|
+
close: '閉じる',
|
|
167
|
+
expand: '拡大',
|
|
168
|
+
restore: 'パネルに戻す',
|
|
169
|
+
back: '戻る',
|
|
170
|
+
forward: '進む',
|
|
171
|
+
stageHint: '戻る / 進むは表示中のブランチを切り替えるだけで、モデルのコンテキストは変わりません。',
|
|
172
|
+
path: 'パス',
|
|
173
|
+
all: 'すべて',
|
|
174
|
+
tree: 'ブランチツリー',
|
|
175
|
+
current: '現在',
|
|
176
|
+
dock: '折りたたんだブランチ',
|
|
177
|
+
open: '開く',
|
|
178
|
+
retry: '再試行',
|
|
179
|
+
error: '送信に失敗しました',
|
|
180
|
+
forkError: 'ブランチを作成できません',
|
|
181
|
+
noSession: '現在のセッションは利用できません',
|
|
182
|
+
tooLong: '選択が長すぎます。短くしてもう一度お試しください',
|
|
183
|
+
content: '本文',
|
|
184
|
+
quoteLabel: '引用元',
|
|
185
|
+
showQuote: '引用を表示',
|
|
186
|
+
hideQuote: '引用を隠す',
|
|
187
|
+
switchBranch: 'このブランチに切り替え',
|
|
188
|
+
stages: '個のノード',
|
|
189
|
+
collapseDock: 'リストを折りたたむ',
|
|
190
|
+
expandDock: 'リストを展開',
|
|
191
|
+
sidebarGroup: '質問ブランチ',
|
|
192
|
+
context: 'コンテキスト',
|
|
193
|
+
contextStart: 'コンテキストの起点',
|
|
194
|
+
waiting: '質問待ち',
|
|
195
|
+
treeNote: '現在のモデルコンテキスト:{context}。兄弟ブランチは含まれません。',
|
|
196
|
+
anchorMissing: '#{n} の原文は現在表示できません。折りたたまれているか、まだ読み込まれていない可能性があります',
|
|
197
|
+
draftWait: '下の入力ウィンドウで質問してください',
|
|
198
|
+
}, es: {
|
|
199
|
+
chip: 'Preguntar',
|
|
200
|
+
chipHint: 'Pregunta sobre el texto seleccionado en una rama independiente',
|
|
201
|
+
branch: 'Rama',
|
|
202
|
+
branchN: 'Rama',
|
|
203
|
+
basedOn: 'basado en',
|
|
204
|
+
main: 'Chat principal',
|
|
205
|
+
independent: 'Rama independiente',
|
|
206
|
+
draft: 'Borrador',
|
|
207
|
+
sending: 'Creando',
|
|
208
|
+
running: 'En ejecución',
|
|
209
|
+
ready: 'Creado',
|
|
210
|
+
failed: 'Falló',
|
|
211
|
+
send: 'Enviar',
|
|
212
|
+
sendingAction: 'Enviando…',
|
|
213
|
+
quote: 'Citado',
|
|
214
|
+
defaultQuestion: 'Explica este contenido con más detalle.',
|
|
215
|
+
empty: 'Añade tu pregunta…',
|
|
216
|
+
sendHint: 'Enter para enviar · Shift + Enter para nueva línea',
|
|
217
|
+
collapse: 'Contraer',
|
|
218
|
+
input: 'Entrada',
|
|
219
|
+
deleteDraft: 'Eliminar borrador',
|
|
220
|
+
close: 'Cerrar',
|
|
221
|
+
expand: 'Ampliar',
|
|
222
|
+
restore: 'Restaurar panel',
|
|
223
|
+
back: 'Atrás',
|
|
224
|
+
forward: 'Adelante',
|
|
225
|
+
stageHint: 'Atrás / Adelante solo cambia la rama que estás viendo; no cambia el contexto del modelo.',
|
|
226
|
+
path: 'Ruta',
|
|
227
|
+
all: 'Todo',
|
|
228
|
+
tree: 'Árbol de ramas',
|
|
229
|
+
current: 'Actual',
|
|
230
|
+
dock: 'Ramas contraídas',
|
|
231
|
+
open: 'Abrir',
|
|
232
|
+
retry: 'Reintentar',
|
|
233
|
+
error: 'Error al enviar',
|
|
234
|
+
forkError: 'No se pudo crear la rama',
|
|
235
|
+
noSession: 'Sesión no disponible',
|
|
236
|
+
tooLong: 'La selección es demasiado larga',
|
|
237
|
+
content: 'Texto',
|
|
238
|
+
quoteLabel: 'Citado de',
|
|
239
|
+
showQuote: 'Mostrar cita',
|
|
240
|
+
hideQuote: 'Ocultar cita',
|
|
241
|
+
switchBranch: 'Cambiar a esta rama',
|
|
242
|
+
stages: 'nodos',
|
|
243
|
+
collapseDock: 'Contraer lista',
|
|
244
|
+
expandDock: 'Expandir lista',
|
|
245
|
+
sidebarGroup: 'Ramas de seguimiento',
|
|
246
|
+
context: 'Contexto',
|
|
247
|
+
contextStart: 'Inicio del contexto',
|
|
248
|
+
waiting: 'Esperando pregunta',
|
|
249
|
+
treeNote: 'Contexto actual del modelo: {context}. Las ramas hermanas no están incluidas.',
|
|
250
|
+
anchorMissing: 'El texto original de #{n} no está visible; puede estar plegado o no haberse cargado',
|
|
251
|
+
draftWait: 'Pregunta en la ventana de entrada de abajo',
|
|
252
|
+
}, fr: {
|
|
253
|
+
chip: 'Demander',
|
|
254
|
+
chipHint: 'Posez une question sur le texte sélectionné dans une branche indépendante',
|
|
255
|
+
branch: 'Branche',
|
|
256
|
+
branchN: 'Branche',
|
|
257
|
+
basedOn: 'basé sur',
|
|
258
|
+
main: 'Conversation principale',
|
|
259
|
+
independent: 'Branche indépendante',
|
|
260
|
+
draft: 'Brouillon',
|
|
261
|
+
sending: 'Création',
|
|
262
|
+
running: 'En cours',
|
|
263
|
+
ready: 'Créé',
|
|
264
|
+
failed: 'Échec',
|
|
265
|
+
send: 'Envoyer',
|
|
266
|
+
sendingAction: 'Envoi…',
|
|
267
|
+
quote: 'Cité',
|
|
268
|
+
defaultQuestion: 'Explique ce passage plus en détail.',
|
|
269
|
+
empty: 'Ajoutez votre question…',
|
|
270
|
+
sendHint: 'Entrée pour envoyer · Maj + Entrée pour un saut de ligne',
|
|
271
|
+
collapse: 'Réduire',
|
|
272
|
+
input: 'Saisie',
|
|
273
|
+
deleteDraft: 'Supprimer le brouillon',
|
|
274
|
+
close: 'Fermer',
|
|
275
|
+
expand: 'Agrandir',
|
|
276
|
+
restore: 'Restaurer le panneau',
|
|
277
|
+
back: 'Retour',
|
|
278
|
+
forward: 'Suivant',
|
|
279
|
+
stageHint: 'Retour / Suivant change uniquement la branche affichée ; cela ne modifie pas le contexte du modèle.',
|
|
280
|
+
path: 'Chemin',
|
|
281
|
+
all: 'Tout',
|
|
282
|
+
tree: 'Arbre des branches',
|
|
283
|
+
current: 'Actuel',
|
|
284
|
+
dock: 'Branches réduites',
|
|
285
|
+
open: 'Ouvrir',
|
|
286
|
+
retry: 'Réessayer',
|
|
287
|
+
error: 'Échec de l\'envoi',
|
|
288
|
+
forkError: 'Impossible de créer la branche',
|
|
289
|
+
noSession: 'Session indisponible',
|
|
290
|
+
tooLong: 'La sélection est trop longue',
|
|
291
|
+
content: 'Texte',
|
|
292
|
+
quoteLabel: 'Cité de',
|
|
293
|
+
showQuote: 'Afficher la citation',
|
|
294
|
+
hideQuote: 'Masquer la citation',
|
|
295
|
+
switchBranch: 'Passer à cette branche',
|
|
296
|
+
stages: 'nœuds',
|
|
297
|
+
collapseDock: 'Réduire la liste',
|
|
298
|
+
expandDock: 'Développer la liste',
|
|
299
|
+
sidebarGroup: 'Branches de suivi',
|
|
300
|
+
context: 'Contexte',
|
|
301
|
+
contextStart: 'Racine du contexte',
|
|
302
|
+
waiting: 'En attente de question',
|
|
303
|
+
treeNote: 'Contexte actuel du modèle : {context}. Les branches sœurs ne sont pas incluses.',
|
|
304
|
+
anchorMissing: 'Le texte source de #{n} n\'est pas visible ; il est peut-être replié ou pas encore chargé',
|
|
305
|
+
draftWait: 'Posez votre question dans la fenêtre de saisie ci-dessous',
|
|
306
|
+
}, de: {
|
|
307
|
+
chip: 'Fragen',
|
|
308
|
+
chipHint: 'Frage zum ausgewählten Text in einem unabhängigen Zweig stellen',
|
|
309
|
+
branch: 'Zweig',
|
|
310
|
+
branchN: 'Zweig',
|
|
311
|
+
basedOn: 'basierend auf',
|
|
312
|
+
main: 'Hauptchat',
|
|
313
|
+
independent: 'Unabhängiger Zweig',
|
|
314
|
+
draft: 'Entwurf',
|
|
315
|
+
sending: 'Wird erstellt',
|
|
316
|
+
running: 'Läuft',
|
|
317
|
+
ready: 'Erstellt',
|
|
318
|
+
failed: 'Fehlgeschlagen',
|
|
319
|
+
send: 'Senden',
|
|
320
|
+
sendingAction: 'Wird gesendet…',
|
|
321
|
+
quote: 'Zitiert',
|
|
322
|
+
defaultQuestion: 'Erkläre diesen Inhalt genauer.',
|
|
323
|
+
empty: 'Frage hier ergänzen…',
|
|
324
|
+
sendHint: 'Enter zum Senden · Umschalt + Enter für neue Zeile',
|
|
325
|
+
collapse: 'Einklappen',
|
|
326
|
+
input: 'Eingabe',
|
|
327
|
+
deleteDraft: 'Entwurf löschen',
|
|
328
|
+
close: 'Schließen',
|
|
329
|
+
expand: 'Vergrößern',
|
|
330
|
+
restore: 'Panel wiederherstellen',
|
|
331
|
+
back: 'Zurück',
|
|
332
|
+
forward: 'Weiter',
|
|
333
|
+
stageHint: 'Zurück / Weiter wechselt nur den angezeigten Zweig; der Modellkontext bleibt unverändert.',
|
|
334
|
+
path: 'Pfad',
|
|
335
|
+
all: 'Alle',
|
|
336
|
+
tree: 'Zweigbaum',
|
|
337
|
+
current: 'Aktuell',
|
|
338
|
+
dock: 'Eingeklappte Zweige',
|
|
339
|
+
open: 'Öffnen',
|
|
340
|
+
retry: 'Erneut versuchen',
|
|
341
|
+
error: 'Senden fehlgeschlagen',
|
|
342
|
+
forkError: 'Zweig konnte nicht erstellt werden',
|
|
343
|
+
noSession: 'Sitzung nicht verfügbar',
|
|
344
|
+
tooLong: 'Auswahl ist zu lang',
|
|
345
|
+
content: 'Text',
|
|
346
|
+
quoteLabel: 'Zitiert aus',
|
|
347
|
+
showQuote: 'Zitat anzeigen',
|
|
348
|
+
hideQuote: 'Zitat ausblenden',
|
|
349
|
+
switchBranch: 'Zu diesem Zweig wechseln',
|
|
350
|
+
stages: 'Knoten',
|
|
351
|
+
collapseDock: 'Liste einklappen',
|
|
352
|
+
expandDock: 'Liste ausklappen',
|
|
353
|
+
sidebarGroup: 'Folgezweige',
|
|
354
|
+
context: 'Kontext',
|
|
355
|
+
contextStart: 'Kontextwurzel',
|
|
356
|
+
waiting: 'Warte auf Frage',
|
|
357
|
+
treeNote: 'Aktueller Modellkontext: {context}. Geschwisterzweige sind nicht enthalten.',
|
|
358
|
+
anchorMissing: 'Der Quelltext von #{n} ist nicht sichtbar; er ist möglicherweise eingeklappt oder noch nicht geladen',
|
|
359
|
+
draftWait: 'Stelle deine Frage im Eingabefenster unten',
|
|
360
|
+
}, ru: {
|
|
361
|
+
chip: 'Спросить',
|
|
362
|
+
chipHint: 'Задать вопрос по выделенному тексту в отдельной ветке',
|
|
363
|
+
branch: 'Ветка',
|
|
364
|
+
branchN: 'Ветка',
|
|
365
|
+
basedOn: 'на основе',
|
|
366
|
+
main: 'Основной чат',
|
|
367
|
+
independent: 'Независимая ветка',
|
|
368
|
+
draft: 'Черновик',
|
|
369
|
+
sending: 'Создание',
|
|
370
|
+
running: 'Выполняется',
|
|
371
|
+
ready: 'Создано',
|
|
372
|
+
failed: 'Ошибка',
|
|
373
|
+
send: 'Отправить',
|
|
374
|
+
sendingAction: 'Отправка…',
|
|
375
|
+
quote: 'Цитата',
|
|
376
|
+
defaultQuestion: 'Объясните этот фрагмент подробнее.',
|
|
377
|
+
empty: 'Добавьте вопрос…',
|
|
378
|
+
sendHint: 'Enter — отправить · Shift + Enter — новая строка',
|
|
379
|
+
collapse: 'Свернуть',
|
|
380
|
+
input: 'Ввод',
|
|
381
|
+
deleteDraft: 'Удалить черновик',
|
|
382
|
+
close: 'Закрыть',
|
|
383
|
+
expand: 'Развернуть',
|
|
384
|
+
restore: 'Вернуть панель',
|
|
385
|
+
back: 'Назад',
|
|
386
|
+
forward: 'Вперёд',
|
|
387
|
+
stageHint: 'Назад / Вперёд переключает только просматриваемую ветку; контекст модели не меняется.',
|
|
388
|
+
path: 'Путь',
|
|
389
|
+
all: 'Все',
|
|
390
|
+
tree: 'Дерево веток',
|
|
391
|
+
current: 'Текущая',
|
|
392
|
+
dock: 'Свёрнутые ветки',
|
|
393
|
+
open: 'Открыть',
|
|
394
|
+
retry: 'Повторить',
|
|
395
|
+
error: 'Не удалось отправить',
|
|
396
|
+
forkError: 'Не удалось создать ветку',
|
|
397
|
+
noSession: 'Сеанс недоступен',
|
|
398
|
+
tooLong: 'Выделение слишком длинное',
|
|
399
|
+
content: 'Текст',
|
|
400
|
+
quoteLabel: 'Цитата из',
|
|
401
|
+
showQuote: 'Показать цитату',
|
|
402
|
+
hideQuote: 'Скрыть цитату',
|
|
403
|
+
switchBranch: 'Перейти к этой ветке',
|
|
404
|
+
stages: 'узлов',
|
|
405
|
+
collapseDock: 'Свернуть список',
|
|
406
|
+
expandDock: 'Развернуть список',
|
|
407
|
+
sidebarGroup: 'Ветки вопросов',
|
|
408
|
+
context: 'Контекст',
|
|
409
|
+
contextStart: 'Начало контекста',
|
|
410
|
+
waiting: 'Ожидание вопроса',
|
|
411
|
+
treeNote: 'Текущий контекст модели: {context}. Ветки-сестры не включены.',
|
|
412
|
+
anchorMissing: 'Исходный текст #{n} не отображается; возможно, он свёрнут или ещё не загружен',
|
|
413
|
+
draftWait: 'Задайте вопрос в окне ввода ниже',
|
|
414
|
+
}, pt: {
|
|
415
|
+
chip: 'Perguntar',
|
|
416
|
+
chipHint: 'Pergunte sobre o texto selecionado em um ramo independente',
|
|
417
|
+
branch: 'Ramo',
|
|
418
|
+
branchN: 'Ramo',
|
|
419
|
+
basedOn: 'com base em',
|
|
420
|
+
main: 'Conversa principal',
|
|
421
|
+
independent: 'Ramo independente',
|
|
422
|
+
draft: 'Rascunho',
|
|
423
|
+
sending: 'Criando',
|
|
424
|
+
running: 'Em execução',
|
|
425
|
+
ready: 'Criado',
|
|
426
|
+
failed: 'Falhou',
|
|
427
|
+
send: 'Enviar',
|
|
428
|
+
sendingAction: 'Enviando…',
|
|
429
|
+
quote: 'Citado',
|
|
430
|
+
defaultQuestion: 'Explique este conteúdo com mais detalhes.',
|
|
431
|
+
empty: 'Adicione sua pergunta…',
|
|
432
|
+
sendHint: 'Enter para enviar · Shift + Enter para nova linha',
|
|
433
|
+
collapse: 'Recolher',
|
|
434
|
+
input: 'Entrada',
|
|
435
|
+
deleteDraft: 'Excluir rascunho',
|
|
436
|
+
close: 'Fechar',
|
|
437
|
+
expand: 'Ampliar',
|
|
438
|
+
restore: 'Restaurar painel',
|
|
439
|
+
back: 'Voltar',
|
|
440
|
+
forward: 'Avançar',
|
|
441
|
+
stageHint: 'Voltar / Avançar apenas altera o ramo exibido; não altera o contexto do modelo.',
|
|
442
|
+
path: 'Caminho',
|
|
443
|
+
all: 'Tudo',
|
|
444
|
+
tree: 'Árvore de ramos',
|
|
445
|
+
current: 'Atual',
|
|
446
|
+
dock: 'Ramos recolhidos',
|
|
447
|
+
open: 'Abrir',
|
|
448
|
+
retry: 'Tentar novamente',
|
|
449
|
+
error: 'Falha ao enviar',
|
|
450
|
+
forkError: 'Não foi possível criar o ramo',
|
|
451
|
+
noSession: 'Sessão indisponível',
|
|
452
|
+
tooLong: 'A seleção é muito longa',
|
|
453
|
+
content: 'Texto',
|
|
454
|
+
quoteLabel: 'Citado de',
|
|
455
|
+
showQuote: 'Mostrar citação',
|
|
456
|
+
hideQuote: 'Ocultar citação',
|
|
457
|
+
switchBranch: 'Mudar para este ramo',
|
|
458
|
+
stages: 'nós',
|
|
459
|
+
collapseDock: 'Recolher lista',
|
|
460
|
+
expandDock: 'Expandir lista',
|
|
461
|
+
sidebarGroup: 'Ramos de acompanhamento',
|
|
462
|
+
context: 'Contexto',
|
|
463
|
+
contextStart: 'Raiz do contexto',
|
|
464
|
+
waiting: 'Aguardando pergunta',
|
|
465
|
+
treeNote: 'Contexto atual do modelo: {context}. Os ramos irmãos não estão incluídos.',
|
|
466
|
+
anchorMissing: 'O texto original de #{n} não está visível; pode estar recolhido ou ainda não carregado',
|
|
467
|
+
draftWait: 'Faça sua pergunta na janela de entrada abaixo',
|
|
468
|
+
}, }
|
|
145
469
|
|
|
146
470
|
let app = null
|
|
147
471
|
|
|
@@ -1332,10 +1656,27 @@ window.__ModuleLoader__.load({
|
|
|
1332
1656
|
if (other !== header) other.remove()
|
|
1333
1657
|
}
|
|
1334
1658
|
if (header.nextSibling !== first) firstParent.insertBefore(header, first)
|
|
1335
|
-
const label = `${state.sidebarCollapsed ? '▸' : '▾'} ${app.t('sidebarGroup')} · ${
|
|
1659
|
+
const label = `${state.sidebarCollapsed ? '▸' : '▾'} ${app.t('sidebarGroup')} · ${ids.size}`
|
|
1336
1660
|
if (header.textContent !== label) header.textContent = label
|
|
1337
1661
|
for (const row of rows) row.classList.toggle('ifu-sidebar-hidden', state.sidebarCollapsed)
|
|
1338
1662
|
|
|
1663
|
+
// The host's “show remaining n conversations” / “show less” controls
|
|
1664
|
+
// live inside the same Workspace section as these rows. Fold them with
|
|
1665
|
+
// the branch group instead of leaving an orphaned expansion control.
|
|
1666
|
+
const overflowControls = new Set()
|
|
1667
|
+
for (const row of rows) {
|
|
1668
|
+
let scope = row.parentElement
|
|
1669
|
+
while (scope && scope !== document.body && scope !== document.documentElement) {
|
|
1670
|
+
for (const control of scope.querySelectorAll(':scope > [data-row-key^="overflow:"]')) {
|
|
1671
|
+
overflowControls.add(control)
|
|
1672
|
+
}
|
|
1673
|
+
scope = scope.parentElement
|
|
1674
|
+
}
|
|
1675
|
+
}
|
|
1676
|
+
for (const control of overflowControls) {
|
|
1677
|
+
control.classList.toggle('ifu-sidebar-hidden', state.sidebarCollapsed)
|
|
1678
|
+
}
|
|
1679
|
+
|
|
1339
1680
|
const branchSessionIds = ids
|
|
1340
1681
|
const rootSessionIds = new Set(state.order
|
|
1341
1682
|
.map(id => state.branches[id]?.rootSessionId)
|
|
@@ -1446,7 +1787,7 @@ window.__ModuleLoader__.load({
|
|
|
1446
1787
|
// giving up on this attempt.
|
|
1447
1788
|
if (navigator && attempt === 0) navigator.click()
|
|
1448
1789
|
if (attempt < 14) setTimeout(() => scrollBranchIntoView(branch, attempt + 1), 100)
|
|
1449
|
-
else notify(
|
|
1790
|
+
else notify(app.t('anchorMissing', { n: branch.number }))
|
|
1450
1791
|
return
|
|
1451
1792
|
}
|
|
1452
1793
|
if (navigator && attempt === 0) navigator.click()
|
|
@@ -2728,7 +3069,7 @@ window.__ModuleLoader__.load({
|
|
|
2728
3069
|
apply(ctx) {
|
|
2729
3070
|
app = createApp(ctx)
|
|
2730
3071
|
app.load()
|
|
2731
|
-
ctx.effect(() => ctx.locale.register(NS,
|
|
3072
|
+
ctx.effect(() => ctx.locale.register(NS, DICT), 'inline-followup: locale')
|
|
2732
3073
|
ctx.effect(() => ctx.on('locale/change', () => app.emit()), 'inline-followup: locale-change')
|
|
2733
3074
|
ctx.effect(() => app.install(), 'inline-followup: lifetime')
|
|
2734
3075
|
ctx.slots.inject('shell.overlay', () => ctx.slots.register({
|
package/locale/de.json
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "Aus Text nachfragen",
|
|
4
|
+
"description": "Text in einer abgeschlossenen Assistant-Antwort auswählen, in einem unabhängigen Eingabefenster nachfragen und in einem echten Session-Zweig weiterarbeiten. Farbige Markierungen, Zweigbaum, Bühne und einklappbare Seitenleisten-Gruppe. Zweige sind echte Sessions; gesendete Zweige können nur archiviert werden."
|
|
5
|
+
}
|
|
6
|
+
}
|
package/locale/es.json
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "Preguntar desde el texto",
|
|
4
|
+
"description": "Selecciona texto en una respuesta completa del assistant, pregunta en una ventana de entrada independiente y continúa en una rama de Session real. Incluye marcas de color, árbol de ramas, escenario y un grupo plegable en la barra lateral. Las ramas son Sessions reales; las ramas enviadas solo se pueden archivar."
|
|
5
|
+
}
|
|
6
|
+
}
|
package/locale/fr.json
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "Demander depuis le texte",
|
|
4
|
+
"description": "Sélectionnez du texte dans une réponse finalisée de l’assistant, posez votre question dans une fenêtre de saisie indépendante et continuez dans une branche de Session réelle. Marques colorées, arbre des branches, scène et groupe repliable dans la barre latérale. Les branches sont de vraies Sessions ; les branches envoyées ne peuvent être qu’archivées."
|
|
5
|
+
}
|
|
6
|
+
}
|
package/locale/ja.json
ADDED
package/locale/pt.json
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "Perguntar a partir do texto",
|
|
4
|
+
"description": "Selecione texto em uma resposta concluída do assistant, pergunte em uma janela de entrada independente e continue em um ramo de Session real. Marcas coloridas, árvore de ramos, palco e grupo recolhível na barra lateral. Os ramos são Sessions reais; ramos enviados só podem ser arquivados."
|
|
5
|
+
}
|
|
6
|
+
}
|
package/locale/ru.json
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"title": "Спросить по тексту",
|
|
4
|
+
"description": "Выделите текст в завершённом ответе assistant, задайте вопрос в отдельном окне ввода и продолжите в настоящей ветке Session. Цветные метки, дерево веток, сцена и сворачиваемая группа в боковой панели. Ветки — это реальные Sessions; отправленные ветки можно только архивировать."
|
|
5
|
+
}
|
|
6
|
+
}
|
package/package.json
CHANGED