Files
h-school/docs/phases/54-whats-new.md
T
Leonid PershinandCursor 449be4e0ea Show unseen Server commits after login.
Bake first-parent git log at Server build and remember the SHA in a browser cookie.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:43:36 +03:00

43 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Фаза 54. Что нового
## Зависимости
Нет. Сессия (фаза 38) уже ставит куку входа; это отдельная кука и отдельное окно.
## Зачем
После наката игрок не обязан читать git. Окно один раз показывает, что изменилось с прошлого
захода в этот браузер.
## Задачи
- [x] Сборка Server вшивает SHA и `git log --first-parent` (не вызов git в рантайме)
- [x] `GET /api/changelog?since=` с сессией: текущий SHA и коммиты строго после `since`
- [x] Нет `since`, неизвестный SHA, `since` = текущий — `commits` пустой
- [x] Subject `Mark phase N…` в окне нет; в цепочке якоря они остаются
- [x] Кука `hschool.seen-rev` (не HttpOnly, не сессионная): первый заход молча запоминает HEAD
- [x] Модалка только после `ensureSession` (вход и повторный вход после logout), не с меню школы
- [x] [`protocol.md`](../protocol.md) HTTP, версию сокета не бампить
## Тесты, без которых фаза не закрыта
- [x] Срез после известного SHA — видимые коммиты старше→новее, без `Mark phase`
- [x] Якорь на `Mark phase` — следующие видимые всё равно отдаются
- [x] Нет `since` / неизвестный SHA / `since` = текущий — пустой список
- [x] `GET /api/changelog` без сессии — `401`
- [x] С сессией без `since` — 40 hex в `current`, `commits` пустой
- [x] Нет куки — запрос без `since`, кука = `current`, диалога нет
- [x] Кука старше, сервер вернул коммиты — диалог, по закрытию кука = `current`
## Критерий готовности
- Первый заход после деплоя с новой сборкой Server показывает окно; повторный заход в том же
браузере — нет
- `run-aspire` без `--rebuild` после коммита только в доках может показать старый SHA: вшито
на сборке, не HEAD рабочего дерева
## Стоп
Не писать last-seen в `users.json`. Не бампить сокет. Не вызывать git из бегущего сервера.
Не показывать окно при возврате из школы на меню.