Skip to content

feat(one_d4): restrict pin/skewer to moved piece; remove zugzwang/overloaded; group motif list by move#1105

Merged
aaylward merged 2 commits intomainfrom
feat/pin-skewer-moved-piece-constraint
Mar 3, 2026
Merged

feat(one_d4): restrict pin/skewer to moved piece; remove zugzwang/overloaded; group motif list by move#1105
aaylward merged 2 commits intomainfrom
feat/pin-skewer-moved-piece-constraint

Conversation

@aaylward
Copy link
Copy Markdown
Collaborator

@aaylward aaylward commented Mar 3, 2026

Summary

  • Pin & skewer detectors: now only fire when the attacker is the piece that just moved. Pre-existing pins/skewers that were already on the board before the current move no longer trigger. Destination square is parsed from the SAN lastMove via a new shared BoardUtils.destinationSquare() helper.
  • Remove ZugzwangDetector and OverloadedPieceDetector: deleted from source, BUILD, all test wiring, IndexerModule, UI color map, and query help text.
  • GameDetailPanel motif list grouped by move: instead of one row per occurrence (causing vertical explosion when multiple tactics fire on the same move), the list now shows one row per ply with all motif badges for that move inline. Each badge is individually clickable; prev/next motif nav still steps through individual occurrences.

Test plan

  • bazel test //domains/games/apis/one_d4/... — all 31 tests pass
  • npm test in 1d4_web — all 54 tests pass
  • npm run typecheck — clean
  • ./scripts/format-all — clean
  • bazel test //... — no failures

…gzwang/overloaded detectors

Pin and skewer detectors now only fire when the attacker (pinning/skewering piece)
is the piece that just moved, eliminating detections of pre-existing tactics that
the current move had nothing to do with. The destination square is parsed from the
SAN lastMove via a shared BoardUtils.destinationSquare() helper.

OverloadedPieceDetector and ZugzwangDetector removed from the build and all test
and production wiring. UI query help text and GameDetailPanel motif color map
updated to match.

GameDetailPanel motif list now groups occurrences by move (one row per ply) with
all motif badges for that move shown inline, avoiding vertical explosion when
multiple tactics occur on the same move.
@aaylward aaylward enabled auto-merge (squash) March 3, 2026 04:06
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages bot commented Mar 3, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
1d4-web 9aca2f7 Commit Preview URL

Branch Preview URL
Mar 03 2026, 04:13 AM

@aaylward aaylward merged commit 5df18c4 into main Mar 3, 2026
12 checks passed
@aaylward aaylward deleted the feat/pin-skewer-moved-piece-constraint branch March 3, 2026 04:18
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