# Prompt — Studio oferty (kontynuacja, nowy czat) Skopiuj blok między `===` i wklej jako **pierwszą wiadomość** w nowym czacie. ``` === Kontynuacja pracy nad **Studio oferty** (`/editor/studio`) w repo dywanowy-bazar. ## Stan na main (po merge #8 + #9) Zrobione: - P0/P1: render `mainImageOverlay.dataUrl` przed wysyłką, fix kolażu (auto-selected), walidacja blokuje wysyłkę, sync STAN↔ETYKIETA, przycisk Wyślij/Aktualizuj - P2: dry-run/live w stopce, tagi BaseLinker, lightbox zdjęć (⤢), dashboard `?draftId=` → Studio, modal ustawień Anuluj/Zapisz Pliki: `public/studio.js`, `public/studio.html`, `public/studio.css`, `public/studioProfile.js`, `public/dashboard.js` ## Następne kroki (propozycja) 1. **Weryfikacja na telefonie** — pełny flow: Tara → Studio → dry-run → live → Base.com 2. **Chrome extension** — `chrome-extension/content.js` ma sztywny `127.0.0.1:8787`; konfiguracja hosta produkcyjnego 3. **Studio vs legacy** — brakuje: regeneracja AI w Studio, podgląd slotów payload (jak wizard krok 5), edycja kategorii 4. **UX etykiety** — opcjonalnie: wybór koloru/pozycji/wariantu (jak wizard, bez auto-planu AI) 5. **Dashboard** — link Base.com z szablonu `/api/config` zamiast hardcoded URL 6. **Testy CI** — 3 failing (`badge-render-from-plan`, `baselinker-outlet-mode`, `collage-payload`) — ERR_MODULE_NOT_FOUND ## Zanim kodujesz Przeczytaj: `docs/STUDIO-PLAN.md`, `docs/ARCHITECTURE.md`, `docs/PROGRESS.md` Reguły: JTL → BaseLinker, kategorie z `docs/Kategorie_BaseLinker.csv`, outlet przez `offerState` (nie globalny `outletMode`), mobile-first 44px touch. ## Twoje zadanie teraz [WPISZ TUTAJ: np. „punkt 1 + 3” albo własny priorytet] Zacznij od krótkiego planu (3–5 punktów) i czekaj na „zaczynaj” zanim dotkniesz kodu — chyba że dam od razu konkretne polecenie implementacji. === ```