Present public plans in physical attacker/defender order with exact force dials, played leader portraits and printed strength, readable used-card faces and direct inspectors. Keep Cheap Heroes, printed Worthless category, empty slots and late rescue defense distinct. Preserve Banker, native bonus, KH, Stone Burner, Poison Tooth and Diplomat details rather than treating printed values as scores. Mount one shared display after the main grid so every viewer retains access while another seat owns a post-reveal choice. Keyboard links focus the display and pending controls. Render nothing before public revelation, select exact used identities from the authorized projection, and consume no private insight or hands. No game rule, saved field, endpoint, AI strategy or release gate changes. Five new cases cover genuine sealed/revealed actions, stable order, used-card privacy, JSON immutability, fractional dials, hero/Worthless/late/empty slots and both seats during a real Diplomat decision. All28 related focused cases passed before final rule-link adapter changes; types, lint, all 5017 offline tests and production build pass on the final stable source. First broad run caught plain rules-page anchors; next/link and test aliases correct this. Independent privacy/layout review and final follow-up found no material issues. No API/auth/persistence changes; HTTP tests and full game samples not repeated. Browser QA creates a fresh human Emperor/Easy Harkonnen lobby with genuine setup, then explicitly stages a conserved battle. Normal engine actions choose battle and seal the opponent plan; human browser action seals dial2, Captain Aramsham, Slip Tip and Shield. Public display absent beforehand and shows correct both plans afterward. Leader/opponent-card inspection, Escape/focus return, internal help, keyboard section links and refresh preserve the pending decision. At390x844, client/scrollWidth375, stacked panels299px, rules16px and controls44px; normal viewport restores1265px and two560.5px plans without horizontal overflow. Screenshot capture timed out; full visual/screen-reader acceptance remains open. All 1579 opening games, 3347 saved seats and auxiliary rows remain identical. One isolated QA game adds one seat and one entry receipt. Its room remains unchanged after human seal through inspection/help/refresh, and its saved seat remains unchanged. SQLite integrity and foreign keys pass. No server restart, migration, reset, recurring automation or calibration. Record Basic Moritani plus the full Leader Skills deck as the next concrete integration target, requiring coordinated profile guards and real Terror/death/ revival continuations. Existing rulings and mode gates stay explicit; the later Tleilaxu revival-offer ordering issue remains a gated integration dependency. Private evidence: 20260921-revealed-plans. Verified source tree: 8d5496cdea0076aa1cdab4590e95fcaa677c9d2d8513190c2ce9ac6c90bb9196
65 lines
3.7 KiB
Markdown
65 lines
3.7 KiB
Markdown
# Revealed battle components
|
|
|
|
Connected presentation prototype, 21 September 2026. Existing server plan
|
|
revelation and battle rules remain authoritative. No rule, action, AI strategy,
|
|
saved field, endpoint or mode/publication gate changes.
|
|
|
|
## Shared table presentation
|
|
|
|
Once both plans are public, a single shared area displays the physical attacker
|
|
and defender in that order, regardless of which player sealed first. Each plan
|
|
has its exact force dial, the played leader portrait and printed strength, and
|
|
readable weapon and original-defense faces with their existing guidance. A Cheap
|
|
Hero appears as a card in the leader slot. Empty slots say None; a late defense
|
|
has a separate Added after reveal label. Printed category remains distinct from
|
|
its chosen battle slot, including a Worthless card in the weapon slot.
|
|
|
|
One-click inspectors enlarge the actual visible cards and leaders. Leader IDs
|
|
now reach the portrait/inspector rather than dropping the bundled identity art.
|
|
Kwisatz Haderach inspection remains public inclusion only. Banker commitment,
|
|
CHOAM support, native Homeworld bonus, Diplomat copy/decline, Poison Tooth and
|
|
Stone Burner details keep their existing separate descriptions. The dial and
|
|
printed leader strength are not presented as a calculated winning score.
|
|
|
|
`GameTable` mounts this display once after the main grid. It stays available to
|
|
all viewers while another player owns a post-reveal decision, unlike the earlier
|
|
copies nested under specific decision branches. Compare revealed battle plans
|
|
and Return to battle decisions link to focusable sections. No inspector or
|
|
navigation link submits a game action. This keeps the larger faces separate from
|
|
the pending controls while preserving their connection.
|
|
|
|
The layout fits two plan panels when space permits and stacks on smaller screens.
|
|
Cards wrap within each plan; readable rules use 16px text and inspection controls
|
|
retain 44px minimum height. No new animation, timing delay or confirmation is
|
|
introduced. Full visual/component and screen-reader acceptance remains open.
|
|
|
|
## Privacy and continuation
|
|
|
|
The renderer returns nothing unless `battle.revealed` is true. It never consumes
|
|
Atreides private full-plan insight or any player's hand. Each visible face is
|
|
selected by an exact used ID from the already projected `battle.cards`; native
|
|
leader identity comes from the authorized leader catalog. The small pieces
|
|
component receives only those selected public identities and the dial.
|
|
|
|
The original defense remains separate from a late defense or a Diplomat copy.
|
|
Refresh reconstructs the same display from the saved public plans. Reordering
|
|
the presentation does not reorder saved plans, reveal Traitors, change payments,
|
|
execute a card or submit a battle decision.
|
|
|
|
## Verification
|
|
|
|
Five focused cases cover real sealed/revealed transitions, explicit plan order,
|
|
used versus unplayed card privacy, immutable JSON rendering, fractional dials,
|
|
Cheap Hero, Worthless, empty/late slots and both viewers during a real Diplomat
|
|
choice. Existing Kwisatz, Banker and Diplomat regressions exercise retained
|
|
special-effect metadata. These are bounded rendering checks, not full rules-mode
|
|
certification or proof that every battle combination works.
|
|
|
|
Private browser evidence uses a new Emperor/Harkonnen QA lobby with genuine
|
|
Basic setup, followed by an explicitly staged battle position conserving card
|
|
and force inventory. Choosing the battle, the opponent's saved plan and the
|
|
human's sealing action use normal engine actions; the intervening game was not
|
|
played. Browser inspection, final check/build results, original saved-game
|
|
preservation and Git delivery are recorded under `20260921-revealed-plans` outside
|
|
the checkout. The commit message records actual outcomes and limitations.
|