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
/changelogpage 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_LABELfromitems.tsfor 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.
- ◆
RelatedItemsSectionresponsive cards + horizontal badge/price overflow fix. - ◆
CosmeticPreviewDropdownmodal 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.
- ◆
CosmeticPreviewDropdownin 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.
- ◆
PokemonSpriteskey useslabelKeyinstead of removedlabelprop. - ◆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-endfor consistent vertical alignment.
♻️ Refactors
- ◆Replace hardcoded UI strings with translations.
📦 Deps
- ◆Add
modern-screenshotfor 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.