Commit Graph
109 Commits
Author SHA1 Message Date
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
joywayerandClaude 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
joywayerandClaude Opus 5 65c627e2de docs(scripts): spirit-semantics type=5 uncertainty note
PoC 2 实证: Login_Layer.prefab Spirit465 (type=5 _type=1 SLICED)
引用的 SpriteFrame 8e3905be-...@f9941 实际 capInsets=[0,0,0,0] (非 9-slice).
Fix path: 扩展 resolveSpriteFrameUuid 返回 capInsets, emitPrefabJson
根据 capInsets 决定 _type (all zero → 0/SIMPLE, otherwise → 1/SLICED).
当前按 type 硬编码 _type=1 与 YouleNexus 手工 prefab 1:1 一致
(手工 prefab 也有同样 bug), 运行时 SpriteFrame 实际非 SLICED.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 18:09:31 +08:00
joywayerandClaude Opus 5 d0b2265716 docs(scripts): spirit-semantics type=4 uncertainty note (Pay_Layer 11 type-4 可能 Button; 待 PoC 2 验证)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 17:51:45 +08:00