Files
h-school/docs/phases/off-queue/54-whats-new.md
T

2.7 KiB
Raw Blame History

Фаза 54. Что нового

Зависимости

Нет. Сессия (фаза 38) уже ставит куку входа; это отдельная кука и отдельное окно.

Зачем

После наката игрок не обязан читать git. Окно один раз показывает, что изменилось с прошлого захода в этот браузер.

Задачи

  • Сборка Server вшивает SHA и git log --first-parent (не вызов git в рантайме)
  • GET /api/changelog?since= с сессией: текущий SHA и коммиты строго после since
  • Нет since, неизвестный SHA, since = текущий — commits пустой
  • Subject Mark phase N… в окне нет; в цепочке якоря они остаются
  • Кука hschool.seen-rev (не HttpOnly, не сессионная): первый заход молча запоминает HEAD
  • Модалка только после ensureSession (вход и повторный вход после logout), не с меню школы
  • protocol.md HTTP, версию сокета не бампить

Тесты, без которых фаза не закрыта

  • Срез после известного SHA — видимые коммиты старше→новее, без Mark phase
  • Якорь на Mark phase — следующие видимые всё равно отдаются
  • Нет since / неизвестный SHA / since = текущий — пустой список
  • GET /api/changelog без сессии — 401
  • С сессией без since — 40 hex в current, commits пустой
  • Нет куки — запрос без since, кука = current, диалога нет
  • Кука старше, сервер вернул коммиты — диалог, по закрытию кука = current

Критерий готовности

  • Первый заход после деплоя с новой сборкой Server показывает окно; повторный заход в том же браузере — нет
  • run-aspire без --rebuild после коммита только в доках может показать старый SHA: вшито на сборке, не HEAD рабочего дерева

Стоп

Не писать last-seen в users.json. Не бампить сокет. Не вызывать git из бегущего сервера. Не показывать окно при возврате из школы на меню.