fix(release): extract only current version section for release notes #24
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
slaid098/voice_assistant#24
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Контекст
Скрипт
scripts/create_release.py(строки 34-35, 48) делаетnote = f.read()— читает весьCHANGELOG.md(21 строка, 962 символа) и пихает вbodyрелиза на Forgejo. Включает шапку "# Changelog", boilerplate про Keep a Changelog, self-referential ссылку[0.1.0]: https://git.slaid098.dev/.../releases/tag/v0.1.0внизу (ссылка на страницу, на которой пользователь уже находится).Forgejo уже показывает тег и дату релиза в UI — дублирование. Та же проблема что в video_uniq (issue #9), тот же фикс.
Задача
note = f.read()вscripts/create_release.pyна экстрактор секции текущей версии.Контракты
Экстрактор (встроить в create_release.py)
Вход:
CHANGELOG.md+tag(изGITHUB_REF_NAMEилиGITHUB_REF, форматvX.Y.Z)Логика:
CHANGELOG.mdv0.1.0→0.1.0r"^## \[0\.1\.0\]"(экранированная версия)^## \[(или конца файла)## [0.1.0] — 2026-08-11— тег+дата, Forgejo показывает)# Changelog,Все заметные изменения...,Формат: [Keep a Changelog...)r"^\[.*\]:\s*https://.*$"(self-referential)### Добавлено/### Исправлено+ bullet-pointsFallback: если секция не найдена — вернуть весь CHANGELOG (как сейчас) + залогировать предупреждение. Не падать — релиз должен выйти.
Пример:
Что НЕ меняется
nameполя релиза =tag(Forgejo дефолтит в тег — нормально)Инварианты
Граничные случаи
CHANGELOG.mdне существует →body = ""(релиз без нот, не падать)—вместо дефиса-в заголовке (## [0.1.0] — 2026-08-11) → regex должен покрывать оба:r"^## \[VERSION\]\s*[-—]\s*\d{4}-\d{2}-\d{2}"## [0.1.0] — дата, без bullet-points) → body = ""Влияние на связанные компоненты
scripts/create_release.py— единственный файл изменений.github/workflows/release.yml— не трогать (вызывает скрипт как есть)CHANGELOG.md— не трогать (источник, не приёмник)tests/test_create_release.py(илиtest_release_extractor) — проверка экстрактора на тестовых CHANGELOGВне scope
create-changelog(opencode-config) — issue #59create_release.py— issue #9 (тот же фикс, другой репо)Критерии приемки
scripts/create_release.py—f.read()заменён на экстракторruff check+mypyпроходят