Skip to content

更新项目许可证、文档及记牌器与界面相关功能#35

Merged
llsccm merged 6 commits into
mainfrom
dev
Jul 17, 2026
Merged

更新项目许可证、文档及记牌器与界面相关功能#35
llsccm merged 6 commits into
mainfrom
dev

Conversation

@llsccm

@llsccm llsccm commented Jul 17, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • 新功能
    • 新增“吉占”与相关“言息”技能处理,完善牌局效果展示。
    • 统一花色符号显示,优化手牌与牌堆的字体、颜色和视觉效果。
  • 改进
    • 提升隐藏手牌、玩家来源及牌堆位置判断的准确性,减少牌面状态异常。
    • 优化游戏状态切换与录像场景处理。
  • 文档与许可
    • 补充测试、开发规范和生命周期说明。
    • 项目许可证更新为 GPL-3.0-or-later,并完善版权与来源声明。

llsccm added 5 commits July 16, 2026 19:53
* refactor: 更清晰的重置方式

* docs: update

* test: 使用 it.each 简化

* fix: review feedback
* feat: 修改字体

* fix: suit-glyph 添加字体样式
* fix: 优先用确定来源暗牌做身份交换并修正牌顶候选

* fix: 修正重叠暗牌覆盖与标记来源匹配

* fix: 修正覆盖候选合并与组合标签迁移
@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 0d7da2e3-e407-460f-9fa0-deb483a5102b

📥 Commits

Reviewing files that changed from the base of the PR and between 22738a5 and 5c9d9d9.

📒 Files selected for processing (7)
  • docs/agents/card_tracker.md
  • docs/agents/environment.md
  • docs/agents/testing.md
  • src/tracker/gameState.ts
  • src/tracker/roomMovement/sources.ts
  • tests/tracker/hiddenMarkCandidates.test.ts
  • tests/tracker/room.import.test.ts
🚧 Files skipped from review as they are similar to previous changes (5)
  • tests/tracker/room.import.test.ts
  • tests/tracker/hiddenMarkCandidates.test.ts
  • docs/agents/testing.md
  • src/tracker/roomMovement/sources.ts
  • src/tracker/gameState.ts

📝 Walkthrough

Walkthrough

本次变更将项目许可证切换为 GPL-3.0-or-later,扩展开发与测试文档,重构记牌器生命周期钩子与暗牌推断逻辑,调整技能处理、花色渲染及界面样式,并补充相关回归测试。

Changes

项目治理与开发文档

Layer / File(s) Summary
许可证与发布元数据
.gitignore, LICENSE, NOTICE, README.md, package.json, vite.config.js
项目授权及用户脚本许可证元数据改为 GPL-3.0-or-later,并新增 NOTICE 与 /plans 忽略规则。
贡献与代码规范
AGENTS.md, CONTRIBUTING.md, docs/agents/conventions.md, docs/agents/commands.md
新增 Style Guide、Shell 执行约束、测试入口、Conventional Commits 和 PR 标题规范。
Agent 文档与测试策略
docs/agents/*
重写生命周期、项目概览、记牌器边界、Serena 记忆和测试策略文档,并禁止文档绑定源码行号。

记牌器与界面行为

Layer / File(s) Summary
GameState 生命周期钩子
src/tracker/gameState.ts, src/tracker/Game.ts, src/handler/StartGame.js, tests/tracker/room.import.test.ts
GameState 新增生命周期与记录钩子,BrowserGameState 改用钩子实现运行时行为,开局注册流程移除 Game.size 更新。
暗牌覆盖与身份迁移
src/tracker/roomConstraints.ts, src/tracker/Room.ts, src/tracker/roomMovement*, tests/tracker/handCountObservation.test.ts, tests/tracker/hiddenMarkCandidates.test.ts
新增跨座位暗牌覆盖匹配、匿名手牌对账、未知来源候选筛选和模糊身份迁移处理。
技能处理与花色渲染
src/handler/skills/*, src/handler/spellEffects.js, src/utils/index.js, src/logic.js, src/draw.js, html/iframe.html
新增技能处理函数,调整技能映射,迁移 DOM 更新工具,移除严教分配交互,并更新花色字形与卡牌样式。
记牌器回归测试
tests/tracker/*
补充暗牌覆盖、牌堆顺序、公共候选、生命周期、脏渲染、技能注册和花色字形测试,并统一测试辅助函数与断言。

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

  • llsccm/tracker#1:修改相同的 Game.tsgameState.ts 生命周期和记录处理链路。
  • llsccm/tracker#20:涉及相同的 roomMovement 与未知玩家来源占位交换逻辑。
  • llsccm/tracker#34:涉及相同的暗牌覆盖、来源实体交换和牌堆顶候选处理路径。
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.12% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title Check ✅ Passed Title check skipped as CodeRabbit has written the PR title.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request transitions the project's license to GPL-3.0-or-later, updates extensive documentation to align with the codebase structure, and refactors GameState to separate pure game state logic from browser-specific side effects. It also enhances card tracking and constraint resolution to handle ambiguous hidden hand card coverage and prevent premature convergence of random transfers, while modularizing skill handlers into separate files. Feedback on these changes highlights a critical missing import of createSubZoneCandidateKey in src/tracker/roomConstraints.ts that will cause a runtime error, and suggests completely removing commented-out code blocks in src/draw.js to maintain code cleanliness.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread src/tracker/roomConstraints.ts
Comment thread src/draw.js
@coderabbitai coderabbitai Bot changed the title @pr 更新项目许可证、文档及记牌器与界面相关功能 Jul 17, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
src/handler/skills/JiZhan.js (1)

23-26: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

替换 HTML 字符串中的制表符以确保可靠的间距渲染。

在 HTML 的默认渲染模式下,连续的空白字符和制表符(\t)会被折叠为一个普通空格。如果 .textRes 没有设置 white-space: prepre-wrap 等样式,使用 \t 可能会导致预期的间距丢失。建议使用 HTML 实体   来维持跨浏览器的正确渲染。

💡 建议的修改
-    updateResult(
-      `<span class="textRes">【吉占】猜${g > l ? '大' : '小'}</span><br><span class="textRes">跟${cardNum}比,${g}张大\t\t${l}张小\t\t${e}平</span>`
-    )
+    updateResult(
+      `<span class="textRes">【吉占】猜${g > l ? '大' : '小'}</span><br><span class="textRes">跟${cardNum}比,${g}张大&nbsp;&nbsp;&nbsp;&nbsp;${l}张小&nbsp;&nbsp;&nbsp;&nbsp;${e}平</span>`
+    )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/handler/skills/JiZhan.js` around lines 23 - 26, Update the HTML string
passed to updateResult in the surrounding JiZhan handler to replace the tab
characters between the “大”, “小”, and “平” counts with &nbsp; entities, preserving
the intended spacing without relying on .textRes whitespace styling.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/agents/environment.md`:
- Line 26: 修复损坏的 testing.md 链接:在 docs/agents/environment.md 第26行和
docs/agents/card_tracker.md 第192行,将链接文本统一改为
[testing.md](testing.md),移除制表符并补上缺失的首字母 t。

In `@docs/agents/testing.md`:
- Around line 92-93: 统一 docs/agents/testing.md 中 tracker 变更的最低验证要求:对
src/tracker/ 或 tests/tracker/ 的修改保留必须运行 pnpm test:tracker,但仅在涉及 TS
类型契约、tsconfig、ESLint TypeScript 覆盖或 tracker 类型迁移时要求 pnpm
typecheck:tracker;需要确认全仓入口时再运行 pnpm typecheck,并确保与 AGENTS.md 和
docs/agents/commands.md 的条件一致。

In `@src/tracker/gameState.ts`:
- Around line 195-200: 更新 GameState 的 init() 初始化流程,在重置会话和房间状态时调用
clearDomContainers(),确保新牌局清空上一局遗留的 DomContainerItem。补充针对 init()
的回归断言,验证别名容器也会被清理,避免后续 clear() 处理过期元素。

In `@src/tracker/roomMovement/sources.ts`:
- Around line 84-98: 调整当前玩家来源候选筛选逻辑:不要仅因 card.subZone 或 card.spellID 为 null
而排除候选;只要完整位置投影匹配,或存在匹配的 PlayerLocationCandidate,都应保留为来源候选。标记区域的技能兼容性检查应读取候选自身的
spellID;将精确投影匹配仅用于排序,不用于过滤,避免生成 id=0 回退实体。

---

Nitpick comments:
In `@src/handler/skills/JiZhan.js`:
- Around line 23-26: Update the HTML string passed to updateResult in the
surrounding JiZhan handler to replace the tab characters between the “大”, “小”,
and “平” counts with &nbsp; entities, preserving the intended spacing without
relying on .textRes whitespace styling.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 45c23256-a58f-4f55-98f4-3771ceeb4def

📥 Commits

Reviewing files that changed from the base of the PR and between 3f4f356 and 22738a5.

📒 Files selected for processing (42)
  • .gitignore
  • AGENTS.md
  • CONTRIBUTING.md
  • LICENSE
  • NOTICE
  • README.md
  • docs/agents/card_tracker.md
  • docs/agents/commands.md
  • docs/agents/conventions.md
  • docs/agents/environment.md
  • docs/agents/lifecycle.md
  • docs/agents/overview.md
  • docs/agents/serena.md
  • docs/agents/testing.md
  • html/iframe.html
  • package.json
  • src/draw.js
  • src/handler/StartGame.js
  • src/handler/skills/JiZhan.js
  • src/handler/skills/YanXi.js
  • src/handler/spellEffects.js
  • src/logic.js
  • src/tracker/Game.ts
  • src/tracker/Room.ts
  • src/tracker/candidate/publicCandidate.ts
  • src/tracker/gameState.ts
  • src/tracker/roomConstraints.ts
  • src/tracker/roomMovement.ts
  • src/tracker/roomMovement/sources.ts
  • src/utils/index.js
  • tests/tracker/ambiguousKnownIndexIncremental.test.ts
  • tests/tracker/gameFlowState.test.ts
  • tests/tracker/handCountObservation.test.ts
  • tests/tracker/hiddenMarkCandidates.test.ts
  • tests/tracker/pileDisplayOrder.test.ts
  • tests/tracker/publicCandidates.test.ts
  • tests/tracker/room.import.test.ts
  • tests/tracker/spellEffects.test.ts
  • tests/tracker/suitGlyph.test.ts
  • tests/tracker/trackerController.test.ts
  • tests/tracker/viewDirtyRender.test.ts
  • vite.config.js

Comment thread docs/agents/environment.md Outdated
Comment thread docs/agents/testing.md Outdated
Comment thread src/tracker/gameState.ts
Comment thread src/tracker/roomMovement/sources.ts Outdated
@llsccm
llsccm marked this pull request as ready for review July 17, 2026 14:38
@llsccm
llsccm merged commit fb9badc into main Jul 17, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant