make_post_sell/docs/tickets
russell@unturf.com 7c227ab467
feat: MPS-24 Phase 2.4 — SPA bulk tagger + Netflix-style lanes
Two operator-workflow improvements that compound. With Phase 1+2+2.3
shipped the categorisation works; with this phase iterating on tag
suggestions feels like one fluid screen instead of a stack of POST/
redirect cycles, and the lanes home actually looks like categorised
shelves.

SPA progressive enhancement on /s/{shop_id}/tags:

- Every form (create / delete / attach / detach / apply_suggestion /
  dismiss_suggestion) still POSTs and 302-redirects without JS — the
  no-JS user path is unchanged. With JS, static/js/tag_bulk.js
  intercepts submits, POSTs via fetch with X-Requested-With:
  XMLHttpRequest, and the server returns JSON describing what
  changed. Capability-driven per CLAUDE.md.
- New _is_ajax() + _tag_ajax_response() helpers in views/shop.py
  pop the Pyramid flash queue into the JSON payload so JS can render
  toasts (.tag-flash / .tag-flash-toast / .tag-flash-{success,error,
  info}). Falls back to a full form submit if fetch() errors.
- Template gained data-tag-form="<action>" attributes for delegation
  and data-tag-row / data-suggest-row / data-product-row hooks for
  DOM mutation. Re-attach pass on inserted rows.
- 6 new functional tests cover each AJAX action plus the no-JS
  fallback (POST without the header still 302-redirects).

Netflix-style horizontal-scroll lanes:

- .tag-lane-grid is now display: grid + grid-auto-flow: column +
  grid-auto-columns: minmax(160px, 200px) + overflow-x: auto +
  scroll-snap-type: x mandatory. Each lane is visually bounded as
  a category, tiles snap on swipe.
- Tiles drop the .serp class (the auto-fit grid was fighting the
  new horizontal flow) but keep .serp-item for hover styles.
- Thumbnails inside lane tiles use width:auto + max-width:100% +
  max-height:200px per CLAUDE.md media-sizing rule.
- Mobile (≤ 800px): tiles narrow to 140-160px, swipe-friendly.
- /styleguide updated with a 5-tile lane example so future operators
  see the new pattern.

1088 tests passing.
2026-05-15 12:55:36 -04:00
..
an-algo Price history on product pages, Fresh toggle, media type filters for ring 2026-02-11 19:22:44 -05:00
mps-0.md Add AJAX comment submission to preserve media playback 2026-02-07 11:19:58 -05:00
mps-1.md Add YouTube-style watch mode with sticky video, autoplay, and related content 2026-02-07 14:57:37 -05:00
mps-2.md docs: add MPS-6 through MPS-9 tickets, architecture diagram, update JS docs 2026-03-05 06:19:56 -05:00
mps-3.md Isolate parallel test runs with PID-based database filenames 2026-02-09 16:24:25 -05:00
mps-4.md Add tickets MPS-4 and MPS-5 for 502 worker recycling fix 2026-02-11 10:13:52 -05:00
mps-5.md Add tickets MPS-4 and MPS-5 for 502 worker recycling fix 2026-02-11 10:13:52 -05:00
mps-6.md docs: add MPS-6 through MPS-9 tickets, architecture diagram, update JS docs 2026-03-05 06:19:56 -05:00
mps-7.md docs: add MPS-6 through MPS-9 tickets, architecture diagram, update JS docs 2026-03-05 06:19:56 -05:00
mps-8.md docs: add MPS-6 through MPS-9 tickets, architecture diagram, update JS docs 2026-03-05 06:19:56 -05:00
mps-9.md docs: add MPS-6 through MPS-9 tickets, architecture diagram, update JS docs 2026-03-05 06:19:56 -05:00
mps-10.md feat: add gift card system for shops (MPS-10 through MPS-13) 2026-03-07 15:38:40 -05:00
mps-11.md feat: add gift card system for shops (MPS-10 through MPS-13) 2026-03-07 15:38:40 -05:00
mps-12.md feat: add gift card system for shops (MPS-10 through MPS-13) 2026-03-07 15:38:40 -05:00
mps-13.md feat: add gift card system for shops (MPS-10 through MPS-13) 2026-03-07 15:38:40 -05:00
mps-14.md docs: add tickets MPS-14 (dev/stage shops), MPS-15 (free trial), MPS-16 (BYOB) 2026-03-07 17:30:05 -05:00
mps-15.md docs: add tickets MPS-14 (dev/stage shops), MPS-15 (free trial), MPS-16 (BYOB) 2026-03-07 17:30:05 -05:00
mps-16.md docs: add tickets MPS-14 (dev/stage shops), MPS-15 (free trial), MPS-16 (BYOB) 2026-03-07 17:30:05 -05:00
mps-17.md feat: REST API v1 — HMAC-signed product/content creation and file upload 2026-04-06 15:23:30 -04:00
mps-18.md docs: tickets MPS-18..21 — karaoke/torrent fixes + auction/offer proposals 2026-05-09 16:13:57 -04:00
mps-19.md docs: tickets MPS-18..21 — karaoke/torrent fixes + auction/offer proposals 2026-05-09 16:13:57 -04:00
mps-20.md docs: tickets MPS-18..21 — karaoke/torrent fixes + auction/offer proposals 2026-05-09 16:13:57 -04:00
mps-21.md docs: tickets MPS-18..21 — karaoke/torrent fixes + auction/offer proposals 2026-05-09 16:13:57 -04:00
mps-22.md MPS-22: kill-switch feature flags for karaoke + torrent 2026-05-09 16:51:24 -04:00
mps-23.md MPS-23: single warm sending identity for transactional mail 2026-05-12 11:13:11 -04:00
mps-24.md feat: MPS-24 Phase 2.4 — SPA bulk tagger + Netflix-style lanes 2026-05-15 12:55:36 -04:00