TM/HM numbers are now baked into the snapshot (build-snapshot resolves
every machine id -> "TM25" etc. in a post-pass, ~2400 lookups), so the
Search moves list no longer lazily fetches /machine per row — it shows
numbers synchronously and can sort by them.
- New "TM / HM number" sort option, shown only while a machine filter is
on, and dropped back to A–Z when neither is.
- "TMs only" now means strictly TMs; added a parallel "HMs only". Either
or both. In "All games" mode a move can be a TM in one game and an HM
in another, so machineFor picks the newest entry of a requested kind
rather than just the newest entry (fixes "HMs only" showing 0).
Removes the getMachine/mapLimit lazy-resolution path (and its now-unused
stale-token guard) from SearchView.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Ve7HLspzeG2xDPtJQ8vmu