joywayer and Claude 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
joywayer and Claude Opus 5
550e6da9d1
feat(tools): check-skin 独立校验 CLI
...
脱离构建即可自检 override, 秒级反馈; 有错退出码 1 并逐条指出
子游戏名+文件路径+原因(第二准则: 错误早暴露、可定位)。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-27 21:36:19 +08:00
joywayer and Claude 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
joywayer and Claude Opus 5
44264db8ba
fix(tools): skin.mjs 显式报错尺寸不可读,补全测试覆盖
...
Finding 1: 尺寸校验不能无声跳过(null 被当作通过)。
新增 size-unreadable 错误码,当图片无法读取尺寸时显式报错。
Finding 2: 测试 10 是伪测试(.wav 太短,被长度守卫拦下)。
改用真实 PNG 字节但 .wav 扩展名,验证 isImage() 门控在。
新增两条用例:
- size-unreadable 错误场景(override 侧非 PNG)
- PNG 签名检查(长度足够但签名不对)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-27 21:32:01 +08:00
joywayer and Claude 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
joywayer and Claude Opus 5
962c79866f
feat(tools): skin.mjs 资源清单与 override 校验
...
框架文件树即可覆盖清单(不另建清单文件)。孤儿/尺寸不一致/Spine 缺件
一律报错中止, 不静默跳过。Spine 贴图豁免尺寸校验(坐标在 .atlas 内)。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-27 21:24:30 +08:00
joywayer and Claude Opus 5
967641a7c7
chore(ui): 添加框架 ui 资源目录的自动生成元数据
...
Cocos Creator 为新创建的目录自动生成 .meta 文件,
确保资源 UUID 在团队协作中保持一致。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-27 21:16:32 +08:00
joywayer and Claude Opus 5
8a40e682ab
feat(ui): 资源归属骨架 + 修复 .gitignore 无锚点模式吞业务目录
...
framework/ui 建八个资源目录(按加载时机=图集划分)并落地归属规则文档。
根 .gitignore 的 **/native/ 与 YouleNexus 的裸 native 会静默吞掉
assets/framework/**/native/ 等业务目录; 改为各工程 .gitignore 用锚定
路径负责生成物, 根只管仓库级条目。种子补 .gitignore 使新子游戏继承。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-27 21:15:26 +08:00
joywayer and Claude 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
joywayer and Claude 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
joywayer and Claude 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
joywayer and Claude Opus 5
37421819ee
chore(nexus): 补入 assets/framework 的 .meta 文件
...
framework 下的 .ts 已入库但对应 .meta 一直未提交。Cocos 的 .meta 承载资源 UUID,
缺失会导致其它机器导入时重新生成 UUID, 进而打断引用关系, 必须入库。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-19 08:01:29 +08:00
joywayer and Claude Opus 5
0ba37c7212
docs(mcp): CLAUDE.md 与 cocos-mcp 技能只保留 MCP 自身给不了的信息
...
原文档写着"164 个工具"并复述了一份按前缀分的工具清单, 对应的是已删除的旧扩展,
照着写会调不到工具。
改为不再复述工具用法: cocos-mcp-server 连上后会自注入 5.5K 字符的完整说明
(CRITICAL RULES + intent→tool 速查表 + 批量操作), 16 个工具的 description 也
各带 action 枚举与示例, 仓库里再维护一份副本必然随扩展版本腐化。
文档只保留 MCP 给不了的部分——服务离线时它的自带说明也一并消失, 而那正是最需要
"去编辑器点 Start Server"和"不要转而手改序列化文件"的时刻:
- 前置条件、curl /health 探活、连不上时的排查顺序
- settings/mcp-server.json 的 autoStart:false, ECONNREFUSED 的常见成因
- 已知坑: cocos_asset.search 的 type 过滤失效; cocos_scene.hierarchy 的
includeComponents 失效; 编辑器里的 scene-2d 是 Creator 内置模板而非工程资产
(assets/ 下 0 个 .scene), 不必去仓库里找
技能里原本重复的"禁止手改 .scene/.prefab"规则改为引用 CLAUDE.md 单一来源, 依据
是仓库第二准则; 基线测试也表明未读该技能的 agent 仅凭 CLAUDE.md 即拒绝手改。
CLAUDE.md 里"动手前先读技能"改为条件式(正常操作不必读, 故障时才读), 此前该指令
与技能的排障定位冲突, 实测中不同 agent 对它的解读并不一致。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-19 08:01:23 +08:00
joywayer and Claude Opus 5
42bc0722b8
chore(mcp): 换用 cocos-mcp-server 扩展, .mcp.json 改 HTTP 直连
...
旧扩展 @iflow-mcp/harady-cocos-creator-mcp(164 个细粒度工具 + stdio-bridge
转发)整个删除, 换成 cocos-mcp-server v1.7.9(16 个聚合工具, 靠 action 分派)。
新扩展自身起 streamable-http 服务, 不再需要 stdio 桥, 故 .mcp.json 从
node + stdio-bridge.js 改为 { type: "http", url: "http://127.0.0.1:3000/mcp " }。
原配置指向的 client/stdio-bridge.js 已随旧扩展删除, MCP 因此加载失败。
服务器名保留 cocos-creator-mcp(而非 INSTALL.md 建议的 cocos-creator), 以免
打断 CLAUDE.md、cocos-mcp 技能与 settings.local.json 里的
mcp__cocos-creator-mcp__* 允许规则。
gitignore: 新扩展是商业付费产品(vberai), 非 npm 可重装, dist/sidecar/static
共约 16M 发行产物+加密载荷+平台二进制不入库; 顺带忽略 Claude Code 个人本地
配置与编辑器运行时端口文件。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-19 08:01:07 +08:00
joywayer and Claude Opus 4.8
4b4e2261b4
feat(framework): platform PlayerStore(=C_Player) applyLogin
...
Implement PlayerStore wrapping signal<PlayerState> for player account data.
Adds applyLogin(raw) to fill state from login response A group, with:
- Mandatory fields get default 0/'' if missing (never undefined)
- Optional fields (openid/unionid/province/city) only set if present
- Immutable updates via spread operator
- Notifies subscribers on state change
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 22:06:06 +08:00
joywayer and Claude Opus 4.8
7659e1fac5
feat(framework): platform State 类型(登录驱动子集) + 只读视图接口
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 21:39:39 +08:00
joywayer and Claude Opus 4.8
854d72a420
feat(framework): core 响应式 signal 基元(自研薄封装)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 21:32:03 +08:00
joywayer and Claude 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
joywayer and Claude Opus 4.8
241c9d447a
docs(spec): platform 响应式 Store 第一切片设计
...
自研 signal 基元 + 三个 Store(Player/App/Room 登录驱动子集) + PlatformSession 登录接入 + 只读视图。取向A(每Store一状态signal)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 21:02:39 +08:00
joywayer and Claude Opus 4.8
ae150affba
docs(protocol): 04 回填 player_login 真机联调实测(含 agentname/agentmode/gameversion)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 20:38:10 +08:00
joywayer and Claude Opus 4.8
883335f656
fix(framework): kick_server 终止不重连(对齐真实客户端)
...
收到 kick_server 时 emit kicked 并 stop(),不再 onClose→重连→重踢空转。
kick 处理移出登录门控,登录态内外一致。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 20:37:16 +08:00
joywayer and Claude Opus 4.8
ad661707ec
fix(framework): player_login.version 改为数字 versionCode(联调登录成功)
...
真机联调发现:协议 version 字段=数字 versionCode(源码 8 处 data.version=GameData.versionCode),
框架原发字符串 '1.1' 被服务器版本校验拒绝(kick_server 检查到新版本)。改为数字后登录成功
(state:0 playerid:430511)。
- ChannelIdentity/LoginRequestData.version: string→number,去掉冗余 versionCode 与未发送的 '1.1' 串
- query-string version 解析为数字;测试 fixture 同步
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 20:33:53 +08:00
joywayer and Claude Opus 4.8
fee5c8b0a0
chore(framework): 真机联调脚本 login-live.ts(复用框架+ws transport)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 20:25:36 +08:00
joywayer and Claude Opus 4.8
96c6c7c914
fix(framework): decodeFrame 改单层(服务器协议非双层)
...
真机联调发现:服务器实发单层 {app,route,rpc,data};旧客户端的'外层 data'是浏览器
MessageEvent(00_minhttp.js:266 ws.onmessage=config.onmessage),非协议层。框架传输层
已取 ev.data,decodeFrame 不应再剥一层。修正后 kick_server 等业务包能正确解析。
- decodeFrame 单层化 + 测试改单层帧
- 更正 docs/protocol/01 §3.2(双层→单层,附 MessageEvent 依据)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 20:25:36 +08:00
joywayer and Claude Opus 4.8
5132fddc4e
feat(framework): config 调试 serverOverride(全链路+游戏服连本地)
...
- DebugProfile 加 serverOverride:debug 抓远程配置走全链路后把连接地址覆盖为此
- staging profile 加 serverOverride=ws://127.0.0.1:3088(联调本地测试服)
- release 一律忽略 serverOverride,用远程解析结果
- 同步指南
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 20:08:59 +08:00
joywayer and Claude Opus 4.8
d461578d6e
feat(framework): config 调试登录账号进 profile(DebugAccount)
...
- DebugProfile 加 account?: DebugAccount(openid 等登录字段,仅 debug 模式生效)
- resolveBootstrap 结果加 account:debug 取 profile.account,release 恒 undefined
- staging profile 留占位 account 待填真值;接入处 setIdentity 合并 identity+account
- 同步指南
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 19:57:41 +08:00
joywayer and Claude Opus 4.8
51a4ee57ac
refactor(framework): 移除 resolveBootstrap 下游兜底,立第二准则
...
- CLAUDE.md 新增「第二准则:数据源权威、唯一,下游不兜底」
- bootstrap 删除 fallbackServers 选项与 ?? DEFAULT_GAMESERVER 猜默认
- 无 server/gameserver、远程失败、解析不出地址 → 一律抛 ConfigFetchError 显式暴露
- 同步 guide + 两篇 spec(删 fallback/降级措辞)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 18:59:15 +08:00
joywayer and Claude Opus 4.8
39bb964a49
chore(framework): 填入真实渠道身份默认值与测试配置服地址
...
- BUILD_IDENTITY 的 agentid/channelid/gameid 改为真实渠道身份
- STAGING_GAMESERVER 改为真实测试配置服地址
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 18:43:50 +08:00
joywayer and Claude Opus 4.8
c8bbae9d88
docs(guide): 配置与调试指南补充 debug/release 一键模式
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 18:21:19 +08:00
joywayer and Claude Opus 4.8
5ab4a0a4b6
feat(framework): net NetClient 可选 debug 收发包日志
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 18:16:36 +08:00
joywayer and Claude Opus 4.8
2c2e487d8f
feat(framework): config resolveBootstrap 接入 mode + release 锁死 URL 覆盖
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 18:13:15 +08:00
joywayer and Claude Opus 4.8
8cbc488e0c
feat(framework): config 运行模式解析 resolveRuntimeMode(自动+手动覆盖)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 18:10:42 +08:00
joywayer and Claude Opus 4.8
ca3babeeb2
docs(plan): debug/release 一键运行模式实施计划
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 17:59:00 +08:00
joywayer and Claude Opus 4.8
6bfabffcfc
docs(spec): debug/release 一键运行模式设计(runtime-mode)
...
自动跟随 Cocos DEBUG + 可选手动覆盖;release 强制 prod 并完全锁死 URL 覆盖;isDebugger 接到 NetClient 收发包日志。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 17:51:21 +08:00
joywayer and Claude Opus 4.8
e4d16bf412
docs(framework): 澄清 SERVER_KEYS 有意只取 *_server_tcp(WebSocket-only)
...
最终审查指出 spec 文本列了 *_server_http 而代码注释称逐字一致,易致误解。补注说明本期 WebSocket-only、HTTP 传输模式(netType==1)超范围。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:52:38 +08:00
joywayer and Claude Opus 4.8
632cef35e5
feat(framework): config 生产用 HttpConfigFetcher(全局 fetch)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:47:15 +08:00
joywayer and Claude Opus 4.8
c87d204f28
feat(framework): config 启动编排 resolveBootstrap(身份合并+服务器决策+降级)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:44:43 +08:00
joywayer and Claude Opus 4.8
6333ddc8e4
feat(framework): config 远程配置分层取参 getParam + 服务器解析 resolveServers
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:41:28 +08:00
joywayer and Claude Opus 4.8
231e9ee31c
feat(framework): config 调试 profiles + ?profile= 切换
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:38:44 +08:00
joywayer and Claude Opus 4.8
119a457c59
feat(framework): config 原生同步身份来源(window.settings/app_* 逐字对齐)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:36:13 +08:00
joywayer and Claude Opus 4.8
510c074627
feat(framework): config H5 URL query 身份来源
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:33:58 +08:00
joywayer and Claude Opus 4.8
2f97150a6f
feat(framework): config 身份类型 + 纯合并 resolveIdentity + 构建期默认
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:30:49 +08:00
joywayer and Claude Opus 4.8
f66771b6b1
docs(plan): 配置/渠道子系统 framework/config 实施计划
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:23:19 +08:00
joywayer and Claude Opus 4.8
bc16d43a91
docs(spec): 配置/渠道子系统设计(framework/config)
...
身份解析(含原生同步读取)+调试 profiles+URL 覆盖+远程配置 getParam+连接地址解析+启动编排;外部契约逐字保留,内部命名现代化。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 16:09:11 +08:00
joywayer and Claude Opus 4.8
9842c065c8
feat(framework): Cocos/浏览器 WebSocket Transport adapter
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 14:28:13 +08:00
joywayer and Claude Opus 4.8
dbc5d19e61
test(framework): login 全流程集成测试(over FakeTransport)
...
集成测试在断言处调用 parseLoginResponse(any login 数据),规避 TS6 对闭包内赋值变量经 assert.ok 收窄为 never 的 CFA 行为;断言与覆盖范围不变。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 14:27:56 +08:00
joywayer and Claude Opus 4.8
0ada512464
feat(framework): protocol routes 常量 + login 请求构造/响应解析
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 14:25:29 +08:00
joywayer and Claude Opus 4.8
540cf286a5
feat(framework): net-client 编排(login流程/门控/TcpID/超时重连/服务器切换/事件)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 14:24:57 +08:00
joywayer and Claude Opus 4.8
79d0071645
feat(framework): net 候选服务器轮询策略
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 14:23:41 +08:00
joywayer and Claude Opus 4.8
08d41cdec1
feat(framework): net 收包超时看门狗(注入 Clock 可测)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 14:23:13 +08:00