Заголовок записи стал `<имя тега> — <дата> — <коммит>`. Зачем коммит, если есть имя тега: тег можно передвинуть или переименовать, а ревизия, на которой релиз собран, должна оставаться в записи однозначно — по ней билд воспроизводится точно. Заодно это тот же хеш, что зашит в EXE как BUILD_ID и виден на экране About, так что принесённый пользователем скриншот сразу сопоставляется с записью changelog. Берётся именно `*objectname` (дереференс аннотированного тега), а не `objectname`: последний вернул бы хеш самого объекта тега, а не коммита. Команда целиком выписана и в шапке CHANGELOG, и в правиле в CLAUDE.md, чтобы не восстанавливать её каждый раз. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018T2k4VZrSyERwk6H97Sfi1
4.3 KiB
SprPoP — CHANGELOG
Заметные изменения по релизам. Версия, дата и коммит каждой записи берутся из git — из аннотированного тега, а не проставляются руками, поэтому расходиться с историей они не могут:
git for-each-ref \
--format='%(refname:short) | %(creatordate:short) | %(*objectname:short)' \
refs/tags/<тег>
Заголовок записи = <имя тега> — <дата тега> — <коммит тега>. Коммит —
дереференс аннотированного тега (*objectname), то есть та ревизия, на
которой релиз собран: по ней воспроизводится ровно этот билд.
Здесь только то, что видно ИГРОКУ или меняет способ сборки/запуска.
Разбор причин живёт в сообщениях коммитов, открытые баги — в
docs/BUGS_OPEN.md, закрытые — в архиве roomtest.
Файл начат с релиза v0.9.6; более ранняя история — в git log и в
досках задач.
v0.9.6-hang-sound-button — 2026-09-02 — aaa480d
Три бага, найденные в живой игре и проверенные в MAME после исправления.
-
Зацеп срывался на следующем кадре (регресс, тянулся с
4e12aa5). Кид цеплялся за кромку, поза зацепа рисовалась — и он тут же падал. Ловилось на длинном прыжке уровня 3 (комната 7) и в attract-демо, где Кид вместо подъёма на кромку (0,2) улетал на пики. Причина: страж «падения сквозь стену» принимал кладку под кромкой за стену, в которую персонаж влетел, и отменял только что состоявшийся захват. Теперь удачный зацеп отменяет этого стража.38fb3c0 -
Непрерывный взмах клинка у безоружного Кида. На подъёме шёл нескончаемый свист меча, которого у Кида нет. Причина: в порт не доехали два условия оригинала, включая гард, который автор SDLPoP подписал прямым текстом как «фикс зацикленного звука взмаха».
cb995bf -
Кнопка под Кидом заливалась кладкой на дворцовых уровнях. Кид подтягивается на открывающую кнопку, и кромка, которая его прячет, нарисована кирпичом (уровень 4, комната 18). Причина: подстановка спрайта «кнопка без пола слева» действует только в подземелье, и это условие было потеряно в перерисовке поверх персонажа — при том что в статической отрисовке комнаты оно есть.
8548aa9
Сопутствующее, для разработки:
- В доске исправлено толкование звука 11: это индикатор ПРОМАХА, а не
«любого укола». Прежняя запись описывала наш собственный код вместо
оригинала, и из-за неё в CLIMB-VS-GUARD зря отодвинули версию про порог
дистанции.
400f5cb - Новый набор host-тестов
t_hang: мерит не «вис наступил», а «вис ДЕРЖИТСЯ» — прежние наборы регресс зацепа не видели именно поэтому. Входит в38fb3c0. - В
CLAUDE.mdзаписан путь запуска на HDD-образе: игра лежит вD:\GAMES\SPRPOP, а не в корне диска.aaa480d