Часть [Вне очереди](README.md). Соседей по папке не читать, если задача не про них. # Что нового после входа ### Зачем Альфа обновляется часто. Игрок не смотрит git: если с прошлого захода в этот браузер накатили другую сборку Server, один раз показать, что вошло в неё. ### Было / Стало / Почему **Было.** Нет версии сборки на экране. Сессионная кука HttpOnly и про вход. **Стало.** Сборка Server вшивает `HEAD` и `git log --first-parent`. `GET /api/changelog?since=` отдаёт текущий SHA и коммиты после якоря. Клиент держит `hschool.seen-rev` (год, `Path=/`, `SameSite=Lax`, не HttpOnly). Первый заход без куки окно не показывает — только запоминает текущий SHA. Окно — после входа, не при возврате из школы. **Почему.** «Накатанный» — то, что в dll, а не грязный HEAD при `--no-build`. First-parent после `--no-ff` — это слитые фазы, не внутренняя нарезка ветки. `Mark phase N` оставляем в цепочке якорем, в список не рисуем: иначе кука на таком HEAD потеряла бы следующее слияние. ### Что не входит Ручной `CHANGELOG.md`. Запись на пользователе в `users.json`. Вызов git из бегущего процесса. Бамп версии сокета. Окно внутри открытой школы.