winget: авто-возврат MinimumOSVersion, который Komac теряет при каждом релизе - #12
Merged
Merged
Conversation
MinimumOSVersion уезжал из installer-манифеста и в 0.7.0, и в 0.8.0 — Komac пересобирает манифест из portable-exe и молча теряет поля, которые из бинаря не выводятся; валидатор winget-pkgs без них режет PR. До сих пор поле возвращали руками на каждом релизе. Новый шаг в winget.yml после winget-releaser гоняет .github/scripts/winget-restore-fields.ps1: - находит ветку PR в форке по детерминированному префиксу Oksion.XiControl-<версия>- (не через Search API — тот лагает первые минуты) - дописывает MinimumOSVersion перед InstallerType и коммитит в ветку форка, открытый PR подхватывает коммит сам - идемпотентен: поле на месте → выходит без изменений; можно гонять локально (-Tag vX.Y.Z) — так и пропатчен PR #409366 для 0.8.0 (скрипт проверен боем) Контрольная точка в скилле release остаётся: сверка с эталоном reference/winget/ ловит поля, которых скрипт ещё не знает. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Проблема
Komac (внутри winget-releaser) пересобирает installer-манифест из portable-exe заново и молча теряет поля, которые из бинаря не выводятся.
MinimumOSVersion: 10.0.0.0уезжал так дважды — в 0.7.0 и 0.8.0, — и без него валидатор winget-pkgs режет PR («Inconsistencies detected … Missing property MinimumOSVersion»). До сих пор поле возвращали в публичный PR руками на каждом релизе.Решение
Шаг
Restore hand-written manifest fieldsвwinget.yml(после winget-releaser) + скрипт.github/scripts/winget-restore-fields.ps1:Oksion.XiControl-<версия>-— не через Search API, который лагает первые минуты после создания PR;MinimumOSVersion: 10.0.0.0на место по порядку эталона (послеPlatform, передInstallerType) и коммитит в ветку форка — открытый PR подхватывает коммит сам, валидация перезапускается;./winget-restore-fields.ps1 -Tag vX.Y.Z.Токен — тот же
WINGET_TOKEN, что у winget-releaser (права на форк у него уже есть). В воркфлоу добавленactions/checkout— раньше он был не нужен, теперь нужен ради скрипта.Проверка
Скрипт проверен боем на живом релизе: именно им пропатчен winget-pkgs#409366 (0.8.0) — нашёл ветку
Oksion.XiControl-0.8.0-761E…, вернул поле вторым коммитом, PR обновился. Полный прогон шага в CI случится на следующем релизе; упасть молча он не может — при ненайденной ветке или изменившемся формате манифеста шаг красный.Контрольная точка в скилле release остаётся: сверка с эталоном
reference/winget/ловит поля, которых скрипт ещё не знает. CLAUDE.md (раздел «Релизы и CI») дополнен.🤖 Generated with Claude Code