Skip to content

feat(tin): sort and filter a divider by what's printed on the cards, and a grid view (#193) - #203

Merged
treyes133 merged 1 commit into
stagingfrom
feat/tin-sort-filter
Oct 4, 2026
Merged

treyes133 merged 1 commit into
stagingfrom
feat/tin-sort-filter

Conversation

@treyes133

@treyes133 treyes133 commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

What & why

Part of #193: "Right now my dividers are just the Pokémon sorted by type, because I cannot find a way to sort my Pokémon by type and that's essential to me." Type, stage, HP, weakness and rarity have been in the catalog all along. The tin's lists offered Newest / Highest value / A to Z, and no filters.

Everything and every divider now offer, under View options:

  • Sort. New: set order (release date, then printed number) oldest or newest first, rarest first, and highest HP. Highest value now sorts by the figure the row prints, so a row that says "no data" sinks instead of sitting mid-list on an estimate it doesn't show.
  • Filter. Type, stage (Trainer and Energy count as stages), weakness and rarity, each listing only values present in this list. A "Showing 12 of 240 · Psychic — Clear" line stays on screen while a filter is on, so a short list can't read as cards gone missing. Search ignores filters, so "do I own this?" can't be answered no by a filter you forgot.
  • Select All ticks the filtered cards. Filter to Psychic → Select → Select All → Move to… files exactly those, which is the workflow the issue asks for.
  • Show as grid (remembered): card art, ×N, value and change, with the row actions on long-press. It's a ScrollView grid, not the List, because a List row can't hold a grid of independent links. Select switches back to rows to tick them.

Sorting and filtering are pure (TinSorting, TinFilter) over a card lookup, so they're tested without a view. Rarity order is a keyword ladder across 28 years of rarity names.

The Cards / Dividers / Sealed segmenting of the tab waits for binders (#194), as planned there.

Stack (3 of 5). staging ← #201 (% fix) ← #202 (card screen, #197) ← #203 (sort/filter/grid, #193) ← #204 (collecting mode, #198) ← #205 (file all, #199). Merge in order. Merged branches aren't auto-deleted here, so after merging the PR below this one, delete its branch and GitHub retargets this one. If you squash-merge, this branch needs a rebase onto staging first; ask and I'll do it.

Checklist

  • Tests pass locally: full iOS suite, 1289 passed / 0 failed / 3 skipped (11 new in TinListOptionsTests)
  • No secrets, .env, keys, or docs/ contents committed
  • Targets staging (feature work), not main directly. Stacked: base is the PR below it until that merges.

⚠️ Not device-verified. Try grid mode on a big divider, the filter → Select All → Move flow, and the menus on iPad.

🤖 Generated with Claude Code

…and a grid view (#193)

"Right now my dividers are just the Pokémon sorted by type, because I cannot find a way to sort
my Pokémon by type and that's essential to me." Type, stage, HP, weakness and rarity have been
in the catalog all along (`card.types`, `card.hp`, `detail` since #147); the tin's lists only
offered Newest / Highest value / A to Z, and no filters at all.

Everything and every divider now offer, under View options:

- Sort: + set order (release date, then printed number) oldest or newest first, rarest first,
  highest HP. Highest value now sorts by the figure the row prints, so a row that says "no
  data" sinks instead of sitting mid-list on an estimate it doesn't show.
- Filter: type, stage (Trainer and Energy count as stages), weakness, rarity — each listing
  only values present in this list. A "Showing 12 of 240 · Psychic — Clear" line stays on
  screen while a filter is on, so a short list can't read as cards gone missing. Search ignores
  filters: "do I own this?" mustn't be answered no by a filter you forgot.
- Select All ticks the filtered cards, so filter to Psychic → Select → Select All → Move to…
  files exactly those. That's the workflow the issue is asking for.
- Show as grid (remembered): card art, ×N, value and change, long-press for the row actions.
  A ScrollView grid, not the List — a List row can't hold a grid of independent links — so
  Select switches back to rows to tick them.

Sorting/filtering is pure (`TinSorting`, `TinFilter`) over a card lookup, tested without a view.
Rarity order is a keyword ladder across 28 years of rarity names.

The Cards / Dividers / Sealed segmenting of the tab waits for binders (#194), as planned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@treyes133
treyes133 force-pushed the feat/tin-sort-filter branch from b80ce20 to 828b646 Compare October 4, 2026 03:09
@treyes133
treyes133 changed the base branch from feat/card-detail-evolutions-and-dividers to staging October 4, 2026 03:09
@treyes133
treyes133 merged commit f125ca8 into staging Oct 4, 2026
10 checks passed
@treyes133 treyes133 mentioned this pull request Oct 4, 2026
3 tasks done
treyes133 added a commit that referenced this pull request Oct 4, 2026
1.0.5 (build 45) was approved on 2026-08-21 and promoted to main as #189, which closes its train
for new builds. 1.0.6 carries everything merged to staging since: the % change fix (#201), the
card screen's evolution line and divider links (#202), sorting/filtering/grid for dividers
(#203), collecting mode (#204), "File all in…" for the scan tray (#205), and the scanner haptic
fix (#192).

Not verified against appStoreVersions — this machine has no App Store Connect credentials. The
note above MARKETING_VERSION says what to check before the first upload.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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