@goodandready/dsh-russian-lang 0.2.24 → 0.2.26
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/README.md +9 -9
- package/README.ru.md +9 -9
- package/lib/client.js +23 -8
- package/lib/locales/core.json +1 -1
- package/lib/locales/plugins/15-commandcode.json +1 -1
- package/lib/locales/plugins/17-dsh-context.json +1 -1
- package/lib/locales/plugins/32-vision-bridge.json +1 -1
- package/lib/locales/plugins/36-cost-meter.json +1 -1
- package/lib/locales/plugins/37-time-machine.json +1 -1
- package/lib/locales/plugins/49-dsml-guard.json +1 -1
- package/lib/locales/plugins/72-server-monitor.json +70 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
<h3>Полная русская локализация, умная типографика и исправление раскладки клавиатуры для DeepSeek Harness</h3>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<a href="https://www.npmjs.com/package/@goodandready/dsh-russian-lang"><img src="https://img.shields.io/badge/npm-v0.2.
|
|
8
|
+
<a href="https://www.npmjs.com/package/@goodandready/dsh-russian-lang"><img src="https://img.shields.io/badge/npm-v0.2.25-6366f1.svg?style=for-the-badge&labelColor=1e1b4b" alt="npm version"></a>
|
|
9
9
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-10b981.svg?style=for-the-badge&color=10b981&labelColor=064e3b" alt="license"></a>
|
|
10
10
|
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-8b5cf6.svg?style=for-the-badge&labelColor=2e1065" alt="DSH Plugin"></a>
|
|
11
11
|
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-20%2B-f59e0b.svg?style=for-the-badge&labelColor=451a03" alt="Node version"></a>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
|
-
<img src="https://img.shields.io/badge/DSH-v0.1.
|
|
15
|
+
<img src="https://img.shields.io/badge/DSH-v0.1.6--alpha.2%2B-blue.svg?style=for-the-badge&labelColor=1e1b4b" alt="DSH v0.1.6-alpha.2+">
|
|
16
16
|
<img src="https://img.shields.io/badge/Покрытие-100%25-10b981.svg?style=for-the-badge&labelColor=064e3b" alt="Покрытие 100%">
|
|
17
|
-
<img src="https://img.shields.io/badge/Ключей_UI-
|
|
17
|
+
<img src="https://img.shields.io/badge/Ключей_UI-8735-6366f1.svg?style=for-the-badge&labelColor=1e1b4b" alt="8735 ключей">
|
|
18
18
|
<img src="https://img.shields.io/badge/Ручная_вычитка-100%25-0ea5e9.svg?style=for-the-badge&labelColor=082f49" alt="100% ручная вычитка">
|
|
19
19
|
</p>
|
|
20
20
|
|
|
@@ -55,9 +55,9 @@ graph LR
|
|
|
55
55
|
DSH[Web UI Интерфейс] --> Loader[Загрузчик локализации dsh-russian-lang]
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
subgraph TranslationLayer [Слой перевода и адаптации —
|
|
59
|
-
Loader --> CoreDict[
|
|
60
|
-
Loader --> PluginDict[
|
|
58
|
+
subgraph TranslationLayer [Слой перевода и адаптации — 8735 ключей / 100% вычитано]
|
|
59
|
+
Loader --> CoreDict[49 Пространств имён ядра DSH / 2146 ключей]
|
|
60
|
+
Loader --> PluginDict[60+ Плагинов экосистемы DSH / 6589 ключей]
|
|
61
61
|
Loader --> PluralEngine[Движок грамматических Plural-форм: 1/2/5]
|
|
62
62
|
end
|
|
63
63
|
|
|
@@ -88,7 +88,7 @@ graph LR
|
|
|
88
88
|
|
|
89
89
|
## ✨ Полный обзор возможностей
|
|
90
90
|
|
|
91
|
-
### 1. 🌐 100% покрытие ядра DSH (
|
|
91
|
+
### 1. 🌐 100% покрытие ядра DSH (49 Пространств имён, 2146 ключей)
|
|
92
92
|
* **Диалоги и переписка (`conversation`)**: лента сообщений, ветки обсуждений, карточки вызова инструментов, статус генерации и рассуждений (thinking traces).
|
|
93
93
|
* **Модели и провайдеры (`settings.models`)**: каталог моделей, параметры инференса, управление токенами и ключами API.
|
|
94
94
|
* **Трейсы рассуждений (`trajectory`)**: детальные шаги, параметры вызовов инструментов, временные метки и визуализация размышлений модели.
|
|
@@ -97,9 +97,9 @@ graph LR
|
|
|
97
97
|
* **Планировщик и инвентарь (`schedule.catalog`, `settings.pluginInventory`, `settings.plugins`)**: фоновые задания, периодичность, фильтры и каталог установленных плагинов.
|
|
98
98
|
* **Права доступа и безопасность (`permission.access`, `plan`, `skill`)**: пресеты прав (полный доступ, только чтение, запись в рабочую область), выполнение планов и навыки.
|
|
99
99
|
|
|
100
|
-
> **О качестве перевода.** Все **
|
|
100
|
+
> **О качестве перевода.** Все **8735 ключей интерфейса (2146 ядра + 6589 плагинов) переведены на 100% и вычитаны вручную**. Черновой машинный перевод полностью замещён проверенными формулировками (`draft = 0`). Перевод регулярно валидируется автоматическими линтерами целостности плейсхолдеров, проверкой соблюдения глоссария (`glossary.json`) и детекторами переполнения верстки. Нашли неточность — кнопка «Сообщить о проблеме перевода» в карточке настроек создаёт готовый issue.
|
|
101
101
|
|
|
102
|
-
### 2. 🧩 Встроенный перевод
|
|
102
|
+
### 2. 🧩 Встроенный перевод 60+ плагинов экосистемы DSH (6589 ключей)
|
|
103
103
|
Локализация автоматически распространяется на все ключевые плагины экосистемы DeepSeek Harness:
|
|
104
104
|
* **`dsh-session-control`** — расширенное управление сессиями: закрепление диалогов, архив по периодам, просмотр расшифровок и фильтрация шума;
|
|
105
105
|
* **`dsh-kanban` и `task-board`** — канбан-доски задач, карточки, чек-листы, дедлайны, критерии готовности (DoD) и шлюз приёмки (Acceptance Gate);
|
package/README.ru.md
CHANGED
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
<h3>Полная русская локализация, умная типографика и исправление раскладки клавиатуры для DeepSeek Harness</h3>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<a href="https://www.npmjs.com/package/@goodandready/dsh-russian-lang"><img src="https://img.shields.io/badge/npm-v0.2.
|
|
8
|
+
<a href="https://www.npmjs.com/package/@goodandready/dsh-russian-lang"><img src="https://img.shields.io/badge/npm-v0.2.25-6366f1.svg?style=for-the-badge&labelColor=1e1b4b" alt="npm version"></a>
|
|
9
9
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-10b981.svg?style=for-the-badge&color=10b981&labelColor=064e3b" alt="license"></a>
|
|
10
10
|
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-8b5cf6.svg?style=for-the-badge&labelColor=2e1065" alt="DSH Plugin"></a>
|
|
11
11
|
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-20%2B-f59e0b.svg?style=for-the-badge&labelColor=451a03" alt="Node version"></a>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
|
-
<img src="https://img.shields.io/badge/DSH-v0.1.
|
|
15
|
+
<img src="https://img.shields.io/badge/DSH-v0.1.6--alpha.2%2B-blue.svg?style=for-the-badge&labelColor=1e1b4b" alt="DSH v0.1.6-alpha.2+">
|
|
16
16
|
<img src="https://img.shields.io/badge/Покрытие-100%25-10b981.svg?style=for-the-badge&labelColor=064e3b" alt="Покрытие 100%">
|
|
17
|
-
<img src="https://img.shields.io/badge/Ключей_UI-
|
|
17
|
+
<img src="https://img.shields.io/badge/Ключей_UI-8735-6366f1.svg?style=for-the-badge&labelColor=1e1b4b" alt="8735 ключей">
|
|
18
18
|
<img src="https://img.shields.io/badge/Ручная_вычитка-100%25-0ea5e9.svg?style=for-the-badge&labelColor=082f49" alt="100% ручная вычитка">
|
|
19
19
|
</p>
|
|
20
20
|
|
|
@@ -55,9 +55,9 @@ graph LR
|
|
|
55
55
|
DSH[Web UI Интерфейс] --> Loader[Загрузчик локализации dsh-russian-lang]
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
subgraph TranslationLayer [Слой перевода и адаптации —
|
|
59
|
-
Loader --> CoreDict[
|
|
60
|
-
Loader --> PluginDict[
|
|
58
|
+
subgraph TranslationLayer [Слой перевода и адаптации — 8735 ключей / 100% вычитано]
|
|
59
|
+
Loader --> CoreDict[49 Пространств имён ядра DSH / 2146 ключей]
|
|
60
|
+
Loader --> PluginDict[60+ Плагинов экосистемы DSH / 6589 ключей]
|
|
61
61
|
Loader --> PluralEngine[Движок грамматических Plural-форм: 1/2/5]
|
|
62
62
|
end
|
|
63
63
|
|
|
@@ -88,7 +88,7 @@ graph LR
|
|
|
88
88
|
|
|
89
89
|
## ✨ Полный обзор возможностей
|
|
90
90
|
|
|
91
|
-
### 1. 🌐 100% покрытие ядра DSH (
|
|
91
|
+
### 1. 🌐 100% покрытие ядра DSH (49 Пространств имён, 2146 ключей)
|
|
92
92
|
* **Диалоги и переписка (`conversation`)**: лента сообщений, ветки обсуждений, карточки вызова инструментов, статус генерации и рассуждений (thinking traces).
|
|
93
93
|
* **Модели и провайдеры (`settings.models`)**: каталог моделей, параметры инференса, управление токенами и ключами API.
|
|
94
94
|
* **Трейсы рассуждений (`trajectory`)**: детальные шаги, параметры вызовов инструментов, временные метки и визуализация размышлений модели.
|
|
@@ -97,9 +97,9 @@ graph LR
|
|
|
97
97
|
* **Планировщик и инвентарь (`schedule.catalog`, `settings.pluginInventory`, `settings.plugins`)**: фоновые задания, периодичность, фильтры и каталог установленных плагинов.
|
|
98
98
|
* **Права доступа и безопасность (`permission.access`, `plan`, `skill`)**: пресеты прав (полный доступ, только чтение, запись в рабочую область), выполнение планов и навыки.
|
|
99
99
|
|
|
100
|
-
> **О качестве перевода.** Все **
|
|
100
|
+
> **О качестве перевода.** Все **8735 ключей интерфейса (2146 ядра + 6589 плагинов) переведены на 100% и вычитаны вручную**. Черновой машинный перевод полностью замещён проверенными формулировками (`draft = 0`). Перевод регулярно валидируется автоматическими линтерами целостности плейсхолдеров, проверкой соблюдения глоссария (`glossary.json`) и детекторами переполнения верстки. Нашли неточность — кнопка «Сообщить о проблеме перевода» в карточке настроек создаёт готовый issue.
|
|
101
101
|
|
|
102
|
-
### 2. 🧩 Встроенный перевод
|
|
102
|
+
### 2. 🧩 Встроенный перевод 60+ плагинов экосистемы DSH (6589 ключей)
|
|
103
103
|
Локализация автоматически распространяется на все ключевые плагины экосистемы DeepSeek Harness:
|
|
104
104
|
* **`dsh-session-control`** — расширенное управление сессиями: закрепление диалогов, архив по периодам, просмотр расшифровок и фильтрация шума;
|
|
105
105
|
* **`dsh-kanban` и `task-board`** — канбан-доски задач, карточки, чек-листы, дедлайны, критерии готовности (DoD) и шлюз приёмки (Acceptance Gate);
|
package/lib/client.js
CHANGED
|
@@ -525,6 +525,7 @@ const exportSessionToMarkdown = (session, options = {}) => {
|
|
|
525
525
|
RU['russian-lang'] = {"cardTitle": "Русская локализация", "cardSub": "Язык интерфейса, типографика, раскладка", "badgeRu": "🟢 RU активен", "badgeEn": "⚪ EN активен", "badgeCoverage": "🟢 100% (7,902 ключа)", "badgeSmartUx": "⚡ Smart UX активен", "secLanguage": "🌐 Язык интерфейса", "secLanguageDesc": "Нативное переключение языка интерфейса DSH на русский без перезагрузки страницы.", "enabled": "Русский язык включён", "enabledDesc": "Переключает язык интерфейса DeepSeek Harness на русский.", "quickSwitchNote": "Быстрый переключатель RU ⇄ EN доступен в шапке сессии рядом с кнопками диалога.", "secTypography": "✍️ Умная типографика и ввод (Smart UX)", "secTypographyDesc": "Автоматическое улучшение текстов по нормам русской типографики во время диалога и набора.", "typography": "Типографика вывода", "typographyDesc": "Исправляет типографику ответов модели: кавычки-«ёлочки», тире («—») вместо дефисов, неразрывные пробелы после предлогов.", "yo": "Буква «ё»", "yoDesc": "Восстанавливать «ё» в частых словах (ещё, чёрный, идёт и др.), написанных через «е». Неоднозначные слова (все/всё) не трогаются.", "liveInput": "Живая типографика инпута", "liveInputDesc": "Автоматически заменять \"\" на «» и -- на — прямо во время набора промпта (код в бэктиках игнорируется).", "slashAliases": "Русские алиасы команд", "slashAliasesDesc": "Поддержка русских команд: /цель -> /goal, /сжать -> /compact, /план -> /plan, /справка -> /help, /память -> /memory.", "altLHintText": "Мгновенная конвертация раскладки текущего поля (ghbdtn ⇄ привет, /vjltkm ⇄ /model). В углу поля ввода также отображается метка раскладки.", "secAgentPrompt": "🤖 Системный промпт агента", "secAgentPromptDesc": "Официальная секция расширения DSH systemPrompt для ведения диалога на русском языке.", "agentPrompt": "Русский промпт агента", "agentPromptDesc": "Добавляет в системный промпт инструкцию отвечать по-русски в выбранном стиле.", "agentPromptPreset": "Стиль ответов агента", "presetExpert": "Технический эксперт (строгая терминология, чистый код)", "presetWriter": "Технический писатель (Markdown, таблицы, ГОСТ)", "presetConcise": "Лаконичный режим (кратко, без лишней воды)", "secUpdater": "🔄 Обновление языкового пакета", "secUpdaterDesc": "Проверка наличия новых релизов в реестре npm и обновление в один клик.", "updaterCurrent": "Текущая версия: v{version}", "updaterLatest": "Доступна новая версия: v{version}", "updaterUpToDate": "Установлена актуальная версия", "updaterChecking": "Проверка…", "updaterCheckBtn": "Проверить обновления", "updaterBtn": "Обновить до v{version} в 1 клик", "updaterUpdating": "Установка обновления…", "updaterSuccess": "✅ Плагин успешно обновлён! Перезапустите DSH для применения.", "updaterFailed": "❌ Не удалось проверить/обновить плагин. Проверьте сеть или логи сервера.", "badgeUpdateAvailable": "Доступно обновление", "badgeUpToDate": "Актуальная версия", "secTranslator": "🌐 Перевод сообщений ассистента", "secTranslatorDesc": "Настройка перевода ответов модели в чате на русский язык (локально в Docker или онлайн).", "translateEngine": "Движок перевода", "engineOff": "Выключен (по умолчанию, без сетевых вызовов)", "engineLocal": "Локальный LibreTranslate (приватно, ~600 МБ RAM)", "engineGoogle": "Google Translate (онлайн)", "googleWarn": "⚠️ Внимание: при онлайн-переводе текст сообщений ассистента передаётся на публичные серверы Google для перевода на лету. Не используйте для конфиденциальных данных.", "localStatusRunning": "🟢 Контейнер LibreTranslate активен", "localStatusStopped": "⚪ Контейнер LibreTranslate не запущен", "localStartBtn": "Запустить LibreTranslate в Docker (~600 МБ RAM)", "localStarting": "Запуск контейнера…", "localInfo": "LibreTranslate запускается изолированно в Docker на сервере, потребляет ~500–700 МБ RAM и переводит на 100% локально.", "secSupport": "📊 Покрытие экосистемы и поддержка", "secSupportDesc": "Словари синхронизированы с DSH v0.1.6-alpha.1. 100.0% UI-покрытие ядра и всех установленных плагинов (7,902 ключа) без черновых машинных переводов.", "statNamespaces": "Пространств имён", "statCoreKeys": "Ключей ядра", "statPluginKeys": "Ключей плагинов", "overridesCount": "Своих переопределений", "statusLoading": "Настройки загружаются…", "statusUnavailable": "Настройки недоступны на этом хосте", "translateTurn": "Перевести на русский", "reportIssue": "Сообщить о неточности перевода", "exportMdHint": "Экспорт диалога в Markdown доступен по кнопке [ 📥 MD ] в шапке сессии.", "translateTurnHint": "Перевод ответов ассистента на русский доступен по кнопке [ RU ↗ ] на блоках сообщений."}
|
|
526
526
|
|
|
527
527
|
const SETTINGS_NS_NAME = 'russian-lang'
|
|
528
|
+
const ROW_CONFIG_KEY = '@goodandready/dsh-russian-lang#russian-lang'
|
|
528
529
|
|
|
529
530
|
function apply(ctx) {
|
|
530
531
|
const runtime = ctx.locale
|
|
@@ -1523,6 +1524,14 @@ const exportSessionToMarkdown = (session, options = {}) => {
|
|
|
1523
1524
|
} catch (err) { console.warn('dsh-russian-lang: toggle failed', err) }
|
|
1524
1525
|
}
|
|
1525
1526
|
try {
|
|
1527
|
+
ctx.slots.inject('plugins.row.config', () =>
|
|
1528
|
+
ctx.slots.register({
|
|
1529
|
+
name: 'plugins.row.config',
|
|
1530
|
+
key: ROW_CONFIG_KEY,
|
|
1531
|
+
locale: SETTINGS_NS_NAME,
|
|
1532
|
+
inject: () => ({ scope, runtime, toggleRu }),
|
|
1533
|
+
}, SettingsCard),
|
|
1534
|
+
)
|
|
1526
1535
|
ctx.slots.inject('settings.plugin.item', () =>
|
|
1527
1536
|
ctx.slots.register({
|
|
1528
1537
|
name: 'settings.plugin.item',
|
|
@@ -1691,7 +1700,7 @@ const exportSessionToMarkdown = (session, options = {}) => {
|
|
|
1691
1700
|
const [loading, setLoading] = React.useState(false)
|
|
1692
1701
|
const [open, setOpen] = React.useState(false)
|
|
1693
1702
|
const [upStatus, setUpStatus] = React.useState({
|
|
1694
|
-
currentVersion: '0.2.
|
|
1703
|
+
currentVersion: '0.2.25',
|
|
1695
1704
|
latestVersion: undefined,
|
|
1696
1705
|
updateAvailable: false
|
|
1697
1706
|
})
|
|
@@ -1858,7 +1867,7 @@ const exportSessionToMarkdown = (session, options = {}) => {
|
|
|
1858
1867
|
if (copyBtn) {
|
|
1859
1868
|
copyBtn.addEventListener('click', (e) => {
|
|
1860
1869
|
e.stopPropagation()
|
|
1861
|
-
try { navigator.clipboard.writeText(displayText) } catch (err) { /* bestEffort */ void
|
|
1870
|
+
try { navigator.clipboard.writeText(displayText) } catch (err) { /* bestEffort */ void e; }
|
|
1862
1871
|
copyBtn.textContent = '✓ Скопировано'
|
|
1863
1872
|
setTimeout(() => { copyBtn.textContent = '📋 Копировать' }, 2000)
|
|
1864
1873
|
})
|
|
@@ -1971,11 +1980,17 @@ const exportSessionToMarkdown = (session, options = {}) => {
|
|
|
1971
1980
|
const presetKey = value.agentPromptPreset || 'technical_expert'
|
|
1972
1981
|
const presetInfo = typeof SYSTEM_PROMPT_PRESETS !== 'undefined' ? SYSTEM_PROMPT_PRESETS[presetKey] : null
|
|
1973
1982
|
|
|
1974
|
-
|
|
1983
|
+
if (props && props.view === 'summary') {
|
|
1984
|
+
return React.createElement('div', { className: 'rl-sub' }, statusLine || t('cardSub'))
|
|
1985
|
+
}
|
|
1986
|
+
const page = !!(props && props.view === 'page')
|
|
1987
|
+
|
|
1988
|
+
return React.createElement('div', { className: page ? 'rl-page-seat' : 'rl-card' },
|
|
1975
1989
|
React.createElement('button', {
|
|
1976
1990
|
type: 'button',
|
|
1977
1991
|
className: 'rl-head',
|
|
1978
|
-
'
|
|
1992
|
+
style: page ? { display: 'none' } : undefined,
|
|
1993
|
+
'aria-expanded': page ? 'true' : String(open),
|
|
1979
1994
|
onClick: () => setOpen(!open),
|
|
1980
1995
|
},
|
|
1981
1996
|
React.createElement('span', { className: 'rl-head-main' },
|
|
@@ -1990,7 +2005,7 @@ const exportSessionToMarkdown = (session, options = {}) => {
|
|
|
1990
2005
|
React.createElement('span', {
|
|
1991
2006
|
className: 'rl-chev' + (open ? ' rl-chev-open' : ''),
|
|
1992
2007
|
}, React.createElement(Chevron, null))),
|
|
1993
|
-
open && React.createElement('div', { className: 'rl-body' },
|
|
2008
|
+
(page || open) && React.createElement('div', { className: 'rl-body' },
|
|
1994
2009
|
React.createElement('div', { className: 'rl-page' },
|
|
1995
2010
|
|
|
1996
2011
|
React.createElement('div', { className: 'rl-section-card' },
|
|
@@ -2056,7 +2071,7 @@ const exportSessionToMarkdown = (session, options = {}) => {
|
|
|
2056
2071
|
React.createElement('label', { className: 'rl-item-label' },
|
|
2057
2072
|
checkbox(value.slashAliases !== false && ruActive,
|
|
2058
2073
|
(ev) => {
|
|
2059
|
-
try { scope.set('slashAliases', ev.target.checked) } catch (err) { /* bestEffort */ void
|
|
2074
|
+
try { scope.set('slashAliases', ev.target.checked) } catch (err) { /* bestEffort */ void e; }
|
|
2060
2075
|
}, !ruActive || disabled),
|
|
2061
2076
|
t('slashAliases')
|
|
2062
2077
|
)
|
|
@@ -2132,7 +2147,7 @@ const exportSessionToMarkdown = (session, options = {}) => {
|
|
|
2132
2147
|
React.createElement('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: '8px' } },
|
|
2133
2148
|
React.createElement('div', null,
|
|
2134
2149
|
React.createElement('div', { style: { fontWeight: 600, color: 'var(--dsw-alias-label-primary)' } },
|
|
2135
|
-
t('updaterCurrent').replace('{version}', upStatus.currentVersion || '0.2.
|
|
2150
|
+
t('updaterCurrent').replace('{version}', upStatus.currentVersion || '0.2.25')),
|
|
2136
2151
|
upStatus.updateAvailable
|
|
2137
2152
|
? React.createElement('div', { style: { color: 'var(--dsw-alias-color-warning, #eab308)', marginTop: '2px', fontWeight: 500 } },
|
|
2138
2153
|
t('updaterLatest').replace('{version}', upStatus.latestVersion || ''))
|
|
@@ -2245,7 +2260,7 @@ const exportSessionToMarkdown = (session, options = {}) => {
|
|
|
2245
2260
|
),
|
|
2246
2261
|
React.createElement('div', { className: 'rl-actions-row' },
|
|
2247
2262
|
React.createElement('a', {
|
|
2248
|
-
href: makeIssueUrl({}, '0.2.
|
|
2263
|
+
href: makeIssueUrl({}, '0.2.25'),
|
|
2249
2264
|
target: '_blank',
|
|
2250
2265
|
rel: 'noopener noreferrer',
|
|
2251
2266
|
className: 'rl-btn rl-btn-primary'
|