Skip to content

chore: мелочи с код-ревью сентября–октября (XIC-101) - #95

Merged
Oksion merged 7 commits into
mainfrom
chore/xic-101-review-nits
Oct 16, 2026
Merged

Oksion merged 7 commits into
mainfrom
chore/xic-101-review-nits

Conversation

@Oksion

@Oksion Oksion commented Oct 16, 2026

Copy link
Copy Markdown
Owner

Сводная задача по замечаниям код-ревью коммитов 01.09–12.10.2026. Ни одно не ломает жизнь само по себе; по коммиту на пункт.

Что изменено

  1. PowerModeSync (7878ee6) — записанное нами хранится в AppConfig.PowerOverlayWritten (ac/battery), а не в памяти: выключение опции после перезапуска откатывает ровно своё. Проверка «есть ли что откатывать» на смене питания — под замком.
  2. HttpApi (720bea3) — Bounded(...): по дедлайну бросаем ожидание, а висящую операцию http.sys наблюдаем и глотаем — её падение больше не пишется в log.txt «необработанным». И для чтения тела, и для записи ответа (второе место в задаче не было). Тест проверен на падение без исправления.
  3. OemService (b1b041b) — «Нет доступа» только по ERROR_ACCESS_DENIED; прочие сбои — новое состояние Unknown: «Не прочиталось, подробности в log.txt», без кнопок. Строки RU/EN/ZH.
  4. ChargeGuard (fdcfe25) — перед сном порог не читаем, а сразу пишем одной командой без сброса (окна без защиты нет). Цена — запись в EC на каждом уходе в сон.
  5. MonitorForm (d8a21c5) — LatestValue.Pending; Dispose ждёт чтений в полёте (до 500 мс) перед освобождением источников.
  6. JsonConfigStore (f56b73c) — сохранение под замком: конфиг пишут и UI-поток, и пул, одновременные записи давали IOException и потерю правки (замечание к XIC-100).
  7. CHANGELOG → «Исправлено».

Проверка

  • dotnet build — 0 ошибок / 0 предупреждений; dotnet test — 900 зелёных (+10).
  • Вручную не смотрели: строку «Не прочиталось» на «Драйверах» (нужен настоящий сбой SCM) и журнал после закрытия «Монитора» — оба пункта покрыты тестами.

🤖 Generated with Claude Code

Oksion and others added 7 commits October 16, 2026 23:33
…1 п.1)

Записанное нами хранится в AppConfig.PowerOverlayWritten (ac/battery), а не в
памяти: выключение опции после перезапуска откатывает ровно своё. Проверка
«есть ли что откатывать» на смене питания — под замком.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(XIC-101 п.2)

HttpApi.Bounded: по дедлайну бросаем ожидание, а саму висящую операцию
http.sys наблюдаем и глотаем — её падение после закрытия сокета больше не
пишется в log.txt «необработанным». И для чтения тела, и для записи ответа.
Тест проверен на падение без исправления.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…DENIED (XIC-101 п.3)

Прочие сбои чтения (SCM/RPC недоступен) — новое состояние Unknown: на вкладке
«Драйверы» «Не прочиталось, подробности в log.txt», без кнопок и без совета про
права. Строки RU/EN/ZH. StateOnFailure — чистая функция под тестами.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
В ветке hurry (сон, завершение сеанса) GET перед записью убран: это был лишний
вызов WMI в окне, где времени нет. Запись там без сброса в «выкл», окна без
защиты нет. Цена — одна запись в EC на каждом уходе в сон.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
LatestValue.Pending — чтение в полёте; MonitorForm.Dispose ждёт его (до 500 мс)
перед освобождением источников температуры и ватт — больше нет ложного
ObjectDisposedException в журнале при закрытии с открытым виджетом.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Конфиг пишут и UI-поток, и пул (PowerModeSync, самолечение порога заряда,
RestoreAfterBoot). Две одновременные записи давали IOException, одна правка
терялась. Под замком каждая запись сериализует весь текущий конфиг.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Oksion
Oksion merged commit 697ab5e into main Oct 16, 2026
5 checks passed
@Oksion
Oksion deleted the chore/xic-101-review-nits branch October 16, 2026 18:59
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