@goodandready/dsh-russian-lang 0.3.11 → 0.3.12

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/lib/client.js CHANGED
@@ -545,7 +545,8 @@ const value = scope.getSnapshot().value || {}
545
545
  if (!!value.enabled !== wantRu) {const r = scope.set('enabled', wantRu)
546
546
  if (r && typeof r.catch === 'function') {r.catch((err) => {console.warn('dsh-russian-lang: scope.set enabled failed', err && err.message || err)
547
547
  })
548
- }}} catch (err) {}}
548
+ }}} catch (err) {void err;
549
+ }}
549
550
  ctx.effect(() => {try { return runtime.subscribe(syncFlag) } catch (err) { return undefined }}, 'dsh-russian-lang: sync-flag')
550
551
  const activate = () => {try {if (runtime.getLocale().active === 'ru') return
551
552
  runtime.setLocale('ru')
@@ -1113,7 +1114,7 @@ setTimeout(() => { copyKeyBtn.textContent = '📋' }, 1500)
1113
1114
  }}
1114
1115
  const copyReportBtn = modal.querySelector('.rl-copy-report-btn')
1115
1116
  if (copyReportBtn) {copyReportBtn.onclick = () => {const snippet = typeof generateBugReportSnippet === 'function'
1116
- ? generateBugReportSnippet({ key: k, ns, original: origText || rawText, current: rawText, override: textarea.value.trim(), pkgVersion: '0.3.11' })
1117
+ ? generateBugReportSnippet({ key: k, ns, original: origText || rawText, current: rawText, override: textarea.value.trim(), pkgVersion: '0.3.12' })
1117
1118
  : ('### Репорт: ' + (k || rawText) + '\n- Исходный: ' + (origText || rawText) + '\n- Перевод: ' + textarea.value.trim())
1118
1119
  try { navigator.clipboard.writeText(snippet) } catch (err) { void err; }
1119
1120
  copyReportBtn.textContent = '✓ Скопировано'
@@ -1400,7 +1401,7 @@ const [snap, setSnap] = React.useState(() => (scope && scope.getSnapshot ? scope
1400
1401
  const [ruActive, setRuActive] = React.useState(() => { try { return runtime.getLocale().active === 'ru' } catch (e) { return false } })
1401
1402
  const [typo, setTypoState] = React.useState(() =>
1402
1403
  (snap.value && snap.value.typography) || {})
1403
- const [upStatus, setUpStatus] = React.useState({currentVersion: '0.3.11',latestVersion: undefined,updateAvailable: false
1404
+ const [upStatus, setUpStatus] = React.useState({currentVersion: '0.3.12',latestVersion: undefined,updateAvailable: false
1404
1405
  })
1405
1406
  const [upLoading, setUpLoading] = React.useState(false)
1406
1407
  const [upMsg, setUpMsg] = React.useState(null)
@@ -1493,7 +1494,7 @@ scope.set('agentPromptPreset', val)
1493
1494
  } catch (err) { console.warn('dsh-russian-lang: set agentPromptPreset failed', err) }}},React.createElement('option', { value: 'technical_expert' }, t('presetExpert')),React.createElement('option', { value: 'tech_writer' }, t('presetWriter')),React.createElement('option', { value: 'concise' }, t('presetConcise')),React.createElement('option', { value: 'code_reviewer' }, t('presetReviewer')),React.createElement('option', { value: 'architect' }, t('presetArchitect')),React.createElement('option', { value: 'tutor' }, t('presetTutor')))),presetInfo ? React.createElement('div', { className: 'rl-preview-box' },React.createElement('div', { style: { fontWeight: 600, marginBottom: '4px', color: 'var(--dsw-alias-label-primary)' } }, '💬 ' + presetInfo.label + ':'),presetInfo.text
1494
1495
  ) : null
1495
1496
  ) : null
1496
- ),React.createElement('div', { className: 'rl-section-card' },React.createElement('div', { className: 'rl-section-title' },React.createElement('span', null, t('secUpdater')),React.createElement('span', { className: 'rl-badge ' + (upStatus.updateAvailable ? 'rl-badge-warn' : 'rl-badge-ok') },upStatus.updateAvailable ? t('badgeUpdateAvailable') : t('badgeUpToDate'))),React.createElement('div', { className: 'rl-section-desc' }, t('secUpdaterDesc')),React.createElement('div', { className: 'rl-item-card' },React.createElement('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: '8px' } },React.createElement('div', null,React.createElement('div', { style: { fontWeight: 600, color: 'var(--dsw-alias-label-primary)' } },t('updaterCurrent').replace('{version}', upStatus.currentVersion || '0.3.11')),upStatus.updateAvailable
1497
+ ),React.createElement('div', { className: 'rl-section-card' },React.createElement('div', { className: 'rl-section-title' },React.createElement('span', null, t('secUpdater')),React.createElement('span', { className: 'rl-badge ' + (upStatus.updateAvailable ? 'rl-badge-warn' : 'rl-badge-ok') },upStatus.updateAvailable ? t('badgeUpdateAvailable') : t('badgeUpToDate'))),React.createElement('div', { className: 'rl-section-desc' }, t('secUpdaterDesc')),React.createElement('div', { className: 'rl-item-card' },React.createElement('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: '8px' } },React.createElement('div', null,React.createElement('div', { style: { fontWeight: 600, color: 'var(--dsw-alias-label-primary)' } },t('updaterCurrent').replace('{version}', upStatus.currentVersion || '0.3.12')),upStatus.updateAvailable
1497
1498
  ? React.createElement('div', { style: { color: 'var(--dsw-alias-state-warning-primary)', marginTop: '2px', fontWeight: 500 } },t('updaterLatest').replace('{version}', upStatus.latestVersion || ''))
1498
1499
  : React.createElement('div', { style: { color: 'var(--dsw-alias-label-secondary)', marginTop: '2px' } },t('updaterUpToDate'))),upStatus.updateAvailable
1499
1500
  ? React.createElement('button', {type: 'button',className: 'rl-btn rl-btn-primary',disabled: upLoading,onClick: triggerUpdate,}, upLoading ? t('updaterUpdating') : t('updaterBtn').replace('{version}', upStatus.latestVersion || ''))
@@ -1531,7 +1532,7 @@ if (!input) return
1531
1532
  try {const parsed = JSON.parse(input)
1532
1533
  if (parsed && typeof parsed === 'object') {const merged = Object.assign({}, overrides, parsed)
1533
1534
  scope.set('overrides', merged)
1534
- }} catch (err) { alert('Ошибка разбора JSON: ' + (err && err.message || err)) }}}, '📥 Импорт JSON'))),React.createElement('div', { className: 'rl-section-card' },React.createElement('div', { className: 'rl-section-title' },React.createElement('span', null, t('secSupport')),React.createElement('span', { className: 'rl-badge rl-badge-ok' }, '🟢 100.0%')),React.createElement('div', { className: 'rl-section-desc' }, t('secSupportDesc')),React.createElement('div', { className: 'rl-grid-3' },React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '113'),React.createElement('div', { className: 'rl-stat-label' }, t('statNamespaces'))),React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '1 225'),React.createElement('div', { className: 'rl-stat-label' }, t('statCoreKeys'))),React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '5 924'),React.createElement('div', { className: 'rl-stat-label' }, t('statPluginKeys')))),React.createElement('div', { className: 'rl-actions-row' },React.createElement('a', {href: makeIssueUrl({}, '0.3.11'),target: '_blank',rel: 'noopener noreferrer',className: 'rl-btn rl-btn-primary'
1535
+ }} catch (err) { alert('Ошибка разбора JSON: ' + (err && err.message || err)) }}}, '📥 Импорт JSON'))),React.createElement('div', { className: 'rl-section-card' },React.createElement('div', { className: 'rl-section-title' },React.createElement('span', null, t('secSupport')),React.createElement('span', { className: 'rl-badge rl-badge-ok' }, '🟢 100.0%')),React.createElement('div', { className: 'rl-section-desc' }, t('secSupportDesc')),React.createElement('div', { className: 'rl-grid-3' },React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '113'),React.createElement('div', { className: 'rl-stat-label' }, t('statNamespaces'))),React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '1 225'),React.createElement('div', { className: 'rl-stat-label' }, t('statCoreKeys'))),React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '5 924'),React.createElement('div', { className: 'rl-stat-label' }, t('statPluginKeys')))),React.createElement('div', { className: 'rl-actions-row' },React.createElement('a', {href: makeIssueUrl({}, '0.3.12'),target: '_blank',rel: 'noopener noreferrer',className: 'rl-btn rl-btn-primary'
1535
1536
  }, '💬 ' + t('reportIssue')),React.createElement('div', { className: 'rl-hint-text', style: { flex: 1 } },t('exportMdHint')))))))
1536
1537
  }
1537
1538
  const RL_CSS = ['.rl-modal-mask{position:fixed;top:0;left:0;width:100vw;height:100vh;background:var(--dsw-alias-bg-mask);display:flex;align-items:center;justify-content:center;z-index:99999;backdrop-filter:blur(2px)}.rl-modal-box{background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;width:calc(100vw - 40px);max-width:500px;box-shadow:var(--dsw-alias-shadow-l3);display:flex;flex-direction:column;gap:12px;padding:18px}.rl-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none;overflow:hidden;transition:border-color .15s ease}.rl-head{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;display:flex;align-items:center;gap:12px;padding:14px 18px}.rl-head:hover{background:var(--dsw-alias-bg-layer-2)}.rl-head-main{flex:1;display:flex;flex-direction:column;gap:4px}.rl-title{color:var(--dsw-alias-label-primary);font-size:16px;font-weight:600;line-height:1.4;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.rl-sub{color:var(--dsw-alias-label-secondary);font-size:13px}.rl-chev{margin-left:auto;flex:none;color:var(--dsw-alias-label-tertiary);display:inline-flex;transition:transform .16s}.rl-chev-open{transform:rotate(180deg)}.rl-body{border-top:1px solid var(--dsw-alias-border-l2);padding:18px}.rl-page{display:flex;flex-direction:column;gap:16px;max-width:960px}.rl-section-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:10px;padding:16px 18px;display:flex;flex-direction:column;gap:12px}.rl-section-title{font-size:14px;font-weight:600;color:var(--dsw-alias-label-primary);display:flex;align-items:center;justify-content:space-between;gap:8px}.rl-section-desc{font-size:12px;color:var(--dsw-alias-label-secondary);margin-top:-4px;line-height:1.4}.rl-grid-2{display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:10px}.rl-grid-3{display:grid;grid-template-columns:repeat(auto-fit, minmax(140px, 1fr));gap:10px}.rl-badge{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--dsw-alias-border-l2);display:inline-flex;align-items:center;gap:4px;font-weight:500}.rl-badge-ok{border-color:var(--dsw-alias-state-success-primary);color:var(--dsw-alias-state-success-primary);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 8%, transparent)}.rl-badge-warn{border-color:var(--dsw-alias-state-warning-primary);color:var(--dsw-alias-state-warning-primary);background:color-mix(in srgb, var(--dsw-alias-state-warning-primary) 8%, transparent)}.rl-badge-dim{border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-3)}.rl-item-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.rl-item-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.rl-item-label{font-size:13px;font-weight:500;color:var(--dsw-alias-label-primary);display:flex;align-items:center;gap:8px;cursor:pointer}.rl-item-desc{font-size:11px;color:var(--dsw-alias-label-secondary);line-height:1.4}.rl-stat-box{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}.rl-stat-val{font-size:16px;font-weight:700;color:var(--dsw-alias-label-primary)}.rl-stat-label{font-size:11px;color:var(--dsw-alias-label-secondary);letter-spacing:0.3px}.rl-hotkey-box{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;padding:10px 12px;font-size:12px;color:var(--dsw-alias-label-secondary);line-height:1.4;display:flex;align-items:flex-start;gap:10px}.rl-hotkey-tag{font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);white-space:nowrap}.rl-preview-box{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;padding:10px 12px;font-size:12px;color:var(--dsw-alias-label-secondary);line-height:1.4}.rl-btn{appearance:none;font:inherit;cursor:pointer;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:6px 12px;font-size:12px;background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:all .15s ease;text-decoration:none}.rl-btn:hover:not(:disabled){background:var(--dsw-alias-bg-layer-1);border-color:var(--dsw-alias-label-secondary)}.rl-btn-primary{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3);border-color:transparent}.rl-btn-primary:hover:not(:disabled){opacity:0.9}.rl-select{height:32px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);border-radius:6px;padding:0 8px;font-size:12px;outline:none;width:100%;max-width:380px}.rl-select:focus{border-color:var(--dsw-alias-state-brand-primary)}.rl-check{width:16px;height:16px;accent-color:var(--dsw-alias-label-primary);cursor:pointer;flex-shrink:0}.rl-hint-text{font-size:11px;color:var(--dsw-alias-label-secondary);line-height:1.4}.rl-actions-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding-top:4px}.rl-lang-chip{appearance:none;cursor:pointer;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-secondary);font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;display:inline-flex;align-items:center;transition:all .15s;margin:0 4px}.rl-lang-chip:hover{border-color:var(--dsw-alias-label-primary);color:var(--dsw-alias-label-primary)}.rl-lang-chip-active{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.rl-action-btn{appearance:none;background:0 0;border:1px solid transparent;border-radius:4px;color:var(--dsw-alias-label-secondary);cursor:pointer;font-size:11px;padding:2px 5px;display:inline-flex;align-items:center;transition:all .15s}.rl-action-btn:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3)}.rl-action-btn-active{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-border-l2)}.rl-turn-translation{margin:8px 0;padding:10px 12px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:8px;font-size:13px;line-height:1.5}.rl-trans-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;border-bottom:1px solid var(--dsw-alias-border-l2);padding-bottom:4px}.rl-trans-title{font-size:11px;font-weight:600;color:var(--dsw-alias-label-secondary);text-transform:uppercase;letter-spacing:0.5px}.rl-trans-tools{display:flex;gap:4px}.rl-trans-btn{appearance:none;background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);cursor:pointer;padding:2px 7px;border-radius:4px;font-size:11px}.rl-trans-btn:hover{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary)}.rl-trans-body{color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;user-select:text}.rl-export-md-btn{appearance:none;border:1px solid var(--dsw-alias-border-l2);height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;background:transparent;border-radius:18px;justify-content:center;align-items:center;gap:4px;padding:6px 12px;font-size:13px;font-weight:500;display:inline-flex;white-space:nowrap;margin-left:6px;transition:all .15s ease}.rl-export-md-btn:hover{background:var(--dsw-alias-interactive-bg-hover)}.rl-inspector-hover{position:absolute;pointer-events:none;border:2px solid var(--dsw-alias-state-brand-primary);border-radius:4px;background:color-mix(in srgb,var(--dsw-alias-state-brand-primary) 12%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--dsw-alias-state-brand-primary) 30%,transparent);z-index:99998;transition:all .06s ease;display:none}.rl-inspector-badge{position:absolute;bottom:calc(100% + 4px);left:0;background:var(--dsw-alias-state-brand-primary);color:var(--dsw-alias-label-inverse);font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;white-space:nowrap;box-shadow:var(--dsw-alias-shadow-l2);pointer-events:none}.rl-inspector-pill{position:fixed;bottom:18px;right:18px;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l1);border-radius:20px;padding:6px 12px;box-shadow:var(--dsw-alias-shadow-l3);display:none;align-items:center;gap:8px;font-size:12px;z-index:99990;user-select:none}.rl-inspector-pill-active{border-color:var(--dsw-alias-state-brand-primary);box-shadow:0 0 12px color-mix(in srgb,var(--dsw-alias-state-brand-primary) 35%,transparent)}'
@@ -317,6 +317,7 @@ window.__ModuleLoader__.load({
317
317
  }
318
318
  } catch (err) {
319
319
  /* snapshot ещё не готов, либо scope.set синхронно бросил */
320
+ void err;
320
321
  }
321
322
  }
322
323
  ctx.effect(() => {
@@ -1 +1 @@
1
- {"@goodandready-private/dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.showMemoryIndicator":"Показывать индикатор памяти в ответах","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","memory.chip":"память","memory.chip.close":"Закрыть","memory.chip.copied":"Скопировано","memory.chip.copy":"Копировать","memory.chip.title":"Память, использованная в этом ответе","memory.chip.unavailable":"память недоступна","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain","update.action":"Обновить сейчас","update.autoOff":"Автоматическое обновление недоступно в этой среде; выполните обновление через стандартный интерфейс DSH.","update.available":"Доступна версия {version}","update.checking":"Проверка наличия обновлений…","update.failed":"Ошибка обновления: {error}","update.restart":"Обновлено до {version}. Перезапустите веб-профиль DSH, чтобы применить изменения.","update.title":"Версия плагина","update.unavailable":"Не удалось проверить реестр пакетов.","update.upToDate":"Установлена актуальная версия","update.working":"Обновление…"},"@goodandready/dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain"},"dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain"}}
1
+ {"@goodandready-private/dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.showMemoryIndicator":"Показывать индикатор памяти в ответах","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","memory.chip":"память","memory.chip.close":"Закрыть","memory.chip.copied":"Скопировано","memory.chip.copy":"Копировать","memory.chip.title":"Память, использованная в этом ответе","memory.chip.unavailable":"память недоступна","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain","update.action":"Обновить сейчас","update.autoOff":"Автоматическое обновление недоступно в этой среде; выполните обновление через стандартный интерфейс DSH.","update.available":"Доступна версия {version}","update.checking":"Проверка наличия обновлений…","update.failed":"Ошибка обновления: {error}","update.restart":"Обновлено до {version}. Перезапустите веб-профиль DSH, чтобы применить изменения.","update.title":"Версия плагина","update.unavailable":"Не удалось проверить реестр пакетов.","update.upToDate":"Установлена актуальная версия","update.working":"Обновление…"},"@goodandready/dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.showMemoryIndicator":"Показывать индикатор памяти в ответах","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","memory.chip":"память","memory.chip.close":"Закрыть","memory.chip.copied":"Скопировано","memory.chip.copy":"Копировать","memory.chip.title":"Память, использованная в этом ответе","memory.chip.unavailable":"память недоступна","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain"},"dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.showMemoryIndicator":"Показывать индикатор памяти в ответах","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","memory.chip":"память","memory.chip.close":"Закрыть","memory.chip.copied":"Скопировано","memory.chip.copy":"Копировать","memory.chip.title":"Память, использованная в этом ответе","memory.chip.unavailable":"память недоступна","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain"}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goodandready/dsh-russian-lang",
3
- "version": "0.3.11",
3
+ "version": "0.3.12",
4
4
  "description": "Russian localization for DeepSeek Harness (DSH v0.1.7-rc.1+) web UI: adds Русский as native language option. 100.0% coverage across 11,295 keys (127 namespaces). Features full DSH v0.1.7-rc.1 core support (terminal, archive, command palette, Auto review, trajectory, PTC/Creator presets) and complete GoodAndReady plugin catalog (subscriptions, tts, image-gen, voice, key-limits, notify, commandcode, plugin-console).",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",