Commit Graph
60 Commits
Author SHA1 Message Date
joywayer af059b40e9 docs: document unified startup settings and browser acceptance 2026-09-05 23:23:04 +08:00
joywayer 239af0aa39 docs: specify unified startup configuration 2026-09-05 22:40:24 +08:00
joywayer 5d90891b38 docs: finalize remote configuration acceptance 2026-09-05 21:32:16 +08:00
joywayer d79bed0253 docs: record remote configuration source and browser evidence 2026-09-05 21:28:52 +08:00
joywayer 62328b6fd6 docs: specify remote configuration memory flow 2026-09-05 21:08:31 +08:00
joywayer 556c47a1b6 docs: record verified local platform login acceptance 2026-09-05 19:22:37 +08:00
joywayer 6976b55038 docs: keep Creator login work on main checkout branch 2026-09-05 17:58:13 +08:00
joywayer 2fa375fc90 docs: plan approved local Creator login validation 2026-09-05 17:53:04 +08:00
joywayer 5a39326fd4 docs: design local Creator startup and login validation 2026-09-05 15:16:49 +08:00
joywayer 66246c8f5b docs: record startup source validation and review 2026-09-05 15:02:17 +08:00
joywayer baafc4a4f4 test: verify local login sources with protocol builder 2026-09-05 14:57:59 +08:00
joywayer 76de9432ef docs: plan startup configuration source implementation 2026-09-05 14:23:25 +08:00
joywayer 081d9e9b06 docs: define startup configuration and visitor account sources 2026-09-05 14:08:10 +08:00
joywayer 286a8b9c16 docs: record completed UI wiring review 2026-09-05 13:16:08 +08:00
joywayer ec67fe6e6d test(presentation): verify runtime UI wiring and boundaries 2026-09-05 13:12:35 +08:00
joywayer 2d7655a5d7 docs: design and plan platform UI wiring core 2026-09-05 11:17:39 +08:00
joywayer 0aa66e1ec7 界面迁移更新 2026-09-05 00:12:11 +08:00
joywayer e2762d631d docs(plan): add decoupled platform runtime implementation 2026-09-04 23:55:40 +08:00
joywayer 56fce85040 docs(spec): detail theme and single-game packaging 2026-09-04 23:35:20 +08:00
joywayer c5863936c6 docs(spec): adopt decoupled framework migration architecture 2026-09-04 23:24:08 +08:00
joywayer 621eb8722e docs(plan): add platform vertical-slice implementation plan 2026-09-04 22:34:03 +08:00
joywayer c9f6df6e10 docs(spec): decouple platform and subgames 2026-09-04 22:12:52 +08:00
joywayer b651aaae9b docs(spec): define platform vertical-slice migration 2026-09-04 21:56:41 +08:00
joywayer 522d747542 图片调整 2026-09-03 23:06:00 +08:00
joywayerandClaude Code 8406268b50 docs(spec): 新增 UI 迁移参照手册(3 个试点 prefab 结构 + 脚本驱动参照)
记录已迁移 Layer 614/616/619 的节点层级、组件属性、坐标、spriteFrame UUID、
文本/字体映射,供后续脚本绑定与驱动 UI 参照。

关键规则确立:
- 画布 1600×720 有意设计,1280 UI 水平居中(Widget 16 + hc=lpos.x)
- Text 的 fontSize/文本权威源是 Layer XML(gameabc_Object.json 无此字段)
- 字体大小保持源值不统一

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-03 20:52:13 +08:00
joywayerandClaude Opus 5 1e51daeb50 docs(spec): UI 手工迁移规范 (9 步 funplay MCP 流程 + 8 项验证清单 + 多帧 sprite 命名规则)
基于 Layer 8 (Notice 9 spirit) + Layer 15 (JoinRoom 26 spirit) 实际迁移经验.
含决策树 (脚本生成 vs funplay MCP 手工) + __prefab 数组索引约束 + SelfPos=1 top-left 锚点公式.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-03 17:40:33 +08:00
joywayerandClaude Opus 5 98631944db docs(spec): Layer 15 (JoinRoom_Layer) 数据完整性 1:1 验证报告
- XML 26 spirits vs gameabc_Layer 26 ObjectList: 100% 1:1 (Common=26, diff=∅)
- SelfPos=OriginPos=1 全部 26 objects (top-left anchor, 无复杂公式)
- 全部 group=5 (单 group), IndexOfLayer 1-26
- FrameIndex 多帧 sprite 至少 3 个 (Object 514/602/236)
- 修正 '座位' 误解: Layer 15 = JoinRoom_Layer (加入房间), 座位系统在其他 Layer

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthrop.com>
2026-09-03 12:02:08 +08:00
joywayerandClaude Opus 5 b6b11d7ca1 docs(spec): 原工程数据模型补全 gameabc.min.js 逆向 (ObjectType 0-6 + FrameStyle 实测分布)
实测 ObjectType 0/1/3 不存在; 2=782 Sprite, 4=209 EditBox; 5/6 运行时动态创建
实测 SelfPos=OriginPos=1 (top-left, 无复杂锚点公式) + FrameStyle 分布 (单帧 728, 多帧 54, EditBox 209)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-03 07:41:19 +08:00
joywayerandClaude Opus 5 00d6ba3fc4 docs(spec): 原工程 Game_Surface_3 数据模型 (7 个 JSON schema + Layer XML + ObjectType 映射)
基于 projects/Game_Surface_3/{output/*.json, save/*.xml, js/gameabc.min.js} 全面阅读.
Layer 8 (Notice_Layer) ObjectList 与 save/Layer00008.xml 的 9 个 Spirit ID 完全 1:1 验证通过.

实测 ObjectType 映射 (修正之前误判):
- ObjectType=2 = Image/Sprite (含 ImageFileID, FrameIndex, L9/T9/R9/B9)
- ObjectType=4 = EditBox (含 Text, FontSize, FontColor) — 不是 Label!
- ObjectType=0/1/3/5 需 gameabc.min.js 逆向确认

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-03 07:37:36 +08:00
joywayerandClaude Opus 5 0a6f3fa24b docs(spec): playbook add multi-frame sprite migration rule (原 1 PNG 多帧 → Cocos N 张散图)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 23:45:28 +08:00
joywayerandClaude Opus 5 0024cd6d18 docs(spec): interface conversion playbook (代码迁移 vs MCP 手工决策树 + 8 项验证清单 + 已知限制)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 21:39:09 +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
joywayerandClaude Opus 5 18151f1107 docs(plan): Room.scene 实施计划 (4 task: script + scene asset + integration + runner)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 20:55:22 +08:00
joywayerandClaude Opus 5 23036f9cfa docs(spec): Room.scene 设计 (可配置玩家数 + 4 种 seat layout)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 20:43:00 +08:00
joywayerandClaude Opus 5 02dc5d51ca chore(spec): 综合清理 + legacy-layer 迁移 spec/plan/data
主要改动:
- 切到 funplay-cocos-mcp v0.5.1 (用户级配置, 项目级 .mcp.json 删除)
- 仓库文档/CLAUDE.md/.gitignore 等清理过时 cocos-mcp-server 引用
- memory 文件同步: cocos-mcp-setup/path/blocker/spriteframe-uuid/prefab-persist 等加 funplay 实测警告
- memory 新建 funplay-cocos-mcp-pending-verification.md (后已被实测覆盖)
- spec/plan/data:
  - docs/superpowers/specs/2026-09-02-legacy-layer-migration-design.md
  - docs/superpowers/plans/2026-09-02-legacy-layer-migration.md
  - docs/superpowers/data/layer-spirit-summary.json
- YouleNexus: profiles.ts / defaults.ts / PlayerInfoView.prefab / scene 改动

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 07:36:54 +08:00
joywayerandClaude Opus 5 6b4faab029 test(ui-migration): 单界面 MCP 落地验证并回填 spec
Login_Layer 18 个节点经中间描述落地为 prefab, 结构比对通过。
实测耗时回填 spec §5, 作为「是否需要写编辑器扩展」的判断依据。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-29 22:10:50 +08:00
joywayerandClaude Opus 5 8b24acab3f docs(plan): 旧 gameabc UI 数据迁移实施计划(子系统 A)
8 个任务: 源数据校验 → 坐标/锚点 → 帧矩形与命名 → PNG 切分与全量重组校验
→ bucket 归属 → 中间描述组装 → 转换 CLI 全量产出 → 单界面 MCP 落地验证。

重组校验是核心: 切分可逆, 故「重组(切分(原图))的像素 === 原图像素」是对全部
1006 帧的完全验证且成本近零。帧序用例直接锚定读图实证的样例(通知=10/设置=11/战绩=4)。

引入 pngjs devDep 为经裁决的例外(Node 无内置 PNG codec, 自写解码器风险更大),
仅供迁移工具使用, 不进框架运行时。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-28 00:24:21 +08:00
joywayerandClaude Opus 5 733090ec13 docs(spec): 旧 gameabc UI 数据迁移与分辨率适配设计(子系统 A)
把「旧平台 UI 搬到 Cocos」拆成三个子系统, 本 spec 只覆盖 A(UI 数据迁移);
B(引擎机制映射)与 C(平台逻辑移植)另立。

关键决策: 设计分辨率保持 1280x720 + fitHeight(坐标 1:1 迁移)、多帧图切成散图
(1306 张)、同组挂同一父节点、锚点按中心点三区推断(仅水平)、全部 55 界面转进框架、
走「中间产物 + 编辑器批量」而非直接生成 prefab(红线)。

帧序经实证: 1 基 + 行优先(读 00014.png 网格内容与 11 个按钮的 FrameIndex 对照,
六项精确命中)。并推翻了早期「51.6% 帧未被引用」的错误统计。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-28 00:14:15 +08:00
joywayerandClaude Opus 5 5708926711 fix(skin): 修复最终评审发现的 6 处缺陷(junction 排除失效/meta 静默丢失等)
跨任务视角发现的问题:Critical1 materialize.mjs 的 junction 排除比较在
Windows 上因长路径前缀恒假、从未生效,且测试夹具的 junction 指向真源自身,
掩盖了此问题;Critical2 composeSkin 例外通道在 uuid 缺失/框架侧无 meta 时
静默失败,违反第二准则;Important3 可覆盖范围误把 theme/ 下的框架 TS 代码
也纳入;Important5 cli-entry 测试漏注册 check-skin/build-game;Important6
composeSkin 与 check-skin 各自拼路径,未共用 paths.mjs 权威推导;Important7
--platform 缺值时静默落到默认平台。逐条修复并补测试,Critical1 用诱饵框架
目录验证过能真正杀掉该 bug(变异推演见 fix report)。

spec §5 step5 的 dist/<name>/ 拷贝按要求标注为本期未实现,不实现。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 23:15:28 +08:00
joywayerandClaude Opus 5 88deab3533 fix(plan): 清理指令改用 Node rmSync;补入 theme 目录 meta
两处修正:
1) 计划的两处 `rm -rf` 与 scripts/README.md:28 的安全规程直接冲突 ——
   git-bash 的 rm -rf 可能穿透 junction 误删框架真源, 正是本方案要守护的红线。
   改用 node rmSync(对 junction 不穿透)。Task 8 已按旧指令执行过一次,
   事后核查真源完好(git status 无 D 记录), 属侥幸未出事。
2) Task 7 提交了 theme/ 下四个 .ts 及其 .meta, 但漏了 theme/ 目录自身的 .meta。
   目录 meta 同样承载 UUID, 缺失会在跨工程 junction 共享时打断引用。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 22:50:13 +08:00
joywayerandClaude Opus 5 bed9b4f35d docs(tools): 皮肤与构建流水线文档, 回填 library 缓存实测结论
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 22:48:03 +08:00
joywayerandClaude Opus 5 cd064756d6 fix(spec): 修正 §6 回填中对"构建阻塞原因"的过度概括
发现 build-game.mjs 已实现真无头 CLI 构建(CocosCreator.exe --build),
真正卡住假设1的是"造不出 Auto Atlas 资产"而非"构建跑不完",回填措辞据此更正。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 22:33:14 +08:00
joywayerandClaude Opus 5 669a2a5e14 test(ui): 实测构建期合成的三条承重假设并回填 spec
Auto Atlas 构建期打包 / meta 保留 uuid 后尺寸变化的表现 / Spine 整套替换。
结论写入 spec §6, 未验证项如实标注阻塞, 不假定可行。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 22:30:46 +08:00
joywayerandClaude Opus 5 393c6709eb fix(plan): Task 6 的 CLI 入口补 argv[1] 守卫
Task 4 评审指出 check-skin.mjs 缺该守卫, 与仓库其余四个脚本
(bump-cocos/check-cocos-version/new-game/setup-links) 的既有约定不一致。
plan 里 Task 6 的 build-game.mjs 是同样写法, 先修正避免复制该不一致。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 21:40:08 +08:00
joywayerandClaude Opus 5 6961c18117 docs(spec): §3.2 补入 size-unreadable 错误码
Task 3 评审发现 readPngSize 读不出尺寸时被静默当作校验通过(违反下游不兜底),
修复引入第四个错误码。spec 表格同步, 避免规范与实现漂移。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 21:34:43 +08:00
joywayerandClaude Opus 5 000f9e4290 fix(plan): 修正 Task 3 给定代码里恒为 false 的例外通道判断
计划里写的 !ovSet.has(`${rel}.meta`) 恒为 false —— ovSet 由 listAssets 构建,
而 listAssets 明确排除 .meta, 故「override 自带 meta 改尺寸」的例外通道永不生效。
改为 existsSync 查磁盘。该 bug 由 Task 3 的 TDD RED 信号暴露, 实现者已在代码中修正,
此处同步计划文档避免重跑时重新引入。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 21:26:39 +08:00
joywayerandClaude Opus 5 65f0998fbd docs(plan): framework/ui 资源归属·皮肤合成·构建流水线实施计划
8 个 TDD 任务: gitignore 修复+资源骨架 → 承重假设实测 → skin 校验 →
check-skin CLI → materialize 合成 → build-game 流水线 → theme 契约 →
端到端冒烟。承重假设实测排在工具开发之前, 失败即触发 spec 备选方案。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 21:09:15 +08:00
joywayerandClaude Opus 5 24e05189c9 docs(spec): Spine 规则改按 Cocos 原生资源模型,贴图豁免同尺寸约束
旧项目自行集成 Spine 是 gameabc 引擎缺陷所致,对新框架无参考价值。
Cocos 用 sp.SkeletonData 复合资源;区域坐标记在 .atlas 内而非 .meta,
故 Spine 贴图可变尺寸,校验须跳过尺寸检查以免误报。
新增待实测项 4:整套替换后 uuid 关联是否自洽。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 20:57:19 +08:00
joywayerandClaude Opus 5 c826df1108 docs(spec): framework/ui 资源归属·皮肤机制·打包裁剪设计
构建期皮肤合成取代架构 spec §5 的运行时 AssetResolver:
Prefab 保持静态引用,包内零冗余,图集交 Auto Atlas 构建期打包。
决策依据为旧项目全量实测(444 个平台资源:73.9% 共用、
26.1% 同名替换、其中 98.3% 同尺寸)。
组件替换升为第三条主力通道,完整设计另立 spec。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 20:55:44 +08:00
joywayerandClaude Opus 4.8 1ed00a520e docs(plan): platform 响应式 Store 第一切片实施计划(6 TDD 任务)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 21:09:33 +08:00