dsh-ask-from-text 0.1.20 → 0.1.21

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 CHANGED
@@ -4,6 +4,14 @@ 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.21] - 2026-11-13
8
+
9
+ ### Added
10
+
11
+ - Runtime dictionaries and Plugin Manager metadata for Japanese, Spanish,
12
+ French, German, Russian, and Brazilian Portuguese, completing the eight DSH
13
+ languages. Unsupported locales fall back to English.
14
+
7
15
  ## [0.1.20] - 2026-11-13
8
16
 
9
17
  ### Added
@@ -63,6 +71,14 @@ project follows [Semantic Versioning](https://semver.org/).
63
71
 
64
72
  - README screenshots now use absolute CDN URLs so they render on the npm package page.
65
73
 
74
+ ## [0.1.21] - 2026-11-13
75
+
76
+ ### Added
77
+
78
+ - Runtime dictionaries and Plugin Manager metadata for Japanese, Spanish,
79
+ French, German, Russian, and Brazilian Portuguese, completing the eight DSH
80
+ languages. Unsupported locales fall back to English.
81
+
66
82
  ## [0.1.20] - 2026-11-13
67
83
 
68
84
  ### Added
@@ -211,6 +227,7 @@ project follows [Semantic Versioning](https://semver.org/).
211
227
  [0.1.18]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.18
212
228
  [0.1.19]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.19
213
229
  [0.1.20]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.20
230
+ [0.1.21]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.21
214
231
  [0.1.13]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.13
215
232
  [0.1.14]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.14
216
233
  [0.1.15]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.15
@@ -219,3 +236,4 @@ project follows [Semantic Versioning](https://semver.org/).
219
236
  [0.1.18]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.18
220
237
  [0.1.19]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.19
221
238
  [0.1.20]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.20
239
+ [0.1.21]: https://github.com/gbn0219/dsh-ask-from-text/releases/tag/v0.1.21
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 语言:中文/英文;其他语言自动回退英文。原生对话区域继续跟随 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 English are bundled; other languages fall back to English. The native conversation follows DSH.
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: 'source text is not visible; it may be folded or not loaded yet',
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
 
@@ -1446,7 +1770,7 @@ window.__ModuleLoader__.load({
1446
1770
  // giving up on this attempt.
1447
1771
  if (navigator && attempt === 0) navigator.click()
1448
1772
  if (attempt < 14) setTimeout(() => scrollBranchIntoView(branch, attempt + 1), 100)
1449
- else notify(`#${branch.number} ${app.t('anchorMissing')}`)
1773
+ else notify(app.t('anchorMissing', { n: branch.number }))
1450
1774
  return
1451
1775
  }
1452
1776
  if (navigator && attempt === 0) navigator.click()
@@ -2728,7 +3052,7 @@ window.__ModuleLoader__.load({
2728
3052
  apply(ctx) {
2729
3053
  app = createApp(ctx)
2730
3054
  app.load()
2731
- ctx.effect(() => ctx.locale.register(NS, { zh: DICT.zh, en: DICT.en }), 'inline-followup: locale')
3055
+ ctx.effect(() => ctx.locale.register(NS, DICT), 'inline-followup: locale')
2732
3056
  ctx.effect(() => ctx.on('locale/change', () => app.emit()), 'inline-followup: locale-change')
2733
3057
  ctx.effect(() => app.install(), 'inline-followup: lifetime')
2734
3058
  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
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "テキストから質問",
4
+ "description": "完了した assistant の回答内のテキストを選択し、独立した入力ウィンドウで質問して、実際の Session ブランチとして続けられます。色付きマーク、ブランチツリー、ステージ表示、折りたたみ可能な左サイドバーのグループに対応。ブランチは実際の Session で、送信済みのブランチはアーカイブのみ可能です。"
5
+ }
6
+ }
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-ask-from-text",
3
- "version": "0.1.20",
3
+ "version": "0.1.21",
4
4
  "type": "module",
5
5
  "description": "Ask a follow-up from selected text in a DeepSeek Harness answer, in a real Session branch with a tree of context.",
6
6
  "exports": {