feat: sparser robot nudges, typed unread badge, lobby unread bump
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 9s
CI / integration (pull_request) Successful in 13s
CI / ui (pull_request) Successful in 53s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m26s
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 9s
CI / integration (pull_request) Successful in 13s
CI / ui (pull_request) Successful in 53s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m26s
Three owner-requested polish changes: - robot: replace the lengthening 60-90 min -> 6 h proactive-nudge ramp with a flat uniform 9-12 h wait before every nudge; the existing sleep-window gate still skips and defers a nudge that would land in the robot's night. - ui: colour the lobby/in-game unread dot by type -- the regular danger colour when a chat message is unread, a softer amber (--warn) when only nudges are. Adds a per-viewer unread_messages flag (chat_messages.kind='message') across the backend DTO, FlatBuffers wire, gateway transcode and the UI store. - ui: float games with any unread notification to the top of the lobby's your-turn and opponent-turn sections (finished keeps its order), reusing the existing unread_chat flag. Docs (ARCHITECTURE 7, FUNCTIONAL + _ru) updated. No DB migration; the new wire field is backward-compatible.
This commit is contained in:
+8
-5
@@ -74,8 +74,9 @@ The lobby lists **my games** and offers a bottom tab bar — new game, statistic
|
||||
**my games** list groups games into three
|
||||
sections — *your turn*, *opponent's turn* and *finished* (empty sections are hidden) — and
|
||||
orders them so the games awaiting your move come first, the longest-waiting on top, while
|
||||
opponent-turn and finished games are most-recent first; it renders as a compact,
|
||||
line-separated list. While the lobby is open and a listed game **becomes your turn or
|
||||
opponent-turn and finished games are most-recent first; within the your-turn and
|
||||
opponent-turn sections a game with any unread notification floats to the top (the finished
|
||||
section keeps its order). It renders as a compact, line-separated list. While the lobby is open and a listed game **becomes your turn or
|
||||
finishes**, its status icon **blinks twice** to draw the eye (an opponent's-turn change is
|
||||
silent, applied in place). You can **remove a finished game from your own list**:
|
||||
swipe a finished row left (or, on desktop, tap its **⋮**) to reveal a **❌**, then tap it.
|
||||
@@ -161,7 +162,8 @@ times for most moves, the occasional long one, and a night-time pause that track
|
||||
player's own day; once a game is clearly decided and both sides are only passing, it stops
|
||||
dragging it out, answering its forced passes at roughly the player's own pace rather than
|
||||
after a long deliberation. It answers a nudge
|
||||
within a few minutes and nudges back when the player has been away a long time. It
|
||||
within a few minutes and, when the player keeps it waiting, nudges back on a sparse
|
||||
schedule — roughly every 9-12 hours, and never during its night-time pause. It
|
||||
carries a human-like, language-appropriate name — a fresh one each game, drawn from a wide
|
||||
international pool of real names and handles, so the arena feels populated by many different
|
||||
players (a Russian game shows mostly Russian names, never East-Asian scripts; an international
|
||||
@@ -216,8 +218,9 @@ Chat and the word-check tool share one **comms screen** with **💬 chat** / **
|
||||
tabs, reached from the 💬 in the move-history header (with a back to the game). An AI game has no
|
||||
chat, so its comms screen is the word-check alone — and once an AI game is finished (no chat, the
|
||||
dictionary closed) the 💬 entry disappears entirely. An unread chat
|
||||
entry — a message **or a nudge** from an opponent — raises a small **red dot** next to the game
|
||||
in the **lobby** and on the game's **score bar**. Opening the **move history** counts as reading
|
||||
entry — a message **or a nudge** from an opponent — raises a small **dot** next to the game
|
||||
in the **lobby** and on the game's **score bar**, **red when an unread message is waiting and a
|
||||
softer amber when only nudges are**. Opening the **move history** counts as reading
|
||||
the chat, even without entering it: the dot clears and the 💬 icon **fade-blinks twice**. A nudge
|
||||
also clears the moment its recipient **takes their move**.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user