Changelog

Changelog

Recent changes to PokeMMO Labs

Unreleased

💄 UI

  • Redesign saved team cards: sprites now sit in an inset stage panel, type icons cluster left instead of stretching edge-to-edge, and the stat row is a single connected strip with dividers instead of six floating pills.
  • Give team cards a retro LCD / dot-matrix texture: a fine pixel grid on the card and a denser dot-matrix "screen" behind the sprite stage (grid stays behind the sprites, never overlapping them).
  • Show a ×N count stacked under each team type icon, evenly distributed across the card width, indicating how many members carry that type, sorted most-frequent first.
  • Color team stat strip across six ranked levels: the three highest stats scale through green shades and the three lowest through red, instead of only highlighting top/bottom two.
  • Right-align the team rank badge in the card header, and add an S+ tier (avg ≥520) above S (now avg ≥495).
  • Add a stat-rating legend (S+ / S / A / B / C / D with thresholds) to the left of the stats toggle in the team list header.
  • Show 1–3 stars on the three top rating tiers (A ★, S ★★, S+ ★★★) in both the legend and each team's rank badge.
  • Mark each stat in the team stat strip by rank: the three strongest stats show ★★★/★★/★ and the three weakest show ▼/▼▼/▼▼▼ under their label, with the stat value (when enabled) shown below a divider. Strip cells are evenly sized.
  • Replace the native move dropdown in the Pokémon slot editor with a custom one: each move is tinted with its type color and shows a type badge, and the selected move slot is tinted too.

✨ Features

  • Add a /changelog page that renders this file, linked from the footer (localized in all 9 languages).
  • Alternate forms (Rotom Heat/Wash/Frost/Fan/Mow, Wormadam cloaks, Shaymin Sky, Castform, Basculin, Darmanitan Zen, Meloetta Pirouette, Deoxys Speed, Giratina Origin) are now selectable in the team builder / Pokédex, each with its own name, types, and correct sprite.

🐛 Fixes

  • Pokémon picker no longer crashes with a duplicate-key warning on mons that list the same ability twice (e.g. Rotom's Levitate); abilities are de-duplicated and "--" placeholders hidden.
  • Pokémon picker hover stat tooltip is now rendered in a portal so it's no longer clipped by the grid/modal overflow, and flips below the card near the top edge.
  • Team builder now honors browser back/forward: opening a team pushes a history entry and a popstate listener restores the matching view, so navigating back/forward between teams and the list updates the page instead of only changing the URL.
  • Pokémon picker, item picker, and filter sheets now size to the visible viewport (VisualViewport), so opening the mobile keyboard no longer hides their inputs/results behind it and filtering no longer shifts the layout under the keyboard.
  • Team list header ("My Teams" + rating legend + stats toggle) now wraps on narrow/mobile screens instead of overflowing.

📝 Docs

  • Add changelog rules to AGENTS.md — agents must update this file on every commit.

Past — History reconstructed from git log

🗃️ Data

  • Add item-subcategories.json: classify 1182 items with { cat, sub } mirroring PokeMMO's in-game bag filter hierarchy (Items, Medicine, Poké Balls, Berries, Cosmetics, Event Bags, Particles with all subcategories).
  • Expose getItemSubcategory(), ITEM_CATEGORY_TREE, ITEM_CATEGORY_BY_KEY, ITEM_SUBCAT_LABEL from items.ts for use in filter UI.

💄 UI

  • Tiered weakness colors in team weaknesses panel.
  • Slot editor layout: EVs/IVs side-by-side with better stat input.
  • 1.5x item card scale (dimensions only, content text unchanged).
  • Smaller category badge in all ItemCard variants.
  • Consistent badge position across all card orientations.
  • RelatedItemsSection responsive cards + horizontal badge/price overflow fix.
  • CosmeticPreviewDropdown modal on mobile + clamped desktop.

✨ Features

  • Stat tooltip on hover in Pokémon picker.
  • Move select with PP/Power in team editor + moveset mobile fixes.
  • Team image export: copy/download PNG via modern-screenshot.
  • Team image trainer card toggle in preview modal.
  • Team image as preview modal with copy/save actions.
  • Team coverage and shared team preview mode.
  • Hide empty draft teams.
  • Item picker modal for team builder slot editor.
  • Height/weight filters, sort direction, shared filter sheet, mobile responsive (Pokédex).
  • Scroll nav buttons for cosmetics category tabs.
  • CosmeticPreviewDropdown in item listing cards.
  • PWA manifest, install prompt banner, consent-gated Umami analytics.
  • OG image for Discord/social previews.
  • Brazilian Portuguese (pt-BR) locale.

🌐 i18n

  • Full i18n coverage across all components.
  • Support for 8 locales matching PokeMMO's official languages (en, pt-BR, es, fr, de, it, zh, ja).
  • US flag for English locale.
  • Proxy middleware accepts all 5 locales.

🐛 Fixes

  • Trainer card clipping + follower z-order in team image.
  • PokemonSprites key uses labelKey instead of removed label prop.
  • Register service worker + improve PWA install prompt.
  • Touch detection reset on mouse move in CosmeticPreviewDropdown.
  • Horizontal image area full height + vertical card alignment.
  • Badge section min-h-7 + justify-end for consistent vertical alignment.

♻️ Refactors

  • Replace hardcoded UI strings with translations.

📦 Deps

  • Add modern-screenshot for team image export.

📝 Docs

  • MIT license.
  • README and GitHub issue templates.
  • Rename to PokeMMO Labs in README and footer.
  • Favicon SVG update.
  • Rebrand: rename app to PokeMMO Labs, remove hero title.