# 2026-04-23 ## Co zrobiono - [Phase 01 / Plan 01] Naprawa wariantu kolorystycznego w nowym layoucie strony produktu (IP-gated `REMOTE_ADDR == '89.69.31.86'`) - Task 1: wrapper markup w `product.tpl` — `
` + `
` (token/id_product/id_customization) + `
` - Task 2: styling SCSS pod scope `body#product .product-variants-data--new` wg Figma 27:9867 (grid 3×1 / 2×1 <768 px, Inter 14/25 #8c8c8c left, active outline #7d6e4f) - Task 3: delegowany click+change handler w `custom.js` — własny AJAX `action=refresh` + in-place DOM update (pushState + replace `.product-prices`, `.product_image_wrapper` + emit `updatedProduct`) - Scope addition (uzgodniony): form `add-to-cart-or-refresh` w nowym layoucie — bez niej PS nie mógł AJAX-ować wariantu - Bootstrap PAUL w projekcie: PROJECT.md, ROADMAP.md, STATE.md, phase dir - Feedback memory: edytuj tylko `custom.scss`, nie `custom.css` (user ma lokalny watcher) - Deferred do Phase 02+: add-to-cart w nowym layoucie, konfigurator „piece", puste bloki rozmiar/odbicie/montaż/próbka/zabezpiecz - [Phase 02 / Plan 01] Port konfiguratora „piece" (wybór fragmentu tapety + mirror) do nowego layoutu — popup trigger + fancybox zgodnie z Figma, 8 hidden inputów (`is_crop`, `is_reflection`, `crop_pos_x/y`, `crop_width/height`, `piece_bg_top/left`) w formie `#add-to-cart-or-refresh` - Task 1: markup w gałęzi `== '89.69.31.86'` — hidden inputs w formie, `.piece-summary` anchor w `.product-size-data`, mirror button, hidden state (checkbox/width/height/position divs) - Task 2: custom.js defensive setup — setTimeout(600) init z override `totalpriceinfospecific`/`prod` na no-op + wstrzyknięcie DOM stubs (`#totalpriceinfo`, `#custom-wallpaper-price*`, `#quantity_wanted*`), `prestashop.on('updatedProduct')` re-bind dragElement po variant AJAX, defensive `.pp_stick_parent` guard w fancybox handler - Task 3: CSS scoped pod `.product-size-data .product-size-data--new` (flex layout, `.piece-summary` trigger, mirror button hover) - 5 ukrytych problemów wykrytych w live Playwright debug: duplikat `#piece` (reuse z shared partial), CSS `:has()` edge case, ready queue fighting, inline-script crash (module hook), brakujący `.pp_stick_parent` - User feedback w trakcie checkpoint: piece nie auto-init'uje się na load — pojawia się dopiero po kliknięciu trigger'a popupu - Deferred do re-verify: AC-4 (AJAX variant re-init), AC-5 (stary layout regresja), mirror button end-to-end ## Zmienione pliki - `themes/ayon/templates/catalog/product.tpl` - `themes/ayon/assets/css/custom.scss` - `themes/ayon/assets/js/custom.js` - `.paul/PROJECT.md` - `.paul/ROADMAP.md` - `.paul/STATE.md` - `.paul/phases/01-product-variants-fix/01-01-PLAN.md` - `.paul/phases/01-product-variants-fix/01-01-SUMMARY.md` - `.paul/phases/02-product-actions-fixes/02-01-PLAN.md` - `.paul/phases/02-product-actions-fixes/02-01-SUMMARY.md` - `.claude/memory/MEMORY.md` - `.claude/memory/feedback_scss_only.md`