Run through this checklist before pushing significant changes (new features, refactors, filter/modal changes). For simple item additions or image updates, skip to the "Data" section only.
- Page loads without console errors (F12 > Console)
- All stats show in header (Total, Owned, Complete %)
- Item count matches footer count
- Timeline bar shows all games
- Cards render in the grid
- "Showing all X items" text appears above grid
- Type in search box — results filter live
- Clear button (x) appears when typing
- Clear button resets search and shows all items
- Result count updates as you type
- "Nothing is true..." message shows for zero results
- Game multi-select — check a game, items filter
- Category multi-select — check a category, items filter
- Type multi-select — check a type, items filter
- Owned filter — "Owned Only", "Not Owned", "Wishlist" all work
- Sort — Default, Year asc/desc, Name A-Z/Z-A, Recently Added
- Filters cascade: selecting a game narrows Category options, selecting a category narrows Type options
- Clear (x) button on each multi-select resets that filter
- Type search box filters options as you type
- Set some filters, refresh the page — filters are restored
- Click logo — all filters reset, page scrolls to top
- Click "Total Items" stat — all filters reset
- Selected items float to the top of dropdown
- Separator line appears between selected and unselected
- Unselected items return to original order (chronological for games, alphabetical for categories/types)
- Escape closes open dropdown
- Clicking outside closes dropdown
- Click a game button — filters to that game
- Click multiple games — multi-select (toggle)
- Click "All" — resets game filter
- Timeline syncs with game multi-select dropdown
- Grid view shows image, game, title, description, year, type
- List view works (toggle button)
- Cards with images display correctly (top crop)
- Cards without images show AC logo placeholder
- Owned badge shows on owned items
- Wishlist badge shows on wishlist items
- Clicking a card opens the modal
- Ctrl+click / right-click "Open in new tab" works
- URL updates with item slug when card is clicked
- Title, game, year, category badge, type badge display correctly
- Type badge hidden when type equals category
- Description and contents show
- Gallery image loads
- Gallery navigation (arrows, dots) works for multi-image items
- Swipe works on mobile / touch simulation
- Clicking image opens lightbox
- Image shows full-screen on dark background
- Navigation arrows work
- Arrow keys work
- Touch swipe works
- Counter shows "1 / 3" etc.
- Escape closes lightbox
- Clicking background closes lightbox
- Toggle Owned on — copies auto-set to 1
- Toggle Owned off — copies, condition, has box, price, date, notes all reset
- Set condition — owned auto-toggles on, copies set to 1
- Toggle Has Box — owned auto-toggles on
- Increase copies — owned auto-toggles on
- Decrease copies to 0 — everything resets
- Price paid field saves
- Acquired date field saves
- Notes field saves (with debounce)
- All changes persist after closing modal and reopening
- "Collection Insights" toggle opens/closes the panel
- Sort toggle (% / #) switches between percentage and count sorting
- By Game — bars show owned/total with percentage, sorted correctly
- By Category — same as above
- Condition Breakdown — shows counts, Total Physical Items at top
- 100% completion — percentage turns green, checkmark appears
- Confetti fires when completing a game/category (mark last unowned item)
- Celebration toast appears center-screen
- Export downloads a JSON file with today's date in filename
- Export includes all collection fields (owned, wishlist, condition, copies, price, date, notes)
- Toast shows "Exported X items"
- Import — select the exported file, data restores
- Toast shows "Imported X of Y items"
- Import with invalid file shows error toast
- Opening a card updates the URL hash (e.g., #assassins-creed-ii-black-edition)
- Pasting a URL with hash opens directly to that item
- Browser back button closes the modal
- Closing modal clears the hash
-
localStorage.setItem('acdb_admin', 'true')shows "Add Item" button - Clicking "Add Item" opens the Code Generator
- Game dropdown populates with all games
- Type dropdown populates with all types
- "New" game toggle shows/hides game input fields
- Code preview updates live as you type
- New game generates app.js code entries
- "Copy Code" copies to clipboard with toast
- Escape closes the dev tool
- Filters stack vertically on mobile
- Cards switch to single column on small screens
- Modal switches to single column layout below 1024px
- Timeline scrolls horizontally
- Export/Import buttons show icons only on mobile
- Back to Top button appears on scroll, works on tap
- Total item count in footer matches database
- No duplicate item names:
grep '"name":' js/database.js | sort | uniq -d(should be empty) - All image mappings match item names: run the check script in README or manually verify
- Collection data keyed by item name (not numeric ID)
- Page loads without errors
- New item appears in grid
- New item's image displays
- Filters show updated counts
- Footer item count is correct