feat(ui): горизонтальная раскладка игрового экрана — доска по высоте + левая панель #59
Reference in New Issue
Block a user
Delete Branch "feature/landscape-game-layout"
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?
Что
Горизонтальная (десктоп) раскладка только для игрового экрана. Когда экран
вытянут по горизонтали (
matchMedia('(orientation: landscape)')), экран партиипереключается с вертикального стека на две колонки:
min(100cqw,100cqh)в контейнере
container-type: size); ужимается по ширине, если колонка узкая —у доски минимальный приоритет, левую панель не сдавливает.
предпросмотр очков), счёт игроков, постоянно открытая история (докнута,
скроллится, шапка липкая — без выезжающей шторки и без тапа по счёту) и внизу
панель кнопок (🔄 / 🛟 / 🔀).
В горизонтальном режиме отключены: зум доски, жесты открытия/закрытия истории и
рост шапки (
growNav). Мобильная вёрстка не изменена — обе раскладки рендерятсяиз одних и тех же сниппетов, поведение единое.
Развилки (согласованы заранее)
orientation: landscape.Файлы
ui/src/game/Game.svelte— флагlandscape, две ветки шаблона + сниппеты, гейтингзума/жестов, стили колонок.
ui/src/game/Rack.svelte— размер плиток от ширины панели в landscape.ui/playwright.config.ts— e2e по умолчанию теперь портретный вьюпорт (мобильноеприложение, под которое написаны тесты жестов/зума/шторки).
ui/e2e/landscape.spec.ts— покрытие новой раскладки (две колонки, докнутая история,зум отключён, установка фишки) в своём landscape-вьюпорте.
docs/UI_DESIGN.md— описание раскладки.Board.svelteтрогать не пришлось — доска вписывается через обёртку.Проверки (локально)
pnpm check— 0 ошибок;pnpm test:unit— 195;pnpm build— ок.pnpm test:e2e— 124 (Chromium + WebKit), включая новый landscape-набор.портрет 390×800 без изменений; установка фишки в landscape — без зума, ✅ появляется.
Готово к живому просмотру на тест-контуре.