Skip to content

Releases: GooDAnDReaDY/dsh-russian-lang

v0.1.28

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 02 Sep 10:59

@goodandready/dsh-russian-lang@0.1.28 — adapt to DSH v0.1.2-alpha.2 + skills plugins in Russian

Why. After the DSH core upgrade to v0.1.2-alpha.2 the plugin's settings card broke (checkboxes did not stick), and two installed plugins (dsh-skill-hub, @michengai/dsh-skills-manager) kept showing Chinese UI with an active Russian locale.

Fixed

  • Settings card on v0.1.2-alpha.2 (#99, #97, PR #100/#101): scope.set is now async (Promise<void>) — both the promise-rejection and sync-throw channels are handled; the stale runtime.host monkey-patch that clashed with the new settings-mirror is removed; the card reads slot props per the new inject contract (props.scope/props.runtime/props.toggleRu spread by the renderer, with a fallback to the old props.inject() for older cores).
  • Russian dictionaries for dsh-skill-hub (~170 keys) and @michengai/dsh-skills-manager (~170 keys) (#102, PR #103), translated from their own English dictionaries with placeholders preserved. Bundle: 51 namespaces, 3700 keys.
  • DOM-translation pass (PR #113): the dsh-skill-hub panel picks its dictionary by documentElement.lang and only understands en/zh, so the registered ru dictionary can never reach it. When Russian is active, CJK text nodes and title/placeholder/aria-label attributes are rewritten using a ZH_RU map (348 pairs) built from vendored zh references (zh-refs/*.json) paired with our translations; placeholder pairs become regexes, so rendered values map to the Russian template (共 56 个技能 → «Всего навыков: 56»). A MutationObserver keeps React re-renders translated.

Checks. node --check OK; node --test 31/31; user-verified in production (settings checkboxes stick; both skills UIs render in Russian).

Compatibility. Targets DSH v0.1.2-alpha.2; older cores keep working via contract fallbacks. Known limitation: the v0.3.4 version badge in the skill-hub panel title comes from plugin metadata and stays as-is.

Refs: Gitea issues #99, #102, #97 (goodandready/dsh-russian-lang).

0.1.27 — adapt to DSH v0.1.2-alpha.2

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 01 Sep 14:17

Adapt to DSH v0.1.2-alpha.2.

  • scope.set now returns Promise<void>; old try/catch silently swallowed both sync throw and promise rejection. Now .catch(...) is wired in for the promise channel and outer try/catch keeps the sync channel.
  • Removed the runtime.host.getSnapshot monkey-patch; the new settings mirror clashed with it, killing the namespace write path. DSH now reads preference from the scope snapshot directly.
  • agentPrompt moved under scope.overrides. The top-level field was rejected by the host schema; overrides is always accepted.

Tests: 31/31 pass. Bundle validates through node --check and acorn.

Refs: #97, #98

v0.1.26-hotfix-lookup-chain-crash

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 31 Aug 10:47

v0.1.26 — hotfix: lookup chain crash on DSH 0.1.2

Зачем выпускаем

Issue #93: на DSH 0.1.2-alpha.2 список бесед в боковой панели исчезал полностью. Причина — плагин подменял runtime.translate и звал this.lookup(ns, key) с двумя доводами, а в 0.1.2 lookup(ns, key, chain) требует третий довод (цепочку языков) и перебирает её. chain === undefined бросал chain is not iterable, что роняло timeLabelSessionNodeItem → весь слот sidebar.workspaces. Наружу это выглядело как «интерфейс сломался» без единого упоминания русского языка.

Что добавлено/исправлено

  • Wrapper теперь спрашивает арность метода (lookup.length >= 3) и передаёт цепочку только там, где ядро её ждёт.
  • Цепочку берёт из runtime.fallbackChain(active) (приватный, но доступен в собранном бандле), иначе минимальная [active].
  • Старые двухдоводные ядра продолжают работать (лишний довод безвреден).
  • Новый тест test/test_lookup_chain.mjs — 4 теста на 2-arg и 3-arg lookup.

Почему

Плагин лезет во внутренности ядра — подменяет метод и зовёт приватный lookup. Это работает ровно до следующего обновления ядра, и обновление уже произошло. Правка делает вызов устойчивым к арности метода, не ломая старые ядра.

Влияние на пользователя

Список бесед снова отрисовывается на DSH 0.1.2. Русские формы числительных («1 беседа», «2 беседы», «5 бесед») работают как раньше.

Совместимость, миграции и ограничения

  • Совместим с ядрами, где lookup принимает 2 или 3 довода.
  • fallbackChain приватный — если ядро его переименует, откат на [active] сохраняет работоспособность.
  • Плагин по-прежнему подменяет внутренний метод ядра; это хрупко до следующего обновления ядра. Отдельная задача — найти объявленный способ дать языку свои формы числительных.

Связанные issues/PR

  • Issue #93
  • PR #94 (фикс), PR #95 (релиз)

Версия/commit

Проверки

  • node --check lib/client.js — OK.
  • node --test test/*.mjs — 31/31 pass.
  • Test server (192.168.1.123): установлен 0.1.26 из .tgz, плагин в boot-entries, журнал без chain is not iterable / slot entry crashed, dsh-test-plugin statusDSH_TEST_OK. После проверки плагин и артефакт удалены.

Deploy/rollback notes

  • Production: dsh plugin --profile web add @goodandready/dsh-russian-lang@0.1.26, затем systemctl restart dsh-web.
  • Rollback: dsh plugin --profile web add @goodandready/dsh-russian-lang@0.1.25.

v0.1.25 — alpha.2 fix + kanban-ru (hotfix)

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 31 Aug 07:21

Зачем выпускаем

Hotfix: production DSH на alpha.2 падает при загрузке плагина, потому что npm 0.1.24 импортирует удалённый settingsNamespace из @deepseek-ai/dsh-settings. Прод на сломанной 0.1.24, плагин выключен из bundles. Нужна рабочая версия для alpha.2.

Что добавлено/изменено/исправлено

  • Фикс alpha.2 (PR #90): убран runtime-импорт settingsNamespace из lib/index.js; namespace russian-lang регистрируется строкой через settings.register('russian-lang', schema). peerDependencies['@deepseek-ai/dsh-settings']^0.1.2-alpha.2.
  • Reconcile (PR #91): объединены две разошедшиеся линии main — фикс alpha.2 (origin/main) + словарь dsh-kanban и документация (локальный main). Добавлен ru-plugins/10-kanban.json, обновлены lib/client.js, README.md, CHANGELOG.md, self-ru.json.
  • Bump (PR #92): версия 0.1.24 → 0.1.25 (npm 0.1.24 занят сломанной версией, переопубликовать нельзя).

Почему

settingsNamespace удалён из экспортов @deepseek-ai/dsh-settings в canonical alpha.2. Плагин импортировал его и передавал в settings.register(), что вызывало SyntaxError и restart-loop. Контракт alpha.2 принимает строку напрямую.

Влияние на пользователя

Плагин снова загружается на DSH alpha.2; русская локализация и переключатель языка работают. Словарь dsh-kanban добавлен.

Совместимость, миграции и ограничения

  • Требуется DSH @deepseek-ai/dsh-settings ^0.1.2-alpha.2.
  • Никаких миграций данных нет.

Связанные issues/PR

  • Issue #89 (alpha.2 settingsNamespace)
  • PR #90 (фикс alpha.2)
  • PR #91 (reconcile kanban-ru)
  • PR #92 (bump 0.1.25)

Точная версия/commit

  • Version: 0.1.25
  • Commit: deb26f1 (origin/main)

Проверки

  • node --check lib/index.js, lib/client.js — OK
  • node --test все 7 файлов — PASS (включая test_index_alpha2: 2 pass)
  • python3 build.py — OK (50 namespace, 3530 ключей)
  • Test server 0.1.25 (192.168.1.123): dsh-test-plugin statusactive / DSH_TEST_OK, settingsNamespace = 0, журнал чист.

Deploy/rollback notes

Production обновляется только опубликованной npm-версией 0.1.25. Rollback: вернуться на предыдущую рабочую версию (0.1.22) через dsh plugin add @goodandready/dsh-russian-lang@0.1.22.

v0.1.22

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 30 Aug 12:14

Corrected build: real LocaleRuntime API (addLanguage/setLocale) for RU switch (PR #88). 0.1.21 was published from stale local main and missed the fix.

v0.1.21

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 30 Aug 12:13

Real LocaleRuntime API (addLanguage/setLocale) for RU switch (PR #88).

v0.1.20

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 30 Aug 11:57

Settings card now registers via slots.inject (PR #87) - real fix for 'slot is not declared' on DSH 0.1.2-alpha.

v0.1.19

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 29 Aug 22:32

self-ru: dsh-key-limits (private) excluded, slot guard. Prod smoke OK (russian-lang loads).

v0.1.18

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 29 Aug 21:55

0.1.18 — hotfix

  • fix(client): drop the @deepseek-ai/dsh-client-ui-primitives require and use a pure SVG chevron. That module is not registered in the module table of the current DSH core, so requiring it aborted our plugin's loader entry and broke production. Our bundle now requires only react. (#81)

v0.1.17

Choose a tag to compare

@GooDAnDReaDY GooDAnDReaDY released this 29 Aug 20:29

0.1.17

Ships all pending features since 0.1.16:

  • fix(client): settings-card checkboxes update instantly (optimistic local state instead of async host revert); Russian switch reacts to locale changes; descriptive captions for typography and ё settings. (#62)
  • fix(client): settings card uses the core chevron icon (IconChevronDownOutline14 with SVG fallback). (#65)
  • feat(client): RU/EN layout indicator near the chat input; click converts current text. (#66)
  • feat(client): layout fixer learns from accepted corrections (per-session dictionary). (#67)
  • feat(host): optional Russian agent system prompt (russian-lang.agentPrompt), toggled from the settings card. (#68)
  • feat(tools): auto-fill new plugin keys into the MT queue (tools/mt_autofill.py, daily cron). (#69)
  • fix(mt): corrected 39 placeholder mismatches in shipped translations.
  • feat(dict): full MT coverage for ALL installed plugins (50 ns / 3346 keys).
  • ci: npm .tgz artifact for the isolated test server (upload-artifact@v3, mkdir fix).