Skip to content

feat: add collection and catch log parity to iOS app - #58

Merged
cte13 merged 1 commit into
mainfrom
feat/ios-collection-parity
Sep 20, 2026
Merged

cte13 merged 1 commit into
mainfrom
feat/ios-collection-parity

Conversation

@cte13

@cte13 cte13 commented Sep 20, 2026

Copy link
Copy Markdown
Owner

Summary

Brings the iOS companion app's Collection tab to feature parity with the macOS version while keeping all views and actions completely read-only.

Key highlights:

  • Segmented Collection Modes: Seamlessly toggle between "Pokédex" and "Catch Log".
  • Pokédex Grid: Rarity filters, adaptive grid layout, representative star indicator (★), shiny badge (✨), raising badge, and Unown letter form count (X/28).
  • Catch Log List: Chronological entries with relative timestamps, rarity capsules, RAISING/RELEASED/✨ status badges, nature name, and multi-stage evolution chain sprites.
  • Pokémon Detail View:
    • Animated & static sprite hero viewer with shiny toggle.
    • Interactive Unown 28-form picker when viewing Unown.
    • Individual specimen picker (#1 · Lv. X, #2 · Lv. Y) for multi-catch species or log entries.
    • Specimen stats with base value, IVs, and visual progress bars.
    • Known moves list with learned levels.
    • Species battle & dex metadata: Types, height (m), weight (kg), Base Stat Total (BST), base stats, possible abilities (regular and hidden), and complete move pool with learn methods.
  • Payload & Sync Compatibility:
    • PhonePayload and PhoneDexSpecies extended with catchLog, unownForms, and details.
    • Older Mac payloads without new fields decode safely without failing sync.
    • Mac app pre-computes individual stats and preloads species metadata in the background.
    • SpriteCache and PokeSprite support PokéAPI Unown form sprite resolution (201-{form}.png).

Type of change

  • Bug fix
  • New feature
  • Refactor / cleanup
  • Documentation
  • Other:

UI changes

Before After
Collection tab showed a simple non-clickable species grid with count and progress bar. No catch log, no individual details, no stats, and no Unown forms. Added segmented picker for "Pokédex" vs "Catch Log". Pokédex displays rarity filters, representative/shiny/raising indicators, and Unown form counts. Catch Log displays chronological captures with evolution chain sprites. Tapping any entry navigates to a rich read-only detail view with animated sprites, specimen picker, IVs/stat bars, moves, base stats, types, height/weight, BST, abilities, and complete move list.

Checklist

  • swift build and swift test pass locally
  • PR title and description are written in English
  • UI changes are described above (before/after — images optional)
  • No copyrighted assets, secrets, or private tooling references are committed (see CONTRIBUTING)
  • Tests were added or updated for this change

- Add Pokédex and Catch Log segmented navigation to iOS CollectionView
- Support Unown 28 letter forms viewing and interactive selection in Pokédex grid and details
- Add comprehensive read-only PokemonDetailView to iOS: animated sprite, individual picker, computed stats with IVs, known moves, species base stats, types, height/weight, BST, abilities, and complete move list
- Extend PhonePayload with backward-compatible catchLog, unownForms, and species details
- Preload and serialize species details and catch log entries from Mac app
- Support unown form sprite resolution in SpriteCache and PokeSprite
- Add unit tests for payload codable backward compatibility, catch log, and phone dex conversion
@cte13
cte13 merged commit 60a63e1 into main Sep 20, 2026
@cte13
cte13 deleted the feat/ios-collection-parity branch September 22, 2026 01:19
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