Skip to content

fix(display): частоты «от сети / от батареи» — из режимов панели, 165 Гц доступна (XIC-107) - #105

Merged
Oksion merged 1 commit into
mainfrom
feat/xic-107-165hz
Oct 24, 2026
Merged

Oksion merged 1 commit into
mainfrom
feat/xic-107-165hz

Conversation

@Oksion

@Oksion Oksion commented Oct 24, 2026

Copy link
Copy Markdown
Owner

Закрывает XIC-107: https://linear.app/oksion/issue/XIC-107

Проблема

Пользователь Redmi Book Pro 2025 (TM2409) прислал скриншот: Windows предлагает для панели ноутбука 165 Гц, а в XiControl максимум — 144. Сам механизм частоты (RefreshRate.Supported, подбор ближайшей, цикл по клавише, список «какие частоты участвуют» из XIC-69) берёт режимы у панели и зашитых значений не имеет. Зашиты были только варианты комбо «От сети» / «От батареи» во вкладке «Экран»: [144, 120, 90, 60, 48] в DisplayTab.HzCombo. На TM2424 (60/120) те же комбо предлагали 144/90/48, которых у панели нет, и применение молча подменяло их ближайшей.

Что сделано

  • RefreshRate.Choices (новая чистая функция) — режимы панели по убыванию; значение из конфига, которого у панели нет, остаётся первым пунктом (вписанное руками или приехавшее с другой машины не подменяем); панель режимов не отдала (RDP, неактивна) — прежние пресеты FallbackRates, чтобы настройка не пропадала.
  • DisplayTab — Supported() читается один раз на постройку вкладки и кормит и комбо, и список для цикла.
  • AppController.Startup — строка с режимами панели в журнал (в том же фоновом блоке, что самопочинка автозапуска): по log.txt тестера видно, что отдаёт драйвер.
  • Тесты — Choices: частоты панели по убыванию (с дублями и 0), значение конфига вне панели, пустой набор режимов.
  • Доки — CHANGELOG.md, README.md/README.ru.md (раздел про авто-частоту), строка про RefreshRate в CLAUDE.md.

Риски

Без TM2409 не закрыть: Windows дробные 164,9 Гц показывает как «165», а DEVMODE.dmDisplayFrequency может отдать 164 — тогда в списке будет «164 Гц». И если драйвер отдаёт 165 только при другой глубине цвета, фильтр SupportedRates его отбросит. Новая строка в журнале ответит на оба вопроса — после релиза стоит попросить у пользователя log.txt.

Проверка

  • dotnet build 0 ошибок / 0 предупреждений, dotnet test 964/964.
  • TM2424: EnumDisplaySettings (тот же вызов, что в приложении) отдаёт 60/120 при 3120×2080 — ровно это теперь в комбо вместо 144/120/90/60/48.
  • Вкладка «Экран» на новой сборке глазами не смотрелась.

🤖 Generated with Claude Code

… Гц доступна (XIC-107)

Комбо во вкладке «Экран» строились из зашитых 144/120/90/60/48: на TM2409 с
панелью 165 Гц максимум упирался в 144, а на TM2424 (60/120) список
предлагал частоты, которых у панели нет. Сам механизм частоты зашитых наборов
не имел — правка только в источнике вариантов.

RefreshRate.Choices: режимы панели по убыванию; значение из конфига вне
панели остаётся первым пунктом; панель режимов не отдала (RDP, неактивна) —
прежние пресеты, чтобы настройка не пропадала. Режимы панели — строкой в
журнал на старте: по log.txt тестера видно, отдаёт драйвер 165 или 164
(дробные 164,9 Гц) — без TM2409 этот риск не закрыть.

Проверено на TM2424: EnumDisplaySettings отдаёт 60/120 при 3120x2080 — ровно
это теперь и в комбо. Сборка 0/0, тесты 964/964.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Oksion
Oksion merged commit 618b1be into main Oct 24, 2026
5 checks passed
@Oksion
Oksion deleted the feat/xic-107-165hz branch October 24, 2026 18:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant