Как добавить настройку

Настройки бывают двух видов. Почти каждая новая это предпочтение: одно поле в проверяемом объекте JSON, который хранится в settings.preferences_json. Миграция для него не нужна.

Предпочтение

  1. Схема. Добавьте поле в его раздел в preferencesSchema, src/shared/config/preferences.ts, со значением по умолчанию: z.boolean().default(false), перечисление или int(RANGE) с константой { min, max, default } рядом с остальными. Сохранённая строка без поля читает значение по умолчанию, поэтому старые профили продолжают работать.
  2. Элемент управления. Добавьте его в компонент раздела в src/renderer/components/settings/sections/, например Switch с patchSection(setPrefs, 'assistant', { yourField: next }). Берите элементы дизайн-системы (Switch, NumberField, SelectField, RadioCards).
  3. Тексты. Подпись и при нужде подсказка в preferences.* в src/shared/i18n/catalog.ts на обоих языках. Пишите, что меняется для человека, а не как устроен код.
  4. Где используется. Читайте её там, где она нужна: в main через readPreferences(getDatabase()), в renderer через src/renderer/state/preferencesState.ts.
  5. Когда применяется. Большинство настроек применяется по «Сохранить»; если нужно сразу, скажите это в подсказке.
  6. Тесты. tests/unit/preferences.test.ts (значение по умолчанию, диапазон, сохранённая строка без поля) и tests/unit/preferencesRenderer.test.ts, если её читает окно. tests/e2e/preferences.test.ts проверяет окно.
  7. Вики. Строка настройки на странице Все настройки и на странице её раздела в docs/wiki/interface/Settings-*.md, на обоих языках. Если она отправляет что-то с компьютера, ещё и Приватность.

Столбец в строке настроек

Только для значения, которое нужно прочитать раньше предпочтений (например, язык или адрес с особой проверкой). Нужны миграция (База данных и миграции), поле в nonSecretSettingsSchema (src/shared/config/schema.ts) и его значение по умолчанию в nonSecretDefaults.

Никогда не секрет

Ключ, пароль или токен никогда не бывают настройкой. Схема настроек отклоняет значения, похожие на них («В настройки нельзя записать ключ или пароль»). Секреты идут через хранилища ключей и токенов в src/main/settings/.

См. также

Страница перенесена из wiki репозитория приложения (docs/wiki/dev/Adding-A-Setting.ru.md, ревизия b8e3f71). То же руководство встроено в приложение: «Справка ▸ Руководство».

Чтобы обновить её, выполните npm run import, а затем npm run build в папке сайта.