Un-gate the form dex from the selected game

Second thought on the previous commit: gating "<Species> Dex" to games
that include the species contradicted the app's own model. Caught/seen
tracking here is unified across games by design, and there's no
game-dependent data on this tab (unlike Locations/Moves, which really do
vary by game and are rightly gated) — it's the same fixed set of
letters/patterns/decorations regardless of which game is selected. Hiding
it just because you switched games to browse something else would make
already-tracked progress look lost. Show it whenever the species has
cosmetic forms, full stop.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Ve7HLspzeG2xDPtJQ8vmu
This commit is contained in:
chris 2026-09-04 11:45:54 -04:00
parent 1ed8fcb709
commit 1adc06d11f

View File

@ -427,11 +427,13 @@ export async function PokemonDetail(nationalId) {
// ---- Form dex (Unown letters, Vivillon patterns, Alcremie decorations…) ----
// A checklist of purely-cosmetic appearances, tracked separately from the
// species' own caught flag. Only offered when this Pokémon is actually in
// the currently selected game's dex (`pos >= 0`) — no Vivillon checklist
// for a game it was never released in.
// species' own caught flag. Unlike Locations/Moves this isn't gated to the
// selected game: it's the same fixed set of letters/patterns/decorations
// regardless of game, and — like the rest of the app's tracking — your
// progress on it is global, not per-game, so it shouldn't vanish just
// because you switched your active game to browse something else.
let formDexPanel = null;
if (cosmeticForms.length > 1 && pos >= 0) {
if (cosmeticForms.length > 1) {
const slots = [
{ slug: snapSpecies.name, id: nationalId, name: 'Default', sprite: null },
...cosmeticForms,