Skip to content

fix(tracker): 首次洗牌不暂停场上暗身份#52

Merged
llsccm merged 1 commit into
devfrom
codex/fix-first-shuffle-guard
Jul 22, 2026
Merged

fix(tracker): 首次洗牌不暂停场上暗身份#52
llsccm merged 1 commit into
devfrom
codex/fix-first-shuffle-guard

Conversation

@llsccm

@llsccm llsccm commented Jul 22, 2026

Copy link
Copy Markdown
Owner

变更内容

  • Room.shufflePile() 增加弃牌堆非空门槛,首次空弃牌堆洗牌不执行身份暂停分类
  • 保留真实弃牌回收时对 UNKNOWN、未定位身份和 APPEARED 暗身份的暂停追踪
  • 调整既有洗牌用例,使暂停追踪场景明确先构造弃牌堆回收
  • 新增首次空弃牌堆回归,断言暗身份保持原位置和 UNKNOWN 状态

验证

  • pnpm test:tracker(33 个测试文件,260 项通过)
  • pnpm exec vitest run tests/tracker/anonymousPileSpike.test.ts tests/tracker/pileDisplayOrder.test.ts(33 项通过)
  • pnpm typecheck:tracker
  • pnpm lint
  • pnpm exec prettier --check src/tracker/Room.ts tests/tracker/anonymousPileSpike.test.ts tests/tracker/pileDisplayOrder.test.ts
  • pnpm build
  • pnpm build:prod
  • git diff --check

风险与备注

Summary by CodeRabbit

  • Bug 修复
    • 修复弃牌堆为空或缺少牌堆数量信息时的洗牌处理。
    • 洗牌后可正确清空并重建弃牌堆,避免流程进入不必要的暂停追踪状态。
    • 改善匿名牌堆首次洗牌时的暗身份牌状态与展示结果。
    • 优化牌堆回收和重填场景下的牌张状态判断,减少错误警告。

空弃牌堆的首次洗牌不再执行协议牌堆身份分类;补充首次洗牌回归,并让暂停追踪相关用例明确先构造弃牌堆回收。
@coderabbitai

coderabbitai Bot commented Jul 22, 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: 328f7332-9c1f-4d32-936d-9cf2f643e20d

📥 Commits

Reviewing files that changed from the base of the PR and between 1cbb4db and bc842e7.

📒 Files selected for processing (3)
  • src/tracker/Room.ts
  • tests/tracker/anonymousPileSpike.test.ts
  • tests/tracker/pileDisplayOrder.test.ts

📝 Walkthrough

Walkthrough

本次修改扩展 Room.shufflePile 的早期处理条件,使空弃牌堆直接进入重置与重建流程,并补充匿名牌堆、牌堆显示顺序及暗身份状态测试。

Changes

弃牌堆洗牌处理

Layer / File(s) Summary
空弃牌堆的洗牌重置路径
src/tracker/Room.ts
shufflePile 新增弃牌堆实体检查;弃牌堆为空或协议未提供牌堆数量时,重置相关牌、重建牌堆并调用 resolveConstraints() 后返回。
匿名牌堆弃牌处理测试
tests/tracker/anonymousPileSpike.test.ts
洗牌前将牌移入弃牌区,并验证洗牌后 discard.cards 为空。
牌堆显示与暗身份状态测试
tests/tracker/pileDisplayOrder.test.ts
补充弃牌回收前置状态,并验证首次空弃牌堆洗牌不会暂停场上暗身份,同时保持实体、候选区和卡牌实例状态断言。

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • llsccm/tracker#51:同样调整 Room.shufflePile 的匿名牌堆洗牌、重置和暂停追踪流程,并更新匿名牌堆测试。
  • llsccm/tracker#45:同样涉及 shufflePile 中占位、弃牌堆及暂停追踪分支的触发条件。
  • llsccm/tracker#4:同样修改 Room.shufflePile 中协议牌堆数量缺失和弃牌堆处理相关逻辑。
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 标题准确概括了本次修复的核心:首次洗牌时不再暂停场上暗身份。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
✨ 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 codex/fix-first-shuffle-guard

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.

@llsccm
llsccm merged commit 772f139 into dev Jul 22, 2026
4 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