diff --git a/docs/wardrobe-v2-migration.md b/docs/wardrobe-v2-migration.md index 46e1af20..a58db061 100644 --- a/docs/wardrobe-v2-migration.md +++ b/docs/wardrobe-v2-migration.md @@ -41,63 +41,33 @@ Code lives in `app/controllers/wardrobe_controller.rb`, `app/views/wardrobe/`, ` ## Roadmap -### Phase 1: Core Functionality (MVP) +### Phase 1: Core Functionality (MVP) ✅ -The goal is a basic usable wardrobe. Species/color/pose selection, item search, and add/remove are already done. +All core features are implemented: +- **Species/color/pose selection** with visual pose picker, canonical fallback +- **Alt styles** with tabbed Expressions/Styles picker, compatibility filtering +- **Item search** with auto-filtering by pet/style compatibility, pagination +- **Closeted items** (worn vs. closeted vs. absent states, zone-based mutual exclusivity) +- **Outfit saving/loading** (save, save copy, rename, unsaved changes warning) +- **Progressive enhancement** throughout (works without JS, web components add interactivity) -**Outfit Saving/Loading** (basic implementation done) -- Save button near editable outfit name, disabled/"Saved!" when state matches saved -- Route to load saved outfits (`GET /outfits/:id/v2`) with redirect-based state initialization -- "Save a copy" for non-owners, login prompt for unauthenticated users -- `beforeunload` warning for unsaved changes via MutationObserver -- Outfit name: For saved outfits, rename is a standalone PATCH operation (not a URL param). For unsaved outfits, name is tracked as a URL param. Progressive enhancement shows static text + pencil icon for renaming. +### Phase 2: Detail-Oriented Experience -**Alt Styles Support** (done) -- `Outfit#visible_layers` handles alt styles -- Picker UI with tabbed Expressions/Styles panels, `style` URL param, visual thumbnails, "Default" option -- Stale style params dropped gracefully when switching species -- Search results auto-filtered by alt style compatibility +Additional information, additional search capabilities. -**Closeted Items** (done) -- Instead of just wearing/unwearing items, also support a "closeted" state: the user is *considering* this item, - but it is not displayed on the pet itself right now. -- Wearing an item will stop wearing, but keep in closet, items that are mutually incompatible with it. -- Baseline behavior: separate toggle buttons for worn state and closeted state. - - Unworn items have "Add" (wear). - - Worn items have "Hide" (stop wearing, keep in closet) and "Remove" (remove from worn and closet). - - Closeted items have "Show" (wear) and "Remove" (remove from closet). -- Visual distinction: worn items have green emphasis, closeted items have dashed border and reduced opacity. -- Closeted items appear in zone groups alongside worn items. -- `closet[]` URL params, saving/loading, and search pagination all work. -- Progressive enhancement (done): - - Each item card is an `` custom element with a visually-hidden input inside a `