Add private-hand search, category filters and display sorting

Wrap existing physical hand cards with local name search, printed-category
filters and saved/name/category display order. Preserve card IDs, actions and
inspectors, keep required decisions outside filtering, and recompute results
from current owned cards. Provide count, clear filters, keyboard scrolling,
separate empty/no-match states and internal guidance. Filters reset on leaving
the hand tab, changing seats or refreshing; saved order is never modified.
Correct the stale Harass availability note to reflect connected allocation.

Six focused tests cover normalized literal search, duplicate physical IDs,
canonical expansion categories, stable immutable sorting, current holdings,
JSON restoration, full-table per-seat privacy and empty setup messaging.
Independent review found no material issue. Types, lint, all 4996 offline
tests and production build pass on stable source. No HTTP, auth, schema or
persistence implementation changed, so HTTP tests were not repeated.

Browser QA used a new two-player Basic Harkonnen/Easy Atreides game created
through genuine setup. Search/category/reset, named inspector and all three
sort orders worked. An active no-match filter updated from 0 of 2 to 0 of 4
when a real auction purchase and Harkonnen bonus arrived. Leaving the hand tab
and refreshing restored all four cards in their original saved order while
the second auction remained at a human decision. Enter in search performed
no game action. The internal guide worked by keyboard. At 390px, controls
were 44px high with 16px text and 14px labels, form width/scroll width 339px;
the focused overflowing card row responded to ArrowRight. Normal viewport
restored. Screenshot capture timed out; full visual/screen-reader acceptance
and complete expansion/card-effect combinations remain open.

All 1538 opening rooms, 3258 seats and auxiliary rows
remain unchanged. SQLite integrity and foreign keys pass. Only one isolated
QA game, its human seat and entry receipt were added; the AI remains in game state. Healthy server reused without restart,
migration, reset or automation. No AI strategy or mode/publication gate changed.

Private evidence: 20260921-hand-browsing.
Verified source tree: 39dce28efa52dd66baf019baaf8610e6795601b3b569ac4ac0b6f405bffc1d96
This commit is contained in:
Quintine committed 2026-09-21 12:00:34 +10:00
1 parent 14a7800fe9
commit e3cfd82540
13 files changed
+328 -27

No files matched your search

+14 -13
View File
@@ -6,20 +6,21 @@ gated.** Prototypes do not open completion or publication gates.
## Current checkpoint and work
Latest delivered checkpoint: `537da4a`, [public force inspection](FORCE_INSPECTION.md).
Types, lint, **4,984 offline tests** and production build passed. All 1,499 rooms,
3,171 seats and auxiliary rows stayed unchanged. Browser checks covered live
counts, twelve faction faces, keyboard inspection, internal guidance, refresh and
390px layout. Screenshot capture remained unavailable; full visual acceptance is
open. The healthy server was reused. Prior checkpoints include `2b071a4` for
Nexus offers, `91dcca4` for bribes and `7814f74` for table discussion.
Latest delivered checkpoint: `14a7800`, [Treachery and Spice draw counts](DRAW_PILES.md).
Types, lint, **4,990 offline tests**, production build and **49 HTTP tests** passed.
All 1,499 opening rooms, 3,171 seats and auxiliary rows stayed unchanged; isolated
HTTP tests brought the baseline to 1,538 rooms and 3,258 seats. Browser counts,
internal guide, keyboard navigation, refresh and 390px layout passed. Screenshot
capture remained unavailable; full visual acceptance is open. The healthy server
was reused. Prior checkpoints include `537da4a` for force inspection, `2b071a4`
for Nexus offers and `91dcca4` for bribes.
Current work: [Treachery and Spice draw counts](DRAW_PILES.md) connect public
physical pile sizes above the board, separate from auction and private holdings.
Setup, actual draw/refill, skipped-worm return, Thumper exclusion, privacy and
JSON/rendering checks accompany source-bound independent review, browser and
preservation/Git evidence. No game action or AI strategy changes. The broader
game remains unfinished; continue independent card handling and player features.
Current work: [private-hand browsing](HAND_BROWSING.md) adds name search, printed
category filters and stable display sorting around existing card inspectors and
actions. Physical IDs and saved order remain intact; required choices stay
outside the filtered row. Focused selection/privacy/rendering checks accompany
independent review and private browser, preservation and Git evidence. No game
action or AI strategy changes. The broader game remains unfinished.
The separate Bureaucrat/Emperor gift question is pending.
The `8f7a62c` policy checkpoint removed usage checks/cutoffs and deferred AI
refinement until feature completion, followed by three adjacent 75% targets.