Skip to content

v0.1.3a -- IV Calculator, trainer avatars, shiny evolution, and mobile API

Choose a tag to compare

@Hailey-Ross Hailey-Ross released this 26 Jun 21:13
dd28e56

What's New

IV Calculator (/iv)

  • Manual tab: search for any Pokémon by name (form-aware -- Alolan, Galarian, Hisuian variants appear as distinct entries); enter CP, HP, and stardust cost; set trainer level (pre-filled from your profile when logged in); optionally set Pokémon Status (Normal / Shadow / Purified / Lucky) and the calculator normalises the displayed dust cost back to the standard bracket automatically
  • Screenshot tab (logged in): upload a PNG/JPEG of the stats screen and the backend extracts CP, HP, dust, name, status, and appraisal stars automatically -- two-pass CP extraction plus arc-scan fallback; three-strategy name detection; Lucky/Shadow/Purified status from keywords and dust inference; gap-based star detection with rainbow hundo recognition; an editable extraction card lets you correct any field before or after calculating
  • My Box tab (logged in): save IV results to a personal Pokémon box (up to 3000 entries); view, note, and delete saved spreads
  • Supports levels 1.0--51.0 and CP up to 50,000 (Mega Pokémon)
  • Requires Tesseract OCR installed on the server for the Screenshot tab; see Getting Started for setup

Trainer Avatars

  • 101 new Classic (Showdown) sprites: named characters including villains (Giovanni, Cyrus, Ghetsis, Lysandre, Lusamine, Guzma, Rose, Volo), rivals, N, champions, gym leaders by region, Elite Four members, professors for every generation, and playable characters with outfit variants
  • 86 new pokeemerald-expansion (FRLG-style) sprites: Kanto gym leaders, Elite Four, Prof. Oak, Team Rocket grunts, and 60+ trainer class variants; bundled locally under static/sprites/pex/
  • Searchable combobox replaces the old dropdown: type to filter with smart ranking (exact → starts-with → contains), sprite thumbnails, cross-set search, and "researcher"/"professor" tag aliases

Admin: Sprite Lock Management

  • New Trainer Avatars tab in the admin panel: set per-sprite rank requirements (6 tiers: unlocked / Trusted+ / Content Creator+ / Tester+ / Moderator+ / Admin only)
  • Professor sprites are auto-locked to Trusted+ server-side regardless of the table
  • The /settings avatar picker filters to only sprites the requesting user's rank can access
  • New DB table: sprite_locks (migration 37)

Shiny Collection: Evolution Tracking

  • Evolve button on each row in the Caught tab: single-path evolutions confirm inline; branching evolutions (e.g. Gloom → Vileplume or Bellossom) show a sprite picker
  • A new Evolved tab lists all shinies that have been evolved through the app
  • Evolved entries show a chip label and a subtle visual treatment on your public trainer profile
  • evolved_at column records when each evolution was applied (migration 38)
  • New Go Pass catch method added (alongside Wild, Egg, Raid, Research, Evolution, Photobomb, Trade, GO Tour)

Mobile Companion API (/api/mobile/v1)

  • Session-authenticated versioned API for a companion mobile app; Bearer token auth (same session token as the web cookie)
  • Push notifications for raid events (match found, lobby cancelled, 30-second confirm warning); Android via FCM, iOS via APNs -- silently disabled when credentials are absent
  • Endpoints mirror web equivalents: auth, profile update, game data, raids, IV Calculator, Pokémon box, Raid Finder
  • See API Reference for the full endpoint list

Trainer Level and Shiny Enhancements

  • Trainer level field in Settings (1--51); pre-fills the IV Calculator and OCR trainer-level param automatically
  • Shiny costume tracking: record costume variants (e.g. Party Hat Pikachu); shown on your collection and public profile
  • Event tag: tag shinies to a specific in-game event for filtering

Other Changes

  • DPS target comparison: compare a moveset's DPS against all current raid bosses at once
  • Awards: per-award configurable minimum rank required to grant (Admin panel → Awards)
  • Admin tab bar wraps to a second row on narrow screens instead of clipping off-screen
  • Fixed large PNG upload timeouts (ReadHeaderTimeout replaces ReadTimeout)
  • Upgraded Pokémon GO level cap to 51 across IV Calculator, counters, and CP multiplier tables

Migrating from v0.1.2d

Run the following sections from migrate.sql against your database in order and before deploying:

Section What it does
30 Creates user_pokemon_box and mobile_device_tokens tables
31 Adds costume and event_tag columns to user_shinies; rebuilds the unique index to include both
32 Adds trainer_level column to users
33 Drops the unique constraint on user_shinies (replaced by a non-unique index)
34 Renames user_friends to user_follows
35 Adds confirm_warned_30s flag to raid_lobby_members
36 Adds min_grant_rank column to awards
37 Creates sprite_locks table
38 Adds evolved_at column to user_shinies

Important: Sections must be applied in order. Section 33 must run before section 34.

If Tesseract is not yet installed on your server, install it now:

# Debian/Ubuntu
apt-get install tesseract-ocr
# Verify
tesseract --version

Migrating from v0.1.2c or earlier

Apply all sections from your last applied section through section 38, in order. The section comment headers in migrate.sql include dates to help you identify where to start.

If you are on v0.1.2c: start at section 26.
If you are on v0.1.2b: start at section 24.
If you are on v0.1.2a or earlier: start at section 23.


Fresh Install

Follow the Getting Started wiki guide. Use schema.sql -- it already reflects all migrations through section 38. Do not also run migrate.sql on a fresh install.

See Configuration for all environment variables including the new optional push notification credentials.


Notes

  • Tesseract must be on PATH on the server for the IV Calculator Screenshot tab to return results. The tab loads and accepts uploads without it; OCR extraction will return empty fields if the binary is missing.
  • Push notifications require separate FCM (Android) and APNs (iOS) credentials. Both are silently disabled when their environment variables are absent -- no errors, no effect on other features.
  • The user_friendsuser_follows rename (section 34) is a destructive rename. If your database does not yet have a user_friends table (i.e. you never applied section 27 from v0.1.2d), skip section 34.
  • The sprite_locks table starts empty; professor sprites are auto-locked server-side. Use Admin → Trainer Avatars to configure locks for other sprites.
  • Trainer level defaults to 40 for users who have not set it; the OCR endpoint also accepts a ?trainer_level= query parameter override.