@ragnoryok1/dsh-client-locale-ru 0.1.6 → 0.1.8

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 ADDED
@@ -0,0 +1,110 @@
1
+ # Changelog
2
+
3
+ Все значимые изменения пакета. Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/),
4
+ версии — по [SemVer](https://semver.org/lang/ru/).
5
+
6
+ Пакет следует за харнессом: целевая версия — `dsh 0.1.7-rc.2` и новее
7
+ (`>=0.1.0-rc.2 <0.2.0` для `@deepseek-ai/dsh-client-locale`).
8
+
9
+ ## [0.1.8] — 2026-09-27
10
+
11
+ ### Добавлено
12
+
13
+ - **Русская экранная типографика** (`src/client/typography.ts`): «ёлочки» вместо прямых
14
+ кавычек, длинное тире между словами, многоточие, неразрывный пробел между числом и
15
+ следующим словом или единицей измерения. Правила осторожные: код, поля ввода,
16
+ редактируемый текст и `[data-typography="off"]` не трогаются, повторный проход ничего не
17
+ меняет. Работает как `ctx.effect`, поэтому выгружается вместе с плагином.
18
+ - **Проверки в CI** (`.github/workflows/verify.yml`): сборка, 12 правил типографики
19
+ (`scripts/check-typography.mjs`) и аудит локали (`scripts/audit.mjs`) против
20
+ **закреплённого тега** харнеса. Новые npm-скрипты: `check:typography`, `audit`, `verify`.
21
+ - Раздел README **«Область покрытия»** с измерением: из 17 самых скачиваемых плагинов
22
+ экосистемы 11 не поставляют собственных строк, поэтому их русский интерфейс обеспечивают
23
+ словари харнеса; словари сторонних плагинов в область пакета не входят.
24
+
25
+ ### Исправлено
26
+
27
+ - **Число переводов в документации**: 2598 → **2304**. Прежняя цифра считала повторяющиеся
28
+ имена ключей в разных namespace дважды.
29
+
30
+ ## [0.1.7] — 2026-09-27
31
+
32
+ ### Исправлено
33
+
34
+ - **Мёртвый namespace `schedule.catalog`.** В 0.1.6 было ошибочно записано, что этот
35
+ namespace упразднён и заменён на `schedule.manager`. На деле в харнесе существуют оба:
36
+ `schedule.catalog` — каталог напоминаний в шапке сессии вместе с частотами и единицами
37
+ времени, `schedule.manager` — менеджер задач автоматизации. Из-за неверного вывода
38
+ около 30 строк перевода (`trigger.*`, `list.*`, `delete.*`, `frequency.*`, `cron.*`,
39
+ `unit.*`, `relative.*`, `mark.aria`, `hover.more`) регистрировались под именем, которое
40
+ никто не читает, и никогда не показывались в интерфейсе.
41
+ - **Числительные, неверные на числах 2–4.** Русский требует трёх форм для `n ≥ 2`, а
42
+ компоненты харнесса выбирают форму как `count === 1 ? 'ключ.one' : 'ключ.other'`.
43
+ Переписаны 17 пар ключей (`.one` — естественная форма для `n = 1`, `.other` —
44
+ конструкция, корректная при любом `n ≥ 2`) и 8 строк с `{count}` перед склоняемым
45
+ словом. Пример: «2 субагентов» → «Субагентов: 2», «каждые 2 часов» → «каждые 2 ч»,
46
+ «ещё 3 строк» → «ещё 3 стр.».
47
+ - Единицы измерения в частоте повтора: `unit.hour.other` «часов» → «ч» и аналогично
48
+ для минут, секунд и дней; `cron.time.everyMinutes` «минут» → «мин».
49
+
50
+ ### Добавлено
51
+
52
+ - **Namespace `schedule.manager` (188 ключей)** — менеджер задач автоматизации полностью
53
+ на русском: панель и каталог задач, поиск, фильтр состояний, сведения о задаче и её
54
+ вкладки, журнал запусков с правилами хранения, редактор расписания (дата, время, час,
55
+ минута, секунда, часовой пояс, интервал повтора), правила повтора (разово, каждые
56
+ N минут/часов/секунд, ежедневно, понедельник — пятница, еженедельно, свой cron),
57
+ cron-форма с выбором дат и минуты, удаление с подтверждением, уведомления, карточки.
58
+ 55 ключей приходят из общего frequency-словаря, поэтому их текст совпадает с каталогом.
59
+ - 7 ключей: `blocked.composer`, `defaultWorkspace.title`, `schedule.active`,
60
+ `settings.transcript.expanded`, `status.scheduled`, `status.overdue`, а также namespace
61
+ `shortcuts.layout` с подписью команды показа левой панели.
62
+
63
+ ### Инструменты
64
+
65
+ - Аудит **имён** namespace (`audit-namespaces.mjs`): имена извлекаются из всех способов
66
+ объявления (`const NS`/`SETTINGS_NS`/`namespace`, `locale.register`, `locale.bind`,
67
+ `PropsLocale<…>`) и сравниваются множествами. Прежняя проверка покрытия сверяла ключи
68
+ внутри namespace, но не сверяла имена, из-за чего целый namespace мог тихо не работать.
69
+
70
+ ### Состояние
71
+
72
+ 52 namespace, 2304 перевода, ~2700 строк. Проверки: 0 отсутствующих ключей против
73
+ `dsh 0.1.7-rc.2`, 0 мёртвых namespace, 45/45 пар ключей с формами числа.
74
+
75
+ ## [0.1.6] — 2026-09-25
76
+
77
+ Догнал `dsh 0.1.7-rc.2`: 252 ключа добавлено, 18 обновлено, 26 удалено.
78
+ Появились разделы `shortcuts` (редактор горячих клавиш), `schedule.manager`,
79
+ `settings.account`; исправлена единица счёта в инвентаре плагинов («187 плагины» →
80
+ «187 плагинов»); добавлены npm keywords, homepage, badges и снимки интерфейса; исправлен
81
+ peer-диапазон `@deepseek-ai/dsh-client-locale` на `>=0.1.0-rc.2 <0.2.0` (старый `^0.1.0`
82
+ не разрешался, так как пакет публикуется только под prerelease-версиями).
83
+
84
+ ## [0.1.5] — 2026-09-24
85
+
86
+ Догнал `dsh 0.1.7-rc.1`: 49 ключей добавлено, 13 обновлено, 16 удалено, namespace
87
+ `directory-browser` убран. Переведены подписи шагов работы инструментов, полноэкранный
88
+ просмотр изображений, режимы показа ходов, установка плагинов из GitHub, сообщения команды
89
+ `Cordis`. Уточнены формулировки там, где upstream заменил «teammate/agent» на «subagent»,
90
+ а «Beta» — на «Experimental».
91
+
92
+ ## [0.1.4] — 2026-09-23
93
+
94
+ Догнал `dsh 0.1.7-alpha.2`: 905 ключей добавлено, 29 изменены, 126 удалены. Появились
95
+ разделы `pluginManager` (встроенная панель плагинов), `settings.account`, семейство
96
+ `settings.agentLoop`/`settings.shell`/`settings.subagent`/`settings.webSearch`,
97
+ `sidebarBrowser`, `sidebarExcel`, `sidebarOffice`, `voice-input`.
98
+
99
+ ## [0.1.3] — 2026-09-20
100
+
101
+ Догнал `dsh 0.1.6-alpha.1`: 139 ключей добавлено, 7 новых разделов, 28 устаревших ключей
102
+ удалено.
103
+
104
+ ## [0.1.2] — 2026-09-19
105
+
106
+ Добавлены разделы `open-in-app`, `sidebarFiles`, `sidebarRight`, `sidebarCodePreview`.
107
+
108
+ ## [0.1.1] — 2026-09-18
109
+
110
+ Первый публичный выпуск: регистрация языка `ru` и словари по namespace.
package/README.md CHANGED
@@ -2,8 +2,12 @@
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/%40ragnoryok1%2Fdsh-client-locale-ru)](https://www.npmjs.com/package/@ragnoryok1/dsh-client-locale-ru)
4
4
  [![license](https://img.shields.io/npm/l/%40ragnoryok1%2Fdsh-client-locale-ru)](LICENSE)
5
+ [![verify](https://github.com/Ragnoryok1/dsh-client-locale-ru/actions/workflows/verify.yml/badge.svg)](https://github.com/Ragnoryok1/dsh-client-locale-ru/actions/workflows/verify.yml)
6
+ [![dsh](https://img.shields.io/badge/dsh-0.1.7--rc.2%2B-6366f1)](https://github.com/deepseek-ai/deepseek-harness)
7
+ [![namespaces](https://img.shields.io/badge/namespaces-52-6466f1)](https://github.com/Ragnoryok1/dsh-client-locale-ru)
8
+ [![strings](https://img.shields.io/badge/strings-2%2C304-6466f1)](https://github.com/Ragnoryok1/dsh-client-locale-ru)
5
9
 
6
- **In English.** Russian (`ru`) language pack for the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) web GUI (`dsh`). It registers `ru` as a selectable client language through the locale service (`ctx.locale.addLanguage`) plus one dictionary per namespace — 54 namespaces, 2,387 strings, built against dsh `0.1.7-rc.2`. Install with `dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru`, then pick **Русский** in Settings → General. Missing keys fall back to English, so a newer harness keeps working. MIT, community-maintained, not affiliated with DeepSeek. Details below are in Russian.
10
+ **In English.** Russian (`ru`) language pack for the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) web GUI (`dsh`). It registers `ru` as a selectable client language through the locale service (`ctx.locale.addLanguage`) plus one dictionary per namespace — 52 namespaces, 2,304 strings, built against dsh `0.1.7-rc.2`. Install with `dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru`, then pick **Русский** in Settings → General. Missing keys fall back to English, so a newer harness keeps working. The scope is the harness's own client interface only — third-party plugin dictionaries are deliberately out of scope, and 11 of the 17 most-downloaded ecosystem plugins ship no strings of their own, so they are already Russian through these namespaces. MIT, community-maintained, not affiliated with DeepSeek. Details below are in Russian.
7
11
 
8
12
  ---
9
13
 
@@ -42,9 +46,77 @@ dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru
42
46
  - **Браузерная половина** (`lib/client.js`) — регистрирует `ru` и словари через сервис `locale` (инжект из `ctx`). Рантайм-импортов фреймворка нет — только сервис.
43
47
  - **Рантайм-зависимостей нет** — `lib/client.js` не импортирует другие пакеты, поэтому не тянет тяжёлых зависимостей.
44
48
  - **Эффекты** — язык и словари регистрируются через `ctx.effect(...)`, поэтому выгружаются вместе с плагином (HMR-безопасно).
45
- - **Плюралы** — контракт локали не несёт правил плюрализации (нет ICU/`Intl.PluralRules`); русские формы задаются по ключу.
49
+ - **Плюралы** — контракт локали не несёт правил плюрализации (нет ICU/`Intl.PluralRules`), и
50
+ компоненты выбирают форму как `count === 1 ? 'ключ.one' : 'ключ.other'`. Русский язык
51
+ требует трёх форм для `n ≥ 2` (2 задачи / 5 задач), поэтому одна строка `.other` не может
52
+ быть верной всегда. Пакет решает это **без** изменения апстрима: `.one` (это ровно `n = 1`)
53
+ содержит естественную форму, а `.other` — конструкцию, корректную при любом `n ≥ 2`
54
+ («Субагентов: 3», «Фоновых задач: 5») или инвариантное сокращение («каждые 2 ч»,
55
+ «ещё 3 стр.»). Ни одна видимая строка не показывает неверную форму числа.
46
56
  - **Фолбэк** — отсутствующий русский ключ падает на `en` (настроенный `fallback`).
47
57
 
58
+ ## Типографика
59
+
60
+ Пакет приводит уже отрисованный русский текст к типографским правилам: «ёлочки» вместо
61
+ прямых кавычек, длинное тире вместо дефиса между словами, многоточие вместо трёх точек и
62
+ неразрывный пробел между числом и следующим словом или единицей измерения (чтобы «187
63
+ плагинов» не разрывалось на две строки). Правила намеренно осторожны: срабатывают только
64
+ на однозначных шаблонах, а код, поля ввода, редактируемый текст и элементы с
65
+ `data-typography="off"` не трогаются вообще. Повторный проход ничего не меняет.
66
+
67
+ Правила проверяются скриптом, а не на глаз: `npm run check:typography`.
68
+
69
+ ## Проверки
70
+
71
+ ```sh
72
+ npm run build # сборка трёх выходов
73
+ npm run check:typography # 12 правил типографики, включая «не трогать»
74
+ npm run audit -- <дерево харнеса> # аудит локали
75
+ npm run verify -- <дерево харнеса> # всё вместе
76
+ ```
77
+
78
+ Аудит выполняется в CI (`.github/workflows/verify.yml`) против **закреплённого тега**
79
+ харнеса, а не против случайного локального чекаута. Гейтом проверяются две вещи, и обе
80
+ уже ловили настоящие дефекты:
81
+
82
+ - **мёртвые namespace** — каждый namespace, который регистрирует пакет, обязан
83
+ существовать в харнессе. В 0.1.6 переводы каталога расписания были зарегистрированы
84
+ под именем `schedule.manager`, тогда как читает их `schedule.catalog`: проверка покрытия
85
+ по ключам при этом рапортовала «всё переведено»;
86
+ - **пары форм числа** — множества `.one`/`.other` должны совпадать, потому что клиент
87
+ выбирает форму как `count === 1 ? '.one' : '.other'`.
88
+
89
+ Число покрытия выводится, но не является гейтом: точный список «добавить / удалить»
90
+ требует сравнения ключей **по namespace** (это делает релизная оснастка), а сравнение имён
91
+ ключей глобально отметило бы разделы, которые пакет сознательно оставляет на английском.
92
+
93
+ ## Область покрытия: только официальный интерфейс
94
+
95
+ Пакет переводит **собственные namespace клиента харнеса** — 52 namespace, сверенные с
96
+ закреплённым тегом. Словари сторонних плагинов в область сознательно не входят, и вот
97
+ почему.
98
+
99
+ Мы проверили 17 самых скачиваемых плагинов экосистемы (npm, `keywords:dsh-plugin`,
100
+ скачивания за месяц) и посмотрели, какие из них вообще поставляют собственные строки:
101
+
102
+ | Что обнаружено | Плагинов |
103
+ |---|---|
104
+ | **Своих строк нет** — интерфейс берёт текст из namespace харнеса | **11 из 17** |
105
+ | Крупный собственный словарь (подтверждено вручную) | 2 — `dshmarket` (~1262 ключа), `@nanmicoder/dsh-agent-teams` (420) |
106
+ | Только типы `.d.ts`, строк нет | 1 — `dsh-plugin-model-proxy` |
107
+ | Требует отдельной проверки | 3 |
108
+
109
+ Практическое следствие: у **11 из 17** популярнейших плагинов русский интерфейс уже
110
+ работает — их текст лежит в общих namespace харнеса, которые пакет переводит полностью.
111
+ Отдельный словарь нужен только там, где плагин везёт свои строки, а такой словарь — это
112
+ обязательство следить за чужими релизами: у `dshmarket` уже версия 1.66.3, и её ключи
113
+ меняются независимо от харнеса.
114
+
115
+ Поэтому здесь один пакет и одно обязательство: **официальный интерфейс, переведённый и
116
+ проверенный**, без гонки за чужими словарями. Нужен конкретный плагин — заведите issue:
117
+ словарь для него возможен как отдельный слой, привязанный к версии, а не как молчаливое
118
+ обещание «покрыто всё».
119
+
48
120
  ## Разработка
49
121
 
50
122
  ```sh
@@ -57,7 +129,7 @@ npm pack # -> ragnoryok1-dsh-client-locale-ru-<version>.tgz
57
129
 
58
130
  ## Содержимое
59
131
 
60
- - `src/client/dicts.ts` — русские словари (54 namespace, 2387 ключей, ~2500 строк). Это и есть основная ценность.
132
+ - `src/client/dicts.ts` — русские словари (52 namespace, 2304 перевода, ~2700 строк). Это и есть основная ценность.
61
133
  - `src/client/index.ts` — точка входа клиентского плагина (регистрация `ru` + словарей).
62
134
  - `src/index.ts` — пустая host-половина (`apply()`).
63
135
  - `cordis.patch.yml` — профиль-патч (`- insert:` клиентской строки `locale-ru`).
@@ -67,6 +139,38 @@ npm pack # -> ragnoryok1-dsh-client-locale-ru-<version>.tgz
67
139
  Актуальный набор — по тегам харнеса: ключи сняты с профильного коммита, а добавленные
68
140
  позже падают на `en` при поиске, поэтому пакет не ломает интерфейс на новых версиях.
69
141
 
142
+ ### 0.1.7 — исправлен мёртвый namespace, переведён менеджер задач, переписаны числительные
143
+
144
+ Главное в релизе — **исправление ошибки из 0.1.6**. Тогда было записано, что namespace
145
+ `schedule.catalog` упразднён, а его место занял `schedule.manager`. На деле в харнесе
146
+ **оба** namespace живут и по отдельности: `schedule.catalog` — это каталог напоминаний в
147
+ шапке сессии с частотами и единицами, `schedule.manager` — новый менеджер задач
148
+ автоматизации. Из-за неверного вывода ~30 строк переводов (напоминания, частота, единицы
149
+ времени) были зарегистрированы под именем, которое никто не читает, и **никогда не
150
+ показывались** в интерфейсе. Теперь каталог зарегистрирован как `schedule.catalog`.
151
+
152
+ - **исправлено:** переводы каталога расписания снова видны — `trigger.*`, `list.*`,
153
+ `delete.*`, `frequency.*`, `cron.*`, `unit.*`, `relative.*`, `mark.aria`, `hover.more`;
154
+ - **добавлен `schedule.manager`** (188 ключей) — менеджер задач автоматизации целиком на
155
+ русском: панель и каталог задач, поиск, фильтр состояний, сведения о задаче и её вкладки,
156
+ **журнал запусков** с правилами хранения, редактор расписания (дата, время, час, минута,
157
+ секунда, часовой пояс, интервал повтора), правила повтора (разово, каждые N минут/часов/
158
+ секунд, ежедневно, пн–пт, еженедельно, свой cron), cron-форма с выбором дат и минуты,
159
+ удаление с подтверждением, уведомления и карточки;
160
+ - **числительные переписаны** (17 пар ключей): формы, которые ломались на числах 2–4,
161
+ заменены на корректные при любом `n ≥ 2` — например «2 субагентов» → «Субагентов: 2»,
162
+ «каждые 2 часов» → «каждые 2 ч». Ещё 8 строк с `{count}` перед склоняемым словом
163
+ переведены на сокращения: «ещё 3 строк» → «ещё 3 стр.»;
164
+ - **добавлено 7 ключей**, которые отсутствовали: `blocked.composer`,
165
+ `defaultWorkspace.title`, `schedule.active`, `settings.transcript.expanded`,
166
+ `status.scheduled`, `status.overdue` и namespace `shortcuts.layout` (подпись команды
167
+ показа левой панели);
168
+ - **новая проверка в проекте:** аудит имён namespace. Прежняя проверка покрытия
169
+ сверяла ключи внутри namespace, но не сверяла сами имена, поэтому целый namespace
170
+ мог быть зарегистрирован под несуществующим именем и тихо не работать. Теперь имена
171
+ извлекаются из всех способов их объявления (`const NS`/`SETTINGS_NS`/`namespace`,
172
+ `locale.register`, `locale.bind`, `PropsLocale<…>`) и сравниваются множествами.
173
+
70
174
  В 0.1.2 добавлены разделы, которых не было в 0.1.1: `open-in-app` («Открыть в
71
175
  приложении»), `sidebarFiles`, `sidebarRight` (правый сайдбар с файлами) и
72
176
  `sidebarCodePreview` (предпросмотр кода). Также обновлены ключи, изменившиеся в
@@ -91,9 +195,10 @@ npm pack # -> ragnoryok1-dsh-client-locale-ru-<version>.tgz
91
195
  - **`shortcuts`** (новый namespace, 56 ключей) — редактор горячих клавиш: запись
92
196
  сочетания, конфликты, зарезервированные комбинации, подсказки для macOS и
93
197
  Windows, восстановление значений по умолчанию;
94
- - **`schedule.manager`** (70 ключей) — напоминания переписаны: список, удаление,
95
- повтор, история запусков, выражения Cron; прежний namespace `schedule.catalog`
96
- удалён;
198
+ - **`schedule.manager`** (70 ключей на тот момент) — менеджер задач автоматизации: список,
199
+ удаление, повтор, история запусков, выражения Cron. **Ошибочно было записано, что
200
+ namespace `schedule.catalog` при этом упразднён; в 0.1.7 это исправлено — оба
201
+ namespace существуют параллельно**;
97
202
  - **`settings.account`** (50 ключей) — первый запуск приложения: приветствие,
98
203
  выбор назначения и глубины показа хода работы, пополнение баланса, выход из
99
204
  учётной записи во время выполнения задач;
@@ -150,3 +255,7 @@ keywords и исправлен peer-диапазон `@deepseek-ai/dsh-client-lo
150
255
  ## Лицензия
151
256
 
152
257
  MIT
258
+
259
+ ## История изменений
260
+
261
+ [CHANGELOG.md](CHANGELOG.md) — что было в каждом выпуске.