joywayer
9ad477f474
fix: preserve reconnect after local socket errors
2026-09-05 18:09:56 +08:00
joywayer
a3cd74d316
feat: add strict local login websocket transport
2026-09-05 18:05:17 +08:00
joywayer
baafc4a4f4
test: verify local login sources with protocol builder
2026-09-05 14:57:59 +08:00
joywayer
e00d051112
feat(local): compose login account and device sources
2026-09-05 14:51:24 +08:00
joywayer
eb5fb44d97
feat(config): add scoped local visitor accounts
2026-09-05 14:43:11 +08:00
joywayer
c6f1103b32
fix(config): name malformed local identity errors
2026-09-05 14:36:00 +08:00
joywayer
34be99d84a
feat(config): add local startup boundary
2026-09-05 14:30:55 +08:00
joywayer
ec67fe6e6d
test(presentation): verify runtime UI wiring and boundaries
2026-09-05 13:12:35 +08:00
joywayer
d29a659541
feat(presentation): wire platform scenes and UI commands
2026-09-05 12:47:15 +08:00
joywayer
8b7efa7de0
feat(presentation): add cancellable frame renderer
2026-09-05 12:24:48 +08:00
joywayer
1e168ae81e
feat(presentation): project immutable public page models
2026-09-05 12:03:46 +08:00
joywayer
bd45503d47
feat(platform): expose lifecycle-safe UI observation
2026-09-05 11:50:12 +08:00
joywayer
8eae3258ca
fix(platform): preserve recoverable outcomes and terminal sessions
2026-09-05 10:50:55 +08:00
joywayer
1e3a21b476
refactor(platform): complete decoupled vertical runtime
2026-09-05 10:21:28 +08:00
joywayer
d177c52c3f
fix(platform): close startup subscription handoff gaps
2026-09-05 10:02:45 +08:00
joywayer
3963b3b791
fix(platform): harden runtime lifecycle cleanup
2026-09-05 09:40:00 +08:00
joywayer
3a9c5d6fdb
feat(platform): add single-entry platform runtime
2026-09-05 09:13:00 +08:00
joywayer
4cc83ea713
fix(sdk): scan CommonJS imports
2026-09-05 08:38:04 +08:00
joywayer
2570dd7b97
fix(sdk): scan template literal imports
2026-09-05 08:24:11 +08:00
joywayer
88784ad52a
fix(sdk): close boundary alias bypasses
2026-09-05 08:12:01 +08:00
joywayer
dfaa4f0ef4
fix(sdk): enforce runtime dependency boundary
2026-09-05 08:01:07 +08:00
joywayer
471e2e9479
fix(platform): isolate game host leases
2026-09-05 07:48:23 +08:00
joywayer
30547f6a54
feat(platform): expose restricted game host and commands
2026-09-05 07:25:21 +08:00
joywayer
a383c0330e
fix(platform): snapshot session fault errors safely
2026-09-05 07:05:06 +08:00
joywayer
77b2bff40a
fix(platform): recognize session faults across realms
2026-09-05 06:49:59 +08:00
joywayer
224df1c21c
fix(platform): preserve session failures and URL syntax
2026-09-05 06:38:00 +08:00
joywayer
7e5a950cc7
fix(platform): serialize runtime session transitions
2026-09-05 06:17:04 +08:00
joywayer
1c124cf216
refactor(platform): unify routing and session dispatch
2026-09-05 05:23:58 +08:00
joywayer
e47d9d3007
fix(net): stabilize shared wire graph audits
2026-09-05 04:52:02 +08:00
joywayer
33904e0e58
fix(net): serialize validated wire snapshots
2026-09-05 04:40:11 +08:00
joywayer
85db7765ac
fix(net): validate wire frames and coalesce reconnects
2026-09-05 04:25:51 +08:00
joywayer
58a7a2dc68
fix(net): harden wire lifecycle races
2026-09-05 04:13:58 +08:00
joywayer
a8873b9a84
refactor(net): isolate transport and wire lifecycle
2026-09-05 03:57:32 +08:00
joywayer
72227efd05
fix(platform): apply room action battle flags
2026-09-05 03:44:32 +08:00
joywayer
9840ed70b2
fix(platform): stabilize store snapshots and notifications
2026-09-05 03:29:49 +08:00
joywayer
462e2e9267
fix(platform): separate room stage contracts
2026-09-05 03:12:19 +08:00
joywayer
4ffa59bf8e
fix(platform): enforce atomic store input validation
2026-09-05 02:57:07 +08:00
joywayer
7acd3ed96e
feat(platform): add atomic canonical platform store
2026-09-05 02:44:51 +08:00
joywayer
fdc6fc2264
fix(protocol): reject invalid request contract values
2026-09-05 02:16:47 +08:00
joywayer
0a7951ba32
feat(protocol): define strict first-slice wire contracts
2026-09-05 02:06:46 +08:00
joywayer
a173d410e0
refactor(native): isolate exact WVJB compatibility adapter
2026-09-05 01:47:57 +08:00
joywayer
73cdf7d95c
fix(config): harden remote and identity validation
2026-09-05 01:36:10 +08:00
joywayer
d1ad63983b
fix(config): restore legacy gameserver and urlserver contract
2026-09-05 01:25:50 +08:00
joywayer
f25211c64e
fix(sdk): release lifecycle validation modules
2026-09-05 01:07:20 +08:00
joywayer
f2823c398a
feat(sdk): add isolated single-game sessions
2026-09-05 01:00:51 +08:00
joywayer
c0c6a7c800
fix(sdk): harden import boundary scanner
2026-09-05 00:49:26 +08:00
joywayer
e1556d50f4
feat(sdk): define single-game public contracts
2026-09-05 00:41:39 +08:00
joywayer
0aa66e1ec7
界面迁移更新
2026-09-05 00:12:11 +08:00
joywayer and Claude Code
ec550ba257
fix(scripts): RoomSceneStart setPlayerData bindTo contract + runtime validation
...
Critical fix:
- setPlayerData fake state lacked subscribe() -> PlayerInfoView.bindTo threw
TypeError at runtime. Switched to PlayerInfoView.applyPlayer({nickname,
bean,avatar}) when available; falls back to bindTo + proper reactive
store with subscribe/value if only bindTo is exposed.
Runtime validation (per CLAUDE.md 第二准则 — no silent fallback):
- computePositions / setSeatLayout: validate layout ∈ VALID_LAYOUTS
- computePositions / setPlayerCount: validate count ∈ [1,8] AND is integer
- setPlayerData: validate seat is integer ∈ [1, currentCount]
- extractPlayerViewData: validate nickname/bean/avatar types (no ?? 兜底)
- start(): validate no null/undefined entries in playerSlots
Architecture:
- Extracted pure controller logic to room-scene-controller.ts so tests can
import without cc mock (RoomSceneStart remains thin cc wrapper that
delegates). Matches existing pattern of room-scene-layout.ts.
Tests:
- Added 27 new tests (validate* / apply* / extract* / clearSlots)
- 5 original layout tests kept; 254/254 PASS (222 prior + 32 room-scene)
Spec:
- Resolved 2x2/triangle/square contradiction: Success Metrics + 成功标准
both defer coordinates to layout sub-task, consistent with 不覆盖 section.
Co-Authored-By: Claude Code <noreply@anthropic.com >
2026-09-02 21:22:04 +08:00
joywayer
71ed67abff
feat(scripts): RoomSceneStart.ts + pure layout helpers + tests (setPlayerCount/setSeatLayout/setPlayerData/clearSeats API)
2026-09-02 20:59:31 +08:00