docs(ui): define web application visual style requirements

This commit is contained in:
2026-09-03 22:06:45 +03:00
parent 9c274800b5
commit 8ffd6dabcf
5 changed files with 222 additions and 10 deletions
+36 -4
View File
@@ -215,7 +215,34 @@ Browser controls must support:
- If the player does not reconnect within 60 seconds, the match ends in a draw.
- Reloading a page is treated as a reconnect, not as leaving the match.
## 11. Technical constraints
## 11. Browser presentation
- The browser UI uses one dark, humorous retro arcade visual language across
provisioning, lobby, player, and observer modes, as defined in
`docs/UI_STYLE.md`.
- All player-facing UI copy, game messages, and browser errors are in Russian.
- The UI uses a near-black background, purple panels, turquoise interactive
accents, blue for Player 1, pink for Player 2, and plant-like green maze
walls. Important state is distinguished by icons, labels, outlines, or
shapes in addition to color.
- The player map consumes all space not required by fixed status and control
panels. The player view supports a minimum `412 x 916` CSS-pixel viewport
without page scrolling.
- Computers support keyboard movement and on-screen arcade controls. Tablets
support swipes and on-screen controls. Phones use directional swipes without
on-screen directional buttons.
- An always-visible `OK` control with a key icon drops the carried key without
confirmation and exposes the Russian accessible label `Сбросить ключ`.
- Observer mode requires at least a `1024 x 768` CSS-pixel viewport, initially
fits the complete map, and supports zoom and pan. Smaller viewports show a
Russian large-screen requirement message.
- Sound and vibration are enabled by default after the first user interaction
when the browser and device support them.
- The application has no runtime internet dependency. It uses local assets,
locally authored SVG icons, plain CSS, and a system monospace font styled to
resemble a pixel font.
## 12. Technical constraints
- Target: ESP32-C6FH4, 4 MB Flash, no required PSRAM.
- Build: PlatformIO, `espressif32@7.0.1`, ESP-IDF, compatible
@@ -224,6 +251,8 @@ Browser controls must support:
MVP.
- Static browser assets reside in LittleFS and should be compressed for the
production image.
- The complete compressed web payload must not exceed 1.5 MiB and must fit the
unchanged 1,984 KiB LittleFS partition.
- HTTP serves the application and provisioning pages; WebSocket carries live
lobby, control, and match messages.
- The initial LwIP socket limit is 16.
@@ -232,7 +261,7 @@ Browser controls must support:
- Active lobby and match state may live in RAM and need not survive an ESP
reboot. Wi-Fi settings must survive reboot.
## 12. MVP acceptance criteria
## 13. MVP acceptance criteria
The MVP is accepted when all of the following are demonstrated on the target
board:
@@ -263,8 +292,12 @@ board:
60-second reconnect timeout ends it as a draw.
12. A representative match normally completes in approximately five minutes
after balance tuning, without imposing a hard match timer.
13. The Russian retro arcade UI follows `docs/UI_STYLE.md`, works at the
required player and observer viewport sizes in the current stable Chrome,
Safari, Firefox, and Edge releases, requires no runtime internet access,
and stays within the 1.5 MiB compressed web-asset budget.
## 13. Explicitly outside MVP
## 14. Explicitly outside MVP
- More than two active players or more than one concurrent match.
- More than four observers.
@@ -277,4 +310,3 @@ board:
- Persistent match recovery after ESP reboot.
- OTA firmware partitions and OTA update flow.
- Dependence on PSRAM, an unverified LED, or an assumed board pinout.