feat(ui): in-session maintenance overlay on the edge 503 marker #171
Reference in New Issue
Block a user
Delete Branch "feature/maintenance-overlay"
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?
Что
Оверлей «технические работы» в самом SPA — закрывает зазор, который статичная caddy-страница не ловит: юзер, УЖЕ сидящий в приложении, её не видит, у него просто начинают падать запросы. Комплемент к гейту из #170.
Механика:
X-Scrabble-Maintenance: 1(не по любомуunavailable— транзиент уже покрыт индикатором «Подключение…») на СЫРОМConnectErrorв двух catch-сайтах transport (unaryexec+ livesubscribe), ДО того какtoGatewayErrorсрежет заголовки. ЧистыйmaintenanceRetryMs()— юнит-тест.connection.svelte.ts) снимает на первом успехе; кнопка «Повторить» форсит проверку. Залипнуть не может.window.__maint(мок реального 503 не даёт) + Playwright-спек.Проверено локально
pnpm check0 ошибок, unit 402 (incl. 6 новых детектора), build ок, e2e 186 (Chromium+WebKit, incl. 2 новых — оверлей рендерится/гаснет по__maint).От тебя
docker run --rm -v <SCRABBLE_CONFIG_DIR>/caddy:/x alpine touch /x/on) — увидишь и статичную страницу (свежая загрузка), и оверлей (если уже в SPA); снимиrm /x/on.Заметка
Прод same-origin (
VITE_GATEWAY_URLпустой) → заголовок-маркер читаем без CORSAccess-Control-Expose-Headers. Если когда-нибудь разнесём origin SPA/gateway — добавить его в caddy-503 (одна строка).