Commit Graph
22 Commits
Author SHA1 Message Date
joywayerandClaude Opus 4.8 96971f3072 文档红线细化:新增服务端请求合法性验证(§8)+悲观UI/输入-渲染解耦,收紧 shared 与常量准入门槛
- 服务端 04:新增「操作请求合法性验证(不可信客户端)」章节——五层验证栈
  (座位鉴权/阶段门/操作可用性/幂等去重/参数校验)、统一裁决网关默认拒绝、
  availableActions 兼任决策依据与准入白名单、出牌回合门防死代码;后续章节顺延重编号
- 前端 04/05:悲观 UI——点击只发请求包、对局状态表现收包后更新,收包处理器触发源无关,
  AI 托管/他人广播共用同一更新路径;响应/掷骰交互按钮隐藏为受控乐观清除例外
- shared 准入门槛(前后端 04/05 §9/§8):进 shared 的门槛是「前后端都真正用到且必须
  逐字一致」而非「它是玩法逻辑」;前端只展示+悲观UI ⇒ 计算类逻辑不进 shared,默认留服务端
- 硬编码常量准则(服务端 04 §10):魔法字符串默认常量化(单一来源);常量放 shared 亦按
  同一准入门槛判定,仅前后端都用到才进 shared/constants

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 04:12:27 +08:00
joywayerandClaude Opus 4.8 46f65de7ed 前端规范新增两条:常量化 id(含群组/Spine)+ 显隐走 showXxx/hideXxx
- 强化「常量集中、禁硬编码」(05 §4 / README 红线速查 / 05 §11 审查表):
  明确 UI 代码禁止任何硬编码 id/裸值,覆盖精灵/群组/图层/图片/声音/Spine
  等全部 id 与资源,一律用对应常量;补 Spine→Spine 动作配置映射。
- 新增「显隐走 showXxx/hideXxx 接口」(02 §3 范式第4条 / 05 §9 红线 /
  README 红线速查 / 05 §11 审查表):UI 组件及零件的精灵/群组显隐必须由组件
  暴露的 showXxx/hideXxx 控制,禁止别处直接用其精灵/群组 id 去 show/hide,
  否则绕过组件、状态分散、重连刷新不一致(与 UI 组件专职一脉相承)。
- 显隐条同进 README 红线速查(@import 常驻层);未改任何小节标题,
  链接/锚点审计通过。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 12:21:11 +08:00
joywayerandClaude Opus 4.8 b59a6f9ca5 前端规范新增两条:重连即重画(两场景)+ UI 组件专职
- 重连处理规范(04 §3.3 详解 / 05 §6 红线 / README 红线速查 / 05 §11 审查表):
  前端必须同时处理「断线重连」与「硬刷新·页面重载」两种恢复场景;本质是
  恢复数据 → 逐个调各 UI 组件 setXxx/refreshXxx 恢复数据与界面状态,复用
  同一条重画路径,绝不为重连单写一套渲染。
- UI 组件专职(05 §9 红线 / README 红线速查 / 05 §11 审查表):每个界面的
  数据与渲染只由其对应 UI 组件实现;别的模块要改/刷该界面一律调组件公开
  接口,禁止在别处重复实现重叠或类似的界面逻辑(否则多份状态源,重连/刷新
  必然不一致)。
- 两条同时进 client README 红线速查(@import 常驻层),使其每次会话在上下文。
- 未改任何小节标题;链接/锚点审计通过。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 21:52:39 +08:00
joywayerandClaude Opus 4.8 abc6281ec0 回迁工具:check-redlines 增量模式(--staged-diff)+ 存量扫描(--scan-all)+ setup 脚本
为「老项目回迁这套强制体系」补三件套,核心是不搞大爆炸清理:

- check-redlines.js:新增 --staged-diff(只查本次新增行,老代码存量违规不阻塞,
  新代码从此强制合规)与 --scan-all(可编辑正式代码 ES5 存量违规,只报不挡)。
- .githooks/pre-commit:按本地 git 配置 redlines.stagedmode 选严格(整文件)/增量(新增行)。
- setup-redlines.sh:一键激活+自检——迁移清单、node/权限、set core.hooksPath、
  存量扫描;`--diff` 一键切增量模式供老项目用。
- 已测:scan-all 报本仓库 0 存量违规;增量模式放行含老违规文件的干净新增行、
  拦新增违规行;严格模式整文件拦;setup 幂等且模板保持严格。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 13:19:27 +08:00
joywayerandClaude Opus 4.8 c67a9f9a26 CLAUDE.md:记录模板/克隆约定与 pre-commit 启用步骤(不依赖 memory)
本仓库是模板、会被克隆开新项目,Claude memory 不随克隆迁移,故持久约定
一律进仓库:

- 「这是一个什么仓库」补明:模板项目,长期知识进 docs/CLAUDE.md/.claude/
  .githooks,不依赖 memory。
- 「常用命令」补 pre-commit 启用步骤:core.hooksPath 是本地配置、不随克隆走,
  每个新克隆需一次性 `git config core.hooksPath .githooks`;并注明测试脚本
  (tests/、*.test.js、*.spec.js)允许现代语法、只有正式代码严格 ES5。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 12:24:00 +08:00
joywayerandClaude Opus 4.8 1d9bc049f1 硬约束:机械红线校验(PreToolUse 阻断 + git pre-commit)+ PostCompact 重注入
把可机器判定的硬红线从"投喂"升级为"硬拦截",并补上事后/工具无关/压缩三个缺口:

- .claude/hooks/check-redlines.js:校验「可编辑范围」(路径级,禁改平台/
  vendor/00_Surface/02_Input/server 平台,app.js 例外) 与「严格 ES5」(运行时
  .js 禁箭头/模板串/class/let/const,去注释与字符串后高信号匹配)。双模式:
  PreToolUse 读工具入参、命中即 deny 阻止写入;--staged 扫暂存文件、命中即
  非零退出阻断提交。
- settings.json:PreToolUse 增挂 check-redlines(在 remind 之前);新增
  PostCompact 钩子清空 .spec-injected,使压缩后下次编辑重新全量注入规范。
- .githooks/pre-commit + core.hooksPath=.githooks:提交边界硬闸,工具无关
  (Claude Code/别的编辑器/人手改都过)。
- 已校准:81 个现有运行时 js 零 ES5 误报(可编辑的 framework 25 文件全过),
  平台文件正确判为禁改;真违规(箭头/模板/const/class/改 vendor/改 class)全拦、
  合法 ES5 与注释里的 => 全放行;pre-commit 实测拦住 ES5 违规提交。

判断类规范(职责单一/数据权威设计/房间隔离)机器判不了,不在本层,仍靠投喂
+(可选)改后复审 agent。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 09:25:59 +08:00
joywayerandClaude Opus 4.8 d2ea3218b4 CLAUDE.md:删与 @import README 重复的架构速览与编号主题表
三份 README 已 @import 常驻上下文,其「一页纸模型 / 阅读顺序表」比
CLAUDE.md 的复述更全,故删冗余、只留指路:

- 删「架构速览」骨架四条(协议/单向依赖/三层路由/接入两模式)——
  内容在 README 一页纸与编号正文(如接入两模式在 client 06 正文+红线表)
- 删「编号↔主题」对照表——README 阅读顺序/导航表已列
- 可编辑范围表保留(最高价值 always-on 操作护栏),升为独立小节并加指路
- 仓库简介 / 常用命令 / 强制声明+@import / Git 自动提交许可等 CLAUDE 专属内容全留

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 09:02:30 +08:00
joywayerandClaude Opus 4.8 f2f618b965 降耗②·铺开:按试点尺度精简其余 12 篇编号正文
沿用 client 02 的保守尺度(规范条款/表格/关键代码/标题/链接全保留,
只压缩冗长代码示例、重复解说、演进历史、✅/❌ 成对代码块)逐篇精简
client 01/03/04/05/06、server 01/02/03/04、engineering 01/02/03。

- 12 篇合计 78,171 → 74,726 字符(省 3,445,~4.4%);红线密集篇(client
  05、server 04)极保守、几乎不动,符合"不丢规范优先于省字数"。
- 已核验:51 个跨文档链接目标全部存在、3 个锚点全部命中真实标题;
  server 03 §6、server 04 §8/§10/§11 等被引用小节标题逐字未改;README 未动。
- 每篇均随附规范保留清单逐条自查(并行子代理完成、逐份复核)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 08:52:16 +08:00
joywayerandClaude Opus 4.8 7b43d3ee44 降耗②·试点:精简 client 02(规范零丢失,−15%)
保守精简:31 条规范、三张参考表(API/ID范围/生命周期)、set-refresh
核心范式全部保留;只压缩冗长代码示例、把 ✅/❌ 代码块转文字、删两处
演进历史/范例背景注。10,631 → 8,967 字符(−1,664,~15%)。

作为其余 12 篇编号正文精简的尺度基准。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 08:44:59 +08:00
joywayerandClaude Opus 4.8 57b950cf31 降耗①:按区注入排除 README,去掉与 @import 的重复
README(红线速查/一页纸总则)已由 CLAUDE.md 用 @import 常驻每次会话,
按区注入里再读一遍是纯重复。readDirDocs 过滤掉 README.md,只注编号正文。

- server 首注 54,339 → 49,416 字符(省 ~4.9K)
- client 首注(含 client+engineering 两个 README)省 ~5.5K
- 注入文案标注「README 已随 CLAUDE.md 常驻,此处为编号正文」
- 零规范损失(内容未删,只是不重复注入);pipe-test 确认无 README 段、
  正文与跨区去重逻辑不变

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 08:35:15 +08:00
joywayerandClaude Opus 4.8 ec58d0e584 强制遵守升级:编辑区域时按会话注入完整规范全文(非仅红线)
从"红线常驻"升级为"全部规范时刻在场":真正开工某区域时,把该区域的
完整编号文档 + engineering 通则全文自动注入上下文,新会话同样触发。

- remind-docs.js:PreToolUse 时按路径判定区域(server / client),
  每会话「首次」编辑相关区域即全量注入对应 docs 目录所有 .md 全文;
  同会话再改同区域只给简短「已注入、继续遵守」提醒;跨区域共享的
  engineering 通则每会话只注一次。会话级去重用 .spec-injected 哨兵。
- settings.json:新增 SessionStart 钩子,每个新会话清空哨兵目录,
  保证新会话必然重新全量注入。
- .gitignore:忽略 .claude/.spec-injected/(会话级临时状态)。
- 已 pipe-test:首注 55K/44K 字符全文、二次简短、跨区去重、docs 免打扰、
  SessionStart 清空、settings 结构校验,全部通过。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 08:03:50 +08:00
joywayerandClaude Opus 4.8 a931143c1e 强制遵守三套开发文档:README @import + PreToolUse 提醒 hook
把"必须严格遵守 docs 三套文档"从软指令变成硬机制,同时消除 SSOT 重复:

- CLAUDE.md 用 @import 把三份 README(含各自红线速查/一页纸总则)
  常驻每次会话上下文,删掉手写的红线摘要——红线以 README 权威源为准,
  不再在 CLAUDE.md 另抄一份
- 新增 .claude/hooks/remind-docs.js:PreToolUse 钩子,编辑 client/**、
  server/** 前按路径把"必须遵守的对应编号文档 + 红线"注入上下文(非阻塞)
- 新增 .claude/settings.json 注册该 hook(matcher Edit|Write|MultiEdit);
  已 pipe-test 各路径分支 + sentinel 验证 hook 实际触发

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 07:57:25 +08:00
joywayerandClaude Opus 4.8 dfac1c637b CLAUDE.md:瘦身为入口+红线缓存,规范细节交还三套 README
按 SSOT 原则消除重复:CLAUDE.md 不再复述 docs 的规范,只承担
always-loaded 入口与极简红线缓存,详细说明的权威回归各 README。

- 删除架构分层详解(两棵目录树)、硬性规则逐条、测试纪律 7 条整段、
  Git 4 条整段
- 保留并压缩:仓库简介、构建命令、可编辑范围表、导航 + 编号↔主题表
- 新增「红线摘要」一段(6 条,每条标注权威见哪份 README)
- 测试/Git 收敛为指路 + 仅保留 README 里没有的 CLAUDE 专属操作许可
  (如"允许自动提交")

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 23:37:30 +08:00
joywayerandClaude Opus 4.8 6b00b80741 文档:跨目录链接的显示文字改为位置无关写法
链接目标本就是相对路径,但显示文字硬写了 docs/xxx/development-guide
这类绝对式路径名——目录一旦整体移动,文字即过时(链接仍可跳)。
将 10 处显示文字统一改为「篇号 + 篇名」等只依赖文档自身、不依赖
所在路径的写法(如 docs/server/development-guide/03 §6 →
03 §6「端到端收发全链路」),engineering README 自称路径同样收敛为
泛指的 engineering/。至此保持三套目录相对位置不变即无需改任何链接。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 23:25:43 +08:00
joywayerandClaude Opus 4.8 9fea8f5227 文档:移除对仓库外 docs/important 规范的悬空引用
docs/important/ 不在本仓库(属外部/私有平台规范),相关链接均为死链。
删除 client/02、client/03、server/README 三处引用,改写为「以平台的
资源管理接口规范为准」等不带路径的通用表述,保留规范性含义、消除断链。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 23:21:33 +08:00
joywayerandClaude Opus 4.8 182bb03d05 文档:补全 CLAUDE.md 文档索引并清理失效引用
- CLAUDE.md:编号 01→05/04 修正为 01→06/04,补三套文档优先级
  (硬红线以 dev-guide 为准)与「编号↔主题」对照表
- client README 阅读顺序表补上遗漏的 06 子游戏接入模式与Hooks外置
- 修正 README 及正文交叉链接的旧路径(server/docs、client/docs、
  docs/engineering → docs/{server,client,games/engineering},
  相对层级 ../../../ → ../../),共 7 处
- engineering 文档移除对已删除路径(docs/architecture、
  .github/copilot/skills)的引用,改为通用表述

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 23:15:39 +08:00
joywayer ae43bd528f 优化开发守则文档 2026-07-05 22:29:20 +08:00
joywayer 2e59742bc9 优化聊天气泡文档 2026-07-01 23:27:46 +08:00
joywayer 7e83dc27c9 优化聊天气泡 2026-07-01 23:17:57 +08:00
joywayerandClaude Opus 5 911cc9cc23 CLAUDE.md:补充测试纪律说明
明确测试代码可不守 ES5、正式代码禁止为测试服务、禁止为通过率降标准、
测试失败先裁根因、用例需覆盖正反面与边界。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-01 18:34:43 +08:00
joywayerandClaude Opus 5 7c24f9732d CLAUDE.md:补充 Git 提交纪律说明,允许及时自动提交
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-01 18:29:22 +08:00
joywayerandClaude Opus 5 594820d393 初始化仓库:友乐/gameabc 房卡游戏平台脚手架(client + server + docs)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-01 18:13:26 +08:00