R6(a): de-stage code, docs, READMEs; split stage6_test
Mechanical, behaviour-preserving removal of Stage N / TODO-N / phase (RN) references from comments, doc-comments, service READMEs, the current-state docs (ARCHITECTURE, FUNCTIONAL+_ru, TESTING, UI_DESIGN), config-file comments, and the .fbs/.proto schema comments. PLAN.md / PRERELEASE.md / CLAUDE.md keep the stage history. - Rename the only stage-named identifiers: registerStage8 -> registerSocialOps, registerStage11 -> registerLinkOps (gateway transcode). - Split stage6_test.go: TestEmailLoginFlow -> email_test.go, TestGuestAutoMatchLeavesNoStats (+ provisionGuest) -> account_test.go. - Regenerated proto bindings (push.pb.go, telegram_grpc.pb.go) from the de-staged .proto comments; FB Go/TS bindings unchanged (flatc strips schema comments). go build/vet/gofmt clean across modules; integration typecheck and pnpm check green.
This commit is contained in:
+7
-7
@@ -4,10 +4,10 @@ Pure-HTML5 game client — **plain Svelte 5 (runes) + TypeScript + Vite**, no
|
||||
SvelteKit. Talks to the `gateway` over **Connect-RPC + FlatBuffers**; embeddable in
|
||||
platform webviews and packageable to native via Capacitor.
|
||||
|
||||
Stage 7 ships the **playable slice**: sign in (guest / email), the "my games" lobby,
|
||||
The **playable slice**: sign in (guest / email), the "my games" lobby,
|
||||
auto-match, the board (place tiles by drag or tap, pass, exchange, resign), hint,
|
||||
word-check + complaint, per-game chat and nudge, the live in-app stream, i18n (en/ru),
|
||||
theme, and the profile. **Stage 8** adds friends/blocks (with one-time friend codes),
|
||||
theme, and the profile. **Social** surfaces add friends/blocks (with one-time friend codes),
|
||||
friend-game invitations, profile editing + email binding, the statistics screen, the
|
||||
lobby notification badge, and the in-game history + GCG export (share or download,
|
||||
finished games only).
|
||||
@@ -26,11 +26,11 @@ pnpm codegen # regenerate src/gen from edge.proto + scrabble.fbs (dev-time)
|
||||
```
|
||||
|
||||
`GATEWAY_URL` overrides the dev proxy target; `VITE_GATEWAY_URL` sets the runtime
|
||||
gateway origin for a packaged (non-proxied) build. `VITE_TELEGRAM_BOT_ID` (Stage 11)
|
||||
gateway origin for a packaged (non-proxied) build. `VITE_TELEGRAM_BOT_ID`
|
||||
enables the "Link Telegram" web sign-in (the Login Widget) — inert until the site
|
||||
domain is registered with BotFather (`/setdomain`); `VITE_TELEGRAM_LINK` is the
|
||||
share-to-Telegram deep-link base (Stage 9). `VITE_TELEGRAM_GAME_CHANNEL_NAME_EN` / `VITE_TELEGRAM_GAME_CHANNEL_NAME_RU`
|
||||
are the per-language "Play in Telegram" links shown on the landing page (Stage 17).
|
||||
share-to-Telegram deep-link base. `VITE_TELEGRAM_GAME_CHANNEL_NAME_EN` / `VITE_TELEGRAM_GAME_CHANNEL_NAME_RU`
|
||||
are the per-language "Play in Telegram" links shown on the landing page.
|
||||
|
||||
The build has **two entries**: the game SPA (`index.html`, served at `/app/` and
|
||||
`/telegram/`) and a lightweight landing page (`landing.html`, served at `/`).
|
||||
@@ -40,7 +40,7 @@ The build has **two entries**: the game SPA (`index.html`, served at `/app/` and
|
||||
A single Connect `Execute(message_type, payload)` carries every unary op; the request
|
||||
and response bodies are **FlatBuffers** tables (`pkg/fbs/scrabble.fbs`) in `payload`.
|
||||
The session token rides in `Authorization: Bearer`; a domain failure comes back in
|
||||
`result_code`. `Subscribe` is the live event stream; R4 made its game events carry a state **delta**
|
||||
`result_code`. `Subscribe` is the live event stream; its game events carry a state **delta**
|
||||
that `lib/gamedelta.ts` applies to the per-game cache (`lib/gamecache.ts`), so a move renders without
|
||||
a follow-up `game.state` (a gap falls back to a refetch). `lib/transport.ts` is the real
|
||||
client; `lib/mock/` is an in-memory fake selected by `MODE === 'mock'` (and tree-shaken
|
||||
@@ -48,7 +48,7 @@ out of production). Both speak the plain `lib/model.ts` types via `lib/codec.ts`
|
||||
|
||||
**No board on the wire:** `StateView` is a summary + rack only, so the client
|
||||
reconstructs the 15×15 board by replaying the decoded move journal (`game.history`).
|
||||
**The play loop is alphabet-agnostic (Stage 13):** the rack and the play / exchange /
|
||||
**The play loop is alphabet-agnostic:** the rack and the play / exchange /
|
||||
word-check requests carry **alphabet indices**, and the client caches each variant's
|
||||
`(index, letter, value)` table — sent once behind `StateRequest.include_alphabet` — in
|
||||
`lib/alphabet.ts`, rendering the rack and blank chooser from it. **Premium squares**
|
||||
|
||||
Reference in New Issue
Block a user