Wróć do HUBa
Aktualna wersja: v2.178.2

Historia HUBa

Wszystkie wersje od pierwszego dnia. Każdy wpis to krótkie podsumowanie tego, co się zmieniło — bez technicznego żargonu.

  1. v2.178.224 lipca 2026, 21:00Najnowsza

    Pakiet singli: placeholder na kolejne premiery

    • W edytorze pakietu jest przycisk „+ następny singiel (placeholder)” — dodaje szkielet następnej premiery artysty (bez tytułu i daty), więc możesz zbudować pakiet nawet jeśli kolejne single jeszcze nie istnieją.
    • Placeholder to zwykłe zgłoszenie (`Kolejny singiel #N`, status: approved) — artysta uzupełni tytuł, datę i materiały w Presskicie.
    • Po akceptacji pakietu zakres umowy i dziedziczenie podpisu obejmuje placeholdery tak samo jak realne premiery.
  2. v2.178.124 lipca 2026, 20:00

    Pakiet singli wprost w „Ofercie wydawniczej”

    • W edytorze oferty (moduł Premiery → Oferta) dochodzi trzeci tryb: „Pakiet singli” — obok „Wyślij 3 warianty” i „Oferta już ustalona”.
    • Wybierasz kolejne premiery tego samego artysty, każdej ustawiasz klasyfikację, typ projektu i cenę netto, dodajesz rabat pakietowy i widzisz łączny budżet projektu.
    • Akceptacja pakietu zapisuje zaakceptowane oferty per singiel i ustawia zakres umowy — pozostałe premiery dziedziczą podpis.
    • Ten sam panel wciąż dostępny w widoku umowy `/admin/umowy/:id` (wspólny komponent).
  3. v2.178.024 lipca 2026, 19:00

    Oferty pakietowe: jedna oferta na kilka singli

    • W widoku umowy (/admin/umowy/:id) możesz zbudować ofertę pakietową obejmującą 2–20 premier tego samego artysty — każdą pozycję ustawiasz osobno: klasyfikacja, typ projektu (np. PLUS, PRO MEDIA), cena netto i opis.
    • Sumowanie liczy pełny budżet projektu z opcjonalnym rabatem pakietowym — widać kwotę netto i brutto (VAT 23%).
    • Akceptacja pakietu jednym klikiem: zapisuje zaakceptowane oferty per singiel (z linkiem do pakietu), ustawia zakres umowy = liczba pozycji na pierwszym utworze, a pozostałe premiery automatycznie odziedziczą podpis przez istniejący mechanizm „Umowa dziedziczona”.
  4. v2.177.024 lipca 2026, 18:00

    Umowy wielosinglowe: jedna umowa na kilka premier

    • W widoku umowy (/admin/umowy/:id) możesz ustawić, na ile utworów obowiązuje dana umowa (1–20).
    • Kolejne premiery tego artysty automatycznie dziedziczą podpis i pokazują baner „Umowa dziedziczona” z linkiem do źródła i pozycją N/M — nie wymagają osobnego podpisu.
    • Panel admina pokazuje pełną listę objętych premier (z datami), więc od razu widać zakres umowy.
  5. v2.176.724 lipca 2026, 15:00

    PressRoom: wszystkie single w dropdownie generatora magic linków

    • Dropdown „Singiel z PressRoomu” w /admin/pressroom/magic-links pokazuje teraz wszystkie wydane i nadchodzące single, nie tylko nadchodzące premiery.
    • Lista sortuje od najnowszej daty wydania/premiery wstecz, więc najświeższe pozycje są zawsze na górze.
    • Przy tytule singla pojawia się też nazwa artysty, co ułatwia odróżnienie np. różnych wersji tego samego utworu.
  6. v2.176.624 lipca 2026, 14:00

    PressRoom: linki dla dziennikarzy per singiel w generatorze magic linków

    • W /admin/pressroom/magic-links doszedł trzeci tryb „Singiel z PressRoomu” — nie trzeba już wchodzić w edycję każdego singla, żeby wygenerować linki.
    • Wybór singla z dropdowna od razu ładuje ten sam panel co w edycji: lista dziennikarzy z checkboxami, wybór ważności, przycisk „Wygeneruj linki”.
    • Pod spodem widać aktywne dostępy dla wybranego singla wraz ze statystykami (wejścia, odsłuchy, PDF/ZIP, engagement) — z opcją kopiowania i unieważniania.
  7. v2.176.524 lipca 2026, 12:00

    Edytor projektów: czytelniejsza szukajka na desktopie

    • Pole „Szukaj artysty lub tytułu” w bocznej liście projektów jest teraz wyraźnie większe (h-10, tekst sm) i ma widoczny placeholder.
    • Szukajka wraz z filtrami Aktywne/Archiwum/Wszystkie jest przyklejona na górze panelu — nie trzeba już scrollować do góry, żeby wpisać nazwę.
    • Cały panel projektów przykleja się pod górnym paskiem HUBa (--app-header-h), więc pozostaje w zasięgu wzroku podczas przewijania listy.
  8. v2.176.424 lipca 2026, 10:00

    Feedbacki: nazwy kanałów zamiast maili dziennikarzy

    • Lista „Kto zareagował” pokazuje teraz nazwę powiązanego kanału (np. Radio Jasna Góra) zamiast adresu e-mail redakcji.
    • Jeśli dziennikarz ma przypisany kanał w channel_master, HUB używa jego nazwy jako etykiety publicznej — także dla widoku artysty.
    • Adresy e-mail są filtrowane z pól display_name i outlet, żeby nie wyciekły do panelu artysty.
  9. v2.176.323 lipca 2026, 11:25

    Wywiady: fallback dla za dużych plików video

    • Jeśli pełne video jest za duże na transkrypcję, panel admina wyciąga lokalnie samo audio do małego WAV i wysyła dopiero ten plik.
    • Dzięki temu nagrania typu 40–60 sekund z telefonu nie blokują już pitcha AI tylko dlatego, że kontener video waży ponad limit.
    • Komunikaty prowadzą teraz przez automatyczny fallback zamiast kończyć się od razu błędem „plik za duży”.
  10. v2.176.223 lipca 2026, 11:00

    Wywiady: transkrypcja obsługuje większe nagrania

    • Transkrypcja audio/video w /admin/wywiady/:id leci teraz przez dedykowany endpoint speech-to-text (multipart) zamiast pakowania base64 w chat completions.
    • Limit wielkości pliku podniesiony do ~24 MB (wcześniej twardy 20 MB, w praktyce mniej przez narzut base64) — mieszczą się dłuższe pytania z video Gabora.
    • Krótszy czas odpowiedzi i czytelniejszy komunikat, gdy plik jednak przekracza limit gatewaya.
  11. v2.176.123 lipca 2026, 10:15

    Admin: transkrypcja z nagrania jednym kliknięciem

    • W /admin/wywiady/:id przy każdej odpowiedzi z nagraniem pojawił się przycisk „Zrób transkrypcję z nagrania" — AI przepisuje audio/video na tekst i wpisuje w pole transkrypcji.
    • Po transkrypcji przycisk „Wygeneruj" pitcha AI odblokowuje się automatycznie i pisze pitch głosem artysty na jej podstawie.
    • Generowanie pitcha i transkrypcja działają teraz również z konta admina (dotąd sprawdzały RLS artysty i cicho odmawiały).
  12. v2.176.023 lipca 2026, 09:30

    Movers: świeży, pełny wynik projektu bez klikania w singla

    • Wynik projektu w Movers i na liście Projektów obejmuje pełną sumę: wsparcie kanałów + liczby (streamy, radio, Shazam, TikTok, YT, IG, playlisty DSP) + pressroom.
    • Serwerowe przeliczanie WSZYSTKICH aktywnych projektów uruchamia się codziennie o 04:00 i 23:55 — snapshot dnia dopiero po tym recompute, więc rankingi startują z aktualnych liczb.
    • „Odśwież teraz" w Movers Hubie ręcznie przelicza całą aktywną listę i od razu robi snapshot — koniec z sytuacją „widzę stare liczby dopóki nie otworzę każdego singla".
    • Toast po odświeżeniu pokazuje ile projektów zostało przeliczonych i czy jakieś się wywaliły.
  13. v2.175.523 lipca 2026, 03:40

    Pulse feed: kto oznaczył „Dla mnie hit”

    • Wpisy w Pulse przy ocenach dziennikarzy („Dla mnie hit”, „Zainteresowany”, „Nie dla mnie”) pokazują imię i redakcję osoby, która oznaczyła singla.
    • Nazwisko i redakcja lądują też w payloadzie eventu, więc kolejne widoki mogą je łatwo wykorzystać.
  14. v2.175.423 lipca 2026, 03:10

    Feedbacki przedpremierowe: poprawne dane z projektu

    • Zakładka „Przedpremiera” rozpoznaje teraz, że picker u góry zwraca projekt, i automatycznie znajduje właściwe zgłoszenie premiery do analityki.
    • Naprawione pobieranie redakcji dziennikarzy — lista „Kto zareagował” nie zeruje się przez błędną nazwę pola.
    • Liczba dziennikarzy obejmuje teraz także reakcje typu „Dla mnie hit” z Planu wydawniczego, a nie tylko klasyczne komentarze feedbackowe.
  15. v2.175.323 lipca 2026, 02:45

    Feedbacki przedpremierowe: singiel z góry + lista dziennikarzy

    • Zakładka „Przedpremiera” w module Feedbacki bierze teraz singla z pickera projektu u góry, a nie z osobnego dropdownu.
    • Nowa sekcja „Kto zareagował” — imiennie widać dziennikarza, redakcję, poziom oceny („Dla mnie hit”, „Zainteresowany”, „Może być”, „Nie dla mnie”), gwiazdki i komentarz.
    • Reakcje z Planu wydawniczego i klasyczne feedbacki są zebrane w jedną listę, posortowane od najnowszych.
  16. v2.175.223 lipca 2026, 02:15

    Feedbacki przedpremierowe: liczą się oznaczenia z Planu wydawniczego

    • Poziomy zainteresowania z Planu wydawniczego („Dla mnie hit”, „Zainteresowany”, „Może być”, „Nie dla mnie”) wchodzą do sentymentu i histogramu ocen 1–5★.
    • Licznik „zainteresowanych” w banerze przestał ignorować oznaczenie „Dla mnie hit” — teraz zgadza się z powiadomieniami.
    • Lejek zainteresowania i donut sentymentu odzwierciedlają wszystkie sygnały redakcji, nie tylko klasyczne feedbacki tekstowe.
  17. v2.175.123 lipca 2026, 01:05

    Profil Artysty: odzyskanie danych z Presskitu do Gotowości

    • Gotowość nie opiera się już wyłącznie na pustym trwałym profilu — brakujące pola odzyskuje z najnowszych snapshotów Presskitu danego artysty.
    • Vibe, zainteresowania, ton, bio, sociale, suwaki i management pokazują się w Profilu Artysty także wtedy, gdy wcześniej były zapisane tylko w konkretnej premierze.
    • Pełny formularz i licznik kroku profilu w Gotowości są widoczne/liczone z tym samym fallbackiem, żeby Gotowość i Presskit faktycznie miały ten sam zestaw danych.
  18. v2.175.023 lipca 2026, 00:45

    Profil Artysty: jeden formularz w Gotowości i Presskicie

    • Krok „Kontakt & Ty” w Presskicie korzysta teraz z tego samego, pełnego formularza co Gotowość — bez uproszczonej kopii i bez rozjazdów pól.
    • W Presskicie są już te same sekcje: vibe, zainteresowania, ton komunikacji, bio, priorytety, sociale, poziom doświadczenia, zaangażowanie w social media, styl języka, persona, grupa wiekowa, management i dane do umowy.
    • Snapshot premiery zapisuje pełny zestaw pól profilu, więc suwaki i nowe dane nie powinny znikać po przejściu między Presskitem a Gotowością.
    • Karta „Co artysta wpisał w profilu” rozpoznaje i pobiera także nowe pola, zamiast ograniczać się do starego, krótszego zestawu.
  19. v2.174.023 lipca 2026, 00:15

    /save w stylu pressroomu: nowy chart, kafelek Feature.fm, sticky baner premiery

    • Sekcja Publiczne sygnały dostała area-chart 30 dni z gradientem (fuchsia→cyan), sparkline dziennych odtworzeń radia i osobny kafelek Feature.fm: wszystkie zapisy / jednorazowo / na stałe.
    • Sticky baner „Nadchodzi premiera” pojawia się nad hero na stronach pre-save z datą premiery i szybkim linkiem do zapisu.
    • Pill „Fragment · Xs” w meta-boxie znika po premierze — po wydaniu grasz pełny utwór w Spotify embed, bez śladów promocyjnego snippetu.
    • Admin w panelu smartlinka ma nowy box Feature.fm: pola total / one-time / forever, przycisk „Zapisz snapshot” i bookmarklet do przenoszenia liczb prosto z konsoli FFM (drag do paska zakładek → klik → wklej).
  20. v2.173.022 lipca 2026, 23:30

    /save: fallback socials z profilu, pełny player po premierze, kompaktowy CTA fandomu

    • Linki do sociali (IG/TT/YT/FB/Spotify) ciągną się teraz również z artist_profiles.personality — koniec z pustymi ikonkami, gdy artystka wpisała je w profilu.
    • Po premierze zniknął overlay Fragment na okładce i blok Fragment tekstu — bez wartości dla fana.
    • CTA Dołączam do fanów Artysty przeniesione pod okładkę w lewej kolumnie, w spójnej stylistyce (bez neonowej kafli).
    • Server dorzuca snapshot Feature.fm (nowa tabela smartlink_featurefm_stats) do metryk presave, a trigger DB wysyła artyście powiadomienie za każdą wiadomość z fan wall.
  21. v2.172.022 lipca 2026, 21:45

    /save: rozszerzone opinie fanów, kolorowe CTA fandomu i sprzątanie SongStats

    • ⭐ **Rating flow w 4 krokach** (przed i po premierze): 12 klimatów (Hit, Wzrusza, Buja, Energia, Chill, Nostalgia, Do tańca, Do słuchawek, Emocje, Klub, Radio-hit, Muszę osłuchać), gwiazdki z automatyczną etykietą (5 = „Jeden z ulubionych" → 1 = „To nie dla mnie") i tagi „co się podoba / mniej" (Wokal, Melodia, Tekst, Vibe, Produkcja, Bit, Refren, Brzmienie).
    • 💖 **Kolorowy CTA „Dołączam do fanów {Artysty}"** — gradientowy blok zapraszający do rejestracji i przyszłej Strefy Fanów zamiast białej korpo-karty.
    • 🤝 **CTA współpracy** dostał dwa dodatkowe przyciski: „Zobacz ofertę" (/oferta) oraz „Zobacz czym jest ID Records HUB" (/) — obok trzech ścieżek: demo, projekt produkcyjny, rozmowa.
    • 🧹 **Wywalone „SongStats" z UI publicznego** — fanowi mówimy o playlistach, radiu i dograniach, nie o nazwach narzędzi branżowych.
  22. v2.171.322 lipca 2026, 21:10

    Pilny fix: znikające dane profilu Artysty w Presskicie premiery

    • 🩹 **Profil Artysty przestaje „znikać"** w kroku 1 Presskitu — vibe, priorytety promocyjne, sociale, gusta i biografia zaciągają się teraz automatycznie z pełnego profilu (dokładnie tak, jak w zakładce Gotowość).
    • 🔁 **Jedno źródło prawdy**: ładowanie premiery dolewa brakujące pola z artist_profiles do snapshotu zgłoszenia, nie nadpisując tego, co Artysta/Admin już wpisał w konkretnym singlu.
    • ✅ **Dane Kasi Kokoryn (i wszystkich starszych zgłoszeń) wracają na widok** bez ruszania bazy — kolejny zapis Presskitu utrwala je również w snapshocie.
  23. v2.171.222 lipca 2026, 20:20

    /save: właściwe CTA współpracy, live DSP wall i pełniejsze opinie fanów

    • 🎯 **CTA „Śpiewasz? Twórz z nami"** nie prowadzi już do Talentobrania — są trzy konkretne ścieżki ID Records: wyślij demo, projekt produkcyjny i zamów rozmowę telefoniczną.
    • 🎧 **Live page po premierze** dostała Spotify embed oraz graficzny Wall of DSP (Spotify, Apple Music, YouTube / YouTube Music, TikTok, Shazam i Feature.fm jeśli jest podpięte).
    • 🔓 **30-sekundowy fragment po emailu**: fan może odblokować dłuższy snippet, a unlock zapisuje się w HUBie.
    • 📊 **Publiczne statystyki** na /save pokazują wejścia, pre-save/save, reakcje fanów, playlisty, radio/pressroom i dogrania SongStats w lekkiej formie.
    • ⭐ **Opinie fanów** są teraz bardziej kontekstowe: przed premierą 4 kroki (klimat → gwiazdki → słowo → zapis), po premierze gwiazdki + komentarz + werdykt.
  24. v2.171.122 lipca 2026, 19:30

    Feedbacki: nowa zakładka „Fani" — sygnały z /save w jednym miejscu

    • ❤️ **Zakładka „Fani"** w Feedbackach (Admin + Artysta) agreguje wszystko, co fani zostawili na stronie /save wybranego projektu.
    • ⭐ **Oceny przedpremierowe 1-5** ze średnią, rozkładem gwiazdek i ostatnimi komentarzami — od razu widać czy fragment „wchodzi".
    • 💿 **Werdykty po premierze** („Ulubiony / Spoko / Nie dla mnie") z procentami i kafelkami — sygnał czy singiel łapie fanów na dłużej.
    • 💬 **Ściana fanów** — pełna lista wiadomości; Admin może jednym klikiem ukryć / przywrócić widoczność na /save (soft-moderacja bez usuwania).
  25. v2.171.022 lipca 2026, 18:00

    /save v2 — ściana fanów, oceny, kalendarz i CTA Talentobranie

    • ⭐ **Anonimowe oceny 1-5** przed premierą: fani oceniają fragment jednym kliknięciem (jeden głos na urządzenie). Uśredniona ocena i liczba głosów widoczne od razu.
    • ❤️ **Werdykty po premierze**: „Ulubiony / Spoko / Nie dla mnie" — z wynikami procentowymi. Świetny sygnał dla artysty i A&R.
    • 💬 **Ściana fanów**: każdy może zostawić wiadomość dla artysty (do 500 znaków, imię opcjonalne). Ostatnie 20 widocznych publicznie, admin może moderować.
    • 📅 **Dodaj do kalendarza**: przycisk pobiera .ics z premierą (00:00 czasu warszawskiego) — działa w Google Calendar, Apple Calendar, Outlooku.
    • 🎤 **CTA „Śpiewasz? Twórz z nami"** kierujące do Talentobrania — subtelnie na dole każdej strony /save.
  26. v2.170.322 lipca 2026, 16:00

    Messenger: fix „pełnego ekranu" + auto-etykiety Premiera / Projekt

    • 🐛 **Fix**: klikanie „Otwórz w pełnym ekranie" w chat-headzie rozmowy bezpośredniej / team przenosiło do Crew Chatu. Teraz kieruje do właściwego wątku w Messengerze; do Crew Chatu wchodzą tylko kanały Label / Connect / HUB Support.
    • 💿 **Auto „Premiera"**: wątki premier w trakcie planowania mają automatyczną fioletową etykietę „Premiera" z ikonką płyty.
    • ✨ **Auto „Projekt"**: po wydaniu singla (status `released`) etykieta zmienia się na zieloną „Projekt" z ikonką błysku — łatwiej odróżnić aktywnie promowane single od tych przed premierą.
    • 👥 **Ikonki Crew**: Crew Chaty (Label / Connect / HUB Support) dostały ikonę kanału przy napisie „Crew". Rozmowy bezpośrednie zostają bez ikonki (tylko własna kategoria, jeśli ustawiona).
  27. v2.170.222 lipca 2026, 15:00

    Kategorie wątków w Messengerze zamiast mylnego „Crew"

    • 🏷️ **Kategoria rozmowy** przy tworzeniu nowego wątku: Dyskusja, Planowanie, A&R, Feedback, Pomysł, Kampania, Sprawy organizacyjne, Inne — plus możliwość wpisania własnej.
    • 🛠️ **Admin zmienia kategorię w locie**: mały tag w nagłówku wątku otwiera menu z presetami, własnym wpisaniem i opcją „Usuń kategorię".
    • 👁️ **Poprawiona etykieta**: wątki direct/team nie są już oznaczane jako „Crew" — pokazujemy nazwę kategorii (lub „Rozmowa" / „Team" / „Ogłoszenie" gdy jej nie ma). „Crew" zostaje wyłącznie dla rzeczywistego Crew Chatu (Label / Connect / HUB Support).
  28. v2.170.122 lipca 2026, 14:15

    Nowe wątki w Messengerze znowu się pokazują

    • 🐛 **Bug fix**: wątki utworzone przez „Nowy wątek" (kind: direct / team / odpowiedź na ogłoszenie) nie wpadały na listę Messengera — filtr obejmował tylko premiery i Crew Chat. Teraz widać każdy wątek.
    • 🔔 **Powiadomienia do artysty**: mail + push + in-app wychodzą normalnie (przez trigger on_new_message w bazie), zarówno przy tworzeniu wątku, jak i przy każdej kolejnej wiadomości.
  29. v2.170.022 lipca 2026, 13:30

    Publiczna strona /save/… — pierwsza fala odświeżenia

    • ⏰ **Premiera o 00:00 czasu polskiego**: countdown i data na /save/… liczą się teraz do północy Warsaw (nie 02:00). Naprawiony błąd offsetu UTC.
    • 🔗 **Playlisty ID Records = klikalne linki**: zamiast checkboxów masz teraz kafelki „kliknij → posłuchaj / obserwuj w Spotify". Playlisty pokazują się także po premierze.
    • 📱 **Socials artysty**: Apple Music, Facebook, X (Twitter) i SoundCloud dołączyły do Spotify / Instagrama / TikToka / YouTube — jako kafelki z ikonami. Nowe linki dopiszesz w panelu smartlinka.
    • 💬 **„Słowo od artysty"**: w prawej kolumnie zamiast duplikatu opisu pokazujemy krótką osobistą notkę od artysty (do 600 znaków). Edytujesz w panelu smartlinka → „Ekstra dane do publicznej strony".
    • 🖼️ **Poprzednie single**: okładki w „Posłuchaj więcej" podciągane teraz też z assetów premiery, jeśli smartlink nie ma jeszcze własnej okładki.
    • 📤 **OG / Twitter card**: rozszerzone tagi — na Messengerze, FB, X i innych link do /save/… pokazuje ładny podgląd z okładką, tytułem, opisem i datą premiery.
    • 🧭 **Roadmapa v2.170.1+**: pełna live-page po premierze (wall DSP, wykresy stream/radio, live komentarze fanów, embed YouTube), AI-bio artysty, engagement features (message wall, ranking fanów, 30s passcode) — lecimy dalej w kolejnych iteracjach.
  30. v2.169.522 lipca 2026, 12:10

    Feature.fm bez embeda — zostaje sam działający przycisk

    • 🎯 **Smartlink /save/…**: iframe Feature.fm wyleciał. Zostaje jeden duży CTA „Zapisz przez Feature.fm”, który otwiera zapis w nowej karcie i naprawdę działa.
    • 🧠 **Dlaczego**: OAuth Spotify/Apple/Deezer wymaga przejęcia całej karty (top-level redirect). W sandboxowanym iframe klik „Save” nic nie robił, a bez sandboxa Feature.fm nadpisywał naszą stronę presave. Nowa karta to jedyna ścieżka, która działa u fana i zostawia nasz smartlink otwarty.
  31. v2.169.422 lipca 2026, 10:35

    Feature.fm działa z CTA + backfill „Brak” z newslettera Berie

    • 🎯 **Feature.fm na smartlinku** dostał główny przycisk „Zapisz przez Feature.fm”, który otwiera Spotify/Feature.fm w nowej karcie lub popupie. Iframe zostaje jako podgląd, ale nie jest już jedyną ścieżką — klik w widget nie blokuje presave'u.
    • 📰 **Newsletter → Feedback/Brak**: resolver newsletterów czyta teraz realne bloki z `body_md` / `body_blocks` oraz `project_ids`, więc otwarcia maila bez kliknięcia trafiają do właściwych singli także dla starszych newsletterów.
    • ✅ **Berie „Tu i Teraz”**: uzupełnione kanały, które otworzyły ostatni newsletter, ale nie kliknęły — status „Brak”, support 0,1 i sekcja Feedback.
  32. v2.169.322 lipca 2026, 00:20

    Feature.fm nie przejmuje już całego okna presave

    • 🖼️ **Sandbox na iframe Feature.fm** (`/save/…`) — klik „Zapisz w Spotify" nie robi już `window.top.location` i nie „nadpisuje" naszej strony presave. OAuth Spotify odbywa się w ramce lub w popupie, a odliczanie, okładka i opis singla zostają widoczne przez cały czas.
    • 🔐 Dołożone uprawnienia (`allow-popups`, `allow-popups-to-escape-sandbox`, `allow-storage-access-by-user-activation`) tak, żeby logowanie do Spotify i zapis presave dalej działały normalnie — po prostu nie na całą stronę.
  33. v2.169.221 lipca 2026, 23:55

    Pressroom stats bez uciętych „Wszystkich" + Feature.fm embed na smartlinku

    • 📊 **Statystyki pressroomu — Berie „Tu i Teraz" i inne newslettery znów widoczne.** Pobieranie eventów (`press_events`) leci teraz stronami po 1000 zamiast jednym `.limit(50000)` — PostgREST cap'ował je do ~1000, przez co filtr „Newsletter → konkretny numer" trafiał na pustkę, a „Wszystkie (ogółem)" pokazywały mniej niż pojedynczy tygodniowy serwis.
    • 🎯 **Feature.fm na publicznym smartlinku (`/save/…`) — embed by default.** Jeśli wklejony jest link Feature.fm, natywny „Pre-save w Spotify" znika (i tak nie działał bez extended quota), a fani widzą osadzony widget Feature.fm z pełnym menu DSP (Spotify · Apple · Deezer · YT Music).
    • 🔘 **Nowy toggle „Pokaż jako przycisk"** (`admin → Premiery → Smartlink → Edytuj`): zamiast iframe pokaże się jedno duże CTA prowadzące bezpośrednio na stronę Feature.fm — do wyboru gdy embed źle się skaluje w konkretnym singlu.
  34. v2.169.121 lipca 2026, 23:10

    Analytics live newslettera otwiera się szybciej

    • ⚡ **Analytics live** (`/admin/pressroom/newsletter` → zakładka „Analytics live") otwiera się teraz zauważalnie szybciej. Zapytania do bazy lecą równolegle w dwóch falach: (1) odbiorcy + log EmailLabs + eventy newslettera; (2) profile dziennikarzy + kanały + wywiady — zamiast sekwencyjnie jedno po drugim.
    • 🧠 **Cache 30 s** — jak przełączysz się na Edytor i wrócisz, dane pokazują się od razu ze snapshotu, a świeży fetch dzieje się w tle bez pustego spinnera.
    • 🖱️ **Prefetch on hover** — najechanie kursorem na przycisk „Analytics live" startuje pobieranie zanim klikniesz. Klik = dane już czekają.
    • ℹ️ Kontekst do Twojego pytania: awaria 30.06 nic nie skasowała — dane były cały czas kompletne. Wolniejsze otwarcie to efekt kolejnych warstw analityki, które nakładaliśmy sekwencyjnie. Teraz są znowu równolegle.
  35. v2.169.021 lipca 2026, 22:15

    Newsletter: „brak"-i wpadają automatycznie do wszystkich singli z maila

    • ✨ **Koniec wyboru „jednego projektu" w newsletterze.** System teraz sam wyciąga single z bloków „Sekcja singli" i „Single (1 utwór)" wstawionych w mailu — otwarcia bez klika trafiają jako kanał z bucketem „brak" do KAŻDEGO z tych projektów naraz, a nie tylko do jednego.
    • 🟢 **Podgląd w edytorze:** nad polem wyboru projektu widzisz teraz zieloną ramkę „Auto z bloków: N singli" z listą (Artysta — Tytuł). Pole projektu zostaje jako opcjonalny fallback — użyj go tylko dla czysto tekstowych pitchy bez bloku singla.
    • 🔧 **Kolejność źródeł:** (1) serwis tygodniowy, (2) bloki maila, (3) ręcznie wybrany projekt — pierwsze dwa źródła się sumują (dedup po UUID), trzecie odpala się tylko gdy dwa pierwsze były puste.
    • 📝 **Kontekst:** wersja 30.06 dodała bucket „brak" jako typ wpisu przy otwarciu newslettera. Sama logika działała cały czas, tylko liczniki i listy dziennikarzy w edytorze zwracały 0 przez obcinanie URL-i PostgREST (naprawione w v2.168.13/14). Teraz zamykamy temat po stronie UX — nie musisz już pamiętać o zaznaczaniu projektu.
  36. v2.168.1421 lipca 2026, 21:30

    Newsletter: licznik odbiorców „Radio" znów pokazuje 398

    • 🩹 **Edytor newslettera** (`/admin/pressroom/newsletter`): licznik „X z 614 dziennikarzy" znów działa — segment Radio pokazuje 398, Web/blogi 164, TV 42 itd. Wcześniej pokazywał 0 i blokował wysyłkę.
    • 🔧 To ta sama przyczyna co w v2.168.13 (PostgREST obcinał URL z 614 UUID-ami i po cichu zwracał pustą listę), tylko w innej funkcji — `adminCountNewsletterRecipients` oraz resolver segmentów przy generowaniu treści. Oba miejsca batchują teraz `.in()` po 200 rekordów.
  37. v2.168.1321 lipca 2026, 20:45

    Naprawa liczników segmentów i „brak" w liście dziennikarzy

    • 🩹 **Segmenty PressRoom** (Radio / TV / Web/blogi / Podcast) znów pokazują prawdziwe liczby — Radio 398, TV 42, Web/blogi 164 itd. Wcześniej wyświetlało się 0, choć w bazie wszystko było ok.
    • 🩹 **Lista dziennikarzy** (`/admin/pressroom/journalists`) przestała pokazywać „brak" w kolumnie *Stacja / kanał* i „Podłącz konto" dla wszystkich — dane profili, kanałów, aktywności i feedbacku ładują się poprawnie.
    • 🔧 Przyczyna: zapytania z listą 614 UUID-ów przekraczały limit długości URL PostgREST i po cichu wracały puste. Teraz batchujemy je po 200 rekordów — dane wracają w komplecie niezależnie od rozmiaru bazy dziennikarzy.
  38. v2.168.1221 lipca 2026, 20:00

    Feature.fm na smartlinku + powiadomienia o rollout + szybszy zapis

    • ✨ **Feature.fm obok natywnego pre-save** na publicznej stronie premiery: jeśli podepniesz link Feature.fm w panelu smartlinka, fani zobaczą go jako dodatkowy przycisk (Apple Music / Deezer / YT Music), niezależny od naszego pre-save Spotify — jeden smartlink, dwie ścieżki zapisu.
    • 🔔 **Powiadomienie dla artysty**, gdy admin wygeneruje / dogeneruje **Plan & Rollout** dla jego premiery. Artysta wchodzi prosto w zakładkę Plan.
    • ⚡ **Natychmiastowy zapis** linków Feature.fm i DSP w panelu smartlinka — panel przełącza się w tryb podglądu od razu (optimistic update), a odświeżenie danych leci w tle. Koniec z pozorem zawieszenia strony po wklejeniu długiego linka.
  39. v2.168.1121 lipca 2026, 18:00

    Kontakt z kandydatem prosto ze strony premiery

    • 📇 Na stronie premiery (admin) pod messengerem A&R dodaliśmy zwijany panel **„Kontakt z kandydatem"** — ten sam system, który znasz z /admin/kandydaci.
    • ✉️ W jednym kliknięciu wyślesz magic-link zapraszający artystę do HUBa (albo logujący go od razu, jeśli ma już konto), skopiujesz link do schowka i podejrzysz historię maili (wysłany / otwarty / kliknięty).
    • ➕ Jeśli premiera powstała bez maila artysty — po prostu wpisz adres w polu i wyślij zaproszenie. Konto w HUBie utworzy się automatycznie po kliknięciu w magic-link i od razu zostanie powiązane z tą premierą.
    • 🔁 Każdą wcześniejszą wiadomość A&R z tej premiery możesz „Wyślij ponownie mailem" — przydatne, gdy artysta trafił w spam.
  40. v2.168.1021 lipca 2026, 17:00

    Newslettery ad-hoc: śledzenie otwarć w projekcie

    • 📬 Newslettery ad-hoc (np. singlowe „Berie") można teraz powiązać z konkretnym projektem przez nowe pole **„Powiązany singiel / projekt"** w edytorze newslettera.
    • 👁️ Otwarcia maila bez kliknięcia automatycznie tworzą kanał w tym projekcie jako status „Brak", więc stacje, które otworzyły newsletter ale nie odpowiedziały, pojawią się w edycji projektu i w feedbackach.
    • 🔧 Naprawiono brak kanałów z otwarć dla newsletterów niebędących częścią serwisu tygodniowego — wcześniej system szukał tylko weekly_issue_id, a teraz fallbackuje na project_id.
  41. v2.168.921 lipca 2026, 16:00

    Chat A&R w premierze: wklejanie załączników + mirror z Messengera

    • 📋 **Ctrl/⌘+V w chacie premiery** (admin i artysta) — zrzuty ekranu, obrazki, wideo i audio wklejamy prosto z schowka, tak samo jak w normalnym Messengerze. Plik ląduje jako załącznik gotowy do wysłania (można go usunąć krzyżykiem przed wysłaniem).
    • 🔁 **Mirror Messenger → strona premiery** obejmuje teraz również załączniki. Jeśli w Messengerze projektu ktoś wyśle obraz / wideo / voice — pojawi się on też w oknie chatu A&R na stronie premiery (podpisany URL ważny rok).
    • 🧠 Poprzednio mirror przenosił tylko treść tekstową, więc załączniki „gubiły się" w widoku premiery. Teraz obie rozmowy są w pełni spójne w obie strony.
  42. v2.168.821 lipca 2026, 15:00

    Kandydaci: „Wyślij ponownie mailem" przy każdej wiadomości A&R

    • ✉️ Nowa sekcja **„Wiadomości A&R"** w karcie kandydata — pokazuje ostatnie wiadomości wysłane z premier, ze snippetem, tytułem singla i informacją czy poszedł mail (i czy został otwarty / kliknięty).
    • 🔁 Przy każdej wiadomości przycisk **„Wyślij ponownie mailem"** — ponownie enqueue'uje maila z tą samą treścią, świeżym magic-linkiem i nowym messageId (śledzenie od zera).
    • 🧠 Przydatne, gdy pierwszy mail wpadł kandydatowi w spam lub gdy wiadomość pochodzi sprzed automatu i nigdy nie wyszła mailem — teraz widać to na pierwszy rzut oka („mail nigdy nie poszedł" vs. „otwarty / kliknięty").
  43. v2.168.721 lipca 2026, 14:00

    Powiadomienia z premier + fix zapisu profilu

    • 🔔 **Powiadomienia „Nowa wiadomość od artysty / A&R"** pokazują teraz tytuł singla (np. „Wiadomość od artysty — „Nie mogę Cię zapomnieć""), więc wiadomo z której premiery przyszła.
    • 🛠️ **Zapis profilu / danych do umowy** nie wywala już walidacji Zoda, gdy któryś z linków (demo, cover, wideo, TikTok, Spotify, Instagram) jest pusty — schema `patch.links` dopuszcza `null` obok stringa.
  44. v2.168.621 lipca 2026, 13:10

    Newsletter: Notka A&R nie traci już focusu

    • ✍️ **Naprawiony edytor Notki A&R** w sekcji singli newslettera — po kliknięciu w pole można normalnie pisać, bez trzymania przycisku myszy.
    • 🧩 Przyczyną był wrapper pola formularza: edytor TipTap był zagnieżdżony w tagu label, co po puszczeniu kliknięcia potrafiło odbierać focus.
  45. v2.168.521 lipca 2026, 12:50

    Dogrania: skan SongStats zapisuje kafle metryk i top twórców

    • 📈 **Views/likes/komentarze nie zostają już zerami** — parser czyta nie tylko serie wykresu, ale też kafle SongStats typu „Views”, „Likes”, „Comments”, „Video Likes”.
    • 👤 **Dół modułu nie jest pusty** — gdy SongStats nie daje konkretnego URL-a filmu, zapisujemy wpis profilu/twórcy z linkiem do SongStats albo profilu platformy.
    • 🔁 **„Skanuj dogrania” realnie odświeża dane** — agregaty platformowe i lista twórców aktualizują się po kliknięciu, także dla tracków z samymi top-tabelkami.
  46. v2.168.421 lipca 2026, 09:30

    Dogrania: naprawione statystyki z SongStats (views/likes/kom/share)

    • 📊 **Koniec zer w bannerze** — sumujemy metryki z per-creator tabelek SongStats (top TikTok/IG/YT), nie tylko wykresy „Videos". Views, likes, komentarze i share idą teraz do agregatów platformowych.
    • 👥 **Lista dograń nie jest już pusta** — każdy twórca z topki SongStats zapisuje się jako wpis „dograł Cię" z linkiem do profilu (TikTok, IG, YT), followersami i metrykami swojego udziału.
    • 🧮 **Quality score liczony na kompletnych danych** — dzięki temu podpowiedź „wzrasta / stabilnie / spada" ma sens, a nie wisi na twardym 25.
  47. v2.168.321 lipca 2026, 06:10

    Premiery: „Materiały" wracają — w pełni zsynchronizowane z Presskit krok 8

    • 📦 **Zakładka „Materiały" przywrócona** (admin + artysta) — renderuje dokładnie ten sam komponent co Presskit → krok „Pliki do dystrybucji". Zmiana w jednym miejscu = zmiana w drugim (te same assety w bazie).
    • 🔁 **Widoczne też w Gotowości** — checklist dokumentów i plików nadal działa, teraz z szybkim dostępem z osobnej zakładki „Materiały".
    • 🧹 **Bez duplikacji danych** — wgrywasz raz, widzisz wszędzie: Presskit, Materiały, Gotowość.
  48. v2.168.221 lipca 2026, 05:20

    Premiery: sprzątanie zakładek — koniec pustej „Materiały", „Po wydaniu" wraca

    • 🧹 **Usunięta zakładka „Materiały"** (admin + artysta). Była pusta — jej treść (audio, okładka, pliki dystrybucyjne) i tak siedzi w Presskit → krok „Pliki". Teraz wszystko w jednym miejscu, bez ślepych zaułków.
    • 🧭 **Plan & rollout odchudzony u artysty** — z zakładki wyleciały stare kafle „Generator grafik pre-save", „Wywiad z Artystą", „Prośby dziennikarzy". Te kroki żyją teraz w zakładce **Gotowość** (jedno miejsce prawdy).
    • 📖 **„Dokończ tę premierę" domyślnie rozwinięte** w zakładce Gotowość — koniec klikania „rozwiń", żeby zobaczyć checklistę.
    • 🎉 **Zakładka „Po wydaniu" znów zawsze widoczna** (admin i artysta). Przed wydaniem singla jest zablokowana z jasnym komunikatem, po oznaczeniu premiery odsłania post-mortem i panel wsparcia.
  49. v2.168.121 lipca 2026, 04:10

    PressRoom: precz z duplikatem „AI — materiały promocyjne"

    • 🧹 **Usunięty blok „AI — materiały promocyjne" z PressRoom** (admin premiery). Był zbędny — te same generatory (informacja prasowa, notka radiowa, Spotify pitch PL/EN) żyją teraz w PressRoom właściwym i w Plan & rollout. Zakładka odzyskała czytelność.
  50. v2.168.021 lipca 2026, 03:45

    Plan & rollout: brief admina, tryb „Dogeneruj", filtry i poprawka dni

    • 🧠 **Brief generatora rolloutu** — nad listą pomysłów admin ustawia teraz: cele kampanii (pre-save, radio, viral TikTok, playlisty, live, IRL, media, kolaboracje…), fazy do wygenerowania (przed/dzień/po), zawężenie kategorii akcji, ilość pozycji (4–30), horyzont po premierze (do X dni) oraz dodatkowy kontekst w polu tekstowym. AI ma teraz konkretny brief zamiast strzelać po ciemku.
    • ➕ **Tryb „Dogeneruj do istniejącego planu"** — obok „Wygeneruj od nowa". AI dorzuca WYŁĄCZNIE nowe pozycje uzupełniające obecny rollout (z automatycznym dedupem), nie kasuje tego, co artysta już widzi i odhaczył.
    • 🎛️ **Filtry listy** — pod briefem admin i artysta mogą teraz filtrować pomysły po fazie (Przed / Dzień / Po) i po kategorii akcji, z licznikiem widocznych pozycji.
    • 📅 **Koniec błędu „3 dni po premierze" liczonych jako przed** — AI zwraca teraz jawny `when_offset_days` (liczbę całkowitą dni względem premiery), której używa parser terminów w kalendarzu, kolejce social i przypomnieniach. Wcześniejsza heurystyka tekstowa mogła policzyć „3 tygodnie po" jako „przed" — już nie.
    • 🧹 **PressRoom bez duplikatu** — z zakładki PressRoom wyleciał ponowny generator pomysłów na social media (był identyczny z tym w Social Studio → Plan). W PressRoom zostają wyłącznie materiały prasowe.
  51. v2.167.821 lipca 2026, 03:10

    Premiery admin: prawdziwa „Gotowość" + Plan bez duplikatów

    • ✅ **Zakładka „Gotowość" u admina** — koniec placeholdera. Pokazuje ten sam pełny checklist gotowości premiery co artysta (paski postępu, sekcje MUST/BOOST/MAX, linki do brakujących kroków), plus panel VoiceDrop.
    • 🧹 **Plan & rollout odchudzony** — z tej zakładki wyleciały zduplikowane karty „AI — materiały promocyjne" i „Generator pomysłów na social" (te same generatory były już w innych miejscach).
    • 📰 **PressRoom = centrum treści** — generator notek (prasowa/radio/Spotify pitch) i generator postów social przeniesione do zakładki PressRoom, żeby cała robota tekstowo-promocyjna była w jednym miejscu.
  52. v2.167.721 lipca 2026, 02:40

    Premiery: rollout AI → kolejka social (drafty w Studio)

    • 📣 **Do social** — obok „Do kalendarza" pojawił się przycisk **„Do social"** przy każdej opublikowanej pozycji rolloutu z kanału social (IG/TikTok/YouTube/Facebook, w tym Reels/Stories/Shorts).
    • 📥 Klik → nowy draft w kolejce social artysty (Social Studio) z prawidłową platformą, typem (post/reel/story/video), terminem z „when" i briefem zaciągniętym z sugestii.
    • 🧺 Bulk **„Do social (N)"** nad listą — wrzuca wszystkie zaległe social-sugestie jednym kliknięciem. Cofnięcie usuwa draft (tylko dopóki nie został opublikowany).
  53. v2.167.621 lipca 2026, 02:10

    Premiery: admin ticker na osi etapów + rollout AI → kalendarz

    • ✅ **Admin ticker na osi etapów** — Admin klika w kropkę etapu (Szkic, Umowa, Dystrybucja…) i może ręcznie oznaczyć krok jako wykonany, nawet gdy status w bazie jest wcześniej. Etap zapala się na zielono z ptaszkiem + opcjonalną notatką („umowa podpisana ręcznie 12.07").
    • 🗓️ **Rollout AI → prawdziwy kalendarz** — przy każdej opublikowanej pozycji rolloutu jest przycisk **„Do kalendarza"** (i bulk „Do kalendarza (N)" nad listą). Sugestia trafia jako pełnoprawne wydarzenie do kalendarza artysty z terminem policzonym względem daty premiery.
    • ↩️ Można też cofnąć — przycisk zmienia się w **„W kalendarzu"** i po kliknięciu usuwa wpis z kalendarza.
  54. v2.167.521 lipca 2026, 01:40

    Premiery: sprzątanie „głównej" + osobna zakładka „Produkcja · Brief"

    • 🧹 **Post-Mortem („Co poszło, co poprawić")** przeniesiony z górnej sekcji strony premiery do zakładki **„Po wydaniu"** (u artysty i admina).
    • 🧠 **AI — materiały promocyjne** znikają z głównej — cała karta trafia do zakładki **„Plan & rollout"** (u admina), gdzie logicznie pasują do przygotowania premiery.
    • 🎛️ **Brief produkcyjny** dostaje własną zakładkę **„Produkcja · Brief"** tuż przed „Ofertą". Dotychczasowa zakładka „Produkcja" (przebieg produkcji) dostaje dopisek **„Przebieg"** — dwie różne rzeczy, dwa różne miejsca.
    • 📱 **Mobile menu premiery**: pasek zakładek na telefonie zamienia się w hamburgera z listą sekcji — koniec z poziomym scrollem.
  55. v2.167.421 lipca 2026, 01:05

    Smartlink: Feature.fm — pola admina, CTA i powiadomienie artysty

    • 🔗 **Feature.fm w panelu Smartlink (admin)** — nowe pola „Link do pre-save Feature.fm" + „Link do statystyk" + przełącznik „Użyj Feature.fm jako główne CTA". Zapis idzie w tej samej akcji co reszta linków DSP.
    • 📣 **Karta Feature.fm u artysty** — od razu widoczna z przyciskami „Otwórz pre-save", „Kopiuj" i (jeśli podpięte) „Statystyki". Znika dopóki admin nie wklei linku.
    • 🔔 **„Powiadom artystę"** — jeden klik wysyła powiadomienie do artysty (kolejka notyfikacji), zapisuje datę i pozwala powiadomić ponownie, gdyby coś się zmieniło.
  56. v2.167.321 lipca 2026, 00:35

    Premiery: przywrócona zakładka „Start" u admina

    • 🩹 **Fix**: allowlist trybów prezentacji (Lite/Standard/Pro) obcinał adminowi zakładki „Start", „Materiały", „Smartlink" i „Gotowość". Teraz wszystkie są w allowliście, więc pełny pasek zakładek wraca u admina i u artysty.
  57. v2.167.221 lipca 2026, 00:20

    Premiery: Start admina + zwijany Brief produkcyjny z CTA wysyłki

    • 🧭 **Zakładka „Start" u admina** zbiera teraz „Brief kandydata" i edytor „Treść od artysty" (razem z uploaderem assetów) — koniec z pływającymi kartami nad zakładkami.
    • 📦 **Brief produkcyjny domyślnie zwinięty** (artysta i admin) — jeden klik „Rozwiń brief" pokazuje pełny formularz; adminowi zostaje rozwinięty, gdy brief jest pusty.
    • 📮 **„Wyślij do weryfikacji wydawcy"** — na dole briefu artysta klika CTA, dostajemy status z datą wysyłki (widoczny w nagłówku), można cofnąć i dalej edytować.
  58. v2.167.120 lipca 2026, 23:55

    Kandydaci: miniaturka okładki na karcie zgłoszenia

    • 🖼️ **Okładka na karcie kandydata** — pobieramy ją teraz z `release_assets` (kind=cover) analogicznie do modułu Premiery, więc chip „Okładka ✓" i miniaturka faktycznie się pokazują, gdy artysta ją wgra w formularzu demo.
  59. v2.167.020 lipca 2026, 23:30

    Kandydaci: nowy panel z podglądem demo + „Przygotuj premierę"

    • 👥 **Overhaul modułu Kandydaci** — grid z bogatymi kartami: okładka + audio demo, planowana data premiery, gatunki, notka A&R, story, tekst, inspiracje i linki wprost z formularza zgłoszenia.
    • 🔍 **Filtry i sortowanie**: „Wszyscy / Nowi / W ocenie / Wymagają follow-up / Bez audio" z licznikami; sort po najnowszych, ostatniej aktywności lub dacie planowanej premiery.
    • ✨ **„Przygotuj premierę"** jednym kliknięciem tworzy profil artysty (auto-slug), przypina go do zgłoszenia, ustawia status *approved* i wysyła kandydatowi welcome + magic-link do onboardingu.
    • 📎 **„Po wydaniu"** — zakładka *Premiera* została przemianowana i przesunięta na koniec paska (obok *Gotowości*) zgodnie z faktycznym momentem, w którym się z niej korzysta.
  60. v2.166.020 lipca 2026, 22:15

    Moduł Premiery: overhaul zakładek (faza 1)

    • 🧭 **Nowa zakładka „Gotowość"** na samym końcu paska — aktywna od statusu planowania. To tu zjeżdża widget „Dokończ premierę", który dotychczas przytłaczał na samej górze.
    • 🔗 **Smartlink jako osobna zakładka** (artysta i admin) — wychodzi z Plan & Rollout i Premiery. W tabeli `release_smartlinks` doszły pola pod Feature.fm (link do smartlinka + link do statystyk) — panel do wklejania zbudujemy w kolejnej fazie.
    • 👥 **Artysta wreszcie widzi Splity** — nowa zakładka między Ofertą a Umową (do tej pory były tylko po stronie admina).
    • 📋 **Admin ma teraz zakładki Start + Materiały** i jednolitą kolejność: Start → Presskit → Materiały → Oferta → Splity → Umowa → Produkcja → Plan & Rollout → Smartlink → Premiera → Propozycje → PressRoom → Gotowość.
    • 🎉 **Po wydaniu singla** na górze widoku premiery wyświetla się duży baner „Twój singiel został wydany" z CTA „Zgłoś nowy projekt".
    • 🗄️ **Baza pod kolejne fazy overhaulu**: dodane kolumny w `release_rollout_proposals` (steps, platform, category, time_estimate) pod unified Rollout+Social generator, oraz `artist_briefs.submitted_at` pod CTA „wyślij brief do weryfikacji wydawcy".
    • 📌 **Faza 2 (następne tury)**: overhaul modułu Kandydaci (grid z danymi z formularza demo, filtry, „Przygotuj premierę"), unified Rollout+Social generator z 20+ kategoriami i planem realizacji krok-po-kroku, admin ticker control, logika collapse briefu produkcyjnego, embed Feature.fm w Smartlinku, przeniesienie „Treść od Artysty" do zakładki Start admina.
  61. v2.165.1220 lipca 2026, 21:30

    Zgłoszenie demo = Start wizard + znaczki gotowości zakładek

    • 📝 **Publiczny formularz demo dostał komplet pól ze Startu**: data premiery, gatunek (z listą), krótkie „O czym jest ta piosenka", notka do A&R oraz upload okładki (JPG/PNG do 15 MB) obok pliku audio.
    • 🎯 **Po akceptacji singla artysta domyślnie ląduje na Presskicie**, żeby od razu wiedział, gdzie kontynuować pracę.
    • 🟢 **Każda zakładka premiery (artysta i admin) ma znaczek stanu** — ✓ gotowe, ! do zrobienia, ⏳ czeka na wcześniejszy krok — bez klikania widać, co jest domknięte.
  62. v2.165.1120 lipca 2026, 20:45

    Kandydaci: koniec fałszywego pytania o hasło

    • 🔑 **Ekran hasła uruchamia się tylko po wyraźnej fladze pierwszego logowania** — jeśli link jest stary, powrotny albo konto ma już hasło, kandydat trafia od razu do premiery bez dodatkowego kroku.
  63. v2.165.1020 lipca 2026, 20:20

    Kandydaci: hasło tylko przy pierwszym wejściu

    • 🔑 **Magic-link nie zatrzymuje już ponownie na ekranie hasła** — prompt jest jednorazowy: jeśli kandydat już go widział, pominął albo ustawił hasło, kolejne kliknięcia z maila logują od razu do pełnej premiery.
  64. v2.165.920 lipca 2026, 20:00

    Strona statusu demo: rozmowa z A&R na górze

    • 💬 **Zmieniona kolejność sekcji na /demo/track/<token>** — najpierw „Rozmowa z A&R", potem „Otwórz pełny edytor premiery", na końcu „Dopisz coś od siebie". Kandydat od razu widzi komunikator, a dopiski trafiają pod CTA do HUBa.
  65. v2.165.821 lipca 2026, 09:00

    Premiera dla artysty: zwinięta gotowość, większe zakładki i komunikat „zablokowane"

    • 🎯 **„Dokończ tę premierę" domyślnie zwinięte** — na dzień dobry artysta nie jest bombardowany checklistą; jeden przycisk „rozwiń" pokazuje pełną listę kroków, żeby jak najlepiej przygotować się do premiery.
    • 🧭 **Większe, lepiej widoczne zakładki etapów** — pasek zakładek nad „Rozmową z A&R" ma teraz większe przyciski, mocniejszy kontrast i wyraźny stan aktywny/zablokowany.
    • 🔒 **Zablokowane zakładki tłumaczą, czego brakuje** — kliknięcie w Presskit / Materiały / Ofertę / Umowę / Plan przed czasem pokazuje jasny komunikat: „ta zakładka zostanie odblokowana, gdy…" (akceptacja singla, wypełniony presskit + materiały, akceptacja oferty, podpisana umowa) + przycisk powrotu do właściwej zakładki i przypomnienie, że można też zapytać wydawcę w komunikatorze A&R.
  66. v2.165.720 lipca 2026, 23:30

    Kandydaci: magic-link do pełnego edytora + ustaw hasło

    • 🔗 **Odpowiedz w HUBie prowadzi do pełnej premiery** — link z maila A&R (oraz z powitania po akceptacji) mintuje jednorazowy magic-link i loguje kandydata prosto do edytora `/releases/<id>` ze wszystkimi krokami (presskit, oferta, umowa, materiały).
    • 🔑 **Ustaw hasło po pierwszym logowaniu** — po kliknięciu magic-linka kandydat trafia na ekran `/kandydat/haslo`, gdzie może w kilka sekund ustawić hasło i wrócić później bez linku (albo pominąć i zrobić to kiedy indziej).
    • 🚀 **Na stronie statusu demo nowy przycisk „Otwórz pełny edytor premiery"** — jednym kliknięciem kandydat leci do HUBa (bez pamiętania hasła). Chat z A&R i strona statusu dalej działają bez logowania.
    • 🔓 **Zawsze magic-link do kandydata** — nawet gdy zgłoszenie ma już przypisanego artystę, link A&R nie prowadzi już do trasy wymagającej ręcznego logowania.
  67. v2.165.620 lipca 2026, 22:00

    Kandydaci-goście: chat z A&R na stronie statusu demo

    • 💬 **Komunikator na /demo/track/<token>** — kandydat pisze do A&R bez logowania, wiadomości lecą do release_status_log i widać je w edytorze premiery.
    • 📧 **Mail potwierdzający z linkiem do statusu** — po wysłaniu demo gość dostaje maila z przyciskiem prowadzącym prosto do statusu i komunikatora.
    • 🔔 **Alert dla A&R** — gdy kandydat odpisze na stronie statusu, adminowie dostają maila z podglądem i linkiem do panelu Kandydaci.
  68. v2.165.520 lipca 2026, 21:00

    Kandydaci: mail z Messengera + poprawny odsłuch demo

    • 📩 **Messenger → kandydat wysyła maila poprawnie** — bezpośredni mailer dla wiadomości A&R dopina teraz wymagany token wypisu, a procesor kolejki potrafi uratować też starsze wiadomości, które utknęły z `missing_unsubscribe`.
    • 🎧 **„Twój link do demo” nie prowadzi już do technicznego `dropbox:/...`** — status demo zamienia ścieżkę Dropbox na działający tymczasowy link odsłuchu/pobrania.
    • 🧹 **Historia maili w Kandydaci jest czytelniejsza** — retry tego samego messageId są scalane w jeden wpis, zamiast pokazywać kilka czerwonych błędów pod rząd.
  69. v2.165.420 lipca 2026, 19:00

    Premiery: Pro domyślnie, naprawiony link statusu i kliknięcia maili

    • 🎛️ **Premiery startują w Pro** — backend miał jeszcze domyślne Lite, więc nowe i stare zgłoszenia potrafiły wracać do uproszczonego widoku. Default i istniejące rekordy są przestawione na Pro.
    • 🔗 **Link statusu demo działa poprawnie** — publiczne /demo/track/... nie wpada już w formularz nowego zgłoszenia, tylko otwiera status po tokenie.
    • 📬 **Kandydaci: otwarcia + kliknięcia** — historia maili pokazuje teraz, czy wiadomość została wysłana, otwarta i czy kandydat kliknął link powrotu do zgłoszenia.
  70. v2.165.320 lipca 2026, 18:00

    Dogrania: statystyki platform, jakość i filtry okresu

    • 📊 **SongStats nie udaje już postów z wykresu** — serie typu „Videos” / „Views” zapisujemy jako agregaty platform, więc widać np. ile dograń ma TikTok albo Instagram nawet wtedy, gdy SongStats nie zwraca konkretnych URL-i postów.
    • 🎛️ **Filtry i sortowanie** — admin i artysta mogą filtrować dogrania po singlu, platformie, okresie (24h / 7d / 30d / 90d) i sortować po jakości, zasięgu albo najnowszych.
    • 💡 **Co dalej z trendem** — widok pokazuje jakość platform, trend i rekomendacje działań: osobno dla artysty oraz dla wydawcy/admina.
    • 🧭 **Strona główna Dograń** — dodany ranking platform i ostatnie konkretne dogrania, żeby szybko widzieć gdzie singiel realnie zaczyna iść.
  71. v2.165.220 lipca 2026, 17:00

    Dogrania: poprawne źródła, filtr singla i globalne odświeżanie

    • 🧹 **Koniec śmieci z YouTube** — wyłączyłem blind-search po samym tytule, który łapał niepowiązane filmy. YouTube wpada teraz tylko po konkretnym video_id albo przez dane SongStats powiązane z trackiem.
    • 🎵 **Filtr po singlu** — admin i artysta mogą wybrać konkretny utwór / ISRC, żeby przy kilku aktywnych singlach widzieć dogrania tylko dla jednej premiery.
    • 🚀 **Globalny refresh** — w panelu admina Dograń jest przycisk „Odśwież wszystkie dogrania”, a moduł trafił do dropdownów Social u admina i artysty.
    • 📊 **Szerszy parser SongStats** — skan próbuje więcej wariantów list TT/IG/YT/FB i zapisuje posty ze źródłem singla, żeby dane nie mieszały się między projektami.
  72. v2.165.120 lipca 2026, 16:00

    Dogrania: skan czyta realne dane SongStats zamiast pustej listy

    • 🎵 **Autoźródła z aktywnych singli** — kliknięcie „Skanuj dogrania” samo tworzy źródła dla aktywnych projektów / premier po ISRC, Spotify ID i SongStats track_id. Nie trzeba ręcznie dopisywać TikTok sound_id, żeby wystartować.
    • 📊 **SongStats jako główne źródło dograń** — moduł próbuje pobrać TikToki, Reelsy i YouTube z SongStats (API + fallback na zapisaną sesję), a RapidAPI / YouTube API zostają jako uzupełnienie.
    • 🧭 **Diagnostyka w panelu admina** — widok artysty pokazuje listę wykrytych źródeł, ISRC, SongStats i informację czy źródło było automatyczne czy ręczne.
  73. v2.164.020 lipca 2026, 14:00

    Kandydaci: widzimy kto przeczytał, kto ma telefon i „Wyślij ponownie"

    • 📞 **Telefon i pełny kontakt na wierzchu** — panel Kandydatów (/admin/kandydaci) pokazuje numer telefonu (klikalny → wybiera), email i wszystkie znane dane z intencji roli, żeby żaden kontakt nie umknął.
    • 📬 **Historia maili z otwarciami** — każda pozycja rozwija listę ostatnich 10 wysłanych wiadomości (Akcept + magic-link / Wiadomość A&R / Zmiana statusu / Potwierdzenie) z ikoną statusu i datą otwarcia. Śledzenie działa przez pixel 1×1 doklejany do maila (`/api/public/email/open/<messageId>.gif`).
    • 🔔 **Oznaczenie „Wymaga follow-up"** — kandydat, u którego ostatnia wiadomość ma >48h i nie została otwarta, dostaje żółtą ramkę + badge. Widoczny też licznik przypomnień z ostatnią datą.
    • 🔁 **„Wyślij ponownie"** — jeden klik i mailer wysyła świeży magic-link z krótką notką przypominającą, nabijając reminder_count w submission_magic_tokens.
    • 🎉 **Auto-mail „welcome" po akcepcie A&R** — kiedy premiera przechodzi w status „accepted", kandydat dostaje osobny mail z magic-linkiem do zalogowania i dokończenia (umowa, materiały do dystrybucji). Wcześniej dostawał tylko generyczny „zmienił się status".
    • 🧪 **Konto testowe testkonto4@idrecords.pl / 123456** — świeży user BEZ przypisanej roli i BEZ whitelisty publicznych stref, do sprawdzenia „co widzi ktoś, kto właśnie się zarejestrował". Odpal ponownie „Seed test accounts" w adminie, żeby konto zostało założone.
  74. v2.163.1120 lipca 2026, 12:00

    Punktacja czyta typ kanału z Katalogu (channel_master)

    • 🎯 **Zmiana typu = od razu inna grupa punktów** — jeśli w Katalogu kanałów ustawisz np. RMF FM ONLINE jako PORTAL, wsparcie leci teraz do „Portale/Prasa", a nie do „Radio". Wcześniej breakdown trzymał stare medium z kanału projektowego.
    • 🔄 **Backfill 226 kanałów projektowych** — dociągnąłem medium z Katalogu do wszystkich istniejących wpisów, żeby stare projekty od razu policzyły się poprawnie.
  75. v2.163.1022 lipca 2026, 21:00

    Tryby premiery Lite/Standard/Pro nie ukrywają już zakładek

    • 🧭 **Wszystkie kroki widoczne w każdym trybie** — Umowa, Materiały do dystrybucji, Splity, Produkcja itd. są dostępne w Lite, Standard i Pro. Bez nich nie da się przeprowadzić premiery przez cały proces.
    • ✂️ **Tryby obcinają rozmach, nie listę** — Lite/Standard mogą upraszczać zawartość poszczególnych zakładek (np. mniej pól w Presskicie), ale nie chowają całych sekcji.
    • 🎛️ **Domyślny podgląd = Pro** — jeśli tryb nie został zapisany, edytor premiery otwiera się w widoku Pro (pełny zestaw zakładek).
  76. v2.163.922 lipca 2026, 20:30

    A&R chat premiery zsynchronizowany z Messengerem

    • 💬 **Jedna rozmowa, dwa okna** — wiadomość napisana w chacie A&R w edytorze premiery pojawia się teraz również w wątku Messengera powiązanym z tą premierą (kind='release', submission_id). W drugą stronę tak samo: napisane w Messengerze ląduje w release_status_log widocznym na stronie premiery / projektu.
    • 🔗 **Awans premiery do Projektu nie gubi historii** — kiedy premiera dorobi się project_id, mirror uzupełnia to pole na istniejącym wątku Messengera, więc skróty „Napisz do artysty" z karty projektu trafiają w ten sam wątek co dotychczasowa rozmowa premierowa.
    • 🧵 **Automatyczne tworzenie wątku Messengera** — jeśli w edytorze premiery napiszesz pierwszą wiadomość zanim ktokolwiek otworzy Messenger, wątek premiery powstaje w tle (z artystą i adminami jako uczestnikami).
  77. v2.163.822 lipca 2026, 18:00

    Magic-linki dla Kandydatów Premier — kandydat wraca do zgłoszenia jednym kliknięciem

    • 🔗 **„Magic-link" w /admin/kandydaci** — obok „Otwórz premierę" i „Napisz" mamy przycisk kopiujący gotowy link (np. do WhatsAppa / Discorda). Kandydat wchodzi w /s/m/<token>, zostaje zalogowany (Supabase magic-link) i ląduje prosto w edytorze briefa, żeby np. dograć brakujące audio.
    • 📧 **Automatyczny mail przy pisaniu do kandydata** — kiedy admin wyśle wiadomość w wątku Premiery bez zaakceptowanego artist_id, mailer transakcyjny „submission-message-from-ar" idzie do kandydata z magic-linkiem w treści (bez potrzeby ręcznego kopiowania).
    • 🔒 **Bezpieczeństwo** — tokeny w nowej tabeli submission_magic_tokens, TTL 30 dni, idempotentne (ponowny mint dla tego samego zgłoszenia zwraca ten sam aktywny token). Redempcja tworzy konto w auth.users, jeśli kandydat go jeszcze nie miał, i podpina je do release_submissions.created_by.
  78. v2.163.722 lipca 2026, 14:00

    Kandydaci Premier + Messenger widzi wątki z osobami bez konta artysty

    • 👥 **Nowy panel /admin/kandydaci** — lista użytkowników, którzy wypełnili formularz Premier, ale nie mają jeszcze zaakceptowanego artist_id. Widać: email, intencję roli (np. „Artysta / team – Andy"), avatar, wszystkie ich drafty/wysłane singli, status audio, oznaczenie „Zablokowany draft — brak audio" (idealny sygnał do przypomnienia).
    • 💬 **Messenger — kandydaci mają teraz tożsamość** — wątki premier bez artist_id wyświetlały się z pustym polem „artysta". Teraz doładowujemy nazwę artysty z intencji roli, display_name z profilu i fallback do submitter_email, z sufiksem „· Kandydat".
    • 🔗 **Skok z panelu Kandydatów prosto do wątku Messenger** — jeden klik i piszesz do tej osoby (thread już istnieje — trigger DB tworzy go razem ze zgłoszeniem).
  79. v2.163.622 lipca 2026, 09:00

    PressRoom — dosłuchy dziennikarzy: tolerancja 90% = pełny odsłuch

    • 🎧 **Player dziennikarski** — jeśli dziennikarz odsłucha ≥90% utworu, liczymy to jako pełny dosłuch (wcześniej wymagane było fizyczne dojechanie do końca — praktycznie nigdy się nie zdarzało). Progress bar też pokazuje w tym momencie 100%.
    • ⏮️ **Backfill starych sesji** — wszystkie odsłuchy z play_75 bez play_completed zostały uzupełnione. Statystyki dosłuchów w heatmapie, karcie „Zainteresowanie dziennikarzy", newsletterach, serwisach tygodniowych i pitchach personalnych są od teraz zgodne z rzeczywistością.
    • 💯 **Punkty za dosłuch** — score-breakdown zlicza teraz doliczone historycznie dosłuchy, więc projekty które „słuchali do końca ale system tego nie widział" dostają należne punkty.
  80. v2.163.521 lipca 2026, 20:00

    Movers: tryb „względem poprzedniego okresu" + porównywarka singli

    • ⚖️ **Nowy tryb widoku w Movers** — „Względem poprzedniego okresu". Zamiast surowego wzrostu/spadku pokazujemy różnicę temp: ile singiel zyskał w tym oknie vs. ile zyskał w poprzednim oknie tej samej długości. Przykład: w zeszłym tygodniu +450 pkt, w tym +240 → −210 pkt (wyhamowanie). Kolumny zmieniają nazwy na „Przyspieszenia / Bez zmian tempa / Wyhamowania".
    • 🆚 **Porównywarka dwóch singli** — head-to-head w oknie: wybierasz singla A i B, dostajesz sparkline, zysk w oknie, procent i werdykt „X rośnie o Y szybciej niż Z". Dostępne z /admin/movers (wszystkie projekty) i /artist/movers (Twoje single).
    • 🎛️ **Taby trybu** przełączają widok bez utraty wybranej metryki/okna/TOP N. Query key uwzględnia tryb, więc cache się nie miesza.
  81. v2.163.421 lipca 2026, 18:30

    Naprawiony edytor WYSIWYG (notka A&R i inne pola)

    • ✍️ **Klik = od razu piszesz.** Edytor nie „deaktywuje się" już po kliknięciu w środek pola — wcześniej trzeba było przytrzymać przycisk myszki, żeby cokolwiek wpisać.
    • 🔧 **Techniczne:** synchronizacja z zewnętrzną wartością przestała nadpisywać treść, gdy edytor jest aktywnie w focusie (to gubiło kursor i selection).
    • 📍 **Dotyczy wszystkich pól** korzystających z nowego edytora: notka A&R w newsletterze, bloki tekstu w PressRoom i pozostałe miejsca z tym samym RichTextEditorem.
  82. v2.163.321 lipca 2026, 17:00

    Movers w menu Media + układ 3-kolumnowy + skrót do grafiki

    • 📈 **Movers (Trendy) w menu Media** — i admin, i artysta. Dropdown Media otwiera się jednym klikiem do Trendów, bez szukania po topbarze.
    • 🧱 **Układ 3-kolumnowy** — Wzrosty / Stabilne / Spadki obok siebie (na mobile stackuje się w jedną kolumnę). Puste kolumny też widoczne, żeby było wiadomo że nic nie wpadło w próg.
    • 🎨 **„Zrób grafikę"** — z /admin/movers przycisk otwiera Katalog momentów z auto-odpaloną kategorią „TOP Movers 7d" i wybranym TOP N. Z /artist/movers analogiczny skrót do Katalogu momentów artysty.
  83. v2.163.221 lipca 2026, 15:30

    Quick-toggle: legacy alerty widoczne + sortowanie

    • 🚨 **Legacy alerty widoczne.** Do tej pory panel /admin/pressroom/quick-toggle czytał tylko nową tablicę `press_alerts`, a większość singli ma alerty jeszcze w starych polach `press_alert_kind` + `press_alert_text` (pojedynczy alert). Teraz mergujemy jedno i drugie — widzisz komplet. Przy zapisie migrujemy legacy → array (i zerujemy stare pola), żeby nie było dubla na stronach prasowych.
    • ↕️ **Sortowanie listy:** Premiera najnowsze (domyślnie), Premiera najbliższe, Ostatnio edytowane, Ostatnio dodane, Alfabetycznie (A→Z).
  84. v2.163.121 lipca 2026, 14:00

    PressRoom: szybki toggle badge'y i alertów per singiel

    • ⚡ **Nowy panel /admin/pressroom/quick-toggle.** Jeden ekran, wszystkie aktywne single (statusy: submitted, in_review, approved, scheduled, released, accepted, contract, distribution, planning). Klik na chipa = włączasz/wyłączasz badge (Premiera tygodnia, Airplay Hit, Next Hit Alert, Trending, Longtimer i cokolwiek dodałeś w słowniku).
    • 🚨 **Alerty / wyróżnienia** — przy każdym singlu przycisk „+ Dodaj alert" wrzuca pigułkę Uwaga / Hot / Info / Wskazówka / Sukces z krótkim tekstem (do 240 zn., max 5 na singiel). Zapis Enter/blur lub „Zapisz". Pokazywane wszędzie, gdzie już czytamy `press_alerts` (strona prasowa, serwisy tygodniowe).
    • 🔎 Filtry: szukajka, filtr per-badge, „Ma alerty", przełącznik „Wszystkie statusy" (jak potrzebujesz też draftów).
    • 🔗 Skrót do panelu z nagłówka listy singli w PressRoom + kafelek w indexie PressRoomu. Bez zmian w bazie — używamy istniejących kolumn `press_badges` i `press_alerts` na `release_submissions`.
  85. v2.163.021 lipca 2026, 10:00

    Movers Hub: nowy moduł Admina + Movers dla artysty + świeższe rankingi

    • 📈 **Nowy moduł /admin/movers** — topki wzrostów, spadków i stabilnych per metryka: **Wynik, Kondycja, Streamy Spotify, Zapisy, Playlist adds, Radio (spiny), Shazamy, YT views**. Do wyboru okno **1d / od wczoraj / 7 / 14 / 21 / 30 / 60 / 90 dni** i widok **TOP 10 / 20 / 50**.
    • 🌅 **Świeższe rankingi.** Do dziennego snapshota o 23:55 dokładamy **poranny snapshot o 06:00 czasu PL** (upsert w `project_score_snapshots_daily`) — dzięki temu rankingi „1d" i „od wczoraj" masz gotowe od rana, bez czekania do północy. Plus przycisk **„Odśwież teraz"** w hubie, jeśli chcesz wymusić snapshot poza harmonogramem.
    • 🎧 **Blok „Top Movers" w /admin/pulse** pokazuje teraz **TOP 10** zamiast TOP 5 (z linkiem „Zobacz wszystkie metryki i okna → /admin/movers"). Sam Pulse dostał też szerszy zapas kandydatów (do 20).
    • 🎤 **/artist/movers** — analogiczny moduł dla artysty, tylko jego single. Wchodzi z topowego paska ArtistShell obok „Pulse".
    • ℹ️ Jak liczymy: baseline = najstarszy snapshot ≥ długość okna wstecz (fallback: najstarszy dostępny), Δ = teraz − baseline. Metryki „wynik" / „kondycja" ciągniemy z `project_score_snapshots_daily`, resztę z `track_stats_snapshots`. Intraday nie robimy, bo Songstats / S4A / Radio i tak odświeżają się raz dziennie.
  86. v2.162.020 lipca 2026, 10:00

    Playlisty cross-DSP: Apple Music, Amazon, YouTube Music i spółka na równi ze Spotify

    • 🍎 **Apple Music, 🟧 Amazon Music, ▶️ YouTube Music, 🎧 Deezer, ⚡ Tidal, ☁️ SoundCloud** — playlisty z tych serwisów są teraz zbierane z Songstats (jednym syncem razem ze Spotify) i pokazywane wszędzie tam, gdzie do tej pory był tylko Spotify: Streamingi → **Playlist power**, drawer szczegółów singla, panel projektu i notyfikacje Pulse.
    • 🏷️ Nowa plakietka **PlaylistServiceBadge** oznacza serwis DSP przy każdej playliście (emoji + kolor + nazwa). W Playlist power i w panelu artysty/admina doszedł filtr **„Wszystkie DSP"** żeby móc szybko odsiać jeden serwis.
    • ➕ **Ręczne dodawanie playlist z dowolnego DSP** — w /admin/projekty → panel projektu wybierasz serwis (Spotify / Apple Music / Amazon / YouTube Music / Deezer / Tidal / SoundCloud) i wklejasz link. ID playlisty jest wyciągane automatycznie z URL-a per DSP.
    • ♻️ Nowy przycisk **„Zsyncuj wszystkie playlisty (Songstats)"** w /admin/streamingi — jeden strzał, robi backfill wszystkich projektów z songstats_track_id (Spotify + Apple + Amazon + YouTube Music + Deezer + Tidal + SoundCloud jednocześnie).
    • 🔔 Pulse: nowe playlisty z Apple/Amazon/YouTube Music/… wpadają teraz jako powiadomienia z właściwym emoji i etykietą serwisu (usunięty osobny kanał „Apple Music" — wszystko idzie jednym unifikowanym handlerem). W scoringu premiery playlisty ze wszystkich DSP liczą się do wskaźnika obecności na playlistach.
  87. v2.161.620 lipca 2026, 02:30

    Serwis tygodniowy: strzałki ↑ ↓ w singlach naprawione

    • 🔀 **Zmiana kolejności singli w sekcji faktycznie działa.** Wcześniej w bazie kilka rekordów miało tę samą wartość `position` (np. 4× 0 w Hit Alert), więc zamiana pozycji z sąsiadem nic nie zmieniała. Teraz przy każdym ruchu normalizujemy pozycje w sekcji do 0..N-1 i zapisujemy tylko te, które się zmieniły — kolejność zostaje po odświeżeniu.
  88. v2.161.520 lipca 2026, 02:00

    Gotowość: link „Pliki do dystrybucji” otwiera właściwą sekcję

    • 🔗 **„Pliki do dystrybucji” w Gotowości premiery** kieruje teraz do zakładki **Presskit → sub-krok „Pliki do dystrybucji”**, a nie do domyślnej zakładki (tab `distribution` nie istniał w kartach premiery).
    • 🧭 Route `/releases/$id` obsługuje deep-link `?tab=presskit&pkstep=distribution` — po wejściu automatycznie ustawia właściwy krok w wizardzie presskitu.
  89. v2.161.420 lipca 2026, 01:30

    Generator grafik: zdjęcia z plików projektu i konkretna stacja radiowa

    • 📸 **Zdjęcia artystów z projektów wreszcie wpadają do assetów** — resolver nie pomija już plików release_assets, które mają zdjęcie w Dropboxie bez external_url. Pobiera tymczasowy link i pokazuje je w zakładce „Foto artysty” razem z okładkami projektu.
    • 📻 **„Nowa stacja gra artystę” pokazuje konkretną stację** — rekord w katalogu bierze nazwę z monitoringu radiowego (np. Radio Strefa Muzy), a nie ogólne „Stacja”. Ta sama nazwa trafia do briefu AI.
    • 🔗 **Klik z katalogu przekazuje właściwy projekt do generatora** także wtedy, gdy zaznaczony rekord jest emisją radiową (ID emisji ≠ ID projektu). Dzięki temu picker assetów wie, z którego utworu pobrać okładki i zdjęcia.
  90. v2.161.320 lipca 2026, 01:00

    Generator grafik: assety z zaznaczonych momentów, „Cel grafiki" i role warstw po polsku

    • 📸 **Assety z realnych projektów TOP N** — jak wybierzesz TOP Movers (albo dowolny ranking z Katalogu momentów), generator dostaje UUID-y wszystkich zaznaczonych rekordów i sam dociąga: **okładki tych premier**, **foto artystów z release_assets**, **logo stacji radiowych**, które faktycznie grały te utwory w ostatnich 180 dniach. Wcześniej picker nie wiedział o istnieniu tych projektów (bo dialog ustawiał „ogólne ID Records") — stąd widziałeś same naklejki. Teraz dostajesz komplet warstw z prawdziwego contentu labelu.
    • 🎯 **Nowe pole „Cel grafiki — do czego posłuży?"** w generatorze (nad Nagłówkiem) — dropdown z 14 gotowymi celami PL: Ogłoszenie premiery, Zapowiedź (save the date), Presave, Podziękowanie fanom, Sold-out, Milestone 100k/1M, Dodanie do playlisty, TOP N z rankingu, Sonda, Repost UGC, Rotacja radiowa, Cytat z wywiadu, Label hype, Backstage. Można też wpisać własny cel („Inne"). Cel dopisuje się do briefu AI — poprawia kompozycję i CTA. Z Katalogu momentów przyjeżdża jako sugestia (nazwa kategorii + okno).
    • 🏷️ **Role warstw po polsku + opcja własnego opisu** — zamiast `background/foreground/logo/overlay` masz teraz: 🎯 główny bohater, 🖼️ tło całej grafiki, 💫 akcent, 🏷️ logo w rogu, 🔲 rama / element powtarzalny, 📄 podkładka pod tekst, 🤖 zdecyduj AI. Pod każdym selektem input „lub wpisz swoją rolę…" (max 60 zn.). Wybrane role idą do promptu AI jako lista „Role warstw" z URL-em.
    • 🔄 **„Odśwież" pobiera kolejną porcję** — do tej pory tylko powtarzało to samo query. Teraz backend rotuje katalog stocków/naklejek/elementów po cursorze (0→1→2…), więc widzisz świeże warianty przy każdym kliknięciu.
  91. v2.161.220 lipca 2026, 00:15

    Katalog momentów: Kondycja w %, TOP Movers zapełnia całe N, TOP N wszędzie w rankingach

    • 💪 **„TOP Kondycja" pokazuje procenty, nie „pkt"** — metryka aktywnych projektów wyświetla `87%` zamiast `87.0 pkt` (bo kondycja to wskaźnik zdrowia kampanii 0–100%). Punktacja Pulse dalej „X.X pkt".
    • 🚀 **TOP Movers zapełnia całe TOP N** — usunięty próg „Δ > 0.5", który obcinał listę do 5 wyników nawet gdy user wybrał TOP 10/20. Teraz sortujemy wszystkich aktywnych po Δ wyniku Pulse i bierzemy pierwsze N (pokazujemy też ujemne/zero, żeby ranking się zapełnił).
    • 🔢 **Przełącznik TOP N (3/5/10/20) we wszystkich rankingowych kategoriach** — dodane do „TOP miesiąca — streaming/radio", „TOP roku", „Awans w rankingu", „Debiut w TOP", „#1 na liście", „Shazam top". Wcześniej tylko cotygodniowe rankingi + Pulse.
  92. v2.161.119 lipca 2026, 23:30

    Streaming ranking pokazuje realne streamy, nie „pkt"

    • 🎧 **„TOP tygodnia/miesiąca — streaming" liczy się z realnych streamów Spotify.** Wcześniej metryka pokazywała „X pkt" (proxy z liczby spinów radiowych — sensu tyle co żaden). Teraz backend bierze snapshoty z `track_stats_snapshots`, wyznacza Δ `spotify_streams` w oknie (7/30/365 dni) per projekt i sortuje po realnym przyroście. Etykieta „**X streamów**". Punktacja Pulse ma osobną kategorię „TOP Punktacja".
    • 🔢 **TOP N (3/5/10/20) też dla streamingu i radia** — przełącznik pojawia się w dialogu „TOP 3 tygodnia — streaming" i „TOP 5 tygodnia — radio" (dotąd tylko rankingi Pulse). Domyślnie N z nazwy kategorii.
    • ℹ️ Jeśli w wybranym oknie nie ma jeszcze snapshotów streamów (nowy projekt / brak integracji), dialog powie wprost „Brak snapshotów streamów" zamiast pokazywać zerowy ranking.
  93. v2.161.019 lipca 2026, 22:00

    Katalog momentów: TOP N konfigurowalne + Punktacja/Kondycja + moodboard z 12 warstwami

    • 📊 **TOP N konfigurowalne (3/5/10/20)** — kategoria „TOP Movers — 7 dni (Δ Pulse)" ma teraz przełącznik ile pozycji pokazać na grafice, a w Pulse przy Top Movers są trzy przyciski TOP 5 / 10 / 20 — deep-link `?open=top5_movers_7d&topN=<n>` propaguje wybór do Katalogu momentów.
    • 🆕 **Dwie nowe kategorie w Rankingach & Topkach** — „TOP Punktacja — aktywne projekty" (STANDARD) i „TOP Kondycja — aktywne projekty" (PRO). Zaciągają ranking z tabeli `projects` po polu `wynik` / `kondycja` (tylko `status='active'`), respektują TOP N (3/5/10/20). Klik → 3 propozycje AI + prefill generatora.
    • 🎨 **Sugerowane assety w generatorze grafik — zakładki + do 12 warstw**. Zamiast jednej długiej listy tylko z tłami stock, teraz jest zakładka na każdą warstwę: **Okładki** (wszystkie release-y artysty + cover projektu), **Foto artysty** (photo/personality/spotify ze wszystkich premier), **Stacje / TV** (logo stacji, które faktycznie grały artystę w ostatnich 180 dniach — z `channel_master.logo_url`), **Playlisty** (Hot Hits PL, Fresh Finds PL, Radar, RapSpot… match po headline/kontekście), **DSP/social**, **Tła**, **Efekty**, **Naklejki** (🔥🚀🏆🥇⭐👑📈💯🇵🇱🎉). Moodboard rozszerza się z 3 → 12 slotów, każdy asset dostaje wybieralną rolę (tło / foreground / logo / overlay).
    • 🎯 **Assety z prawdziwego katalogu artysty** — resolver nie zwraca już samych stocków. Pobiera **okładki wszystkich premier artysty** (nie tylko current submission), **foto ze wszystkich releasy**, **cover projektu**, **logo stacji radiowych** przez join `radio_play_events → channel_master` (tylko `logo_verified = true`).
  94. v2.160.019 lipca 2026, 18:00

    Katalog momentów (rename z „Grafiki promo ID") + generuj grafikę TOP 5 Movers z Pulse jednym klikiem

    • 🎨 **„Grafiki promo ID" → „Katalog momentów"** — spójna nazwa w menu Social, w hero strony i w CTA generatora (u artysty już była). Adres URL bez zmian, wszystkie zakładki działają jak wcześniej.
    • 🚀 **Top Movers w Pulse mają teraz przycisk „Grafika TOP 5"** — jednym klikiem lądujesz w Katalogu momentów z otwartym dialogiem nowej kategorii PRO „TOP 5 Movers — 7 dni". Kategoria zaciąga realną top-piątkę projektów z największym Δ wyniku Pulse (streamy + radio + Shazam + YT + engagement), a AI proponuje 3 warianty headline/subline/context/style pod grafikę promo dla oficjalnego IG/FB ID Records.
    • 📊 **Kategoria „TOP 5 Movers — 7 dni" w PRO** (grupa „Rankingi & topki") — ranking oparty o `project_score_snapshots_daily`, minimum 6-dniowy baseline i Δ ≥ 0.5 pkt, żeby nie promować szumu. W polu „Konkretne dane do pokazania na grafice" leci pozycja, artysta, tytuł i „+X.X pkt".
    • 🔗 **`/admin/social/studio/id-promo?open=<key>`** — katalog obsługuje search param `open`, więc dowolne miejsce w HUBie może teraz linkować bezpośrednio do konkretnego dialogu kategorii z prefillem.
  95. v2.159.019 lipca 2026, 10:00

    Top Movers przestały kłamać + maile dla kandydatów w Premierach

    • 📊 **Top Movers (7d) — koniec fałszywego "+100%" na wszystkim.** Ranking liczy się teraz po Δ **wyniku projektu** (z `project_score_snapshots_daily`), a nie po surowym % streamów. Wynik uwzględnia jakość: streamy, radio, Shazam, YT, engagement — więc świeży projekt bez baseline'u sprzed tygodnia nie dostaje już sztucznego 100%, a projekt z 3 → 8 streamów nie bije projektu z 50k → 80k. Karta pokazuje Δ w punktach wyniku (np. "+3.2 pkt") + % obok, plus Δ streamów absolutne pod nazwą.
    • 📬 **Kandydat od razu wie, co się dzieje ze zgłoszeniem — mailowo.** Po wysłaniu zgłoszenia dostaje potwierdzenie ("Mamy Twoje zgłoszenie, A&R odezwie się…"), po każdej zmianie statusu leci mail z nową etykietą (Zgłoszone / W ocenie / Zaakceptowane / Wymaga uzupełnień / Wydane 🎉) plus notatka A&R jeśli była, a po każdej wiadomości od A&R w wątku premiery — powiadomienie z podglądem treści i linkiem do odpowiedzi w HUBie.
    • 🚨 **Admin dostaje alert o każdym nowym zgłoszeniu** na maila — z tytułem, artystą, kontaktem do kandydata i deep-linkiem do `/admin/releases/:id`. Koniec "przegapiłem".
    • 🗄️ **4 nowe szablony transakcyjne**: `new-submission-received`, `new-submission-admin-alert`, `submission-status-changed`, `submission-message-from-ar` — brandowane pod ID Records, respektują suppression list i lecą przez kolejkę pgmq (bez blokowania flow, jeśli mail padnie).
  96. v2.158.018 lipca 2026, 18:00

    Pulse: kategorie Pomysł/Zadanie, gradacja teledysków (koniec „Viral!" na wszystkim), więcej assetów w Studio + konkretne nazwy destynacji w eksporcie

    • 💡📋 **Nowe kategorie w Pulse: Pomysł i Zadanie.** Filtr feedu ma dedykowane przyciski, a „Dodaj wpis do Pulse" pozwala od razu wybrać typ (Sukces / Milestone / Uwaga / Info / Pomysł / Zadanie) — Pomysł idzie z ikoną 💡 (fuksja), Zadanie z 📋 (turkus). Kategoria trafia jako kind do project_events, więc filtry łapią również eksporty z Pomysłów i Playbooka.
    • 🎬 **Teledyski YT: gradacja mocy, nie zawsze „Viral!".** Zarówno detektor Radaru, jak i bridge do Pulse wyliczają teraz „✨ Dobrze idzie" / „🚀 Nabiera rozpędu" / „📈 Trending" / „🔥 Viral" na podstawie ratio do mediany + totalu views. „Viral" pojawia się na YT dopiero przy 20× powyżej mediany i 500k+ wyświetleń — 200k po prostu leci jako „Trending".
    • 🎨 **Studio: dużo więcej sugerowanych assetów w sekcjach.** Panel dzieli się na „Partnerzy / logo", „Brand artysty", „Okładki premiery", „Foto artysty", „Wideo", „Tła (stock)" i „Elementy/overlay". Doszły nowe partnerskie logotypy (RMF MAXXX, Newonce, Antyradio, 4FUN, MUZO.FM, Radio 357, Radio Nowy Świat, Tidal, Deezer, YT Music, TikTok, Instagram), 18 uniwersalnych teł ze stocka (studio, neon, winyl, brick wall, gradienty, bokeh) i 6 elementów graficznych. Po wpięciu w moodboard każdemu assetowi możesz przypisać rolę (tło / pierwszy plan / logo / overlay) — leci jako hint do AI.
    • 📍 **Konkretne nazwy destynacji w „Wyślij do Pulse / Messengera".** Dialog pokazuje teraz „Pulse projektu: **Tu i teraz**", „Wątek premiery: **Berie – singiel X**" albo „DM: **Kayomee** ↔ admin" zamiast ogólników. Gdy artysta ma kilka projektów lub wątków — wybierasz z listy do którego ma trafić notka. Pomysły przy wysyłce respektują wybór (projectId / threadId trafia do server fn).
  97. v2.157.018 lipca 2026, 14:00

    Studio grafik: sugerowane assety + Brief kandydata na wierzchu premiery + tryby Lite/Standard/Pro

    • 🎨 **Sugerowane assety w generatorze grafik.** Nad moodboardem pojawia się panel z auto-wykrytymi materiałami: logo partnera z tekstu (Radio Warszawa, Spotify, RMF FM…), okładka premiery, foto artysty z sesji, watermark z brand kit. Klik = wpięcie w slot referencji. Koniec ręcznego wklejania URL-i i „nie tego logo".
    • 📋 **Brief od kandydata na górze /admin/releases/:id.** Jeden banner z linkami do utworu (Spotify/YouTube/Apple/SoundCloud), socialami (IG/TT/YT/Spotify) i notką od artysty — nic nie trzeba szukać w presskicie. Dla nowych zgłoszeń rozwinięty domyślnie, po akceptacji zwija się do jednej linijki.
    • 🎚️ **Tryby prezentacji Lite / Standard / Pro** dla modułu Premiery + toggle „podgląd jako artysta". Lite pokazuje tylko oferta/presskit/premiera (dla kandydatów), Standard dokłada plan i pressroom, Pro = wszystko. Admin przełącza widok na próbę, a jednym kliknięciem zapisuje wybór jako oficjalny tryb premiery.
  98. v2.156.018 lipca 2026, 10:00

    Pulse: koniec fałszywych „viralów" z teledysków + Studio grafik trzyma logo

    • 🎬 **YouTube teledyski nie są już „viralami" po samych wyświetleniach.** Detektor rozpoznaje official/music video/teledysk po typie i tytule — normalny wzrost oglądalności teledysku nie generuje eventu. Milestone „ładnie idzie" pojawia się tylko przy realnym skoku aktywności (delta polubień/komentarzy w ostatnich 7 dniach) LUB bardzo dużej skali (500k+).
    • 📅 **Stare posty nie wpadają do Pulse chyba, że faktycznie ożywają.** Twardy filtr świeżości: post > 21 dni musi mieć velocity_7d ≥ 30% obecnego totalu + realne polubienia/komentarze w ostatnim tygodniu — inaczej milczymy. Koniec „reanimacji sprzed roku".
    • 🖼️ **Studio grafik: prompt każe modelowi używać załączonego logo/foto/okładki DOKŁADNIE** — bez wymyślania wariantu, bez zmiany kolorów, bez zamiany twarzy. Pierwszy krok do naprawy „nie tego logo Radia Warszawa".
    • 🧰 **Backend: nowy resolver assetów** (`src/lib/asset-resolver.functions.ts`) — auto-pick logo partnera po tekście (Radio Warszawa, Spotify, RMF FM, Apple Music, Eska, Polskie Radio, Empik), okładka z `release_assets`, foto artysty z sesji, watermark z brand kit. UI podpięcia do Momentu leci w kolejnej iteracji.
    • 🗄️ **`release_submissions.presentation_mode` (lite/standard/pro)** — kolumna gotowa pod nadchodzący overhaul modułu Premiery: brief kandydata na wierzchu i przełącznik trybu widoku dla artysty.
  99. v2.155.017 lipca 2026, 18:00

    Pomysły + Playbook + Pulse — notka od wydawcy przy każdym eksporcie

    • 💡 **Wróciły znikające przyciski na karcie pomysłu:** „Do Pulse" (już nie jest ukryty gdy pomysł nie ma projektu — HUB sam znajduje aktywny projekt artysty) oraz nowy „Do Messengera" (leci do wątku premiery projektu, fallback: DM z artystą).
    • 📝 **Notka od wydawcy przy każdym eksporcie** — pomysł/zadanie/Pulse → Pulse lub Messenger otwierają teraz dialog, w którym dorzucasz „sprawdź to bo…" i notka trafia na górę wiadomości/wpisu.
    • 🏷️ **Nowe kategorie w feedzie Pulse: „Zadanie" i „Pomysł"** — task_push z Playbooka i idea_push z Pomysłów mają własne kolory/ikony, żeby feed nie zlewał się do jednej „Wydawcy".
    • ⭐ **Auto-push rekomendowanych do Pulse artysty** — gdy oznaczasz pomysł lub zadanie z Playbooka jako Rekomendowane, HUB automatycznie wrzuca je do Pulse projektu i wysyła artyście powiadomienie push.
  100. v2.154.117 lipca 2026, 16:30

    AI Refine Chat — „Wzmocnij" (GPT-5) nie wywala już edytora

    • 🐛 **Fix: kliknięcie „Wzmocnij" i wygenerowanie przez GPT-5 kasowało to, co miałeś w edytorze.** GPT-5 zjadał budżet 1600 tokenów na reasoning i zwracał pustą treść, którą podmienialiśmy w polu. Teraz limit to 8000 tokenów, a pusta odpowiedź AI = błąd + toast zamiast po cichu wymazywać treść.
    • 🛡️ Edytor twardo ignoruje pustą odpowiedź z serwera — Twoja iterowana treść zostaje nienaruszona nawet gdyby coś się posypało po drodze.
  101. v2.154.017 lipca 2026, 15:30

    Admin · Zużycie AI — koszty per artysta i per projekt

    • 📊 **Nowe zakładki „Per artysta" i „Per projekt"** w /admin/ai-usage — widać wreszcie ile kredytów AI + Network idzie na Berie, Gabora, Conkiego itd. osobno.
    • 🎛️ **Filtr admin / artysta / system** + eksport CSV per artysta — pod ustalanie cennika typów projektów.
    • 🧱 Logi AI (`ai_usage_log`) i Network (`network_usage_log`) dostały kolumny `artist_id`, `project_id`, `initiated_by`. Kontekst auto-rozwiązuje się z `submissionId`/`projectId`, więc reszta call-siteów będzie się doklejać stopniowo — atrybucja liczy się od tej wersji w górę.
  102. v2.153.917 lipca 2026, 14:15

    Generator pomysłów — okno „Iteruj pomysł" nie zamyka już Generatora

    • 🐛 **Fix: klikanie w oknie iteracji pomysłu (czat, pole komentarza, „Generuj v1", „Zapisz i zamknij") zamykało Generator pomysłów pod spodem.** Powód: RefineChatDialog był renderowany wewnątrz backdropu Generatora, a React syntetyczne kliknięcia bąbelkowały do jego onClose. Teraz oba dialogi żyją obok siebie — iteracja działa jak trzeba.
  103. v2.153.817 lipca 2026, 13:30

    Brief produkcyjny — „co Ci się podoba" przy referencjach z list radiowych

    • 🎧 **Nowe pole „Co Ci się w tym utworze podoba?"** przy każdym utworze wybranym z Poplisty RMF, Listy Przebojów Zetki, Gorącej 20 Eski itd. Można dopisać: produkcja, wokal, tekst, klimat — dokładnie tak samo jak przy innych inspiracjach. Producent dostaje pełniejszy kontekst, nie tylko gołe „artysta + tytuł".
  104. v2.153.717 lipca 2026, 12:00

    Brief produkcyjny — zapis języka utworu naprawiony

    • 🐛 **Koniec błędu „too_big / language"** — przy zaznaczaniu opcji języka w briefie produkcyjnym (np. „Polski i angielski — z myślą o dodatkowym wsparciu w ramach rynku zagranicznego") walidacja odrzucała zapis, bo pełna etykieta jest dłuższa niż 60 znaków. Podnieśliśmy limit pola, zaznaczanie działa jak trzeba.
  105. v2.153.617 lipca 2026, 10:30

    Generator pomysłów: revert — filtrujemy premiery po project_id

    • ↩️ **Cofnięte: „CONTRACT-y wybieralne w generatorze"** — na liście premier w generatorze pomysłów znów pokazujemy tylko zgłoszenia z przypiętym projektem. Świadomie: premiery w trakcie nawiązywania współpracy (bez project_id) nie mają się plątać w gotowości ani w pomysłach — pojawią się dopiero, gdy dostaną projekt.
  106. v2.153.517 lipca 2026, 09:00

    Premiery i Generator pomysłów — dwie porządne poprawki

    • 🧹 **Co-Pilot Premiery bez duplikatów** — na karcie premiery (admin) wyświetlamy już tylko po jednym wpisie z każdego typu wyjścia AI (Co-Pilot, Post-Mortem, Producer Brief itd.). Priorytet: wersja oznaczona jako „Finał", w drugiej kolejności najnowsza. Historyczne wersje zostają w bazie, ale nie zaśmiecają widoku.
    • 🎯 **Generator pomysłów — nadchodząca premiera znów wybieralna** — kiedy zgłoszenie premiery nie ma jeszcze przypiętego projektu (status contract), kafelek dało się kliknąć, ale nie zapisywał wyboru. Teraz podświetlenie i „gotowość do generowania" trzymają się konkretnego zgłoszenia (release id), a nie project_id — więc CONTRACT-y wchodzą tak samo jak RELEASED-y.
  107. v2.153.417 lipca 2026, 03:30

    Katalog momentów admina: takie same filtry chipowe jak u artysty

    • 🔎 **Wyszukiwarka + filtry chipowe w Katalogu momentów ID Records** — admin ma teraz identyczny pasek jak artysta: input „Szukaj momentu", plakietki planów (Wszystkie plany / LITE / STANDARD / PRO) i chipy grup (Wszystkie / Premiery / Content / Fani / Milestone'y / Live / Prasa / Brand). Koniec z dropdownem grup — wszystko klikane jednym palcem.
  108. v2.153.317 lipca 2026, 03:00

    Katalog momentów: LITE / STANDARD / PRO + skrót z generatora

    • 🏷️ **Katalog momentów artysty (74 okazje) rozbity na LITE / STANDARD / PRO** — nie każdy dostaje wszystko: LITE to podstawy (premiera, backstage, milestone, Q&A, koncert), STANDARD dokłada kampanie okołopremierowe, kolaby, playlisty, radio i tour, PRO to pełen komplet (video premiere, remix, brand collab, cover story, sold-out, gold/platinum, festival, cause). Każdy kafelek ma plakietkę tieru, wyższe zamknięte na kłódkę z informacją „poproś opiekuna".
    • 🗂️ **Nazwa ujednolicona: „Katalog momentów"** — u artysty (menu boczne + hero) i u admina (kafel w Social Studio + hero id-promo). Koniec z „Katalog grafik" / „Grafiki promo ID Records".
    • 🔗 **Skrót z Generatora do Katalogu** — nad polem treści siedzi baner „Nie wiesz co tu wpisać?" z jednym klikiem do Katalogu momentów (artysta → swój katalog, admin → katalog ID Records). Wybierasz moment → wypełniamy wszystkie pola generatora za Ciebie.
    • 🧪 **Podgląd planu w hero katalogu** — trzy szybkie chipy LITE / STANDARD / PRO pozwalają zobaczyć, jak katalog wygląda z perspektywy danego planu (docelowo pod feature-flag realnego tieru artysty).
  109. v2.153.217 lipca 2026, 02:00

    Social Studio — porządki: Momenty, Katalog artysty w menu, PRO = 30 stylów, tooltipy

    • ⚡ **Momenty bez „SOON"** — kafelek w hubie social artysty już nie mówi „wkrótce". Klik prowadzi do Generatora z briefem i presetem, tak jak działa dziś.
    • 🗂️ **Katalog grafik dopięty do menu artysty** — pozycja „Katalog grafik 🗂️" w sekcji Social prowadzi do 67 kategorii pod artystę (odpowiednik adminowego ID-Promo Studio, tylko z realnym contentem artysty: premiery, pomysły, Pulse).
    • 🎨 **PRO = 30 stylów wizualnych (było 24)** — artyści PRO odblokowali Concert flyer, Album teaser, Billboard OOH, Broadcast / lower-third, Award teaser i Tour map. Te same opisy i prompty co u admina.
    • 💬 **Tooltip z pełnym opisem stylu** — najedź na kafelek, zobacz całość ("Do trasy, koncertów, meet&greet…"). Koniec z uciętymi opisami po dwóch liniach.
  110. v2.153.117 lipca 2026, 01:15

    Katalog Artysty — rozbudowa do 67 kategorii (oferta PRO)

    • 📚 **67 kategorii zamiast 27** — pełny katalog życia artysty w 8 sekcjach: Premiery, Przed premierą, Content & kulisy, Fani, Milestone'y, Live & tour, Prasa, Brand.
    • 🚀 **Premiery+**: midweek update, week recap, reveal tracklisty, credits & feat., premiera teledysku, lyric video drop, remix / wersja alternatywna.
    • ⏳ **Przed premierą+**: cover tease (zaciemniona okładka), title reveal, collab tease (kto to?), collab reveal, studio teaser dźwiękowy.
    • 🎬 **Content+**: throwback, gear check, cover song, wersja akustyczna, inspiracje, playlista tygodnia, reaction, diary procesu, before/after (demo→master).
    • 💜 **Fani+**: poll A/B, repost coveru fana, urodziny, meet & greet, Discord invite, fan challenge. **Milestone'y+**: chart, radio add, TV, złoto/platyna, sold out, rocznica utworu.
    • 🎤 **Live+**: gig reminder 24h, setlist reveal, soundcheck, on-stage, festival line-up, tour diary. **Prasa+**: podcast drop, cover story, review, sesja prasowa. **Brand+**: brand collab, manifest, logo reveal, photo dump, cause.
  111. v2.153.017 lipca 2026, 00:30

    Katalog Artysty — 27 okazji do posta z realnym contentem z HUBa

    • 📚 **Nowy widok** `/artist/social/katalog` — 27 gotowych kategorii grafik pogrupowanych w 8 sekcji (Premiery, Przed premierą, Content & kulisy, Fani, Milestone'y, Live & tour, Prasa, Brand). Mobile-first grid, tap ≥44px, filtr po grupach + wyszukiwarka.
    • 🎯 **Wstrzykiwanie contentu jak u admina** — klik w kategorię otwiera dialog z pickerem realnych rekordów z HUBa (twoje premiery, ostatnie pomysły, ostatnie momenty z Pulse). Zaznaczasz co konkretnie promujesz i AI dostaje to DOSŁOWNIE w promcie, żeby nie halucynowało.
    • 🤖 **3 warianty AI** (headline + subline + kontekst obrazu + styl) różniące się tonalnie — jeden hype, jeden szczery, jeden minimalistyczny. Każdy z przyciskiem „Użyj i przejdź do generatora" (prefill dla `/artist/social/graphics`).
    • 💡 **Bonus: „Co jeszcze zrobić"** — obok 3 wariantów AI podpowiada 3 dodatkowe działania (Story-follow-up, cross-post, DM do fanów).
    • 📌 **Pill „Katalog grafik"** dodany do listy skrótów na `/artist/social`.
  112. v2.152.016 lipca 2026, 23:30

    Learning Loop — AI uczy się, co u Ciebie działa

    • 🧠 **Nowa pętla uczenia**: każdej wygenerowanej grafice liczymy `performance_score` (0–100) na bazie realnego engagement rate opublikowanego posta względem mediany artysty z ostatnich 90 dni.
    • 🎯 **Winning style hints** — przy każdej nowej generacji AI dostaje w promcie top 3 sygnatury stylu artysty (kierunek, mood, ton, obecność, styl) i priorytetyzuje je. Kompletnie opcjonalne — flaga `respectLearning` w kreatorze pozwala wygenerować „inaczej niż zwykle".
    • ✨ **Karta „Co działa u Ciebie"** na `/artist/social/campaigns` pokazuje top 3 winning styles z średnią oceną i liczbą assetów — pełna transparentność, co AI bierze pod uwagę.
    • ⏱️ **Cron co 6h** (`/api/public/hooks/perf-recompute`) — batch scoring dla wszystkich opublikowanych assetów z ostatnich 30 dni.
    • 🗄️ **Nowe pola** `social_assets.performance_score`, `performance_updated_at`, `style_signature` + widok `v_artist_top_styles` (SECURITY INVOKER, RLS artysty).
  113. v2.151.816 lipca 2026, 23:00

    Podmiana umowy — przycisk widoczny po wysłaniu

    • 🐛 **Fix**: przycisk „Podmień plik" znikał w `/admin/umowy/:id` po wysłaniu umowy (status **WYSŁANA**), bo cały blok „Treść umowy" był ukrywany dla admina po wysyłce.
    • ✅ Teraz blok pokazuje się także dla wysłanych, jeszcze niepodpisanych umów — admin może podmienić PDF do momentu pełnego podpisu (potem `adminReplaceContractPdf` i tak blokuje).
  114. v2.151.716 lipca 2026, 22:30

    Notka A&R w newsletterze — pełne formatowanie

    • ✏️ **Notka A&R** obok każdego singla (i w bloku „Single") ma teraz pełny edytor TipTap: **pogrubienie**, *kursywa*, <u>podkreślenie</u>, nagłówki H2/H3, listy punktowane i numerowane, cytat, linki, undo/redo. Koniec z prostym textarea.
    • 📧 **Email-safe render** — notki HTML są renderowane w mailu z wymuszonymi stylami inline (marginesy, kolory, kolor linków), więc wyglądają spójnie w Gmailu, Outlooku i Apple Mail.
    • 🧠 **AI-refine bez utraty formatowania** — „Iteruj z AI" dla notki zwraca teraz HTML, formatowanie się zachowuje.
    • 🔄 **Backward-compat** — istniejące notki plain-text renderują się dokładnie jak wcześniej (w akapicie `<p>`).
  115. v2.151.616 lipca 2026, 22:00

    Podmiana pliku umowy przed pełnym podpisem

    • 📄 **Nowy przycisk „Podmień plik"** na karcie umowy w `/admin/umowy/:id` — pojawia się gdy umowa jest wgrana jako PDF i **nie jest jeszcze podpisana przez wszystkie strony**. Pozwala poprawić błąd w pliku bez konieczności tworzenia całej umowy od zera.
    • 🧹 **Backend `adminReplaceContractPdf`** — atomowo kasuje dotychczasowe podpisy (`release_signatures`) + magic-linki (`release_signing_links`), zeruje `contract_signed_pdf_url` i `contract_document_id`, zapisuje nowy `contract_pdf_url` i cofa status do `draft`. Blokada gdy `contract_status = signed`.
    • 👁 **Podgląd pokazuje nowy plik** natychmiast — cache queryClient i lista podpisów są invalidowane po podmianie. Wpis w `release_status_log` widoczny też dla artysty.
    • ➡️ Po podmianie wystarczy jeszcze raz kliknąć **„Wyślij umowę do podpisu"** — wygenerują się świeże tokeny i pójdą nowe maile do sygnatariuszy.
  116. v2.151.516 lipca 2026, 21:00

    Sygnały bez filtrowania — widzisz WSZYSTKO

    • 👁 **Pomysły** — koniec z filtrem po statusie. Wcześniej lista sygnałów pokazywała tylko `accepted / scheduled / in_progress / recommended`, przez co u wielu artystów (np. Gabor) większość pomysłów była niewidoczna. Teraz widzisz **każdy pomysł** — draft, propozycję, zaakceptowany, zrealizowany — sortowane po dacie utworzenia. Status pokazany w opisie karty.
    • 📰 **Publikacje prasowe** — pokazujemy wszystkie, nie tylko `verified`. Status w opisie.
    • 📈 **Więcej pozycji** — limity per-źródło podniesione (Pulse 80, Pomysły 80, Premiery 40, Prasa 40), łączny limit sygnałów podniesiony z 40 do **200**. Nie ukrywamy sygnałów po niejasnych kryteriach — Ty decydujesz co warte kampanii.
    • 🎯 **Premiery bez daty** też się pokazują (z adnotacją „bez daty premiery"), żebyś mógł zbudować kampanię wyprzedzająco.
  117. v2.151.416 lipca 2026, 20:00

    Przyciski „Zbuduj kampanię" w Pulse, Pomysłach i Planie

    • 🎯 **Pulse (artysta + admin)** — obok „Wrzuć w mediaplan" pojawił się nowy przycisk **„Zbuduj kampanię"**. Jeden klik tworzy kampanię z tego Momentu (z pełnym briefem) i przenosi do jej szczegółów.
    • 💡 **Pomysły** — na każdej karcie pomysłu (artysta + admin) dostępny jest przycisk **„Zbuduj kampanię"** — kampania dziedziczy tytuł, kategorię, platformę i expected_impact z pomysłu.
    • 📅 **Generator Planu** — w footerze plan generator ma link **„Zbuduj kampanię z tego planu"** prowadzący do listy kampanii artysty / labelu.
    • 🧩 Nowy reużywalny komponent `BuildCampaignButton` (source: moment / idea / project) — używany wszędzie, gdzie warto zamienić sygnał w serię grafik.
  118. v2.151.316 lipca 2026, 19:00

    Kampanie z Sygnałów: Moment + Pomysł + Premiera + Publikacja

    • 🎯 **„Z Momentu" → „Z sygnału"** — kreator kampanii przyjmuje teraz cztery typy źródeł: **Moment** (Pulse / viral / radio / chart), **Pomysł** (z modułu Pomysły), **Premiera** (projekt z premiere_date) i **Publikacja** (prasa). Filtr kategorii na górze listy sygnałów.
    • 🧠 Nowy backend **listCampaignSignals** — jeden ujednolicony feed z 4 źródeł (social_pulse_events, ideas, projects przez project_artists, press_publications), posortowany po dacie. Koniec z „w Momentach są tylko virale".
    • 🚀 **createCampaignFromIdea** — kampania z Pomysłu dziedziczy brief (kategoria, platforma, expected_impact, how_to, body). Data startu auto z `scheduled_for`. Idealne do zamiany zaakceptowanego pomysłu w serię grafik.
    • 💿 **createCampaignFromProject** — kampania premierowa dostaje auto-oś czasu: start = premiera − 14 dni, koniec = premiera + 14 dni. Rodzaj = release. Brief zawiera tytuł, artystę, datę i cel tygodniowy projektu.
    • 🗄️ Migracja: tabela `social_campaign` ma nowe kolumny `source_idea_id` i `source_project_id` (obok istniejącego `source_moment_id`). Karta kampanii pokazuje odpowiedni badge źródła (Moment / Pomysł / Premiera).
    • 📊 Empty state ma nowy mini-diagram osi slotów **Teaser → Zapowiedź → Drop → Recap → UGC** oraz nowy tekst wyjaśniający sygnały.
  119. v2.151.216 lipca 2026, 18:00

    Fix rejestracji dziennikarza + backfill konta

    • 🔒 **Atomowa rejestracja dziennikarza** — jeśli którykolwiek zapis do bazy (journalists / journalist_profiles / user_roles) padnie po utworzeniu konta w auth, konto jest natychmiast kasowane. Koniec z „zawieszonymi" kontami bez profilu, których nie da się ponownie zarejestrować.
    • 📓 Nowy log **journalist_registration_log** — każdy etap rejestracji (start, auth create, upsert journalist, upsert profile, grant role, rollback) trafia do tabeli widocznej tylko dla adminów. Będzie po czym debugować, gdy komuś „zniknie" konto.
    • 👤 **Backfill konta lomperta@gmail.com** — Google-OAuth user, który zalogował się, ale nigdy nie doszedł do formularza dziennikarza. Dodane rekordy w journalists / journalist_profiles / user_roles ze statusem `pending` i outletem „Do uzupełnienia" — admin może dokończyć profil ręcznie.
    • 💬 Lepsze komunikaty błędów w formularzu — konkretny etap i sugestia „skontaktuj się z ID Records" zamiast pustego czerwonego toasta.
  120. v2.151.116 lipca 2026, 17:30

    Kampanie ↔ Momenty + prawdziwy DatePicker + generacja AI per slot

    • ✨ Nowy tryb tworzenia kampanii **„Z Momentu"** — wybierasz świeży Moment z Pulse artysty i AI dostaje gotowy brief (headline, detail, sugestia AI) do wygenerowania spójnej serii grafik. Kampania trzyma link do Momentu (`source_moment_id`), więc zawsze wiadomo skąd pomysł.
    • 🪄 W szczegółach kampanii każdy slot (**Teaser · Zapowiedź · Drop · Recap · UGC · Inne**) ma teraz button **„Wygeneruj grafikę AI"** — auto-dobiera styl (Teaser = glitch, Zapowiedź = hype, Drop = album teaser, Recap = editorial, UGC = polaroid), używa briefu kampanii + kontekstu Momentu, wpina wynik od razu do slotu.
    • 📅 **Prawdziwy DatePicker** (shadcn Calendar/Popover z polską lokalizacją) zamiast surowych `<input type="date">` — przy tworzeniu kampanii i przy każdym asetcie w kanbanie.
    • 🏷️ Nagłówek kampanii pokazuje karteczkę „Zbudowana z Momentu" z jego typem, datą, headline'em i sugestią AI. Na liście kampanii badge „z Momentu" oznacza te powiązane.
    • 🧭 Pusty stan listy kampanii z jasnym CTA „Zbuduj z Momentu" + info-bar wyjaśniający po co są kampanie (seria + harmonogram + cel).
  121. v2.151.016 lipca 2026, 16:00

    Faza G — Kampanie social

    • 📣 Nowe widoki: **/admin/social/campaigns** i **/artist/social/campaigns** — grupujesz grafiki i posty pod jeden cel: release, trasa, singiel, evergreen.
    • 🗂️ Kampania ma kanban po slotach: **Teaser · Zapowiedź · Drop · Recap · UGC · Inne** — do każdego slotu dopinasz gotowe assety artysty jednym klikiem.
    • 🗓️ Każdy asset w kampanii ma własny termin publikacji (`scheduled_at`) — porządkujesz oś czasu bez wychodzenia z widoku.
    • 🔒 RLS pilnuje dostępów: artysta widzi tylko swoje kampanie, admin wszystkie; statusy szkic → aktywna → zakończona → archiwum.
  122. v2.150.016 lipca 2026, 15:00

    Faza E — Bank referencji artysty (Reference Intelligence)

    • 🖼️ Nowe widoki: **/artist/social/references** i **/admin/social/references** — prywatny bank inspiracji wizualnych per artysta. Drag&drop upload (PNG/JPG/WEBP do 8 MB), tagowanie, filtrowanie po tagach, kasowanie.
    • 🎯 W Generatorze z Momentu (sekcja Moodboard, PRO) nowy przycisk **„Wybierz z banku"** — otwierasz galerię artysty i jednym kliknięciem dorzucasz do 3 gotowych referencji do briefu, bez uploadu za każdym razem.
    • 🔒 Bezpieczeństwo: bucket `social-references` jest prywatny, URL-e generujemy jako signed po stronie serwera; RLS gwarantuje, że artysta widzi tylko swoje referencje, admin widzi wszystkie.
    • 🧠 Fundament pod dalsze fazy: server fn `suggestReferences` już rankuje referencje po tagach + kontekście briefu — kolejny krok to wpięcie tego jako auto-sugestii przy generacji.
  123. v2.149.716 lipca 2026, 14:00

    Shotstack — production (bez watermarku) tylko dla admina

    • 🔒 Renderowanie na Shotstack v1 (produkcja, bez watermarku, płatne) jest teraz ograniczone do konta admina. Artyści zawsze renderują na stage (watermark, free tier) — nie generują kosztów.
    • 🎯 Wybór środowiska liczony po stronie serwera na podstawie roli (`pickShotstackEnv(isAdmin)`), więc nie da się tego obejść z klienta.
    • 💾 W bazie zapisujemy faktyczne `provider_env` renderu — status i watermark-badge pokazują się poprawnie dla obu środowisk.
  124. v2.149.616 lipca 2026, 13:00

    Shotstack — osobne klucze dla stage i v1 (koniec błędu „nieprawidłowy klucz API")

    • 🔑 Rozdzieliliśmy klucze Shotstacka: `SHOTSTACK_STAGE_API_KEY` dla środowiska stage (watermark, free tier) i `SHOTSTACK_PROD_API_KEY` dla v1 (produkcja, bez watermarku). Kod sam wybiera właściwy klucz zależnie od `SHOTSTACK_ENV`.
    • 🛟 Stary `SHOTSTACK_API_KEY` nadal działa jako fallback — nic się nie psuje, jeśli ktoś jeszcze go używa.
    • ✅ Znika błąd „Shotstack (v1): nieprawidłowy klucz API dla tego środowiska" przy próbie renderu reelsów i lyric-video.
  125. v2.149.516 lipca 2026, 12:00

    Studio — 20 nowych stylów wizualnych (razem 30) + fix preview

    • 🎨 **+16 stylów w PRO**: Brutalist, Vaporwave, Glitch/VHS, Gothic/metal, Neo Memphis, Cyberpunk night, Soft dream, Typography only, Graffiti, Gradient mesh, 3D render, Neon signage, Film noir, Comic book, Luxury fashion, Kawaii pop — każdy z własną ikoną, opisem po polsku „kiedy użyć" i pełnym promptem dla modelu.
    • 👑 **+3 style Admin-only**: Broadcast lower-third (kadr TV z paskiem), Award teaser (laur, złoto, spotlight) i Tour map (mapa trasy koncertowej z pinami miast).
    • 🐛 Fix: preview 500 na Studio (`Cannot read properties of undefined (_addFileChildren)`) — brakujący import ikony `Layers` w `MomentGraphicStudio`.
  126. v2.149.416 lipca 2026, 11:00

    Studio — „Ostatnie grafiki" teraz w pełni klikalne (copy / animuj / pobierz)

    • 🖼️ Sekcja „Ostatnie grafiki (Studio)" pokazuje pełne karty ResultCard zamiast statycznych miniaturek — z każdej wcześniej wygenerowanej grafiki możesz od razu pobrać PNG, wygenerować 3 warianty copy ✨, uruchomić „animuj 🎬" (4-sekundowy reel Shotstack), a PRO dodatkowo edytor (zmień tło / wyostrz / dokadruj).
  127. v2.149.316 lipca 2026, 10:00

    Fixy: Copywriting bez artysty + Shotstack stage↔v1 fallback

    • 🐛 **Copywriting Studio** — generowanie 3 wariantów działa też w trybie admin bez wybranego artysty (puste `artistId`/`assetId` traktowane jako brak, zamiast błędu walidacji UUID).
    • 🎬 **Shotstack** — jeśli klucz API pasuje tylko do jednego środowiska (stage lub v1), backend automatycznie próbuje drugiego. Koniec z fałszywym „nieprawidłowy klucz API" przy „animuj".
  128. v2.149.216 lipca 2026, 09:00

    Studio grafik — Animuj i Copy wyciągnięte na wierzch, opisy stylów po ludzku

    • 🎬 **„animuj 🎬" jako osobny widoczny przycisk** przy każdej wygenerowanej grafice (obok „pobierz" i „copy ✨") — po kliknięciu dropdown z 4 presetami ruchu (Ken Burns, Parallax, Zoom pulse, Text reveal) leci prosto do Shotstack. Wcześniej było schowane pod „…" i łatwo było przegapić.
    • 📝 **Opisy 11 stylów wizualnych po ludzku** — zamiast „Duotone risograph print" masz „Duotone risograph — dwa mocne kolory, ziarno. Artystyczne, wygląda jak wydrukowany plakat.". Każdy styl mówi kiedy go użyć (Editorial pod wywiady, Hype pod drop, Polaroid pod backstage, Concert flyer pod trasę itd.).
  129. v2.149.116 lipca 2026, 08:00

    Studio grafik — style z ikonkami i akcentem kolorystycznym

    • 🎨 **Nowe karty stylów** w Generatorze z momentu — każdy z 11 stylów ma dedykowaną ikonkę (Editorial=Newspaper, Hype=Zap, Y2K=Sparkle, Risograph=Layers, Polaroid=Camera, Concert flyer=Ticket, Album teaser=Disc, Billboard=Building itd.) i własny akcent kolorystyczny.
    • ✅ **Wybrany styl** ma teraz wyraźny ring w kolorze akcentu i zielony checkmark w prawym górnym rogu — od razu widać co jest aktywne, bez wpatrywania się w tekst.
  130. v2.149.016 lipca 2026, 07:00

    Faza B — Video-ready: jednym klikiem robisz z grafiki 4-sekundowy micro-reel (Shotstack)

    • 🎬 **Animuj z Studio grafik** — każda wygenerowana grafika ma teraz w menu „Animuj (Shotstack)” z 4 presetami ruchu: Ken Burns (powolny zoom-in), Parallax (slide-up), Zoom pulse (dropowy zoom-out) i Text reveal (Ken Burns + nagłówek wjeżdżający tekstem). Klik = render zlecony do Shotstack, pojawia się w `/admin/social/animate` / `/artist/social/animate`.
    • 🔧 **Backend `promoteGraphicToReel`** — nowa server fn składa Shotstack edit JSON bez wołania LLM (szybciej, taniej), automatycznie wykrywa aspect ratio grafiki (9:16 / 1:1 / 4:5 / 16:9) i podłącza Brand Kit artysty jako kolor tła nagłówka. Zapisuje render w `social_video_renders` z brief `source: promote_graphic`.
  131. v2.148.116 lipca 2026, 06:00

    Studio grafik — styl jako duże buttony, krótsze nazwy w menu, Artysta też ma generator ogólny

    • 🎨 **Styl jako 4. sekcja pełnej szerokości** — zamiast wąskiego dropdowna w kolumnie „Format & silnik” style pokazane jako kafelki 2/3/4/6 kolumn (nazwa + krótki opis), aktywny podświetlony na fuchsia. Łatwiej porównać.
    • ✂️ **Krótsze nazwy w menu** — „Generator grafik (z momentu)” → „Generator z momentu 🎨”, „Generator grafik (ogólny)” → „Generator ogólny 🖼️”. Etykiety mieszczą się w dropdownie bez ucinania.
    • 🧑‍🎤 **Artysta ma teraz „Generator ogólny 🖼️”** — nowa pozycja `/artist/social/new` w menu Social. Ten sam Studio grafik, ale bez przypinania do konkretnego momentu — do szybkich, wolnostojących postów.
  132. v2.148.016 lipca 2026, 05:00

    Studio grafik z Momentu — moodboard z uploadem + szerszy layout

    • 🖼️ **Moodboard przyjmuje pliki** — do 3 referencji, każda jako drag & drop / klik (PNG/JPG/WEBP do 4 MB) albo klasyczny link. Miniatury slotów z podglądem i „×” do usunięcia. Wgrane pliki idą do modelu jako `data:` URL, żaden URL nie jest wymagany.
    • 🧱 **Nowy layout jak w Generatorze ogólnym** — formularz rozłożony na 3 kolumny (Treść · Format & styl · PRO extras) w max-w 1500 px, CTA „Wygeneruj” na pełną szerokość, wygenerowane grafiki lądują pod spodem w siatce 2/3/4 kolumn. Koniec ciągnącej się kolumny formularza.
  133. v2.147.116 lipca 2026, 04:00

    Dwa generatory grafik w menu — „z momentu” i „ogólny”

    • 🖼️ **`/admin/social/new` wraca do menu Social** — generator ogólny (label-wide, bez konkretnego momentu) znów ma link. Nazwany „Generator grafik (ogólny) 🖼️”, obok „Generator grafik (z momentu) 🎨”. To dwa różne narzędzia i oba zostają.
    • 🏷️ **Zmiana nazw** — dotychczasowy „Generator grafik” (admin i artysta) przemianowany na „Generator grafik (z momentu)”, żeby było jasne, że wychodzi z konkretnego Pulse / release / pomysłu / zadania. Ogólny generator (tylko admin) nazwany „Generator grafik (ogólny)”.
  134. v2.147.016 lipca 2026, 03:00

    Copywriting Studio na wierzchu + menu „Social ✨” u admina

    • ✨ **Copywriting Studio widoczny wprost** — przy każdej wygenerowanej grafice PRO/ADMIN doszedł mały gradientowy przycisk `copy ✨` obok `pobierz`. Kliknięcie rozwija cały panel: 3 warianty (SHORT/MEDIUM/LONG), voice slider 0-100, PL/EN/DE i copy-to-clipboard. Wcześniej pack był ukryty w kebab-menu i użytkownicy go nie znajdowali.
    • 🧭 **Nowe menu „Social ✨” u admina** — analogiczny dropdown jak u artysty, w jednym miejscu: Radar 🛰️, Social hub, Studio grafik, Generator grafik, Grafiki promo ID, Generator planu, Mediaplan ID, Kalendarz social, Story editor, Proofy artystów, Logotypy stacji, Brand Kit, Analityka, Trendy TikTok.
    • 🗂️ **Porządek w top-barze** — Radar zniknął z top-baru (jest w Social), Zadania przeniesione z top-baru do grupy „Operacje”, grupa „Media” odchudzona o duplikaty Social i Grafik promo ID. Top-bar znów mieści się bez łamania na desktopie.
  135. v2.146.016 lipca 2026, 02:00

    Copywriting Studio++ — 3 warianty caption, voice slider, tłumaczenia

    • ✨ **3 warianty jednym klikiem** — nowy panel „Copywriting Studio” pod każdą grafiką PRO generuje równocześnie SHORT (1 zdanie + CTA), MEDIUM (2-3 zdania) i LONG (storytelling 4-6 zdań). Każdy z własnym setem hashtagów dopasowanych do platformy.
    • 🎚️ **Voice slider 0-100** — od „komunikat labelu” przez „elegancki / neutralny / swobodny” po „TikTok-native z emoji i slangiem”. AI trzyma się jednego voice’u konsekwentnie we wszystkich 3 wariantach i tłumaczeniach.
    • 🌍 **Tłumaczenia EN + DE** — jeden toggle i pack rośnie do 9 wersji (3 długości × 3 języki). Hashtagi lokalizowane, voice zachowany.
    • 🚫 **Banned hashtags z Brand Kit** — pole „czego NIE używać” w Brand Kit artysty jest teraz respektowane: tagi z prefiksem `#` są automatycznie wycinane z outputu. Preferowane brand hashtagi (jeśli są) doklejane do każdego wariantu.
    • ⚙️ **Backend** — nowa server fn `generateStudioCaptionPack` (Zod validated, JSON mode, rate-friendly). Główny (medium) wariant zapisuje się do `social_assets.copy.caption`, cały pack do `copy.caption_pack` — fundament pod A/B testing i learning loop w kolejnych fazach.
  136. v2.145.016 lipca 2026, 01:00

    PRO Studio+ (faza 1) — karuzela, pakiet formatów i Brand Kit artysty

    • 🎞️ **Karuzela / Story-set** — nowy tryb w generatorze grafik PRO: 2–8 slajdów w jednym briefie, każdy z własnym nagłówkiem, ale ten sam styl, paleta i typografia. AI dokleja indeks „1/N” w rogu każdego slajdu — gotowe do wrzucenia jako IG carousel albo ciąg Storek.
    • 🎁 **One-click „Pakiet 4 formaty”** — przycisk przy sekcji Formaty (tylko PRO) zaznacza jednym kliknięciem wszystkie 4 kanały (IG Story 9:16, IG Square, IG 4:5, FB/YT 16:9). Koniec z zaznaczaniem po kolei.
    • 🎨 **Edytor Brand Kit artysty** — nowy dialog (ikona 🪣 „Brand Kit” w PRO extras) pozwala ustawić kolor główny + akcent, font nagłówka, tone-of-voice i „czego NIE używać”. Zapisuje do `social_brand_kit`, a backend automatycznie wciąga te kolory do promptu przy każdej generacji dla tego artysty.
    • ⚙️ **Backend** — `generateMomentGraphic` przyjmuje opcjonalne `seriesSlides` (do 8), liczy rate-limit z uwzględnieniem slajdów, w bazie zapisuje `seriesId` + `slide/slideTotal` w `copy` (fundament pod eksport ZIP i learning loop w kolejnych fazach). Nowe fn `getStudioBrandKit` / `saveStudioBrandKit`.
  137. v2.144.016 lipca 2026, 00:30

    Proofy 2.0 — metryki wykonania i agregat zasięgów

    • 📊 **Metryki na proofach** — artysta dodając TikToka / IG / YT może opcjonalnie wpisać 👁️ views / ❤️ likes / 🔁 shares z platformy. Nowe kolumny w `artist_proofs` (`metrics_json`, `metrics_updated_at`).
    • 🏷️ **Widoczność na kartach** — komponent `ProofMetricsRow` pokazuje aktywne metryki pill-badge'ami (Views/Likes/Shares/Comments/Saves) razem z datą aktualizacji. Auto-formatowanie `1.2k` / `3.4M`.
    • 🧮 **Agregat w feedzie admina** — na `/admin/social/proofs` pojawiły się 4 kafelki podsumowania: liczba proofów, ile ma metryki, łączne Views / Likes / Shares po całym filtrze (per status/artysta/query). Widać na oko, ile zasięgów łapią realizacje artystów w danym oknie.
    • 🔄 **Server fn `updateProofMetrics`** — osobny endpoint do doszlifowania metryk po czasie (bez re-submit całego proofu). Zwalidowane Zodem, RLS enforce jak reszta.
    • 🚧 **Fundament pod v2.145 H (learning loop)** — metryki z proofów będą wejściem do rankingu presetów generatora („które style dowożą realne zasięgi”).
  138. v2.143.015 lipca 2026, 23:30

    Hydration-safe fundament — `useHydrated()` + `<ClientOnly>`

    • 🧱 **Nowy hook `useHydrated()`** (`src/lib/use-hydrated.ts`) i komponent `<ClientOnly>` (`src/components/client-only.tsx`) — do renderowania JSX zależnego od `window`/`localStorage`/`document` bez hydration mismatch.
    • 🔇 **Naprawiony jedyny render-time `typeof window`** w `/zainstaluj` — link „Otwórz w przeglądarce” dostał `suppressHydrationWarning` (server renderuje `#`, klient dopisuje pełny URL).
    • ✅ **Reszta HUB-a była już SSR-safe** — pełny audyt (`app-shell`, `artist-shell`, wszystkie routy pressroom/admin/artist) potwierdził, że każdy `localStorage.getItem`/`setItem` jest wewnątrz `useEffect` albo event handlera.
    • 🚧 **Fundament pod v2.145** — edytor grafik PRO (moodboard, warianty, inline crop) będzie potrzebował `<ClientOnly>` dla canvas/drag&drop.
  139. v2.143.015 lipca 2026, 23:30

    Hydration-safe fundament — `useHydrated()` + `<ClientOnly>`

    • 🧱 **Nowy hook `useHydrated()`** (`src/lib/use-hydrated.ts`) i komponent `<ClientOnly>` (`src/components/client-only.tsx`) — do renderowania JSX zależnego od `window`/`localStorage`/`document` bez hydration mismatch.
    • 🔇 **Naprawiony jedyny render-time `typeof window`** w `/zainstaluj` — link „Otwórz w przeglądarce” dostał `suppressHydrationWarning` (server renderuje `#`, klient dopisuje pełny URL).
    • ✅ **Reszta HUB-a była już SSR-safe** — pełny audyt (`app-shell`, `artist-shell`, wszystkie routy pressroom/admin/artist) potwierdził, że każdy `localStorage.getItem`/`setItem` jest wewnątrz `useEffect` albo event handlera.
    • 🚧 **Fundament pod v2.145** — edytor grafik PRO (moodboard, warianty, inline crop) będzie potrzebował `<ClientOnly>` dla canvas/drag&drop.
  140. v2.142.015 lipca 2026, 22:00

    Generator grafik „z Momentu" zunifikowany + PRO extras (moodboard, warianty, edytor, caption)

    • 🔀 **Jeden komponent, cztery tiery** — `MomentGraphicStudio` zastąpił osobne generatory admina i artysty. Ten sam prefill (headline / subline / kontekst / graphicMode / style / sourceKind) działa teraz identycznie z Pulse, Pomysłów, Planu dnia i katalogu ID Promo, niezależnie czy klika admin czy artysta. Widok automatycznie przełącza tier: LITE (tylko podstawy), STANDARD (mniej stylów, 1 format, tylko tło), PRO (pełen zestaw), ADMIN (wszystkie style + Ultra GPT-image-2).
    • 🎨 **Brand lock ID Records** — jeden toggle wymusza paletę i klimat ID Records w promptcie, zostawia miejsce w rogu na logo (dla PRO/Admin).
    • 🖼️ **Moodboard z 3 URL-i referencji** — obrazy referencyjne wciągane po HTTP, doklejane do generacji jako `image_url` w Gemini (Nano Banana / Gemini 3 Pro Image) — „w klimacie tych referek”.
    • 🎯 **Warianty A/B/C** — jeden klik = 3 różne kompozycje tego samego momentu (headline i dane identyczne, tylko układ się zmienia). Wybierasz najlepszą do publikacji.
    • 🪄 **Edytor po generacji** (menu na karcie wyniku, PRO/Admin) — „Zmień tylko tło”, „Wyostrz + kontrast”, „Dokadruj do formatu”, „Wymień headline”. Pod maską drugie przejście przez Gemini z referencją do wygenerowanej grafiki.
    • 💬 **Caption + hashtagi pod post** — jeden klik po generacji: Gemini 3 Flash pisze caption (IG / TikTok / FB) z hashtagami dopasowanymi do platformy i tematu, zapisuje do `social_assets.copy.caption/hashtags`, kopiuj-wklej do publikacji.
    • 💾 **Presety generatora** — nowa tabela `social_studio_presets`: zapisujesz całą konfigurację (styl + jakość + tryb + formaty + brand lock + moodboard) i klikasz jednym przyciskiem. Admin może udostępnić presety wszystkim PRO (`is_shared`).
    • 🎭 **Rozszerzona biblioteka stylów** — PRO dostał Y2K chrome, risograph, polaroid; admin dodatkowo concert flyer, album teaser, billboard OOH. Style filtrowane per tier.
  141. v2.141.015 lipca 2026, 18:00

    Grafiki promo ID Records z REALNYM contentem + tryb tło/pełna grafika

    • 🎯 **Klik w kategorię ciągnie realne rekordy z bazy** — TOP miesiąca/tygodnia (radio) agreguje `radio_play_events`, „Nowa stacja gra” bierze unikalne pary stacja×utwór z ostatnich 7 dni (z logo z `channel_master`), premiery z `projects.premiere_date`, milestone'y i editorial playlisty z `social_pulse_events`, proofy z `artist_proofs`, eventy z `calendar_events`.
    • ☑️ **Picker rekordów w dialogu kategorii** — widzisz numerowaną listę (artysta — tytuł — liczba spinów), zaznaczasz co ma wpaść na grafikę. AI propozycje dostają te dane w brief, więc headline'y są konkretne.
    • 🎨 **2 tryby generatora**: „Pełna grafika” (AI wpisuje wybrane dane wprost na obraz — top listę, artystów, liczby, do publikacji od razu) oraz „Tylko tło” (brandowane tło z safe-area do overlay'a w Story Editorze/Canvie). Domyślny tryb per kategoria.
    • 🧠 **Prompt engineering** — `buildPrompt` dostał `mode`; FULL każe modelowi renderować listę 1:1 z payloadu, BACKGROUND zakazuje jakiegokolwiek tekstu i wymusza pustą safe-area.
    • 🔗 **Payload → generator** — do `/admin/social/studio/generate` przechodzi headline, subline, kontekst + blok „KONKRETNE DANE” + wybrany tryb + styl AI (prefill).
  142. v2.140.015 lipca 2026, 14:00

    Grafiki promo ID Records — katalog 50+ kategorii + gwiazdki w /admin/ideas

    • 🎨 **Nowy dział `/admin/social/studio/id-promo`** — 50+ gotowych kategorii grafik na oficjalne IG/FB ID Records: TOP 3/5/10 tygodnia (streaming, radio), nowa stacja, milestone streamowy, editorial playlist, powrót artysty, cytat z wywiadu, before/after, backstage, „ktoś super to zrobił” (Proof), sold out, sync, certyfikacje ZPAV, Wrapped, urodziny, awards, meet&greet, throwback, sonda… podzielone na 10 grup i 3 tiery (LITE / STANDARD / PRO).
    • 🤖 **Klik w kategorię = 3 propozycje AI** — Gemini komponuje 3 różne warianty (headline + subline + kontekst + styl) plus 3 sugestie „co jeszcze zrobić” (Story-seria, cross-post, video-follow-up). Wybór wariantu → prefill do generatora grafik `/admin/social/studio/generate` (multi-format, silniki, refine chat, loga stacji — wszystko z Momentu).
    • 🔎 **Wyszukiwarka + filtry** — po nazwie, grupie tematycznej, tierze. Widoczne domyślne formaty i źródło danych każdej kategorii.
    • ⭐ **Gwiazdki artysty w `/admin/ideas`** — nowy sort „Najlepiej ocenione przez artystę”, filtr „★ 4+” oraz badge w headerze z liczbą ocenionych pomysłów i średnią oceną (np. „śr. 4.2 · 12 × ★4+”).
    • 🧹 **Wywalony `/admin/promo/katalog`** — abstrakcyjny dump listy kluczy zastąpiony realnym generatorem. Link w menu `System` usunięty, nowy link „Grafiki promo ID 🎨” w `Media`.
  143. v2.139.015 lipca 2026, 08:00

    Katalog promo ID Records — jeden widok na wszystkie kategorie

    • 📚 **Nowa trasa `/admin/promo/katalog`** — wszystkie kategorie działań (100+), pogrupowane logicznie (media, live, przed premierą, dzień premiery, reanimacja singla, konwersja słuchacz→fan, viral follow-up, content, community, streaming, IRL, biznes, dane, PR), wraz z platformami social i emoji.
    • 🔎 **Wyszukiwarka** — filtruje po nazwie i kluczu (przydatne przy debugowaniu, o co chodzi z konkretnym `key` w bazie).
    • 🧭 Link dostępny z admin nav → **System / Katalog promo**.
  144. v2.138.015 lipca 2026, 07:00

    Unifikacja generatorów rolek i lyrics video (admin ↔ artysta)

    • 🎬 **Jeden generator rolek dla wszystkich** — nowy komponent `ReelStudio` używany zarówno w `/admin/social/animate`, jak i `/artist/social/animate`. Artysta dostaje ten sam UX (preset cards, styl, opis + AI Czat, referencje 8/8, mood, długość, format) co ID Records; jedyna różnica to target picker w adminie i presety pod właściwą rolę.
    • 🎤 **Jeden generator lyrics video** — analogicznie `LyricsVideoStudio` na obu stronach: autofill artysty/premiery po adminowym targecie, refs artysty w trybie artist, ten sam AI Czat pod tekst.
    • 🔓 **Tiery gotowe pod poziomy** — `PRO` (domyślny) pokazuje pełen zestaw (audio URL, override koloru, tekst overlay, tło URL, mood 1–10, format 16:9). `STANDARD`/`LITE` chowa advanced — kiedy tier system artysty ruszy, wystarczy podać `tier` w route.
    • 🧹 Cztery pliki route’ów schudły z ~1400 linii do ~200 — mniej duplikacji, mniej rozjazdów między adminem i artystą.
  145. v2.137.015 lipca 2026, 06:00

    Redesign Social Hubu artysty + Radar/Mediaplan wracają do topbara

    • 🎨 **`/artist/social` przebudowane** — koniec reliktowego formularza „Generator treści na social” (duplikował `/artist/social/graphics`). Nowy hub: karta „Generatory” z zakładkami **Grafiki · Momenty · Stories · Rolki · Lyrics video** (deep-linki do dedykowanych studio), poniżej referencje i twoje ostatnie assety.
    • 🛰️ **Radar 🛰️ wrócił do głównego paska** obok Pulse — i zostaje też jako pierwszy link w dropdownie Social.
    • 📅 **Mediaplan przeniesiony z Media do Social** — bo koncepcyjnie jest częścią kalendarza socialowego, nie tradycyjnych mediów.
    • 🧹 Uporządkowane pill-linki w hubie: Radar, Trendy, Plan, Mediaplan, Kalendarz, Konta, Moje realizacje, Analytics, Analiza AI, Brand Kit — bez duplikatów Studio grafik/Stories (są w zakładkach).
  146. v2.136.415 lipca 2026, 05:00

    Menu artysty: Radar w topbarze + Mediaplan przeniesiony do Social

    • 🛰️ **Radar 🛰️** znowu dostępny bezpośrednio z górnego paska (obok Pulse), a w dropdownie Social przesunięty na samą górę.
    • 📅 **Mediaplan** przeniesiony z grupy „Media” do grupy „Social” — łatwiej trafić razem z Kalendarzem i Planem.
  147. v2.136.315 lipca 2026, 04:00

    Nowa grupa Social w górnym menu artysty

    • 🎛️ **Nowy dropdown „Social” w topbarze artysty** — w jednym miejscu: Social hub, Radar 🛰️, Trendy TikTok, Generator planu, Generator grafik, Generator stories, Generator rolek, Lyrics video, Konta, Moje realizacje 📸, Analiza AI, Brand kit.
    • 🧹 Radar 🛰️ zszedł z głównego paska do grupy Social, a „HUB na start” skrócone do „Na start” — górne menu nie rozjeżdża się na desktopie.
    • 📸 Moje realizacje są teraz dostępne z dwóch miejsc: pill w `/artist/social` **oraz** dropdown Social w topbarze.
  148. v2.136.215 lipca 2026, 03:00

    Kurator logotypów: widać wszystkie stacje (infinite scroll) + link do „Moje realizacje” w menu artysty

    • 📻 **Kurator logotypów stacji** (`/admin/social/logos`) — koniec limitu 60. `listChannelsForLogoCuration` obsługuje `offset`, klient używa `useInfiniteQuery` + IntersectionObserver: doładowuje po 100 stacji przy scrollu. Licznik „Załadowano X+ stacji” nad listą.
    • 📸 **Nowy pill „Moje realizacje” w hubie Social artysty** (`/artist/social`) — do tej pory freeform proof można było dodać tylko z pomysłu/zadania. Teraz artysta ma bezpośrednie wejście do `/artist/social/moje-realizacje` obok Pulse/Plan/Trendy/Kalendarz/Konta.
  149. v2.136.115 lipca 2026, 02:00

    „🏆 Dodałem to! (proof)” na kartach pomysłów i zadań planu dnia

    • 🏆 **Nowy przycisk „Dodałem to! (proof)”** na każdej karcie pomysłu (`/artist/ideas`, `/admin/ideas`) i zadania w planie dnia (`/artist/plan-dnia`). Otwiera `ProofSubmitDialog` z pre-wypełnionym tytułem, `kind=idea`/`playbook_task` i `refId` → proof wpada do `artist_proofs` i pojawia się od razu w `/admin/social/proofs`.
    • ✅ Po wysłaniu proofa status pomysłu/zadania leci automatycznie na `done` (jeśli nie był).
    • 🎨 W Proofach wydawca ma już CTA „Wygeneruj grafikę do sociali” — cały flow zamknięty: pomysł → wykonanie → proof → recap-grafika.
  150. v2.136.015 lipca 2026, 01:10

    Proofy: fix loadera + CTA „🎨 Wygeneruj grafikę do sociali" na każdej karcie

    • 🐛 **Fix loadera proofów** — `listArtistProofs` odwoływał się do nieistniejącej kolumny `artists.name` (jest `display_name`) + do embed'a `profiles:author_user_id`, który wywalał zapytanie. Rozbite na 3 równoległe zapytania (`artist_proofs` + `artists` + `profiles`) — proofy się wreszcie ładują w `/admin/social/proofs`.
    • 🎨 **Nowa akcja na każdej karcie proofu**: „🎨 Wygeneruj grafikę do sociali" — otwiera `SocialHookDialog` z nowym trybem `kind: proof`. AI (`generateProofHooks`) analizuje tytuł/opis/linki/platformy proofu i zwraca 3 różne propozycje recap-grafiki (headline + subline + wizualnie + caption + styl + angle „recap/dziękuję/backstage/milestone"). Wybór → deep-link do Studio z prefillem `mode=recap`.
    • 🧩 Sam prompt AI uwzględnia pełny kontekst artysty (persona, gatunek, publikacje) — grafiki wychodzą spersonalizowane, nie generyczne.
    • ⏭️ Dalej: v2.137.0 — gwiazdki artysty w admin ideas/plany + wspólny `PulseCard` dla admina i artysty.
  151. v2.135.415 lipca 2026, 00:20

    Admin → Użycie AI: nazwy zamiast UUID

    • 👤 **W tabelach „Per użytkownik (AI + Network)" i w alertach** zamiast surowego UUID (`40ea820f-a649-…`) pokazujemy nazwę użytkownika (artysta / dziennikarz / display_name z profilu) i email pod spodem. Skrót ID (`40ea820f…`) zostaje jako fingerprint z tooltipem pełnego ID — łatwiej rozpoznać kto ile pali kredytów.
    • 🔎 Etykiety resolvują się jednym zapytaniem `resolveUserLabelsAdmin` (profiles + artists + journalists + `auth.admin.listUsers` dla emaili), z fallbackiem do UUID gdy się nie uda.
  152. v2.135.314 lipca 2026, 23:55

    Inbox: koniec kolizji Messenger ↔ Intencje ról + ładniejszy widok zgłoszeń

    • 🧹 **Fix kolizji `/admin/inbox` (Messenger) ↔ `/admin/inbox/intents`** — dotąd intents był dzieckiem trasy Messengera, przez co po wejściu na Intencje renderował się Messenger (parent nie miał `<Outlet />`), a zawartość intents znikała. Route przeniesiony na `admin_.inbox_.intents.tsx` — teraz to niezależna strona, bez zakładek Messengera na wierzchu.
    • 📋 **Ładny widok zgłoszenia zamiast surowego JSON-a** — nowy komponent `PayloadView` renderuje pola jako parkę `klucz → wartość` w gridzie 2 kolumn (odfiltrowane puste), z przełącznikiem „Pokaż raw JSON" gdy chcesz zajrzeć głębiej.
    • 🆔 **Kopiuj user_id jednym klikiem** + skrócony fingerprint w karcie. Nowy status pośredni **„W trakcie"** obok Akceptuj/Odrzuć — łatwiej ogarniać kolejkę.
    • ⏭️ Dalej: v2.136.0 Proofy (fix loader + osadzenie w kartach + AI-summary + globalny feed).
  153. v2.135.214 lipca 2026, 23:20

    Pulse: fix „Could not find a relationship…" + CTA widoczne u artysty

    • 🐛 **Fix błędu „Could not find a relationship between project_events and projects"** — `generatePulseHooks` / `generatePulseActions` nie mogły dociągnąć kontekstu eventu (brak FK w schema cache PostgREST). Rozbite na osobne zapytania: `project_events` → `projects` → `artists`. Klik w „🎨 Wygeneruj grafikę do sociali" i „✨ Zrób z tym coś" wreszcie działa.
    • 👀 **CTA w Pulse artysty się pojawiły** — warunek renderujący sprawdzał pole `artist_id`, którego `listArtistPulseEvents` nie zwraca (zwraca `project_artist_id`). Przez to u artysty przyciski „🎨 Wygeneruj grafikę do sociali" i „✨ Zrób z tym coś" były po cichu ukryte pod każdą kartą. Teraz są.
  154. v2.135.114 lipca 2026, 22:45

    Pulse: dwa nowe CTA na każdej karcie — „🎨 Wygeneruj grafikę do sociali" + „✨ Zrób z tym coś"

    • 🎨 **„Wygeneruj grafikę do sociali"** — teraz osobny widoczny przycisk na KAŻDEJ karcie eventu w Pulse (admin + artysta). AI generuje **3 propozycje grafiki dobrane pod TYP wydarzenia**: sukces/milestone → celebracja + liczba, warning → miękka reakcja/transparency, info → newsowy hook, radio/playlist → podziękowanie stacji. Ta sama estetyka co w Pomysłach/Planie Dnia — dialog z 3 kartami do wyboru + regeneracja.
    • ✨ **„Zrób z tym coś"** — zupełnie nowy przycisk. AI proponuje **3 różne akcje z różnych kategorii** (nie 3× grafika!) — jedna do wrzucenia (grafika/rolka/story/post), jedna do zorganizowania (plan/pomysł/mediaplan/koncert), jedna do domknięcia relacji (podziękowanie/nagroda/analiza/call-out/kolab). Każda z konkretnym „dlaczego to teraz" + gotowym scenariuszem/draftem.
    • ⚡ **Akcje wykonują się od razu:** „Dodaj do Planu Dnia" i „Dodaj do Pomysłów" tworzą rekord w tle + toast; „Podziękowanie/Caption/Story" kopiują draft do schowka; „Grafika/Rolka" deep-linkują do Studio z prefillem. Ślad źródła (`source: pulse_event`) leci w bazie.
    • 📱 **Pulse artysty rozbudowany** — do tej pory artysta miał tylko „Wygeneruj pomysły" + „Wrzuć w mediaplan". Teraz ma pełen zestaw kreatywnych narzędzi w każdej karcie eventu, dokładnie ten sam co admin (poza akcjami czysto wydawniczymi jak „Podbij jako sukces").
    • 🔌 Nowe pliki: `src/lib/pulse-react.functions.ts` (`generatePulseHooks`, `generatePulseActions`, `pulseToPlanTask`, `pulseToIdea` — pełen kontekst artysty + eventu w prompcie), `src/components/pulse/pulse-action-dialog.tsx` (portal-owy dialog z 3 propozycjami akcji). `SocialHookDialog` obsługuje teraz źródło `pulse-event`.
    • ⏭️ Następne: v2.135.2 fix kolizji „Intencje ról" ↔ Messenger, v2.136.0 Proofy (fix loader + osadzenie w kartach), v2.137.0 gwiazdki artysty w adminie, v2.138.0 katalog 50 kategorii promo, v2.139.0 fix hydration mismatch top-nav.
  155. v2.135.014 lipca 2026, 21:30

    Krok 5 planu: 3 tryby generatora grafik — recap w Pulse, fan-hook w Pomysłach/Planie

    • 🔧 **Naprawa niespójności:** wcześniej klik „Wygeneruj grafikę do sociali" w Pomysłach/Planie po prostu podstawiał tytuł pomysłu jako headline — bez sensu (artysta nie postuje „Nagraj TikToka z playbacku"). Teraz każde źródło ma swój tryb.
    • 💡 **Pomysły + 📅 Plan Dnia (`mode=fan-hook`)** — klik otwiera **dialog z 3 propozycjami AI** (`headline`, `subline`, wizualnie CO ma być na obrazku, gotowy caption, styl, angle). Każda propozycja to inny kąt — wyzwanie / kulisy / meme / throwback. Wybierasz jedną → deep-link do generatora Studio (admin) lub Graphics (artysta) z prefillem. Można wygenerować kolejne 3 propozycje.
    • 🛰️ **Pulse (`mode=recap`)** — każda karta postu ma teraz **osobny widoczny przycisk „🎨 Grafika recap"** (obok „Podobne" / „Komentarze"). Prefill: headline z tytułu postu, kontekst „grafika PODSUMOWUJĄCA moment (X wyśw., Y ❤)" — do posta ID Records/artysty o tym co się stało.
    • 🎨 **Generator Studio** rozpoznaje `?mode=recap|fan-hook` i zamienia nagłówek + opis nad formularzem, żeby było jasne w jakim trybie generujesz.
    • 🔌 Nowe pliki: `src/lib/social-hook.functions.ts` (2 server fn: `generateSocialHookFromIdea`, `generateSocialHookFromTask` z pełnym kontekstem artysty), `src/components/social/social-hook-dialog.tsx` (portal-owy dialog wyboru).
    • ⏭️ Następne: #1 kolizja „Intencje ról" ↔ dymek Messengera, potem Proofy (fix loader + osadzenie w kartach pomysłów/planu/pulse + AI-summary), potem gwiazdki artysty w admin + unifikacja Pulse admin/artysta, potem katalog 50 kategorii promo ID Records.
  156. v2.134.314 lipca 2026, 20:15

    Krok 4 planu: „Wygeneruj grafikę do sociali" wszędzie tam gdzie powstaje kontekst

    • 📝 Poprawiona nazwa CTA — z lakonicznego „🎨 Grafika" na czytelne **„🎨 Wygeneruj grafikę do sociali"**.
    • 🛰️ **Pulse** — menu akcji postu (`⋯`) ma teraz pozycję „🎨 Wygeneruj grafikę do sociali". Prefill: `headline = title postu`, `subline = content_kind`, `context = "Nawiąż do postu z <PLATFORMA> (<views> wyśw.) — utrzymaj ton i kontekst tego contentu."`, `artistId = artist_id postu`. Działa dla admina i artysty.
    • 📅 **Plan Dnia (artysta)** — każde zadanie ma teraz przycisk „🎨 Wygeneruj grafikę do sociali" z prefillem tytułu, `kind`, opisu i expected_impact.
    • 💡 **Pomysły** — analogiczny przycisk w karcie każdego pomysłu (bez zmian od poprzedniej wersji, tylko przemianowany).
    • ⏭️ Następne: naprawa kolizji „Intencje ról" ↔ dymek Messengera, integracja Proofów z Pomysłami/Pulse, katalog grafik promo (LITE/STANDARD/PRO), unifikacja Pulse admin ↔ artysta.
  157. v2.134.214 lipca 2026, 19:30

    Krok 3 planu: drafty z treścią + „🎨 Grafika" deep-link z Pomysłów

    • 📝 **Drafty, akceptacje i edycje** (`/admin/social/queue`) — puste karty to była zła kaskada pól. Teraz treść czytamy w kolejności: `copy.caption → copy.text → copy.body → brief.description → brief.text → brief.body → prompt → label`. Jeśli faktycznie nic nie ma — wyświetlamy jasny komunikat „(pusty draft — uzupełnij w edycji)" zamiast lakonicznego „(brak treści)".
    • 🎨 **Nowy CTA „🎨 Grafika"** w każdej karcie Pomysłu (admin i artysta) — jedno kliknięcie otwiera generator Studio z **prefillowanym** headline (tytuł pomysłu), subline (kategoria) i kontekstem (body + expected_impact). Artysta trafia do `/artist/social/graphics`, admin do `/admin/social/studio/generate`.
    • 🔗 Generator Studio (`admin` i `artist`) obsługuje teraz `?headline=&subline=&context=&artistId=` w URLu — pierwszy krok do pełnej integracji Pomysły ↔ Studio ↔ Pulse ↔ Plan Dnia.
    • ⏭️ Następne: podobne deep-linki z Pulse i Plan Dnia, unifikacja Pulse (admin/artysta), naprawa kolizji „Intencje ról" ↔ dymek Messengera, katalog grafik promo (LITE/STANDARD/PRO).
  158. v2.134.114 lipca 2026, 18:00

    Krok 2 planu: realne userId w AI Usage (release + clip brief)

    • 👤 Generatory z modułu premier (Copilot A&R, Post-mortem, Producer Brief, Admin Copilot, Brief Label Summary) oraz clip-briefu (voice brief → transcript/summary, label summary, producer brief) logują teraz do `ai_usage_log` **prawdziwy `user_id`** admina/artysty zamiast `null` → widok `/admin/ai-usage` pokazuje kto co generował, a nie „system".
    • 🔒 Powyższe serwer-fn dostały `.middleware([requireSupabaseAuth])` — nikt anonimowy ich nie wywoła, a middleware wstrzykuje `context.userId` automatycznie.
    • ℹ️ Pozostałe callsite'y (pressroom-ai, hub-assistant, ideas, itd.) już wcześniej logowały `context.userId` — po tej iteracji cały pipeline AI premier też jest szczelny.
    • ⏭️ Następne kroki: rozbicie AI Usage per moduł + limity per user (STANDARD/PRO), naprawa kolizji „Intencje ról" ↔ Messenger, integracja Proofów z Pomysłami/Pulse.
  159. v2.134.014 lipca 2026, 17:15

    Krok 1 planu naprawczego: opisy, defaulty, tiery w pamięci

    • 🏷️ System tierów **LITE / STANDARD / PRO / ULTIMATE** zapisany w pamięci projektu — od teraz każda nowa funkcja rozpisywana z podziałem na 4 kumulatywne poziomy (LITE=wszyscy, STANDARD=od poziomu A, PRO=od poziomu S, ULTIMATE=od poziomu H). Docelowo do wystawienia w `/pricing`.
    • 📥 „Intencje ról" (`/admin/inbox/intents`) dostały czytelny nagłówek z opisem — to zgłoszenia z formularza `/wybierz-role`, nie messenger. (Jeśli klik ciągle otwiera dymek messengera — kolizja UI, do naprawy w kolejnej iteracji.)
    • ✅ „Do akceptacji" (`/admin/inbox-approvals`) wyjaśnia w nagłówku, że to zbiorczy inbox spraw z całego HUBa (premiery, zadania, rollouty, dziennikarze, feedback, Connect, wywiady, requesty pomysłów…).
    • 📻 Kurator logotypów stacji domyślnie pokazuje **Wszystkie** stacje (nie tylko „Bez logo") — łatwiej podmienić istniejące, brzydkie loga.
    • ℹ️ Pozostałe 7 punktów z listy naprawczej (userId w AI Usage, integracja Proofów/Grafik z Pomysłami/Pulse, katalog 50 kategorii grafik promo ID Records, unifikacja Pulse artysta↔admin, drafty) — w kolejnych iteracjach; nie zapominamy.
  160. v2.133.2014 lipca 2026, 16:00

    Produkcja: końcowa kwota bez „od" + fix fałszywego sign-offu artysty

    • 💰 Podsumowanie oferty projektu produkcyjnego pokazuje pełną kwotę (np. „10 000 zł netto") zamiast „od 10 000 zł netto" — na tym etapie prezentujemy artyście finalną wartość oferty, nie widełki.
    • 🐛 Fix: gdy admin zamykał etap „Finalizacja" jako „Gotowe", backend automatycznie oznaczał to jako sign-off artysty. Teraz sign-off odpali się TYLKO gdy sam artysta kliknie „Zatwierdzam ten etap".
    • ↩️ Admin dostał w karcie finalizacji przycisk „cofnij akceptację" — można wyzerować omyłkowo ustawiony sign-off (przydatne dla dzisiejszego zgłoszenia artysty).
  161. v2.133.1914 lipca 2026, 15:10

    Fix: Generator Brand Kitu artysty znów działa

    • 🎨 Artysta zgłosił, że generator Brand Kitu wywala długi komunikat błędu na białym tle. Przyczyna: GPT-5 w trybie JSON zjadał cały budżet tokenów na „myślenie" i zwracał pusty obiekt — walidator pokazywał wtedy surową listę brakujących pól.
    • ⚡ Przełączyliśmy generator (artysta + label) na szybki model Gemini Flash, który stabilnie zwraca poprawny JSON z paletą, fontami, tone of voice i hashtagami.
    • 🛡️ Dodana odporność na zawinięte odpowiedzi (np. `{ brand_kit: {...} }`) oraz przyjazny komunikat po polsku, gdyby coś jeszcze poszło nie tak — koniec z „walltextem" z Zod issues.
  162. v2.133.1814 lipca 2026, 14:35

    Landing: Talentobranie bez zbędnego „Pełny formularz"

    • 🧹 Usunięty trzeci CTA „Pełny formularz" w sekcji Talentobranie (mobile + desktop). Zostają dwa główne przyciski: „Zapisz się jako kandydat" i „Zapisz się jako fan" — tak jak w KISS/BANG. Koniec z rozjeżdżaniem się układu na desktopie.
    • 🔗 Strona `/pre-talentobranie` dalej działa — usunęliśmy tylko chip z landingu, nie samą podstronę.
  163. v2.133.1714 lipca 2026, 14:05

    Fix: Plan promo / kalendarz działa u artysty (AI-refine bez admin-only)

    • 🛠️ Zdjęty twardy admin-guard z `ai-refine` (Focus czat + iteracje wersji). Artysta widzi teraz „Focus planu — czat AI" na `/artist/social/plan` bez błędu „Brak uprawnień (tylko admin)". Poprawka odblokowuje też te same czaty w `artist/social/animate`, `artist/social/graphics`, `artist/social/lyrics-video` i w `IdeaGeneratorDialog`.
    • 🔒 Autoryzacja per-artistId: refine chat sprawdza teraz, czy jesteś ownerem/managerem tego artysty (albo adminem). Bez artistId → tylko admin lub autor wątku.
    • 🎯 Label-owe scope'y (radio pitch, press pitch/lead/story, Spotify pitch, newsletter) dalej wymagają admina — te nadal są po stronie wydawcy.
  164. v2.133.1614 lipca 2026, 13:15

    Landing: nowe brandowe grafiki KISS/BANG i Talentobranie 2.0

    • 💋 KISS/BANG: nowy pełny key visual (neonowe serce z błyskawicą, sylwetki i wordmark „POWSTAJE NOWY GIRLSBAND" w jednej grafice) — dopasowany do mobile, tabletu i desktopu. Usunięte nakładane osobno wordmarki i podpisy — wszystko jest już w obrazie.
    • 🎤 Talentobranie 2.0: nowy banner z logo #Talentogranie na tle sceny i tłumu — mobile/tablet dostały landscape crop, desktop pokazuje grafikę w prawej kolumnie bez ucinania.
    • 🏷️ Poprawka duplikatu chipów — było „Edycja 2.0 · Nabór otwarty" + „Zapisy otwarte" (dwa razy to samo). Teraz: „Talentobranie · Edycja 2.0" + „Zapisy otwarte".
  165. v2.133.1514 lipca 2026, 12:30

    Landing: szersza siatka i pełne logo Talentobranie w teaserze

    • 🖥️ Główny kontener strony poszerzony do 1400px — koniec z wąskim „paskiem" na desktopie i wielkimi pustymi marginesami po bokach.
    • 🎯 Banner „Talentobranie 2.0" w teaserze pokazuje się teraz w całości (object-contain zamiast crop) — pełne logo widoczne, bez ucinania z lewej i prawej.
    • 💋 KISS/BANG bez zmian — kadr pozostaje OK.
  166. v2.133.1414 lipca 2026, 12:00

    Landing: przebudowa teaserów Talentobranie 2.0 i KISS/BANG na desktopie

    • 🖥️ Desktopowy układ obu teaserów przerobiony na czysty split hero: treść + CTA po lewej stronie, banner/scena po prawej — koniec z tekstem lądującym na środku wielkiej grafiki.
    • 🎯 Talentobranie: banner „Talentobranie 2.0" idzie w prawą kolumnę z miękkim fade w tło karty; nagłówek, checklista benefitów i przyciski „Zapisz się" siedzą po lewej w równym rytmie.
    • 💋 KISS/BANG: scena z wordmarkiem KISS/BANG po prawej, po lewej neonowe logo, nagłówek, 4 filary castingu i CTA „Dołącz do castingu" — bez przeskakującego wordmarka nad tekstem.
    • 📱 Mobile i tablet bez zmian — te widoki były OK i zostają nietknięte.
  167. v2.133.1314 lipca 2026, 10:00

    PressRoom Features: czytelniejszy kreator pitchy

    • Zmienne (`{{first_name}}`, `{{outlet}}`, …) jako klikalne chipy pod tematem, wstępem i outro — najedź kursorem, żeby zobaczyć, co się podstawi u każdego wybranego dziennikarza. Klik wstawia zmienną w miejscu kursora.
    • Wariant serwisu „Tygodniowy" przemianowany na „RADIO" (krótsza etykieta, spójny opis) — bez zmian w bazie ani logice wysyłki.
    • Sekcja „Personalizacja per dziennikarz" auto-synchronizuje się z listą adresatów: dodajesz/usuwasz osobę u góry, panel personalizacji od razu pokazuje aktualny skład (koniec z rozjazdami po zapisie).
    • Pod przyciskiem „Opublikuj" jasna nota: publikacja tylko udostępnia stronę pod publicznym linkiem — maili nie wysyła. Wysyłkę pitchy odpalasz osobno.
  168. v2.133.1211 lipca 2026, 23:58

    Talentobranie 2.0: poprawione kafle benefitów na landingu

    • 🎤 Kafel „Singiel + kariera" zmieniony na „Nagraj singiel" + podtytuł „i promuj z ID Records" — konkretna obietnica dla kandydata.
    • ⚡ Kafel „Live'y i bitwy" zmieniony na „Zdobywaj fanów" przez cały sezon — budowanie bazy zamiast jednorazowych wydarzeń.
  169. v2.133.1111 lipca 2026, 23:55

    KISS/BANG: czysty wordmark z pojedynczym slashem

    • 🖌️ Napis „KISS/BANG" przemalowany od zera — jeden slash zamiast „//", ostre czyste krawędzie pędzla, koniec z białymi resztkami wokół liter.
  170. v2.133.1011 lipca 2026, 23:45

    KISS/BANG: wordmark wreszcie czytelny na hero

    • 🌑 Mocniejszy ciemny scrim na hero + miękka czarna poświata pod „KISS/BANG" — koniec z rozmytym napisem na neonowej ramie.
  171. v2.133.911 lipca 2026, 23:30

    KISS/BANG: wordmark na środku hero + czyste wycięcie

    • 🎯 Napis „KISS/BANG" wtopiony teraz na środku hero grafiki (mobile), banner odchudzony — koniec pustego pasa pod spodem.
    • ✂️ Wordmark przegenerowany z czystym przezroczystym tłem — brak białych resztek po niechlujnym wycięciu.
    • 🧹 Usunięty zdublowany akapit „Nie szukamy idealnych. Szukamy prawdziwych.".
  172. v2.133.811 lipca 2026, 23:15

    KISS/BANG: wordmark wtopiony w hero banner

    • 🎨 Pędzlowy napis „KISS/BANG" siedzi teraz wewnątrz hero banneru (na dole neonowej sceny) — tak samo jak logo Talentobrania jest wtopione w swoje tło. Spójny rytm obu kart na landingu.
  173. v2.133.711 lipca 2026, 23:05

    KISS/BANG: prawdziwy pędzlowy wordmark wtopiony w hero

    • 🖌️ Napis „KISS/BANG" jest teraz prawdziwym obrazem-wordmarkiem z brandowego key visualu (pink + violet brush, PNG na transparencie), wtopiony w hero z neonowym drop-shadow — tak jak logo Talentobrania.
    • 🔤 Przywrócony czysty Anton dla nagłówka „8 ENERGII. KTÓRA JEST TWOJA?" — koniec z upiornym pędzlowym fontem.
  174. v2.133.611 lipca 2026, 22:45

    KISS/BANG: pędzlowy logotyp + prawdziwe twarze 8 ENERGII

    • 🖌️ Napis „KISS/BANG" w prawdziwym pędzlowym foncie (Rubik Wet Paint), zamiast klasycznego kondensowanego sansa — 1:1 z key visualem brandu.
    • 👯 Kafle 8 ENERGII dostały tła z portretami 8 różnych kobiet (Heart, Rebel, Queen, Dreamer, Fire, Icon, Muse, Storm) — każdy charakter naprawdę się różni, nie tylko kolorem tła.
  175. v2.133.511 lipca 2026, 22:20

    KISS/BANG: nowy hero „neonowa scena" + sekcja 8 ENERGII na landingu HUBa

    • 🎭 Portret dziewczyny zamieniony na klimatyczną neonową scenę (mikrofon, dym, różowo-fioletowe światła) — mocny key visual bez konkretnej twarzy, żeby każda kandydatka mogła się w nim odnaleźć.
    • ⚡ Nowa sekcja pod CTA: „8 ENERGII. KTÓRA JEST TWOJA?" — 8 kolorowych kafli charakterów (Heart, Rebel, Queen, Dreamer, Fire, Icon, Muse, Storm) w stylu referencji brandowej, scroll-snap na mobile, siatka 8-w-rzędzie na desktopie.
  176. v2.133.411 lipca 2026, 21:55

    Talentobranie — nowy hero banner z oficjalnym logo + drobne poprawki KISS/BANG

    • 🎤 Nowy, dedykowany hero banner Talentobrania na hubie: oficjalne logo #Talentobranie wtopione w cinematic tło (arena, spoty, tłum, neonowe akcenty). Osobne wersje pod mobile (portret) i desktop (wide) — brak dublowania logo, spójne z rangą key visuala KISS/BANG.
    • 💋 KISS/BANG: usunięte powtórzone zdanie o śpiewaniu (informacja jest już w mikro-ikonach i na dole), wywalony przycisk „Udostępnij", a kafelek „Wyzwania AI" zastąpiony przez „Wyzwania — sprawdź swój potencjał".
  177. v2.133.311 lipca 2026, 21:40

    Talentobranie — widoczne logo w banerze + KISS/BANG doprecyzowuje wymóg śpiewu

    • 🔥 Wielkie, wyraziste logo Talentobrania w kafelku na hubie — teraz jako centralny hero-element (150×150, biały tile z pomarańczową obwódką i glow) zamiast małej ikonki w rogu. Mobile i desktop.
    • 💋 KISS/BANG: pod claimem „Nie szukamy idealnych. Szukamy prawdziwych." dodane doprecyzowanie „Osobowość przede wszystkim — ale musisz umieć śpiewać.", a w mikro-ikonach pojawił się osobny punkt „Głos — musisz umieć śpiewać".
  178. v2.133.211 lipca 2026, 20:15

    KISS/BANG mobile polish + graficzny TOP Talentobrania na hubie

    • 📱 Fix kafelka KISS/BANG na mobile: portret zamknięty w wyraźnym bannerze u góry (bez wpieczonego wordmarku scrollującego pod treścią), wordmark KISS/BANG skalowany żeby „BANG" mieścił się w kadrze, neonowe logo i eyebrow „Powstaje Nowy Girlsband" w rogu portretu.
    • 🎤 Nowy TOP graficzny Talentobrania 2.0 na landingu HUBa — ten sam rytm i skala co KISS/BANG, ale kolorystyka navy/coral/gold. Crowd-hero, brush wordmark „#TALENTOBRANIE 2.0", claim „Nie tylko konkurs. Cała scena należy do Ciebie.", 4 neonowe mikro-ikony, 2 mocne CTA + pełny formularz w pasku pomocniczym.
    • 🧱 Nowe utilities `.tb-brush` / `.tb-neon-outline` / `.tb-frame` w `styles.css` — spójny „hero-tile" system dla obu kafelków, żeby przy kolejnych iteracjach nie rozjeżdżały się wizualnie.
  179. v2.133.111 lipca 2026, 19:55

    KISS/BANG — prawdziwe logo z referencji + realny redesign kafelka na hubie

    • 💗⚡ `KbLogo` używa teraz oryginalnego kształtu z Twojej referencji (metaliczny róż + srebrny wariant, wgrane na CDN) zamiast uproszczonego SVG. Warianty: `neon`, `solid`, `silver`, `outline` (alias).
    • 🌐 Kafelek KISS/BANG na `/` przebudowany 1:1 do key visualu: pełnoekranowy czarny panel, portret z magentowym overlayem, neonowe logo, brush-stroke wordmark KISS/BANG, claim „Nie szukamy idealnych. Szukamy prawdziwych.", 4 neonowe mikro-ikony i jedno mocne CTA.
    • 🖼️ `og:image` dla `/kissbang` przełączony na hero metallic — link do castingu ma wreszcie realny preview brandu.
  180. v2.133.011 lipca 2026, 19:10

    KISS/BANG — oficjalne logo (serce z błyskawicą) + redesign landingu

    • 💗⚡ Nowe oficjalne logo zespołu: serce przecięte błyskawicą. Wektorowe (`KbLogo`) w 4 wariantach — outline neon, solid pink, silver, gradient — do reużycia w całym module. Wersja rasterowa (upload) trafia jako `og:image` landingu.
    • 🎭 Redesign `/kissbang`: nowe hero z portretem + neonowym logo, wordmark KISS/BANG w brush-stylu, claim „Nie szukamy głosów. Szukamy osobowości." i 4 mikro-featurki z grafiki referencyjnej.
    • 🖤 Nowa sekcja „To nie jest kolejny casting. To początek historii." + „Każda historia ma swój powrót." — bez wątku „zaczęło się od 2018".
    • ⚡ Sekcja archetypów dostała pasek 7 neonowych ikon (serce/błyskawica/gwiazda/płomień/maska/diament/atom) prowadzący do quizu i nagłówek „8 energii. Która jest twoja?".
    • 🌐 Kafelek KISS/BANG na głównym landingu HUBa pokazuje teraz to samo oficjalne logo (spójność brandu Talentobranie ↔ KISS/BANG).
  181. v2.132.012 lipca 2026, 01:00

    Social Studio (PR 4) — Auto-logotypy stacji + skan publikacji per artysta

    • 🎨 Nowy panel `/admin/social/logos`: klik „Pobierz z Google" → siatka 12 kandydatów logotypów stacji z Google Images (Serper). Klik w miniaturkę = zatwierdzony logotyp trafia do `channel_master.logo_url`. Ręczny URL jako fallback.
    • 🔄 Nowy przycisk „Skanuj publikacje" w `/artist/publikacje`: artysta/admin uruchamia skan Serpera dla WSZYSTKICH aktywnych projektów tego artysty. Cooldown 15 min per artysta. W trybie Pro dodatkowo „Deep scan".
    • 🎚️ Rozpisana macierz trybów Lite/Standard/Pro dla nowych modułów: „Moje realizacje" (Proofy), generator grafik z Momentu, skan publikacji on-demand. Admin zawsze widzi Pro.
    • 📎 Zakładka „Logo 🎨" wpięta w subnav Social Admin + odblokowany kafelek w `/admin/social/studio`.
  182. v2.131.012 lipca 2026, 00:20

    Social Studio (PR 3) — Proofy artystów: świeży content pod grafiki

    • 📸 Nowa strona artysty `/artist/social/moje-realizacje`: wrzucasz linki (TikTok/IG/YT/Spotify/FB/X) + zdjęcia jako dowody wykonania. Zaznaczasz zgodę na wykorzystanie przez ID Records.
    • 🛡️ Panel admina `/admin/social/proofs`: filtry statusu (nowe / featured / archiwum), wyszukiwarka, notatka labelu, jednym klikiem „Wyróżnij" albo „Archiwizuj".
    • ⚡ Z karty proofa lecisz prosto do generatora grafik — Twój materiał staje się gotową grafiką social ID Records w kilka sekund.
    • 🎯 Nowa zakładka „Proofy 📸" w subnavie social admina + odblokowany kafelek w hubie /admin/social/studio.
    • 🔐 Wgrywanie plików przez bucket `artist-proofs` (private, folder = user id) — pełen izolacja per użytkownik, admin widzi wszystko.
  183. v2.130.011 lipca 2026, 23:59

    Social Studio (PR 2) — generator grafik „z Momentu" działa

    • ✨ Nowa strona `/admin/social/studio/generate`: wpisujesz nagłówek („Nowa stacja gra Sanah"), podpis, kontekst — AI generuje osobno każdy wybrany format.
    • 🖼️ Formaty do wyboru: IG/TikTok Story 9:16, IG Post 1:1, IG Post 4:5, FB/YT Cover 16:9. Wybierasz ile i jakich jednym kliknięciem.
    • 🎨 5 stylów: editorial, hype, minimal dark, press clean, grunge/zine. 3 silniki: Gemini 3.1 Flash (szybko), Gemini 3 Pro Image (domyślny/najlepszy), GPT-image-2 (ultra).
    • 💾 Każda grafika ląduje jako `draft` w `social_assets` (parent_moment_kind=`studio_moment`) — pobierzesz od razu i widzisz też w kolejce social. Limit 30 generacji/h.
    • 🎨 Jeśli wskażesz artystę, generator zaciąga jego Brand Kit (kolor primary/accent) i wplata w promptu.
  184. v2.129.011 lipca 2026, 23:30

    Social Studio (PR 1) — fundament: DB, buckety i hub /admin/social/studio

    • 🧱 Nowa tabela `artist_proofs` (kind: idea / playbook_task / freeform, linki + media_urls + status submitted/featured/archived, zgoda na wykorzystanie na IG ID Records) + RLS: admin all, artysta widzi/dodaje tylko swojego artysty przez `team_members`.
    • 🧩 `social_assets` dostał `parent_moment_kind` + `parent_moment_id` — biblioteka będzie pokazywać z jakiego momentu (Pulse/release/pomysł/Proof) powstała grafika.
    • 📻 `channel_master` ma teraz `logo_verified`, `logo_source`, `logo_variants`, znaczniki `logo_verified_at/by`. Nowa tabela `channel_logo_candidates` pod auto-pobieranie logo z Google Images przez RapidAPI — Ty tylko klikasz „to jest właściwe".
    • 🗂️ Prywatne buckety `artist-proofs` i `social-studio` (folder = user_id, admin przełącza wszystkie).
    • 🚪 Hub `/admin/social/studio` z roadmapą 5 PR-ów i widocznymi statusami — kolejne PR-y (generator, dialog Proof, panel adminowy Proofów, kurator logo, katalog kategorii promo ID) doklejają się do niego.
  185. v2.128.311 lipca 2026, 22:00

    Talentobranie 2.0 — czytelne CTA: osobno „fan", osobno „kandydat"

    • 🎯 Zamiast jednego zbiorczego przycisku „Zapisz się (fan / kandydat / KB)" — dwa jasne CTA: „Zapisz się jako fan" i „Zapisz się jako kandydat".
    • 📝 `UnifiedPreSignupDialog` dostał `preset` — otwiera się z właściwie prezaznaczoną opcją, a użytkownik i tak może dorzucić pozostałe (KB, współpraca) w tym samym formularzu.
  186. v2.128.211 lipca 2026, 21:00

    Hero T-brania naprawiony · nabór KISS/BANG (girlsband) · wspólny formularz zapisów

    • 🎨 Hero „Talentobranie 2.0" przebudowany: logo w osobnej kolumnie z ringiem i glow, nagłówek `text-balance`, koniec z nachodzeniem loga na tekst na md/lg. Blok „Artysta ID + T-branie" ląduje pod headerem jako pełna szerokość.
    • 💋 Nowa sekcja `#nabor-kissbang` na home — powstaje girlsband KISS/BANG (wyłącznie kobiety). Manifest w 3 punktach (osobowość > technika, wybierasz archetyp, zadania), CTA „Jestem zainteresowana naborem", copy-link i Web Share. Kotwica dodana do menu głównego.
    • 📝 Wspólny formularz `UnifiedPreSignupDialog` — jedno wysłanie zapisuje wiele intencji jednocześnie: kandydatka KISS/BANG, fan/kandydat Talentobrania, chęć współpracy z ID. Rekordy dostają wspólny `answers.batch_id` żeby widzieć powiązania w adminie.
    • 🗄️ Migracja: dozwolone role w `talentobranie_early_signups` rozszerzone o `kissbang_candidate` i `label_collab`. Nowa server fn `submitMultiEarlySignup` z rate-limitem 5/min/email i validacją potwierdzenia płci dla KB.
    • 👀 /admin/talentobranie/zgloszenia: nowe zakładki ról, chipy „chce też: …", licznik powiązanych zgłoszeń (`batch_id`), sekcje „Motywacja" i „Co wnosi" dla kandydatek KB, kolapsable JSON.
  187. v2.128.111 lipca 2026, 19:00

    fetchWithLog wpięty w integracje zewnętrzne (Spotify, S4A, Songstats, YouTube, TikTok, EmailLabs, Resend)

    • 📡 `fetchLogged(feature, url, init)` zastąpił surowe `fetch(...)` w server-only integracjach: Spotify (Client Credentials + user OAuth), Spotify for Artists, Songstats Enterprise, YouTube Data API, TikTok / Firecrawl / ads.tiktok, EmailLabs, Resend.
    • 📊 Każde zewnętrzne żądanie zapisuje endpoint, metodę, status HTTP, bajty in/out, czas i szacowany koszt do `network_usage_log` z etykietą feature — widoczne w /admin/ai-usage per user i per dzień.
    • 🚨 Alerty progu (0.8 / 1.0 kredytu Lovable/dzień) łapią teraz również gwałtowne skoki Network — np. rozjechane pętle po S4A / Firecrawl czy retry-storm w Resend.
  188. v2.128.011 lipca 2026, 18:00

    Hero T-brania (duże logo) + Network logger + alerty progu + pg_cron snapshotów + rate limit wpięty

    • 🎨 Hero Talentobrania 2.0 przeprojektowany: logo idzie na dużo (do 520px na desktopie) po prawej z gradientowym glow, wyleciały cztery kafelki statystyk (etapy/głosy/singiel/preferencje) — jeden mocny wizualny punkt zamiast pięciu słabych.
    • 📡 Nowy log Network — tabela `network_usage_log` (endpoint, bytes_out/in, status, duration, koszt) + `fetchWithLog(url, init, ctx)` do wpięcia w kolejnych integracjach (Spotify/S4A/TikTok/EmailLabs). RLS: user widzi swoje, admin wszystko.
    • 🚨 Alerty progu ~1 kredytu Lovable/dzień per user — dzienne sprawdzenie sumy AI + Network po każdym logu, wpis do `usage_alerts` (warn 0.8 kr, alert 1.0 kr, dla AI/Network/sumy). W /admin/ai-usage baner z nieodczytanymi alertami + akcja „OK".
    • 📊 /admin/ai-usage przemodelowany na AI + Network: 4 KPI (zapytania AI, wywołania Net, koszt AI, koszt Net w kredytach), per-user (AI/Net/suma), per-dzień z podświetleniem wierszy przekraczających próg.
    • ⏱️ pg_cron: `talentobranie-snapshots` co 15 min hita `/api/public/hooks/talentobranie-snapshots` (materializowane snapshoty rankingu, feedu, nominacji, edycji) — publiczne widoki nie palą już Network per request.
    • 🛡️ Rate limit naprawiony — poprzedni assertRateLimit resetował licznik przy każdym conflicie. Teraz atomiczny RPC `increment_rate_limit`. Wpięty w submit `submitTalentobranieEarlySignup` (5/min/email) i `castVote` (30/5min/user).
  189. v2.127.111 lipca 2026, 17:00

    Hero Talentobrania 2.0 — logo w tle + kafelki highlightów

    • 🎨 Landing główny: przeprojektowana sekcja Talentobrania — logo jako duży watermark w tle (rotacja, mix-blend, blur) + ostry sygnet w prawym górnym rogu zamiast małej pływającej miniatury.
    • 📐 Prawa strona wypełniona: 4 kafelki highlightów (6 etapów · 50% głosów fanów · 1 singiel na koszt ID · 12 mies. preferencji) zamiast pustego miejsca.
    • 📏 Nagłówek powiększony do 5xl na desktopie z dwuwierszowym łamaniem — mocniejsza hierarchia.
  190. v2.127.011 lipca 2026, 16:00

    Wykresy przedpremierowych feedbacków + logger AI + role dodatkowe + snapshoty T-brania

    • 📊 Nowa zakładka „Przedpremiera" w Feedbackach (artysta i admin) — wykresy: sentyment (donut), oceny 1–5 gwiazdek, oś czasu odsłuchów i feedbacków vs data premiery, lejek zainteresowania (odsłuchania → >30s → feedback → zainteresowani) i heatmapa reakcji na osi utworu. Widzisz reakcje redakcji z wielotygodniowym wyprzedzeniem.
    • 💸 Logger AI podpięty w hot call-sites — idea-impact, hub-assistant, pressroom-ai/story, release-clip-brief, release-extras, social-pulse. Dashboard /admin/ai-usage zaczyna zbierać dane (tokeny, koszt USD) per user, per dzień. Baza pod dzienne limity per plan.
    • 👥 /admin/users — kolumna „Role dodatkowe": chipy fan / kandydat / juror / producent / partner / influencer T-brania + intencje ról (z /wybierz-role). Wyprowadzone JOIN-em z fans, talentobranie_early_signups (po e-mailu), user_role_intents.
    • 🛡️ Oszczędnościowy pakiet Talentobrania (bez Cloudflare/Turnstile): tabela rate_limit_hits + helper assertRateLimit, tabela talentobranie_public_snapshots + cron /api/public/hooks/talentobranie-snapshots (do wpięcia w pg_cron co 15 min). Publiczne widoki będą czytać snapshot zamiast N zapytań live.
    • ✨ Ticker „NOWE" rozłożony po Plan Social, Trendy, Publikacje, TV, Streamingi. Dismissable per user.
  191. v2.126.011 lipca 2026, 14:30

    Admin inbox Talentobrania + użycie AI + „Artysta ID + Talentobranie razem"

    • 📥 **Inbox intencji ról** (`/admin/inbox/intents`) — wszystkie zgłoszenia z `/wybierz-role` (Artysta, Dziennikarz, Booker, Kandydat, Fan, Oferta) z filtrami po typie i statusie, akcjami odczytu, akceptu, odrzucenia i notatką admina.
    • 🏆 **Inbox Talentobrania 2.0** (`/admin/talentobranie/zgloszenia`) — 6 zakładek per rola (fan / kandydat / producent / partner / juror / influencer) z podglądem pełnych odpowiedzi z formularza + UTM. Nowe zgłoszenia świecą się na fuksjowo dopóki nie klikniesz „Odczytano".
    • 💸 **Użycie AI** (`/admin/ai-usage`) — nowa strona z podglądem zużycia tokenów, liczby zapytań i szacowanego kosztu w USD per user oraz per dzień. Nowa tabela `ai_usage_log` (RLS: user widzi swoje, admin widzi wszystko) — baza pod przyszłe dzienne limity per plan HUB-a. Logger do podpięcia w wywołaniach modeli w kolejnej turze.
    • 🎯 **Landing główny + `/pre-talentobranie` — blok „Artysta ID + Talentobranie razem"**: Artyści ID mogą wystartować w konkursie na tych samych zasadach co wszyscy (żadnego kółka wzajemnej adoracji), ale z dodatkową nagrodą jeśli wygrają. Kto przekroczył próg (radio ogólnopolskie / Polskie Hity Spotify) → jury / mentor. Ekspozycja Artystów ID przez całą edycję. Komunikat wprost: „1 wygrana ≠ kariera — wydajemy 4–6 singli rocznie" + preferencyjne warunki na 12 miesięcy dla zwycięzcy.
    • 📊 **Migracja**: `ai_usage_log` (user_id, feature, model, tokens, cost, metadata) + `read_at` w `user_role_intents` i `talentobranie_early_signups`, `status` w `talentobranie_early_signups`.
  192. v2.125.011 lipca 2026, 13:30

    Landing HUB-a fixed + Talentobranie 2.0: partnerzy, jurorzy, influencerzy, producenci

    • 🎨 **Czysta grafika Talentobrania** — usunęliśmy logo Eski i strzałki z bannera. Landing i strona `/pre-talentobranie` używają nowego, dedykowanego pliku.
    • 🤝 **Talentobranie 2.0 — 4 nowe ścieżki współpracy** obok fana i kandydata: **Producent audio/video** (produkcja singla / teledysku dla zwycięzcy), **Partner / Sponsor** (sponsoring, nagrody, patronat), **Juror / Ekspert** (jury finału, mentor, warsztat), **Influencer / Ambasador** (posty, stories, live). Każdy ma dedykowany formularz z checkboxami zakresu, celami, portfolio i stawką. Migracja rozszerzyła CHECK constraint w `talentobranie_early_signups`.
    • 🧭 **Menu poziome landingu** — wywalona pozycja „Social", zmniejszone czcionki i padding, cała nawigacja mieści się teraz na desktopie bez elipsy i skracania „ID Records HUB · Artyści · Media · Fani".
    • 📝 **Zaktualizowane 3 tile pod „Wraca Talentobranie"** (jako wokalista/raper/producent — solo lub z zespołem; realny sukces = umowa i realne wydanie, w wybranych edycjach też produkcja singla u nas; jury z branży, całość online, finał z publiką).
    • 💡 **„Dlaczego HUB?" — kafel „Kanały nie są Tobą zainteresowane?"** dopisany: teraz mocno eksponujemy Plan Dnia (Playbook) obok Pomysłów — mikro-zadania, godzinne sprinty, tryb Kreatora Influencera, krok po kroku.
    • 🏷️ **Badge „NOWE"** dostały teraz też karty **TV**, **Streamingi** i **Tryby zaawansowania** w spisie modułów Strefy Artysty od środka.
    • 📡 **Feedbacki — dopisek przedpremierowy.** W kafelku Feedbacki jasno komunikujemy: reakcje redakcji na wiele tygodni przed premierą — wiesz z wyprzedzeniem, jakie masz szanse i co poprawić w planie promocji.
    • 🎬 **Premiery — pełen etap produkcji singla.** W opisie kafla wyraźnie: uczestniczysz od pomysłu, przez studio, mix/mastering, po finalną wersję. Odsłuchujesz każdą wersję, dajesz komentarze — nie czekasz, tylko współtworzysz.
    • 🚦 **Auto-redirect nowych userów** — świeżo zarejestrowany bez roli trafia teraz na `/wybierz-role` (raz, można pominąć).
    • 🧠 **Rejestracja fana** wyklarowana — w formularzu jasny komunikat, że konto powstanie standardowo w HUB-ie z rolą FAN (Strefa Fanów), a zapis to sygnał do powiadomienia o starcie.
  193. v2.124.011 lipca 2026, 12:00

    Talentobranie 2.0 wraca + role-picker po rejestracji + odświeżony landing HUB-a

    • 🏆 **Talentobranie 2.0.** Nowa sekcja na landingu z kotwicą **#talentobranie** w menu głównym i osobna publiczna strona **/pre-talentobranie** — świeży link do share'owania. Zapisy jako FAN (co oczekujesz, kogo wspierasz, skąd wiesz) lub KANDYDAT (pseudonim, wiek, demo, oferta / tylko konkurs, o sobie, co Ci się podoba, obawy). Udział darmowy. Panel `/talentobranie` zabezpieczony wyłącznie dla adminów.
    • 🚪 **Role-picker po pierwszej rejestracji (/wybierz-role).** 6 dróg: Artysta ID / członek teamu, Dziennikarz, Organizator/booking, Kandydat na Artystę ID (z opcją równoczesnego zapisu do Talentobrania), Fan muzyki, Oferta współpracy. Każde zgłoszenie ląduje w tabeli `user_role_intents` — admin widzi kolejkę oczekujących na podpięcie / kontakt / rozmowę.
    • ✨ **Sekcja „Co nowego w HUB-ie" na /welcome.** 6 highlightów: Kreator Influencera + większe zadania w Planie dnia, generatory grafik/rolek/lyrics video/stories, Tryby Lite/Standard/Pro/Custom, personalizowane Trendy TikTok, Publikacje+TV+Streamingi, AI Asystent HUB-a.
    • 🧩 **Nowe moduły w spisie „Strefa Artysty od środka":** Gotowość premiery (checklista must-have przed + po premierze), Publikacje (auto-skan z weryfikacją admina), TV (status działań), Streamingi (Spotify + playlisty), AI Asystent HUB-a (dedykowany czat) oraz karta Tryby zaawansowania.
    • 📝 **Odświeżone opisy modułów:** Pomysły / Radar / Plan dnia — jasny komunikat, że to nie tylko CO zrobić, ale KROK PO KROKU jak (kompletne narzędzie budujące karierę A do Z, wspierające też markę osobistą i treści pozamuzyczne). Social — generatory + spersonalizowane trendy TikTok.
  194. v2.123.010 lipca 2026, 23:30

    Priorytety singli w feature, mobilne edytuj/usuń w Kruczacie, potwierdzenie przed wysyłką nagrania

    • 🔥 **Priorytety singli w feature.** Do każdego singla w edytorze feature'a możesz teraz przypisać wyróżnik: 🔥 Priorytet (szczególnie polecane), ⭐ Polecane albo ○ Opcjonalne. Strona feature sortuje single wg priorytetu (top → polecane → opcjonalne → reszta) i nad kartą pokazuje ozdobną etykietę. Jeśli nic nie oznaczysz — sortowania nie ma i wygląda tak jak dotąd.
    • 💬 **Mobilne edytuj / usuń / odpowiedz w Kruczacie.** Na telefonie długie przytrzymanie (~0,5s) na wiadomości pokazuje ten sam pasek akcji, który na desktopie chowa się pod hoverem — edytuj, usuń, odpowiedz i reakcje. Tap poza wiadomością zamyka menu. Działa w Hub Support, Label i Connect.
    • 🎤 **Podgląd nagrania przed wysłaniem (wywiad / artist pitch).** Artysta po zatrzymaniu nagrania widzi teraz podgląd audio/wideo i decyduje: „Wyślij nagranie” albo „Nagraj ponownie”. Nic nie idzie do publikacji bez potwierdzenia — koniec z sytuacją, że artysta ma tylko transkrypcję i nie może odsłuchać co powiedział.
  195. v2.122.010 lipca 2026, 21:00

    Personalne pitche: każdy dziennikarz dostaje własny mail i własną stronę

    • 👤 **Zmienne w mailu i na stronie feature.** {{first_name}}, {{last_name}}, {{full_name}}, {{outlet}}, {{role}}, {{greeting}}, {{signoff}}, {{note}}, {{custom_1}}, {{custom_2}} — automatycznie uzupełniane z profilu dziennikarza, ale każdą możesz nadpisać per odbiorca. Podstawiają się w temacie, tytule, intro i outro.
    • 🎯 **Wyjątki „dlaczego polecam” per singiel.** Do każdego singla w feature możesz dopisać alternatywną notkę tylko dla wybranego dziennikarza — nadpisuje wspólny opis.
    • 🧪 **Podgląd „jak zobaczy dziennikarz”.** Jeden klik i widzisz mail dokładnie taki, jaki poleci — z podstawionymi zmiennymi i tematem.
    • ⚡ **Bulk-ustawienia + autosave.** Ustaw wszystkim naraz powitanie/pożegnanie (tylko puste) — zmiany zapisują się automatycznie po każdym wpisaniu.
    • 🎨 **Typ serwisu w feature (radio / TV / portale / Spotify).** Selektor na górze edytora zmienia gradient hero, kolor akcentu i etykietę CTA w mailu — tak samo jak w serwisach tygodniowych. TV → fiolet, portale → bursztyn, Spotify → zieleń, radio → domyślny gradient.
    • 🏷️ **Temat maila jako szablon.** Nowe pole „Temat maila” w edytorze — używaj zmiennych typu „{{first_name}}, coś dla {{outlet}}”. Każdy odbiorca może mieć jeszcze swój własny nadpisany temat.
  196. v2.121.010 lipca 2026, 18:30

    Personalne pitche + porządek w statystykach PressRoomu

    • 📮 **Feature można wysłać do dziennikarzy jednym kliknięciem.** Po opublikowaniu masz przycisk „Wyślij do dziennikarzy” — każdy adresat i wszyscy z wybranych kanałów dostają spersonalizowany mail z magic-linkiem. Pod spodem live analytics: wysyłki, otwarcia, odsłuchy, pobrania i feed w czasie rzeczywistym.
    • 📊 **Statystyki PressRoomu naprawione.** Filtr „Wydanie” zmienia się kontekstowo pod źródło: Feature → lista features, Newsletter → lista newsletterów, Magic linki → wygenerowane tokeny. Dodałem też filtr „Typ serwisu” (radio / TV / portale / Spotify / print / podcast) — bo do tej pory wszystko lądowało w jednym worku.
    • 💌 **Feature-mail dostaje nagłówek „ID Records prezentuje” z logo** — 1:1 jak newslettery. Ten sam layout w mailu testowym i w broadcast'cie.
    • ✨ **Strona feature — sekcja „#Na początek”.** Intro dostaje kicker analogicznie do „#Na koniec”, ta sama typografia po obu stronach, gradient akcentowy zamiast surowego serif.
    • 🎯 **„Feedback” pod singlem to teraz „Daj feedback czy zagrasz”** — na stronie feature i w serwisie tygodniowym. Dziennikarz od razu wie, co ma zrobić.
    • 🗑️ **„Pitche prasowe” wyleciały z menu PressRoomu.** Ich rolę przejęły „Personalne pitche” (dawniej Personalized Features) — to samo, tylko lepiej podane. Stare linki do `/admin/pressroom/pitches` przekierowują.
  197. v2.120.310 lipca 2026, 16:40

    Feature dla dziennikarzy: własny nagłówek + „Posłuchaj propozycji”

    • ✍️ **Nagłówek nad tytułem feature to wolne pole tekstowe.** Zamiast sztywnej listy („playlista/wywiad/…”) wpisujesz co chcesz — np. „PLAYLISTA DLA CIEBIE” — i to leci do maila i na landing.
    • 🎧 **Przycisk w mailu: „Posłuchaj propozycji”.** Wcześniej było „Otwórz feature”; nowa etykieta lepiej mówi dziennikarzowi po co ma kliknąć.
    • 🎨 **Mail testowy dostał ciemny, spójny z Hubem styl.** Koniec z pomarańczowym paskiem, który gryzł się z resztą — teraz fioletowo-różowe akcenty jak w apce.
    • 🐛 **„Podgląd jako dziennikarz” znów działa.** Naprawiony React error #310 na `/press/feature/:slug` — hooki są w stałej kolejności, więc strona feature otwiera się bez białego ekranu.
  198. v2.120.210 lipca 2026, 15:50

    Badge apki: zgodny z Hubem

    • 🔕 **Badge PWA nie liczy już starych wpisów `message_new` z kolejki.** Licznik push bierze teraz widoczne powiadomienia z Huba + faktycznie nieprzeczytane wiadomości w Messengerze.
    • ✅ **Otwarcie wątku w Messengerze czyści też powiadomienia wiadomości w kolejce.** Dzięki temu stan `0` w Hubie nie zostawia na ikonie apki np. 25.
    • 🧹 **Backfill wyczyścił stare przeczytane powiadomienia wiadomości.** Stare wpisy, które były już odczytane w Messengerze, dostały status przeczytane.
    • 📩 **Legacy wiadomości z premier są znów widoczne w dzwonku.** Jeśli nie są częścią Messengera, można je normalnie kliknąć i oznaczyć jako przeczytane.
  199. v2.120.110 lipca 2026, 15:10

    Powiadomienia i Publikacje — porządek

    • 🔕 **Badge apki (99) się w końcu zeruje.** Licznik na ikonie PWA sumuje teraz nieprzeczytane z Huba (powiadomienia + Messenger) i natychmiast czyści się, gdy oznaczysz jako przeczytane.
    • 💬 **„Wspomniano Cię w wiadomości” — klikalne i bez dubli.** Kliknięcie otwiera właściwy wątek i znika kropka; usunęliśmy podwójne insertowanie tego samego wspomnienia (jeden trigger DB zamiast dwóch źródeł). Backfill wyczyścił istniejące duble.
    • 🔗 **Publikacje → Per projekt: portal linkuje właściwy artykuł.** „Portale z publikacjami” pokazuje teraz link i tytuł z ZATWIERDZONEJ publikacji (tej samej, którą widzisz w „Liście wszystkich”), a nie przypadkowego pending.
    • 📊 **Pasek supportu pokazuje realne X/Y z A&R.** Koniec z bezsensownym „support 15/5” — po najechaniu widzisz np. „Support 6/15 — zatwierdzone przez A&R” z zatwierdzonej publikacji. Fallback: waga kanału W/20 jako „potencjał”.
    • 🧹 **U artysty znika „Pula skanu — whitelist”** (była zbędna). Admin nadal ją ma.
    • 🔎 **Filtr po artyście w adminie Publikacji.** W zakładkach Do weryfikacji / Zatwierdzone / Odrzucone możesz teraz zawęzić listę do jednego artysty.
  200. v2.120.010 lipca 2026, 10:45

    Tryby doświadczenia: podgląd, badge i historia

    • 👀 **Podgląd trybu w impersonacji.** W zielonym pasku „Podgląd jako artysta” admin ma teraz segmented control **Artysty / Lite / Standard / Pro** — jednym kliknięciem widzisz Hub oczami artysty w wybranym trybie (bez ruszania jego ustawień).
    • 🏷 **Badge trybu przy każdym artyście.** W dropdownie „Jako artysta” i na kartach w Playbook → Plany Dnia → Artyści są teraz mini-etykiety 🖥 desktop / 📱 mobile — od razu widać, kto jest na Lite, a kto na Pro.
    • 📜 **Historia zmian trybu.** Nowa zakładka „Historia trybu” w profilu artysty w adminie pokazuje kto, kiedy i z jakiej wartości na jaką przełączył tryb doświadczenia lub customowy poziom sekcji.
  201. v2.119.1110 lipca 2026, 09:40

    Feedbacki: globalny fix pobranie = MOŻE

    • 🟡 **Pobranie audio jest teraz twardo mapowane na MOŻE.** Most PressRoom → projekty ustawia `watch` niezależnie od tego, czy wcześniej był klik z maila na NIE.
    • 🧹 **Poprawiony backfill globalny.** Obejmuje nie tylko świeże `press:download`, ale też starsze kanały z etykietą „pobranie”, więc Jenny i wszystkie inne projekty przestają trzymać pobrania w NIE.
  202. v2.119.109 lipca 2026, 22:30

    Feedbacki: pobranie = MOŻE (żółty), nawet po wcześniejszym kliku z maila

    • 🟡 **Pobranie audio automatycznie promuje kanał do MOŻE.** Wcześniej, jeśli dziennikarz najpierw kliknął w link z newslettera (status NIE/BRAK), późniejsze pobranie mp3/wav bumpowało punkty i etykietę „pobranie audio”, ale status kanału utykał na NIE. Teraz status idzie w górę: pobranie → MOŻE, akcept → AKCEPT, „zagram”/polecenie → TAK. Ręczny override w edytorze kanałów nadal ma pierwszeństwo.
    • 🧹 **Backfill istniejących projektów.** Przeliczyliśmy kanały, w których pobranie/akcept/deklaracja siedziały w NIE lub BRAK — Jenny, Rafał Brzozowski i inni już powinni mieć te radiostacje w kubełku MOŻE.
  203. v2.119.99 lipca 2026, 18:15

    Pasek Szansa na TAK: ikonka przy BRAK

    • 🎨 **Kubełek BRAK ma teraz widoczną ikonkę.** Zamieniliśmy emoji 🫥 (które na wielu systemach wyświetlało się jako puste pole) na 👻 — teraz legenda i wiersz BRAK w pasku Szansa na TAK pokazują ikonkę poprawnie.
  204. v2.119.89 lipca 2026, 17:10

    Fix: zapis priorytetów platform w profilu artysty i presskicie

    • 🛠️ **Priorytety platform zapisują się bez błędu.** Backend akceptuje teraz częściową listę platform, np. samo Instagram/TikTok, zamiast wymagać wszystkich pozycji naraz.
    • 🎛️ **Profil artysty i Presskit używają tej samej poprawki.** Kliknięcie cyferek/suwaków nie powinno już wywoływać komunikatu walidacji przy autosave ani ręcznym zapisie.
  205. v2.119.79 lipca 2026, 16:40

    Newsletter: blok „Plan wydawniczy (CTA)” znów widoczny w podglądzie i mailu

    • 🩹 **Fix:** blok „Plan wydawniczy (CTA)” w edytorze newslettera Pressroomu nie renderował się w podglądzie ani w wysyłanym mailu — zachowywał się, jakby elementu w ogóle nie było. Dodaliśmy obsługę tego bloku w rendererze HTML.
    • 🗓️ **Ładna karta w mailu.** Zielono-lazurowa karta z etykietą „Plan wydawniczy”, opisem i przyciskiem CTA — plus (jeśli wybrany) deep-link do konkretnego singla z datą premiery. Styl „Tylko przycisk” też działa.
  206. v2.119.69 lipca 2026, 16:05

    Serwis tygodniowy: płynne przestawianie singli w sekcjach

    • ⚡ **Strzałki ▲/▼ w edytorze wydania tygodniowego działają natychmiast.** Kolejność w sekcjach (Polecane, Hit Alert itd.) zmienia się w UI od razu — bez czekania na round‑trip do bazy, więc znika efekt „zawieszki”.
    • 🛡️ **Blokada podwójnego kliknięcia.** Kolejny ruch czeka, aż poprzednia zamiana pozycji się zapisze — koniec z kolidującymi zapytaniami, które psuły kolejność i sprawiały wrażenie „zdławienia”.
    • ↩️ **Rollback przy błędzie.** Jeśli zapis pozycji się nie powiedzie, UI wraca do poprzedniej kolejności i pokazuje toast z błędem.
  207. v2.119.59 lipca 2026, 15:20

    Umowa podpisana: PDF jako załącznik + zapasowy link

    • 📎 **Finalny PDF z certyfikatem trafia jako fizyczny załącznik** do maila „Umowa podpisana” (przez EmailLabs). Do tej pory szedł tylko link — Artyści i label zgłaszali, że umowy nie ma w załączniku, teraz doręczana jest bezpośrednio w wiadomości.
    • 🛟 **Zapasowa ścieżka pobrania w treści maila.** Poza załącznikiem zostaje wyraźny przycisk „Pobierz podpisany PDF (kopia zapasowa)” i bezpośredni link — na wypadek, gdyby filtr antyspamowy poczty odbiorcy wyciął plik PDF.
    • 🔁 **Adminowe „Wyślij mail Umowa podpisana ponownie” też załącza PDF** — nie tylko link. Wystarczy jedno kliknięcie w widoku umowy, żeby doręczyć plik jeszcze raz razem z załącznikiem.
  208. v2.119.39 lipca 2026, 13:45

    Fix: zapis priorytetów w presskicie

    • 🛠️ **Presskit zapisuje priorytety bez błędu.** Priorytety promocyjne, platformowe i poziom zaangażowania są teraz normalizowane do liczb przed wysłaniem do backendu, więc wartości z suwaków/przycisków nie blokują już zapisu całego presskitu.
    • 🧯 **Adminowy presskit też jest odporny.** Puste obiekty formularza (`artist_contact`, `artist_personality`, `campaign_requests`, `artist_plan`) nie lecą już jako `null`, co usuwa kolejną przyczynę błędów walidacji przy zapisie.
  209. v2.119.29 lipca 2026, 23:30

    Fix Dystrybucja→Planowanie, poprawka Briefu produkcyjnego, Plan wydawniczy w Pressroomie

    • 🗓️ **Dystrybucja → Planowanie działa jednym kliknięciem.** Wybór terminu premiery przez admina (`adminSetPlannedDate`) faktycznie przerzuca status z „Dystrybucja” na „Planowanie” (i z powrotem, gdy admin wyczyści datę) — do tej pory zmieniała się tylko data, a kafelek zostawał w Dystrybucji. Wpis trafia też do historii statusów.
    • 💼 **Brief produkcyjny liczony po nowemu.** Składniki pakietu (songwriting, mix, master itd.) NIE dodają się już do kwoty pakietu — wchodzą W jej skład. „Kwota pakietu produkcyjnego” = cena wybranego pakietu (albo suma składników, jeśli przekracza limit — z ostrzeżeniem). Karty pakietów pokazują teraz „od 10 000 zł netto”, „od 12 000”, „od 15 000” itd.
    • 🧮 **Nowe „Podsumowanie oferty”** pod pakietem produkcyjnym w edytorze oferty — łączy pakiet promo (np. „PRO RADIO A · 3 000 zł”), pakiet produkcyjny i budżety kampanii zasięgowych w jedną wartość projektu, wyświetlaną jako „od X zł netto” (zaokrąglenie w górę do 1 000 zł).
    • 📰 **Plan wydawniczy w Pressroomie odblokowany.** Każda premiera z zaznaczonym „Pokaż w pressroomie” + ustawionym snippetem TikTok jest widoczna dla dziennikarzy niezależnie od fazy oferty. Premiery bez daty trafiają do sekcji „TBD / bez terminu”. Zbieramy oceny, obserwacje i zapisy jak dotąd.
  210. v2.119.19 lipca 2026, 22:15

    Fix: akceptacja oferty bez budżetów kampanii

    • 🛠️ **Projekty → Oferta** — zatwierdzenie oferty (np. „Twoja Moc” dla Małgorzaty Szarek) nie wywala już błędu bazy „campaign_budgets not-null”. Gdy admin nie ustawia budżetów kampanii, zapisujemy puste `{}` zamiast NULL, więc akceptacja bez wysyłki do artysty działa.
  211. v2.119.09 lipca 2026, 21:30

    Faza B domknięta — Social / Wywiady / Premiery / Profil respektują tryb

    • 🎛️ **Social w Standard** — nawigacja pokazuje tylko Konta, Kalendarz i „Generator planu”. Studio grafik (formularz + galeria assetów), Radar 🛰️, Trendy TikTok, Analytics, Analiza AI, Studio Stories, Studio Pre-save i Brand Kit są schowane; wyświetla się krótki panel z zachętą do trybu Pro.
    • 🎙️ **Wywiady w Standard** — kafle premier pokazują tylko „Wywiad z artystą”. „Brief ode mnie” (AI-streszczenie) i „Prośby dziennikarzy” zostają dla Pro, więc widok jest krótszy i szybszy na telefonie.
    • 💿 **Premiery w Lite** — wyszukiwarka i filtr statusów są ukryte. Lista pokazuje tylko szkice + aktywne premiery, żeby nowi artyści widzieli od razu jeden CTA „Nowe zgłoszenie” bez przełączników.
    • 👤 **Profil respektuje tryb** — w Lite ukryte są priorytety promocyjne, priorytety platform, slidery doświadczenia / języka / persony, engagement w Talentobranie i Strefie Fanów, gust muzyczny, „Okoliczności specjalne” i preferowane kategorie działań. Standard chowa slidery AI-kontekstu (doświadczenie, engagement, styl języka, persona, target wiekowy, „Okoliczności specjalne”). Podstawy (bio, kontakt, adres, management, dane do umowy) zostają zawsze.
  212. v2.118.49 lipca 2026, 19:45

    Fix GPT-5 i kolejne domknięcie Fazy B

    • 🤖 **Fix GPT-5 w iteracyjnym czacie AI.** Drugi klient AI nadal wysyłał `max_tokens`, więc GPT-5 zwracał 400 mimo wcześniejszej poprawki pressroomu. Teraz GPT-5 dostaje `max_completion_tokens`, a Flash nadal używa klasycznego limitu.
    • 🗓️ **Plan Dnia w Standard** ma prosty generator: bez wyboru fazy, trybu Artysta/Influencer/Mix i intensywności — jeden klik daje jedno zadanie na dziś. Pro zostaje bez zmian.
    • 🧩 **Social Plan w Standard** jest okrojony do prostego planu: 7 dni, 1 post dziennie, wybrane platformy i krótki focus. Wydarzenia, iterowanie focusu z AI i przełącznik modelu zostają dla Pro.
    • 🏁 **„Gdzie ostatnio byłeś?” na Hubie** filtruje kafle po aktualnym trybie, więc Lite/Standard nie widzą sekcji, do których i tak nie mają dostępu.
  213. v2.118.39 lipca 2026, 19:10

    Faza B · uproszczony generator pomysłów w trybie Standard

    • 💡 **Generator pomysłów staje się prosty w trybie Standard i Lite.** Artysta widzi już tylko: wybór źródła (Pulse / Premiera / Bez kontekstu), zakres (Działania / Social / Oba), pole „Dodatkowy kontekst" i przycisk „Wygeneruj 5 pomysłów". Nic więcej do klikania — AI dobiera resztę po profilu.
    • 🧰 **Pod maską schowane** dla Standard/Lite: pokrętła rundy (budżet, horyzont, ryzyko, momentum, WOW), cele rundy z suwakami wagi, kategorie działań i formatów, „Zakres kontekstu" (viral / persona / lifestyle / opinion / …) oraz przełącznik modelu AI. Pro i admin dostają pełny panel bez zmian — tylko user nie-Pro nie musi już przewijać przez 8 sekcji, żeby wygenerować pomysł.
    • 🔢 **Domyślna liczba pomysłów** w uproszczonym trybie to 5 (zamiast 8), żeby lista była łatwiejsza do przeklikania na telefonie.
  214. v2.118.29 lipca 2026, 18:20

    Fix: zapis Management i powrót do profilu artysty w adminie

    • 🐞 **Fix „Nie udało się zapisać: managers.name too_small".** Otwarcie sekcji Management / dodatkowe kontakty w Profilu tworzyło pusty wiersz, który blokował autozapis walidacją „name min 1". Teraz puste wiersze są odfiltrowywane zarówno w UI przed wysyłką, jak i po stronie serwera (preprocess w Zod) — pusty rząd nie psuje już zapisu całego profilu.
    • 🧭 **Górne zakładki spinają Profil / Gotowość / Plan Dnia jednego artysty w adminie.** Dotąd z „Profilu Twórcy" (Plan Dnia) nie było jak wrócić do Profilu Artysty bez utraty `artistId` — nowe zakładki zawsze noszą kontekst artysty ze sobą, więc przeklikiwanie tam-z-powrotem działa jak jedna karta.
  215. v2.118.19 lipca 2026, 17:30

    Feedbacki rozdzielone (prasa vs. hub), fix GPT-5 dla pressroomu, aktywność artystów per tryb

    • 📬 **Feedbacki rozdzielone na dwa moduły.** `/artist/feedbacki` (i `/admin/feedbacki`) to nadal moduł prasowy — reakcje stacji, portali i playlist. Nowość: `/artist/feedback` — Twoje pomysły, uwagi i bugi dot. samego Huba. Każdy moduł ma osobny gating trybami: **Feedbacki (prasa)** — Lite: prosta lista bez punktacji i pasków, Standard: paski + KPI + sort, Pro: wszystko + wykresy + AI. **Feedback o Hubie** — Lite: ukryte, Standard: prosty formularz + Twoje zgłoszenia, Pro: 3 karty (pomysł, strefa fanów, bug).
    • 🤖 **Fix „400 tokens" na GPT-5** w iteracji notek prasowych (i wszystkich innych generatorach pressroomu). Klient AI wysyłał do GPT-5 body bez `max_completion_tokens`, przez co reasoning tokens „zjadały" cały budżet i gateway odbijał 400. Teraz GPT-5 dostaje limit 4000 tokenów wyjścia, a błędy z gatewaya lądują w komunikacie dla usera (nie tylko goły kod HTTP).
    • 📊 **`/admin/plan-dnia/aktywność` respektuje tryby artystów.** Przy każdym artyście widzisz teraz dwa badge’e — 🖥 desktop i 📱 mobile (Lite / Standard / Pro / Własny). Sekcje wyłączone przez tryb są wyszarzone (⊘) z tooltipem — nie wliczają się do „Wykorzystania %", więc artysta na Lite nie wygląda już jak martwy tylko dlatego, że ma pół Huba wyłączone.
    • 🔄 **Migracja customowych ustawień**: kto miał własny poziom dla sekcji `feedbacki` (Custom), automatycznie dostaje ten sam poziom przypisany do nowego klucza `feedbacki_prasa` — nikt nie traci ustawień.
  216. v2.118.09 lipca 2026, 16:10

    Faza B — HUB na start pod trybem, fix „Plików do dystrybucji”, podgląd trybów w Użytkownikach

    • 🐞 **Gotowość → „Pliki do dystrybucji”** przestaje kłamać. Wcześniej w checkliście był tylko krok „Dystrybucja tekstów” (coming soon), a realny pakiet plików z ekranu premiery (okładka, WAV, zdjęcia, Canvas, teledysk) w ogóle nie miał odpowiednika — dlatego pokazywał się jako niezrobiony mimo wgranych plików. Dodaliśmy krok `distribution_files` liczony po `release_assets` (cover + WAV + zdjęcie + video + Canvas + press_kit/credits) z linkiem prosto do zakładki „Pliki do dystrybucji” w karcie premiery.
    • 🧭 **HUB na start (/welcome) z trybami**: Lite pokazuje tylko hero + „Gdzie ostatnio byłeś” + Gotowość + Szybkie wejścia (bez „Odwiedź teraz”, narzędzi, ankiet, feedu, Crew Chat, mapy modułów). Standard dodaje „Odwiedź teraz”, narzędzia i najnowszą ankietę. Pro zostaje jak było. Kafle w „Szybkich wejściach” i „Narzędziach” same znikają, jeśli dana sekcja jest wyłączona w Twoim trybie — nie klikniesz w coś, do czego nie masz dostępu.
    • 👥 **Panel Użytkowników** ma nową kolumnę „Tryb HUB” z dwoma badge’ami (desktop / mobile): Lite / Standard / Pro / Własny. Dla „Własnego” pojawia się popover z pełną listą sekcji i realnym poziomem (Ukryte / Bardzo proste / Uproszczone / Pełne) — od razu widać, co user sam sobie wyłączył lub okroił.
    • 📚 Reszta Fazy B (Feedbacki jako moduł prasy, Premiery/Wywiady, uproszczony generator „Poproś o pomysły” i Plan Dnia w Standard, gating zakładek Profilu, segmented control w banerze impersonacji dla admina) — jedzie w kolejnym pociągu; scope skorygowany po Twojej uwadze, że /feedbacki to feedbacki mediów, a nie pomysły / bugi.
  217. v2.117.89 lipca 2026, 15:05

    Fix: Presskit z Gotowości ładuje zapisane pola premiery

    • 🐞 **Presskit otwierany z Gotowości** nie pokazuje już pustego formularza, gdy rekord premiery jest zapisany. Formularz renderuje się dopiero po zsynchronizowaniu lokalnego stanu z właściwą premierą, więc snapshot profilu nie może wejść pierwszy i zablokować świeżych danych.
    • 🔄 Dedykowana podstrona Presskitu ma osobny klucz cache (`release-presskit`) i po zapisie aktualizuje również standardowy cache premiery — przejścia „Gotowość → Presskit” oraz „Premiery → Presskit” widzą te same dane.
    • 💾 **Pobierz całość z profilu** zapisuje teraz skopiowane pola natychmiast do premiery. Wcześniej przy szybkim wyjściu z ekranu można było zobaczyć dane w formularzu chwilowo, ale nie zdążyć utrwalić ich w rekordzie release’u.
    • ✅ Sprawdzone w bazie dla „Jenny” Rafała Brzozowskiego: zapisane dane kontaktowe, firma, bio, współtwórcy, cele kampanii i linki są w rekordzie premiery; błąd był po stronie renderowania trasy z Gotowości, nie utraty danych.
  218. v2.117.69 lipca 2026, 14:20

    Tryby aplikacji — Faza B (część 4): Pulse i Plan Dnia

    • 📈 **Pulse** w Lite: sam feed wydarzeń (podbite + inne) — bez ReleaseSpotlight (Co-Pilot/Post-Mortem), bez filtrów, bez trajektorii, bez fanbase, bez porównań, bez sekcji radia. Same fakty, do przewijania.
    • 📈 **Pulse** w Standard: feed + filtry + Twoja trajektoria + Trajektoria fanbase + Emisje radiowe. Ukryte: ReleaseSpotlight, „Fanbase per singiel” i „Twoje metryki w czasie” (te zostają w Pro).
    • 🗓️ **Plan Dnia** w Standard: bez kafla „Trend dnia AI” na górze (rozprasza w prostym widoku); check-in + checklista + generator działają jak zwykle. W Lite Plan Dnia jest ukryty w nawigacji (bez zmian).
  219. v2.117.59 lipca 2026, 13:45

    Onboarding trybu — nie powtarza się po odświeżeniu + czytelniejsze etykiety

    • 🧭 **Wybór trybu HUBa zapamiętywany na dobre**: dialog „Jak chcesz korzystać z HUBa?” pojawia się teraz naprawdę tylko raz. Oprócz zapisu na serwerze dokładamy lokalny znacznik w przeglądarce, więc nawet gdy backend chwilowo nie odpowie, po zamknięciu dialog nie wróci przy odświeżeniu strony.
    • 🏷️ **Nowe etykiety w karcie każdego trybu**: Lite — „Dla mniej technicznych”, Standard — „Dla większości” (rekomendowane), Pro — „Dla biegłych technicznie”. Krótki opis dopasowany do audytorium.
  220. v2.117.49 lipca 2026, 13:15

    Fix: pusty Presskit z „Gotowości” + ikonka „pełny ekran” w Crew Chat

    • 🐞 **Presskit z „Gotowości premiery”**: wchodziłeś, wypełniałeś kilka kroków, wracałeś — i pola wyglądały na puste, mimo że w Premierach → Presskit wszystko było na miejscu. Powód: autosave zapisywał zmiany do bazy, ale cache react-query trzymał starą wersję rekordu, więc świeży mount seedował formularz pustymi wartościami. Teraz po każdym zapisie merge’ujemy cache, a strona Presskitu wymusza refetch przy wejściu i re-seeduje formularz, kiedy przyjdą świeże dane (bez nadpisywania Twoich niezapisanych zmian).
    • 💬 **Crew Chat (desktop)**: w okienkach czatu i dymku Messengera wróciła ikonka „pełny ekran” dla kanałów Crew — otwiera odpowiedni panel (`/artist/connect/chat` lub `/admin/connect/chat`) z aktywnym kanałem (Label/Connect/Support), tak samo jak działa to dla wątków przy projektach.
  221. v2.117.39 lipca 2026, 12:30

    Tryby aplikacji — Faza B (część 3): Projekt, Pomysły, Gotowość

    • 🎯 **Projekt (Artysta)** w Lite: bez Daily Brief bannera, bez ReleaseSpotlight, bez UpcomingEvents, bez liczników „Wynik/Kondycja/Cel tyg./Rokowania” na kartach singli — tylko czysta lista projektów + feed Pulse.
    • 🎯 **Projekt** w Standard: bez Daily Brief bannera i ReleaseSpotlight, karty projektów bez rokowań/celu tygodniowego (ale z Wynikiem i Kondycją).
    • 💡 **Pomysły** w Standard: przełącznik widoku bez „Kalendarza” — zostają tylko Lista i Plan (dziś/jutro/tydzień).
    • ✅ **Gotowość premiery** w Lite: sama checklista bez Voice Drop AI, bez „Zaproponuj brakujący krok” i bez HubUsageChecklist.
  222. v2.117.29 lipca 2026, 11:30

    Tryby aplikacji — Faza B (część 2): uproszczone widoki Publikacji, Radia, TV, Streamingów

    • 📰 **Publikacje** w Lite: wchodzisz od razu w prostą listę wpisów (bez zakładek „Per projekt/Lista wszystkich”), bez licznika support pts.
    • 📻 **Radio** w Lite: sam nagłówek + „Szczegółowa lista emisji” — bez hero pulse, coacha AI, race, heatmapy, momentum, station power i fresh. W Standard dodatkowo bez heatmapy, station power i fresh.
    • 📺 **TV** w Lite: karta pierwszego projektu, bez wyszukiwarki i zakładek per projekt (auto-wybór projektu z najlepszym zasięgiem).
    • 🎧 **Streamingi** w Lite: tylko momentum singli, bez coacha AI, cross-DSP boardu i playlist. W Standard dodatkowo bez playlist power.
  223. v2.117.19 lipca 2026, 10:00

    Tryby aplikacji — Faza B (część 1): auto-gate sekcji + podpowiedzi trybu

    • 🚪 **Auto-gate** dla każdej sekcji ukrytej w Twoim trybie: wejście na URL (np. `/artist/plan-dnia` w Lite) pokazuje przyjazny ekran „Ta sekcja jest dostępna w Standard/Pro” z jednym kliknięciem do ustawień trybu.
    • 🎯 Obejmuje: Plan Dnia, Radar, Pomysły, Kalendarz, Zadania, Konsultacje, Connect, Social, Mediaplan, Wywiady — wszystko, co macierz oznacza jako „hidden” w Twoim trybie.
    • 💡 **Baner nudge** pojawia się automatycznie pod każdą widoczną sekcją: „Chcesz więcej z X? Włącz wyższy tryb” lub „Przytłacza Cię? Wypróbuj prostszy” (można wyłączyć globalnie w Profilu, dismiss per sekcja).
    • 📱 **Bottom nav** (mobile) też filtrowany wg trybu — nie zobaczysz w dolnym pasku sekcji, których nie masz.
    • 🛠️ Kolejne iteracje Fazy B: uproszczone warianty widoków (Lite/Standard) dla HUB-a na start, Projektu, Pulse, Gotowości, Feedbacków, Premier, Publikacji/Radio/TV/Streamingów, Profilu.
  224. v2.117.08 lipca 2026, 23:00

    Tryby aplikacji: Lite / Standard / Pro / Własny

    • ✨ **Nowe**: każdy user może wybrać, jak bogaty ma być HUB. Osobno dla telefonu i osobno dla komputera.
    • 🟢 **Lite** — tylko podstawy, bez AI, bardzo prosto (dla artystów starszej daty i mobile-first).
    • 🔵 **Standard** — kompromis: AI w okrojonej formie, mniej opcji, spokojniejszy interfejs.
    • 🟣 **Pro** — obecny pełny HUB, wszystkie moduły i zaawansowane opcje (domyślny dla wszystkich).
    • 🟡 **Własny** — kreator w Profilu, gdzie ustawiasz poziom każdego modułu osobno (ukryte / bardzo proste / uproszczone / pełne).
    • 🎚️ Przełącznik trybu w headerze (ikona warstw) + pełne ustawienia w Profilu z opcją „ustaw ten sam tryb na obu urządzeniach”.
    • 💬 Podpowiedzi typu „Chcesz więcej? Włącz Standard” / „Przytłacza Cię? Wypróbuj Lite” pojawiają się na dole sekcji — możesz je wyłączyć globalnie w Profilu.
    • 🛠️ Faza A (fundament): baza, provider, headerowy picker, sekcja w Profilu, onboarding. Uproszczenia poszczególnych sekcji dowieziemy iteracyjnie w kolejnych patchach.
  225. v2.116.58 lipca 2026, 20:45

    Premiery / Presskit (admin) — koniec z kasowaniem niezapisanych zmian po powrocie do zakładki

    • 🐛 **Naprawione**: wypełniałeś pola presskitu / umowy (np. NIP firmy), przełączałeś zakładkę w przeglądarce, wracałeś — i cały formularz wracał do stanu z serwera, kasując wpisane wartości.
    • ⚙️ Przyczyna: React Query po focusie okna robił refetch, co tworzyło nową referencję obiektu `submission`, a `useEffect` w edytorze resetował formularz. Teraz reset dzieje się TYLKO gdy zmienia się ID premiery.
  226. v2.116.48 lipca 2026, 15:40

    Premiery — poprawka zapisu oferty (production_addons NOT NULL)

    • 🐛 **Naprawiony błąd bazy** „null value in column production_addons violates not-null constraint" przy zatwierdzaniu oferty (np. DJ Adamus — „Zamykam drzwi").
    • ✅ Gdy pakiet produkcyjny nie ma dodanych składników, zapisujemy pustą listę `[]` zamiast `null` — krok „Zapisz i przejdź do umowy" znów działa.
  227. v2.116.38 lipca 2026, 15:10

    Premiery — poprawka „zatwierdź ofertę → umowa" (błąd walidacji campaign_budgets)

    • 🐛 **Naprawiony błąd walidacji** przy zatwierdzaniu oferty (np. DJ Adamus — „Zamykam drzwi"): schema `campaign_budgets` odrzucała kanały bez budżetu (`youtube`, `tiktok`, `meta`, `influencer`), bo wartości `null` / puste obiekty nie pasowały do `number | object`.
    • ✅ **Walidator dopuszcza teraz pola opcjonalne** (`null`, `undefined`, puste podpola) — można przejść do kroku umowy nawet gdy część kanałów kampanii nie ma jeszcze wpisanego budżetu.
  228. v2.116.28 lipca 2026, 14:35

    „Gdzie ostatnio byłeś?" przenosi się na Hub na start (i znika z Playbooka)

    • 🏁 **Pogrupowana mapa całego Huba** (opisy sekcji + grupy Sygnały / Profile / Release / Media / Social / Collaby) jest teraz na samej górze modułu **HUB na start** (/welcome) — pierwsze co widzi artysta po zalogowaniu.
    • 🧹 **Usunięta z Planu dnia (Playbook)** — Plan dnia był niepotrzebnie długi, teraz zostaje skupiony wyłącznie na zadaniach na dziś. Hub na start staje się realnym pulpitem nawigacyjnym.
  229. v2.116.18 lipca 2026, 14:05

    „Gdzie ostatnio byłeś?" — grupy + opisy sekcji, nowe labelki, Admin Aktywność z górnym scrollem

    • 🧭 **Sekcja „Gdzie ostatnio byłeś?" pogrupowana** po przeznaczeniu: Sygnały & inspiracja / Twoje profile / Release & gotowość / Promocja & media / Social & analityka / Collaby i fani. Nad każdą grupą krótka podpowiedź co tam znajdziesz.
    • 📝 **Krótki opis pod każdą sekcją** — koniec z odgadywaniem, co kryje się pod nazwą. Data ostatniego wejścia przeszła do tooltipa, żeby zrobić miejsce na wyjaśnienie.
    • 🔤 **Nowe labelki**: „Plan dnia (Playbook)", „Twórca (Profil Persona)", „Influencer (Profil)", „Twoje single" → „Projekty". Dodane kafelki: **Artysta (Profil główny)**, **Radar**, **Premiery**, **Hub na start**.
    • 📊 **Admin → Playbooki → Aktywność Hub**: matryca dostała **dodatkowy scrollbar poziomy na górze** (zsynchronizowany z dolnym) oraz zwężone kolumny/nagłówki, więc cały zestaw sekcji mieści się w jednym widoku bez przewijania strony w dół.
  230. v2.116.08 lipca 2026, 13:15

    Management w Profilu, sync social linków (presskit ↔ profil ↔ Radar), fix RLS Briefu prasowego

    • 🧑‍💼 **Kontakty do managementu w Profilu Artysty** — nowa karta „Management / dodatkowe kontakty" (imię, funkcja, telefon, email; do 8 osób). Autouzupełniają się na publicznej stronie singla w pressroomie jako dodatkowy kontakt obok „Kontaktu prasowego" ID Records. Wpisz raz — wyświetla się w każdej premierze tego artysty.
    • 🔗 **Social linki działają jak Single Source of Truth** — wpisujesz IG/TikTok/YouTube/FB/Spotify w presskicie premiery i lądują automatycznie w Profilu artysty (`social_profiles`) oraz w `social_accounts` (skąd czyta Radar / Analiza AI / Media Plan). Symetrycznie: edytujesz w Profilu → też trafia do social_accounts. Koniec z wpisywaniem dwa razy.
    • 🛠️ **Fix RLS na Briefie prasowym** (`release_press_brief`) — polityki są rozszerzone: teraz zapisać/odczytać brief może artysta-właściciel, członek zespołu (`team_members`), osoba w `project_artists` oraz twórca release'a (`created_by`). Wcześniej managerowie i współtwórcy dostawali błąd „violates row-level security policy" i „autosave padł" (patrz zgłoszenie Anna Jędrzejczyk).
  231. v2.115.68 lipca 2026, 12:45

    Zadania: „Zrobione" archiwizują się po 7 dniach od zamknięcia (a nie od ostatniej edycji)

    • 🗂️ **Kolumna „Zrobione" w Zadaniach Admina (`/admin/tasks`)** liczy próg 7 dni od `completed_at` (moment przerzucenia karty do „Zrobione"), a nie od `updated_at`. Wcześniej każdy komentarz / drobna edycja odświeżały `updated_at` i zadanie sprzed tygodni siedziało w aktywnym widoku. Teraz 22 stare zamknięte zadania z tego workspace automatycznie lądują w Archiwum.
  232. v2.115.58 lipca 2026, 12:30

    Messenger: tooltip „kto zareagował" po najechaniu na chip reakcji

    • 👀 **Najedź myszką na chip reakcji** (👍/❤️/🔥/😂/🎉/🙌…) pod wiadomością w konwersacji — tooltip pokazuje imiona wszystkich osób, które zostawiły daną reakcję (plus licznik). Wcześniej chip pokazywał tylko liczbę, bez informacji kto. Backend (`getThread` + `loadOlderMessages`) dorzuca teraz `reactors: [{ userId, displayName, avatarUrl }]` do każdej reakcji, a `MessageReactions` renderuje to w tooltipie z shadcn.
  233. v2.115.48 lipca 2026, 12:15

    Crew Chat · HUB Support: backfill uczestników (naprawa „1 uczestnik / 0/0")

    • 👥 **Wszyscy artyści dopisani do kanału HUB Support** — poprzednia migracja podpięła tylko adminów, przez co wątek pokazywał „1 uczestnik" i licznik odczytań stał na `0/0` (bo poza autorem nie było komu przeczytać). Teraz w kanale jest 28 osób (1 admin + 27 artystów), tak jak w Label i Connect. Trigger dodający nowe konta artystów do wszystkich kanałów crew działał wcześniej — brakowało tylko jednorazowego backfillu.
  234. v2.115.38 lipca 2026, 12:05

    Generator grafik: czytelniejsze opisy tierów jakości

    • 🏷️ **Ultra (GPT-Image-2)** to najwyższa ogólna jakość obrazu — kompozycja, detale i typografia — a nie tylko „najlepszy tekst". Poprawione opisy w generatorze grafik Artysty (`/artist/social/graphics`), materiałach pre-save (`/artist/releases/:id/presave-assets`) i panelu Admina (`/admin/social/new`).
    • 📝 Standard = Nano Banana 2 (szybki, do szkiców), Premium = Gemini 3 Pro Image (najlepszy balans jakości i szybkości, domyślny), Ultra = GPT-Image-2 (najwyższa jakość, świetna typografia, max 2 szt./klik).
  235. v2.115.28 lipca 2026, 11:50

    Generator grafik: Ultra również dla Admina i dla materiałów pre-save

    • 🎨 **Opcja „Ultra" (GPT-Image-2)** dołączona do generatora grafik w panelu Admina (`/admin/social/new` — Label) oraz do generatora materiałów pre-save Artysty (`/artist/releases/:id/presave-assets`). Do tej pory Ultra było tylko w „Nowa grafika" Artysty — teraz wszystkie generatory grafik mają ten sam zestaw modeli.
    • 🏷️ **Spójne nazwy jakości** wszędzie: Standard = Nano Banana 2 (szybkie), Premium = Gemini 3 Pro Image (polecane, domyślne), Ultra = GPT-Image-2 (najlepszy tekst, cap 2 sztuki/klik ze względu na koszt — z podpowiedzią w UI).
    • 🛡️ **Cap 2 szt. dla Ultra** wymuszony też na backendzie labelowym (`generateLabelImages`), żeby nikt nie odpalił 4×GPT-Image jedną akcją.
  236. v2.115.18 lipca 2026, 11:30

    Messenger: pełny ekran jednym kliknięciem

    • 🖥️ **Ikona „pełny ekran" w nagłówku otwartej konwersacji** (dymek Messengera, desktop) — od razu przenosi do dedykowanej podstrony (`/inbox` dla Artysty, `/admin/inbox` dla Admina) z podświetlonym tym samym wątkiem.
    • 🪟 **Przycisk „Pełny ekran" w bannerze Messengera** obok przełącznika „Okienka" — otwierasz listę wątków na całej podstronie, bez wchodzenia w konkretną konwersację.
  237. v2.115.08 lipca 2026, 20:00

    Fixy: HUB Support, deep-link do dostępności, przecinki w tagach + jakość generatora grafik

    • 💬 **HUB Support znów widoczny w Crew Chat dla Artystów** — brakowało go, bo w bazie nie było wątku `channel_key=support`. Migracja zakłada kanał i podpina wszystkich obecnych adminów i artystów, a triggery od teraz dodają nowe konta automatycznie (tak samo jak do Label i Connect).
    • 🗓️ **„Dostępność w kalendarzu" z Gotowości premiery** kieruje teraz na `/calendar?openAvailability=1` i od razu otwiera dialog dodania bloku. Koniec przewijania do góry strony bez efektu.
    • 🏷️ **Przecinek znów działa w polach zainteresowań / vibe / tone** (profil artysty, presskit krok 1, dowolne inne miejsce z `PersonalityChips`). Wcześniej split po przecinku przy każdym keystroke deptał input i musiało się rozdzielać kropką. Nowy bufor lokalny + commit na przecinku / Enter / blur — piszesz normalnie.
    • 🖼️ **Generator grafik — wyższa jakość i lepsze zrozumienie briefu.** Domyślnie **Premium = Gemini 3 Pro Image**, do tego opcja **Ultra = GPT-Image-2** (najlepsza typografia, max 2 sztuki żeby nie palić kredytów) i Standard = Nano Banana 2. Przed generacją włącza się **AI refiner briefu** (tani gemini-flash), który przepisuje opis w strukturę Subject / Composition / Style / Palette / Lighting / Typography rules / Safe-zone / Negative — dzięki temu modele dużo lepiej rozumieją co ma być na grafice. Można wyłączyć checkboxem, jeśli chcesz surowy brief.
  238. v2.114.08 lipca 2026, 18:00

    Phase Picker: 10 pod-faz cyklu premiery, widoczne w generatorach i playbookach

    • 🎯 **Wspólny model faz** (`src/lib/release-phases.ts`): PRZEDPREMIERA — rampa wydawcy T-60..T-31, kontekst T-30..T-15, pre-save push T-14..T-8, countdown T-7..T-2, wigilia T-1. DZIEŃ PREMIERY — poranek D0 i wieczór D0. POPREMIERA — momentum D+1..D+7, recykling D+8..D+30, drugie życie D+31..D+90.
    • 🎛️ **Nowy komponent `PhasePicker`** w 4 miejscach: Generator Pomysłów artysty, Generator Pomysłów wydawcy, Plan Dnia artysty, Label Playbook (Brief dnia). Chip pokazuje aktualnie używaną fazę + auto-detekcję z daty premiery projektu; klik rozwija segmentowany selektor Przed/Dzień/Po z pod-fazami.
    • 🤖 **AI dostaje jawnie wybraną pod-fazę** — `formatPhaseForPrompt(phase, mode)` wstrzykuje osobne instrukcje dla artysty (co robi SAM) i dla wydawcy (pitch/PR/DSP). Nadpisanie ręczne ma pierwszeństwo nad auto-detekcją; playbook artysty korzysta też z nowej `getNextArtistPremiere` (obsługuje okno ±90 dni, więc pod-fazy popremierowe działają tak samo dobrze jak przedpremierowe).
    • 🎨 Kolorystyka bucketów: violet = przed premierą, amber = dzień premiery, emerald = po premierze. Tooltip pokazuje pełny fokus fazy i zakres dni względem D0.
  239. v2.113.08 lipca 2026, 14:00

    Pomysły + Plan Dnia + Label Playbook: pełna oś czasu pre-release (T-30 → T-1)

    • ⏳ **Nowe kategorie działań przedpremierowych** w generatorze pomysłów: warm-up-post, presave, countdown oraz (dla wydawcy) playlist-pitch-pre i radio-pitch-pre. Grupa „Premiera” w pickerze została rozbita na trzy: „Przed premierą (T-30 → T-1)”, „Dzień premiery” i „Po premierze”.
    • 🎯 **Generator Pomysłów widzi datę premiery** — gdy runda jest podpięta pod projekt/release z planned_premiere_date, prompt AI dostaje jawne okno (T-30..T-15 kontekst, T-14..T-8 pre-save push, T-7..T-2 countdown, T-1 day of) i wymaga co najmniej 2 pomysłów z aktualnego okna, kotwiczonych w tytule/tekście utworu.
    • 🗓️ **Plan Dnia artysty** pobiera najbliższą premierę i wstrzykuje ją do promptu: jeśli premiera ≤30 dni, co najmniej 1–2 zadania muszą być z fazy przedpremierowej dopasowanej do okna. Zasada „artysta nie pitchuje redakcji” pozostaje — może tworzyć dla nich CONTENT.
    • 📊 **Label Playbook** dostał w system-prompcie mapę okien pre-release (T-60/T-45/T-30/T-14/T-7/T-0) z konkretnymi obszarami akcji (playlist pitch, press outreach, embargo, pre-save push, radio pitching, day-of). Zadania w oknie ≤14 dni podbijane do priority high.
    • 🧠 **Kontekst artysty (AI)** — buildArtistAiContext teraz dla KAŻDEGO artysty (nie tylko wydawcy) wylicza next_premiere (tytuł, data, dni do), używane przez Pomysły, Plan Dnia, Radar i Co-Pilota.
    • 🎛️ Pokrętło horyzontu „Przed premierą” w generatorze przestało być pustą etykietą — dostało pełny opis taktyk per okno.
  240. v2.112.38 lipca 2026, 10:30

    Profil artysty: wszystkie pola numeryczne odporne na stringi

    • 🛡️ Rozszerzenie fixa z v2.112.2 na cały schemat profilu: `channel_priorities`, `social_engagement`, `experience_level`, `language_style` oraz priorytety Talentobrania i Strefy Fanów używają teraz `z.coerce.number()`. Jeden „stringowy” numer nie zablokuje już całego zapisu personalności.
  241. v2.112.28 lipca 2026, 10:00

    Profil artysty: naprawiony zapis Priorytetów platform social

    • 🐛 Naprawiony błąd zapisu `Invalid input: expected number` przy przydzielaniu punktów priorytetów platform social (yt/ig/tt/fb/x/tw/th/sp). Wartości są teraz koercjonowane do liczb po stronie walidacji.
  242. v2.112.17 lipca 2026, 18:30

    Gotowość: Pomysły i Plan promo przesunięte do Wzmocnij premierę

    • 🔄 **Plan promo / kalendarz** i **Poproś o pomysły** trafiły z sekcji Zmaksymalizuj możliwości do Wzmocnij premierę. Teraz lepiej oddają priorytet: są mocnym wsparciem release'u, a nie opcjonalnym dodatkiem.
    • 📊 Sekcja Zmaksymalizuj możliwości zawiera teraz: Wygeneruj plan dnia (playbook), Zajrzyj do Radaru social oraz pozostałe kroki max.
  243. v2.112.07 lipca 2026, 18:00

    Gotowość: 3 nowe kroki „max” + Admin: matryca aktywności w Hubie

    • 💡 **Poproś o pomysły lub sprawdź gotowe** — nowy krok w „Zmaksymalizuj szanse”. Auto-ptaszek gdy w Pomysłach jest choć jeden wpis dla tego projektu (lub artysty, gdy premiera bez projektu).
    • 🗓️ **Wygeneruj plan dnia (playbook)** — auto-check, gdy artysta ma choć jedno zadanie w playbooku (`artist_playbook_tasks`).
    • 📡 **Zajrzyj do Radaru social** — auto-check po wejściu w dowolną sekcję Social w Hubie (śledzimy przez `artist_section_visits`, sekcje `social*`).
    • 🛠️ Wszystkie 3 kroki mają teraz też override adminowy (można ręcznie ustawić done/todo) — zaktualizowany enum w `setReadinessOverride`.
    • 📊 **Etap 5 — Admin › Plany dnia › Aktywność Hub** — matryca wszystkich artystów × wszystkich sekcji × zakres (dziś / 7 dni / 30 dni / od zawsze). Widać liczbę wejść w każdą kratkę + procent wykorzystania Hubu per artysta. Sortowanie po wykorzystaniu, filtr po nazwie.
  244. v2.111.07 lipca 2026, 17:15

    Twój Hub: gdzie ostatnio byłeś? — checklista sekcji

    • 🧭 **Nowa checklista „Gdzie ostatnio byłeś?”** w Planie dnia i w Gotowości — pokazuje wszystkie sekcje Hubu (Pulse, Pomysły, Plan dnia, Feedbacki, Briefy, Connect, Publikacje, Streamingi, Radio, TV, Social + Mediaplan/Trendy/Plan/Analytics, Wywiady, Brand Kit, Persona, Fandom & pasje, Talentobranie, Influencer, Twoje single) z etykietą „byłeś dziś / w tym tygodniu / rzadko / nigdy” i procentowym wskaźnikiem wykorzystania Hubu.
    • 📊 **Automatyczne śledzenie wizyt** — Hub loguje wejście w każdą sekcję (raz na 5 s per ścieżka) w Twojej prywatnej tabeli `artist_section_visits`. Widzisz to tylko Ty (i admin w panelu, który dopnę w Etapie 5).
    • 🎯 Chodzi o to, żebyś nie zapomniał o żadnym narzędziu — jak coś świeci na czerwono (nigdy), to znak, że warto tam zajrzeć.
  245. v2.110.07 lipca 2026, 16:30

    Premiery: powiadomienia na każdym etapie + baner „co się teraz dzieje”

    • 🔔 **Automatyczne powiadomienia dla artysty przy każdej zmianie statusu** — od „zgłoszenie wpłynęło”, przez „🎉 utwór zaakceptowany! wypełnij presskit”, „ofertę wysłano”, „✅ oferta zaakceptowana, przygotowujemy umowę”, „📝 umowa do podpisu”, „🚀 idziemy do dystrybucji”, „🗓 planujemy premierę”, aż po „🎉 premiera w świecie!”. Trigger w bazie, więc łapie wszystkie miejsca gdzie zmienia się status.
    • 📸 **Miękkie przypomnienie „wypełnij presskit”** — jeśli projekt idzie do wyceny/umowy/dystrybucji/planowania z pustym presskitem, artysta dostaje osobne powiadomienie z linkiem. Nie blokuje admina — może przejść dalej i wrócić do presskitu w etapie planowania.
    • 📢 **Nowy baner statusu na górze widoku premiery artysty** — jasno pokazuje: co się teraz dzieje, czego się spodziewać, co masz zrobić. Kolory dopasowane do tonu (info/success/warn/critical/party) i CTA do właściwej zakładki (presskit, oferta, gotowość).
    • 🛠️ **Fix „Zapisz i przejdź do umowy”** — schemat oferty zaakceptowanej z pominięciem negocjacji nie akceptował pól `artist_request` w budżetach YouTube/TikTok/Meta/Influencer, przez co Zod wywalał zapis. Teraz działa.
  246. v2.109.97 lipca 2026, 16:00

    Oferty: fix „Zapisz i przejdź do umowy”

    • 🛠️ **Fix crasha** — schemat oferty zaakceptowanej z pominięciem negocjacji nie akceptował pól `artist_request` w budżetach YouTube/TikTok/Meta/Influencer, przez co formularz „Od razu przejdź do umowy” wywalał się z długim błędem Zoda. Teraz działa jak w zwykłym wysyłaniu oferty.
  247. v2.109.87 lipca 2026, 15:30

    Trendy TikTok: koniec martwych odsłuchów z Deezera

    • 🔊 **Prawdziwy fix odsłuchów** — Deezer wystawia podglądy MP3 z tokenem `hdnea` wygasającym po ~24h, więc po zapisie do bazy przeglądarka odrzucała je z `NotSupportedError`. Wywaliliśmy Deezera z fallbacku, zostają stabilne 30s AAC z iTunes.
    • 🧹 Wyczyszczono w bazie 58 martwych adresów Deezera — te dźwięki po najbliższym odświeżeniu spróbują ponownie w iTunes.
  248. v2.109.77 lipca 2026, 15:00

    Trendy TikTok: odsłuchy działają dla każdego dźwięku

    • 🔊 **Fix odsłuchów** — usunięty `crossOrigin=anonymous` w `AudioPreview`, przez który `play()` cicho padał na źródłach bez nagłówków CORS (Deezer i część fallbacków). Efekt: klikalny był tylko pierwszy przycisk. Teraz każdy dźwięk daje się odtworzyć.
    • 🧪 Błędy odtwarzania trafiają teraz do konsoli (`[AudioPreview] play failed …`) — łatwiej wychwycić kolejne problematyczne źródła.
  249. v2.109.67 lipca 2026, 14:30

    Trendy TikTok: koniec błędu „duplicate key" przy odświeżaniu

    • 🛑 **Fix crasha odświeżania** — gdy różne źródła (TokChart, Kworb, RapidAPI, iTunes) zwracały ten sam dźwięk/hashtag, upsert wywalał się na unikalnym indeksie. Teraz batch jest deduplikowany po region+kind+title przed zapisem, zostaje najbogatsza wersja rekordu.
  250. v2.109.57 lipca 2026, 14:00

    Trendy TikTok: odsłuchy dźwięków dla większości utworów

    • 🎧 **Więcej odsłuchów** — szukamy podglądu w iTunes z kilkoma wariantami zapytania (artysta+tytuł, sam tytuł, oczyszczony tytuł), a jak Apple nie ma utworu, dopytujemy Deezera.
    • 🔁 **Backfill przy każdym odświeżeniu** — cron nie tylko wzbogaca nowe trendy, ale też uzupełnia brakujące podglądy dla dźwięków, które już siedziały w bazie bez audio.
    • 🖼️ **Okładki dolatują nawet bez podglądu** — jeżeli nie znajdziemy MP3, zapisujemy przynajmniej cover, żeby karta wyglądała spójnie.
  251. v2.109.47 lipca 2026, 11:10

    Trendy TikTok: codzienny cron i stabilne Formaty/Działania

    • 🕘 **Odświeżanie trendów raz dziennie** — endpoint jest przygotowany pod daily cron i wymaga bezpiecznego nagłówka, jak pozostałe hooki systemowe.
    • 🎬 **Formaty/Działania nie znikają po refreshu** — jeśli źródła nie zwrócą wielu nadrzędnych mechanik, system dokłada małą, bezpieczną pulę inspiracji kreatywnych bez udawania twardego rankingu TikToka.
    • 🧩 **Lepsze listowanie** — dzieci pod dźwiękami/hashtagami nie wypychają już kart nadrzędnych przez limit zapytania, więc zakładki pokazują to, co faktycznie powinno być widoczne.
    • 📊 **Diagnostyka panelu** pokazuje teraz rozbicie typów i liczbę powiązanych formatów/działań utworzonych podczas wzbogacania.
  252. v2.109.37 lipca 2026, 03:05

    Trendy TikTok: liczniki Formaty/Działania zgadzają się z widokiem

    • 🔢 **Fix liczników Formaty / Działania** — pokazywało 211 formatów / 153 działania, a widać było 3–4. Teraz licznik liczy WYŁĄCZNIE karty nadrzędne, dokładnie te same, które renderują się w sekcji.
    • 🧩 **Dzieci trendów zostają w karcie rodzica** — formaty i działania powiązane z konkretnym dźwiękiem/hashtagiem widać jako „Powiązane pomysły" w karcie źródłowego trendu, dokładnie jak wcześniej. Nie zawyżają globalnego licznika.
  253. v2.109.27 lipca 2026, 02:45

    Trendy TikTok: stabilne liczniki przy zakładkach

    • 🔢 **Fix liczników w Trendach TikTok** — liczby przy zakładkach (Dźwięki / Hashtagi / Formaty / Działania) już się nie zmieniają, gdy klikasz między zakładkami. Wcześniej każde kliknięcie robiło osobne zapytanie z limitem 200 i liczby „skakały".
    • 📦 **Pełny zestaw w pamięci** — panel pobiera teraz naraz do 500 trendów wszystkich typów i filtruje lokalnie. Widać realną liczbę dźwięków (nie tylko 18), a filtry taksonomiczne działają spójnie dla wszystkich zakładek.
  254. v2.109.17 lipca 2026, 02:15

    Archiwum zadań: tylko „Zrobione", nigdy pozostałe kolumny

    • 🗄️ **Fix archiwum w /admin/tasks** — do archiwum trafiają WYŁĄCZNIE zadania z kolumny „Zrobione" starsze niż 7 dni. Zadania z pozostałych kolumn (todo / in_progress / cokolwiek innego) zostają na tablicy tak długo, aż ktoś je oznaczy jako zrobione — nigdy nie znikają samoistnie.
    • 📋 **Widok archiwum = czysta lista** — zamiast pustej tablicy Kanban z jedną kolumną widać teraz zwykłą listę zamkniętych zadań z nagłówkiem tłumaczącym regułę 7 dni.
  255. v2.109.07 lipca 2026, 01:30

    Trendy TikTok jako inspiracja, nie mus + HelpHinty w check-inie i formularzu Influencera

    • 🎯 **Trendy TikTok = opcja, nie priorytet** — Plan Dnia, Pomysły i Radar dostają teraz trendy jako *tło inspiracyjne*, z jasnym instruktażem dla AI: max 1 sugestia trendowa na sesję i tylko gdy naturalnie klika z tym, co artysta i tak dziś robi. Bez trendu też jest OK.
    • 💬 **HelpHint w check-inie Planu Dnia** — pole „Co dziś w głowie?" dostało podpowiedź z przykładami, żeby wpisywać konkrety (co ciąży, na czym się skupiasz, ograniczenia dnia), a nie ogólniki.
    • 📱 **HelpHinty w formularzu Influencera** — pola „Szczegóły popularności" i „Dodatkowe uwagi" mają teraz konkretne przykłady, co tam wpisać, żeby AI trafiał w propozycje.
  256. v2.108.07 lipca 2026, 00:45

    Krytyczne fixy + rozszerzenia: /admin/tasks, zapis opisu premiery, download MP3, archiwum kanban, trendy w Planie Dnia

    • 🐛 **Fix `/admin/tasks`**: naprawiony import `rrule` (default export nie istnieje w ESM) — zadania znów się otwierają.
    • ✍️ **Premiery — zapis opisu utworu**: pole „O czym jest ten utwór” i notka A&R zapisują się teraz na każdym etapie premiery, nie tylko w draftach. Autozapis nie blokuje się przez niekompletny NIP.
    • ⬇️ **Pobierz MP3** przy playerze w Premierach — jeden klik = MP3 zjeżdża na dysk (widoczne dla admina i artysty).
    • 🗄️ **Archiwum Kanban (7 dni)** — zadania „zrobione" starsze niż 7 dni znikają z głównego widoku i lądują pod przełącznikiem „Archiwum" (nic nie usuwamy z bazy).
    • ⭐ **Admin widzi ocenę gwiazdkową artysty** (read-only) na każdej karcie pomysłu — od razu widać co zaskoczyło.
    • 💡 **HelpHint w generatorze pomysłów** — pole „Dodatkowy kontekst" dostało konkretną podpowiedź, co warto tam wpisać.
    • 🎯 **Plan Dnia karmi się trendami TikTok DOPASOWANYMI do artysty** (fit_score + reason), nie tylko globalną listą — konkretniejsze mikro-zadania wpadające w realne trendy.
  257. v2.106.06 lipca 2026, 23:55

    Trendy TikTok — „Dopasowane do Ciebie” z uzasadnieniem AI (persona, release, plan dnia, radar, pulse)

    • 🎯 **Nowa sekcja „Dopasowane do Ciebie”** nad listą trendów — ranking dźwięków, hashtagów i formatów dobrany pod konkretnego artystę, z badge'em Fit 0-100 (zielony >85 = must-do, żółty 70-85 = warto).
    • 🧠 **Uzasadnienie „Dlaczego to pasuje?”** — AI (Gemini Flash) tłumaczy w 2-3 konkretnych zdaniach, dlaczego akurat ten trend, odnosząc się do faktycznych rzeczy artysty: persony/archetypu, tytułu aktywnej premiery, tematyki ostatnich pomysłów, mocnych platform z Radaru, sygnałów z Pulse'a i planu dnia.
    • 🏷️ **Chipy powodów** na każdej karcie: `Persona`, `Aktywny release`, `Plan dnia`, `Radar`, `Pulse`, `Nisza`, `Timing`, `Pomysł` — od razu widać co zaważyło.
    • 🔥 **Widget „Trend na dziś dla Ciebie”** wpięty w Plan Dnia i Social Radar — top-1 dopasowanie na start dnia, z linkiem do pełnej listy.
    • 👑 **Admin dostaje picker artysty**, artysta widzi automatycznie swoje dopasowanie. Cache 6h per (artysta × kontekst) — koszty AI pod kontrolą; jeden klik „Odśwież dopasowanie” wymusza przeliczenie.
    • 📦 DB: nowa tabela `tiktok_trend_artist_matches` z RLS (admin + team/owner artysty), indeksy po artist_id/fit_score.
  258. v2.105.06 lipca 2026, 23:30

    Trendy TikTok PL — hashtagi z kontekstem + formaty i działania per-dźwięk

    • #️⃣ **Sekcja „O hashtagu”** — każdy hashtag dostaje unikalny opis: tematyka, skąd pochodzi, jakie posty się pod nim publikują, z jakimi innymi tagami dobrze łączyć, kiedy NIE używać, PL-trafność (wysoka/średnia/niska) i 3–5 gotowych przykładów postów.
    • 🎬 **Powiązane formaty i działania** — AI generuje pod każdy dźwięk 2–3 formaty (child-rekordy z `parent_trend_id`) i 2–3 sugerowane działania (stitch/duet/reply-to-comment). Wyświetlają się w sekcji „Powiązane pomysły” na karcie dźwięku.
    • 🔁 **Enrichment w pętli + retry** — powiększone limity (60/run, chunki po 4) i drugi strzał gdy AI zwróci uszkodzony JSON — mniej pustych opisów, bogatsze karty.
    • 🛠️ **Fix RapidAPI trending** — pusta odpowiedź nie wysypuje już parsera JSON, teraz raportujemy „pusta odpowiedź / nie-JSON” i lecimy dalej z pozostałymi endpointami.
    • 🐛 Fix SSR importu `rrule` (Named export not found) — kalendarz nie wywala już preview.
    • 📦 DB: nowe pola `hashtag_context` (jsonb) i `parent_trend_id` (uuid) na `tiktok_trends` + indeks kind+parent.
  259. v2.104.07 lipca 2026, 10:30

    Trendy TikTok PL — overhaul kontekstu, audio preview i presety filtrów

    • 🎧 **Audio preview 30 s** — dla każdego dźwięku dociągamy podgląd z iTunes Search API (bez klucza) + okładkę; klik na miniaturkę odtwarza / pauzuje, jednocześnie gra tylko jeden preview.
    • 🧠 **AI-enrichment per-trend** — po każdym odświeżeniu do 24 nowych/starych trendów dostaje UNIKALNY kontekst: dlaczego trenduje TERAZ, jak wykorzystać, `song_context` (gatunek, tempo, viralowy fragment, długość klipu, nota kulturowa), 3–6 formatów z opisem wykonania, hooki i pasująca publika — koniec z copy-paste opisami.
    • 📻 **Sekcja „O utworze” na karcie dźwięku** oraz **„Formaty do wypróbowania”** dla wszystkich trendów — dużo więcej pomysłów gotowych do egzekucji.
    • ⚡ **Presety filtrów** — jednym kliknięciem: „Do miłosnych”, „Do rozrywkowych”, „Storytime / psychologia”, „Taniec / hype”, „Aesthetic / chill”.
    • 🔇 **Mniej szumu w diagnostyce** — powtarzalne błędy Creative Center 40101 są zwijane do jednej informacyjnej linii, deduplikacja ostrzeżeń.
    • 📦 **DB**: nowe pola `song_context` (jsonb) i `enriched_at` na tabeli `tiktok_trends` — wzbogacanie robi się raz na 7 dni per trend, żeby oszczędzać kredyty AI.
  260. v2.103.47 lipca 2026, 09:00

    Trendy TikTok PL — fix zapisu + klasyfikacja i filtry

    • 🛠️ **Fix błędu „violates check constraint”** — dozwolone źródła rozszerzone o `rapidapi`, `tokchart`, `kworb`, `tracker`, `aggregate`, więc pipeline znów zapisuje trendy.
    • 🏷️ **Klasyfikacja trendów w 3 osiach** — każdy trend dostaje tagi: **dziedzina/temat** (muzyka, taniec, storytime, moda, gaming…), **format** (POV, GRWM, duet, tutorial, transition…) i **nastrój** (chill, hype, emocjonalny, absurd, aesthetic…) plus **energia** (low/mid/high).
    • 🎛️ **Filtry w panelu Trendy** — przycisk „Filtry klasyfikacji” z multiselectem po każdej osi; kolorowe badge'y widoczne na każdej karcie.
    • 🧠 **Heurystyczny klasyfikator fallback** — działa nawet gdy AI nie zwróci tagów, na bazie słów kluczowych PL/EN z tytułu, evidence, hashtagów i sugerowanych formatów.
  261. v2.103.37 lipca 2026, 00:05

    Trendy TikTok PL — naprawa dźwięków, TokChart/Kworb direct i czytelne metryki

    • 🎧 **RapidAPI bez martwego endpointu** — wyrzucony `/trending/feed`; teraz sprawdzamy aktualne endpointy `song`, `hashtag`, `video` i `post/trending` z fallbackiem schematu.
    • 📈 **TokChart/Kworb direct parse** — pobieramy dźwięki bezpośrednio z publicznych rankingów TokChart oraz Kworb TikTok PL, zamiast błędnych adresów `/country/PL`.
    • 🧹 **Mocniejszy filtr dźwięków** — odpadają losowe/generic/original soundy, stare evergreeny i słabe globalne sygnały bez PL lub wzrostu.
    • 🎛️ **Lepszy UI metryk** — zamiast niezrozumiałych `Q90 Fresh60` są paski: **Pewność** i **Świeżość** z opisem typu „mocny sygnał”, „aktualne”, „do sprawdzenia”.
  262. v2.103.27 lipca 2026, 03:20

    Trendy TikTok PL — TokChart, Kworb i RapidAPI /trending/feed

    • 📊 **TokChart PL** — dopisany do źródeł: trending sounds i hashtagi z rankingu, który nie jest JS-only jak Creative Center.
    • 🎧 **Kworb** — TikTok Songs (globalne, jako cross-ref) + Spotify PL Daily (świeże single, kandydaci na TT snippet).
    • ⚡ **RapidAPI `/trending/feed?region=PL`** — gdy jest `RAPIDAPI_KEY`, dogrywamy dźwięki i hashtagi z realnej rotacji feedu (host konfigurowalny przez `RAPIDAPI_TIKTOK_TRENDS_HOST`).
    • 🩺 **Diagnostyka** — brak klucza / błąd endpointu ląduje w warnings panelu, więc widać dlaczego coś nie doszło.
  263. v2.103.07 lipca 2026, 02:35

    Trendy TikTok PL v3 — refresh z diagnostyką, formaty i działania

    • 🛠️ **Naprawiony refresh Trendów PL** — panel pokazuje teraz raport: ile źródeł pobrano, ile pozycji wyciągnięto, ile przeszło filtr i czy użyto fallbacku.
    • 🎬 **Nowe typy trendów** — obok dźwięków i hashtagów są teraz **Formaty** oraz **Działania**, czyli gotowe mechaniki contentu do użycia przez artystę.
    • 💡 **Bogatsze karty** — każda sensowna pozycja ma „dlaczego trenduje”, „jak wykorzystać”, hooki, kąty kreatywne, dopasowanie do publiki, źródła i oceny jakości/świeżości.
    • 🧠 **Lepsze karmienie AI** — generator pomysłów, Plan Dnia i Radar dostają nie tylko soundy/hashtagi, ale też formaty i konkretne akcje.
  264. v2.102.07 lipca 2026, 02:00

    Trendy TikTok — OVERHAUL: rising/current/popular/top, evergreeny out, karmienie do Plan Dnia i Radaru 🔥

    • 🔥 **Filtr etapów trendu** — Wschodzące (rising) · Aktualne · Popularne · Top. Domyślnie wszystkie, ale rising ma priorytet w sortowaniu i w karmieniu promptów.
    • 📉 **Progi obniżone do realnych PL** — dźwięki od ~500 użyć, hashtagi od ~1 000 filmów (a nie miliony). Prompt AI wprost zakazuje evergreenów (Empire State of Mind, Blinding Lights, Old Town Road itp.), a post-filter dodatkowo je odrzuca po tytule.
    • 🧹 **Guard przeciw pustej lipie** — karta bez evidence / bez metryk / bez sampli i bez linka NIE renderuje się. Lepiej mniej, ale konkretnie, niż siatka pustych „biij toij".
    • 🎬 **CTA „Wygeneruj pomysł z trendem"** — z każdej karty jednym klikiem wpadasz do generatora pomysłów z prefillem tego trendu.
    • 🧠 **Trendy karmione też do Plan Dnia** (`generateArtistTasks`) i do **AI-analizy grup postów w Radarze** — nie tylko generator pomysłów jak dotychczas.
    • 🗓️ **first_seen_at / last_seen_at + upsert** — re-scrape nie kasuje historii, tylko odświeża widoczność. Purge dopiero po 30 dniach ciszy.
    • 💡 Persona i Influencer bez zmian pod tagami — istniejące formularze używają chip-pickerów zamiast wolnych pól listowych, więc podmiana na `<TagInput />` nie była potrzebna. `<HelpHint />` już wpięty w kluczowe pola trendów; ekspansja na kolejne formularze w następnej iteracji.
  265. v2.101.27 lipca 2026, 01:15

    Trendy TikTok v2 — Creative Center, karty jak w Radarze, kontekst do promptów 🔥

    • 🇵🇱 **Zakładka „Trendy 🇵🇱” w Social Radar** (admin, subnav Social) + duży CTA „🔥 Trendy TikTok 🇵🇱” w banerze Radaru. Skrótowy dostęp z każdego panelu Social.
    • 🎯 **Realne źródło danych — TikTok Creative Center** (oficjalne popular hashtags + popular music + breakout, region PL, 7 dni), scrapowane przez Firecrawl. Fallback: Firecrawl web search + AI. Wcześniej było tylko AI, teraz są oficjalne rankingi.
    • 🖼️ **Nowa karta trendu** wzorowana na post-card z Radaru: thumbnail dźwięku/hashtaga, liczby użyć i filmów, „Dlaczego to trend” (evidence z danych), „Jak wykorzystać” (notka AI), 3 przykładowe viralowe filmy, link do dźwięku/hashtaga na TikToku + linki do źródeł, chip źródła danych. Bez limitu ilości — pełna lista soundów i hashtagów.
    • 🧠 **Trendy są karmione do promptu generatora pomysłów** — AI zna aktualne dźwięki/hashtagi PL i wplata je w pomysły gdy pasują do artysty (nie na siłę).
  266. v2.101.07 lipca 2026, 00:45

    Trendy TikTok (PL) + TagInput + Słownik pojęć 🇵🇱🎵

    • 🇵🇱 **Trendy TikTok — nowy moduł** dostępny pod `/artist/social/trendy` i `/admin/social/trendy`. Świeże dźwięki i hashtagi trendujące w Polsce, z krótką notką AI: dlaczego rośnie i jak Ty możesz to wykorzystać w rolce. Źródło: Firecrawl (web search PL) + Lovable AI. Fallback: sam AI.
    • ⏰ **Cron co 6h** odświeża bazę trendów automatycznie. Admin może też ręcznie kliknąć „Odśwież”.
    • 🏷️ **Nowy komponent `<TagInput />`** — chip-style, Enter/przecinek dodaje tag, Backspace usuwa ostatni, wklejanie CSV/nowych linii też działa. Do wpięcia w każde pole tagowe (persona, influencer, itd.).
    • ❓ **Nowy komponent `<HelpHint />` + słownik `src/data/glossary.ts`** — ikonka „?” z popoverem wyjaśniającym pojęcia HUBa (Pulse, Radar, Spike, Persona, Brief, Intensywność, Trudność, Zakres kontekstu, Tryb Influencera, Trendujący sound/hashtag, itd.). Do wpięcia w formularze przez `<HelpHint id="pulse" />`.
    • 🔗 Linki do trendów wpięte w hub /artist/social i /admin/social.
  267. v2.100.17 lipca 2026, 00:15

    Pomysły: zakładka Plan + filtr zaplanowanych 🗓️

    • 🗓️ **Nowa zakładka „Plan”** w /artist/ideas i /admin/ideas — obok Lista / Kalendarz / Workflow. Pokazuje zaplanowane pomysły w rozbiciu: Zaległe, Dziś, Jutro, Ten tydzień, Później, Bez terminu, Zamknięte — dokładnie jak w Plan Dnia.
    • 🔎 **Filtr „Zaplanowane / Bez terminu / Wszystkie”** w liście pomysłów (Artysta i Admin).
    • 📅 **Termin zaplanowania widoczny na karcie pomysłu** — fioletowy chip z datą i „dziś / jutro / za X dni” (albo czerwony, jeśli zaległe).
  268. v2.100.06 lipca 2026, 23:45

    Plan Dnia: tryb intensywności + planowanie w kalendarzu 🗓️🌊

    • 🌊 **Nowy tryb Deep Focus w Plan Dnia** — obok Micro (5–15 min) i Standard, „W pełni do dyspozycji” generuje **mniej, ale dużych** zadań 30–90 min (sesje studyjne, dłuższe montaże, prawdziwe kolaby, live streamy). AI dostaje twardy instruktaż, żeby NIE zaproponować mikro-strzałów.
    • 🗓️ **Planowanie w kalendarzu** — przy każdym zadaniu w Plan Dnia i każdym pomyśle jest chip „Zaplanuj”. Klik → mini-kalendarz z obłożeniem dnia (kolorowe pierścienie: 1 rzecz zielony, 2–3 żółty, 4+ czerwony). Wybierasz datę → zadanie/pomysł ląduje w kalendarzu artysty jako wpis kategorii **Plan dnia** albo **Pomysły**.
    • ♻️ Odplanowanie / przeniesienie działa w tym samym popoverze — stary wpis kalendarzowy jest podmieniany bez duplikatów.
    • 📅 W kalendarzu doszły dwie nowe kategorie: **Plan dnia** (bursztyn) i **Pomysły** (fiolet), żeby zaplanowane rzeczy było widać na pierwszy rzut oka.
  269. v2.99.16 lipca 2026, 23:10

    Poprawki po iteracji 3 ✍️

    • ✍️ „Redakcja” → „Wydawca” w karcie „Poproś o pomysły” (alert, przycisk wysyłki, licznik „w kolejce u Wydawcy”).
    • 📥 Requesty pomysłów od artystów są teraz też w admin → **Do akceptacji** (z liczbą oczekujących i skrótem do generatora w /admin/ideas).
    • 🤖 **AI Asystent HUBa** dostępny wprost z bańki Messengera (lewy dolny róg) — na górze listy wątków, dla Artysty i Admina. Nie trzeba już wchodzić w Crew Chat.
  270. v2.99.06 lipca 2026, 22:45

    Requesty pomysłów od artystów + AI Asystent w Crew Chat 💡🤖

    • 💡 **Poproś o pomysły** — nowa karta na /artist/ideas. Zaznaczasz cele (viral / streaming / prasa / community…), obszary (rolki / storytelling / kolaby…), platformy, opcjonalnie konkretne typy działań i intensywność („full mocy” / „standard” / „na spokojnie”). Możesz też opisać swoimi słowami albo **nagrać wypowiedź** — HUB zrobi transkrypt i doda do requestu.
    • 📥 **Redakcja widzi requesty w /admin/ideas → zakładka „Requesty od artystów”** z licznikiem oczekujących. Każdy request ma datę, nazwę artysty, wszystkie zaznaczenia i opis/transkrypt. Jednym klikiem otwierasz generator z pre-fillem kontekstu z requestu.
    • 🔔 Po realizacji artysta dostaje powiadomienie „Twoje pomysły są gotowe” z linkiem do /artist/ideas.
    • 🤖 **AI Asystent** — 4-ty kanał w Crew Chat (/artist/connect/chat). Pomaga zorientować się w HUBie („gdzie wypełnić Brief prasowy?”, „jak działa Radar?”), podpowiada co robić dalej na bazie Twojego profilu i sytuacji projektu. Historia rozmowy zostaje lokalnie.
  271. v2.98.16 lipca 2026, 22:15

    Influencer / zasięgi: auto-fill z profili + checklista + krok w Gotowości 👑✅

    • 🔗 **Zasięgi liczymy sami z Twoich profili social** (IG/TT/YT/FB/X/Threads/Twitch) przez Firecrawl-snapshot. Nie musisz przepisywać liczby obserwujących — pobieramy ją z publicznego profilu i możesz jednym kliknięciem odświeżyć.
    • 🏷️ Przy każdej platformie, z której zaciągnęliśmy dane, widzisz badge „Z Twojego profilu na [platforma]”. Gdy zmienisz liczbę ręcznie, badge znika.
    • 🚫 Usunęliśmy pole „Łączna liczba obserwujących” — bezużyteczne, bo fani IG/TT/YT często się powtarzają. Liczymy per platforma. Typowy zasięg 1 posta zostaje.
    • ✅ **Checklista influencera** — dla każdej platformy widać, czy masz podpięty link w „Profile social do Radaru i AI”. Bez linku → czerwony pasek „Profil nieznany — brak linku” z bezpośrednim przejściem do uzupełnienia.
    • 🏆 **Nowy krok „Profil influencer / zasięgi”** w Gotowości premiery, w sekcji „Zmaksymalizuj możliwości” — na pierwszym miejscu. Klik „Wypełnij” prowadzi prosto do zakładki Influencer.
  272. v2.98.06 lipca 2026, 21:30

    Generatory naprawdę używają Twoich uploadów + profil Influencera 🎨👑

    • 🎨 **Generatory grafik faktycznie widzą Twoje referencje.** Wcześniej uploadowane obrazy szły do modelu tylko jako opis tekstowy („[reference] cover_ref") — teraz przekazujemy je jako REALNE wejście wizualne (image-to-image / merge) do KAŻDEJ iteracji, nie tylko pierwszej. Dotyczy generatora graficznego artysty i admina.
    • 🧠 W promptcie dopisaliśmy jasną regułę: „musisz użyć tych referencji jako bazy wizualnej dla TEJ grafiki i każdego wariantu — reinterpretuj, nie kopiuj". Koniec sytuacji, w której model olewał wgrany moodboard.
    • 👑 **Nowa zakładka „Influencer / zasięgi"** w Profilu artysty (obok Persony). Toggle „jestem influencerem" + zasięgi łączne i per platforma, skąd popularność (talent show / TV / support gwiazdy / viral / sport / aktorstwo / streaming / …), typ publiki, umiejętności contentowe (video pro / vlog / choreo / storytime / …), typowy zasięg 1 posta, brand deals.
    • 🎯 AI (Plan Dnia, Pomysły, Radar) dostaje ten kontekst automatycznie i przestaje proponować małe drobne posty osobom z realnym zasięgiem — proponuje kampanie, formaty seryjne, kolaby, wykorzystanie publiki spoza samej muzyki. Bez influencera nic się nie zmienia.
  273. v2.97.06 lipca 2026, 20:15

    Świeżość postów + naprawa Briefu Prasowego 🩹

    • 🕰️ **Radar/Pulse ignoruje stare przypięte posty.** Do rankingów, pomysłów i eksponowania w Pulse liczą się posty z ostatnich 3 tygodni **lub** takie, które mają aktywny wzrost views w ostatnich 7 dniach. Rolki sprzed pół roku przestają wygrywać top tylko dlatego, że są przypięte.
    • 📌 **Pin-bonus gaśnie z wiekiem** — post ≤14d dostaje pełny boost, 14–30d → połowę, 30–60d → 20%, starsze → 0. Koniec „przypinam raz i mam viral na zawsze”.
    • 🩹 **Brief Prasowy: koniec cichej porażki zapisów.** Rozdzieliliśmy INSERT vs UPDATE (upsert lubi mylnie zwracać 403 przy sprawdzaniu obu polityk), a każdy błąd zapisu ląduje w logach z konkretnym release_id/userId. Autosave w UI był OK — problem był po stronie serwera i teraz w końcu widać w logach kiedy coś padnie.
    • 🎙️ **Transkrypcja audio (nagrywarka w briefie/wywiadzie/pomyślach) przełączona na dedykowany endpoint STT** (`openai/gpt-4o-mini-transcribe`). Gemini audio-in-chat czasem zwracał pusty tekst przy nagraniach z iOS Safari — teraz dedykowany transkrybent robi robotę, a Gemini zostaje jako fallback.
    • ⚠️ Historia briefu Anny Jędrzejczyk niestety nieodwracalnie utracona — INSERT-y przechodziły przez upsert i wracały bez wpisu w bazie ani w logach (autosave loguje tylko `release_submissions`, nie brief). Od tej wersji każda taka porażka jest jawna.
  274. v2.96.06 lipca 2026, 18:30

    Gotowość premiery: trzy sekcje z paskami postępu 🚦

    • 🚦 Kroki poukładane w trzy kubełki: **Must-have** (Profil artysty, Presskit, Brief prasowy, Profile social do Radaru/AI), **Wzmocnij premierę** (Persona, Artist Pitch, Brief głosowy) i **Zmaksymalizuj możliwości** (Wywiad, Brand kit, Verdict, Kalendarz, Zgłoszenia promo, Plan promo).
    • 📊 Każda sekcja ma teraz własny mini-pasek % i licznik `X / Y` gotowych kroków — od razu widać gdzie brakuje ruchu.
    • 🎙️ Voice / Video drop wskoczył wewnątrz sekcji „Zmaksymalizuj możliwości” — tam, gdzie logicznie pasuje (a nie na dole strony).
    • 🔜 Nowa sekcja „Wkrótce dostępne”: Smartlink & pre-save + Dystrybucja tekstów (dodajemy w kolejnych iteracjach).
    • 💡 Na końcu gotowości pojawił się kafelek „Czegoś Ci brakuje? Zaproponuj” — te same zgłoszenia co w Hubie na start → „Co dodać w HUB-ie?”.
  275. v2.95.36 lipca 2026, 17:30

    Radar artysty = Radar admina: ta sama sekcja postów, dwie kolumny 🎯

    • 🎯 Sekcja „Posty z sociali” u artysty ma teraz identyczną ramkę co u admina — tytuł + opis + licznik `X / Y postów` po prawej.
    • 🧱 Karty postów w Radarze artysty renderowane w dwukolumnowym gridzie (`lg:grid-cols-2`) — koniec z jedną szeroką kolumną.
    • 🎬 Sekcja „Twoje teledyski” też dwukolumnowa, żeby układ był spójny z widokiem admina.
    • 🎛️ Filtry / sort / etykiety pozostają dokładnie te same (współdzielony komponent `PostFilters`), akcje admin-only (Snapshot now, share menu) dalej tylko po stronie admina.
  276. v2.95.26 lipca 2026, 17:00

    Premiery → Materiały: upload odblokowany na każdym etapie 📎

    • 📎 Artysta może teraz dorzucać/aktualizować audio (MP3/WAV) i okładkę w zakładce Materiały niezależnie od etapu premiery — nie tylko przed wysyłką presskitu.
    • 🔓 Zniknął komunikat „EDYCJA ZABLOKOWANA” z dropzone'ów dla plików. Admin i tak miał pełen dostęp przez AdminAssetUploader — teraz artysta wgra plik samodzielnie z UI.
    • ℹ️ Backend (registerAsset) nie miał żadnych ograniczeń statusowych — była to wyłącznie blokada w interfejsie.
  277. v2.95.16 lipca 2026, 16:00

    Radar overview: mniejsze karty jak u artysty + deep-linki do postów 🎯

    • 🧩 Karta posta w `/admin/social/pulse/overview` = ten sam komponent co w Radarze konkretnego artysty (miniatura z boku + metryki + wykres + AI). Koniec z ogromnymi kaflami 4:5.
    • 🎯 Przycisk „Radar artysty” prowadzi teraz dokładnie do tego posta w Radarze artysty (hash `#post-<id>` + auto-scroll + krótki pulsujący ring 2,4 s).
    • 🔗 IG „Otwórz” dla reelsów kieruje do `/reel/<code>/` zamiast `/p/<code>/` (Instagram czasem redirectował /p/ dla wideo na profil). Aby stare wiersze IG dostały nowe URL-e — uruchom „Skanuj socjale”.
    • 📱 Stories oznaczone „otwórz profil (Story)” z tooltipem, że Meta nie daje publicznych permalinków dla Stories — nie jest to bug scrapera.
    • ✅ Potwierdzone: TikTok scraper (tiktok-api23) działa poprawnie — secUid OK, `/api/user/posts` zwraca posty, mapowanie 1:1 z poprzednim.
  278. v2.95.06 lipca 2026, 14:00

    Radar: przegląd postów wszystkich artystów w jednym miejscu 🛰️

    • 🛰️ Nowa zakładka `/admin/social/pulse/overview` — zbiorczy feed postów z całego rostera z miniaturkami, ER i skokiem do drill-downu artysty.
    • 🎛️ Filtry: okres (24h/7d/30d/90d/all), multi-select artystów (search + zaznacz widoczne), platformy, min. views, przełącznik tylko aktywne projekty i konta ID Records.
    • 🔀 Sortowania: Najnowsze / Najlepsze (ER × log(views)) / Najwięcej reakcji / Najwyższy ER — plus panel Najaktywniejsi w oknie (klik → filtr).
    • 📻 Skrót w `/admin/radio` Zobacz wszystkie emisje oraz w `/admin/social/pulse` Przegląd wszystkich artystów.
    • 🐛 Twardsze parsowanie odpowiedzi tiktok-api23 (kilka wariantów shape + fallback ścieżek `/api/user/posts` z `cursor=0`) i wbudowany panel Test scrapera TikTok (raw response + zmapowany post) — łatwiej wychwycić, dlaczego RapidAPI pokazuje 0 endpointów.
  279. v2.94.16 lipca 2026, 12:00

    Radar: tańszy scraper TikToka — oszczędność ~$50/mies. 💸

    • 🔁 Przełączenie z `tiktok-scraper7` (tikwm, $59/mo) na `tiktok-api23` (Tikfly, $9.99/mo PRO) — funkcjonalnie 1:1: posty (views/likes/comments/shares) + komentarze do wybranych postów.
    • 🧠 Cache secUid TikToka per artysta (kolumna `artists.tiktok_sec_uid` + in-memory 24h) — zapytanie `/api/user/info` idzie raz, potem 0 dodatkowych calli.
    • 🛟 Awaryjny fallback: gdy ENV `RAPIDAPI_TIKTOK_HOST=tiktok-scraper7.p.rapidapi.com`, kod cofa się na starą ścieżkę bez deployu.
  280. v2.94.06 lipca 2026, 10:00

    Integracje agentów (MCP) — podłącz HUB do ChatGPT / Claude / Cursor 🤖

    • 🔌 HUB udostępnia serwer MCP pod adresem `/mcp` — dowolny klient MCP (ChatGPT, Claude, Cursor, Codex) może się teraz z nim połączyć i używać narzędzi HUB.
    • 🔐 Logowanie przez OAuth 2.1 na koncie Supabase — każdy użytkownik łączy się jako on sam, RLS decyduje co widzi (żadnych shared tokenów).
    • 🛠️ Pierwsze narzędzia: `whoami` (sprawdź, kto jest zalogowany) i `list_my_artists` (lista artystów, do których masz dostęp).
    • 🧾 Nowa strona zgody `/.lovable/oauth/consent`, na której zatwierdzasz/odrzucasz konkretnego klienta MCP przed pierwszym połączeniem.
  281. v2.93.224 lipca 2026, 11:15

    Detal wydania — koniec z ucinaniem treści na mobile 📱

    • 📱 Na wąskich ekranach karty (Historia, Tekst utworu, Gatunki, chat A&R) nie uciekają już poza ekran — dodane `overflow-x-clip` na całym widoku detalu wydania.
    • 🧩 Grid kolumn (`minmax(0,1fr)_380px`) i `min-w-0` w lewej kolumnie pilnują, żeby szerokie dziecko (np. edytor treści) nie rozpychało layoutu.
    • 🎁 Karty (`Card`) dostały `overflow-hidden`, więc dekoracje i wewnętrzne paski przewijania nie wypychają całej strony w bok.
  282. v2.93.214 lipca 2026, 10:30

    Data premiery edytowalna z hero + poprawki mobilne 📅

    • 📅 Klik w kafelek „Premiera” na detalu wydania (admin) otwiera mini-edytor daty — można zmienić datę na dowolnym etapie (także po akceptacji oferty), bez chodzenia po Kanbanie.
    • 🧹 Można też wyczyścić datę, jeśli premiera ma być na razie „bez terminu”.
    • 📱 Mobilny nagłówek detalu premiery: tytuł zmniejszony, chipy artysty/profilu nie wyjeżdżają poza ekran, timeline etapów w wersji compact na wąskich ekranach.
  283. v2.93.204 lipca 2026, 02:15

    Podgląd singla jako artysta — koniec z crashem 🛡️

    • 🛡️ Podgląd profilu projektu (np. MYK — Dwa kroki) jako artysta nie wywala się już z „Cannot read properties of undefined (reading 'stops')”.
    • 🎚️ SupportBar i pomocnicze funkcje (`supportInfoFor`, `classifyByScale`) mają teraz fallback na skalę `radio_regional`, gdy kanał ma nieznany/legacy `scaleKey`.
  284. v2.93.193 lipca 2026, 21:30

    Brief prasowy: koniec z gubieniem godziny pracy 💾

    • 💾 Autosave co 1,5 s — każde pole briefu prasowego premiery zapisuje się do bazy automatycznie w tle, bez klikania „Zapisz”.
    • 📱 Kopia lokalna na urządzeniu — nawet jeśli sieć padnie albo zamkniesz apkę zanim autosave zdąży wysłać, po powrocie na stronę odpowiedzi wracają i lądują w bazie.
    • 🔁 Upload głosówki (mów-zamiast-pisz) ma teraz retry na przejściowe błędy Dropboxa (500) — Ania widziała „Dropbox token refresh failed: 500”, po tym poprawce próba jest ponawiana automatycznie.
    • 🟢 W nagłówku i przy przycisku „Zapisz teraz” widać status: „zapiszę za chwilę / zapisuję / zapisano X temu / autosave padł”.
  285. v2.93.182 lipca 2026, 17:00

    Landing znów dostępny dla wszystkich ↩️

    • ↩️ Cofnięty auto-redirect z v2.93.17 — wejście na `/` znów pokazuje stronę główną również zalogowanym adminom i artystom.
  286. v2.93.172 lipca 2026, 16:40

    Start HUBa: od razu do swojego panelu 🚀

    • 🚀 Zalogowany admin po wejściu na hub.idrecords.pl trafia od razu do /admin (Projekty), a artysta do /artist (Hub) — koniec z lądowaniem na landingu przy każdym otwarciu apki/PWA.
    • 👀 Jeśli chcesz mimo wszystko zobaczyć landing (np. do prezentacji), otwórz /?stay=1.
  287. v2.93.162 lipca 2026, 16:10

    Messenger: Kto przeczytał działa na mobile 👁️

    • 👁️ Stuknięcie w oczko przy wysłanej wiadomości otwiera listę odczytów także na telefonie — zamiast hover-only tooltipa używamy teraz Popovera, więc tap działa tak samo w Crew Chatach i 1:1.
    • 🖱️ Na desktopie zachowanie bez zmian — klik otwiera, klik obok zamyka.
  288. v2.93.152 lipca 2026, 14:15

    Messenger: koniec mrugania po wysłaniu 🪄

    • 🪄 Po kliknięciu „Wyślij” wiadomość zostaje w miejscu — HUB podmienia tymczasowy identyfikator na ten zapisany w bazie bez odświeżania całego wątku (koniec z „znika i wraca”).
    • 🔁 Realtime pomija zdarzenia dla własnych wiadomości i reakcji, jeśli UI już je pokazał — mniej mrugania sąsiednich awatarów i emoji podczas pisania.
    • 📎 Wiadomości z załącznikami dostają jednorazowe, delikatne doładowanie po ~1,2 s, żeby miniaturka/podgląd pojawiły się szybko, ale bez migotania reszty listy.
  289. v2.93.142 lipca 2026, 13:30

    Messenger: natychmiastowa wysyłka, koniec lagów ⚡

    • ⚡ Wiadomość pojawia się w oknie od razu po kliknięciu „Wyślij” — zamiast czekać 1–2 s na powrót z serwera, HUB dokleja ją optymistycznie i cicho podmienia na zapisaną wersję, gdy backend potwierdzi.
    • 👍 Reakcje emoji i edycja wiadomości też są natychmiastowe — klik/zapis widać od razu, a błąd (gdyby wystąpił) czysto się cofa.
    • 🧹 Odświeżanie wątku w tle zmniejszone z co 5 s do co 15 s — realtime i tak dowozi nowości, a UI przestaje „mrugać” podczas pisania.
    • 🛟 Jeśli sieć padnie w trakcie wysyłki, wiadomość i załączniki wracają do pola tekstowego, żeby nic nie przepadło.
  290. v2.93.132 lipca 2026, 12:00

    Brief Produkcyjny: autozapis szkicu/hasła naprawiony ✍️

    • ✍️ Pole „Szkic / hasła / kierunek” oraz „Tekst utworu” w Briefie Produkcyjnym realnie przechodzą teraz przez zapis — wcześniej walidacja przepuszczała tylko stare pola i cicho ucinała nowe dane v2.
    • 🧩 Ten sam fix obejmuje tagi, wybory chipów, slidery, referencje z notowań, materiały i podsumowania briefu, żeby autozapis nie kasował części JSON-a.
    • ✅ Przycisk „Zapisz teraz” i autozapis zapisują teraz dokładnie ten sam komplet danych, który artysta widzi w formularzu.
  291. v2.93.127 lipca 2026, 12:30

    Produkcja utworu: autozapis tekstu naprawiony ✍️

    • ✍️ „Tekst utworu (propozycja artysty)” w etapie Produkcja realnie się zapisuje — do tej pory po submitcie premiery zmiany artysty były cicho blokowane przez RLS (0 wierszy, żadnego błędu), więc „Autozapis aktywny” kłamał.
    • 🔐 Zapis production_progress leci teraz przez server function po autoryzacji na odczyt — reguły dostępu (kto widzi zgłoszenie) się nie zmieniły.
    • 🎧 Ta sama poprawka reperuje inne edycje etapów (notatki A&R, sign-off, assety, komentarze), które również padały po tym, jak premiera opuściła status draft/needs_changes.
  292. v2.93.117 lipca 2026, 10:00

    Projekty ↔ Premiery: powiąż projekt z istniejącą premierą 🔗

    • 🔗 W panelu projektu, obok „Eksportuj do Premier”, pojawił się przycisk „Powiąż z istniejącą” — otwiera listę zgłoszonych już premier do wyboru.
    • 🔎 Wyszukiwarka premier po tytule, artyście i dacie; pokazujemy tylko te wolne (bez podpiętego projektu).
    • 🎯 Powiązanie synchronizuje głównego Artystę i, jeśli projekt nie miał daty, uzupełnia ją z premiery.
    • 🧹 Jeśli projekt miał wcześniej inne pół-powiązanie, zostaje ono automatycznie odpięte, żeby zawsze była jedna prawda.
  293. v2.93.97 lipca 2026, 02:00

    Start aplikacji: HUB dla Artysty, Projekty dla Admina 🚀

    • 🎤 Artysta po zalogowaniu / otwarciu apki trafia od razu do HUB-a (/artist) — bez pośredniego landingu /welcome.
    • 🛠️ Admin po zalogowaniu / otwarciu apki trafia od razu do Projekty (/admin), czyli głównego panelu zespołu ID Records.
    • 🔄 Strona /welcome przekierowuje teraz zwykłego użytkownika na /artist; dla admina i impersonacji pozostaje bez zmian.
    • 📱 Działa przy logowaniu e-mail/Google, magic-linku, OAuth callbacku oraz przy otwarciu zainstalowanej PWA.
  294. v2.93.76 lipca 2026, 23:30

    Messenger — widać kto odczytał wiadomość w Crew Chatach 👁

    • 👁 Przy Twojej ostatniej wiadomości w Crew Chacie (Label / Connect / Support) zawsze pojawia się plakietka „X/N" (np. 5/28) — nawet gdy jeszcze nikt nie otworzył.
    • 🟢 Kolor plakietki mówi o dotarciu: neutralny (0), cyjan (część), zielony (wszyscy).
    • 🔍 Hover/tap pokazuje tooltip z listą osób, które odczytały (z godziną) oraz osobno tych, które jeszcze nie — do 30 nazwisk + licznik reszty.
    • 📱 Działa 1:1 w Messengerze desktopowym, pływającym okienku i widoku mobilnym.
  295. v2.93.66 lipca 2026, 22:00

    Social Radar — Top 7 dni bez ucinania na mobile 📱

    • 🧱 Karty rankingu Top 7 dni dostały `min-w-0` na siatce i pojedynczych kartach — nie wypychają już prawej krawędzi na wąskich ekranach.
    • ✍️ Tytuły postów łamią się teraz po literach (`break-words`) więc długie hasztagi/URL-e nie rozjeżdżają layoutu.
  296. v2.93.56 lipca 2026, 15:00

    Umowy — mail „Umowa podpisana" zawsze z linkiem do PDF 📄

    • 📄 `documentId` jest alokowany i zapisywany ZANIM ruszy generacja PDF, więc mail zawsze zawiera stabilny link `/api/public/contract-signed/:id` — nawet gdy Dropbox/font timeoutuje.
    • 🔁 Generacja finalnego PDF ma teraz retry (2 próby) + wpis w log statusów, gdy padnie mimo wszystko.
    • ✉️ W `/admin/umowy/:id` nowy przycisk „Wyślij mail Umowa podpisana ponownie" — regeneruje PDF i rozsyła świeżego maila do artysty + labela.
    • 🛡️ Link public sam regeneruje PDF na żądanie — więc nawet jeśli w bazie brak `contract_signed_pdf_url`, klient dostaje działający PDF.
  297. v2.93.46 lipca 2026, 13:00

    Pulse — feed już nie jest obcięty na mobile 📱

    • 📱 **Feed wydarzeń** w Pulse dostał układ stricte pod 344px: sekcja ma `min-w-0` i nie pozwala kartom wypychać prawej krawędzi.
    • 🎛️ Filtry typu Wszystkie / Milestone / Sukces / Uwaga są teraz poziomo przewijane na telefonie zamiast obcinać widok.
    • 🧩 Akcje w karcie eventu (PressRoom, Embargo, Messenger, Komentarze, Wygeneruj pomysły) układają się w mobilną siatkę i nie wychodzą poza kartę.
  298. v2.93.36 lipca 2026, 12:00

    Mobile polish — wąskie ekrany (344px) 📱

    • 🧱 Globalny guard `overflow-x-hidden` na `<main>` w Artist Shell i App Shell — koniec z bocznym scrollem, kiedy pojedyncza karta pchała layout.
    • 🎵 **Playlist Power** (Streamingi): nagłówek stackuje się w pion na mobile, licznik „top N” nie zjada tytułu.
    • 📡 **Social Radar — świeże alerty**: nagłówek i przycisk „Pełny radar” ładnie się zawijają zamiast obcinać.
    • 🎧 **PressRoom / Edycja singla**: karty materiałów nie mają już wcięcia 36px na telefonie, a player audio (MP3/WAV) skraca okładkę i play na wąskich ekranach — nic nie wychodzi poza ramkę.
    • 🩹 Efekt: Premiery, Pomysły (dialog Kategoria), Pulse (feed Top 7 dni), Streamingi (Playlist Power), Pressroom (edycja singla, playery) i Radar trzymają się w kadrze 344px.
  299. v2.93.25 lipca 2026, 12:00

    Parity kart zadań + statusy pomysłów + Generator dla Wydawcy v3 🏛️

    • 🗂️ **Parity kart zadań** — Playbook wydawcy oraz widok admina „plan artysty” dostały pełen zestaw pól z widoku artysty: `why_today`, `personalization_anchor`, `radar_signal`, `expected_kpi`, `risk_level`, chipsy energii / kosztu / focus_tag oraz cały rozwijany blok „Pokaż jak to zrobić” (how_to, watch_outs, pro_tips, examples, cta_template, success_criteria).
    • ▶️ **Nowa kolejność statusów pomysłów** (widok artysty i admina, w tym pomysły wydawcy dla artysty): ▶ Robię → ○ Do zrobienia → 🛠 Do dopracowania → ✓ Zrobione → ✕ Odrzucam. „W trakcie” znika, jest „Robię”.
    • 🏛️ **Generator „Co ID Records może zrobić dla…” v3** — dużo więcej opcji do zaznaczenia (zainspirowane generatorem pomysłów dla artysty, ale w języku wydawcy):
    • • **Cele rundy** (multi): Zasięg, Radio, Prasa, DSP editorial, Sync, PR crisis-fix, Artist care, Long-term brand, Kampania premierowa, Follow-up po viralu.
    • • **Kanały nacisku** (multi): Radio, TV, Streaming, Prasa online/print, Podcast, Playlisty indie/editorial, Ambasadorzy, Influencerzy, Agencje sync.
    • • **Poziom nacisku** 1–5: Probing → Pitching → Pressing → Pushing → Punching.
    • • **Tone-of-voice** (Formalny / Partnerski / Śmiały), **budget tier** (bez / <1k / 1–5k / 5–20k / >20k), **ryzyko** akceptowalne (Low / Med / High), sufit budżetowy PLN.
    • 🧭 **Grounding**: opcjonalne włączenie sygnałów Pulse/Radar, aktywnych premier oraz realnych kontaktów z bazy (press_portals / journalists / radio_station_stats) — AI zwraca konkretne `outreach_targets` zamiast ogólników.
    • 🎚️ **Slider ilości** pomysłów 3–15 oraz **model picker**: ⚡ Flash (szybko), 🧠 GPT-5 mini (balans), ✨ GPT-5 (max jakość). Limity tokenów dobrane per model.
    • 📇 Karty draftów pokazują teraz kontakty (outreach_targets), talking points, follow-up plan i poziom ryzyka.
  300. v2.93.03 lipca 2026, 12:00

    Playbook 2.0 — Dziś / Zaległe / Pominięte + doładowywanie + guard odprawy 🎯

    • 🗂️ Wydawca — nowy układ zadań: **Dzisiaj**, **Zaległe** (kolapsowalne, z licznikiem), **Odłożone / na później**, **Pominięte**, **Zrobione** — parytet z widokiem artysty (koniec bezużytecznego „7 dni”).
    • ♻️ „Chcę to zrobić” — pominięte zadania jednym kliknięciem wracają na dziś (`day=today`, `status='todo'`).
    • 📅 „Na jutro” przestawia `day` (nie tylko snooze), więc karta znika z „Dzisiaj” i pojawia się jutro — zgodnie ze specyfikacją.
    • 🧠 Generator wydawcy jest teraz **non-destrukcyjny + doładowuje**: dostaje listę już istniejących dzisiejszych tytułów i nie duplikuje. Przycisk sam się przełącza między *„Zapisz + wygeneruj plan na dziś”* i *„Zapisz + doładuj zadania na dziś”*.
    • 🚧 **Guard odprawy**: żółty banner „Brak briefu wydawcy na dziś” + serwerowa blokada (`Najpierw zrób check-in dnia`), dopóki nie zapiszesz `label_daily_checkins`.
    • 🔔 Powiadomienie „daily_checkin_missing” dla wydawcy — idempotentne per user/day, wpina się do już istniejącego modułu **Briefy** w dzwoneczku.
  301. v2.92.22 lipca 2026, 14:00

    Workflow fix + Workflow dla Pomysłów 💡

    • 🐛 Fix: Playbook › Workflow pokazywał liczniki, ale lista była pusta — zapytanie sięgało po nieistniejącą kolumnę `project_id` na `artist_playbook_tasks`. Zadania znów się listują.
    • 💡 Nowy przełącznik „Workflow” w `/admin/ideas` (obok Lista / Kalendarz) — liczniki proponowane / zaakceptowane / zrobione / do dopracowania / odrzucone / ⭐ rekomendowane / eksportowane do zadań.
    • 📊 Rozwijana tabelka per artysta z ostatnich 30 dni: statusy, ⭐, eksporty, średnia ocena artysty, filtr „tylko ten”.
    • 🔗 Pod tabelką normalna `IdeasList` z pełnym zestawem akcji admina — więc wszystko robisz w jednym miejscu.
  302. v2.92.12 lipca 2026, 12:00

    Workflow artystów 🎯 — nowa zakładka Playbooka do pilnowania kto co robi

    • 🧭 Nowa zakładka „Workflow” obok Wydawcy / Artystów / Frekwencji w `/admin/label-playbook` — jedno miejsce, żeby zobaczyć wszystkie zadania artystów z ostatnich 30 dni.
    • 📊 Kafelki liczników: wszystkie / zrobione / w toku / nowe / odłożone / pominięte / odrzucone + rozwijana tabelka per artysta (średnia ocena admina, ostatnia aktywność, filtr „tylko ten”).
    • 🎛️ Filtry: chipsy statusu, „tylko rekomendowane przez wydawcę”, „tylko z odrzuceniami artysty” (feedback 👎), wyszukiwarka po tytule / artyście / projekcie.
    • 🛠️ Karta zadania pokazuje powód odrzucenia + feedback artysty i ma pełen `PlaybookWorkflowActions` po stronie admina: ⭐ rekomenduj, 📤 wrzuć w Pulse, 💬 wyślij w Messengera, ocena 1–5 (osobna od oceny artysty), komentarze.
    • 🔗 Z listy pickera artystów można nadal wejść w indywidualny plan dnia; z Workflow każdy zadaniowy chip prowadzi do `/admin/artysci/{id}/plan-dnia`.
  303. v2.92.02 lipca 2026, 10:00

    Brief Klipu 🎬 — pełny brief realizacji teledysku z voice-briefem i AI

    • 🎬 Nowy moduł „Brief Klipu (teledysku)” pojawia się w karcie premiery gdy admin oznaczy w Produkcji, że projekt ma teledysk (production_progress.has_video).
    • 📝 Wszystkie sekcje 1:1 z formularzem zlecenia teledysku ID Records: typ klipu, wizualna narracja z sugestiami, słowa kluczowe (chipsy + własne), lokalizacje (checkboxy typów + konkretne miejscówki), obsada, wsparcie planu (makijaż, dron, statyści, VFX), animacje/VFX (4 poziomy z widełkami cenowymi), budżet (5 progów), materiały (Dropbox).
    • 🎙️ Voice brief klipu — artysta (albo admin w jego imieniu) nagrywa audio lub wideo (max 90s) o wizji teledysku; Gemini transkrybuje i streszcza; artysta akceptuje przed wysłaniem do wydawcy i producenta.
    • 🧠 AI narracja briefu klipu — jednym klikiem wydawca generuje spójny opis do zaakceptowania; zaakceptowana wersja + voice brief lądują w PDF-ie dla producenta klipu.
    • 🖨️ Nowy generator „Wygeneruj brief dla producenta klipu” — pełny JSON (specs, wizja, scenariusz, ekipa, lokacje, do/dont, budżet, timeline) trafia do panelu AI premiery, gotowy do PDF.
    • 💾 Autozapis co ~1.2s do kolumny `release_submissions.clip_brief` (jsonb) — chip statusu w headerze.
  304. v2.91.41 lipca 2026, 19:00

    Dzwoneczek 3.0 — moduł, typ, projekt i ikony 🔔🎯

    • 🧭 Każde powiadomienie ma teraz mikrochip „MODUŁ · typ” (małą literą) w kolorze modułu — od razu wiadomo skąd wpada (Produkcja, Radio, Pomysły, Pressroom, Zadania…).
    • 🎨 Ikony spójne dla całej aplikacji — koniec z szarym dzwoneczkiem dla wszystkiego; każdy typ ma własną ikonę i ton.
    • 🎬 Kontekst projektu: pod tytułem pojawia się plakietka „● tytuł projektu · artysta” (jeśli notyfikacja ma project_id).
    • 📱 Wersja mobilna dzwoneczka trzyma nowy układ (chip + tytuł + plakietka projektu + treść) bez horyzontalnego scrolla.
    • 🎙️ Brief produkcyjny: nagrywarka „Voice brief” jest widoczna też dla admina — wydawca może nagrać w imieniu artysty; nagranie leci do jego akceptacji przed wysłaniem do producenta.
  305. v2.91.31 lipca 2026, 17:30

    Dzwoneczek 2.1 — każde powiadomienie klika, tekst nie ucięty 🔔

    • 🔗 Powiadomienia w headerze honorują `payload.url` z queue — produkcja (notatki, tekst, sign-off, assety), pomysły (nowy / rekomendowany / odrzucony / oceniony / dopracowanie), wywiady i briefy artystów wreszcie prowadzą do źródła.
    • 🛠️ Ścieżki artystowskie w powiadomieniach adminowych są automatycznie mapowane na `/admin/...` (releases, inbox, tasks, ideas, pulse).
    • 📖 Tytuł powiadomienia zawija się (koniec z „Artysta zaktualizował tekst…”), treść pokazuje się w całości z zachowaniem łamania linii.
  306. v2.91.21 lipca 2026, 15:00

    Voice + Video Drop — nagraj reel odliczania w „Powiedz, co czujesz” 🎥

    • 🎥 W panelu Gotowość premiery → „Powiedz, co czujesz” obok audio jest teraz tryb WIDEO (pionowy 9:16, max 30s, front/tył kamery).
    • ☁️ Wszystkie nowe nagrania (audio i wideo) idą prosto na Dropbox — zero kredytów Lovable Cloud RUN za storage.
    • ▶️ W dzienniku rozpoznajemy rodzaj mediów — wideo dostaje plakietkę „🎥 video” i renderuje się w odtwarzaczu pionowym, audio jak dotąd.
    • 🗑️ Usunięcie dropu kasuje też plik z Dropbox (best-effort), stare nagrania z Supabase Storage nadal działają bez migracji.
  307. v2.91.01 lipca 2026, 09:00

    Playbook 3.0 — workflow, komentarze, oceny, push do Pulse/Messenger 🧩

    • 🧩 Karta zadania (artysta + admin) ma pełny workflow: Robię / Zrobione / Później (z powodem) / Pomiń / Odrzuć (powód wymagany — algorytm się uczy).
    • ⭐ Ocena 1–5 dla artysty i osobno dla admina — będzie zasilać preferencje generatora.
    • 💬 Wątek komentarzy pod każdym zadaniem — artysta ↔ wydawca rozmawiają w jednym miejscu.
    • 📣 Admin może oznaczyć zadanie jako REKOMENDOWANE, wrzucić je w Pulse projektu (artyście) lub posłać w Messenger 1:1 — jednym klikiem.
    • 🎚️ Generator Planu Dnia artysty ma per-run przełącznik Artysta / Mix / Influencer — nadpisuje work_mode z Profilu Twórcy tylko dla tej rundy.
    • 🧠 Generator Pomysłów dostał ten sam override (workModeOverride) w prompt — wymusza styl pomysłów (muzyka vs. lifestyle/sociale) ważniejszy od profilu.
    • 📥 Eksport zadania (artysta i admin) generuje od razu checklistę z how_to + success_criteria + assets_needed. Przycisk dla artysty: „Eksport → Zadania”.
    • 🛰️ Naprawione „Brak zaplanowanych/aktywnych kanałów” dla projektów spoza pierwszej setki — channels są teraz pobierane w stronicowanych paczkach po 1000.
  308. v2.90.130 czerwca 2026, 13:30

    Brief dnia Wydawcy 2.1 — koniec duplikatu, więcej kontekstu 🎛️

    • 🧹 Usunięty duplikat: zostaje tylko Stan kasy (Pusto / Ostrożnie / Luźno / Inwestujemy) — pole Budżet zniknęło z briefu.
    • 🎯 Nowe pola w briefie: Intencja dnia (dowieźć / budować zasięg / konwertować / posprzątać / scouting / reset), Energia zespołu, Czas zespołu dziś, Tryb pracy (solo / team / z artystą / outsource), Stan rostera.
    • 🚫 No-go dziś — multi-wybór typów zadań, których AI nie ma proponować (cold-maile, pitch radio, długie calle, social posting, wydatki, kreatywka, negocjacje).
    • 🎙️ Voice-brief — dyktujesz brief głosem, AI transkrybuje i wkleja podsumowanie do promptu generatora.
  309. v2.89.330 czerwca 2026, 11:20

    Pomysły 3.3 — GPT-5 stabilniej + więcej formatów 🎛️

    • 🤖 Generator GPT-5 ma krótsze, stabilniejsze paczki PRO i nie powinien już mielić w nieskończoność ani kończyć pustą odpowiedzią JSON.
    • 🧯 Obsłużone puste odpowiedzi GPT-5 i warianty JSON typu array/drafts/items, żeby błąd parsera nie blokował pracy.
    • 🎛️ Dodane nowe typy działań i formatów pod markę osobistą, viral poza singlem, lifestyle/pasje, hot-take, rytuały społeczności, founder/biznes i cross-niche.
    • 🎙️ Pola opisu nowych kontekstów w generatorze można teraz nagrać głosem — AI transkrybuje i streszcza do promptu.
  310. v2.89.230 czerwca 2026, 10:58

    Pomysły 3.2 — GPT-5 i zapis nowych kontekstów naprawione 🛠️

    • 🤖 Generator pomysłów może znów używać GPT-5 — poprawione parametry wysyłane do modelu, które wcześniej dawały błąd 400.
    • 💾 Zapis pomysłów obsługuje już wszystkie nowe zakresy kontekstu z Pomysłów 3.1: marka osobista, viral poza singlem, lifestyle/pasja, hot-take, rytuał społeczności, founder/biznes i cross-niche.
    • 🧯 Błąd `ideas_context_scope_chk` przy zapisywaniu propozycji z nowych presetów nie powinien już blokować pracy w dialogu.
  311. v2.89.11 lipca 2026, 12:00

    Pomysły 3.1 — generator wychodzi poza singiel 🧵🪪

    • 🪪 7 nowych zakresów kontekstu w generatorze: Marka osobista, Viral poza singlem, Lifestyle/pasja, Opinia/hot-take, Rytuał społeczności, Founder/biznes, Kolab off-niche.
    • 🧵 Viral off-topic expand — gdy wiralowy post NIE dotyczy utworu, AI buduje wokół niego format/serię/submarkę zamiast wciskać singla na siłę.
    • 🎯 8 nowych celów (Pogłębianie marki, Autorytet w pasji, Głos/opinia, Rytuał społeczności, Founder, Cross-niche, Evergreen, Kapitalizacja wirala off-topic) + 4 nowe presety (Marka osobista, Viral poza singlem, Founder/kulisy, Cross-niche kolaby).
    • 🤝 Sekcja chipów w generatorze podzielona na dwa rzędy: „singiel/projekt” i „poza singlem” — łatwiej trafić palcem na 344 px.
    • 💬 Pole kontekstu (viralNote) działa teraz dla wszystkich nowych zakresów z dedykowanymi placeholderami (jaka opinia, która pasja, z kim kolab itd.).
  312. v2.89.01 lipca 2026, 09:30

    Pomysły 3.0 — sortowanie, koszt/czas/trudność, viral follow-up, reanimacja, listener→fan 💡

    • 🔀 Sortowanie listy pomysłów: 🆕 najnowsze · ⭐ najlepsze (jakość AI 1–10) · ⚡ najszybsze (prep_minutes) · 💸 najtańsze (PLN) · 🟢 najłatwiejsze · 🔴 najtrudniejsze.
    • 📏 Każdy pomysł zyskuje plakietki: czas przygotowania, koszt PLN, trudność (1–5, kolor zielony→czerwony), jakość 1–10 wg oceny AI — tak jak w Playbooku.
    • 🎨 Twarda zasada anty-generyczności w prompcie: AI musi szukać nieoczywistych połączeń, dziwnych miejsc, kolaboracji spoza muzyki — koniec z generykami typu 'nagraj reel o premierze'.
    • 📺 Kontakt / media rozszerzony: kontakt-tv, kontakt-portal, kontakt-podcaster — generator sugeruje KONKRETNE outlety (np. Dzień Dobry TVN, muzoteka.pl, Imponderabilia) z uzasadnieniem dlaczego pasują do Ciebie.
    • 🌀 Viral follow-up: nowy cel + kategoria + zakres kontekstu — wpisz co Ci poszło wiralem, AI ułoży ciąg dalszy (part 2, behind-the-scenes, sequel, kolaboracja).
    • 🫀 Reanimacja singla: zakres + cele radio/streaming gaśnie — pomysły na drugie życie (acoustic, remix, sezonowy recykling, sync, dokument 5-min).
    • 📣 Listener → Fan: cel 'niby słuchacie, gdzie jesteście?' — bezpośrednie komunikaty, Q&A, DM-y, mini-gifty dla pierwszych odzewów.
    • 🧠 Nowy panel 'Zakres kontekstu' w generatorze: single / broader / viral_followup / reanimacja / listener_to_fan / persona_general — z polem viralNote do opisania szerszego tematu.
  313. v2.88.2430 czerwca 2026, 23:58

    Numeracja poziomów nacisku 1–5 + nowy kolor Probingu 🎯

    • 🔢 Poziomy nacisku przenumerowane: Probing = 1, Pitching = 2, Pressing = 3, Pushing = 4, Punching = 5 — spójnie w plakietkach, paskach i ściągawkach.
    • 🎨 Probing dostał odrębny kolor (różowy magenta) zamiast cyjanu — nie myli się już z Pitchingiem na paskach i kartach kanałów.
  314. v2.88.2330 czerwca 2026, 23:55

    Probing w plakietkach kanału w Feedbackach 🎯

    • 🎚️ Admin ma teraz w rozwiniętej karcie kanału (Feedbacki) pełny picker Siły Nacisku: Brak · Probing · Pitching · Pressing · Pushing · Punching — bez konieczności wchodzenia do edytora projektu.
    • ⚙️ Nowa funkcja serwerowa `setChannelPressure` aktualizuje `pressure_raw` z auto-mapowaniem na poziom (1=Probing, 2=Pitching, 5=Pressing, 8=Pushing, 12=Punching).
  315. v2.88.2230 czerwca 2026, 23:30

    Probing widoczny też w paskach Siły Nacisku 🎯

    • 📊 Pasek 'Siła nacisku' w module Feedbacki i w panelu artysty pokazuje teraz 6 segmentów (z dodanym Probing 1) zamiast 5.
    • 🧩 Mini-bar 'Stan pressingu' w Projektach (ProjectHero) także uwzględnia Probing — koniec sytuacji, w której kanały ze stopniem 1 znikały z zestawienia.
    • 🎚️ Progi przeliczenia spójne z resztą systemu: 1 = Probing, 2–3 = Pitching, 4–6 = Pressing, 7–9 = Pushing, 10+ = Punching.
  316. v2.88.2130 czerwca 2026, 22:00

    Nacisk 2.0 — nowy poziom Probing między Brak a Pitching ⚡

    • 🆕 Dodany 6. status nacisku: Probing — używamy go, gdy rozważamy / sprawdzamy możliwości wsparcia dla kanału, zanim ruszymy z faktycznym pitchingiem.
    • 🎛️ Picker w edytorze projektów ma teraz 6 kafelków w jednym rzędzie: — · Prb · Pit · Prs · Psh · Pun (układ wytrzymuje desktop i mobile, nic się nie rozjeżdża).
    • 📊 Nowa skala stopni: 0 = brak, 1 = probing, 2–3 = pitching, 4–6 = pressing, 7–9 = pushing, 10+ = punching. Sekcja statystyk kanałów na stronie singla i ściągawka 'Skala nacisku ID Records' też pokazują wszystkie 6 poziomów.
    • 🎨 Probing dostał odrębny cyjanowy kolor — odróżnia się od niebieskiego pitchingu i nie ginie w siatce.
  317. v2.88.1830 czerwca 2026, 03:30

    Publikacje 4.6 — przycisk Przelicz reakcje maili przestał wisieć ⏱️

    • 🛠️ Backfill newsletter engagement był sekwencyjny dla 1000 rekordów i zawsze przekraczał limit czasu workera (stąd kółko w nieskończoność i brak zapisu). Teraz: paczki po 10 równolegle, limit 150 najnowszych rekordów, twardy bezpiecznik 22 s.
    • 📊 Toast pokazuje konkrety: przetworzono X/Y rekordów, ile reakcji wpadło do Feedbacku, ile było bez kontekstu (newsletter bez powiązanego singla/issue) oraz pierwszy błąd jeśli się pojawił — od razu wiadomo, czemu coś nie zbridgowało.
    • 🔁 Dla MYK / Antka Smykiewicza newsletter ma poprawnie powiązane issue z singlami, więc po kliknięciu reakcje powinny pojawić się w Feedbacku artysty i edytorze kanałów (sekcja 'Feedback / działania').
  318. v2.88.1730 czerwca 2026, 03:00

    Publikacje 4.5 — Waga × Current = Pkt, kategoria publikacji, podgląd punktów u Artysty 📰

    • 🧮 Edytor supportu w 'Do weryfikacji' rozdzielony na trzy pola: Waga kanału (0–100), Skala max (np. 5 / 10 / 20) i Current support (faktyczny mnożnik). Pkt = Waga × Current.
    • 🔢 Wszystkie pola przyjmują ułamki po przecinku (np. Current = 2,5). Koniec z 'invalid integer'.
    • 🏷️ Dodany select kategorii publikacji w edytorze: recenzja, wywiad, news, feature, premiera, playlista, inne.
    • 👀 Artysta w /publikacje widzi przy każdej publikacji liczbę punktów (np. 21 pkt) obok kategorii i gwiazdek (skalowanych do 5).
    • 🔁 Po zapisie support trafia do Feedbacku z prawidłową wagą kanału (zamiast wymuszanej wcześniej wagi 1), a istniejący kanał dostaje nadpisaną wagę, gdy admin ją zmienił.
  319. v2.88.1530 czerwca 2026, 01:20

    Skaner publikacji 3.4 — dociąganie ważnych portali bez marnowania kredytów 🎯

    • 🔎 Oprócz 2 zapytań głównych skaner robi teraz tylko kilka targeted recall queries dla najważniejszych / pinned portali — m.in. Muzotakt i Czarno na Czarnym dla MYK.
    • 💸 Nie wracamy do kosztownego floodu po 30–190 portalach: limit targeted queries jest mały i priorytetyzowany po whiteliście, engagementach, wadze i pinned domenach.
    • 🎯 Pinned portale mają łagodniejszy relevance gate (jak whitelist/engagement), więc jeśli Google w snippecie pokaże tylko artystę albo tylko tytuł, publikacja nadal trafi do kolejki weryfikacji.
  320. v2.88.1430 czerwca 2026, 01:00

    Skaner publikacji 3.3 — szybciej, taniej, trafniej ⚡🎯

    • ⚡ 2 zapytania na projekt zamiast ~37 (poprzednio: 7 wariantów PR + do 30 per-portal). Skan idzie kilkukrotnie szybciej i pożera ~10× mniej kredytów Serpera.
    • 🎯 Relevance gate przed zapisem: hit MUSI zawierać tokeny artysty i tytułu w title/snippet. Koniec z 'La La Land' (film), tekstami innych wykonawców i przypadkowymi domenami w kolejce.
    • 🤝 Portale z whitelisty / z engagementem mailowym mają ulgowy filtr (wystarczy artysta LUB tytuł) — nie tracimy publikacji z 'naszych' redakcji.
    • 🛑 Stoplista poszerzona o IMDb, Filmweb, Rotten Tomatoes, AZLyrics, Musixmatch, Last.fm, Shazam.
  321. v2.88.1130 czerwca 2026, 00:30

    Skaner publikacji 3.0 — SAVE-ALL + przypisywanie portalu w kolejce 🎯🔌

    • 🔭 Skaner ciągnie teraz do 40 hitów per projekt (Serper × 2 strony × 20 wyników) zamiast 10. Antek/Myk/MieloW łapią Polska Płyta, Muzotekę, KFM.net.pl, Plejadę itd. od pierwszego klika.
    • 💾 SAVE-ALL: zapisujemy KAŻDY hit pasujący do `"artysta" "tytuł"`, nawet jeśli domena nie jest w whiteliście. Trafia do `Do weryfikacji` z portal_id=null — Ty decydujesz: przypisz / utwórz nowy portal / odrzuć.
    • 🛑 Stoplista: Spotify, YouTube, FB, IG, TikTok, Apple, Deezer, Wikipedia, Allegro itp. — to nie publikacje, więc nie zaśmiecają kolejki.
    • 🔌 Każda karta `Do weryfikacji` ma nowy rząd `Portal:` z autocomplete (po domenie/nazwie) + przycisk `Nowy portal` (domena prefilled, skala 1–5). Po przypisaniu publikacja od razu dostaje support_scale + punkty, a nowy portal ląduje w whiteliście na przyszłe skany.
    • 🔁 Backfill: jeśli ten sam URL jest już w bazie z portal_id=null, kolejny skan dopisuje portal i punkty, kiedy domena zostanie dodana do whitelisty.
  322. v2.88.1029 czerwca 2026, 23:30

    Skaner publikacji — krytyczny fix `Invalid time value` 🩹

    • 🐛 Dlatego skaner pokazywał `Nowych: 0` mimo 17 udanych zapytań: Serper dla świeżych artykułów zwraca daty jako `5 dni temu` / `Yesterday`, `new Date(...)` na tym wybuchało (`Invalid time value`), a wyjątek leciał w górę i przerywał zapis publikacji dla całego projektu. Teraz parsujemy tylko prawdziwe daty — relatywne ignorujemy.
    • 🔁 Wyzerowane znaczniki `last_press_scan_at` dla wszystkich 20 aktywnych projektów + log skanów z ostatnich 6h. Klikasz Skanuj projekty i przelatuje od nowa — Antek Smykiewicz / Noc, MieloW / Znaki itp. powinny w końcu zassać 4fun.tv, netfan.pl, plejada.pl etc.
    • 🔢 Nagłówek `/admin/publikacje`: licznik `Whitelist: 0` to był głupi bug (komponent ładował portale dopiero po wejściu w zakładkę Portale). Teraz pokazuje 31 — liczbę portali z `always_scan`.
  323. v2.88.929 czerwca 2026, 23:00

    Skaner publikacji 2.0 — artysta + tytuł singla, progress bar, klik z newslettera 0.25 pkt 🛰️🧹

    • 🧹 Wywaliliśmy 161 błędnych dopasowań z poprzedniej tury (skan szukał tylko po nazwie artysty → łapał wszystko, nawet stare artykuły bez związku z premierą). Punktacja wraca do stanu sprzed feralnego skanu.
    • 🎯 Skaner pyta teraz Serpera o `"<artysta>" "<tytuł singla>"` per projekt (z fallbackiem bez cudzysłowów). Dopasowanie po domenie do whitelisty + portali z engagementu — żadne lewe linki nie wchodzą.
    • ⏱️ Koniec wiszącego spinnera — skan idzie batchami po 3 projekty, z paskiem postępu, live listą ostatnio sprawdzonych projektów i guzikiem Anuluj. Możesz w każdej chwili zatrzymać.
    • 📊 Rotacja: skaner wybiera najpierw projekty, które jeszcze nigdy nie były skanowane (lub najdawniej). Widać licznik `X/Y` aktywnych projektów + ile zostało nigdy nieskanowanych. Cron też idzie po 10 najstarszych dziennie.
    • ✉️ Klik z newslettera o stronie singla (bez publikacji) = lekki wpis +0.25 pkt (skala 5) / +1 pkt (skala 10). Widoczne w sekcji projektu jako oczekujące — gdy pojawi się prawdziwa publikacja, mergujemy.
  324. v2.88.812 lipca 2026, 23:00

    Skaner Publikacji — naprawiony (Serper free) + mobile fix nagłówka karty 🛠️

    • 🐛 21 błędów skanera = Serper free plan zwracał 400 'Query pattern not allowed for free accounts' bo wysyłaliśmy `"Artysta" (site:a OR site:b OR ... 31 portali)`. Free pozwala max na jeden `site:` w query.
    • ✅ Fix: jedziemy po jednym portalu na zapytanie + cap top-15 portali (po wadze) na artystę. Deep scan ignoruje cap. Większy koszt API per skan, ale skaner faktycznie zwraca dane.
    • 📱 Nagłówek karty projektu w /admin/publikacje → Projekty — paski statusów (OK / Do wer. / Pkt) wcześniej wypychały tytuł poza ekran na 344px (Fold). Teraz w grid + osobnym pasku scrollowalnym pod tytułem.
  325. v2.88.712 lipca 2026, 22:00

    Publikacje 4.0 — skaner faktycznie skanuje + widok per projekt + mobile fix 🛰️📰

    • 🐛 KRYTYCZNY FIX SKANERA: scanAllActiveArtists brało projects.artist (tekst, np. MYK, Antek Smykiewicz) i pchało jako UUID do artists.id — wszystkie zapytania cicho zwracały 0 i marker nie znaleziono. Teraz idzie przez project_artists.artist_id (prawdziwy FK). Dlatego widziałeś 0 publikacji mimo, że media o tych artystach piszą.
    • 📰 Per-projekt widok publikacji (nowa zakładka Projekty w /admin/publikacje + /artist/publikacje) — wzór TV: karta projektu z paskami supportu portali, statusami (zweryfikowane / pending), linkiem do najnowszej publikacji + pulą skanu (whitelist i reagujące). Tabsy projektów scrollowalne na mobile, search po projekcie/artyście.
    • 📱 Mobile w końcu działa — /admin/publikacje (lista portali) i /admin/channels (edytor kanałów): na małych ekranach tabela schowana, w zamian responsywne karty z details-rozwijaką do pełnej edycji. Bez poziomego scrolla.
    • ✉️ EmailLabs hook — normalizacja domeny: redakcja@4funtv.pl matchuje się teraz z portalem 4fun.tv (rdzeń 4funtv ~= 4funtv). Wcześniej tylko exact match → engagement nie był liczony, portal odpadał z puli skanu. Dorzucony też match po parent-domain (mail.onet.pl → onet.pl).
    • 🛰️ Whitelist rozszerzona: 4fun.tv, netfan.pl, muno.pl, plejada.pl, pomponik.pl, jastrzabpost.pl, kozaczek.pl, party.pl, glamour.pl, eska.pl, antyradio.pl, rmf24.pl, polskieradio.pl, radio357.pl, zetnews.pl, noizz.pl, natemat.pl + auto-whitelist wszystkich portali z channel_master.default_weight >= 15 (Tier S/A).
    • 💥 Deep scan (/admin/publikacje → Portale → przycisk Deep obok 🛰️ Skan): obchodzi whitelistę, idzie po WSZYSTKICH active=true portalach (~190+). Drogie, ale dobre na backfill / weryfikację, że nic nam nie umyka.
    • 🔍 Retry skanera bez cudzysłowu — jeśli query z bare-name nie zwraca hitów dla wersji w cudzysłowach, retry bez nich (recall > precision). Dzięki temu łapiemy też wzmianki ze znakami specjalnymi / odmianami nazwiska.
    • 🛠 Pod spodem: nowy listPressProjects (server fn) zwracający pełną macierz projekt x portal z punktacją + komponent PressProjectsView. Pozostałe gałęzie z planu (Publikacje 4.0 — TV+++) wracają w kolejnych iteracjach.
  326. v2.88.612 lipca 2026, 19:00

    Radar 🛰️ w głównym pasku menu (admin + artysta)

    • 🛰️ Radar wraca jako pełnoprawna pozycja w górnym pasku nawigacji — bez chowania w dropdownie Media. Zarówno w panelu admina, jak i artysty.
  327. v2.88.512 lipca 2026, 18:00

    Playbook Wydawcy — fix hotlisty: aktywne projekty znów się ładują 🛠️

    • 🛠 **Naprawiony filtr enum** w `listProjectHotlist` i generatorze zadań. Wartości `aktywny` / `planowane` nie istnieją w enumie `project_status` (są tylko `active` / `archive`) — całe zapytanie `.or()` cicho zwracało 0 wierszy, dlatego wyskakiwało „Brak aktywnych projektów w oknie ±90 dni” mimo że projekty były aktywne.
    • ✅ Teraz hotlista i generator AI biorą projekty ze `status='active'` LUB z premierą w oknie ±90 dni — zgodnie z tym, co już ustawione jako priorytety dnia.
  328. v2.88.412 lipca 2026, 14:00

    TV 2.2 — zarządzasz listą kanałów: dodaj / przenieś / usuń z sekcji + logo 🎛️

    • 🎛 **Zarządzaj kanałami TV** — w `/admin/tv` w prawym górnym rogu nowy przycisk. Otwiera panel zarządzania ze wszystkimi kanałami TV z `channel_master` (`medium='tv'` lub te już z klasyfikacją TV) pogrupowanymi w 4 sekcje + osobny bucket **Nieprzypisane (kandydaci do dodania)**.
    • ➕ **Dodaj kanał do sekcji** — przy każdym kanale jest select „— sekcja —”. Wybierasz Śniadaniówki / Muzyczne / Ogólne / Inne i kanał od razu pojawia się w widoku TV (per projekt). To samo działa dla przenoszenia między sekcjami (np. wywal Polsat z „Inne TV” do „Ogólne TV”).
    • 🗑 **Usuń z TV** — czerwony przycisk kosza ustawia `tv_classification = NULL` (kanał znika z widoku TV, ale zostaje w bazie i czeka w sekcji „Nieprzypisane” — możesz go w każdej chwili przywrócić).
    • 🖼 **Logo per kanał** — kliknięcie w logo otwiera mały modal z polem URL (PNG/JPG/SVG). Puste pole = wyczyść (zostaje fallback z `logo.dev` / inicjał). Logo trafia do `channel_master.logo_url`, więc świeci się też wszędzie indziej (Pulse, edytor kanałów, Publikacje).
    • 🔎 **Szukajka w panelu** filtruje listę po nazwie, licznik X/Y po prawej. Każdy wiersz pokazuje wagę (W5/W4…) i ile razy kanał jest używany w projektach (`channels.channel_master_id`).
    • 🧱 Pod spodem: w `tv-overview.functions.ts` doszły 3 admin-only server functions: `listTvManageableChannels`, `setTvChannelClassification` (`null` = usuń z TV), `setTvChannelLogo`. Plus `ensureAdmin` helper. Nowy komponent `TvChannelsManagerDialog.tsx`. Automatyczna invalidacja `tv-admin-overview` / `tv-artist-overview` / `channel-logos` po każdej zmianie.
  329. v2.88.312 lipca 2026, 10:00

    TV 2.1 — zakładki projektów, szukajka, statusy „rozmawiamy / odmowa” i sugestia z edytora kanałów 📺

    • 🗂 **Jeden projekt = jedna karta** (jak w Feedbackach). Wyrzucony `TvHero` (puste sumowania „Aktywnych: 20, Video 0/20, brak supportu jeszcze”) i `TvSpotlightStrip` „śniadaniówki must-have / TV muzyczne kluczowe” z górnej części — to było dużo pikseli i zero akcji. Teraz góra to: tytuł + szukajka + chip-strip projektów z miniaturką i `reach %`. Mobilnie dropdown.
    • 🔎 **Szukajka** filtruje listę projektów (artysta + tytuł). Domyślnie wybrany jest projekt z najwyższym `reach %`.
    • 🆕 **Nowe statusy kanału** w pickerze: **Odmowa** (rose), **Rozmawiamy** (violet), **Staramy się o support** (cyan), **Planujemy się odezwać** (zinc). Razem ze starymi (Brak · Bez reakcji · Rozważa · Pobrane · Planowane · Gra) daje pełen pipeline od „nic” do „gra”. Wagi do `supportScore` policzone delikatnie (0.1–0.35), żeby miękkie rozmowy nie pompowały reach %.
    • 💡 **Sugestia z edytora kanałów** — pod każdym kanałem TV ze statusem „Brak” pojawia się mała plakietka „💡 Sugestia z edytora: *Pobrane · 2/10*” z przyciskiem **Zastosuj**. Mapowanie z `channels.current_support` (max 10): ≥4 → Gra, ≥3 → Planowane, ≥2 → Pobrane, ≥0.5 → Rozważa, <0.5 → Bez reakcji. Dzięki temu nie musisz dwa razy tego samego klikać — jeśli kanał już ma support w edytorze, jednym kliknięciem przerzucasz go na widok TV.
    • 🧱 Pod spodem: `TV_STATUS_LABELS` rozszerzone o `refused / planning_outreach / talking / seeking_support`, `tvStatusOptionsFor()` zwraca teraz pełny pipeline + branżowe końcówki (śniadaniówki bez „pobrane”). `loadOverview` w `tv-overview.functions.ts` dociąga `channels (project_id, channel_master_id, current_support, scale_max)` i wypełnia `suggestedStatus` per para projekt+kanał. `TvStatusPicker` dostał kolory `cyan` i `rose`.
  330. v2.88.211 lipca 2026, 16:00

    Publikacje — import portali łapie wszystkie portale 📰

    • 📥 **Import z Katalogu Kanałów** bierze teraz każdy kanał z `medium=portal` LUB z typem aktywności = portal (dotąd kanał z `medium=tv` + activity „portal” był pomijany — przez to np. `4FUN.TV ONLINE` nie pojawiał się w sekcji Portale w Publikacjach).
    • 🌐 **Lepsze wykrywanie domeny z nazwy** — parser radzi sobie z nazwami ze spacją typu „4FUN.TV ONLINE” → `4fun.tv`, „KFN.net.pl coś tam” → `kfn.net.pl`. Wcześniej takie wpisy bez `website` były odrzucane.
    • 🛠️ Dzięki temu możesz w edytorze kanałów jednym kliknięciem oznaczyć kanał jako portal, kliknąć „Importuj z Katalogu Kanałów” w Publikacjach i mieć go w whitelist do skanu Serperem.
  331. v2.88.111 lipca 2026, 14:30

    Profil artysty w premierze — komplet pól 🧾

    • 🏢 **Firma w snapshocie** — Nazwa firmy, NIP, REGON i Adres firmy są teraz widoczne na karcie „Tak Cię widzimy (Twój profil)”. Wcześniej widać było tylko „Forma prawna: company”, reszta danych spółki znikała z podglądu, mimo że była zapisana w profilu.
    • 🧬 **Persona Twórcy w snapshocie** — dorzucony blok z `artist_personas`: archetyp główny + wspierający, tryb pracy (artist/influencer/mix), pasje, NO-GO, wartości fundamentalne. Wszystkie dane idą do AI (`buildArtistAiContext`), więc warto je widzieć w jednym miejscu.
    • ✅ **Status persony w nagłówku** — od razu widać czy persona jest „wypełniona ✓”, czy „X/4 kroków” (przy pierwszym razie link `uzupełnij raz` do `/artist/persona`). Persona to akcja jednorazowa do ew. korekty — brief dnia nadal wypełniamy codziennie.
    • 🔄 **Forma prawna po polsku** — w snapshocie „Firma” / „Osoba prywatna” zamiast surowego `company` / `person`.
  332. v2.88.011 lipca 2026, 10:00

    TV 2.0 — widok per projekt + pełny katalog stacji 📺

    • 📺 **Pełny katalog TV** — dodane: Eska TV, Eska TV Extra, 4fun.tv, 4fun Dance, MusicBox Polska, MusicBox Dance, Polsat Music, TVP Muzyka, Stars.TV (muzyczne kluczowe) + Polo TV, Disco Polo Music, Nuta.tv, VOX Music, Power TV, Tylko Muzyka. 15× TVP3 regionalne. Programy promocyjne (Teleexpress, Lista Przebojów Trójki). Śniadaniówki: DDTVN, PnŚ, HTP + wersje wakacyjne, Republika Rano, Silver TV Poranek, Poranek TVN7.
    • 🎯 **Widok PER PROJEKT** — każdy projekt jako pełna karta z grid kanałów per klasyfikacja zamiast globalnych liczników. Wzorowane na zakładce Feedbacki.
    • 🟢 **Dropdown statusu z paskiem wsparcia** — brak / bez reakcji / zastanawiają się / pobrane / planowane (zaproszenie) / gra. Dla TV muzycznych dodatkowo częstotliwość (rzadko / regularnie / heavy rotation). Pasek X/Y wspiera pod każdą kategorią. Artysta może sam aktualizować statusy dla swoich projektów.
    • 🎬 **Edytor video w karcie** — YT link + Dropbox + checklist (Master 16:9, Pionowe 9:16, Lyrics video, Napisy, Miniatura). Sticky alert gdy brak teledysku.
    • 📊 **% TV reach** — duży wskaźnik per projekt (ważony waga kanału × siła statusu × częstotliwość) w prawym górnym rogu karty. Sortowanie listy po reach.
    • 🔮 **Mini-hero 3-kafelki** — aktywne projekty / status video (z/bez) / najlepiej wspierany projekt z procentem. Bez wcześniejszych globalnych liczników.
    • 🧊 **Zamrażarka** — Portale 2.0, Radio 2.1, Streamingi 2.0 i Media Readiness wracają w kolejnej iteracji.
  333. v2.87.010 lipca 2026, 11:00

    Media · Iteracja 14 (etap A) — Telewizje 📺

    • 📺 **Nowy moduł TV** — `/admin/tv` (wszystkie aktywne projekty) i `/artist/tv` (Twoje). Spotlight śniadaniówek (DDTVN, PnŚ, HTP) i kluczowych telewizji muzycznych (4funTV, 4fun Dance, MusicBox, MusicBox Dance, Eska TV, Eska TV Extra, Polsat Music, TVP Muzyka).
    • 🎬 **Video assets per projekt** — teledysk / lyrics / visualizer / vertical, link YouTube + Dropbox + checklist (master, napisy, 16:9, 9:16, miniatura). Jasny komunikat gdy brak teledysku: ogranicza śniadaniówki, uniemożliwia stacje muzyczne.
    • 🟢 **Statusy wsparcia per kanał TV** — brak / oglądał niezainteresowany / pobranie / planowane / gra na antenie. Liczone w `support_score = waga × siła wsparcia` w obrębie typu mediów.
    • 🏷️ **Klasyfikacje kanałów** — w `channel_master` doszły `tv_classification`, `portal_classification`, `radio_tier` z auto-backfillem heurystycznym (do poprawy w edytorze kanałów).
    • 🧭 **Nawigacja Media** — pozycja **TV 📺** w menu admina i artysty (obok Radia).
    • 🚧 W kolejnych etapach: Portale 2.0 (klasyfikacje + spotlight), Radio 2.1 (tier breakdown + sparkline 30d), Streamingi 2.0 (klasy playlist + premium editorial), wspólny Support Snapshot, Media Readiness 0–100 i alerty Pulse na on_air w premium kanałach.
  334. v2.86.09 lipca 2026, 10:00

    Publikacje 3.0 — Tier = waga kanału, autocomplete kanału, import z Katalogu, skan po wszystkich aktywnych

    • 🧭 **Publikacje w menu Media** — `/admin/publikacje` i `/artist/publikacje` w nawigacji (wcześniej nieosiągalne).
    • ⭐ **Tier = waga kanału z edytora kanałów** — kolumna pokazuje `channel_master.default_weight` zamiast losowych wartości. Fallback `support_scale` oznaczany `(s)` żeby było jasne, że to ratunkowo.
    • 🔗 **Przypisanie portalu do kanału** — autocomplete jak w innych miejscach (Radio/WARM). Jeśli kanału nie ma → opcja Utwórz kanał w locie i auto-link.
    • 📥 **Import z Katalogu Kanałów** — przycisk wciąga Netfan, Wyspa, KFN.net.pl itd. do whitelisty skanu Serpera (linkuje też po domenie istniejące rekordy).
    • 🛰️ **Skan po wszystkich aktywnych artystach** — `scanAllActiveArtists` filtruje po `projects.status='active'` zamiast sztywnego capa 10. Przycisk dynamicznie pokazuje aktualną liczbę.
    • ⚡ **Edytor kanałów szybciej** — `syncChannelMasterFromProjects` cache'owany 5 min (był głównym bottleneckiem przy >500 kanałach).
  335. v2.85.08 lipca 2026, 10:00

    Produkcja 2.0 — workspace plikow per podetap + tekst utworu dirty-aware

    • 🐛 FIX krytyczny: tekst utworu juz sie nie kasuje. Nowy LyricsBlock ma dirty-guard, autozapis 1.5 s i przycisk Zapisz teraz, plus status (Autozapis aktywny / Zapisuje / Zapisano / Blad).
    • 📝 Tekst dla admina — admin moze wkleic i edytowac tekst utworu w podetapie Kompozycja/tekst (wczesniej read-only). Powiadomienie idzie do artysty.
    • 📋 Pole Tekst utworu w briefie produkcji — przy statusie Mam gotowy tekst / Mam szkic pojawia sie textarea (autozapis briefu).
    • 🎚️ Workspace plikow per podetap (Stage Assets) — KAZDY podetap audio i video ma pelny manager wersji: presety rodzajow (demo melodii, demo wokalu, aranz v1, mix v2, master final, treatment, shotlist, cut v1...), upload na Dropbox, etykieta, wskaznik wgral wydawca/artysta, znacznik finalnej wersji.
    • 🎧 Odsluch / podglad in-app — audio, wideo, obrazy renderuja sie po klikniecu Podglad (lazy temp-link z Dropboxa).
    • ✅ Akceptacja per wersja (artysta) — Akceptuje / Prosze o zmiany z notatka. Status approved / changes_requested plakietkowany na wersji.
    • 💬 Komentarze pod kazda wersja — watek admin <> artysta przy konkretnym mixie (timecodes, uwagi), licznik i historia autora.
    • 🔔 Powiadomienia (push + in-app + email) — nowy kanal Produkcja + 7 typow: production_stage_changed, production_note_added, production_asset_added, production_asset_approved, production_asset_changes_requested, production_comment_added, production_signoff_done.
    • 🧱 Schemat danych — pola JSON production_progress.{audio|video}.stages[].assets[] z normalizacja w normalizeProductionProgress. Brak migracji (jsonb), wstecznie kompatybilne.
  336. v2.84.36 lipca 2026, 10:00

    Connect Points 2.0 + Frekwencja briefów + Priorytety dnia (Wydawca)

    • 🪙 **Connect Points 2.0** — nowa tabela `connect_points_config` (konfigurowalne ile pkt za co), idempotentne `dedupe_key` na `connect_score_events`, panel admina `/admin/connect/points` (edycja punktów + pełna historia per-artysta z powodem i referencją).
    • ✅ **Brief dnia artysty awarduje punkty Connect** — `saveDailyCheckin` woła `applyConnectAward('artist_daily_brief')` (raz dziennie, idempotentnie). To samo dla wydawcy (`label_daily_brief`).
    • 📊 **Frekwencja briefów** — `/admin/plany-dnia/frekwencja`: kto wypełnił dziś (✅/⚠️), liczba briefów w wybranym miesiącu, streak, sparkline 30 dni, skrót do Plan Dnia artysty.
    • 🔥 **Priorytety dnia (Wydawca)** — `label_daily_priorities`: 5-stopniowa skala z gwiazdkami, picker chipów aktywnych projektów, ręczne ustawianie lub **✨ Zasugeruj AI** (heurystyka: tier S/A+, premiera ≤14 dni, sygnały Pulse high/critical, kondycja, wynik vs. cel) + polish przez Gemini Flash.
    • 🎯 **Generator zadań wydawcy honoruje priorytety** — gdy priorytety są ustawione, plan tworzony jest TYLKO pod te projekty, w kolejności P5→P1; w prompt trafia blok PRIORYTETY DNIA + per-projekt tag [P5/5].
  337. v2.84.25 lipca 2026, 10:00

    Profil Twórcy (Persona) wstrzykiwany do KAŻDEGO generatora AI

    • 🧬 **Persona w sercu kontekstu** — `buildArtistAiContext` (jedno źródło prawdy dla wszystkich AI w apce) pobiera teraz dane z `artist_personas`: archetyp główny + wspierający, work_mode (artist / influencer / mix), pasje, NO-GO, osie promo, filozofia twórcza, wartości fundamentalne. Wszystko trafia do bloku `=== PROFIL TWÓRCY (PERSONA) — TWARDY KONTEKST ===` w prompcie.
    • 🤖 **Co-Pilot Premiery analizuje personę**: zaktualizowany system prompt explicite respektuje archetyp, work_mode i NO-GO. Akcje sugerowane przez Co-Pilota dopasowują się do trybu pracy artysty (influencer → krótkie hooki, artist → studio, mix → balans).
    • 💡 **Pomysły z personą — bez utraty indywidualności**: do prompta dorzuciliśmy 3 nowe zasady (NO-GO to twardy zakaz, work_mode filtruje typ akcji, pasje wzbogacają `personalization_anchor` ale NIE zastępują konkretnych faktów). Każdy pomysł nadal musi być zakotwiczony w jednostkowym fakcie (utwór / Pulse / sukces) — persona jest warstwą personalizacji, nie szablonem.
    • 📡 **Radar / Label / Playbook automatycznie korzystają**: ponieważ wszystkie generatory (Pomysły, Label Ideas, Brand Kit AI, Pressroom AI, AI Refine, Co-Pilot, Post-Mortem) sięgają po `getArtistContextBlock`, Persona została aktywowana wszędzie jednym podpięciem — bez ryzyka rozjazdu między modułami.
    • 🛡️ **Bezpieczeństwo JSON**: nic nie zmieniło się w schemacie outputu — `json: true` + `maxTokens: 9000` + `extractJson` zostają. Dodaliśmy tylko więcej tekstu wejściowego, więc ryzyko parse-error nie wzrosło.
  338. v2.84.14 lipca 2026, 10:00

    Playbook scalony (Wydawca + Artysci) + admin w pelni dziala za artyste

    • 🧭 **Jeden Playbook, dwie zakladki** — analogicznie do Pomyslow, Label Playbook i Plany Dnia artystow zyja teraz pod wspolnym `PageTabs` (Wydawca / Artysci). W menu admina jeden link `Playbook`; zakladka w srodku przelacza widoki bez nawigacji-spaghetti.
    • 👮 **Admin = artysta**: na `/admin/artysci/:id/plan-dnia` admin widzi pelny Plan Dnia konkretnego artysty (Profil Tworcy, dzisiejsza odprawe, zadania 14 dni). Moze **Wygenerowac zadania (4)**, oznaczyc **zrobione / pomin / pozniej**, **wzbogacic AI** (uzupelnia how_to/watch_outs/pro_tips), **wyeksportowac do Kanbana** i **usunac** — wszystko jak artysta, ale z menu admina. Dziala przez `supabaseAdmin` (bez problemow z RLS).
    • 🤖 **Co-Pilot dla artysty potwierdzony**: Co-Pilot premiery jest juz widoczny dla artystow na `/artist/pulse` (poprzez `ReleaseSpotlight`, sekcja `Co-Pilot - tytul`) oraz na stronie pojedynczej premiery `/releases/$id`. Jesli artysta nie ma aktywnej/wydanej premiery — spotlight ukrywa sie. To **nie jest** funkcja tylko-dla-wydawcy.
    • 🚪 **Wejscie dla admina**: `/admin/plany-dnia` to wyszukiwarka artystow z avatarem — wpisz nick, kliknij, jestes w jego Planie Dnia. Z kazdej karty masz tez skrot do Gotowosci premier i Profilu artysty.
  339. v2.84.03 lipca 2026, 12:00

    Konsolidacja menu + Co-Pilot 2.0 (cache 24h, wybór premiery)

    • 🧭 **Mniej zakładek, więcej sensu**: Pomysły / Pomysły (wydawca) → jedna podstrona z przełącznikiem (Dla artystów ↔ Dla wydawcy). Profil artysty / Profil twórcy → wspólna strona z dwiema zakładkami. Pulse · projekty i Pulse · social radar zostały scalone w jeden moduł z przełącznikiem (osobne podstrony jako sub-taby, nie osobne pozycje w menu).
    • 🎯 **Persona w Gotowości** jako must-have: krok `persona` jest już liczony do release readiness (100% gdy ukończony quiz, proporcjonalnie gdy w trakcie). Bez wypełnionej Persony Gotowość nigdy nie sięgnie 100% — to świadoma decyzja, bo bez niej AI nie ma czego rekomendować.
    • 🤖 **Co-Pilot Premiery — cache 24h + wybór premiery**: AI generujemy maksymalnie 1× dziennie (TTL cache podniesione z 2h do 24h w `generateReleaseCopilot`). Otwarcie Pulse czyta cache (`getCachedReleaseCopilot`) bez palenia gateway. Przycisk Odśwież wymusza świeże uruchomienie ręcznie. Jeśli cache nie ma — pokazuje się CTA Wygeneruj Co-Pilot.
    • 🎚️ **Wybór premiery w Co-Pilot**: nowa lista kandydatów (`listArtistSpotlightCandidates`) — w Pulse (artysta i admin) można teraz ręcznie przełączyć, dla której premiery chcemy zobaczyć Co-Pilota / Post-Mortem (np. żeby porównać dwie aktywne kampanie, albo przejrzeć poprzednie wydanie). Wcześniej był tylko auto-picker.
    • 👤 **Co-Pilot dla artysty**: ten sam komponent (`ReleaseCopilotCard`) używany w Pulse artysty i Pulse admina — różni się jedynie skopem (admin: cały label + per-premiera, artysta: jego premiery). Plus osobny `AdminCopilotCard` dla widoku label-HQ across projektów.
  340. v2.83.42 lipca 2026, 20:00

    ✨ Wzbogać AI — uzupełnij wskazówki w istniejących pomysłach i zadaniach

    • 🔍 **Diagnoza**: w bazie 0/6 zadań Label Playbook i 0/66 pomysłów miało wypełnione `how_to/watch_outs/pro_tips/expected_impact` mimo że v2.83.0–v2.83.2 obiecywały bogaty poradnik. Powód: za niski `max_tokens` (4200) plus Gemini Flash w trybie JSON pomijał te pola przy 6+ taskach. Dlatego nie widać było 'nowości'.
    • 🚀 **Bump max_tokens 4200/3200 → 9000** w `generateLabelTasks`, `generateArtistTasks` i `generateIdeas` — teraz model ma miejsce na rozpisanie pełnego poradnika dla każdej pozycji.
    • ✨ **Przycisk ‘Wzbogać AI'** na każdej karcie (Label Playbook, Plan Dnia artysty, Pomysły) gdzie poradnika brakuje — jedno kliknięcie i AI dolewa `how_to` (3–5 kroków), `watch_outs` (2–3), `pro_tips` (1–3) oraz `expected_impact`. Nie trzeba regenerować wszystkiego — naprawia stare rekordy.
    • 🧠 **Nowy endpoint** `enrichPlaybookItem({source, id})` w `src/lib/playbook-enrich.functions.ts` — działa dla `label_task | artist_task | idea`, krótki prompt per-pozycja, maxTokens 1200, deterministyczny zapis.
  341. v2.83.32 lipca 2026, 10:00

    Playbook ↔ Kanban + komentarz z taska do Pulse

    • 🔁 **Eksport zadania → Kanban**: w karcie zadania Playbooka (Plan Dnia artysty i Label Playbook wydawcy) jest przycisk **Eksport → Kanban** z wyborem tablicy. System tworzy zadanie w wybranej tablicy w kolumnie Backlog z pełnym opisem (body + how-to + watch-outs + pro tipy + assets), kopiuje project_id/artist_id i zapisuje `exported_task_id` w źródle — przycisk zmienia się w „W Kanban' z linkiem do tablicy. Brak duplikatów (re-eksport zablokowany).
    • 📚 **Tablice do wyboru**: nowy endpoint `listExportableBoards` — admin widzi wszystkie tablice, artysta tylko globalne + swoje (`scope=artist` i `artist_id` w jego zespole).
    • 💬 **Komentarz z taska do Pulse**: gdy AI generuje zadanie z konkretnego eventu Pulse (`source_ref.kind='pulse_event'`), zamknięcie zadania (Zrobione) automatycznie wstawia komentarz pod tym eventem w `pulse_comments` (rola admin/artist wg autora). Wydawca i artysta widzą w Pulse, że event został obsłużony — pełna pętla feedbacku Pulse → zadanie → komentarz pod eventem.
    • 🤖 **AI linkuje Pulse → zadanie**: generatory `generateLabelTasks` i `generateArtistTasks` dostają eventy Pulse z UUID (format `pulse_id: ...`) i mają polecenie dodać `pulse_event_id` do zadania, jeśli wynika ono z konkretnego eventu. Mapowanie zapisuje `source_ref={kind:'pulse_event', id, project_id}`.
  342. v2.83.21 lipca 2026, 18:00

    Pomysły 2.0 — bogaty poradnik w każdym pomyśle (artysta + wydawca)

    • 📘 **Każdy pomysł ma teraz poradnik** — `how_to` (3–5 konkretnych kroków), `watch_outs` (na co uważać), `pro_tips` (1–3 triki), `expected_impact` (1 zdanie: co realnie ten ruch da). Te same pola co w Playbook 2.0 — spójność modułów.
    • 🤖 **AI zmuszone do konkretu** — generatory `generateIdeas` (artysta) i `generateLabelIdeas` (wydawca) mają twardy wymóg w prompcie: bez poradnika pomysł jest bezużyteczny. Gemini Flash / GPT-5 wypełniają wszystkie pola.
    • 🗄️ **DB**: nowe kolumny `how_to`, `watch_outs`, `pro_tips` (text[]) i `expected_impact` (text) w tabeli `ideas`. Mapowanie po stronie save dla obu generatorów.
    • 🖼️ **UI**: w karcie pomysłu (`IdeasList`) sekcja **Poradnik — jak to zrobić** zwija/rozwija się — nie zaśmieca listy, ale jest pod ręką. Spodziewany efekt na zielono, kroki na niebiesko, ostrzeżenia bursztynowo, pro tipy fuksja.
  343. v2.83.11 lipca 2026, 15:30

    Pulse w Playbooku to teraz NORMALNY Pulse (project_events)

    • 🛠️ **Fix**: Label Playbook i Plan Dnia artysty czytają sygnały z normalnego **Pulse (`project_events`)** projektów (premiery, sukcesy, milestone'y, alerty kanałów) — to drugie źródło zadań obok Radaru, zgodnie z planem. Wcześniej generatory brały tylko `social_pulse_events` (Social Radar) — co było myleniem dwóch różnych modułów.
    • 📡 **Social Radar** (virale/spike'i z IG/TT/YT) zostaje jako *dodatkowy* sygnał w prompcie, nie zastępuje Pulse.
    • 🎯 W Label Playbook każdy event Pulse ma teraz przy sobie tytuł projektu — AI od razu wie, do której premiery przypiąć zadanie.
  344. v2.83.01 lipca 2026, 11:00

    Playbook 2.0 — projekt-centryczny + how-to + feedback loop + nudge dnia

    • 🎯 **Label Playbook tylko z aktywnych projektów.** Generator wyrzuca twardy błąd jeśli nie ma aktywnych projektów w oknie ±90 dni — koniec ogólników. Dla każdego projektu AI dostaje pełne dossier: tytuł, artysta, data premiery, dni do/po premierze, kategoria singla i minimum, wynik pkt vs goal_min_pts, kondycja, kanały (planowane vs aktywne, top wsparcia z edytora kanałów), feedback projektu. Plus zaakceptowane **Pomysły** artystów (czekają na egzekucję) i sygnały z **Pulse** (ostatnie 14 dni). Każde zadanie musi się odnosić do konkretnego projektu (`project_id`).
    • 📋 **Hotlista projektów** na górze `/admin/label-playbook` — karty z wskaźnikami pilności (Pilne/Średnie/Spokojnie), powody (premiera za X dni, wynik poniżej minimum, brak kanałów aktywnych po premierze, niska kondycja). To samo źródło, z którego AI generuje plan.
    • 🧭 **Bogate „jak to zrobić” w KAŻDYM zadaniu** — `how_to` (3–5 kroków), `watch_outs` (czego unikać), `pro_tips`, `expected_impact` (1 zdanie efektu), `time_breakdown` (research 5'/egzekucja 10'…), `assets_needed`. Wcześniej tylko tytuł + body — teraz playbook prowadzi za rękę. **To samo w Planie Dnia artysty.**
    • ♻️ **Pełny cykl zadania**: Zrobione · Na jutro (snooze) · Pomiń · Usuń (dotąd kliknięcia w 'Pomiń' nic nie robiły — naprawione, plus dodane Usuń i Snooze). Admin może też **„Poleć artyście”** — zadanie kopiuje się do Planu Dnia artysty z badge'em „⭐ Rekomendacja wydawcy” i powiadomieniem push.
    • 👍 **Feedback loop**: po zamknięciu zadania (admin i artysta) — Pomogło / Częściowo / Nie pomogło + opcjonalna notatka. Generator AI przy kolejnej iteracji bierze ostatnie 30 dni feedbacku jako sekcje „CO DZIAŁAŁO” / „CO NIE DZIAŁAŁO, unikaj wzorca” — uczy się Twoich preferencji. Admin widzi cały feed reakcji na dole `/admin/label-playbook`.
    • 🧠 **Pomysły wchodzą w Plan Dnia.** Zaakceptowane Pomysły artysty (`ideas.status='accepted'`) są wstrzykiwane do promptu generatora artist + label — co najmniej 1 zadanie ma je wspierać. Sygnały Pulse są drugim torem (te same co Radar) — duży event = task.
    • 📣 **Banery „Brief dnia”** — admin po wejściu do `/admin` widzi nudge do Playbooka jeśli nie zrobił dziś check-inu. Artysta po wejściu do `/artist?artistId=…` widzi nudge: jeśli brak Profilu twórcy → wypełnij quiz, jeśli brak check-inu → odpraw dzień i odbierz Plan.
    • 🔧 **Naprawiony bug hooków** w `admin_.label-playbook.tsx` (useServerFn po early return) — strona już się nie wywala przy pustej liście zadań.
  345. v2.82.630 czerwca 2026, 11:00

    Iteracja 13 · Press auto-support + ręczne dodawanie portali do whitelisty

    • 📰 **Auto-support dla publikacji prasowych** — gdy admin weryfikuje publikację (`status=verified`), portal automatycznie trafia do `channels` projektu artysty (sekcja Feedback / `bucket='current'`). Działa 1:1 jak radia: jeśli kanał już istnieje — `current_support` skacze na poziom z `press_portals.support_scale` (np. 2 dla skali 1–5), a `position` ląduje na górę swojej sekcji. Jeśli go nie ma — wpada nowy kanał `medium='press'` w grupie „Prasa (auto)” na górze Feedbacku.
    • ➕ **Ręczne dodawanie portali do whitelisty** w `/admin/publikacje → Portale`. Formularz: domena, nazwa, tier (S/A/B/C), support scale (1–5), checkbox „zawsze skanuj”. Domena normalizowana (lowercase, bez `https://`, `www.`, ścieżek). Upsert po `domain` — bezpieczny re-add.
    • 🌟 **Per-row akcje w liście portali** — toggle „★ Whitelist” (dodaj/usuń ze stałej puli skanu Serpera) oraz usuwanie portalu. Whiteliste widać natychmiast w filtrach „W puli skanu / Whitelist”.
    • 🔁 **Spójność z radiem** — ten sam wzorzec: Serper/EmailLabs reakcja → `last_engagement_at` na portalu → kanał w Feedbacku artysty z prawidłowym supportem i pozycją. Już nie trzeba ręcznie pilnować, czy portal odpowiada — pojawienie się publikacji samo podbija go u artysty.
  346. v2.82.530 czerwca 2026, 00:30

    Iteracja 13 · Blok B (domknięcie): auto-KPI + badge nowych publikacji

    • 🎯 **Auto-domykanie KPI** — cron `auto-resolve-kpi` (co 6h) przegląda zamknięte zadania Planu Dnia z wygasłym oknem (`kpi_window_days`). Dla znanych metryk (`followers_delta`, `engagement_rate`, `streams`, `saves`) porównuje delta z `social_metrics` przed i po zamknięciu zadania: ≥80% targetu = hit, <50% = miss, pomiędzy = partial. Gdy brak benchmarku — `unknown` z notatką „oceń ręcznie”. Wynik trafia do `kpi_result` z flagą `auto: true`, więc artysta nie musi już klikać 🎯/✖️ dla starych zadań.
    • 📰 **Banner „Nowe publikacje prasowe”** w `/artist/plan-dnia` — pokazuje zweryfikowane wzmianki, które pojawiły się po ostatnim wejściu artysty na `/artist/publikacje`. Lista 3 najnowszych z linkiem do portalu, przycisk „Zobacz wszystkie” i „Oznacz jako przeczytane” (czyści badge przez `artists.last_seen_publications_at`).
    • ⚙️ **Nowe pola/indeksy**: `artists.last_seen_publications_at`, partial index `idx_artist_playbook_tasks_kpi_pending` (szybki lookup tasków do auto-domknięcia), index `idx_press_publications_artist_verified` (szybkie liczenie nowych dla artysty).
  347. v2.82.429 czerwca 2026, 23:30

    Iteracja 13 · Blok C+: skaner Serpera oszczędza kredyty + reakcje portali w newsletterze

    • 🎯 **Smart whitelist zamiast 127 portali** — skaner Serpera leci teraz tylko po portalach, które realnie reagują. Zasada: (1) stała whitelista = tier S (14 największych), (2) portale, które otworzyły/kliknęły newsletter w ostatnich 120 dniach, (3) portale, na których artysta już ma publikację (follow-upy). Reszta = ignorujemy. Spadek z ~22 zapytań/artysta do ~3–6, oszczędność ~$3/mc.
    • 📬 **Reakcje portali w newsletterze stempluje teraz `press_portals`** — analogicznie do tego jak radia same się aktualizują z S4A do Edytora Kanałów: kiedy webhook EmailLabs odbiera `open`/`click`, dopasowujemy domenę maila odbiorcy (`redakcja@onet.pl` → `onet.pl`, ze wsparciem dla subdomen typu `mail.onet.pl`) do `press_portals.domain` i zapisujemy `last_engagement_at` + inkrementujemy `engagement_count`. Portal automatycznie wraca do puli skanowanej.
    • 🗂️ **Nowe kolumny `press_portals`** — `always_scan` (whitelista), `last_engagement_at` (ostatnia reakcja w newsletterze), `engagement_count` (licznik kliknięć/otwarć). Tier S oznaczony jako `always_scan=true` migracją.
  348. v2.82.329 czerwca 2026, 22:30

    Iteracja 13 · Blok C: automatyczny skaner publikacji prasowych (Serper API)

    • 🛰️ **Codzienny skan o 7:00** — cron `scan-press-publications-daily` iteruje top 20 artystów i przepytuje 28 portali z whitelisty zapytaniami typu `"Nazwa Artysty" (site:onet.pl OR site:wp.pl OR …)`. Wyniki idą do `press_publications` jako `pending` z `source=auto_scan`, dedup po `url_hash`, log do `press_publication_scans` (koszt szacowany).
    • 🔌 **Wybór: Serper.dev zamiast Google CSE** — Google CSE jest deprecated dla nowych projektów (Google rekomenduje Vertex AI Search). Serper to tani proxy do Google Search: 2500 zapytań/mc free, potem $0.30/1k. Przy 20 artystach × 5 batchy portali = 100 zapytań/dzień ≈ 3000/mc → mieścimy się w free tier dla ~16 artystów dziennie albo $0.90/mc dla 20.
    • 🚀 **Przycisk „Skanuj Serperem"** w `/admin/publikacje` — admin może odpalić ręczny skan top 10 artystów na żądanie, z toastem pokazującym ile nowych wzmianek doszło i ile API calls poszło.
    • 📊 **Logi skanów** — każdy run zapisuje `query`, `results_total`, `results_new`, `api_calls`, `cost_estimate_usd`, `error`. Łatwo zweryfikujemy ile wzmianek łapiemy i ile to kosztuje.
  349. v2.82.229 czerwca 2026, 21:00

    Iteracja 13 · Blok B (cd.): widok publikacji dla artysty + AI klasyfikator + KPI hit/miss

    • 📰 **`/artist/publikacje`** — read-only lista zweryfikowanych wzmianek prasowych dla danego artysty: portal, typ, snippet, scale (gwiazdki), data, link. Statystyki na górze (suma publikacji, support pts, unikalne portale). Link w topnav „Media".
    • 🤖 **AI klasyfikator publikacji** (Gemini Flash, tani) — przycisk „✨ AI klasyfikuj" w `/admin/publikacje`: pobiera treść strony jeśli snippet pusty, klasyfikuje typ (news/recenzja/wywiad/premiera/playlist/feature), proponuje artystę z listy 200 najczęstszych, uzupełnia tytuł/snippet, zapisuje `ai_confidence` + `ai_notes`.
    • 🎯 **KPI hit/miss** w Planie Dnia — po zamknięciu taska z `expected_kpi` pojawia się mini-widget „Cel osiągnięty?" z 🎯 Tak / ✖️ Nie. Wynik trafia do `kpi_result` i AI bierze go pod uwagę przy następnej generacji.
  350. v2.82.129 czerwca 2026, 19:30

    Iteracja 13 · Blok B: Radar→Plan Dnia + panel publikacji prasowych

    • 🛰️ **Plan Dnia zaciąga sygnały z Radaru**: serwer porównuje ER z ostatnich 7 dni vs poprzednie 7 dni per platforma. Drop ≥ 15% = sygnał ratunkowy, wzrost ≥ 25% = sygnał scale-up. Sygnały trafiają do promptu i AI musi adresować przynajmniej jeden z nich w zadaniach dnia.
    • 🎯 **Cele tasków widoczne w UI**: każda karta zadania w `/artist/plan-dnia` pokazuje teraz badge celu (`expected_kpi`) z oknem czasowym oraz badge 🛰️ Radar, gdy zadanie wynika z konkretnego sygnału (drop/spike z nazwą platformy).
    • 📰 **Nowy panel: /admin/publikacje** — kolejka weryfikacji linków prasowych z tabami pending / verified / rejected. Ręczne dodawanie URL z auto-detekcją portalu z whitelisty (28 portali, automatycznie wyliczane support points), przypisaniem do artysty, zmianą typu (news/recenzja/wywiad/premiera/playlist/feature) i akcjami zatwierdź / odrzuć / usuń.
    • 🔁 Source taska ma teraz wartość `persona+radar`, gdy w generacji uczestniczyły sygnały radarowe — łatwiej później mierzyć skuteczność pętli.
  351. v2.82.029 czerwca 2026, 17:00

    Iteracja 13 · Blok A+C: Plan Dnia 2.0 (tryb pracy + KPI z Radaru) + Publikacje prasowe

    • 🎬 **Tryb pracy w Profilu Twórcy**: artysta wybiera czy jest **🎬 Influencer** (priorytet: content na sociale, format króciutkich tasków), **🎵 Artysta** (priorytet: muzyka, studio, dłuższe okna pracy) czy **🌀 Mix** (zbalansowane). Wartość ląduje w polu `work_mode` i steruje promptem Planu Dnia oraz typami tasków.
    • 📈 **Każde zadanie ma teraz KPI**: pole `expected_kpi` (np. "+50 zapisów", "ER ≥ 4%"), okno weryfikacji (`kpi_window_days`, domyślnie 7 dni) i wynik (`kpi_result`: hit / miss / partial / unknown). Pętla zwrotna z Radarem działa w obu kierunkach.
    • 🛰️ **Plan Dnia ↔ Social Radar**: AI ma teraz w prompcie sygnały z Radaru (`radar_signal`), więc gdy ER na IG leci w dół, pierwsze zadanie dnia to konkretna reakcja contentowa (np. „test 3 hooków w Reels"), a nie generyczny task „posprzątaj feed".
    • 📰 **Nowy moduł: Publikacje prasowe** (tabele `press_portals`, `press_publications`, `press_publication_scans`):
    • • Whitelist **28 polskich portali muzycznych** z punktacją supportu i tierami S/A/B/C: Onet Muzyka, Interia, Eska, RMF FM, RMF MAXXX, Radio Zet, Antyradio, CGM, Popkiller, Newonce, Glamrap, Plejada, Noizz, Vice, Porcys, Dziennik, Rytmy, Muno, Hip-Hop.pl, Screenagers, Soundrive, Strefa Muzyka i inne.
    • • Tabela publikacji z typami (news / recenzja / wywiad / premiera / playlist mention / feature), punktami supportu (mapowanie podobne do radia: skala 5 → 2 pkt, 10 → 4 pkt, 20 → 8 pkt), polami AI (`ai_confidence`, `ai_notes`) i statusami pending / verified / rejected / duplicate.
    • • RLS: admin pełna kontrola, artysta widzi tylko **zweryfikowane** publikacje swojego artysty (przez `artists.user_id` lub team membership).
    • • Log skanów (`press_publication_scans`) z liczbą wyników, kosztem i metadanymi — gotowe pod dzienny cron z Google CSE / Serper.
    • ✨ **„NOWE" badge na landingu i /welcome** dla: Plan Dnia, Radar 2.0 i Umowy e-podpis (gradient amber→pink z pulse). Plan Dnia dodatkowo z `featured`.
    • 📂 **Moduł „Umowy e-podpis"** dołączony do `ARTIST_MODULES` z opisem flow Autenti, kartą podpisów, QR i SHA-256 — żeby artyści wiedzieli, że ta funkcja w ogóle istnieje.
    • 🛠️ Następne kroki (Blok B v2.82.1+): podpięcie `expected_kpi` do UI taska, admin UI dla `press_publications` (kolejka weryfikacji + manualne wpisywanie linków), cron Google CSE / Serper z whitelistą domen, AI klasyfikator typu publikacji.
  352. v2.81.929 czerwca 2026, 15:00

    Profil Twórcy: 4. krok „Filozofia" (muzyka vs promocja, sztuka vs rozrywka…)

    • 🧭 Dodaliśmy **4. krok quizu — „Filozofia"**: 8 osi this-or-that, na których artysta pokazuje co jest dla niego ważniejsze: **Muzyka vs Promocja**, **Dla siebie vs Dla fanów**, **Sztuka vs Rozrywka**, **Mainstream vs Nisza**, **Legacy vs Tu i teraz**, **Misja vs Kariera**, **Album-koncept vs Singiel-vibe**, **Perfekcja vs Flow**.
    • 💎 Dodatkowo: wybór do **5 wartości rdzennych** z 12 (Autentyczność, Wspólnota, Innowacja, Rzemiosło, Wolność, Wzrost, Dziedzictwo, Radość, Prawda, Spektakl, Intymność, Bunt) + opcjonalny mini-manifest.
    • 🪄 Przycisk **„Zasugeruj"** mapuje archetypy z kroku 1 na osie filozofii (np. Performer/Joker → bardziej rozrywka i mainstream; Scholar/Storyteller → bardziej sztuka i koncept; Rebel/Healer → bardziej misja niż kariera). Wartości rdzenne podpowiadane są z `personality.values` z profilu artysty.
    • 🤖 Filozofia + wartości lecą do promptu **Planu Dnia** — AI nie wciśnie „artyście undergroundowemu" 5 zadań marketingowych, gdy ma w filozofii „Muzyka ≫ Promocja".
    • 📈 Pasek postępu i stepper przeprojektowane na 4 kroki (sm:2 / lg:4 kolumny) — nadal mobile-first.
  353. v2.81.829 czerwca 2026, 13:00

    Profil Twórcy: chipy tonu + „Zasugeruj z profilu"

    • 🎨 „Ton komunikacji" (krok 2 – Promocja) to teraz pełnoprawny picker chipów — ten sam zestaw 15 tonów (Luzacki, Ironiczny, Romantyczny, Energiczny, Nostalgiczny, Bezpośredni, Mistyczny, Chill, Motywujący…), który masz w profilu artysty. Można nadal dopisać własne tony przecinkami.
    • 🪄 Każdy z 3 kroków quizu (Osobowość, Promocja, Pasje) ma teraz przycisk **„Zasugeruj z profilu"** — jednym tapnięciem mapuje dane, które artysta już raz wypełnił w profilu:
    • • Osobowość: preset persony → archetyp, vibe/unique_value/bio → pole „o sobie", social_engagement → oś vibe;
    • • Promocja: `tone` z profilu → chipy tonu, `channel_priorities` + `platformPriorities` (Instagram/TikTok/YouTube/Facebook/X/Threads) → aktywne platformy;
    • • Pasje: `interests` z profilu → dopasowanie do bingo pasji (reszta ląduje w polu „coś jeszcze").
    • ℹ️ Nic nie nadpisujemy „w tle" — sugestia uzupełnia tylko puste pola, więc bezpiecznie można klikać kilka razy.
  354. v2.81.729 czerwca 2026, 11:00

    Plan Dnia artysty bez suwaków — chipy z emoji

    • 🎚️ Koniec mylących pasków „nastrój 60 / energia 60". Odprawa dnia to teraz konkretne chipy z emoji i etykietami: nastrój (😩 Słabo → 🔥 Na maksa), energia (🪫 Padnięty → 🚀 Gotów rozwalać), czas (☕ 10 min → 🏭 3h+), miejsce (🏠 Dom, 🎛️ Studio, 🎤 Scena, 🚗 W drodze, 🌳 Plener).
    • 📱 Mobile-friendly: tap target ≥44px, wraps na wąskim ekranie, active state z miękkim glow.
    • 🧠 Wartości pod spodem nadal mapowane na 0–100 dla AI, więc generator zadań działa bez zmian.
  355. v2.81.629 czerwca 2026, 10:00

    Playbook bez tajemniczego nastroju + quiz Profilu Twórcy z duszą

    • 🎚️ Label Playbook (admin): „nastrój 0–100" zastąpiony 4 grupami czytelnych chipów — Tempo (Luz/Normalny/Sprint/Pożar 🚨), Budżet (oszczędnie/standard/inwestujemy 💎), Priorytet (zasięg/relacje/jakość PR), Apetyt na ryzyko (bezpiecznie/średnio/eksperymenty 🧪). Te kryteria realnie wchodzą do promptu AI i wpływają na liczbę zadań, koszty i ich charakter.
    • 🗄️ DB: nowa kolumna `label_daily_checkins.context jsonb` przechowuje wybrane chipy (mood mapowane wstecz dla kompatybilności).
    • 🎮 Profil Twórcy (artysta /artist/persona) — pełen redesign:
    • • górny pasek postępu (0/3 → 100%) i stepper „Krok 1/2/3" z znacznikiem ✅ ukończenia;
    • • Sesja 1: karty archetypów z emoji + gradientami marki (Storyteller 📖, Performer 🎤, Rebel 🔥…), zamiast suwaków vibe — widget „This or That" (5 ikon: bardzo/raczej/neutralnie 🤐↔🫂);
    • • Sesja 2: ten sam widget dla osi promo/biz + chipy formatów (📱 short-video, 🎙️ podcast) i platform (📷 IG, 🎵 TT, ▶️ YT), presety tempa publikacji (🌙 1/tydz → 🚀 14/tydz) i czasu (☕ 10 min → 🏭 3h) zamiast inputów liczbowych;
    • • Sesja 3: bingo pasji z emoji (🎨 malarstwo, 🧘 joga, 🎧 DJ-ing…) oraz „czerwone kartki" NO-GO (🚫 + przekreślenie);
    • • auto-przejście do kolejnej sesji po zapisie, przycisk „Wstecz", a po ukończeniu wszystkich 3 — karta podsumowania „Twoja persona jest gotowa" 🏆.
    • 🎯 Admin: nowa strona /admin/plany-dnia — picker artystów (szukajka + avatary) prowadzący do read-only podglądu Planu Dnia każdego artysty. Skrót dostępny z głównego paska /admin (📋 Playbook wydawcy, 🎯 Plany Dnia artystów).
  356. v2.81.528 czerwca 2026, 21:30

    Polskie etykiety w Label Playbook i pasjach KissBang + Plan Dnia z profilu artysty

    • 🇵🇱 Label Playbook (admin) — Focus, obszary zadań (pitch/sync/booking/produkcja/biznes/artist care/admin) i priorytety wyświetlane po polsku zamiast surowych kluczy EN.
    • 💋 KissBang — krok „Pasje" pokazuje czytelne nazwy z emoji (np. „🎤 Wokal pop") zamiast technicznych ID typu „vocal-pop".
    • 🎯 Admin → profil artysty: dodany skrót „Plan Dnia · Profil Twórcy" (obok „Gotowość premier") — szybki dostęp do widoku read-only persony i zadań artysty.
  357. v2.81.428 czerwca 2026, 10:00

    Generator Pomysłów: koniec błędów JSON + Label Ideas 90+ kategorii

    • 🛠️ Naprawiony błąd „AI zwrócił odpowiedź, ale nie udało się jej sparsować jako JSON" — parser teraz auto-naprawia obcięte odpowiedzi (domyka klamry, ucina niedokończone stringi).
    • 📈 Wyższy limit tokenów w generatorach (artysta: 4200, wydawca: 5200) — koniec ucinania długich list pomysłów.
    • 📱 Fix Fold5 / wąski ekran: chip „AI: zasugeruj" już się nie ucina — nagłówek kategorii zawija się prawidłowo.
    • 🏛️ Label Ideas — rozbudowane z ~35 do ~90 kategorii: radio per typ (ogólnopolskie, lokalne, publiczne, internetowe, akademickie), TV (śniadaniówki, talk-show, festiwale, music channels, soundtrack), prasa/portale/podcasty per segment, zasięg (influencerzy, seeding, geo-targeting, ekspansja zagraniczna), follow-upy (brak odpowiedzi, odmowa, podziękowanie, pielęgnacja relacji), sync biblioteki, PR kryzysowy/rocznicowy, coaching sceniczny i medialny.
  358. v2.81.327 czerwca 2026, 19:00

    Brief produkcji już się nie kasuje przy autozapisie

    • 🛟 Naprawione „Założenia produkcji" w premierach artysty — wcześniej autozapis wizardu (co 900 ms) refetchował release'a, a edytor briefu nadpisywał lokalny stan świeżymi danymi z bazy, kasując właśnie wpisany tekst. Teraz dirty-guard chroni nieprzesłaną treść do momentu zapisu.
    • 💾 Edytor briefu ma własny debounced autozapis (1.2 s po przerwie w pisaniu) i widoczny status „Autozapisuję…/Autozapisano" — nawet bez klikania „Zapisz" dane trafiają do bazy.
    • 🔁 Poprawiona invalidacja cache po zapisie briefu (['release', id] + ['admin-release', id] zamiast nieistniejącego release-detail), więc admin i artysta od razu widzą zaktualizowane wartości.
  359. v2.81.227 czerwca 2026, 18:00

    Admin widzi Plan Dnia artysty + Profil Twórcy w Gotowości

    • 👀 Nowy podgląd: /admin/artysci/:id/plan-dnia — admin widzi (read-only) Profil Twórcy artysty (archetyp główny/poboczny, pasje, NO-GO, postęp sesji), dzisiejszą odprawę (nastrój/energia/czas/lokalizacja/notatka) oraz 14-dniową listę zadań z personalization_anchor i statusami. Linki do podglądu z paneli „Gotowość premier" i „Profil artysty".
    • ✅ Nowy krok w Gotowości premiery: „Profil twórcy (quiz do Planu Dnia)" — 100% gdy quiz ukończony, w przeciwnym razie proporcjonalnie do trzech sesji (osobowość/promocja/pasje). Krok widoczny u artysty i admina, override 3-state działa jak dla pozostałych kroków.
  360. v2.81.127 czerwca 2026, 17:00

    Modal „Co nowego?" — scrollowalny + sticky CTA

    • 📜 Modal nowej wersji ma teraz max-height 85vh i scroll w środku — przy długich listach zmian (jak v2.80.22) nie da się już „zgubić" przycisku zamknięcia. Nagłówek i stopka z przyciskami przyklejone, środek przewija się palcem (overscroll-contain, żeby nie ciągnąć tła).
    • ✅ Sticky CTA „Super, lecę dalej" + „Zobacz całą historię" zawsze widoczne na dole, niezależnie od długości changeloga.
  361. v2.81.027 czerwca 2026, 16:00

    Persona Artysty + Plan Dnia + Label Playbook (fundament)

    • 🪪 Profil Tworcy (/artist/persona) — 3 krotkie sesje po ~5 min: (1) Osobowosc — 12 archetypow (Storyteller, Performer, Producer-Brain, Estetka, Trickster, Buntownik, Healer, Erudyta, Romantik, Atleta, Eksplorator, Builder) + osie vibe (intymnosc, humor, estetyka, energia, kontrowersja); (2) Promocja — osie tempa publikacji, formatow, live, collabow, ambicji, wydolnosci, dyscypliny + ton, formaty, platformy, cele tygodniowe; (3) Pasje i no-go — katalog 60+ pasji w 9 grupach (sztuka, sport, moda, jedzenie, podroze, tech, zycie wewnetrzne, spolecznosc, music-nerd) + lista NO-GO (czego AI nigdy nie ma sugerowac). Postep sledzony per sesja, status ukonczony zapisany w bazie.
    • 📅 Plan Dnia (/artist/plan-dnia) — codzienna odprawa dnia (nastroj, energia, dostepny czas w minutach, lokalizacja: dom/studio/scena/podroz/plener, krotka notatka) + generator AI mikro-zadan (5–30 min) szytych pod persone i check-in. Kazde zadanie: tytul, opis, typ wejscia (tekst/video/audio/foto/plik/action), szacunek minut, energia (low/med/high), vibe, personalization_anchor (konkretny fakt z profilu), rodzaj (micro/reach/passion/maintenance). Karty z akcjami: Zrobione / Pozniej / Pomin. Zadania nigdy nie sugeruja artyscie pitchu do redakcji/dziennikarzy/edytorow Spotify (to robi wydawca).
    • 🏛️ Label Playbook (/admin/label-playbook) — codzienny brief wydawcy (focus, nastroj, voice/text brief) -> AI generuje biznesowe zadania w 7 obszarach: pitch, sync, booking, produkcja, biz-dev, artist care, admin. Kazde zadanie ma priorytet (high/normal/low), estymate minut, szacunek kosztu w PLN i opcjonalne przypisanie do artysty (auto-detect z aktywnej bazy). Karty kolorowane per obszar, lista 7-dniowa pogrupowana po dniu.
    • 🗄️ Schema — 5 nowych tabel: artist_personas, artist_daily_checkins, artist_playbook_tasks, label_daily_checkins, label_playbook_tasks. RLS: tabele artysty dla admina + zespolu artysty; tabele wydawcy tylko admin.
    • 🧭 Nawigacja — w pasku artysty: Plan Dnia w topbarze, Profil Tworcy w dropdownie Konto. W pasku admina: Label Playbook w topbarze obok Pomyslow (wydawca).
    • ⏭ Wkrotce (v2.81.1) — persona-share jako grafika do socials, integracja Planu Dnia z modulem Gotowosc (zaliczanie must-have'ow), promocja duzych Pomyslow do mikro-zadan Planu Dnia.
  362. v2.80.2227 czerwca 2026, 13:30

    Pomysły — twardy filtr personalizacji + Pulse mobile (Fold5)

    • **🎯 Personalizacja artysta — twardy filtr po stronie serwera.** Generator pomysłów odrzuca teraz każdy draft, którego `personalization_anchor` jest zbyt krótki (<20 znaków), bez liczby i bez nazwy własnej, albo opiera się na generycznych frazach typu „artysta/muzyka/fani”. Jeśli >50% paczki nie przejdzie — system automatycznie odpala drugą próbę z mocniejszym promptem („poprzednia próba była zbyt generyczna, podawaj tytuły utworów, BPM, liczby z Pulse”). Dopiero jako fallback ostatniej szansy pokazujemy oryginalne propozycje.
    • **📱 Social Radar / Pulse — Fold5.** Padding nagłówka p-4 na mobile, h1 zmniejszone do text-2xl, opis text-xs. Przyciski układają się w kolumnę: główny „Skanuj projekty + ID Records” idzie pełną szerokością, „Podepnij” i „Analiza” w grid 2-kol, przełącznik 7/14/30d też w full-width segmencie. Nic już nie wystaje za ekran.
    • **💡 Strategia Pre-save (do migracji z Feature.fm).** Po analizie: Spotify Extended Quota wymaga 250k MAU — nierealne na starcie. Feature.fm wycenił API na 500–1000 zł/mies. — drogo. **Found.ee** jest realnym kandydatem: ma publiczny endpoint `POST /link/api/page/pre-save` (Spotify + Apple + Deezer + Amazon + Tidal, automatyczna konwersja pre-save → smartlink po premierze) oraz Partner Integration API z długoterminowymi tokenami. Dokumentacja: https://dev.found.ee. Następny krok po Twojej stronie: konto na https://found.ee + request o Partner Integration Access (label hub, ~10–20 releasów/mies., tworzenie pre-save po UPC/ISRC). Po dostaniu tokena: jedna krótka iteracja na włączenie `foundee.server.ts`. Alternatywy plan B: ToneDen (techniczne API jest, ale niepewny stan produktu), Linkfire (enterprise — pewnie znów drogo). Hypeddit/ListenTo/Tunelinx — tanie, ale bez publicznego API.
  363. v2.80.2127 czerwca 2026, 11:00

    Pomysły 2.0 — moduł dla wydawcy, mocniejsza personalizacja, mobile fixes

    • **🏛️ Nowy moduł „Pomysły dla wydawcy”** (`/admin/label-ideas`) — osobny generator AI nastawiony na to, co my, ID Records, robimy DLA artysty: pitch radiowy/TV/prasa, DSP editorial, sync, brand partnership, festival/club booking, produkcja teledysku, sesja foto, mix/master, analytics, A/B testy, artist care, training. Każdy pomysł ma pole **kto co robi** (wydawca / artysta), **artist_involvement** (solo_label / with_artist / artist_optional), **priorytet** (high/normal/low) i **szacunek kosztu w PLN**. Wsparcie kontekstu głosowego (VoiceTextarea) — można nagrać brief głosem.
    • **🚫 Anti-pitch dla artysty** — generator pomysłów dla artysty PRZESTAJE proponować mu pitch do redakcji, edytorów Spotify czy bezpośredni kontakt z dziennikarzami. Te zadania trafiają tylko do modułu wydawcy. Artysta dostaje natomiast: tworzenie treści zachęcających radio/dziennikarzy (dedykowany teaser dla stacji, video-zaproszenie do redakcji, acoustic version dla radia).
    • **🎯 Personalizacja per artysta** — prompt wymusza teraz pole `personalization_anchor` w KAŻDYM pomyśle: konkretny fakt z profilu / utworu / Pulse, na którym osadzony jest pomysł. Bez tego AI dostaje twardą instrukcję, że pomysł zostanie odrzucony. Nowa kolumna w bazie + wyświetlanie na karcie pomysłu.
    • **🧱 Profil artysty** — sekcje Talentobranie i Strefa Fanów dostały proste **chipy on/off** zamiast skali 1–5. Zaznaczasz, co Cię interesuje — koniec iluzji precyzji. Zapis wartości kompatybilny wstecz (0 / 5).
    • **📱 Mobile (Fold5 ~344px)** — Radio: karty „Top stacja” i „Top singiel” mają `shrink-0` na ikonach i liczbach plays — numer 7d/30d nie wypada poza ekran. Generator pomysłów: padding `p-1.5 sm:p-4`, `max-h-[97vh]`. Lista twórców w `/admin/ideas` przeszła z natywnego białego `<select>` na ciemny `StyledSelect` (popover, paleta zgodna z resztą).
    • **🗄️ Baza** — `ideas` rozszerzona o: `owner_kind` ('artist'|'label'), `artist_involvement`, `who_does_what` (jsonb), `personalization_anchor`, `priority` (low/normal/high), `estimated_cost_pln`. Indeksy po `owner_kind` i `(owner_kind, artist_id)`. `listIdeas` domyślnie filtruje do `owner_kind='artist'` — istniejące widoki niczego nie tracą.
  364. v2.80.2027 czerwca 2026, 09:45

    Radio · Station Power — układ mobilny

    • Karta stacji przeszła na grid z `min-w-0`, dzięki czemu numer „30d” już nie znika za krawędzią telefonu.
    • Mniejszy awatar i delikatniejsze odstępy na <sm — nazwa stacji + badge skali mieszczą się obok siebie bez zawijania na pół ekranu.
  365. v2.80.1927 czerwca 2026, 00:15

    Pomysły — fix zapisu wygenerowanych pomysłów

    • Generator AI czasem zwracał platformy pełnymi nazwami („instagram”, „spotify”) — łamało to constraint w bazie i blokowało zapis całej paczki.
    • Normalizacja kluczy platform przed insertem (instagram→ig, tiktok→tt, spotify→sp itd.), nieznane wartości lądują jako `other`.
  366. v2.80.1826 czerwca 2026, 23:55

    Social Radar — osobne harmonogramy per platforma

    • Instagram i TikTok odświeżane 4×/dzień (ok. 8, 13, 18, 22 czasu PL) — bez nocnych skanów, bo nikt wtedy nie postuje.
    • YouTube raz dziennie rano (Google API, nie obciąża RapidAPI), Facebook raz w tygodniu (poniedziałek rano) — minimalny ruch zachowany.
    • Endpoint `/api/public/hooks/social-pulse-refresh?platforms=ig,tt,yt,fb` — pojedynczy filtr per cron, ten sam viral-detector globalnie.
    • Cache TTL dla FB podbity do 24h, żeby ręczne „Skanuj teraz” nie kasowało darmowego limitu między cronami.
  367. v2.80.1726 czerwca 2026, 23:30

    Mobile fix: Umowy + Risers w Social Radarze

    • Admin /admin/umowy — na telefonie tabela zamieniona na czytelną listę kart (tytuł, status, podpisy, daty, PDF, „Otwórz”). Na desktopie zostaje pełna tabela.
    • Wyszukiwarka i nagłówek karty „Rejestr umów” nie wystają już poza ekran (siatka 1fr+auto, full-width input na mobile).
    • Social Radar → Risers/Fallers: długie tytuły TikToków/FB obcinają się ellipsą zamiast wypychać kartę poza viewport. Karta `min-w-0 overflow-hidden`, badge zmian zachowany.
  368. v2.80.1626 czerwca 2026, 23:05

    Umowy — regeneracja PDF naprawdę podmienia stary certyfikat

    • Naprawiony root cause: Dropbox dostawał kolejne kopie `CTR-... (1).pdf`, a link publiczny nadal prowadził do starego pliku z uszkodzonym certyfikatem. Teraz regeneracja nadpisuje dokładnie tę samą ścieżkę PDF.
    • Publiczne linki do umów dostały cache-busting i nagłówki no-store, żeby przeglądarka/CDN nie pokazywały starego certyfikatu po kliknięciu „wygeneruj ponownie”.
    • Font Lato jest osadzany w PDF bez subsetowania także przy regeneracji — polskie znaki i pełne słowa są stabilne w PDF.js, Chrome i Dropbox preview.
    • Umowa CTR-2026-C5AEA626 została odtworzona i sprawdzona lokalnie: 13 stron renderuje się do obrazów, certyfikat ma poprawny tekst „KARTA PODPISÓW” i nie gubi liter.
  369. v2.80.1526 czerwca 2026, 22:45

    Umowy — nowa, profesjonalna Karta Podpisów (inspiracja Autenti)

    • Strona certyfikatu kompletnie przeprojektowana: nagłówek „KARTA PODPISÓW”, podtytuł o poświadczeniu, ID dokumentu, data utworzenia, ramka z opisem zabezpieczenia + pieczęć HUB ID Records.
    • Każdy sygnatariusz w osobnej karcie: imię, e-mail, rola, podpis wpisany, IP, data z GMT, opis pieczęci i powód podpisu.
    • Stopka prawna eIDAS + art. 77²/78¹ KC, pełny SHA-256, kod QR weryfikacyjny, pasek identyfikacji dokumentu.
    • Typografia Lato bez subsetowania — koniec znikających liter („P r r n” już się nie powtórzy).
  370. v2.80.1426 czerwca 2026, 22:00

    Umowy — certyfikat z polskimi znakami + przycisk regeneracji

    • Certyfikat podpisu generowany fontem Lato (pełen zestaw polskich diakrytyków). Wcześniejszy Inter z Google Fonts był wczytywany w wariancie tylko-latin i zjadał ą/ę/ł/ó/ś/ź/ż — stąd pocięty tekst na ostatniej stronie.
    • Nowy przycisk „Wygeneruj umowę z certyfikatem ponownie” w panelu admina umowy (/admin/umowy/…) — wymusza nowy PDF dla istniejących, już podpisanych dokumentów.
  371. v2.80.1326 czerwca 2026, 21:15

    Umowy — endpoint PDF nie wisi na Dropboxie

    • Pobieranie podpisanego PDF ma limit czasu na źródłowy link Dropboxa.
    • Jeżeli Dropbox nie odpowiada lub zwraca coś innego niż PDF, HUB automatycznie regeneruje finalny dokument z certyfikatem.
  372. v2.80.1226 czerwca 2026, 21:05

    Umowy — pobieranie PDF bez blokady Dropboxa

    • Przycisk „Pobierz podpisany PDF” prowadzi teraz przez endpoint HUB-a, a nie bezpośrednio do Dropboxa, więc nie wyskakuje ERR_BLOCKED_BY_RESPONSE.
    • Endpoint pobiera PDF po stronie serwera i zwraca go jako załącznik o nazwie CTR-*.pdf.
    • Maile finalne z podpisaną umową też preferują link HUB-a, żeby odbiorcy nie trafiali na zablokowaną stronę Dropboxa.
  373. v2.80.1126 czerwca 2026, 20:30

    Premiery — naprawiony biały ekran „n.filter is not a function"

    • PersonalityChips (Vibe/Interest/Tone) normalizuje teraz `value` i `options` defensywnie — stare rekordy z obiektami zamiast stringów nie wywracają już widoku Premier.
    • Brakująca lista opcji nie powoduje już crasha — komponent renderuje pustą listę zamiast wybuchać podczas hydracji.
  374. v2.80.1026 czerwca 2026, 19:05

    Umowy — naprawione Not found przy pobieraniu podpisanego PDF

    • Fallback /api/public/contract-signed/<documentId> obsługuje teraz umowy wgrane jako asset:*.pdf, czyli pliki zapisane w Dropboxie przez moduł premiery.
    • Dla zgłoszonej umowy CTR-2026-C5AEA626 finalny PDF został odtworzony i zapisany, więc link pobierania nie powinien już zwracać Not found.
  375. v2.80.826 czerwca 2026, 18:40

    Umowy — link w mailu + panel Umów dla Artysty

    • Mail po podpisaniu zawiera obok przycisku także widoczny link tekstowy do PDF — działa nawet w klientach blokujących przyciski.
    • Lista /admin/umowy: przycisk „PDF” pojawia się również dla podpisanych umów bez Dropbox URL (fallback /api/public/contract-signed/<id>).
    • Nowy panel dla Artysty: /umowy — lista projektów z umowami, status, „Podpisz” (magic-link) i pobieranie podpisanego PDF.
    • Link „Umowy” dodany do menu Artysty (sekcja Operacje).
  376. v2.80.726 czerwca 2026, 18:10

    Umowy — mail finalny z gwarantowanym linkiem do PDF

    • Nagłówek maila zmieniony z „ID Records · Pressroom” na „ID Records · Umowy”.
    • W mailu po podpisaniu zawsze jest przycisk „Pobierz podpisany PDF” — jeśli Dropbox padł, link prowadzi do /api/public/contract-signed/<documentId>.
    • Nowy publiczny endpoint umie odtworzyć PDF na żywo z bazy, jeśli plik nigdy się nie zuploadował.
  377. v2.80.626 czerwca 2026, 17:30

    Umowy — admin jako sygnatariusz + naprawione linki w mailach

    • Wydawca (admin) jest teraz dodawany jako osobny wiersz w panelu sygnatariuszy.
    • Po podpisie artysty pojawia się dedykowany przycisk „Podpisz jako wydawca →” (otwiera /podpis/<token>).
    • Mail „artysta podpisał, czeka Twój podpis” linkuje do publicznego widoku podpisu zamiast do /admin/umowy/* (koniec 404 z maila).
    • Token dla admina jest auto-tworzony i recyklowany dopóki nie zostanie użyty.
  378. v2.80.526 czerwca 2026, 14:10

    Umowy — admin podpisuje w widoku Autenti

    • Admin ma teraz dokładnie ten sam, uproszczony i bezpieczny widok podpisu co Artysta — nowy przycisk „Podpisz w panelu Autenti →” otwiera /podpis/<token>.
    • Banner „Artysta podpisał” w panelu umowy ma dwa CTA: otwarcie panelu podpisu i ponowną wysyłkę e-maila.
    • Strona /admin/umowy/<id> nie zawiesza się już na „Wczytuję umowę…” — przy błędzie autoryzacji pokazuje komunikat z przyciskiem ponowienia.
  379. v2.80.426 czerwca 2026, 13:35

    Umowy — ponowne powiadomienie do wydawcy

    • W panelu umowy (admin) po podpisie Artysty pojawia się przycisk „Wyślij ponownie do mnie”, który dosyła mail z linkiem do panelu podpisu.
    • Nie trzeba cofać procesu ani wystawiać umowy od nowa — wiadomość jedzie tym samym kanałem co poprzednio (EmailLabs).
  380. v2.80.326 czerwca 2026, 13:05

    Umowy — poprawka linku dla podpisu labelu

    • Mail „Twoja kolej — podpisz umowę” nie używa już na sztywno hub.idrecords.pl, tylko buduje link z domeny aktualnego procesu podpisu.
    • To usuwa powtórkę 404 przy kliknięciu przycisku z maila po podpisie Artysty w środowisku testowym/preview.
    • Na stronie podpisu i w mailu dla Artysty zmieniono branding z „ID Records · Pressroom” na „ID Records · Umowy”.
  381. v2.80.226 czerwca 2026, 12:45

    Umowy — koniec 404 po kliknięciu linku z maila

    • Link do podpisu jest teraz budowany z domeny, na której admin faktycznie klika wysyłkę lub ponowną wysyłkę.
    • Dzięki temu testy z preview prowadzą do preview, a po publikacji produkcyjne maile prowadzą na hub.idrecords.pl.
    • Sama strona podpisu działa — poprawka dotyczyła błędnego hosta w wygenerowanym e-mailu.
  382. v2.80.126 czerwca 2026, 12:25

    Umowy — naprawa realnej wysyłki magic-linków

    • Maile z linkiem do podpisu umowy są teraz wysyłane natychmiast przez stabilny kanał systemowy EmailLabs, a nie tylko przez kolejkę Lovable Emails zależną od statusu domeny.
    • Panel wysyłek pokazuje już nie tylko licznik kliknięć „Wyślij ponownie”, ale też status dostarczenia do bramki albo błąd wysyłki.
    • Link dla neomusicpromo@gmail.com został dosłany awaryjnie ręcznie i zapisany w logu wysyłek.
  383. v2.79.45 lipca 2026, 12:00

    Umowy — czytnik PDF z zoomem +/- i resetem

    • Podgląd PDF dostał pasek zoomu: pomniejsz, powiększ, reset do 100% oraz wyświetlanie aktualnej skali.
    • Zoom działa zarówno w modalu admina (Podgląd umowy), jak i na publicznej stronie /podpis/<token> dla Artysty.
    • Przy powiększaniu strony są renderowane na nowo w wyższej rozdzielczości, więc tekst pozostaje ostry.
  384. v2.79.35 lipca 2026, 11:30

    Umowy — czytnik PDF bez blokady Chrome + podgląd na stronie podpisu

    • Podgląd PDF nie używa już iframe z Dropboxem — backend pobiera plik, a frontend renderuje strony na canvas przez PDF.js.
    • Chrome nie powinien już pokazywać komunikatu „ta strona została zablokowana”, bo nie osadzamy zewnętrznej strony pobierania PDF.
    • Publiczna strona /podpis/<token> dla Artysty pokazuje treść PDF umowy przed zaznaczeniem oświadczenia i kliknięciem „Podpisuję”.
  385. v2.79.15 lipca 2026, 10:00

    Sekcja Umowa — wbudowany czytnik PDF (jak w Autenti)

    • Klik „Podgląd” otwiera teraz inline modal z osadzonym PDF — nie trzeba nic pobierać, by przeczytać umowę.
    • W nagłówku czytnika: „Nowa karta” i „Pobierz” + zamknięcie klawiszem Esc lub klikiem w tło.
    • Działa zarówno dla wgranego PDF umowy, jak i dla finalnego PDF podpisanego (Dropbox temporary link, podstawiany on-demand).
  386. v2.79.04 lipca 2026, 12:00

    Artist HUB — Umowy „Autenti-style” (magic-link + Certyfikat Podpisu)

    • Admin klika „Wyślij umowę” — każdy sygnatariusz dostaje e-mail z bezpiecznym linkiem (ważnym 30 dni); żadnego skanowania, drukowania, zakładania kont.
    • Publiczna strona /podpis/<token>: artysta widzi treść umowy (PDF/JSON), zaznacza oświadczenie i klika „Podpisuję” (art. 78¹ KC) — gotowe.
    • Po podpisaniu przez wszystkie strony HUB sam generuje finalny PDF z Certyfikatem Podpisu (sygnatariusze, czasy, IP, SHA-256 treści, QR weryfikacyjny) i wysyła go mailem do wszystkich.
    • Admin w sekcji umowy ma panel „Wysyłki e-maili” — widzi czy link został otwarty / podpisany, może „Wyślij ponownie” lub skopiować adres, pobiera podpisany PDF jednym kliknięciem.
    • Backend: release_signing_links (tokeny), kolumny contract_signed_pdf_url + contract_content_hash + contract_document_id, dwa szablony Resend (contract-to-sign, contract-signed).
  387. v2.78.13 lipca 2026, 15:00

    Fix: generator pomysłów (Artist) — koniec błędu JSON

    • AI gateway dostaje teraz `response_format: json_object` + mocniejszy parser (fences ```json, śmieci przed/po, fallback regex).
    • Tryb Flash używa `google/gemini-2.5-flash` (oficjalnie wspiera JSON mode), Pro nadal GPT-5.
    • Limit tokenów podniesiony do 2400 — koniec ucinania dłuższych list pomysłów w połowie zdania.
  388. v2.78.03 lipca 2026, 11:00

    AjDi — Header LIVE, powiadomienia real-time i messenger 1:1

    • Powiadomienia w nagłówku odświeżają się natychmiast (Supabase realtime channels) — bez przeładowania.
    • Pełny messenger 1:1: lista konwersacji, wyszukiwarka fanów po nicku/handle, widok wątku z auto-scroll i Enter = wyślij.
    • Trigger DB automatycznie tworzy powiadomienie dla odbiorcy wiadomości i odczyt po wejściu w wątek.
    • /ajdi/powiadomienia z licznikiem unread i akcją „Oznacz wszystkie".
  389. v2.77.02 lipca 2026, 10:00

    AjDi — Profile fanów 2.0 (rangi per fandom + odznaki)

    • Każdy fan ma teraz osobną rangę w każdym fandomie, z paskiem progresu od Ziarna do Legendy.
    • Nowa gablota odznak na profilu — widać zdobyte i zablokowane cele z bonusowymi punktami.
    • Strona /ajdi/<artysta>/osiagniecia pokazuje wszystkie osiągnięcia danego fandomu i postęp gracza.
    • 8 startowych odznak globalnych (Pierwszy krok, Mistrz Quizu, Złoty głos, Magnes na reakcje i więcej).
  390. v2.76.31 lipca 2026, 12:30

    AjDi Karaoke — SingStar zawsze grywalny (demo nutki)

    • Tryb SingStar nie jest już blokowany na trackach bez pitch-mapy — generujemy demo-nutki z LRC lub równomiernie z długości utworu.
    • Plakietka "Tryb demo" wyjaśnia, że admin może wygenerować prawdziwą pitch-mapę przez AI.
  391. v2.76.21 lipca 2026, 12:00

    AjDi — Karaoke Solo + picker tracków w SingStar Battle

    • Nowa gra "Karaoke Solo 🎤" w hubie Strefy Gier — wybierasz utwór i śpiewasz bez bitwy (klasyk gościnnie, SingStar po zalogowaniu).
    • W SingStar Battle "Wybierz utwór" pokazuje teraz listę tracków karaoke fandomu zamiast wyrzucać na stronę fandomu.
    • Lista tracków oznacza utwory z pitch-mapą plakietką "SingStar".
  392. v2.76.11 lipca 2026, 11:30

    Hotfix AjDi — kafelki gier otwierają właściwe gry

    • Naprawiony routing Strefy Gier: szczegół gry nie jest już dzieckiem huba bez Outletu, więc klik w kafelek przechodzi do konkretnego ekranu gry.
    • Dotyczy m.in. Quiz Battle, Trivia Daily, Predict the Charts, Lyric Guess, Music Memory, Beat Tap, Fandom Raid i Karaoke Tournament.
  393. v2.76.01 lipca 2026, 11:00

    AjDi Tura A — oceny redakcyjne + edytor sekcji + Dropbox wideo

    • PostComposer ma pełny edytor sekcji drag&drop (nagłówek / paragraf / obraz / wideo / cytat) z dodawaniem, usuwaniem, edycją i przesuwaniem góra-dół.
    • Wideo i audio z edytora trafiają teraz prosto na Dropbox (namespace fandom-posts) — bez Lovable Cloud, bez kosztów storage. Nowy typ posta: gallery (wiele zdjęć).
    • Admin i moderator fandomu mogą oceniać posty 1–5 gwiazdek z notatką redakcyjną. Quality score liczy się automatycznie (oceny + reakcje). Editor's Pick jako odznaka.
    • Nowy hub admina: /admin/moderacja-postow — kolejka postów z filtrem statusu, panel oceny inline.
    • Gry solo (lyric-guess, music-memory, beat-tap, trivia-daily) nie mają już hard login-wall — gość gra w demo, zalogowany zbiera punkty do rankingu.
  394. v2.75.030 czerwca 2026, 11:00

    Strefa Fanów SF-2 — pełny edytor 14 typów postów + miniaturki w feedzie

    • PostComposer dostał strukturalne pola dla każdego z 14 typów contentu (cytat, Q&A, event z datą i miejscem, playlist z listą utworów, cover, dance, outfit, action z CTA i deadlinem, photo/art/drawing z uploadem lub generowaniem AI).
    • Karty w feedzie /ajdi i w fandomie pokazują teraz prawdziwą miniaturkę z cover_url zamiast samego gradientu.
    • Podstrony postów renderują strukturalne payloady — osadzony cytat, lista utworów, karta eventu, link do coveru itp.
    • Linki w portalu pomijają fandomy bez sluga, więc nie da się już wejść na /ajdi/undefined/post/…
  395. v2.74.229 czerwca 2026, 17:00

    Strefa Fanów SF-1.3 — profile fanów wreszcie się otwierają + konta testowe z treścią

    • **🐛 „Profil nie istnieje" naprawione.** getFanProfile czytał tabelę fans publishable-key clientem, a fans ma RLS tylko dla zalogowanego usera → każdy profil wracał jako null. Przełączone na server-side admin clienta z białą listą publicznych kolumn (bez emaila/IP).
    • **👥 testkonto / testkonto2 / testkonto3 mają teraz pełne profile fanów** — avatary, bio, role w Alchemist Project Fandom (admin_fandomu / moderator / fan), punkty (4500 / 1850 / 720) i powitalne posty z komentarzami.
    • **🏆 Liderbordy fandomu** też przeszły na admin clienta — wcześniej zwracały puste listy z tego samego powodu.
  396. v2.74.129 czerwca 2026, 15:30

    Fix: klik w fana z postu bez autora już nie pokazuje pustego fandomu

    • **🐛 Pusty fanId → /ajdi/fan/ → matchowało /ajdi/$artistSlug z artistSlug="fan".** Skutek: po kliknięciu pojawiało się „Tego fandomu jeszcze nie ma". Teraz posty/komentarze bez author_fan_id renderują się jako „Redakcja AjDi · official" bez klikalnego linku.
    • Dotyczy feedu fandomu, podstrony posta i listy komentarzy.
  397. v2.74.029 czerwca 2026, 14:00

    Strefa Fanów SF-1.1 — nagłówek AjDi (avatar, ranga, powiadomienia, messenger)

    • **🧑‍🚀 Górny pasek AjDi w stylu portalu.** Każda strona /ajdi/* ma teraz sticky header z logo, search-em, dzwoneczkiem powiadomień, kopertą wiadomości i kartą zalogowanego fana — avatar + nick + gradientowa ranga (Ziarno → Brąz → Srebro → Złoto → Platyna → Diament → Legenda) + licznik punktów.
    • **🔔 Powiadomienia /ajdi/powiadomienia.** Lista 50 ostatnich zdarzeń punktowych zalogowanego fana: kto dał 👍 na post, gdzie wybrano Twój komentarz jako najlepszy, plus admin_reason. Linkuje wprost do fandomu.
    • **💬 Wiadomości /ajdi/wiadomosci.** Placeholder kierujący na czat fandomu — pełny DM między fanami w SF-3. Nie ma już 404.
    • **👤 Klik w avatar = profil fana.** Karta usera w nagłówku prowadzi do publicznego profilu /ajdi/fan/:fanId, więc każdy widzi swoje punkty, fandomy, posty i historię aktywności.
    • **🔧 Fix routingu post-detail.** Restart dev servera po dodaniu route'ów /ajdi/:artist/post/:postId — wcześniej route tree był stale i klik w post dawał 404.
  398. v2.73.029 czerwca 2026, 11:00

    Strefa Fanów SF-1 — podstrony postów, punkty redaktora, najlepszy komentarz, profile fanów

    • **📰 Każdy post = pełnoprawna podstrona.** Nowa trasa `/ajdi/:artistSlug/post/:postId` z mediami (zdjęcia/video/audio), pełną treścią, autorem, fandomem, akcjami 👍/👎, reakcjami, share i sekcją dyskusji. Karty w feedzie linkują do podstrony zamiast rozwijać mały komentarz pod spodem.
    • **🏆 Punkty redaktora w stylu starego Fandoms — nowocześnie.** Pod każdym postem panel "Redaktor zarobił X pkt" z breakdownem: jakość, popularność (👍), wsparcie (reakcje), najlepsze komenty, wyróżnienia/kary. Punkty są realnie naliczane do `fan_score_events`, podbijają `global_score` i rangę fana (seed → bronze → silver → gold → platinum → diamond → legendary).
    • **⭐ Najlepszy komentarz +50 pkt.** Autor posta (lub admin) może oznaczyć komentarz jako najlepszy. Komentator dostaje bonus 50 pkt i plakietkę "najlepszy" w wątku.
    • **👤 Publiczne profile fanów /ajdi/fan/:fanId.** Avatar, bio, ranga, łączny score, kategorie aktywności (redaktor / komentator / gracz / znawca), fandomy z punktami, ostatnie posty, komentarze, wyniki w grach i historia 30 ostatnich zarobionych punktów.
    • **🔗 Klikalne avatary i nazwy.** W feedzie, na podstronie posta i w komentarzach autorzy linkują do swoich profili.
  399. v2.72.028 czerwca 2026, 18:00

    Strefa Fanów R3 — AjDi jako portal, composer 14 typów i naprawa pustych gier

    • **📰 /ajdi przebudowane z reklamówki w portal fandomowy.** Jest sticky top-nav w stylu portalu, sekcja fandomów, żywy feed postów ze wszystkich fandomów, filtry Hoty/Najlepsze/Najnowsze, karty z jakością posta, blok gier i sidebar z online/największe fandomy/Fandom Cup.
    • **✍️ Composer 14 typów treści w fandomie.** W /ajdi/:artistSlug członek fandomu może wybrać: artykuł, zdjęcie, wideo, cytat, Q&A, event, outfit, playlistę, akcję, story, fanart, cover, dance albo rysunek — każdy z opisem i dopasowanym placeholderem.
    • **🎨 /admin/fandoms — koniec białego modalowego koszmarka.** Tworzenie fandomu ma teraz ciemny slate modal spójny z admin hubem, czytelne pola, opis procesu i subtelne akcje.
    • **🎮 Gry nie pokazują pustki przy braku katalogu.** Lyric Guess i Music Memory dostały demo fallback, więc da się wejść i testować gameplay nawet zanim admin załaduje tracki karaoke. Login do gier kieruje na /login z powrotem do konkretnej gry.
  400. v2.71.028 czerwca 2026, 16:00

    Strefa Fanów R2 — seed demo treści + pasek „Jakość posta"

    • **🪄 Seed demo content jednym klikiem.** Przy każdym fandomie w `/admin/fandoms` pojawił się przycisk „Seed demo". Tworzy 4 demo-fanów (Ola, Kuba Beats, Marta Lirycznie, Fan #27) z rolami redaktor/moderator/fan, 8 postów różnych typów — artykuł-wywiad, cytat, playlist TOP 10, Q&A przed koncertem, outfit, story z 2019, fanart, akcja Spotify Wrapped — każdy z realnymi komentarzami i 4 reakcjami. Idempotentne: nie dubluje jeśli fandom ma już ≥5 postów.
    • **📊 Pasek „Jakość posta %" na każdej karcie postu.** Inspiracja old-school fandoms.pl — gradient od emerald/cyan (świetny post) przez amber/rose (mieszane reakcje) do fuchsia (kontrowersyjny). Liczony z upvotes + reakcji. Pokazuje się dopiero gdy post ma ≥3 reakcji, żeby nowe posty nie wyglądały „karane".
    • **🎯 Dlaczego to ważne:** dotąd każde wejście na fandom witało pustym placeholderem „Bądź pierwszy". Po jednym kliknięciu admina każdy fandom prezentuje się jak żywa społeczność z dyskusjami, różnorodnym contentem i autorami-fanami w różnych rolach. To baza pod kolejne R3 (composer 14 typów, sidebar online/biggest fandoms).
  401. v2.70.028 czerwca 2026, 10:00

    Strefa Fanów R1 — start naprawy: realne logowanie + stonowany shell admina

    • **🔑 Logowanie do Strefy Fana z hasłem.** Ekran „Wejdź do Strefy Fana" (`/talentobranie/fan`) dostał pełny formularz: e-mail + hasło (Zaloguj), „Załóż konto", „Magic link", „Nie pamiętam hasła", obok przycisku Google. Koniec ślepego zaułku przy próbie wejścia do gier.
    • **🎨 `AjdiAdminShell` v3 — koniec oczojebnych headerów.** Zamiast gradientowej różowo-cyjanowej płachty na pół ekranu: ciemny slate, cienka pionowa kreska w kolorze modułu, eyebrow w akcentowym tekście, czytelna typografia. Zmiana globalna — dotyczy Moderacji, Gier, Pulse, Fandomów, Karaoke, Quizów, AI-paneli, Sentymentu.
    • **📋 Plan R1 (kolejne mikro-iteracje):** composer 14 typów postów dla fana, realna grywalność Karaoke / Quizów / Memory / Lyric Guess / Beat Tap (reszta gier oznaczona „soon"), seed demo (1 track karaoke, 1 quiz, 3 posty), audyt 404 na publicznych route'ach AjDi. KISS/BANG i Talentobranie wstrzymane na życzenie.
  402. v2.69.027 czerwca 2026, 12:00

    Tura 4 (cz.1) — Unifikacja admina Strefy Fanów + brakujące panele + landing selekcji Talentobrania

    • **🎨 `AjdiAdminShell` + `AjdiCard` + `AjdiSection`** — wspólny jasny shell (slate-50, biały content, kolorowy akcent tylko jako 1.5px pasek + chip) zastępuje neonowe gradientowe headery w `/admin/fandoms`, `/admin/cup`, `/admin/partner-rewards`, `/admin/caption-helper`, `/admin/quizy`, `/admin/karaoke`. Spójna typografia, eyebrow, backTo, publicPreview, actions — zawsze w tym samym miejscu.
    • **🛡 `/admin/moderacja` — pełen hub moderacji** w jednym miejscu: tabs **Posty fandomów · Komentarze fandomów · Posty Talentobrania · Komentarze Talentobrania · KISS·BANG zgłoszenia · Reporty użytkowników**. Filtry status (Do oceny / Zatwierdzone / Ukryte / Wszystko), search po treści, akcje (zatwierdź / ukryj / oznacz). Pobiera bezpiecznie z service_role; mapuje różne enumy statusów do wspólnego widoku.
    • **🎮 `/admin/gry` — hub 13 trybów rywalizacji**: Karaoke, Karaoke Turnieje, SingStar Live 1:1, SingStar Challenges, Quiz Battle, Quizy & Trivia, Lyric Guess, Music Memory, Beat Tap, Fandom Raid, Trivia Streak, Fan Contest, Topki fanów. Każda karta z gradientem akcent, statusem (live/beta/soon) i linkiem do dedykowanego panelu.
    • **📊 `/admin/ajdi/pulse` — własny dashboard** zamiast linkowania do social pulse. KPI (fandomy, fani, punkty, alerty), Top fandomy z linkami do hubów, alerty balansu pasji muzyka:hobby (proporcja vs floor). To dawne „Pulse AjDi kieruje do Pulse" naprawione.
    • **✍️ `/admin/caption-helper` v2** — z 4 zmiennych do 12+: ton dominujący + drugi ton, kanał, **platforma** (IG/TT/X/FB/YT Shorts/Spotify Canvas/Email/Press), **język** (PL/EN/UA), **długość** (short/medium/long), **cel** (reach/engagement/save/sales/follow), **hashtag mix** (PL/EN/Mix/none), **CTA type** (link/comment/share/save/follow/presave/none), **emoji on/off**, **zakazane słowa**, **wymagane słowa**, **liczba wariantów A/B** (1–5). Wynik zwraca też alt_text, hook_3s i 1–5 wariantów.
    • **🧩 `/admin/quizy` — composer ręczny + AI** zamiast tylko AI: nowy przycisk „Twórz ręcznie" startuje z pustym pytaniem do edycji w pełnym builderze (pytanie, 4 odpowiedzi, multi-correct, punkty, wyjaśnienie, weights personality). AI Generator pozostaje obok jako równorzędna ścieżka.
    • **🚀 `/talentobranie/selekcja` — publiczna landing „Jak działa selekcja"** zamówiona w Turze 4: 5 etapów (Zgłoszenie · Bramki · Wyzwania · Bitwy · Finał) z infografiką (kto ocenia, ile osób przechodzi dalej), 5 ról (Fan · Ekspert · Dziennikarz · Partner · Influencer) z opisami i wagą głosu, sekcja transparentności (Ranking live / Feed publiczny / Live sesje) i CTA do `/talentobranie/dolacz` i `/talentobranie/fan`. SEO meta, mobile-first, gradient emerald→lime→amber w spójności z Talentobraniem.
    • **🔗 `/admin/ajdi` hub zaktualizowany** — Pulse poprawnie linkuje do `/admin/ajdi/pulse` (nie do social pulse), dodane wpisy: Hub moderacji, Hub wszystkich gier, Caption Helper v2 oznaczony jako rozbudowany. Quizy opisane jako „ręcznie + AI".
    • **Status remedial planu:** ✅ Tura 1 (admin polish, flagi, konta testowe), ✅ Tura 2 (engagement profile + AI parity), ✅ Tura 3 (bottom-nav, QuickGrid, konsolidacja /admin/ajdi), 🔄 **Tura 4 cz.1 (UNIFIKACJA — gotowa)**, ⏭ Tura 4 cz.2: rebuild landingu `/ajdi` + Content Composer dla 14 typów treści + indywidualne panele per gra + szczegółowa moderacja komentarzy z threadami.
  403. v2.66.026 czerwca 2026, 21:00

    Tura 3 — Reorganizacja Strefy Fanów: bottom-nav, hub kafelkowy, konsolidacja /admin/ajdi

    • **📱 Dolny pasek nawigacji AjDi (mobile)** — nowy komponent `AjdiBottomNav` montowany na `/ajdi` i `/ajdi/:artistSlug`. Pięć zakładek pod kciuk: Fandom · Graj · Grupy · Dla Ciebie · Ja (na hubie fandomu). Sticky, safe-area-aware, ukryty na desktopie (md:hidden). Koniec gubienia się między 12 osobnymi URL-ami.
    • **🎯 Hub fandomu dostaje QuickGrid** — pięć kolorowych kafelków-skrótów nad zakładkami: Społeczność · Graj · Mini-grupy · Cup · Dla Ciebie. Każdy linkuje do istniejącej podstrony (`/ajdi/:slug/gry`, `/ajdi/:slug/grupy`, `/ajdi/cup`, `/ajdi/dla-ciebie`) — to były routes, które do tej pory nie miały żadnego wejścia z hubu fandomu.
    • **🧹 `/admin/ajdi` skonsolidowany** — zamiast 20 neonowych kafelków: 5 spokojnych grup tematycznych (Fandomy & scoring · Moderacja & sentyment · Highlights & content AI · Push & broadcasty · Karaoke, gry & muzyka). Każda grupa to karta w stylu admina (slate-900/40) z listą pod-linków + krótkim opisem co tam jest. Plus pasek „Podgląd jako fan / artysta" otwierający publiczne ekrany w nowej karcie.
    • Stare routes (`/admin/ai-moderator`, `/admin/ai-highlights`, `/admin/fan-push`, `/admin/karaoke` itd.) zostają nietknięte — tylko hub się zmienia, każdy URL nadal działa i da się go zalinkować bezpośrednio.
  404. v2.65.026 czerwca 2026, 19:00

    Tura 2 — Profil zaangażowania artysty (Talentobranie + Strefa Fanów) + AI parity

    • **🎭 Dwie nowe sekcje w `/profile` artysty** — „Zaangażowanie w Talentobranie" (5 ról: Obserwator, Komentator, Promocja/PR, Mentor, Juror) i „Zaangażowanie w Strefę Fanów" (9 kategorii: gry, gamifikacja, przedpremiery, oceny utworów, karaoke, komunikacja promo, raidy, highlights, fan PR). Każda strefa ma duży toggle „uczestniczę" i suwaki 1–5 per kategoria — kliknięcie wybranego poziomu czyści wybór.
    • **🤖 AI dostaje ENGAGEMENT PROFILE w każdym prompt'cie** — `buildArtistAiContext` + `formatArtistContextForPrompt` doklejają nową sekcję do kontekstu: jeśli `engagement.fandom.participate=false` lub `engagement.talentobranie.participate=false`, generator pomysłów / radar / music-match dostaje wyraźną instrukcję „NIE proponuj akcji w tej strefie". Priorytety ≥4 dostają boost (np. `przedpremiery=5/5` → AI woli pomysły presave/waveform).
    • **👁 Presskit admina widzi 1:1 to co artysta** — w `/admin/artysci/:id/profil` doszły dwie sekcje read-only „Zaangażowanie · Talentobranie" i „Zaangażowanie · Strefa Fanów" pokazujące status uczestnictwa + posortowaną listę priorytetów (np. `gry: 5/5 · karaoke: 4/5 · raidy: 3/5`). Zero rozjazdu między tym, co artysta wpisał, a tym, co widzi label.
    • **🧱 Reużywalny komponent** — `src/components/artist/profile/EngagementSection.tsx` z eksportowanymi presetami `TALENTOBRANIE_ITEMS` i `FANDOM_ITEMS`, accent per strefa (fuchsia/emerald), pełen mobile-first (sm:grid-cols-2, tap target 8×8 dla każdego stopnia priorytetu). Schema rozszerzona w `PERSONALITY_SCHEMA` (`engagement: { talentobranie, fandom }`) — istniejące dane się nie psują, merge na top-level kluczach `personality` chroni częściowe zapisy.
  405. v2.64.126 czerwca 2026, 17:30

    Konta testowe na klik

    • **🧪 Seed kont testowych w /admin/system-config** — nowa karta „Konta testowe" z przyciskiem „Utwórz / odśwież konta testowe". Jednym kliknięciem powstają trzy auto-confirmed konta z rolą `fan`: `testkonto@idrecords.pl`, `testkonto2@idrecords.pl`, `testkonto3@idrecords.pl`, hasło dla każdego: `testujemy`.
    • **Idempotentne** — drugi klik nie duplikuje userów, tylko resetuje hasło na `testujemy` i potwierdza email. Emaile są automatycznie dopisywane do `test_user_emails` w `system_config`, więc od razu widzą Strefę Fanów, Talentobranie i KISS·BANG zanim odblokujemy te strefy globalnie.
    • Server fn `seedTestAccounts` (guarded `requireAdmin`) używa `supabaseAdmin.auth.admin.createUser` + upsertu w `user_roles` — bezpieczne, bez ręcznego grzebania w `auth.*`.
  406. v2.64.026 czerwca 2026, 16:00

    Higiena admina, konta testowe i ukryty Generator Pomysłów u artysty

    • **🎨 Spokojniejsze kafle hubów w /admin** — AjDi / Talentobranie / KISS·BANG przestały kłuć w oczy. Zamiast neonowych gradientów fuksja→rose: ciemne karty na `slate-900/40`, cienki border `white/8`, ikonka w okrągłym wgłębieniu w akcencie marki, subtelny gradient akcentowy budzony na hover. Spójne z resztą admina.
    • **🧪 Konta testowe + globalne flagi widoczności** — nowe klucze w `/admin/system-config`: `test_user_ids` (UUID po przecinku/nowych liniach), `test_user_emails` (alternatywnie po emailu), `public_zone_fandom_enabled` i `public_zone_talentobranie_enabled` (`on`/`off`). Server fn `getPublicZoneAccess` zwraca `{ isAdmin, isTestUser, fandom.canAccess, talentobranie.canAccess }` — gotowe pod kolejne tury.
    • **🤐 Generator Pomysłów ukryty u artysty** — `/artist/ideas` nie ma już przycisku „Wygeneruj pomysły" ani `IdeaGeneratorDialog`. Pomysły dorzuca wyłącznie wydawca w `/admin/ideas`; artysta widzi gotowe pozycje, oznacza status i komentuje.
    • **Strefy publiczne dla artystów**: linki do Strefy Fanów i Talentobrania nie pojawiają się w `ArtistShell` — artyści po prostu nie mają wejścia w te zakładki, dopóki nie odblokujemy globalnie. Strony zostają publiczne (SEO/share działa dalej).
  407. v2.63.026 czerwca 2026, 10:00

    Finał planu — Karaoke Tournament, mini-fandomy, SingStar Live 1:1 i alerty balansu w adminie

    • **🏆 Karaoke Tournament** — nowe tabele `fandom_karaoke_tournaments`, `fandom_karaoke_tournament_entries`, `fandom_karaoke_tournament_matches`. Twórca (admin lub artysta) ustala drabinkę 4/8/16 i track. Fani dołączają (`joinTournament`), `generateBracket` seeduje 1 vs N, 2 vs N-1, wypełnia bye'ami, tworzy wszystkie rundy. `reportMatchResult` propaguje zwycięzcę do kolejnej rundy aż do finału (auto-mark winnera turnieju). UI: `/ajdi/turniej/$tournamentId` — drzewko z wynikami, polling co 5 s, kafel zwycięzcy w gradiencie złota.
    • **🌈 Mini-fandomy tematyczne** — `fandom_subgroups` + `fandom_subgroup_members`. Artysta tworzy podgrupy tylko w kategoriach swoich pasji (np. „Gracze Kayah" w kat. games). Fani dołączają/wychodzą jednym kliknięciem. Strona `/ajdi/<artysta>/grupy` pokazuje gradientowe karty z emoji kategorii, kompozytor dla właściciela.
    • **🎤 SingStar Live 1:1** — `fandom_singstar_live_battles` z `REPLICA IDENTITY FULL` w `supabase_realtime`. Host tworzy bitwę (`createLiveBattle` → invite_code 6 znaków), gość wchodzi po kodzie (`joinLiveBattle` → status live), obaj wpisują wynik (`submitLiveScore`) — system auto-wyłania zwycięzcę. Lobby w `/ajdi/<artysta>/gry/singstar-challenge` (lista otwartych bitew, pole na kod), arena `/ajdi/singstar-live/$battleId` ze scoreboardem 2-kolumnowym i realtime sub na `postgres_changes`.
    • **⚖️ Admin Balance Alerts** — `adminListBalanceAlerts` przelatuje wszystkie aktywne fandomy, liczy 14-dniowy udział muzyki vs pasji i flaguje te poniżej `music_share_floor` (próg ≥5 postów). Sekcja w `/admin/fandoms` u góry: czerwony pasek = alert, zielony = OK; każdy wiersz pokazuje % muzyki, pasje fandomu i link do hubu.
    • **Raport końcowy planu**: ✅ Tura A (UI polish), ✅ Tura B (push + karaoke + spotify), ✅ Tura C (AI: moderator, highlights, sentiment, captions, press brief), ✅ Tura D (press mailer, spotify export). ✅ Karaoke v3 (AI sync, edytor, duet, video, HYPE). ✅ 9/9 gier (Quiz Battle, Trivia, Predict, Lyric, Memory, Beat, Raid, **Karaoke Tournament**, **SingStar Live 1:1**). ✅ Multi-kategorie + mini-fandomy. ✅ Admin balance alerts.
  408. v2.62.025 czerwca 2026, 22:00

    Multi-kategorie fandomów w akcji — panel artysty, chipy w feedzie, dashboard balansu

    • **Panel artysty /artist/fandom-pasje** — artysta wybiera do 4 dodatkowych pasji (gry, film, podróże, moda, jedzenie, sport, lifestyle, sztuka, tech, książki) z dużymi gradientowymi kartami w stylu gry. Suwaki sterują "music share floor" (próg muzyki w feedzie, 30–100%) i mnożnikiem punktów dla postów z pasji (×0.1–×1.0).
    • **Dashboard balansu 14-dniowego** — kafel pokazuje % muzyki w ostatnich 14 dniach, łączną liczbę postów i rozkład per kategoria (z emoji). Gdy udział muzyki < floor: czerwony alert z podpowiedzią ("pinnij muzyczny post lub zredukuj pasje").
    • **Feed AjDi z filtrem kategorii** — w hubie `/ajdi/<artysta>` pojawiają się chipy (Wszystko, 🎵 Muzyka + pasje fandomu). Filtrowanie działa server-side. Kompozytor postu dostaje selektor kategorii, każda karta postu pokazuje `CategoryBadge`.
    • **Serwerowa walidacja** — `createFandomPost` przyjmuje pole `category` i sprawdza, czy mieści się w `fandom.extra_categories` (poza "music"). W innym razie fallback na "music" — zero śmieci w bazie.
    • **Server fns**: `getFandomForArtist` (auth: właściciel/admin), rozszerzone `createFandomPost`/`listFandomPosts` o `category`. Reused: `getFandomCategories`, `setFandomCategories`, `getCategoryBalance`.
    • **Progress raport**: ✅ Karaoke v3 (AI, edytor, duet, video, HYPE), ✅ 7/9 gier (Quiz Battle, Trivia, Predict, Lyric, Memory, Beat, Raid), ✅ Multi-kategorie (schema + fns + panel artysty + UI feedu). ⏳ Zostało: alert balansu w admin/fandoms, Karaoke Tournament tree, mini-fandomy tematyczne, SingStar 1:1 battles na żywo.
  409. v2.61.025 czerwca 2026, 18:00

    Fandom Raid — koordynowane akcje fanów w oknie czasowym + chipy kategorii

    • **⚡ Fandom Raid** — nowe tabele `fandom_raids` i `fandom_raid_participations`. Admin tworzy akcję ("o 20:00 wszyscy streamujemy nowy singiel") z polami: typ (stream / share / comment / presave / custom), link, okno czasowe, cel uczestników, punkty za udział i **bonus zespołowy** gdy cel osiągnięty.
    • **Strona /ajdi/<artysta>/gry/fandom-raid** — sekcje "Trwa teraz", "Wkrótce" i "Zakończone". Karta raidu pokazuje odliczanie, pasek czasu raidu, progres celu (X/Y uczestników), przyciski "Zapisuję się" (dla scheduled) i "✅ Zrobione!" (dla live). HUD mobile-first z dużymi tap-targetami.
    • **Server fns**: `listFandomRaids` (z liczbą uczestników i derived_status live/scheduled/completed), `createFandomRaid` (admin only), `joinFandomRaid`, `completeFandomRaid` (zapisuje +points + bonus jeśli cel osiągnięty, dopisuje do `fandom_game_sessions` i `fandom_members.points_in_fandom`), `getMyRaidStatus`.
    • **RLS**: publicznie czytelne (każdy widzi raidy i listę uczestników), tworzenie tylko admin, dołączanie tylko zalogowani fani, update własnej partycypacji.
    • **🌈 CategoryChips + CategoryBadge** (`src/components/fandom/CategoryChips.tsx`) — komponenty do filtru feedu fandomu i identyfikacji wizualnej kategorii (muzyka = akcent fuchsia, non-music = subtelny). Gotowe do wpięcia w hub fandomu i pojedyncze posty.
    • **Następne**: panel artysty do wyboru pasji (`/artist/fandom-pasje`), wpięcie chipów w hub fandomu, alert admina gdy musicShare < 60%, mini-fandomy tematyczne, Karaoke Tournament drzewko.
  410. v2.60.025 czerwca 2026, 16:00

    Fandom Games cz. 2 + Multi-kategorie fandomów (BLOK B cd. + BLOK C start)

    • **🎵 Lyric Guess** — losujemy 5 fragmentów tekstu z LRC tracków karaoke fandomu, gracz wybiera utwór z 4 opcji. Trafiona odpowiedź = 200 pkt, +50% trafia do rankingu fandomu (`recordGameSession`).
    • **🧠 Music Memory** — siatka 12 kart (6 par) z tytułami utworów fandomu. Liczymy ruchy i czas: score = max(50, 1000 − ruchy×30 − sekundy×2). Multiplier 0.4 do pkt fandomu.
    • **🎧 Beat Tap** — rytmiczna gra na 4 torach (30 s, ~60 notek). Timing: <80 ms = 100, <160 ms = 60, <250 ms = 30. Combo mnoży bonus. Mobile-first przyciski lane'ów, glow na judge-line.
    • **🌈 Multi-kategorie fandomów** — `fandoms.extra_categories` (tablica do 4 kategorii: games / film / travel / fashion / food / sport / lifestyle / art / tech / books) + `non_music_weight` (domyślnie 0.3) + `music_share_floor` (domyślnie 0.6). Każdy `fandom_posts.category` (text) z domyślną wartością "music" + indeks (fandom_id, category).
    • **Server fns**: `getFandomCategories`, `setFandomCategories` (admin lub artysta-właściciel, max 4 extra), `getCategoryBalance` (liczy % muzyki w ostatnich 14 dniach — do ostrzeżenia gdy spadnie poniżej floor).
    • **`src/lib/fandom-categories.ts`** — definicje kategorii (label, emoji, kolor) + helpery `categoryAccent`, `categoryLabel`, `categoryEmoji` do feedu i chipów.
    • **Następne**: chipy kategorii w feedzie fandomu + filtr, panel artysty do wyboru pasji, ostrzeżenie admina gdy musicShare < floor, scoring posty non-music × 0.3, mini-fandomy (subgroups) i Fandom Raid.
  411. v2.59.025 czerwca 2026, 14:00

    Fandom Games — fundament: bitwy quizowe 1:1, wyzwania SingStar, trivia streak, predykcje (BLOK B start)

    • **⚔️ Quiz Battle 1:1 (realtime)** — nowa tabela `fandom_quiz_battles` + Supabase Realtime. Host zakłada bitwę (`createQuizBattle`), dostaje **kod zaproszenia** do udostępnienia. Rywal wbija kod (`joinQuizBattle`) → state `active`, system losuje 5 pytań z quizów fandomu. Wyniki updateowane na żywo (`updateBattleScore`), winner wyłaniany automatycznie po ostatniej rundzie. Lobby otwartych bitew per fandom (`listOpenBattles`).
    • **🎤 SingStar Challenges** — `fandom_singstar_challenges`: fan po dobrym wyniku może rzucić wyzwanie ("Pobij mój wynik na tym tracku"), dostaje link share. Tabela trzyma top response, expires_at (7 dni), state `open/beaten/expired`. Publicznie czytelne — każdy fandom widzi listę aktywnych challenge'ów.
    • **🔥 Trivia Daily Streak** — `fandom_trivia_streaks` per (fandom, fan). Każdy dzień gry = +1 streak (jeśli wczoraj też grał), reset jeśli przerwa. **Bonus pkt = min(streak × 10, 100)** + 50 jeśli perfect. `getTriviaStreak` zwraca aktualny streak do widgetu w hubie. Jedna gra dziennie (kolejna próba → `alreadyPlayed: true`).
    • **📈 Predict the Charts** — `fandom_chart_predictions`: fan przed premierą typuje pozycję singla na liście (1–50), `resolves_at` = data sprawdzenia (np. +7 dni po premierze). Po rozwiązaniu admin (lub cron) wpisuje `actual_position` i punkty: im bliżej, tym więcej.
    • **🎯 Uniwersalny log gier** — `fandom_game_sessions` (9 typów: quiz_battle, singstar_battle, lyric_guess, music_memory, beat_tap, trivia_daily, predict_charts, fandom_raid, karaoke_tournament). Jedna funkcja `recordGameSession({ gameType, score, meta, pointsMultiplier })` → zapis + automatyczne doliczenie punktów do `fandom_members.points_in_fandom` z mnożnikiem (default 0.5). `listGameLeaderboard` per gra, `listWeeklyTopPlayers` cross-game.
    • **Realtime włączony** dla `fandom_quiz_battles` i `fandom_game_sessions` — gracze widzą wynik rywala live, leaderboardy updateują się bez F5.
    • **RLS**: publicznie czytelne (rankingi, otwarte bitwy, challenge'e). Tworzenie wymaga zalogowanego fana, edycja własnych wpisów. Granty dla anon (read) i authenticated (read/write own).
    • **Następne (BLOK B cz. 2)**: UI hubu gier `/ajdi/<artysta>/gry`, ekrany rozgrywki Trivia Daily / Lyric Guess / Music Memory / Beat Tap, lobby Quiz Battle z presence (kto online), Fandom vs Fandom (tygodniowy cup), Karaoke Tournament drzewko.
  412. v2.58.025 czerwca 2026, 12:00

    Karaoke v3 — AI analiza audio + edytor drag&drop + DUET + tło wideo (BLOK A z planu)

    • **🤖 Prawdziwa analiza audio przez Gemini 2.5 Pro** — admin w `/admin/karaoke` ma teraz **trzy generatory pitch_map**: (1) **heurystyka** z LRC+tonacji (dotychczasowa, działa od ręki), (2) **AI z fullmix** (Gemini słucha podkładu i estymuje melodię wokalu), (3) **AI z wokalu** (Gemini analizuje osobny stem — najwyższa jakość). Pliki >18MB tniemy do pierwszych ~90 s (melodia i tak się powtarza). Walidacja: MIDI 36–96, sort po czasie, fallback do heurystyki gdy AI zwróci śmieci lub padnie (429/402/timeout). Każdy track ma badge **pitch_source** (`heuristic` / `AI fullmix` / `AI vocal`) widoczny w liście.
    • **🎼 Drag-and-drop edytor pitch_map** — koniec ręcznego JSON-a. Nowy komponent `PitchMapEditor` renderuje pełen canvas z **siatką MIDI (oktawy + skala podświetlone), siatką czasu (co 1 s + co 5 s pogrubione), play/pause podkładu, zoomem 1×/2×/4×/8×, undo/redo (do 30 kroków) i snap-do-skali tonacji**. Drag nuty pionowo = MIDI, poziomo = czas, prawy uchwyt = długość. **Klik w puste = dodaj nutę**, **dwuklik nuty = usuń**. Wszystko z time cursorem w real-time podczas odsłuchu.
    • **🎭 Tryb DUET — dwa pasy nut** — track może mieć **drugą partię** (`pitch_map_part2`). Admin włącza duet, ustawia etykiety głosów (default „Głos A / Głos B"), pierwsze włączenie **auto-kopiuje partię 1 → partia 2 z transpozycją o tercję wyżej** (gotowy harmoniczny szkielet). Edytor ma zakładki „🎤 A / 🎤 B" z różnymi kolorami nut (fuchsia/cyan). U fana **role selector przed startem** — wybiera czy śpiewa A czy B, druga partia widoczna jako **ghost line** (półprzezroczysty cyan/fuchsia). Wyniki zapisywane z mode `duet_a` / `duet_b` (osobne leaderboardy per rola).
    • **🎬 Tło wideo SingStar (efekt WOW)** — admin uploaduje **klip teledysku / live / lipsync artysty** (bucket `karaoke-bg`, prywatny + signed URL). Wybiera typ (MV / Live / Lipsync / Visualizer) i blur (0–20 px slider). U fana w trybie SingStar **wideo leci w tle pięciolinii** z `filter: blur(Xpx) brightness(0.5) saturate(1.3)`. Bez wideo → fallback z animowanymi gradientami + pulsującymi orbami. Tryb **HYPE** odpala się przy combo ≥10: tło rozjaśnia, linia „teraz" świeci amber glow, dodatkowe shadow blur na live pitch ball, ekranowy chip „🔥 HYPE ×N" w prawym górnym rogu.
    • **⏱️ Pre-game countdown 3-2-1** — start SingStara odpala fullscreen overlay z wielkim numerem (gradient fuchsia→amber→rose, scale-in animation per cyfra, 800 ms odstępy). Tryb klasyczny startuje od razu (bez countdownu).
    • **🎤 Wokal stem upload** — opcjonalny bucket `karaoke-vocals` (admin only write). Wgraj osobny acapella → odblokowuje przycisk **„🤖 AI z wokalu"** (znacznie lepsze nutki niż z fullmix).
    • **🌟 SingStar canvas v2** — dodane: floating bursts „+200 PERFECT" / „+100 GOOD" w kolorach trafień, glow przy każdym trafieniu (cień nuty), pasek czasu „teraz" świeci w HYPE, ghost line dla duetu przed głównymi nutkami, czystszy gradient tła zależny od combo.
    • **Migracja**: `fandom_karaoke_tracks` +`vocal_url`, +`pitch_source`, +`pitch_map_part2`, +`duet_enabled`, +`duet_label_1/2`, +`bg_video_url`, +`bg_video_kind`, +`bg_blur`. Buckety storage: `karaoke-vocals` + `karaoke-bg` (prywatne, admin write, signed URL read).
    • **Backend**: `karaoke-pitch-ai.functions.ts` rozszerzone o `savePitchMapPart`, `saveDuetConfig`, `saveBgConfig`, `saveVocalUrl`, **`analyzeAudioForPitchMap`** (fetch audio → base64 → Gemini 2.5 Pro multimodal z prompt + LRC + tonacją → parsuje JSON + clampuje). `karaoke-scores.functions.ts` przyjmuje nowe mody `duet_a` / `duet_b`.
    • **Frontend**: `PitchMapEditor.tsx` (nowy, drag&drop z snap-do-skali), `SingStarCanvas.tsx` v2 (duet + WOW), `/ajdi/karaoke/<trackId>` z bg video layer + countdown + role selector, `/admin/karaoke` z pełną sekcją duet + bg + vocal upload + 3 generatorami pitch.
    • **Następne (z planu)**: BLOK B — Fandom Games (Quiz Battle 1:1 realtime, Fandom vs Fandom, SingStar Battle, Lyric Guess, Music Memory, Beat Tap, Trivia Daily, Predict Charts, Fandom Raid, Karaoke Tournament). Potem BLOK C — fandomy multi-kategorii (gaming/film/podróże/moda) z hard rule 60% muzyki + mnożnik 0.3 dla non-music.
  413. v2.57.025 czerwca 2026, 10:00

    Karaoke v2 — AI auto-sync LRC + tryb SingStar z pięciolinią i punktacją

    • **🪄 AI Auto-Sync tekstu (LRC)** — admin wkleja zwykły tekst piosenki w `/admin/karaoke` i jednym klikiem generuje gotowy plik LRC z timestampami `[mm:ss.xx]`. Algorytm rozkłada czas proporcjonalnie do liczby sylab każdej linii (waga = samogłoski w PL+EN), z 4 s intro i 4 s outro. Wynik można doszlifować ręcznie w edytorze inline. Koniec wpisywania timestampów na pałę.
    • **🎮 SingStar Mode** — w `/ajdi/karaoke/<trackId>` nowy toggle „🎮 SingStar" obok „🎤 Klasycznego". Tryb renderuje **canvas pięciolinii** z poziomymi paskami target-nutek (kolory: 🟣 do trafienia / 🟡 perfect / 🟢 good / 🔴 miss), pływającym **różowym znacznikiem live pitch** śpiewaka i ruchomą linią „teraz". Pitch detection przez Web Audio API + **autokorelację (algorytm Chrisa Wilsona)** na `getUserMedia`, mediana z 5 próbek, gate głośności, sampling co 50 ms.
    • **🏆 Punktacja jak w grze** — każda nutka oceniana co tick: ≥50% sampli w ±0.5 półtonu = **perfect (200 pkt + combo)**, ≥40% w ±1.5 półtonu = **good (100 pkt + combo)**, mniej = **miss (combo reset)**. Co 5× combo dodatkowe **+50 pkt bonus**. Live HUD: Score / Combo / trafione/total. Po zakończeniu **ekran wyników** z ratingiem (Tone Deaf → Cool → Awesome → Superstar → Legend) i procentem accuracy.
    • **🎯 SingStar Pitch Map** — admin w `/admin/karaoke` generuje nutki z LRC + tonacji tracku (`music_key`). Generator estymuje melodię z 4 wzorców frazowych w skali durowej wokół toniki, dzielony na sylaby (PL+EN regex). To start — po graniu fanów można doszlifować. Bez nutek tryb SingStar pokazuje „🔒 brak melodii".
    • **💰 Wlewanie punktów do fandomu** — każdy track ma własny **mnożnik** `singstar_points_multiplier` (default 0.02, admin ustawia w panelu). Po zakończeniu śpiewania `score × multiplier` automatycznie ląduje w `fandom_members.points_in_fandom` członka. Przykład: 5000 pkt × 0.02 = +100 pkt fandomu. Wynik pokazuje **„+X pkt fandomu"** żeby fan widział efekt od razu.
    • **🏆 Leaderboard top 5** — pod recorderem widać aktualny ranking śpiewaków per track (avatar, nick, rating, accuracy %, score). Puste? „Bądź pierwszą osobą która zaśpiewała! 🎤". Nowa tabela `fandom_karaoke_scores` (track_id, fan_id, score, accuracy, max_combo, notes_hit/total, rating, recording_url, fandom_points_awarded) z publicznym RLS na SELECT i własnym INSERT.
    • **🎤 Dwa flowy wysyłki** — w trybie SingStar fan może: (a) **„Zapisz wynik (bez nagrania)"** — same punkty do leaderboardu, lub (b) **„Wyślij wynik + nagranie"** — wynik + plik audio jako talent submission do moderacji. Klasyczny tryb działa po staremu (tylko nagranie).
    • **Pliki**: migracja `fandom_karaoke_tracks.pitch_map + singstar_points_multiplier`, nowa tabela `fandom_karaoke_scores` (+ RLS + GRANT anon SELECT). Server fn: `karaoke-lrc-ai.functions.ts` (auto-sync + manual save), `karaoke-pitch-ai.functions.ts` (pitch map + multiplier), `karaoke-scores.functions.ts` (submit + leaderboardy). Klient: `pitch-detector.ts` (autokorelator), `components/karaoke/SingStarCanvas.tsx`. Nowy route `/admin/karaoke` w hubie AjDi.
  414. v2.56.125 czerwca 2026, 08:30

    Karaoke sync LRC + Huby Talentobranie / KissBang / AjDi na /admin

    • **🎤 Karaoke ma teraz REALNĄ synchronizację tekstu z muzyką** — parser LRC (`[mm:ss.xx]tekst`, wiele timestampów na linii, ignoruje metatagi `[ar:][ti:][offset:]`). Podczas nagrania **aktywna linijka jest powiększona, biała, z fuchsia glow** i automatycznie scrolluje do widoku. Następna linijka pół-jasna, poprzednie wyblakłe — efekt jak w prawdziwym karaoke (Spotify Sing/Apple Music). Fade top/bottom maskuje krawędzie. Track sync co 120 ms z `instrAudioRef.currentTime`. Bez LRC (plain text) leci jako lista bez sync z notką „dodaj LRC w admin/quizy".
    • **🗂️ /admin dostał trzy duże kafelki HUBÓW na samej górze** — wcześniej Talentobranie, KissBang i Strefa Fanów istniały, ale były ukryte w URL-ach bez wejścia z głównego admina. Teraz: **✨ AjDi Strefa Fanów** (fuchsia→purple→rose) → `/admin/ajdi` (wszystkie 18 modułów AjDi), **🎙️ Talentobranie** (rose→fuchsia→orange) → `/admin/talentobranie` (edycje, kandydaci, bramki, feed), **💋 KISS/BANG** (pink→fuchsia→purple) → `/admin/kissbang` (casting kanban z jury scoring).
    • **Jak testować jako artysta / fan** — wszystkie strefy są publiczne (część wymaga loginu): · **`/ajdi`** — landing Strefy Fanów + lista fandomów · **`/ajdi/<artistSlug>`** — strona fandomu (posty, czat, topki, wyzwania, quizy, AI Highlights) · **`/ajdi/karaoke/<trackId>`** — recorder karaoke (potrzebny track z `fandom_karaoke_tracks`) · **`/ajdi/przedpremiery/<releaseId>`** — waveform player przedpremier z komentarzami · **`/ajdi/dla-ciebie`** — Music Match (rekomendacje AI dla zalogowanego fana) · **`/ajdi/cup`** — leaderboard Cupa · **`/talentobranie`** — landing + edycja, **`/talentobranie/feed`** — feed, **`/talentobranie/zglos`** — zgłoszenie kandydata, **`/talentobranie/live/<sessionId>`** — sesje live · **`/kissbang`** — casting landing + **`/kissbang/zglos`**, **`/kissbang/quiz`**, **`/kissbang/avatar`**, **`/kissbang/sciana`** · **PWA**: `hub.idrecords.pl/zainstaluj` — automatyczne wykrywanie iOS/Android i instrukcje instalacji ikony aplikacji.
  415. v2.56.025 czerwca 2026, 07:30

    AjDi Tura D finisz — AI Press Mailer + Spotify Export (plan A→B→C→D ✓)

    • **📬 AI Press Mailer** `/admin/press-mailer` — admin wybiera release z gotowym briefem prasowym, filtruje dziennikarzy po formacie (radio / web / print / podcast / blog / tv), zaznacza adresatów i jednym klikiem Gemini 2.5 Flash generuje **spersonalizowany subject + body per dziennikarz** używając briefu (bio, backstory, motyw, anegdota, gatunek+mood) i profilu dziennikarza (outlet, format, gatunki). Drafty lecą do `press_pitch_sends` ze statusem **draft** — istniejący pipeline pressroom przejmuje wysyłkę. Amber→rose WOW z stick'owym panelem releasy.
    • **🎵 Spotify Export** `/admin/spotify-export` — emerald→lime WOW: lista wszystkich releasów (covery, ISRC, status Spotify ID), filtry Wszystkie/Gotowe/Brakujące, masowe zaznaczanie gotowych. Pobiera **CSV** (title, artist, premiere_date, isrc, spotify_track_id, spotify:track: URI, open.spotify.com URL) i **JSON** z polem `track_uris[]` — gotowe do wklejenia w Soundiiz, Chosic albo dowolny generator playlist Spotify, bez OAuth.
    • Backend: `src/lib/press-mailer-ai.functions.ts` (`listMailerReleases`, `listMailerJournalists`, `generateMailerDrafts`, `listRecentMailerDrafts` — fallback bez AI gdy brak `LOVABLE_API_KEY`) i `src/lib/spotify-export.functions.ts` (`listExportableReleases`, `buildSpotifyExport` z escape CSV).
    • **Hub** `/admin/ajdi` dostał dwa nowe kafelki: **AI Press Mailer** (amber→rose) i **Spotify Export** (emerald→lime).
    • **Status — plan ukończony**: Tura A ✓ (foundation + polish), Tura B ✓ 100% (Topki, Wyzwania, AI Quizy, Cup, Ankiety, Konkursy, Talent Studio, Waveform Player, Nagrody partnerskie, Karaoke Recorder), Tura C ✓ (AI Moderator, AI Highlights, Sentiment Dashboard, Music Match, Caption Helper, AI Press Brief), **Tura D ✓** (Fan Push, Karaoke, **AI Press Mailer**, **Spotify Export**, webpush worker już wcześniej dispatchował powiadomienia). System AjDi gotowy do publikacji.
  416. v2.55.025 czerwca 2026, 06:30

    AjDi Tura D start + finisz Tury B — Fan Push + Karaoke Recorder

    • **📣 Fan Push** `/admin/fan-push` — broadcast do fanów z czterema audytoriami WOW: **Wszyscy fani** (cyan), **Cały fandom** (fuchsia), **Top N fandomu** (amber, suwak 5–500) i **Aktywni 7 dni** (emerald). Kompozytor z podglądem live powiadomienia (białe karteczka push z tytułem i body), priorytet **Info / Krytyczny**, link CTA. Lecą do `notification_queue` (in-app + push + mail jeśli włączony). Nowa funkcja `fan-broadcast.functions.ts` z bezpiecznym resolverem fan→user_id.
    • **🎤 Karaoke Recorder** `/ajdi/karaoke/<trackId>` — fan nagrywa swój wokal nad instrumentalem: MediaRecorder z echo-cancel + noise-suppression, synchroniczny start instrumentalu (auto-play), licznik MM:SS w pulsującym kółku rose→fuchsia, podgląd nagrania (play/pause), kasacja, ponowna próba. Lyrics LRC linijka pojawia się podczas nagrania. Upload do prywatnego bucketu `fan-karaoke` z RLS per user_id i automatyczny insert do `fandom_talent_submissions` (kind=cover, status=pending) z signed URL i czasem trwania.
    • **🔐 Bucket fan-karaoke** — nowy prywatny bucket z politykami: fan może wgrywać/czytać/usuwać tylko własne pliki (`auth.uid()::text = (storage.foldername(name))[1]`), admin pełny dostęp przez `has_role('admin')`. Format WebM/Opus → fallback m4a/ogg.
    • **Backend talent**: rozszerzony `fandom-talent.functions.ts` o `getKaraokeTrack` (z joinem fandom→artist) i `submitKaraokeRecording` (sprawdza członkostwo, zapisuje audio_path/audio_url/duration w `payload`).
    • **Hub** `/admin/ajdi` — dodany kafelek **Fan Push (Tura D)** fuchsia→rose obok pozostałych modułów AI.
    • **Status**: **Tura A** ✓ z polishem · **Tura B** ✓ teraz **100%** (karaoke recorder gotowy, Spotify export → Tura D2) · **Tura C** ✓ kompletna · **Tura D start** ✓ — Fan Push + Karaoke. **Następne w Turze D**: Spotify export playlist (OAuth + sync), webpush worker (mamy VAPID), AI Press Brief → auto-mail do dziennikarzy.
  417. v2.54.025 czerwca 2026, 05:30

    AjDi Tura C #2 — Sentiment Dashboard + Music Match + Caption Helper + AI Press Brief

    • **📊 Sentiment Dashboard** `/admin/sentiment` — cyan→fuchsia WOW hero z animowanymi blobami. Wybierasz fandom, jednym kliknięciem generujesz dzisiejszy snapshot (Gemini analizuje 24h postów+czatu). Karty WOW: **Mood score 0-100** w gradientowym tle dopasowanym do nastroju (zielony/pomarańczowy/czerwony) + emoji + label, **rozkład sentymentu** w trzykolorowym pasku, **próbka** z datą. Pod spodem **SVG trend 30 dni** z gradientem cyan→fuchsia, punktami i siatką. Top tematy jako kolorowe chipy (pozytyw/neutral/negatyw).
    • **✨ Music Match** `/ajdi/dla-ciebie` — publiczny widok dla fana: AI patrzy kogo śledzi i rekomenduje 6 kolejnych artystów ID Records z puli. Dla każdego: **score % dopasowania**, **vibe** (2-3 słowa), **reason** po polsku. Karty z obrazem artysty (lub gradientowym fallbackiem fuchsia→amber z inicjałem), hover-translate, link do profilu. Fallback bez AI gdy brak `LOVABLE_API_KEY`. Funkcja `fandom-music-match.functions.ts` z bezpiecznym fan_id lookup.
    • **🪄 Caption Helper** `/admin/caption-helper` — generator copy: wpisujesz kontekst + odbiorcę, wybierasz **ton** (🔥 hype / 💌 intymny / 😏 ironiczny / 📝 rzeczowy / 🚀 epicki) i **kanał** (fandom post / broadcast / story / press). AI zwraca **3 headline'y**, **treść 2-4 zdania**, **6-10 hashtagów**, **emoji headline** i **CTA**. Wszystko klikalne — jeden klik = skopiowane do schowka (toast). Layout dwukolumnowy z fuchsia→rose gradientami.
    • **📰 AI Press Brief** `/admin/press-brief-ai` — AI łączy dane z `release_submissions` (tytuł, premiera, gatunek, story, lyrics, inspiracje, bio artysty) z **sygnałami fandomu** (najnowszy mood + top tematy z `fandom_sentiment_snapshots`) i pisze szkic: **bio, backstory, inspiracje, theme, anegdota, cytat artysty, gatunek+mood**. Dropdown z ostatnimi 40 release'ami, dwa CTA: **Generuj** (preview) i **Zapisz** (upsert do `release_press_brief`). Indigo→amber→fuchsia WOW.
    • **Hub** `/admin/ajdi` dostał 5 nowych kafelków (Sentyment, Caption Helper, Press Brief, Music Match, Push fanowski) — wszystkie WOW gradientowe ze swoimi kolorami i ikonami z lucide.
    • **Status Tura C**: AI Moderator ✓ · AI Highlights ✓ (admin+publiczny+push) ✓ · Sentiment backend ✓ → **Dashboard ✓** · Music Match ✓ · Caption Helper ✓ · AI Press Brief ✓. **Zostaje w Turze C**: ewentualne wzbogacenie press brief o link do EPK i auto-mail do dziennikarzy (przeniosę do Tury D razem z webpush).
    • **Tura B**: 95% ✓ — karaoke recorder i Spotify export idą do Tury D (potrzebują ffmpeg.wasm + OAuth flow). **Tura D**: następna iteracja — PWA push do segmentów fandomów (mamy już `push_subscriptions` + `notification_queue`), karaoke MediaRecorder, Spotify export playlist.
  418. v2.53.025 czerwca 2026, 04:30

    AjDi Tura C start — Warstwa AI (Moderator + Highlights + Sentiment)

    • **🛡️ AI Moderator** `/admin/ai-moderator` — hybryda wg severity: **high** (NSFW/hate/doxx/groźby) auto-ukrywa post/komentarz/wiadomość czatu, **medium/low** tylko flaguje do ręcznej akceptacji. Rose→amber→cyan WOW gradient, kolejka z kolorowymi paskami severity, kategorie (nsfw/spam/hate/harassment/doxx…), score %, powód po polsku, akcje **Przywróć** / **Usuń** w jednym kliknięciu. AI: Gemini 2.5 Flash z JSON response, model trenowany na PL slang fanowski (nie flaguje krytyki utworów).
    • **✨ AI Highlights** `/admin/ai-highlights` — tygodniowe recapy fandomu: AI analizuje top posty + top fanów minionego tygodnia i generuje **tytuł, 3-5 zdaniowe streszczenie, mood (euforia/radość/spokój/napięcie/smutek), cover emoji i parę gradientów hex** które wizualizują kartę. Admin może publikować (fani widzą tab ✨ Highlights na `/ajdi/<artist>` z dużymi WOW kartami) i wysyłać **push notification** do wszystkich aktywnych fanów fandomu (insert do `notification_queue`).
    • **📊 Sentiment Snapshots** — `fandom-sentiment.functions.ts` z `generateSentimentSnapshot` i `listSentimentHistory`: AI codziennie analizuje ostatnie 24h postów+czatu fandomu, zwraca mood_score 0-1, mood_label, %pozytyw/neutral/negatyw + top topics z sentymentem. Snapshot per dzień, gotowe pod dashboard time-series (kolejna iteracja).
    • **Migracja**: 3 nowe tabele `fandom_ai_moderation` (unique target_type+target_id), `fandom_ai_highlights` (unique fandom+week_start), `fandom_sentiment_snapshots` (unique fandom+date) — wszystkie z RLS (admin pełny, członkowie tylko własny fandom przez `is_fandom_member`), GRANTami i indeksami.
    • **Status**: Tura A ✓ z polishem, Tura B 95% ✓ (zostaje karaoke recorder + Spotify export → Tura D), **Tura C w toku**: AI Moderator ✓, AI Highlights ✓ (admin+publiczny tab+push), Sentiment backend ✓. **Następne w Turze C**: Sentiment Dashboard UI (heatmapa + trendlinia), Music Match (rekomendacje artystów ID dla fana na podstawie zachowań), AI Press Brief (auto-draft notki prasowej z aktywności fandomu), Caption Helper (AI tytuły/opisy postów).
  419. v2.52.025 czerwca 2026, 03:30

    AjDi Tura B finisz #2 — Waveform Player przedpremier + Nagrody partnerskie

    • **🎧 Waveform Player przedpremier** `/ajdi/przedpremiery/<releaseId>` — pełny SoundCloud-style player z `wavesurfer.js`: fuchsia→cyan WOW hero z pulsującymi blobami, dużym play/pause z gradient ringiem, suwakiem głośności, dynamicznym waveformem (różowe paski + cyan cursor) i licznikiem MM:SS. **Inline-komentarze** wbijane w konkretną sekundę z paletą emoji (🔥❤️💀👏🚀🎯😭🤯), pinezki na osi waveformu z hover tooltipem (avatar fana + treść), klikalne by przeskoczyć. Pod spodem timeline wszystkich komentarzy chronologicznie (też klikalne). Hover po waveformie pokazuje timestamp w cyan badge'u. Auto-refresh co 15 s — komentarze fanów lecą live.
    • **🎁 Admin Nagród Partnerskich** `/admin/partner-rewards` — amber→rose WOW header z animowanymi blobami, dwukolumnowy layout z stick'owym kreatorem po prawej. Admin definiuje nagrodę (tytuł, partner, opis, sezon, wymagany rank top-N), siatka kart pokazuje status (przyznana ✓ + komu: fandom lub fan z avatarem), inline delete. Spinka do sezonów Cupa.
    • Backend: nowy moduł `prerelease-waveform.functions.ts` (`getPrereleaseDetails` z artist join, `addWaveformComment` z walidacją 1–280 znaków, `trackPrereleaseListen` do liczenia odsłuchów). Nowy moduł `partner-rewards.functions.ts` (`listPartnerRewards` z season+fandom+fan join, `createPartnerReward`, `awardPartnerReward`, `deletePartnerReward` — wszystkie z `requireAdmin` check). `wavesurfer.js@7` dodany do deps. `/admin/ajdi` hub dostał kafelek Nagrody partnerskie.
    • **Status Tury B (95% gotowe)**: Topki ✓, Wyzwania ✓, AI Quiz Generator ✓, composer Quizów ✓, panel Cup ✓, Ankiety + Konkursy ✓, Talent Studio ✓, Cup leaderboard ✓, **Waveform Player ✓**, **Nagrody partnerskie ✓**. **Zostaje:** karaoke recorder (Web Audio + ffmpeg.wasm — duża inwestycja, planowana po Turze C/D bo cycle long), eksport playlist Spotify (proste, dopniemy w Turze D razem z multimediami).
    • **Następna iteracja → Tura C (AI Layer)**: AI Moderator (auto-flag NSFW/spam/toxic w postach + chacie), AI Highlights (tygodniowy recap fandomu: top momenty, najlepsi fani, breaking moments), Music Match (rekomendacje artystów ID bazując na zachowaniach fana), Sentiment Dashboard (humor fandomu w czasie), AI Press Brief, Caption Helper.
  420. v2.51.025 czerwca 2026, 02:30

    AjDi Tura B finisz #1 — Topki (Borda count) + Wyzwania fandomowe

    • **📈 Topki fanowskie** na profilu fandomu (`/ajdi/<artysta>` → tab Topki): każdy członek może opublikować rankingowaną listę 3–20 pozycji (utwory, koncerty, momenty, cokolwiek). Fani układają **swój własny ranking** strzałkami ↑↓, a system liczy **zbiorowy ranking metodą Borda** (pozycja i z N daje N−i punktów). Karta pokazuje równolegle „Zbiorowy ranking" (z gradientowymi paskami proporcjonalnymi do punktów) i „Twój ranking" — głosujesz w sekundę. Cyan→fuchsia WOW header z mesh blobami.
    • **⚡ Wyzwania fandomowe** (`/ajdi/<artysta>` → tab Wyzwania): członkowie ogłaszają krótkie misje (nagraj cover, foto z koncertu, rekomendacja) z opcjonalnym deadlinem. Inni członkowie wysyłają zgłoszenia inline (z avatarami i datą), licznik `entries_count` aktualizuje się automatycznie. Rose→fuchsia gradient header, karty z pełnym opisem, lista zgłoszeń pod expand.
    • Backend (`fandom-community.functions.ts`): nowe server functions `listFandomTopkas`, `createFandomTopka`, `voteFandomTopka` (zapis pełnego ordering), `topkaResults` (Borda aggregation), `listFandomChallenges`, `createFandomChallenge`, `submitChallengeEntry` (auto-update licznika), `listChallengeEntries`. Wszystko schema-aware (publishable client do czytania, service-role do zapisu, RLS + has_role check).
    • **Status Tury B**: Topki ✓, Wyzwania ✓, AI Quiz Generator ✓, composer Quizów ✓, panel sezonów Cup ✓, Ankiety + Konkursy ✓, Talent Studio ✓, Cup leaderboard ✓. **Do końca Tury B (jeszcze 2 iteracje):** karaoke recorder (Web Audio + ffmpeg.wasm), waveform player przedpremier (wavesurfer.js) z inline komentarzami, admin panel partnerskich nagród + eksport Spotify. **Następnie Tura C** (AI Layer: moderator, highlights, music match, sentiment).
  421. v2.50.225 czerwca 2026, 01:30

    AjDi Tura B — AI Quiz Generator, composer Quizów, panel Cup, Ankiety + Konkursy

    • **AI Quiz Generator** (Lovable AI gateway, model `google/gemini-2.5-flash` w trybie JSON): admin wybiera fandom + typ (trivia/personality) + ilość pytań + trudność + opcjonalny temat → AI w 5 sekund tworzy draft z kontekstu artysty (`buildArtistAiContext`) i ostatnich 15 postów fandomu. Trivia: 4 opcje, 1-3 poprawne, explanation, points 100/150/200 wg trudności. Personality: 4-5 archetypów + wagi w odpowiedziach.
    • **Composer Quizów** `/admin/quizy` — pełny edytor inline (emerald → cyan WOW header): wybór fandomu, typ trivia/personality, slider pytań, trudność, czas/pyt., temat dodatkowy. Po wygenerowaniu — edycja każdego pytania, dodawanie/usuwanie, radio/checkbox correct, weights dla personality, zapis → publikacja (admin/mod auto-approve).
    • **Panel sezonów Cup** `/admin/cup` (amber → rose WOW header): tworzenie sezonów z elastycznymi datami od-do, status pipeline (upcoming → active → closed → archived) z one-click przyciskami, sticky panel kreatora po prawej, lista wszystkich sezonów z winnerem i kolorowymi pillami statusu.
    • **Ankiety** w fandomie (`📊 Ankiety` tab): tworzenie ankiet 2–8 opcji z opcją multi-choice, głosowanie z animowanym gradient-fillem proporcjonalnym do procentów, licznik głosów, sticky CTA dla członków.
    • **Konkursy fanowskie** w fandomie (`🏆 Konkursy` tab): fan-organizer składa wniosek (tytuł, opis, nagroda, deadline), trafia do moderacji `pending_review`, po akceptacji rusza głosowanie. Karty z gradientowymi statusami, deadline, organizer avatar.
    • Hub admina `/admin/ajdi` zaktualizowany: kafle prowadzą do nowych endpointów (`/admin/quizy`, `/admin/cup`).
    • **Status Tury B**: AI Quiz Generator ✓, composer Quizów ✓, panel sezonów Cup ✓, Ankiety + Konkursy UI ✓. **Zostaje na koniec Tury B**: karaoke recorder w przeglądarce (Web Audio API + ffmpeg.wasm — duża inwestycja), waveform player przedpremier z inline-komentarzami (wavesurfer.js), eksport playlist Spotify. **Tura C (AI Layer — Moderator, Highlights, Music Match, Sentiment, Press Brief, Caption Helper)** rusza w następnej iteracji.
  422. v2.50.125 czerwca 2026, 00:30

    AjDi WOW pass: taby Talent + Quizy, quiz player, admin hub, kolorowe headery

    • Profil fandomu `/ajdi/<artysta>` dostał dwa nowe taby z efektem WOW: **🎤 Talent Studio** (galeria kafelków 3:4 z mesh gradient hero, filtry kind, głosowanie 👍 z auto-licznikiem, paleta z fandomu) i **🧠 Quizy** (karty trivia/personality z gradientami, ikonami, statystykami podejść i CTA do gry).
    • Nowy publiczny route `/ajdi/quiz/<id>` — pełny player quizów: WOW intro screen z mesh gradient, postęp pytań, dramatic countdown timer (pulsujący na czerwono < 5 s), gradient picky odpowiedzi ze skalowaniem, ekran wyników z trofeum + leaderboard top 10. Trivia auto-scoring, personality pokazuje dominujący typ fana.
    • Nowy hub admina `/admin/ajdi` — centrum dowodzenia Strefy Fanów: 9 gradientowych kafli (fandomy, Cup, Talent, Quizy, broadcasty, scoring, Pulse, AI Studio, landing) z animowanymi blob backgroundami, sekcja statusu tur A/B/C+D.
    • Kolorowe WOW-headery dla `/admin/fandoms` (fuchsia → cyan), `/admin/talentobranie` (rose → orange) i `/admin/kissbang` (pink → violet) — koniec szarych panelów, każda sekcja ma własny gradient mesh, glow blobs i bold display heading.
    • Status Tury B: **gotowe** — backend kompletny (21 tabel, server functions Talent/Quizy/Cup), tab Talent + Quizy w fandomie, quiz player z timerem i leaderboardem, Cup pod `/ajdi/cup`. **Do zrobienia w kolejnych iteracjach**: karaoke recorder w przeglądarce (Web Audio API + ffmpeg.wasm), composer Quizów dla admina/artysty (drag-and-drop), waveform player przedpremier z inline-komentarzami, panel sezonów Cup, ankiety/topki/konkursy UI, eksport Spotify. **Tura C (AI)** i **Tura D (multimedia)** rusza po domknięciu Tury B.
  423. v2.50.024 czerwca 2026, 23:55

    AjDi — Strefa Fanów (Tura B start: Fandom Cup, Talent Studio, Quizy)

    • Fandom Cup pod `/ajdi/cup` — pierwsza publiczna arena rywalizacji fandomów. Aktywny sezon (z elastycznymi datami od-do, niezależny scoring od globalnego), animowane podium top 3 z paletami fandomów, reszta stawki, indywidualny leaderboard top fanów sezonu, odliczanie do końca, live odświeżanie co 30 s.
    • Fundament Talent Studio: schema dla cover/duet/taniec/sztuka/rysunki + karaoke tracks z LRC i instrumentalami + system głosowania 1-fan-1-głos z auto-aktualizacją licznika. Server functions `listTalentSubmissions`, `createTalentSubmission`, `toggleTalentVote`, `listKaraokeTracks` — karaoke recorder z mixem instrumentalu + waveform export do MP4 dopinamy w kolejnej iteracji.
    • Quizy trivia + personality: pełne API tworzenia (questions + choices + weights), grania (auto-scoring trivii, agregacja osobowości po kategoriach z wagami) i leaderboardu (top 20 wyników per quiz). Trivia liczy punkty per poprawna odpowiedź, personality zwraca dominującą cechę. Mod+/admin auto-zatwierdzają, fani trafiają do `draft` na akceptację.
    • 21 nowych tabel z pełnym RLS i Realtime: `fandom_karaoke_tracks`, `fandom_talent_submissions` (+votes), `fandom_quizzes` (+questions/choices/attempts), `fandom_topkas` (+votes), `fandom_challenges` (+entries), `fandom_polls` (+votes), `fandom_fan_contests` (+entries/votes — wymagają akceptacji moderatora przed publikacją), `fandom_cup_seasons` (+scores drużynowe i indywidualne), `fandom_partner_rewards`, `prerelease_waveform_comments`.
    • Server functions Tury B: `fandom-talent.functions.ts`, `fandom-quizzes.functions.ts`, `fandom-cup.functions.ts` z publicznym czytaniem (anon/SSR-friendly) i autoryzowanym zapisem (członkowie/autorzy/mod+/admin).
    • Następne iteracje Tury B: composer karaoke z Web Audio API + duet z artystą, eksport MP4 z brandingiem (`ffmpeg.wasm`), waveform player przedpremier z inline-komentarzami à la SoundCloud, panel admina do tworzenia sezonów Cup i nagród partnerskich, AI Quiz Generator (Tura C), playlisty z eksportem Spotify.
  424. v2.49.024 czerwca 2026, 23:30

    AjDi — Strefa Fanów (fundament, Tura A)

    • Trzecia domena projektu: **ajdi.pl** = Strefa Fanów ID Records. Landing WOW pod `/ajdi` (mesh gradient, animowane sekcje, karty fandomów z paletą każdego artysty), profil fandomu pod `/ajdi/<artysta>` z trzema zakładkami: Feed / Czat / Top fani. Każdy fandom = własna paleta liczona z palety artysty.
    • Pełna mechanika członkostwa: fan klika „Dołącz do ekipy" → request `pending` → moderator/admin_fandomu akceptuje (opcjonalnie fan dorzuca wideo-prezentację dla artysty, +25 pkt). 6 ról: fan / redaktor / moderator / znawca / ekspert / admin_fandomu — wyższe role mają auto-publish postów. Admin labela może też wymusić members/role override.
    • Feed społeczności: posty 14 typów (artykuł, zdjęcie, wideo, cytat, Q&A, event, outfit, akcja, story, fan-art, cover, taniec, rysunek, playlist), reakcje 5-emoji, komentarze, votes 👍/👎, pin (mod+). Realtime invalidation przez Supabase. Czat fandomu z dwoma pokojami: `public` (członkowie) + `internal` „crewroom" (artysta + mod+ + admin HUBa).
    • Konfigurowalna punktacja: panel `/admin/fandoms` ze sliderami dla 20 akcji (dołączenie, posty różnych typów, reakcje, mnożniki, daily streak, cross-fandom 1.5×). Admin może też ręcznie nadać/odebrać punkty z uzasadnieniem — wszystko logowane w `fan_score_events`. Suwak zaangażowania artysty 0-100 widoczny publicznie i zasilający Pulse/Radar/Pomysły w kolejnych turach.
    • Dropbox jako primary media-store: nowy adapter `media-store.functions.ts` + `media_assets` rejestr (provider/path/public_url), `getDropboxSharedLink` z permanent raw links. Stack przygotowany pod migrację KISS/BANG i Talentobranie multimediów do tańszego storage'u.
    • Schema: 15+ nowych tabel (fandoms, members, join_requests, posts/reactions/comments/votes, chat_rooms/messages, broadcasts, fan_artist_follows, fan_song_likes/comments, fan_playlists, prerelease_listens/reactions, scoring_config, fan_score_events, fan_rank_history, media_assets, artist_fandom_engagement) z pełnym RLS, security-definer helpers (`has_fandom_role`, `is_fandom_member`, `is_fandom_admin`), Realtime publication na 8 kluczowych tabelach, auto-utworzeniem czat-pokoi przy nowym fandomie.
    • Tura B (quizy trivia+personality z timerem, ankiety, konkursy fanowskie, Talent Studio z karaoke/cover/duety/taniec/rysunki, Fandom Cup, odsłuch przedpremierowy), Tura C (AI: moderator/highlights/quiz generator/sentiment + integracja z Pulse/Radar/Pomysłami/Kalendarzem/Pressroomem), Tura D (stories, AR, voice memos, push) — lecimy po Twoim go.
  425. v2.48.025 czerwca 2026, 01:30

    Talentobranie — Feed społeczności + Live Stage + Strefa Fanów (fundament)

    • Pełen feed społecznościowy à la IG/FB pod `/talentobranie/feed`: posty nominowanych (typy: występ, cover, własna piosenka, Q&A, story, update, live recap) z moderacją admina, reakcje 5‑emoji (👍🔥❤️👏🚀), komentarze, reposty. Posty Artystów ID są wyraźnie oznaczone osobną odznaką `ID Artist` — fani widzą kto jest „rodziną" labelu.
    • Mechanika rund i nominacji: admin otwiera rundę (24/48/72 h) i nominuje kandydatów z publicznym uzasadnieniem („dlaczego nominujemy"). Wszystko żywą ankietą keep/drop pod każdą kartą postu i na `/talentobranie/nominacje`. Próg eliminacji rośnie z każdą kolejną rundą i zwiększa się przy większej liczbie nominowanych — ale zaangażowanie ostatnich 24 h (reakcje × 1, komentarze × 2, reposty × 3) obniża go nawet o 60% dla najbardziej żywych profili.
    • Waga głosu zależy od roli (fan / juror / influencer / ekspert / ID Records z wag E5 edycji) × mnożnik z zaliczonych bramek (do 2.5×). Wszystko leci realtime przez Supabase — paski głosów aktualizują się na żywo.
    • Live Stage — `/talentobranie/live` listuje sesje, `/talentobranie/live/$sessionId` ma embed TikTok/YouTube/external, czat na żywo (Realtime, 280 znaków) i głosowanie tak/nie. Kandydat planuje 30‑minutowy slot, admin akceptuje, na koniec admin zapisuje recording_url i agreguje wyniki.
    • Strefa Fanów — fundament: `/talentobranie/profil` (avatar URL, bio, miasto, zaimki, ulubione gatunki/artyści, sociale Instagram/TikTok/YouTube) z osobną sekcją na **Twoją playlistę Spotify** — wprost zachęcamy fanów do dorzucania numerów ID Records na ich playlisty (najlepsze paliwo dla algorytmu Spotify).
    • Admin: `/admin/talentobranie/<edycja>/feed` — moderacja postów, nominacje multi‑select z uzasadnieniami, otwieranie/zamykanie rund (zamknięcie = eliminacja netto vs próg z mnożnikiem engagement). Pulse + cron `talentobranie-daily` wołają teraz dodatkowy `tbFeedTick` co dzień (engagement rolling 24 h + auto‑przejście rund w fazę `voting` po deadlinie).
  426. v2.47.026 czerwca 2026, 23:55

    KISS/BANG — Magic Link mailowy + czat jurorów

    • Magic Link mailem — w wizardzie zgłoszeniowym kandydatka po wygenerowaniu „Linku do wznowienia" może wpisać swój adres e‑mail i kliknąć „Wyślij mailem"; nowy publiczny endpoint `/api/public/hooks/kissbang-resume-email` weryfikuje `anonymous_id` względem zgłoszenia, sprawdza suppression, generuje token unsubscribe i wrzuca maila do kolejki transakcyjnej z brandowanym szablonem `kissbang-resume`.
    • Czat jurorów — w panelu admina (`/admin/kissbang` → detail zgłoszenia) doszedł moduł „Czat jurorów (wewnętrzny)": wewnętrzne notatki z @mentions innych adminów, podświetlenie własnych wpisów, usuwanie własnych notatek, autoscroll i live‑refresh przez Supabase Realtime na nowej tabeli `kissbang_jury_notes` (RLS: tylko admini).
    • Nowe RPC/server fns: `listJuryNotes`, `addJuryNote`, `deleteJuryNote`, `listJuryMembers` — wszystkie pod `requireAdmin`, oparte o `auth.users` do nazwy/maila juror‑a.
  427. v2.46.026 czerwca 2026, 23:30

    KISS/BANG — Iteracja 7: inline rec, ściana, Whisper, resume link, digest

    • Inline nagrywarka audio/wideo (`InlineMediaRecorder`) zastępuje uploady plików w zadaniach AI i w sekcji „Pokaż siebie" — kandydatka nagrywa wprost w przeglądarce (getUserMedia + MediaRecorder, podgląd live, retake, licznik do 60–90s), z fallbackiem na wybór pliku gdy brak zgody na kamerę/mikrofon.
    • Publiczna „Ściana KISS/BANG" — `/kissbang/sciana` pokazuje galerię kandydatek, które same zaznaczyły „pokaż mnie na ścianie" w kroku zgód (opt-in + wymagana zgoda na publikację). Public RPC `kissbang_wall_entries` zwraca: pseudonim, miasto, archetyp, balans, top tagi. Auto-refresh co 60 s.
    • Whisper-transkrypcje w panelu jury — admin klika „Transkrybuj" przy każdym audio/wideo w zgłoszeniu, server fn `transcribeKissbangMedia` pobiera plik z prywatnego bucketu i odpytuje Lovable AI Gateway (`/v1/audio/transcriptions`, model whisper-1, język `pl`). Wynik trafia do `kissbang_applications.transcripts` (jsonb keyed by path) i wyświetla się pod podglądem mediów.
    • Resume link — kandydatka w toku wypełniania widzi przycisk „Link do wznowienia" w nagłówku, dostaje `/kissbang/wroc?t=<recovery_token>`, który po otwarciu na innym urządzeniu ładuje cały szkic z bazy do localStorage (synchronizuje też `anonymous_id`). Token to nowa kolumna w `kissbang_applications`.
    • Daily digest dla jury — server route `/api/public/hooks/kissbang-digest` + RPC `kissbang_daily_digest` agregują liczby z ostatnich 24h (nowe zgłoszenia, drafty, top archetypy, oceny jury, polecenia, suma). Gotowe pod harmonogram cron — wystarczy zaplanować pg_cron POST raz dziennie.
  428. v2.45.026 czerwca 2026, 21:30

    KISS/BANG — Iteracje 5 + 6: share card, refer-a-friend, panel jury

    • Share card po zgłoszeniu — auto-generowana karta w dwóch formatach (1080×1920 Story i 1080×1080 Post) z portretem archetypu, balansem KISS↔BANG i nazwą artystyczną. Eksport PNG przez html-to-image + Web Share API (Files), z fallbackiem na pobranie pliku.
    • Refer-a-friend — każda kandydatka po wysyłce dostaje swój link `?ref=<id>` + szybkie przyciski WhatsApp / Telegram / Instagram DM / TikTok DM. Polecone zgłoszenia są oznaczane „↪ polecona" w panelu jury (referrer_application_id).
    • Live counter na /kissbang — RPC `kissbang_public_stats` (anon-callable, SECURITY DEFINER) liczy wszystkie wysłane zgłoszenia, top 3 archetypy i top miasta. Refresh co 60 s.
    • Rozbudowane sociale w wizardzie — Instagram / TikTok / YouTube / Spotify / Website z hintem „min. jeden = weryfikacja, że to Ty" i pełnymi linkami zamiast samych uchwytów.
    • Panel jury /admin/kissbang — kanban 6 kolumn (Nowe / W ocenie / Może / Shortlist / TOP / Odrzucone), karta zgłoszenia z punktacją 30/25/20/15/10 (wokal/osobowość/charyzma/scena/social), flaga „współzałożycielka", komentarz publiczny, draft + „Zakończ ocenę". Widoczność wzajemnych ocen dopiero, gdy wszyscy jurorzy zakończą — przed tym EyeOff banner. Nowa tabela `kissbang_jury_scores` z RLS (juror widzi swoje, admin widzi wszystkie).
  429. v2.44.026 czerwca 2026, 19:00

    KISS/BANG — Iteracja 3: portrety archetypów + tła sceniczne (AI assety)

    • 8 portretów archetypów wygenerowanych przez AI (CROWN, BANG, ECHO, NOVA, FUSE, HEART, VELVET, WILDCARD) — sylwetki-symbole w neonowej palecie magenta/cyan, jakość okładkowo-galeryjna.
    • Landing /kissbang — galeria archetypów to teraz duże klikalne kafelki z portretami (każdy prowadzi do quizu), zamiast samych emoji + nazw. Pierwszy widok robi „wow".
    • Wynik quizu /kissbang/quiz — dominujący archetyp pokazany jako pełnokadrowy portret z accentem koloru i shadow-glowem, taglinem i mocnymi stronami pod spodem.
    • Avatar Builder — 7 teł scenicznych (gradient KISS, gradient BANG, split, grid, haze, shatter, halo-rings) jako rastrowe podkłady w SVG, z miękkim brand-overlayem. SVG warstwy postaci zostają — tło daje głębię i atmosferę.
    • Nowy moduł src/lib/kissbang-assets.ts trzyma pełny manifest plików; podmiana lub dogenerowanie kolejnych wariantów = jeden import.
  430. v2.43.026 czerwca 2026, 17:00

    KISS/BANG — Iteracja 4: pełen formularz zgłoszeniowy + Profil w Avatarze

    • /kissbang/zglos — kompletny, mobile-first wizard zgłoszeniowy w 6 krokach (Kontakt → Profil → Pasje → Zadania AI → Media → Zgody). Autosave do localStorage + debounced sync do bazy, sticky nav, progress bar, banner z archetypem z quizu.
    • AI-personalizowane zadania (Gemini) — po wybraniu archetypu i tagów AI generuje 3-6 unikalnych zadań (video / audio / foto / tekst), dopasowanych do pasji kandydatki, z możliwością regeneracji (max 3×) i uploadem mediów per zadanie. Każda kandydatka dostaje INNE zadania — viralowy potencjał.
    • Avatar Builder rozbudowany — przełącznik Vibe (7 warstw wizualnych) ↔ Profil (11 wymiarów tożsamości): umiejętności, pasje, typ głosu, poziom wokalu, wyobrażenie o showbiznesie, rola w zespole, suwak komfort↔fame, dyspozycyjność, lęki, marzenia/wzory, „dlaczego ja". Profil synchronizuje się z formularzem przez sessionStorage.
    • Tabela kissbang_applications (draft/submitted/reviewing/shortlist/rejected) + prywatny bucket kissbang-applications na media z signed upload URL. Anonimowe zgłoszenia po anonymous_id, admini z rolą widzą całość. Walidacja: email, imię, wiek, zgoda regulaminu; dla <18 wymagana zgoda opiekuna + jego email.
    • Server fns: saveKissbangDraft (autosave), submitKissbangApplication (walidacja + przejście na status submitted), getKissbangUploadUrl (signed PUT do bucketa). Sukces po wysyłce: dedykowany ekran z Web Share API „powiedz światu".
  431. v2.42.026 czerwca 2026, 15:30

    KISS/BANG — Iteracja 2: AI Quiz + Avatar Builder

    • /kissbang/quiz — w pełni AI-driven quiz osobowości. Gemini generuje 8 pytań za każdym razem inaczej (mix single + slider), liczy dopasowanie do wszystkich 8 archetypów z procentami oraz balans KISS↔BANG. Brak logowania — sesja jako anonymous_id w localStorage. Top 3 dopasowania + opcja regeneracji.
    • /kissbang/avatar — Avatar Builder w 7 warstwach: forma, aura, energia, vibe (mimika-symbol), głos (waveform), gest (signature), scena. NIE budujemy człowieka — budujemy charakter / mood / vibe. Live preview SVG z gradientami KISS↔BANG, suwak balansu zmienia paletę w czasie rzeczywistym.
    • Po quizie auto-preset: dominujący archetyp → wszystkie 7 warstw startuje gotowe, można edytować, zapisać, udostępnić. „Zacznij od archetypu" + „Wylosuj" jako szybkie ścieżki.
    • Tabele kissbang_quiz_sessions i kissbang_avatars z politykami RLS dla anon (quiz/avatar dostępne bez logowania). Server fns: generateKissbangQuiz, submitKissbangQuiz, saveKissbangAvatar, getKissbangAvatar + generatePersonalizedTasks (gotowe do Iteracji 4 — formularz zgłoszeniowy z AI-personalizowanymi zadaniami pod pasje kandydatki).
    • /kissbang/test → redirect na /kissbang/quiz (kompatybilność starych linków). Landing /kissbang dostaje nowe CTA: AI Quiz + Zbuduj avatar obok zgłoszenia.
  432. v2.41.026 czerwca 2026, 11:00

    KISS/BANG — start castingu (landing + Type Test)

    • Nowa sekcja /kissbang — edytorialowy landing castingu girlsbandu KISS/BANG z hero (Instrument Serif, gradient KISS róż ⚡ BANG cyan), Manifestem teaser, Kodeksem 8 zasad i siatką 8 archetypów (CROWN, BANG, ECHO, NOVA, FUSE, HEART, VELVET, WILDCARD).
    • /kissbang/manifest — pełny Manifest „W co wierzymy" + Kodeks KISS/BANG (8 zasad, na przemian 💋 i ⚡).
    • /kissbang/test — Type Test 5 pytań, wynik = archetyp + suwak balansu KISS↔BANG, mobile-first, gotowy do udostępnienia (Web Share API).
    • Osobny design system .kb w styles.css (tokens, gradienty, halo, grain, kb-btn, kb-card), font display Instrument Serif + body Manrope dograne w __root.tsx.
    • /kissbang/zglos — stub „wkrótce" do formularza (Iteracja 2: wizard 6 kroków + Magic Link + nagrania audio/video). Iteracja 3: panel jury z agregacją głosów.
  433. v2.40.025 czerwca 2026, 21:00

    Talentobranie — domknięcie przed startem (Pulse + Echo + Partner spotlight)

    • Pulse w HUBie żyje Talentobraniem — każde zatwierdzenie kandydata, start bitew E2, ogłoszenie wyzwania E3, ustawienie finału i werdykt automatycznie pojawiają się jako wpis w social_pulse_events (owner_kind=label).
    • Codzienny tick „Co dziś w Talentobraniu" o 8:00 — pg_cron uderza w /api/public/hooks/talentobranie-daily, ten emituje pulse i wrzuca powiadomienia do notification_queue dla fanów (głosujących), kandydatów i artystów wspierających w każdej otwartej edycji.
    • „Echo edycji" — nowy przycisk w /admin/talentobranie/<edycja>/rozgrywka kolejkuje personalizowane powiadomienie dla wszystkich uczestników (kandydaci + fani + artyści ID) po werdykcie.
    • „Partner spotlight" — drugi przycisk obok werdyktu wysyła raport edycji do zatwierdzonych partnerów wraz z listą ich nagród z talentobranie_partner_rewards.
    • Skrócony hardening: weryfikacja RLS (20 tabel talentobranie_*, wszystkie z politykami), pulse i kolejkowanie są fail-soft — nawet jak coś padnie, akcja admina się kończy poprawnie.
  434. v2.39.025 czerwca 2026, 18:30

    Talentobranie — bitwy, wyzwania, finał i werdykt (Iteracje 8/9/10)

    • /talentobranie/bitwy — drabinka E2 z 1v1: fan oddaje jeden głos na bitwę, paski wyników aktualizują się live z Realtime. Admin generuje drabinkę z TOP N kandydatów (ranking po głosach E1) jednym kliknięciem.
    • Dzika karta artysty — 1× na edycję, aktywna w E2–E3, akcja save lub eliminate. Artysta używa z poziomu „Stajni", admin widzi w rozgrywce.
    • /talentobranie/wyzwania — admin ogłasza tematy coverowe, fani wgrywają wideo (URL YouTube/TikTok/Drive), top entries lecą do góry przez upvote'y i wagą zasilają E3.
    • AI sentyment — admin jednym kliknięciem analizuje komentarze kandydata (Lovable AI Gateway, Gemini 2.5 Flash), wynik trafia do talentobranie_ai_insights z poziomem alertu (normal/shift/critical).
    • /talentobranie/final — publiczny ekran finału: link na live, lista finalistów, sloty „Fan moment 30s" nadawane przez admina, a po werdykcie złota karta zwycięzcy i pełny ranking E5.
    • Werdykt hybrydowy E5 — kalkulator agreguje głosy per rola z wagami edycji (Fani 50% / Artyści 10% / Dziennikarze 15% / Influencerzy 10% / Eksperci 10% / Label 5% domyślnie), zapisuje final_score, ustawia zwycięzcę i może promować go do draftu release_submissions.
    • /admin/talentobranie/<edycja>/rozgrywka — jedna konsola: bitwy, wyzwania, finał (live URL + sloty fan-moment), werdykt + promocja zwycięzcy, AI sentyment.
  435. v2.38.025 czerwca 2026, 16:30

    Talentobranie — panel artysty ID, endorsementy i system bramek

    • /artist/talentobranie — nowy panel mobilny dla artystów ID: zakładki „Wsparcie i głos", „Bramki" i „O Twoim poziomie". Wspierasz limit kandydatów wg poziomu (B/B+=1 … X=5), opisujesz, co możesz dla nich zrobić (feature, mentoring, studio, IG shoutout), oddajesz głos artysty z wagą z edycji.
    • /talentobranie/stajnia/<artist> — publiczna „Stajnia artysty" pokazująca, kogo wspiera w aktualnej edycji i jakie wystawił bramki.
    • System bramek — artysta ma sloty wg poziomu (2/4/6/8/10), wybiera typ z katalogu i opcjonalnie targetuje kandydata. Fan na karcie kandydata widzi listę bramek z punktami i może je „zaliczyć" z linkiem dowodu.
    • /admin/talentobranie/<edycja>/bramki — kolejka review: zatwierdź lub odrzuć zgłoszenia fanów. Auto-approve dla bramek internal (PWA/newsletter), reszta idzie do review (placeholder pod późniejsze OAuth Spotify / RapidAPI).
  436. v2.37.025 czerwca 2026, 14:00

    Talentobranie — głosowanie live i panele pro

    • /talentobranie/k/<slug> — pełna karta kandydata z wideo, utworem, sticky CTA głosowania (1 głos/kandydat/etap, limit 20/dobę) i komentarzami fanów.
    • /talentobranie/ranking — live leaderboard z Supabase Realtime: nowy głos = ranking aktualizuje się natychmiast u każdego.
    • /talentobranie/dolacz — wniosek o panel pro w jednej z 4 ról (dziennikarz / influencer / ekspert / partner) z magic linkiem.
    • /admin/talentobranie/wnioski — moderacja wniosków pro. Akceptacja automatycznie nadaje rolę (user_roles) i otwiera panel.
    • Cztery szkielety paneli pro pod /talentobranie/{dziennikarz,influencer,ekspert,partner} z przeglądem aktywnej edycji.
  437. v2.36.025 czerwca 2026, 11:00

    Talentobranie — wizard zgłoszeń, moderacja w adminie i Strefa Fana

    • /talentobranie/zglos — publiczny 3-krokowy wizard E0: profil, 3 wideo + utwór (link YouTube/Drive lub upload do prywatnego bucketu) i zgody. Logowanie magic linkiem lub Google bez wychodzenia z formularza, edytowalne aż do decyzji admina.
    • /admin/talentobranie/<edycja>/kandydaci — kolejka moderacji z filtrem (do moderacji / zatwierdzeni / odrzuceni), podglądem materiałów (signed URL dla plików z bucketu) i jednym kliknięciem „Zatwierdź" lub „Odrzuć z powodem".
    • /talentobranie/fan — Strefa Fana v1: Magic Link / Google → automatyczne założenie profilu fana z e-maila, dashboard punktów / poziomu / badges, profil gustu (5 pytań) i mikro-zadania (zainstaluj PWA, dokończ profil, posłuchaj kandydatów).
    • Storage „talentobranie" dostał polityki RLS — kandydaci wgrywają tylko do swojego folderu, admin i właściciel czytają.
  438. v2.35.125 czerwca 2026, 00:20

    Voice Drop i Release Spotlight również po stronie admina

    • /admin/gotowosc — pod kartą gotowości wybranej premiery dochodzi panel Voice Drop: admin może podejrzeć (i nagrać) głosowy dziennik premiery razem z artystą.
    • /admin/pulse — na samej górze, zaraz pod Co-Pilot Label HQ, ląduje Release Spotlight: automatycznie pokazuje „premierę dnia" (najbliższą w czasie) i post-mortem 14–180 dni po wydaniu dla całego labela.
  439. v2.35.024 czerwca 2026, 23:55

    Talentobranie — fundament modułu castingowego

    • Wbiliśmy w bazę cały szkielet konkursu: edycje z wagami głosowania per etap per grupa, kandydaci (3 wideo + utwór), bitwy 1v1, głosy z wagą od roli, wyzwania cover od fanów.
    • Artyści ID dostają endorsementy z polami „dlaczego" i „co mogę z nim zrobić", osobne głosowanie jako grupa, oraz dziką kartę (save/eliminate) aktywną po E2.
    • System bramek (Gates) z 20 zasianymi typami: TikTok/IG follow + reel/story, Spotify follow/save/presave, instalacja PWA, newsletter, follow kandydata, ankieta gustu. Limit slotów zależy od poziomu artysty (B=1→X=10).
    • Panele pro: dziennikarz / influencer / ekspert / partner — każdy ma moderowane wnioski, własną wagę głosu, możliwość wystawiania bramek dla swoich fanów.
    • Komentarze fanów do kandydatów I do artystów ID z miejscem na sentyment AI; bucket „talentobranie" w storage gotowy. Następna iteracja: scaffold publicznego landingu i paneli.
  440. v2.34.024 czerwca 2026, 23:30

    Co-Pilot, Voice Drop i Post-Mortem rozproszone po HUBie

    • A1 Voice Drop wskoczył do „Gotowości premiery" — nagrywasz behind-the-scenes wtedy, kiedy myślisz o premierze, a nie wykopujesz tego z głębi zakładki.
    • A2 Co-Pilot dla artysty widać teraz na Hub na Start i w Pulse — automatycznie wybiera „premierę dnia" (najbliższą w czasie) i pokazuje 1 headline + 3 kolejne kroki.
    • Nowy A2-Admin Co-Pilot Label HQ na samej górze /admin/pulse: AI patrzy na wszystkie aktywne premiery jednocześnie i daje teamowi 3-5 priorytetowych ruchów (Teraz / Ten tydzień / Obserwuj) z linkami do konkretnej premiery.
    • C6 Post-Mortem AI jest też w Pulse artysty (gdy ma świeżo wydaną premierę) oraz na górze strony premiery — i u artysty, i u admina. Wszystkie 3 karty zostają tam, gdzie były (Plan / Po premierze).
  441. v2.33.024 czerwca 2026, 22:30

    Co-Pilot Premiery + Voice Drop + Post-Mortem AI

    • Co-Pilot Premiery: jedna karta z najmocniejszym actionable insightem dnia (z Pulse + radia + statsów) + 3 konkretne kolejne kroki. AI patrzy w pełny profil artysty, żeby nie sugerować rzeczy sprzecznych z brandem.
    • Voice Drop: nagrywaj 30-sekundowe notki głosowe wprost z HUBa (mikrofon, mood-chipy, notatka). Cały dziennik premiery w jednym timeline — D-7, D-1, dzień premiery, D+7… Materiał na reel "behind the scenes" jakiego nie ma żaden label.
    • Post-Mortem AI: po 14+ dniach od premiery odpalasz pełny mentorski raport — co zadziałało, czego zabrakło, lekcje i 2-4 konkretne ruchy na następny singiel. Pisany ciepło, profesjonalnie, w tonie senior A&R.
    • Wszystkie 3 karty widoczne w widoku premiery (zakładka Plan + Po premierze). Mobile-first, gradientowe, z animacjami.
  442. v2.32.224 czerwca 2026, 21:45

    Radio — fix: prawdziwe liczby zamiast zer w 7d

    • Hero radia i Momentum Grid pokazują teraz prawdziwe 7d. Wcześniej wszędzie były zera, bo zapytanie o emisje radiowe było obcinane do 1000 najstarszych rekordów (PostgREST max-rows) — najświeższe emisje gubiły się.
    • Loader paginuje teraz emisje malejąco po dacie, więc liczymy całe 30 dni (2k+ spinów) i Race/Heatmapa/Top stacja też się zgadzają.
  443. v2.32.124 czerwca 2026, 21:00

    Radio Hero — 7d, 30d i all-time obok siebie

    • Hero radia pokazuje teraz pełen obraz: aktywne stacje 7d, stacje 30d oraz łączna liczba stacji all-time (z radio_station_stats).
    • Dorzucone KPI „Emisje 30d" + all-time, średnia dzienna liczona z 30 dni (a nie z 7) — admin widzi liczby nawet w cichym tygodniu.
    • Top stacja tygodnia pokazuje równolegle 7d i 30d, żeby było widać, czy dziś gra, czy tylko jest w katalogu.
  444. v2.32.024 czerwca 2026, 19:30

    Radio 2.0 — kolorowy dashboard, monitoring nadal w sercu

    • Hero „Puls anten" z wielkim licznikiem emisji 7d, deltą vs poprzednie 7d, sparkline 30 dni, liczbą aktywnych stacji, średnią dzienną i bąblami „Top stacja tygodnia" / „Singiel grany najwięcej".
    • 🏁 Race tygodnia (top 10 singli, animowane słupki w kolorach momentum), Heatmapa 7×24 — od razu widać o której nas grają, Momentum Grid singli z chipsami (Wschodzące >+25% / Stabilne / Spadające / Świeże <30d / 💤 Cisza) i sortem (emisje / delta / stacje).
    • Station Power — top 30 stacji wg emisji 7d, z badge skali (ogólnopolska / regionalna / internetowa), liczbą singli, dzienną częstotliwością i 14-dniowym sparkline. Fresh on Air — premiery z 14 dni z oznaczeniem czy już złapaliśmy pierwszy spin.
    • AI Radio Coach z PROFILEM artysty (gatunek, voice, doświadczenie). Dopasowuje oczekiwania do poziomu: debiutantowi nie obiecuje Eski, gwiazdy nie chwali za jedną regionalną. Lista top stacji podawana modelowi, żeby nie halucynował nazw.
    • Ta sama zasada — czytanie profilu i dopasowanie poziomu — wgrana też w AI Streaming Coach (rangi playlist inne dla debiutanta, inne dla gwiazdy).
    • Feed emisji + eksport CSV i zakładki monitoringu / mapowania WARM zostają — przeniesione pod nowy dashboard jako „Szczegółowa lista emisji".
  445. v2.31.024 czerwca 2026, 17:00

    Streamingi 2.0 — żyjący dashboard zamiast tabelki

    • Puls katalogu: wielki licznik streamów 7d z deltą vs poprzednie 7d, sparkline 30 dni, KPI (słuchacze / saves / save-rate / playlisty + obs.) i bąble „Najmocniejszy singiel tygodnia" / „Potrzebuje pchnięcia" wprost w hero.
    • 🏁 Race tygodnia — animowane słupki top 10 singli po przyroście streamów (kolor = momentum, klik = drawer szczegółów). Momentum Grid z chipsami filtra (Wschodzące >+25% / Stabilne / Spadające / Świeże <30 dni) i sortowaniem (delta / streamy / save-rate / zasięg playlist).
    • Drawer singla: wykres 90 dni przełączany między streamami, savami i popularity, momentum 24h/7d/30d, save-rate jako gauge i pełna lista playlist z linkami do Spotify.
    • Cross-DSP board (Spotify / TikTok / YouTube / Instagram) — każdy DSP z 14-dniowym sparkline, deltą 7d i kolorem brandu. Świeże premiery — pasek 14-dniowego okna premierowego z postępem i mini-sparkline. Playlist Power — top 40 playlist po liczbie obserwujących z listą singli na pokładzie.
    • AI Streaming Coach — jeden klik „Oceń tydzień" i LLM podaje 4-6 konkretnych akcji bazując na winnersach / losersach / świeżych premierach.
    • Wyrzucone: sekcja „Rekomendacje playlist do pitchowania" (bazowała tylko na ID Records — bezsens) i alert skip-rate (kolumny nie ma w bazie). U artysty zakładkę przeniesiono z głównej nawigacji do Media → Streamingi (mobile-first). Naprawiony bug ładowania artistId u artysty (wcześniej widok pokazywał pustą stronę).
  446. v2.30.024 czerwca 2026, 15:30

    AI Posty: IG / FB / YT / TT — konkretne pomysły per-platforma

    • Nowa sekcja w Pulse: „Jakie posty tworzyć". AI ocenia strategię postów osobno dla Instagrama, Facebooka, YouTube'a i TikToka — każda platforma dostaje swój score (0-100), 1-zdaniową diagnozę, 3-5 konkretnych pomysłów z formatem (Reel 60s, karuzela 6 slajdów, Short 45s, longform 8min, live, event…) i hookiem, plus mocne/słabe strony.
    • Te same kryteria co przy ocenie Stories: profil artysty (voice, ton, pillary, audience, bio), top posty z 21 dni per-platforma, pomysły zaakceptowane/w realizacji, premiery ±28 dni, top stacji radiowych (WARM), playlisty Spotify i aktywne kanały mediów.
    • „Zrób TERAZ" (posty na dziś/jutro pod nie cierpiące zwłoki tematy: premiera za 2d, radio właśnie wzięło utwór, playlista wczoraj dopisała) + „Plan postów na tydzień" + pomysły „po ludzku" niezależne od liczb (BTS, anegdoty, throwback, humor).
    • Działa dla pojedynczego artysty (artyst-view) i dla całej labelki (admin bez wybranego artysty — agreguje top 21d ze wszystkich aktywnych w Radarze). Handle bez profilu? Platforma jest wyszarzona, ale AI może zaproponować „warto założyć/aktywować".
  447. v2.29.024 czerwca 2026, 13:00

    Story AI zna artystę + Streamingi + Radar→Pulse

    • Ocena AI Stories wreszcie czyta profil artysty — voice, ton, pillary contentu, audience i bio. Rady są dopasowane do tego, jak artysta MÓWI, a nie tylko do liczb z radia i playlist.
    • Wróciły kreatywne pomysły „po ludzku" (BTS, anegdoty, humor, throwbacki, relacja z fanami) — osobna sekcja obok rad opartych o twarde sygnały. Manager nie tylko liczy, ale i podpowiada formaty.
    • Osobne rady dla TikToka (Reels/posty TT) — Stories TT nie są dostępne przez API, ale AI proponuje content TT bazując na tym, co już chwytało u artysty.
    • Radar → Pulse: viral lub spike z postu artysty automatycznie wpada do głównego Pulse projektu jako event obok save'ów, playlist i streamów. Nic Ci nie umknie.
    • Nowa sekcja Streamingi 🎧 (artysta + admin) — momentum singli na Spotify: 7d vs poprzednie 7d, światła zielone/żółte/czerwone, skip rate alert, liczba i zasięg playlist. Admin dodatkowo: rekomendacje playlist do pitchowania z bazy „ID Records — playlisty rekomendowane".
  448. v2.28.024 czerwca 2026, 11:00

    Stories AI: radio + playlisty + pomysły + premiery + tryb label

    • Ocena AI Stories widzi teraz pełen kontekst promocji: stacje radiowe (WARM), playlisty Spotify, pomysły zaakceptowane/w realizacji, aktywne kanały medialne i nadchodzące premiery. Koniec rad „pisz częściej” — są konkretne odwołania do „Eska — 47 emisji”, „playlista X dopisała utwór wczoraj”, „premiera za 6 dni”.
    • Nowa sekcja „🚨 Zrób TERAZ” (dziś/jutro) obok „🗓 Plan na tydzień” — szybkie tematy nie cierpiące zwłoki idą osobno, plan na resztę tygodnia osobno.
    • Chipy „Sygnały, na które AI się powołała” + badge „Karmię się z: X pomysłów · Y playlist · Z emisji radio · premiera za Nd” — od razu widać, na czym AI bazowała.
    • Tryb label-wide dla admina (bez wybranego artysty) — AI ocenia prowadzenie Stories całej labelki naraz, na bazie agregatów z aktywnych artystów.
    • WARM po podbiciu emisji radiowych automatycznie wypycha kanał na samą górę swojej sekcji w edytorze projektu (feedback / planowane / aktywne) — „świeże” jest widać od razu, ręczne przeciągnięcia kanału pozostają w mocy do następnego update'u.
  449. v2.27.924 czerwca 2026, 09:00

    Stories: pasek + jakość prowadzenia + ocena AI

    • Stories znikają z głównego feedu — żyją tylko w pasku „IG Stories (24–72h)" u góry. Koniec dubli i pustych kart.
    • Nowy panel „Jakość prowadzenia Stories (14 dni)" — dyscyplina (% dni z minimum 1 story), aktywne dni, najdłuższa przerwa i krzywa jakości per-dzień.
    • Przycisk „Oceń AI Stories" — Gemini ocenia jakość prowadzenia story w kontekście Twoich najlepszych postów z Pulse z ostatnich 14 dni: mocne, słabe, konkretne action-itemy z odwołaniem do realnych postów/premier.
    • Admin: dodatkowy ranking dyscypliny Stories per-artysta — od razu widać kto regularnie wrzuca, a kto śpi.
    • Link do Story prowadzi teraz do profilu IG (story-permalinki wygasają po 24h i wymagają zalogowania), pasek Stories patrzy do 72h wstecz zamiast 48h — więcej szans, że zobaczysz to, co u Was świeże.
  450. v2.27.824 czerwca 2026, 07:00

    Radar w górnym menu Artysty

    • Dodajemy „Radar” w pasku Artysty tuż obok „Gotowości” — viralowe alerty social w jednym kliknięciu z każdego widoku.
    • Premiery zostają na swoim miejscu, nic z nawigacji nie wypadło.
  451. v2.27.724 czerwca 2026, 06:00

    IG Stories bez pustych liczników + poprawny podgląd wideo

    • Usuwamy z kart i paska Stories puste liczniki odsłon/DM — publiczne scrape'y IG nie widzą metryk właściciela konta, więc zera i kreski tylko myliły ocenę.
    • Story z URL-em wideo (mp4) renderuje się teraz jako krótki podgląd wideo zamiast zepsutej miniatury obrazka — dotyczy m.in. story „Post bez opisu”.
    • Mini-wykres metryk nie pokazuje się przy Stories, bo bez prywatnych metryk z IG nie ma sensownych punktów do rysowania.
  452. v2.27.624 czerwca 2026, 05:00

    Reel IG ma views, FB pokazuje miniaturę, Pulse otwiera się na „Wszystko”

    • Reel IG: stable-api w endpoincie listy postów nie zwraca view_count dla reelsów. Po pobraniu listy dociągamy brakujące views per-media z /get_media_data.php?media_id=<pk> (max 6 calli/artystę). Dzięki temu ER reelsów nie wyświetla już 0.
    • Facebook: dorzucamy video_thumbnail oraz album_preview do listy źródeł miniatury — większość postów wideo z facebook-scraper3 zacznie pokazywać podgląd. Dodatkowo shares czytamy z reshare_count (główne pole tego scrapera), więc ER łapie udostępnienia.
    • Story bez publicznych liczb pokazuje „—” zamiast „0” i krótką notkę, że zasięg/odpowiedzi widzi tylko właściciel konta IG — koniec mylących zer.
    • Filtry Pulse startują na „Wszystko” zamiast „Content” — od razu widać wszystkie świeże posty (Stories, Reels, Teledyski) bez klikania.
  453. v2.27.524 czerwca 2026, 04:00

    IG: powrót na stable-api + właściwe metryki Stories

    • Instagram jest znów domyślnie na instagram-scraper-stable-api. JoTucker i best-experience nie są już próbowane bez flagi eksperymentalnej, więc nie palimy requestów na 404/429 przy normalnym skanie.
    • Karty IG Story pokazują teraz tylko sensowne liczby: odsłony i DM-odpowiedzi. Lajki, komentarze publiczne i share są ukryte dla Story, bo API zwykle ich nie zwraca.
    • Parser liczb dostał obsługę obiektów typu count/total_count/value oraz dodatkowe pola views/replies używane przez stable-api, żeby Stories i Reels nie wpadały jako „0” gdy provider zmienia kształt JSON-a.
  454. v2.27.424 czerwca 2026, 03:15

    Radar: tylko aktywne projekty + bezpieczny powrót IG/FB

    • Adminowy Radar i automatyczny scan biorą teraz tylko artystów przypiętych do projektów ze statusem „active”. Artyści z archiwum nie nabijają listy ani nie zużywają limitów scraperów. Konta ID Records są skanowane osobno.
    • Instagram JoTucker używa poprawnego hosta technicznego instagram-scraper-api2.p.rapidapi.com zamiast sluga instagram-scraper2.p.rapidapi.com — to ogranicza 404 i niepotrzebne próby.
    • Facebook wraca na potwierdzony facebook-scraper3 z resolverem page_id. Jeśli w ENV jest facebook-scraper-api4, nie używamy go domyślnie, bo obecne mapowanie endpointów paliło 404 i nie zwracało postów.
    • Dashboard 2.0, overview i heatmapy w widoku „wszyscy artyści” liczą dane tylko dla aktywnych projektów, więc stare/archiwalne social dane nie mieszają obrazu labelu.
  455. v2.27.324 czerwca 2026, 02:30

    Radar: koniec palenia limitów RapidAPI + FB scraper3 z resolverem page_id

    • Na HTTP 429 (rate-limit) przerywamy próby — żadnych kolejnych ścieżek, żadnych kolejnych hostów. Host trafia w 30-min cool-down (per worker), więc inne wywołania też w niego nie walą. Wcześniej jeden artysta = ~5 spalonych calli na 429.
    • „OK, ale 0 items” nie jest już memoizowany jako działająca ścieżka. Story bywają puste dziś, jutro są — chcemy następnym razem znowu przejść pełną listę, a nie zaklepać pustkę.
    • IG fallback (instagram-best-experience) i FB scraper-api4 wyłączone domyślnie — nie znamy ich poprawnego mapowania ścieżek i każde wywołanie kończyło się serią 404 paląc limit. Można je włączyć przez ENV RAPIDAPI_INSTAGRAM_HOST_FALLBACK / RAPIDAPI_FACEBOOK_HOST_FALLBACK kiedy dograne zostaną właściwe endpointy.
    • Facebook scraper3 dostał resolver page_id: najpierw GET /page/page_id?url=…, potem /page/posts?page_id={numeryczny ID}. Dotąd dawaliśmy slug bezpośrednio i API zwracało 200 z pustą listą — stąd „no_usable_posts”. ID jest cache'owany per worker, więc resolver kosztuje 1 call na artystę / restart.
  456. v2.27.224 czerwca 2026, 01:30

    ER realniejszy + manualne „Skanuj” omija cache + miniatury FB

    • Nowa formuła ER: komentarze i udostępnienia liczą się dużo mocniej, ale mały zasięg (1–2k views) już nie produkuje sztucznego „Elite”. Przykład: 251 komentarzy + 1.3k lajków przy 30k views na FB → ~3.6% („Mocny”), a nie „Słaby 0.5%”. Lajki bez komentarzy / share dają ER bliski zera.
    • Manualny przycisk „Skanuj socjale teraz” (i admin, i artysta) faktycznie omija cache 60-min — koniec sytuacji „synced 15 postów z 1 platformy”, gdy chcemy świeży test. Cron i automaty dalej szanują cache, żeby nie palić limitów RapidAPI.
    • Facebook: dorzucone dodatkowe ścieżki na miniaturę posta (full_picture, picture, cover_photo.source, attachments[].media.image.src / .uri, media.photo_image.uri). Wcześniej facebook-scraper-api4 oddawał obrazek pod innym kluczem niż czytaliśmy i pokazywało „brak foto”.
  457. v2.27.124 czerwca 2026, 00:30

    Radar: liczby IG poprawione, FB na nowy scraper, cache na TT i FB

    • IG Reels i Story czytają teraz views poprawnie — sięgamy po max wartość ze wszystkich pól provider'a (play_count, video_view_count, viewer_count, total_viewer_count, seen_count itd.), w tym z zagnieżdżonych media/metrics. Dotąd part odpowiedzi instagram-scraper2 trzymał liczbę pod innym kluczem niż sprawdzaliśmy i pokazywało „0 views”.
    • Facebook przeniesiony domyślnie na świeższy facebook-scraper-api4 (oussemaf, lepszy SLA), ze starym facebook-scraper3 jako automatycznym fallbackiem. Memoizacja działającej ścieżki dotyczy też FB, więc szybko trafiamy na właściwy endpoint bez palenia limitu.
    • Cache 45–60 min objął teraz wszystkie płatne platformy (IG 60 / TT 45 / FB 60), a nie tylko IG. Cron raportuje igCached, ttCached, fbCached — łatwiej zobaczyć, że % limitów RapidAPI faktycznie spadł.
    • RapidAPI fallback: jeśli pierwszy endpoint zwraca OK ale pustą listę, zapamiętujemy go i kolejne wywołania od razu lecą na niego (1 call) zamiast palić wszystkie ścieżki (N calls). Wcześniej każdy „no items” oznaczał pełny przebieg listy.
    • Przycisk „Skanuj socjale teraz” w UI może omijać cache (force) — przy następnej iteracji UI dodamy mu jawny override; teraz parametr jest już dostępny od strony backendu.
  458. v2.27.023 czerwca 2026, 23:30

    Radar IG: tańsze API + cache 60 min — koniec z wyczerpywaniem limitów

    • Wymieniamy dostawcę Instagrama: zamiast drogiego „stable-api” idziemy na instagram-scraper2 (JoTucker, ~$0.00015/call) jako główny i instagram-best-experience (ponds4552) jako fallback. Realnie tańsze ~10–30× — limity nie powinny już padać przy normalnym użyciu.
    • Cache TTL 60 min per artysta dla IG: jeśli ostatni scrape (post lub story) z Instagrama był < 60 minut temu, kolejny cron / „Skanuj socjale teraz” go pomija. Sam YT/TT/FB nadal działają normalnie. W odpowiedzi cron raportuje liczbę pominiętych dzięki cache (igCached).
    • Pamiętamy działającą ścieżkę RapidAPI per host — jak coś raz strzeli OK na endpoint X, kolejne wywołania od razu lecą na X zamiast palić limit na 404-kach. Działa też przy fallbacku między providerami.
    • Komentarze IG nadal lecą tylko on-demand (przy AI-analizie posta), nigdy z crona — żeby nie palić limitów na rzeczy, których nikt nie ogląda.
  459. v2.26.523 czerwca 2026, 22:30

    Radar: IG views naprawione, menu „⋯” pełne, Stories czytelne, Radar w landingu

    • IG views (Reels) wpadają teraz poprawnie: scraper rozpoznaje play_count, video_play_count, ig_play_count, fb_play_count, video_view_count, reel_play_count, videoViewCount, playCount oraz metrics.* — dotąd dla części odpowiedzi RapidAPI Reels pokazywał się jako „0 views”. Reels rozpoznawany też po product_type=clips/igtv, nawet jeśli media_type przychodzi inaczej.
    • Menu „⋯” pod kartą postu nie chowa się już za rogiem karty — leci portalem z fixed-positioning, więc widać wszystkie 5 pozycji (Przypnij / Flaguj / Kategoria / Notatka / Ukryj), z auto-przerzutem nad przycisk, gdy braknie miejsca u dołu.
    • Mini-wykres pod postem znika cicho, gdy nie ma >1 pomiaru — koniec z wiecznym „zbieram pomiary…” pod każdym postem. Pojawi się dopiero, gdy cron zbierze realną historię.
    • Pasek IG Stories pokazuje teraz: thumbnail z poster-frame (a nie URL wideo, który nie renderował się jako image), wiek („Xh temu”), „znika za Yh”, znacznik Świeże (<6h), DM-replies oraz mini-podsumowanie nad paskiem (ile artystów / total views / total DM-replies / najlepsze story dnia). Brak miniatury jest sygnalizowany ikonką zamiast pustego kafelka.
    • Landing → sekcja „Strefa Artysty od środka” dostała pełny kafel Radaru 🛰️ (IG/FB/YT/TT, AI insights per post, porównania, analiza komentarzy, alerty viral + Stories) — od razu komunikujemy artystom co to jest i po co.
  460. v2.26.423 czerwca 2026, 21:15

    ER ważony jakością + IG Stories znowu wpadają do Radaru

    • ER nie sumuje już naiwnie lajków z komentarzami: lajki są bardzo lekkim sygnałem, komentarze umiarkowanym, a share/save najmocniejszym. Przykład 1,3k views / 134 lajki / 33 komentarze / 0 share nie będzie już wyglądał jak „Elite 13%”, tylko jak średni engagement bez potencjału viralowego.
    • Brak share'ów i mało głębokich reakcji mocno obniża wynik — dokładnie po to, żeby artyści nie dostawali fałszywego „wow” przy poście, który realnie nie niesie się dalej.
    • IG Stories scraper obsługuje teraz odpowiedź tablicową z instagram-scraper-stable-api oraz dodatkowe kształty JSON-a, więc aktywne stories Gabora wpadają jako post_type="story" / external_id="story_…" do paska na górze Radaru.
  461. v2.26.323 czerwca 2026, 20:45

    ER bez komentarzy mocno zdegradowany + realny fix IG/FB scraperów

    • ER dostał ostrą karę za engagement samymi lajkami: jeśli nie ma komentarzy, udostępnień ani zapisów, wynik spada do ułamka i pokazuje „Słaby" zamiast „Średni/Mocny". Przykład z 71 lajkami, 0 komentarzy i 0 share'ów nie będzie już wyglądał jak dobry engagement.
    • Post bez żadnych głębokich interakcji nie może dostać plakietki viral/trending/rising — nawet jeśli ma dużo lajków. Viral musi mieć nie tylko views, ale też realną reakcję ludzi.
    • Instagram scraper naprawiony zgodnie z RapidAPI: get_ig_user_posts.php działa jako POST/form-data z username_or_url, nie GET z query stringiem — to właśnie robiło rapidapi_404. To samo dopięte dla Stories.
    • Facebook scraper najpierw rozwiązuje page_id przez /page/page_id, potem pobiera /page/posts?page_id=…; dorzucony fallback dla publicznych profili, żeby FB nie kończył na błędnych page_username/username ścieżkach.
  462. v2.26.225 czerwca 2026, 22:00

    ER jakościowy + diagnostyka skanu per platforma + FB scraper fallback

    • ER nie przekłamuje już posta typu „36 lajków · 0 komentarzy · 0 udostępnień na 274 views" jako „Mocny 13%". Liczymy teraz udział głębokiego engagementu (komentarze + shares + saves) — poniżej 8% tego udziału ER lecimy liniowo aż do 0.35× przy 0%. Posty z naturalnym rozkładem (jest co najmniej kilka komentarzy/shares wśród interakcji) nie ruszamy.
    • Toast po skanowaniu artysty pokazuje teraz rozkład per platforma — np. „YT 15 · IG 0 ❌rapidapi_404 · FB 0 ❌no_usable_posts · TT 3" — zamiast samego „z 3 platform". Widać który scraper coś przyniósł, a który padł i z jakim errorem.
    • Facebook scraper przepisany jak IG w v2.26.1 — fallback chain po 5 wariantach ścieżek (page_username / username / page_id) bo facebook-scraper3 ma różne wersje API; samo /page/posts?page_id= zwracało puste „results" dla większości kont.
  463. v2.26.125 czerwca 2026, 20:30

    IG scraper naprawiony + etykiety w Kategorii postu

    • Instagram (posty, Stories, komentarze) na hoście instagram-scraper-stable-api zaczyna używać właściwych ścieżek typu /get_ig_user_posts.php?username_or_url=… — wcześniej waliliśmy w /ig/posts/?user=, co provider zwracał 404 (stąd 0% użycia subskrypcji IG i pusty feed Gabora). Dorzuciliśmy fallback chain (6 wariantów ścieżek) — jak provider zmieni schemat, drugi w kolejce złapie i poleci log z którego endpointu wpadło.
    • Dialog „Kategoria postu" (⋯ → Zmień kategorię) zyskał drugą sekcję „Dodatkowe etykiety" — Reel / Short / Backstage / Q&A / Snippet / Meme / Kolab / Reklama / Event recap / Tutorial. To te same wartości, które filtruje pasek „Etykieta" na liście postów — teraz wreszcie da się je nadać konkretnemu postowi.
  464. v2.26.025 czerwca 2026, 18:00

    Radar: prawdziwe virale, sentyment od razu, hero z KPI

    • Plakietki „Viral" zaczęły mieć znaczenie — wyczyszczone 19 starych false-positive'ów (post 2-7k views ≠ viral), cron podbity z progu 2k do 10k. Licznik „Viral × N" na liście artystów wreszcie odzwierciedla nowe progi.
    • Wchodząc w artystę dostajesz teraz hero z 6 kaflami KPI (Postów / Views / Likes / Komentarze / Virale / Średnia) i poziomymi paskami udziału platform z procentami — zamiast suchego buletu „16 postów łącznie".
    • Pasek reakcji (hejt → neutral → ciekawość → uwielbienie → off-topic) pokazuje się teraz pod ER w każdej karcie postów u admina (artysta miał już od poprzedniej wersji).
    • Klik „🤖 AI: spróbuj wyciągnąć" w dialogu komentarzy od razu zapisuje próbkę i przelicza ocenę AI — sekcja „Co mówią ludzie" i pasek sentymentu pojawiają się bez dodatkowego klika „Przelicz".
    • Rozszerzone podkategorie w filtrach feedu Radaru: Reel / Short / Live / Backstage / Q&A / Cover / Snippet / Meme / Kolab / Ad / Event recap / Tutorial. Etykietę nadasz konkretnemu postowi z menu „⋯ → Zmień kategorię".
    • Radar wskoczył do głównego pasku menu admina (obok Pulse) i do grupy „Media". Pressroom wrócił do grupy Media — był wcześniej w top-barze, teraz robi miejsce dla Radaru jako kluczowej sekcji.
    • Odpowiedź na pytania: cron Radaru chodzi co 6h (auto-scrape + viral detection). Snapshot historii lat 1×/scan na post (min 25 min odstępu), więc świeży post potrzebuje 2 skanów (12h) żeby „zbieram pierwsze pomiary" zniknęło. Direct posting (POST endpointy IG/TT) — wymaga review aplikacji Meta/TikTok (~1-3 tyg), więc póki co tylko draft/scheduled w roadmapie.
  465. v2.25.025 czerwca 2026, 15:00

    Dashboard 2.0 zlany z Radarem + sentyment komentarzy + Stories strip

    • Dashboard 2.0 (KPI WoW, Risers, Fallers, heatmapa 60d) wjechał wprost do /admin/social/pulse — koniec dwóch oddzielnych linków. Lista artystów dostała nowy badge stanu (🔥 Viral / 🆗 Aktywny / 😴 Cisza / Brak postów) zamiast wciskanego wszędzie „Viral × N".
    • Plakietka „Viral" wymaga teraz realnego zasięgu: ≥10k wyświetleń ORAZ ≥3× mediana. Posty 2-3k z mocnym ER pokazują się jako „📈 Trending" albo „💎 Mocny ER". Licznik virali na overview filtruje stare false-positive'y po stronie zapytania.
    • Ocena AI po pobraniu komentarzy generuje teraz: pasek reakcji ludzi (hejt → neutral → ciekawość → uwielbienie → off-topic), cytaty fanów ("co realnie piszą"), wątki, „na co zwrócić uwagę" i konkretne ruchy wprost z komentarzy.
    • Pasek IG Stories na samej górze Radaru (admin + artysta) — pokazuje miniatury ostatnich 48h z viewsami. Stories ingestują się jako post_type="story" / content_kind="story", więc filtr „⭕ Story" zaczyna realnie filtrować.
    • Artysta w swoim Radarze ma w końcu miniaturki postów + przyciski „Podobne" i „Komentarze" — tak jak admin. Sentyment pokazuje się też pod ER w każdej karcie posta.
    • Grupowanie „Podobne" nie zacina się już na hashtagu — szuka po wszystkich postach artysty i dorzuca te z tym samym hashtagiem ALBO podobnym tytułem (te 4 wersje „dograj się do refrenu" wpadają razem).
    • IG scraper (przypadek Gabora): fallback do alternatywnych ścieżek JSON-a (data.items / items / results / posts), zwraca jasny error gdy provider odda pustkę zamiast cichego „0 postów" — w logach widać czego brakuje.
  466. v2.24.1325 czerwca 2026, 11:00

    Auto-komentarze przez 4 dedykowane hosty + IG Stories w Radarze

    • Przycisk „🤖 AI: spróbuj wyciągnąć" w dialogu komentarzy najpierw pyta dedykowany scraper platformy (tiktok-scraper7 /comment/list, instagram-scraper-stable-api /ig/comments, facebook-scraper3 /post/comments, YouTube Data API /commentThreads). Zwraca strukturalny JSON z autorem i lajkami — koniec z parsowaniem gołego HTML-a. Dopiero gdy host padnie / nie wspiera danego posta, lecimy fallbackiem AI+HTML.
    • IG Stories scraper żyje: każdy refresh Radaru (manual albo cron co 6h) pobiera też aktywne stories artysty (instagram-scraper-stable-api /ig/stories) i wpada do tej samej tabeli postów (oznaczone external_id="story_…"). Dzięki temu stories liczą się do KPI / Risers / Fallers / heatmapy publikacji bez osobnej szyny.
    • Web-scraping-api (ScrapingBee-alt) celowo NIE jest podpinane — dedykowane hosty oddają komentarze jako strukturalny JSON, więc generyczny render HTML nic by tu nie dał. Subskrypcję zostaw na zapas (np. headless render IG Stories z auth — gdyby trzeba było).
  467. v2.24.1224 czerwca 2026, 20:00

    Dashboard 2.0 — picker artysty/labela + CTA „Podepnij socjale”

    • Na Dashboard 2.0 jest teraz selector kontekstu: 🏷️ ID Records (label) albo dowolny artysta — KPI / Risers / Fallers / heatmapa przeliczają się od razu pod wybrane konto.
    • Prominentny przycisk „🔌 Podepnij socjale" w nagłówku — dla labelu prowadzi do /admin/social/accounts, dla artysty do jego profilu (tam wpisujesz handle IG / TT / YT / FB). Bez handli scraper nie ma czego skanować.
    • Pasek kontekstu pod nagłówkiem przypomina, że po wpisaniu handle trzeba na liście Radaru odpalić „Skanuj socjale teraz" (albo poczekać do najbliższego crona co 6h).
    • Stabilniejszy routing — wymuszony rebuild route tree po wczorajszym 404 na /admin/social/pulse/dashboard.
  468. v2.24.1124 czerwca 2026, 19:00

    Social Radar — Dashboard 2.0 (WoW KPI + Risers/Fallers + heatmapa publikacji)

    • Nowa zakładka „📊 Dashboard 2.0" w nagłówku Radaru. 5 kafli KPI (Views, Likes, Komentarze, Udostępnienia, Posty) z porównaniem week-over-week (kolorowe ±%), do wyboru okno 7/14/30 dni vs poprzednie tyle samo.
    • Listy „🚀 Risers" i „📉 Fallers" — top 5 postów z największym przyrostem views w okresie (wyliczane z metric snapshotów, więc to realny delta, nie suma od początku świata) plus 5 postów, które najbardziej wyhamowały. Każdy klikalny do oryginału.
    • Heatmapa publikacji 7×24 z ostatnich 60 dni — widać dziury w grafiku i ulubione okno publikacji. Podpowiedź „Najczęściej publikujecie {dzień} {godzina}" pomaga uderzyć poza tłumem.
    • Toast AI auto-fetch komentarzy daje teraz konkretne rady, gdy strona zwraca pusto (TikTok/Instagram): jak skopiować ręcznie i kiedy spodziewać się prawdziwego headless scrapera (v2.25).
    • Stories scraper (IG) zostaje na v2.24.12 — bez płatnego API (Apify/Bright Data) IG Stories są wyłącznie za auth, więc to osobna decyzja kosztowa.
  469. v2.24.1024 czerwca 2026, 18:00

    Social Radar — wykres wreszcie pokazuje WSZYSTKIE 4 metryki + AI auto-fetch komentarzy + „czemu najlepszy post wygrał”

    • Bottom-sheet pełnej historii posta dostał 4 osobne sparkline'y (Views / Likes / Komentarze / Udostępnienia) — każda metryka na własnej miniaturze z własnym skalowaniem, plus osobny pasek ER pod spodem. Koniec z „widzę tylko jedną linię" — 1.3k views obok 39 likes obok 2 komentarzy teraz każdy ma swój wykres i swoje min/max.
    • Nowy przycisk „🤖 AI: spróbuj wyciągnąć automatycznie" w dialogu komentarzy — Lovable AI fetchuje stronę posta i ekstrahuje publiczne komentarze do textarea. Best-effort: dobrze działa na YouTube/Facebook (komentarze są w HTML-u), TikTok/Instagram renderują je JS-em i często wracają puste — wtedy wklejasz ręcznie jak dotąd.
    • AI analiza grupy „Podobne" ma nową sekcję „🏆 Czemu najlepszy post wybił się ponad inne" — AI tłumaczy konkretnie, co w pierwszym (najmocniejszym) poście było inne niż w pozostałych: hook, CTA, długość tytułu, emoji, pora publikacji, hashtag, długość wideo — i porównuje to z medianą grupy. Dostajesz odpowiedź na pytanie „co tu zadziałało?", a nie tylko zbiorczy „co działa w tej serii".
  470. v2.24.9.124 czerwca 2026, 17:00

    Social Radar fixy — lepsze grupowanie wariantów + wykres 4 metryk wreszcie widoczny

    • „Podobne" wreszcie łapie warianty tytułu. Wcześniej „Dograj się do refrenu" i „Dograsz się do refrenu" lądowały w osobnych grupach (bo signature była dosłowna). Teraz tokeny tytułu są stemowane do 5 znaków i grupa łapie wszystko, co dzieli ≥2 wspólne stemy albo ma Jaccard ≥ 0.5 — cała seria „dograj/dograsz” trafia do jednej grupy.
    • Pełny wykres w bottom-sheecie pokazuje teraz wszystkie 4 metryki naraz. Wcześniej likes/komentarze/shares ginęły w zerze, bo dzieliły lewą oś z views (1.3k vs 50 → wszystko poniżej widać jako płaską linię). Teraz każda seria jest znormalizowana do 0–100% własnego peaku — wszystkie 4 linie widoczne obok siebie. Tooltip dalej pokazuje surowe liczby, a legenda informuje o peakach.
    • Honest note: automatyczny scraper komentarzy z TikToka/Instagrama to osobna inwestycja (oficjalne API nie dają komentarzy publicznych postów, scrapery = łamią ToS i blokady). Na razie zostaje wklejanie ręczne — zaplanowane w v2.25 (eval'a pod alternatywę przez Apify/SerpAPI).
  471. v2.24.924 czerwca 2026, 16:00

    Social Radar — AI z komentarzy + grupowanie podobnych postów (po hashtagu/tytule)

    • Ocena AI posta uwzględnia teraz to, co realnie piszą ludzie. W każdej karcie posta jest fioletowy przycisk „💬 Komentarze" → wklejasz 5-15 komentarzy spod postu, AI je czyta (sentyment, pytania, czego ludzie chcą) i bierze to pod uwagę przy ocenie. Po zapisie możesz od razu kliknąć „Zapisz + przelicz AI" — przelicz idzie z force=true.
    • Nowa funkcja „🔍 Podobne" w karcie posta — otwiera bottom sheet z grupą postów zgrupowanych po wspólnym hashtagu albo podobnym tytule (np. cała seria „dogranie do refrenu"). Sheet pokazuje KPI grupy (najlepszy, mediana views, średni ER) i pełną listę postów od najlepszego do najsłabszego, każdy klikalny do oryginału.
    • W bottom sheecie grupy jest też przycisk „🧠 AI: co w tym typie działa?" — AI ocenia osobno CO w tym typie contentu rezonuje, co nie działa i jakie eksperymenty zrobić dalej (inny CTA, inny hook, inna pora). To daje wreszcie odpowiedź na pytanie „który format mojej serii był najlepszy i czemu?".
    • Dodaliśmy do generatora pomysłów nową kategorię akcji „🧪 Wariant tego samego contentu (np. dogranie do refrenu)" — żeby planować eksperymenty z tym samym formatem i potem porównywać je w Radarze.
    • Bugfix: kliknięcie „⚡ Snapshot" w admin karcie posta teraz natychmiast odświeża mini-wykres i pełny wykres w bottom sheecie (wcześniej invalidowano tylko listę dashboardu, queryKey post-history nie był odświeżany — przez to wyglądało, że snapshot nic nie robi).
  472. v2.24.824 czerwca 2026, 15:00

    Social Radar — komentarze w ocenie AI + grupowanie contentu (preview)

    • Dodaliśmy do social_post_snapshot pola comments_sample / comments_sample_at — fundament pod ocenę AI uwzględniającą realny sentyment komentarzy.
    • Pełna implementacja UI (dialog wklejania komentarzy + sheet grupowania podobnych postów + AI analiza grupy) wyleciała w v2.24.9 (godzinę później) — łącznie z bugfixem snapshotu.
  473. v2.24.724 czerwca 2026, 13:00

    Social Radar — pełny wykres w bottom sheet + Radar w nawigacji + link do analizy AI

    • Kliknij mini-wykres pod dowolnym postem → otwiera się bottom sheet z pełną historią 30 dni: 4 metryki (views, likes, komentarze, shares) na jednej osi + linia ER (zielona, kropki) na osi prawej, KPI tilesy z deltami między pierwszym a ostatnim pomiarem i podgląd oceny AI jeśli była.
    • Bottom-nav PWA artysty dostał nowy slot „📡 Radar" linkujący prosto do /artist/social/pulse — Projekty / Premiery / Radar / Zadania / Powiadom. Już nie trzeba klikać przez Projekt → Social → Radar.
    • Nagłówek pulse (i u artysty, i u admina) ma teraz fioletowy chip „🧠 Pełna analiza profilu" — przeskakujesz do /artist/social/analytics (lub /admin/social/analytics) bez szukania w menu.
    • W przygotowaniu (v2.24.8): auto-push notification z crona przy viralu/spike (1/dzień/artystę) + Dashboard 2.0 (WoW KPI, Risers/Fallers, heatmapa publikacji).
  474. v2.24.624 czerwca 2026, 10:00

    Social Radar — realistyczne progi viralu (absolutne views, nie tylko mnożnik)

    • Koniec z „MEGA viral" przy 6× mediany i 12k views. Nowa klasyfikacja oparta jest na ABSOLUTNYCH wyświetleniach per platforma: 🔥🔥 MEGA viral (TT 1M+, IG 500k+, YT 500k+), 🔥 Viral (TT 250k+, IG 150k+, YT 100k+), ✨ Trending (TT 100k+, IG 50k+, YT 30k+), 📈 Rokuje (TT 25k+, IG 15k+) i 📈 Niezły content (TT 5k+).
    • Mnożnik vs własna mediana został zdegradowany do roli wspierającej — chronimy tylko dolne tiery („Rokuje" wymaga 1.8×, „Niezły" 1.2×), a „Viral/Trending" idą po samych liczbach. Dzięki temu post z 170k wyświetleniami na TikToku to wreszcie „Trending", a nie „Hot 6× MEGA viral".
    • Każda plakietka pokazuje teraz liczbę views obok etykiety (np. „Trending · 170k · 6.2×"), żeby jednym rzutem oka wiedzieć, dlaczego post dostał tę ocenę.
    • W przygotowaniu (v2.24.7): bottom sheet z pełnym wykresem 4 metryk + auto-push push notification przy viralu/trendingu z crona.
  475. v2.24.524 czerwca 2026, 02:30

    Social Radar — rozsądniejsze progi viralu + lepsze etykiety ER + fix premier

    • Progi virala są teraz bardziej wymagające: 📈 Niezły content 1.2×, 📈 Mocny post 1.8×, 🔥 Hot 3×, 🔥 Viral 5×, 🔥 Huge viral 10×, 🔥🔥 MEGA viral 20×. Dodatkowo virale (Viral/Huge/MEGA) wymagają minimum 10k views — żeby post z 200 wyświetleniami nie dostawał korony.
    • ER ma nowe etykiety zamiast płaskiego „Dobry / OK": 🥶 Słaby, 🙂 Średni, 💪 Mocny, 🚀 Elite — i każda dostaje kolorowy chip z emoji obok paska ER, nie szary tekścik na końcu.
    • Fix: krash „n.filter is not a function" przy otwieraniu detalu premiery jako admin (gdy press_alerts/press_badges/press_hooks w bazie były obiektem zamiast tablicy). Teraz hartowane przez Array.isArray na każdym odczycie.
  476. v2.24.424 czerwca 2026, 01:00

    Social Radar — stopniowane virale, kolorowe platformy, alerty na górze

    • Plakietka viralu jest teraz stopniowana: 🔥 MEGA viral (5×+, czerwony pulsujący gradient), 🔥 Viral (3×+, czerwono-pomarańczowy), 🔥 Hot (2×+, pomarańczowy), 📈 Mocny post (1.5×+, bursztyn), 📈 Niezły content (1.2×+, żółty). Każda z mnożnikiem widocznym przy badge'u — od razu wiesz „o ile" post bije medianę.
    • Plakietki platform są teraz kolorowe i brandowane: TikTok (cyjan→magenta gradient), Instagram (gradient IG), YouTube (czerwony), Facebook (niebieski) — koniec z czarnymi pigułkami.
    • 🔥 Świeże alerty wjechały na górę dashboardu admina (zaraz pod nagłówkiem), w siatce 2 kolumn z czerwono-pomarańczowym glow zamiast szarej listy na dole.
    • Każda karta postu w adminie ma teraz przycisk ⚡ Snapshot — wymusza świeże zebranie metryk od razu (bez czekania na crona co 25 min), żeby mini-wykresy zaczęły się rysować szybciej.
  477. v2.24.324 czerwca 2026, 00:15

    Social Radar — ładniejsza karta oceny AI (pełna treść, gradient score)

    • Karta oceny AI per post została przeprojektowana: duży gradientowy score 1-10 (kolor zależny od oceny), badge modelu (Flash / GPT-5 Pro) i etykieta jakości (Słaby / Średni / Dobry / Świetny).
    • Werdykt AI nie jest już ucięty do jednej linijki — pełna treść jest widoczna w nagłówku karty.
    • Sekcje „Co zadziałało / Co poprawić / Następne ruchy" mają teraz osobne, kolorowe panele (emerald / amber / fuchsia) z ikonami i czytelnymi punktami — łatwiej skanować wzrokiem.
  478. v2.24.223 czerwca 2026, 23:30

    Social Radar — WOW per-post: skala ER, badge stack, AI ocena, podbij do Pulse

    • ER (engagement rate) ma teraz wizualną skalę z gradientem i benchmarkami platformy: low → ok → dobry → elite. Próg „elite" inny dla TT (15%), IG (8%), YT (10%), FB (5%) — od razu widać czy post bije średnią platformy.
    • Na każdej karcie postu lecą wszystkie kwalifikujące się badge'e z tooltipem „dlaczego": 🔥 Viral (≥3× mediany), 📈 Spike (≥1.5×), 💎 Elite ER, 📌 Pin admin/artysta, 🎬 Teledysk, ⏱ Short, 🚀 Świeże, 🌱 Evergreen, 🎯 Premiera.
    • Admin ma nowy guzik „udostępnij" na każdym poście: 📣 wyśle go do Pulse artysty (z notką + push), 🤖 wygeneruje pomysły z tego posta jednym klikiem, ✉️ otworzy messengera z artystą.
    • 🤖 Ocena AI per post: klik „Oceń AI" — Lovable AI (Flash domyślnie, GPT-5 do wyboru) zwraca werdykt 1-10, co zadziałało, co poprawić i 2-3 konkretne next-actions. Cache 7 dni, wynik zapisany przy poście.
    • Pod spodem: rozszerzony schemat eventów Pulse (cooling / evergreen / admin_highlight) i indeks na historię metryk — żeby wykresy ładowały się szybciej.
  479. v2.24.123 czerwca 2026, 21:30

    Social Radar — akcje per-post, filtry i sekcja Teledysków

    • Każda karta postu (artysta i admin) ma teraz menu „…" z akcjami: 📌 Przypnij, ⚑ Flaguj (admin), 🎬 Zmień kategorię (zwykły content / teledysk / cover / live / story…), 📝 Dodaj notatkę (osobno dla artysty i admina), 👁 Ukryj z radaru.
    • Przypięte posty świecą fuchsiowym ringiem i mają badge „📌 ADMIN/ARTYSTA", notatki są pokazywane na karcie. Ukryte posty są wyszarzone i wracają przez filtr „👁 Pokaż ukryte".
    • Nowy pasek filtrów: zakładki Wszystko / 📱 Content / 🎬 Teledyski / ⭕ Story, wybór platformy, sortowanie Najnowsze / Top views / Top ER oraz toggle „Tylko przypięte".
    • Teledyski lecą w osobnej sekcji pod feedem (jak nie są aktywnym filtrem) — tak żeby nie zaniżały mediany engagementu zwykłego social-contentu, ale były zawsze pod ręką.
  480. v2.24.023 czerwca 2026, 20:30

    Social Radar — wykresy per post, Top 7 dni i klasyfikacja teledysków

    • Każdy zeskanowany post zapisuje teraz snapshot metryk (views/likes/comments/shares/ER). Pod każdym postem w adminowym Radarze pojawia się mini-wykres 30-dniowy z auto-badge'em momentum (🔥 +200% w 24h, 📈 Trending up, 📉 Spadek tempa, 💎 Evergreen).
    • Nowa sekcja "Top 7 dni — co teraz dowozi" na overview i w drill-down: top 5 postów z badge'em (Viral / Spike / High ER / Pinned) i powodem (np. "3.2× powyżej mediany TikToka").
    • Auto-klasyfikacja teledysków — posty z YouTube/IG zawierające "official video / teledysk / lyric video" są oznaczane jako music_video i nie zaburzają rankingu social-contentu.
    • Pierwsze pomiary pojawią się stopniowo (snapshot raz na ~25 min na post). Po 2-3 skanach wykresy mają już sensowne kształty.
  481. v2.23.223 czerwca 2026, 19:00

    Social Radar — podgląd konkretnych postów w adminie

    • Adminowy drill-down artysty pokazuje teraz listę najnowszych postów z sociali, a nie tylko skrót i top platformy.
    • Każdy post ma miniaturę, platformę, opis, datę, views, likes, komentarze, udostępnienia, ER oraz link do oryginalnego posta.
    • Dzięki temu po skanie od razu widać, co konkretnie dzieje się u artysty i które treści warto sprawdzić ręcznie.
  482. v2.23.123 czerwca 2026, 18:30

    Social Radar — fix zapisywania zeskanowanych postów

    • Scraper zwracał komunikat „zsynchronizowano 100 postów 44 artystów", ale nic nie pojawiało się w widoku — wszystkie inserty były po cichu odrzucane przez CHECK constraint na kolumnie `source`.
    • Wszystkie auto-importy zapisują się teraz jako `source = scrape` i od razu pojawiają się w Radarze oraz w „świeżych alertach" na /admin/pulse.
    • Wystarczy ponownie kliknąć „Skanuj socjale wszystkich artystów" — posty powinny od razu wskoczyć.
  483. v2.23.023 czerwca 2026, 17:00

    Social Radar 🛰️ — auto-skanowanie socjali artystów

    • Zmiana nazwy „Social Pulse" → „Social Radar" — bo to nie tylko bicie serca, ale aktywny radar postów. Stare linki dalej działają.
    • Auto-import postów z YouTube, TikTok, Instagram i Facebook na podstawie handle/URL-i z Profilu artysty — bez logowania per-user. Cron skanuje co 6h, ale można też kliknąć „Skanuj teraz".
    • Admin dostaje przycisk „Skanuj socjale wszystkich artystów" — jednym kliknięciem odświeża cały label (1-2 min). Każdy artysta ma swój przycisk w nagłówku Radaru.
    • Bridge do głównego /admin/pulse — nowa sekcja „Social Radar — świeże alerty" pokazuje 5 najnowszych virali z linkiem do pełnego widoku.
    • Scraper: YouTube przez oficjalne API (działa od ręki, klucz już jest). IG/TikTok/FB przez RapidAPI — wymaga raz wpisać klucz `RAPIDAPI_KEY` w sekretach (~$15-30/mies u providera).
    • Wszystko gracefully degraduje — brak klucza scrapera = ten kanał jest pomijany, reszta dalej śmiga. Ręczne dodawanie postów zostaje jako tryb fallback i „popraw liczby".
  484. v2.22.023 czerwca 2026, 15:30

    Social Pulse 🔥 — bicie serca Twoich social mediów (poprzednik Social Radar)

    • Nowy moduł „Social Pulse" — centralny monitoring postów artysty (TikTok, IG, YouTube, FB, X, Threads, Spotify, Twitch). Każdy artysta widzi swoje, admin widzi wszystkich + osobno konto labelu ID Records.
    • Dashboard z biciem serca: total views, top 5 postów, podział wg platformy, trend 30 dni, oddzielne karty dla postów „pod premierę" i „pozostałe".
    • Auto-detekcja virali — gdy post przebija 3× medianę wszystkich postów artysty (lub 2k+ views), wpada do feedu alertów jako „🔥 Viral" albo „📈 Spike".
    • Lovable AI dla każdego virala generuje konkretną sugestię „co teraz zrobić w 48h" — punktowo, wykonalnie, w 1. osobie strategicznej (kolaby, prasówka, kolejny content, presave).
    • Mobile-first dla artysty — sticky przyciski 44px, dialog dodawania posta od dołu jak na iOS, gradienty platform i shimmer efekt na statystykach. Admin dostaje dodatkowo overview wszystkich artystów z drill-downem.
    • Cron `/api/public/hooks/social-pulse-refresh` — periodycznie skanuje całą bazę i wystawia świeże eventy bez czekania na ręczne kliknięcie.
  485. v2.21.223 czerwca 2026, 14:15

    Brief prasowy: „Powiedz zamiast pisać" przy każdym pytaniu

    • Przy każdym z 12 pytań briefu prasowego pojawił się mikrofon — artysta może nagrać odpowiedź zamiast pisać.
    • AI robi transkrypcję, czyści wahania (yyy/eee) i wstawia gotowy, klarowny tekst do pola — pisany w 1. osobie.
    • Oryginał i pełna transkrypcja zostają w bazie, więc admin/AI generator pitchów ma dostęp do surowca, nie tylko do streszczenia.
    • Świetne na telefonie — najszybszy sposób, żeby wypełnić brief w drodze.
  486. v2.21.123 czerwca 2026, 13:30

    Brief prasowy w „Gotowości premiery" + fix chipsów osobowości

    • Brief prasowy trafił do modułu „Gotowość premiery" jako MUST-HAVE — obok presskitu i artist pitcha. Procent wypełnienia liczy się z 12 pól (lub 100% po oznaczeniu „gotowy").
    • Fix: chipsy osobowości w presskicie nie wywalają już całego widoku, jeśli w bazie siedzi stary format wartości (string zamiast listy) — komponent toleruje oba.
  487. v2.21.023 czerwca 2026, 12:00

    Brief prasowy — 12 pytań, same się pre-fillują

    • Nowy moduł „Brief prasowy" przy każdej premierze: 12 pytań pokrywających komplet, którego potrzebuje dziennikarz, radio i playlist editor (bio, temat, przesłanie, inspiracje, anegdota, plany, strategia, teledysk itd.).
    • Bio zaciąga się automatycznie z profilu artysty; temat, story i gatunek z presskitu; reszta z odpowiedzi wywiadu artysty (jeśli już go zrobił). Każda sugestia ma przycisk „Wstaw" — artysta nie pisze tego samego po raz piąty.
    • Mobile-first: każde pytanie to osobna karta, sticky CTA „Zapisz / Brief gotowy", pasek postępu „X/12 wypełnione".
    • Po oznaczeniu „gotowy" brief staje się źródłem prawdy dla pitchów prasowych — zespół widzi komplet w jednym miejscu, bez przeszukiwania pięciu zakładek.
  488. v2.20.023 czerwca 2026, 10:30

    Bio artysty — jedno miejsce, używane wszędzie

    • Bio z profilu artysty zaciąga się automatycznie do każdej nowej premiery — koniec wpisywania tego samego po raz pięćdziesiąty.
    • W presskicie premiery możesz skorygować bio na ten konkretny release ALBO jednym przyciskiem „Zapisz też w profilu" zaktualizować profil na stałe (dla wszystkich kolejnych premier).
    • Bio w profilu i w presskicie mają teraz nagrywarkę głosową — mów po swojemu, AI zrobi transkrypcję i porządne 4-5 zdaniowe bio.
    • Synchronizacja w obie strony: bio w tabeli artysty (używane przez pressroom, prasówki, radio pitche) i w profilu artysty trzymane są w jednym pociągu — koniec dryfowania wartości między modułami.
    • Backfill — istniejące bio dograne między tabelami, żeby start był spójny.
  489. v2.19.223 czerwca 2026, 09:00

    Crew Chat — sprzątanie starego, zduplikowanego wątku

    • Usunięty stary wątek „Connect Chat — Crew ID Records" (bez przypisanego kanału), który został z czasów sprzed podziału Crew Chatu na trzy kanały.
    • Zostają tylko aktualne kanały: Label (z Wydawcą), Connect (między Artystami) i HUB Support (zmiany i uwagi do HUBa).
    • Wiadomości i uczestnictwa starego wątku usunięte z bazy — jeśli ktoś tam pisał, poprosimy go o przeniesienie rozmowy na nowy Connect.
  490. v2.19.122 czerwca 2026, 23:30

    Mobile fix Pomysłów (admin) — koniec rozjeżdżającej się strony

    • Nagłówek na /admin/ideas (wybór twórcy + przycisk „Wygeneruj pomysły") stackuje się w pionie na telefonie, bez wypychania CTA poza ekran.
    • Pasek statusów filtrów (Wszystkie / Proponowane / Zaakceptowane / Zrobione / …) scrolluje się poziomo wewnątrz swojego wiersza zamiast rozciągać całą stronę.
  491. v2.19.022 czerwca 2026, 22:00

    Profil artysty: 4 nowe sygnały dla generatora pomysłów (target wiekowy, persona, styl języka, gust muzyczny)

    • Target wiekowy słuchaczy — nowy multi-select w profilu (13–17, 18–24, 25–34, 35–44, 45–54, 55+) + opcjonalne zaznaczenie głównej grupy. AI dobiera platformy (TikTok vs FB), długość treści i język pod realną grupę fanów.
    • Osobowość / charakter — 8 presetów (Na luzie, Poważny, Buntownik, Romantyk, Ironiczny, Mentor, Otwarty rozmówca, Tajemniczy) + krótki dopisek od siebie. To główny wyznacznik JAK artysta mówi — silniejsze niż dotychczasowy free-text „ton".
    • Styl języka — nowy suwak 1–5 (bardzo formalny ↔ total luz / slang / emoji), niezależny od poziomu doświadczenia. Dotychczas rejestr językowy był przypadkową pochodną experience_level — teraz oba żyją osobno: doświadczenie = O CZYM, styl = JAK.
    • Quick fix gust muzyczny — gatunki / tempo / vibes / dekady / referencje, które artyści wpisywali w profilu, nigdy nie trafiały do promptu generatora. Naprawione: AI widzi to przy każdej propozycji.
    • Wszystko działa od ręki w istniejącym personality JSONB — bez migracji bazy. Profile bez wypełnionych pól zachowują się jak dotąd.
  492. v2.18.222 czerwca 2026, 21:00

    Messenger: klikalne linki w wiadomościach

    • Adresy URL w wiadomościach Messengera są teraz **klikalne** — wcześniej widać było tylko tekst.
    • Linki wewnętrzne (hub.idrecords.pl, *.lovable.app) otwierają się w tej samej karcie i routerze HUBa, zewnętrzne w nowej karcie.
    • Działa razem z @wzmiankami — w tej samej wiadomości mogą być i pigułki, i odnośniki.
  493. v2.18.122 czerwca 2026, 20:00

    Nawigacja: spójna szerokość paska admina + dropdowny grupowe u Artysty

    • Pasek admina ma teraz **stałą szerokość na każdej podstronie** — Pomysły, Feedbacki, Connect, Mediaplan, Wywiady, Briefy i Single z Presskitem nie ścieśniają już menu, logo nie zawija się w trzy linijki.
    • Menu Artysty (desktop) przebudowane w stylu admina: krótki rząd główny (HUB na start · Projekt · Pulse · **Gotowość** · Pomysły · Feedbacki · Premiery) + dropdowny **Operacje / Media / Konto**. Drugi rząd zniknął.
    • Gotowość przeniesiona tuż obok Pulse — analogicznie do PressRoomu u admina. Profil dostał osobną grupę **Konto**, żeby był bardziej widoczny.
    • Menu mobilne (sheet) odzwierciedla teraz strukturę z desktopu — sekcje z nagłówkami zamiast jednej długiej listy. Działa identycznie dla Admina i Artysty.
  494. v2.18.022 czerwca 2026, 19:00

    Generator pomysłów — sterowana „Skala momentum" (1–10) z rekomendacją z Pulse i Projektów

    • W generatorze pomysłów (Admin i Artysta) pojawił się **suwak „Skala momentum" 1–10** — wartość trafia do AI i steruje ambicją propozycji (≥7 = automatyczny tryb WOW).
    • Nad suwakiem widać **rekomendowaną wartość Auto** liczoną na żywo z danych: event Pulse (severity / pinned success / odtworzenia w oknie) oraz Projekt (wynik 80+/65+/50+/30+). Pod suwakiem wyświetla się rozpiska „skąd ta liczba".
    • Klik **„Auto: X/10"** wraca do rekomendowanej wartości; jeśli przesuniesz suwak, pomysł generuje się z ręcznym overridem (zignorowana rekomendacja — wyraźny komunikat).
    • Backend (`generateIdeas`) przyjmuje nowe pole `intensityOverride`, a nowy endpoint `recommendIdeaIntensity` zwraca wartość + powody i jest cache’owany per (artysta, projekt, event).
  495. v2.17.222 czerwca 2026, 18:00

    PressRoom — lepsze copy na bannerku „Plan wydawniczy"

    • Podtytuł bannerka na stronach serwisów PressRoom zmieniony na: „Twój feedback może wpływać na skalę naszych i artysty działań przedpremierowych. Dziękujemy za każdą pomoc!"
    • Brzmi naturalniej, nie obiecuje artystom bezpośredniej rotacji w serwisie radiowym ani playlist, a podkreśla wpływ dziennikarza na skalę prac przedpremierowych.
  496. v2.17.122 czerwca 2026, 17:30

    PressRoom — bannerek „Plan wydawniczy" na każdym serwisie (działa też z magic-linka)

    • Na stronach serwisu tygodniowego, pitchingu (feature) i indywidualnych press-release’ów dziennikarz widzi teraz bannerek „Posłuchaj fragmentów nadchodzących singli i powiedz, co ma szansę".
    • Klik prowadzi do Planu wydawniczego z fragmentami audio i feedbackiem per singiel.
    • Dla dziennikarzy z magic-linku (bez konta) bannerek zachowuje token i kieruje do publicznej wersji /press/plan/<token> — nie trzeba się logować.
  497. v2.17.022 czerwca 2026, 16:00

    Pomysły — pełna pętla feedbacku (ocena ⭐, odrzucanie z powodem, „do dopracowania" + iteracja AI)

    • Artysta: **ocena ⭐ 1–5** na każdej karcie pomysłu (klik tej samej gwiazdki = wyczyść). AI uczy się Twoich preferencji i bierze je pod uwagę przy kolejnej generacji (top oceniane = proponuje podobne; nisko oceniane = unika).
    • Nowy przycisk **„❌ Odrzucam"** — okno z listą predefiniowanych powodów (off-brand, oklepane, za drogo, słaby timing, zły kanał…) + pole komentarza. Wszystko ląduje u wydawcy, który widzi konkretny feedback zamiast samego „nie".
    • Nowy przycisk **„🛠 Do dopracowania"** z nagrywarką głosu (jak w briefie) — opisz lub powiedz co poprawić; wydawca dostaje push i może wrócić z nową wersją.
    • Admin: **„Dopracuj z AI"** dla pomysłów odrzuconych lub „do dopracowania" — czat (tekst LUB głos, mikrofon w polu wpisu) iteruje propozycje na bazie oryginału, notatki artysty i jego historii ocen. „Zapisz i wyślij artyście" archiwizuje starą wersję w meta.versions i wraca pomysł do akceptacji z powiadomieniem push.
    • Filtry listy: nowe pozycje „🛠 Do dopracowania" i „❌ Odrzucone" — łatwo przeglądać feedback. Karta pomysłu pokazuje też plakietki: ocenę artysty (admin), wersję po dopracowaniu, powody odrzucenia w pełni rozwinięte.
  498. v2.16.022 czerwca 2026, 14:30

    Generator pomysłów v2 — Faza 2 (WOW mode, własna kwota budżetu, 10 nowych celów, nagrywarka kontekstu)

    • Nowy przełącznik **🔥 WOW mode** obok liczby pomysłów — wymusza maksymalną ambicję: odrzuca oczywiste pomysły, wymaga zaskoczenia, viralu lub niestandardowego formatu (niezależne od auto-skali momentum, którą i tak podbija do 9/10).
    • Budżet: oprócz presetów (0/500/5k/∞) można teraz wpisać **konkretną kwotę w PLN** (np. „2500 zł"). AI traktuje to jako twardy sufit i odrzuca/przepakowuje pomysły, które się nie mieszczą.
    • **10 nowych celów rundy**: Rozgrzanie algorytmu 🚀, Viralowy potencjał 🌀, Sync / brand deal 🎬, Booking / festiwale 🎪, Zapamiętywalność (easter eggi/ARG) 🧠, Tekst / lirycy 📝, Recykling contentu ♻️, Sygnał danych (A/B) 📊, Shazam / odkrywalność 🔍, Zasięg międzynarodowy 🌍. Każdy z suwakiem wagi 1–5 (jak wcześniej).
    • Dodatkowy kontekst to teraz **nagrywarka głosu** (jak w briefie Artysty) — kliknij mikrofon, powiedz co Ci chodzi po głowie, AI zrobi transkrypcję i streszczenie wprost w pole tekstowe.
    • Sekcja kategorii działań zmieniła nazwę z „Typy działań spoza social" na „Typy działań i formatów" — bo zawiera też formaty contentowe (lyric video, BTS, snippet drop, easter egg) których nie da się uczciwie nazwać „spoza social".
  499. v2.15.022 czerwca 2026, 13:00

    Generator pomysłów v2 — Faza 1 gamechangera (Budżet · Horyzont · Ryzyko · 24 nowe kategorie · udział Artysty)

    • „Skala supportu" → „Skala momentum" + tooltip („Jak gorący jest moment — AI dostosuje śmiałość pomysłów. ≥7 → tryb WOW"). Wcześniejsza nazwa myliła się ze skalą supportu radiowego.
    • 24 nowe kategorie działań: short-form serial, BTS / studio vlog, lyric video / visualizer, remix / akustyk / cover challenge, snippet drop, long-form, reaction, listening party, easter egg / ARG, konkurs, UGC challenge, newsletter / SMS, fan rewards, Spotify Canvas, pre-order, presale biletów, sync pitch, brand partnership, geo-target, A/B test, retargeting fanów, manifest, aplikacja o nagrodę, storytelling kapitułowy. Pogrupowane w 11 sekcjach z kolapsowalnym widokiem — koniec ze ścianą chipów.
    • Nowe „pokrętła rundy" (osobna sekcja u góry dialogu): **Budżet** (0 zł / do 500 zł / do 5 tys. / bez limitu — AI odrzuca propozycje wymagające produkcji gdy budżet=0), **Horyzont** (dziś / ten tydzień / przed premierą / 30 dni po / long-game), **Tryb ryzyka** (bezpieczny / odważny / kontrowersyjny — domyślnie „odważny", bo to ma być gamechanger).
    • Liczba pomysłów to teraz stepowy slider 3 / 5 / 8 / 12 zamiast inputu liczbowego — jeden klik.
    • Artysta odzyskał przycisk **„Wygeneruj pomysły"** na swojej stronie /artist/ideas (był ukryty). Każdy pomysł zapisany przez Artystę leci pushem do wszystkich adminów („💡 X dodał/a N pomysłów") z linkiem prosto do /admin/ideas?artistId=… — komunikacja dwustronna, wydawca widzi inicjatywę Artysty w czasie rzeczywistym. W dialogu Artysta widzi też subtelny banner „Po zapisaniu wydawca zobaczy Twoje pomysły od razu".
    • Faza 2 (kolejna iteracja): nowe źródła kontekstu (z konkretnego utworu / z daty-okazji / z trendu / cross z artystą ID), szybkie akcje z karty pomysłu („→ Plan social", „→ Brief", „→ Task", „→ Wiadomość do artysty"), memory per artysta, auto-mode nightly „Pomysł na dziś".
  500. v2.14.922 czerwca 2026, 11:30

    Generator pomysłów: nie traci już wyników i mówi co się stało

    • Zdarzało się, że po kliknięciu „Wygeneruj" nic się nie pojawiało, mimo że kredyty zostały pobrane — AI zwracał odpowiedź, której nie dało się sparsować jako JSON, a UI po cichu pokazywał pustą listę.
    • Teraz server twardo failuje przy pustej/zepsutej odpowiedzi z czytelnym komunikatem (zamiast cichego „nic"), a w logach zostaje fragment surowej treści — można szybciej dojść co poszło nie tak.
    • Drafty z każdej udanej generacji lądują dodatkowo w localStorage (24h). Jeśli zamkniesz dialog bez zapisu albo coś padnie, przy ponownym otwarciu zobaczysz banner „Wczytaj zapisane drafty (N pomysłów, X min temu)" — nie tracisz już niczego za co zapłaciłeś.
    • Po faktycznym zapisie pomysłów backup jest czyszczony, żeby nie sugerował starych draftów przy następnej rundzie.
  501. v2.14.822 czerwca 2026, 10:00

    Fix: „Do messengera" z Pulse faktycznie ląduje w Messengerze

    • Przycisk „Do messengera" przy wpisie Pulse wpisywał wiadomość do starego logu (`release_status_log`), którego bubble Messenger już nie czyta — stąd cisza. Teraz wpis idzie do nowego modelu (`message_threads` kind=release + `messages`), więc od razu pojawia się w okienku czatu wątku premiery.
    • Jeśli wątek premiery jeszcze nie istniał, jest tworzony automatycznie i dopinani są uczestnicy: artysta projektu, jego team i admini.
    • Wątek po wysyłce wskakuje na górę listy (bump `last_message_at` + preview), a do artysty leci push „💬 Pulse · …".
  502. v2.14.720 czerwca 2026, 10:00

    Fix mapowania WARM: brak fałszywego „zajęte" + auto-przeliczenie supportu

    • Picker mapowania nie pokazuje już aktualnie przypiętego kanału jako „zajęty" sam dla siebie — gdy stacja WARM ma już poprawnego mastera, ten master wyświetla się jako wolny (a „zajęte (N)" zostaje tylko dla mapowań do INNYCH stacji WARM).
    • Po każdej zmianie mapowania (przypięcie, odpięcie, utworzenie nowego kanału) automatycznie odpalamy `applyRadioAutoSupport` we WSZYSTKICH projektach, które mają tę stację w statsach. Efekt: kanał na liście projektu od razu dostaje właściwy support i bucket — koniec ze sceną „zmapowałem Radio Bielsko, a w projekcie wciąż wisi jako pobranie 0,5".
    • Mapowanie nadal jest globalne — jedna stacja WARM może być świadomie wskazywana z wielu projektów na tego samego mastera (RMF Maxxx regionalny itp.).
  503. v2.14.620 czerwca 2026, 08:00

    Czystsze menu admina + okienka czatu domyślnie ON

    • Menu admina przebudowane: 6 stałych skrótów u góry (Projekty, Pulse, PressRoom, Pomysły, Feedbacki, Zadania) + 3 zwarte dropdowny — **Operacje** (Gotowość, Kalendarz, Connect, Konsultacje, Akceptacje, Zapytania), **Media** (Radio, Social, Mediaplan, Single, Wywiady, Briefy), **System** (Użytkownicy, Artyści, Premiery, Kanały, Broadcast, Ogłoszenia, Feedback Connect, Algorytm).
    • Drugi rząd ikon (ten, który strasznie się rozjeżdżał) zniknął — header jest niższy i nic już nie skacze przy resize.
    • Aktywna grupa podświetla się gradientem na triggerze, więc widać „gdzie siedzisz", nawet jeśli pozycja jest w środku dropdowna.
    • Tryb **Wydawca** dostał ten sam układ: 4 stałe skróty + dropdown **Konfiguracja** ze wszystkim pod spodem.
    • Okienka czatu (chat heads) na desktopie są teraz domyślnie WŁĄCZONE — nie trzeba ich już ręcznie aktywować. Toggle „Okienka" w komunikatorze nadal działa, jeśli ktoś chce je wyłączyć.
  504. v2.14.520 czerwca 2026, 07:00

    Fix: kafelek „Wideo od artysty" + podgląd nagrania w PressRoomie

    • Kliknięcie kafelka „Wideo od artysty" na stronie singla w PressRoomie znów przenosi do sekcji „Wywiad z artystą" — był zły anchor (`#interview-artysty` zamiast `#interview`).
    • Po kliknięciu „Posłuchaj artysty" odtwarzacz nie jest już pustym czarnym oknem — ładujemy metadane i pierwszą klatkę (`preload="metadata"` + `#t=0.1`), więc dziennikarz od razu widzi miniaturkę.
  505. v2.14.420 czerwca 2026, 06:00

    Fix: czyszczenie legacy URL-i + skala przycisków supportu

    • Wyzerowanie nieprawidłowych ścieżek nie wywalało już 9 błędów — `message_attachments` i `voice_field_recordings` mają NOT NULL na `storage_path`, więc tam usuwamy cały rekord (plik i tak był legacy i niedostępny), w pozostałych tabelach dalej zerujemy ścieżkę.
    • Skala przycisków supportu w edytorze kanału (`/admin/projekty`) **dopasowuje się do wybranego maxa**: przy skali 20 ostatni przycisk to „20+", przy 25 — „25+", 50 — „50+", 100 — „100+". Pośrednie wartości to ładnie zaokrąglone ułamki maksimum.
  506. v2.14.320 czerwca 2026, 05:00

    Migracja: pomijamy legacy URL-e zamiast wywalać batch

    • Część rekordów `message_attachments` z dawnego chatu miała w `storage_path` pełny signed URL (`https://...supabase.co/...`), a nie ścieżkę w buckecie — migracja próbowała je pobrać i wywalała się błędem, blokując kolejkę.
    • Kolektor kandydatów do migracji **pomija takie wpisy** (URL-e), więc „Migruj wszystko" znów dochodzi do końca.
    • Nowa sekcja **„Nieprawidłowe ścieżki (legacy URL-e)"** w /admin/storage-cleanup — jednym kliknięciem zeruje `storage_path` na takich rekordach, żeby przestały zaśmiecać statystyki.
  507. v2.14.220 czerwca 2026, 04:00

    Sprzątanie Storage: nowa sekcja „Osierocone pliki"

    • Wczorajsza migracja zostawiła ~25 plików w Supabase Storage — w bazie ścieżki wskazują już na Dropbox, ale fizyczne pliki dalej leżały (krok `storage.remove()` cicho zawiódł).
    • Nowy przycisk **„Skasuj osierocone pliki"** w /admin/storage-cleanup znajduje takie sieroty (porównuje zawartość bucketów `artist-interviews`, `artist-briefs`, `messages` z referencjami w DB) i kasuje je jednym kliknięciem.
    • Migracja od teraz **wyraźnie loguje** każdy nieudany `remove` w Supabase, żeby już nie generować cichych sierot.
  508. v2.14.120 czerwca 2026, 03:00

    Fix: „Migruj wszystko" już nie wywala 502 na dużych wideo

    • Migracja Storage → Dropbox **streamuje** pliki kawałkami po 4 MB zamiast ładować całość do pamięci — Worker przestał padać z błędem `memory limit` przy wideo z wywiadów.
    • Batch ograniczony do **1–5 plików** (domyślnie 2) — bezpieczniej dla pamięci, „Migruj wszystko" i tak zapętla do końca.
    • Twardy cap **500 MB / plik** — większe pliki są pomijane z czytelnym wpisem w logu zamiast wywalać cały batch.
  509. v2.14.020 czerwca 2026, 02:00

    Phase B sprzątania: briefy + messenger na Dropbox, „Migruj wszystko" i auto-retention

    • Nowe nagrania **briefów** („Wywiad ze mną"), **voice-pól** w formularzach i **załączniki messengera** trafiają teraz prosto na **Dropbox** zamiast do Supabase Storage — chunked upload dla plików > 24 MB.
    • Podglądy briefów i wiadomości są **Dropbox-aware** (temp-link 4h dla nowych, signed URL 24h dla legacy) — koniec dobijania CDN-u co rotację tokenu.
    • W **/admin/storage-cleanup** nowy przycisk **„Migruj wszystko"** — sam zapętla batche aż do końca, pokazuje licznik **„zostało X plików"** i pasek postępu; możesz w każdej chwili anulować. Już nie musisz klikać batcha pięćdziesiąt razy z palca.
    • Nowa karta **„Stare media messengera"** — kasuje audio/wideo starsze niż wybrana liczba dni (domyślnie 30) wraz z wpisem w `message_attachments`. Sama wiadomość zostaje.
    • Karta archiwów obejmuje teraz także briefy i voice-pola powiązane z projektami `archive` — czyścisz cały projekt jednym kliknięciem.
  510. v2.13.020 czerwca 2026, 00:30

    Wywiady na Dropbox + admin sprzątaczka archiwów (Phase A)

    • Nowe nagrania **wywiadów** i **artist pitchy** lecą bezpośrednio na **Dropbox** (przez chunked session upload), a nie do Lovable Cloud Storage — to docelowo redukcja ruchu Network o rząd wielkości dla nagrań > 25 MB.
    • Podglądy są **Dropbox-aware**: w panelu admina, w trackingu dziennikarza i na stronie press automatycznie generujemy temp-link Dropbox dla nowych plików (4h), a dla starych legacy plików signed URL Supabase (24h).
    • W **/admin/storage-cleanup** nowe narzędzie z dwoma akcjami: **(1) Wyczyść media archiwalnych projektów** — kasuje pliki Dropbox + Supabase dla projektów ze statusem `archive`, zostawia transkrypcje i metadane; **(2) Migracja Supabase → Dropbox** — batchami po kilka plików przenosi legacy nagrania na Dropbox i aktualizuje ścieżki w bazie.
    • Phase B (niebawem): **briefy** i **messenger** (video/audio) na ten sam wzór + planowana auto-rotacja messenger video po N dniach.
  511. v2.12.019 czerwca 2026, 23:30

    Mniejszy rachunek za Network: lazy video + dłuższe signed URL-e + panel Storage

    • Wszystkie ciężkie podglądy (`artist-interviews`, `release-chat`, `messages`, `feedback-screenshots`, briefy) mają teraz `preload="none"` — przeglądarka **nie pobiera** wideo/audio dopóki nie klikniesz Play.
    • Signed URL-e dla podglądów wydłużone z 1h do **24h** — CDN może realnie cache'ować pliki między wejściami, zamiast pobierać je od zera co każdą rotację tokenu.
    • W **/admin/system-config** dodaliśmy panel **Storage (Lovable Cloud)** z listą bucketów, sumą rozmiarów i ostrzeżeniami **&gt; 500 MB** / **&gt; 1 GB** — od razu widać co puchnie zanim zobaczysz to na fakturze za Network.
    • Diagnoza: ~25 kredytów Network z 18.06 to był `Cloud cached egress` z bucketu `artist-interviews` (903 MB, 11 plików .mov × ~60 MB) — nie luka, tylko ciężkie podglądy bez `preload="none"`.
  512. v2.11.319 czerwca 2026, 21:45

    Szansa na TAK: krótszy NIE + mobile bez overflow

    • Opis kubełka **NIE** skrócony do **„aktualnie nie — posłuchane, bez reakcji"** — mieści się na wąskich ekranach bez obcinania.
    • Etykiety w liście **Szansa na TAK** przerobione na `grid` z `minmax(0,1fr)` — tekst opisu **skraca się** (`truncate`) zamiast wychodzić poza ekran na mobile.
  513. v2.11.220 czerwca 2026, 04:15

    Feedbacki mobile + picker artysty z admina

    • Feedbacki na mobile mają **nowy picker projektów** — pełnoekranowy kafel z aktualnym projektem, licznikiem wszystkich i **wyszukiwarką** (po artyście i tytule).
    • Admin w Feedbackach widzi teraz **wszystkie aktywne projekty** (wcześniej lista była przycinana do aktywnego konta artysty w przełączniku — stąd „tylko 2").
    • Nagłówek („Co odpowiadają stacje, portale i playlisty") nie wycina się na wąskich ekranach — `break-words` + responsywne rozmiary.
    • Przycisk **„Jako artysta"** w nagłówku admina: nie zawija się już na 2 linijki (krótsza etykieta na <sm), dropdown trzyma się w ekranie (`w-[min(18rem,calc(100vw-1rem))]`) i **zamyka się klikiem/tapem poza** — wreszcie da się normalnie wybrać artystę z mobilki.
  514. v2.11.120 czerwca 2026, 03:30

    Messenger mobile: odpowiadanie z long-press

    • Na telefonie **przytrzymaj wiadomość** — w pickerze reakcji, oprócz emoji, masz teraz przycisk **„Odpowiedz na wiadomość"**.
    • Wcześniej z mobilki dało się tylko reagować — odpowiadanie z cytatem działało wyłącznie na desktopie (przycisk pojawiał się po najechaniu myszką).
    • Bez zmian w samej logice: ten sam cytat w bąbelku, ten sam scroll do oryginału po kliknięciu.
  515. v2.11.020 czerwca 2026, 03:00

    Messenger: odpowiadanie na wiadomości (jak na FB)

    • Najedź na dowolną wiadomość i kliknij **↩ Odpowiedz** — nad polem pisania pojawi się pasek **„Odpowiadasz X"** z podglądem cytatu i przyciskiem ×, żeby anulować.
    • Wysłana odpowiedź ma **cytat oryginału w bąbelku** (autor + 2 linijki preview) — klik w cytat **przewija do oryginalnej wiadomości** i podświetla ją na chwilę.
    • Jeśli oryginał został skasowany, cytat pokazuje „Usunięta wiadomość" — kontekst się nie wywala. Działa wszędzie: pełna zakładka `/inbox`, chat-heads na desktopie i bąbel mobilny.
  516. v2.10.920 czerwca 2026, 02:15

    Landing: Radio zamiast 'Zgłoś promo / sugestię'

    • Na landingu w sekcji „Strefa Artysty od środka" moduł **„Zgłoś promo / sugestię"** zastąpiony kartą **Radio** — monitoring kto i gdzie Cię gra, zakres wsparcia i automatyczne aktualizacje.
    • Stacje radiowe w Polsce i zagranicą, powiadomienia push o premierach i wzroście zaangażowania — wszystko w jednym widoku.
    • Zgłoszenia promo pozostają w module **Feedbacki → Zgłoszenia / Sugestie** — dedykowany kafelek na landingu już nie dublował tej funkcji.
  517. v2.10.820 czerwca 2026, 02:00

    Wykresy kanałów: support · nacisk · wynik (pkt)

    • Mini wykres w karcie kanału pokazuje teraz **trzy serie**: Support (zielona), Nacisk (czerwona) i **Wynik** (żółta, przerywana) — czyli `support × waga`, dokładnie tyle „pkt", ile widzisz na headerze kanału.
    • Duży wykres **„Porównaj kanały w czasie"** dostał przełącznik **Support / Nacisk / Wynik (pkt)** — możesz porównywać kanały po dowolnym z tych trzech wymiarów.
    • Snapshoty (cron i automatyczne po edycji aktywności) zapisują wagę i wynik na bieżąco — historia odzwierciedla realne punkty kanału w czasie, nawet jeśli waga się zmieni.
  518. v2.10.720 czerwca 2026, 01:15

    Feedback: „NIE" = aktualnie na nie (nie wyrok)

    • Etykieta kubełka **NIE** zmieniona z „są na nie" na **„aktualnie na nie — posłuchali, brak zainteresowania"** — w paskach sentymentu, legendach i pustych stanach top-charts.
    • Zmiana podkreśla, że to **stan na dziś** (kanał może jeszcze wskoczyć w „MOŻE"/„AKCEPT"), w odróżnieniu od **ODMOWY**, która jest twardym „nie".
  519. v2.10.620 czerwca 2026, 01:00

    Messenger: kompaktowy chat — więcej miejsca na pisanie

    • Okienka czatu (chat-heads na desktopie) i bąbel komunikatora mają **jeden, kompaktowy nagłówek**: „Tytuł · Artysta" zamiast dwóch linijek z powtórzoną nazwą wątku.
    • Ikona **„Otwórz szczegóły premiery"** (↗) wskoczyła **obok przycisków zwiń/zamknij** — koniec dublowania.
    • Przyciski composera (zdjęcie, mikrofon, plik, emoji, widoczność, „Wyślij") **mniejsze** (h-8 mobile / h-9 desktop) — ikony 14 px zamiast 16 px, zaokrąglenia `rounded-lg`.
    • Pole „Napisz wiadomość…" startuje na **2 wierszach** — wyraźnie więcej miejsca na pisanie bez dodatkowego klikania.
    • Zmiany działają wszędzie: desktopowe chat-heads, mobilny bąbel oraz pełna zakładka Messengera (`/inbox`).
  520. v2.10.520 czerwca 2026, 00:35

    Messenger: stop przeskakiwaniu wiadomości w trakcie czytania

    • Po otwarciu wątku Messenger **twardo skacze na sam dół** (do najnowszej wiadomości) i **dociąga** pozycję jeszcze przez ~1,2 s, w miarę jak obrazki/audio/wideo doliczają wymiary — koniec z lądowaniem „gdzieś w środku".
    • Auto-scroll na nową wiadomość uruchamia się **tylko gdy jesteś blisko dołu** (próg 120 px) **albo to Twoja własna wiadomość**. Jak czytasz historię w środku wątku, ekran już Cię nie wyrywa w dół.
    • Oznaczanie wątku jako przeczytany rozdzielone od logiki scrolla — działa niezależnie, bez efektów ubocznych na pozycję czytania.
    • Pinned-to-bottom: gdy stoisz przy dole, doładowane media (obrazki/audio/wideo) nie spychają widoku — sam się dociąga.
  521. v2.10.420 czerwca 2026, 00:15

    Messenger: przycisk „Wyślij" znów dostępny na telefonie i wąskich panelach

    • Pasek akcji pod polem wiadomości (zdjęcie, mikrofon, załącznik, emoji, widoczność, „Wyślij") **zawija się** na wąskich ekranach — koniec z chowaniem się ikon poza prawą krawędzią.
    • Przycisk **„Wyślij"** ma teraz etykietę tekstową, jest wyrównany do prawej (`ml-auto`) i **zawsze widoczny** — także gdy wybierzesz konkretną osobę z widoczności (np. „Jako artysta").
    • Drobne ikony zmniejszone do 36 px na mobile (≥sm pozostają 40 px), żeby cały rząd lepiej mieścił się na telefonie.
  522. v2.10.319 czerwca 2026, 23:55

    Admin/Projekty: paski feedbacku w 5 poziomach, zgodnie z modułem Feedback

    • Karta **„Sentyment projektu · Szansa na TAK"** pokazuje teraz wszystkie 5 kubełków: **TAK · AKCEPT · MOŻE · NIE · ODMOWA** — zamiast starego trójpodziału pozytywne/mieszane/negatywne.
    • Wskaźnik liczy: TAK i AKCEPT = 1, MOŻE = ½, NIE i ODMOWA = 0 (mianownik = wszystkie feedbacki).
    • Mini-pasek **„Jakość feedbacku"** w nagłówku projektu również w 5 poziomach, z kolorami i etykietami spójnymi z modułem Feedback.
    • Legenda **„Siły nacisku"** pokazuje numerki poziomów (Pitching 1 · Pressing 2 · Pushing 3 · Punching 4) — zgodnie z odznakami etapu kampanii.
  523. v2.10.219 czerwca 2026, 23:25

    Feedbacki: sort po realnych PKT + naprawa wag kanałów (1 → 5/8/9/10)

    • Sortowanie **„Pkt supportu"** w Feedbackach liczy teraz **support × waga** (= identyczna liczba PKT, którą widzisz na karcie kanału). Wcześniej brało gołe poziomy 1–5, więc Radio Opole z wagą 9 i supportem 2 lądowało niżej niż mniejsze radio z supportem 3 i wagą 1.
    • Domyślne sortowanie wewnątrz kubełków (TAK / AKCEPT / MOŻE / NIE / ODMOWA) też idzie po realnym PKT, a nie po surowym poziomie supportu.
    • Etykietę sortowania doprecyzowano: **„Pkt supportu (support × waga)"** — żeby było wiadomo, co to liczy.
    • Naprawiona regresja: WARM i press-bridge przy auto-dodawaniu kanałów do projektu wpisywały na sztywno **wagę 1**, przez co Radio Podlasie / Strefa Muzy / Polskie Radio Opole „resetowały się" z 8–10 do 1 i traciły PKT. Nowy helper `resolveDefaultChannelWeight` dziedziczy wagę po channel_master, po innych projektach z tym samym kanałem, a w ostateczności daje fallback per skala (radio krajowe = 10, regionalne = 5).
    • Backfill: **138 kanałów** miało omyłkowo wagę 1 — przywróciliśmy im właściwe wagi z innych projektów. Pozostałe (kilka kanałów internetowych bez peera) zostają z domyślną 1.
  524. v2.10.119 czerwca 2026, 22:55

    Szansa na TAK po nowemu + numerki na odznakach nacisku

    • Pasek **Szansa na TAK** ma jaśniejsze etykiety: **TAK** — „są na tak, supportują", **AKCEPT** — „planują wspierać, deklaracja na tak", **MOŻE** — „znają utwór, obserwują", **NIE** — „posłuchali, brak zainteresowania", **ODMOWA** — „twarde negatywy".
    • Odznaki etapu kampanii (**Pitching / Pressing / Pushing / Punching**) mają teraz wbudowany numerek poziomu nacisku (1–4) — od razu widać, jak głęboko jesteśmy.
    • Te same numerki pojawiają się też w legendzie paska **Siły nacisku** w Feedbackach.
  525. v2.10.019 czerwca 2026, 22:30

    Feedbacki na landingu, w HUB-ie i w dziennej checkliście

    • Nowy moduł **Feedbacki** w sekcji „Strefa Artysty od środka" na głównej stronie oraz w `/welcome` (HUB od środka) — opisany jako miejsce, w którym widzisz wszystkie reakcje mediów na singla, reagujesz jednym tapnięciem, podpowiadasz gdzie docisnąć i wpływasz na decyzje kampanii.
    • Feedbacki trafiają też do **dziennej checklisty** (Hub — szybkie wejścia) jako 9. skrót obok Gotowości, Projektów i Pulse.
    • Opisy poziomów nacisku odświeżone: **Pushing — „agresywnie atakujemy"** (było „ofensywa"), **Punching — „walka na maxa"** (było „maksimum, cios"). Zmiana widoczna w pasku Siły Nacisku w Feedbackach i w widokach projektów.
  526. v2.9.919 czerwca 2026, 22:00

    Menu admina: Messenger na dół, brak scrolla, 2 linie max

    • **Messenger** znika z górnego menu admina i ląduje na **dolnym pasku nawigacji mobilnej** — w nagłówku i tak ma dzwonek + bąbel, więc na desktopie nie znika całkiem.
    • Drugi rząd menu admina (operacyjny) traci **horyzontalny scroll** — zamiast tego **naturalnie zawija** się do kolejnej linii (`flex-wrap`).
    • Skrócone etykiety drugiego rzędu: **Briefy** (zamiast „Briefy artystów"), **Single** (zamiast „Single (presskit)"), **Kanały** (zamiast „Katalog kanałów"), **Wywiady** (zamiast „Wywiady & PR") — żeby wszystko zmieściło się w **max 2 liniach** na typowym ekranie desktop.
  527. v2.9.819 czerwca 2026, 21:30

    Feedbacki: sortowanie kanałów w każdej sekcji

    • Nad listami kanałów pojawił się **pasek sortowania**, który działa we wszystkich sekcjach na raz: **Aktywnie naciskamy**, **Planujemy naciskać** oraz 5 kubełków (TAK / Zaplanowane / Może / Nie / Odmowa).
    • Domyślnie: **Najnowsze** (po ostatniej aktywności kanału — tak jak w edytorze projektów u admina).
    • Pozostałe tryby: **Waga kanału**, **Pkt supportu**, **Stopień nacisku** (0–15), **Alfabetycznie**.
  528. v2.9.719 czerwca 2026, 21:00

    Nawigacja artysty: Gotowość obok Profilu, Messenger na dolny pasek

    • **Gotowość** wskakuje na górny pasek od razu obok **Profilu** — żeby najważniejszy „check-in" przed kampanią był w zasięgu wzroku.
    • **Messenger** przeniesiony na **dolny pasek nawigacji** — w nagłówku i tak ma już swoją ikonę (dzwonek + bąbel), więc nie ma sensu dublować go w głównym menu.
    • Efekt: górny pasek mieści się bez horyzontalnego scrolla na desktopie.
  529. v2.9.619 czerwca 2026, 20:30

    Siła nacisku: Pushing i Punching jako osobne segmenty

    • Pasek **„Siła nacisku"** rozdziela teraz **Pushing** (ofensywa) i **Punching** (maksimum, cios) na **dwa osobne kolory** — wcześniej były sklejone w jeden „Push / Punch". Od razu widać kto już dostaje cios, a kto jest dopiero w fazie ofensywy.
    • Zmiana wjeżdża wszędzie tam gdzie pasek się pojawia: **Feedbacki** (artysta i admin), karta projektu u artysty oraz **mini-pasek pressingu w hero projektu** w panelu admina.
    • Progi spięte z oficjalnymi poziomami nacisku: ≤3 Pitching · ≤6 Pressing · ≤10 Pushing · >10 Punching — żeby liczby zgadzały się z tym, co pokazuje algorytm i edytor kanałów.
  530. v2.9.519 czerwca 2026, 19:30

    Reakcje emocjonalne: nowa „Szkoda", pełne nazwy, ID:/Ty: na kartach + reakcje w edytorze kanałów

    • Pasek reakcji ma teraz **pełne, czytelne nazwy**: Super · Radość · Nadzieja · Meh · Obawa · **Szkoda** (nowa) · Wkurzony · Boli — żeby nie trzeba było zgadywać co znaczy skrót.
    • Na każdej karcie kanału w **Feedbackach** widać teraz **dwa slot-y** reakcji: **„ID:"** (reakcja ID Records / admina) i **„Ty:"** (Twoja). Puste slot-y mają delikatny „+" — klik w kartę i tak rozwija panel reakcji.
    • Admin też może klikać reakcje — i to nie tylko w module Feedbacki, ale też w **edytorze kanałów (Projekty → Admin)**: rozwiń wiersz kanału („▾ aktywności"), a u góry pojawia się sekcja „Reakcje zespołu" z Twoim pickerem oraz listą reakcji artystów (emoji + imię, tooltip pokazuje notatkę).
    • Reakcje admina nie nadpisują oficjalnego statusu redakcyjnego — to dalej tylko podpowiedź dla artysty „jak my się z tym czujemy".
  531. v2.9.419 czerwca 2026, 18:00

    Konwersacje: lista uczestników domyślnie ukryta

    • Lista uczestników (kolorowe plakietki „Załoga ID", „Admin", „Artysta") w konwersacjach (bubble, full messenger, desktop, apka) jest teraz **domyślnie zwinięta** — nie przytłacza już widoku rozmowy.
    • Żeby ją pokazać, kliknij liczbę uczestników w nagłówku wątku („4 uczestników ⌄"). Kolejne kliknięcie chowa.
  532. v2.9.319 czerwca 2026, 17:30

    Edytor kanałów: nowe kanały na górę + przycisk zgłoszeń dla admina

    • Dodanie nowego kanału w edytorze (admin) wrzuca go teraz na **samą górę** swojej sekcji (Aktywny / Planowany / itd.), tak samo jak edycja — żeby był od razu widoczny, a nie chował się na końcu listy.
    • W **Feedbacki → Zgłoszenia / Sugestie** admin ma własny przycisk **„Nowe zgłoszenie"** — można dodać zgłoszenie/sugestię w imieniu artysty wybranego projektu bez przełączania się na widok artysty.
  533. v2.9.219 czerwca 2026, 16:30

    Feedbacki: pressing zgodny z edytorem kanałów

    • **„Aktywnie naciskamy"** pokazuje teraz dokładnie kanały z sekcji **„Aktywny pressing"** w edytorze kanałów projektu — bez dodatkowej logiki po sile nacisku.
    • **„Planujemy naciskać"** pokazuje dokładnie kanały z sekcji **„Planowany pressing"** w edytorze kanałów projektu.
    • Listy w tych dwóch sekcjach nie są już ucinane do 8 kart — jeśli projekt ma 9, 20 albo więcej kanałów, widać wszystkie.
  534. v2.9.119 czerwca 2026, 16:00

    Feedbacki: „pobranie" trafia do „Może", nie do „Raczej nie"

    • Naprawiona klasyfikacja kubełków: kanały z poziomem **„pobranie"** (np. radio, portal, TV pobrały plik, ale jeszcze nic z tym nie zrobiły) lądują teraz w **🤔 Może** — między **Zaplanowane** a **Raczej nie**, zgodnie z intuicją.
    • **Raczej nie** zostaje zarezerwowane wyłącznie dla **„odsłuchu bez pobrania"** (oraz ręcznych nadpisań w edytorze kanałów w panelu admina).
    • Poprawka leci globalnie — paski **Szansa na TAK** w Feedbackach i w sekcji **Projekty** używają tej samej logiki.
  535. v2.9.019 czerwca 2026, 15:30

    Feedbacki + Promo razem · plany bez pitcha też się liczą

    • Sekcja **„Promo"** znika z menu i z hamburgera. Cała jej zawartość (zgłaszanie aktywności i sugerowanie kanałów do nacisku) ląduje w **„Feedbacki"** jako druga zakładka **„Zgłoszenia / Sugestie"** — między pickerem projektu a paskami. Stare linki `/artist/promo` i `/admin/promo` przekierowują od razu w tę zakładkę.
    • Domyślnie zgłoszenia są filtrowane do aktualnie wybranego projektu (chip „Tylko ten projekt"). CTA **„Nowe zgłoszenie"** otwiera ten sam formularz co dotychczas — żadnych ekstra kliknięć.
    • Sekcja **„Planujemy naciskać"** łapie teraz też kanały **bez żadnego pitcha** (poziom nacisku 0), o ile mają jakiś sygnał zainteresowania (support, kubełek active/current, override lub reakcja artysty). Każdy plan = plan, nawet ten zupełnie świeży.
    • W Hubie pojawia się kafelek **„Zgłoś promo / sugestię"** — prowadzi prosto do zakładki Sugestie (bez konieczności wchodzenia w Feedback i ręcznego przełączania).
  536. v2.8.119 czerwca 2026, 14:30

    Feedbacki: nowa sekcja „Planujemy naciskać"

    • Między **„Aktywnie naciskamy"** a kubełkami (TAK / Zaplanowane / …) pojawia się osobna, wyróżniona sekcja **„Planujemy naciskać"** — łapie kanały z poziomem **pitching** (wstępne podejście, kolejka do ofensywy).
    • „Aktywnie naciskamy" zostaje zarezerwowane dla realnego pressingu: **pressing / pushing / punching** — żeby od pierwszego rzutu oka było widać kto już dostaje cios, a kto jest dopiero w przygotowaniu.
  537. v2.8.019 czerwca 2026, 13:00

    Feedbacki v2: paski 5-kubełkowe, emocje artysty, banner zmian, porównanie kanałów

    • Sekcja **Feedbacki** dostała na górze **dwa paski**: ✅📅🤔🚫⛔ **Szansa na TAK** (5 kubełków, klikalne segmenty = filtr listy) i 🔥 **Siła nacisku** (bez zmian skali). Te same paski jadą teraz też na stronie pojedynczego singla u artysty i w panelach projektu — single source of truth, koniec z 3-kubełkowymi wariantami.
    • Artysta ma **nowy zestaw reakcji emocjonalnych** — nie powiela statusu redakcji, tylko mówi „jak się z tym czuję": 🔥 **Ekstra, dawaj!** / 😊 **Cieszę się** / 🤞 **Trzymam kciuki** / 😐 **Nic specjalnego** / 😟 **Martwię się** / 😤 **Wkurza mnie to** / 💔 **Boli**. Plus pole komentarza (opcjonalne, 280 znaków). Admin widzi reakcje artysty jako podgląd przy każdym kanale.
    • Banner **„Co się zmieniło od ostatniej wizyty"** — pokazuje +N kanałów per bucket, listę przejść (np. `watch → yes · Eska`) i automatycznie oznacza jako przeczytane po 3 sekundach (artist_activity_seen).
    • **Multi-channel comparison chart** — wybierasz do 5 kanałów z listy (pigułki), oglądasz support obok siebie w czasie z markerem premiery. Idealne do porównania „dlaczego RMF już gra a Eska jeszcze nie".
    • **Push-notyfikacje** przy zmianie oficjalnego statusu kanału — leci tylko dla zmian istotnych (✅ TAK / 📅 Zaplanowane / ⛔ Odmowa), wszystkim artystom + team_membersom projektu, z linkiem do `/artist/feedbacki`. Reszta zmian (watch/neg) — bez szumu.
    • Stare panele „Feedback z rynku" (matrix) i „Topki kanałów" rozszerzone do **5 kubełków**: kolumna **Zaplanowane** (cyan) i **Odmowa** (czerwony) widoczne osobno, plus dwa nowe rankingi „Zaplanowane (akcept)" i „Odmowy" w Top Charts.
  538. v2.7.019 czerwca 2026, 12:30

    Nowy moduł Feedbacki — 5 kubełków, odmowa, historia w czasie

    • Nowy moduł **Feedbacki** w górnym menu (desktop) i hamburgerze (mobile) — i Artysta, i Admin. Zakładki aktywnych projektów, a w środku **5 kubełków statusu kanału**: ✅ TAK · 📅 Zaplanowane · 🤔 Może · 🚫 Nie · ⛔ Odmowa. Każdy kubełek = osobny rząd z kartami stacji/portali, sortowane po sile supportu.
    • Klik karty kanału rozwija szczegóły: **komentarz redakcji**, lista aktywności (Eska › Nocki, Gorąca 20…), wykres **support + nacisk w czasie** z markerami faz (Plan / Premiera / +1, +2, +4 tygodnie). Snapshoty robione automatycznie raz dziennie + każda zmiana aktywności dopisuje punkt w trakcie dnia (źródło: `activity`).
    • Admin: **5-stanowy picker statusu** w edytorze projektów (zastępuje stary 3-stanowy). Klik **„Zaplanowane"** ustawia support na wartość „akcept" danej skali (1 dla radio regionalnego, 4 dla radio ogólnopolskiego / TV). Klik **„Odmowa"** zeruje support do 0, ale **zostawia nacisk bez zmian** — „cofnij" wraca do auto-klasyfikacji.
    • Artysta: ten sam switch działa jako **lekka reakcja** ("Ty: TAK / Może / …") — nie nadpisuje oficjalnego statusu redakcji, ale Admin widzi te reakcje przy kanale jako podpowiedź.
    • W headerze widoku: KPI per kubełek (klik filtruje), sekcja **„Aktywnie naciskamy"** z kanałami pod ciśnieniem (sortowane po sile), **„Cisza mimo nacisku"** (Top 3 stacje bez ruchu od >14 dni mimo pressingu) oraz **tempo konwersji 14 dni** (% kanałów które z „może/zaplanowane" przeszły do „TAK"). Plus szukajka po nazwie kanału.
    • Bonus techniczny: nowa tabela `channel_score_snapshots` (z RLS scoped do projektów artysty / admin sees all) i `channel_artist_reactions` (każdy artysta ma własną reakcję per kanał). Trigger DB dopisuje snapshot przy każdej zmianie supportu/nacisku w aktywnościach kanału.
  539. v2.6.218 czerwca 2026, 23:30

    Print i Podcast w edytorze serwisu tygodniowego

    • PressRoom · Edytor wydania tygodniowego: w pasku zakładek kanałów (Radio / TV / Portale / Spotify) doszły **📰 Print** i **🎙️ Podcast** — możesz przypisywać single do wersji prasowej i podcastowej tak samo jak do pozostałych.
    • Zakładki są **filtrowane przez „aktywne warianty"** wydania — jeśli nie zaznaczysz Print/Podcast w panelu wariantów, ich zakładki też się nie pokażą (porządek w UI).
  540. v2.6.118 czerwca 2026, 23:00

    Print + Podcast w serwisie tygodniowym, toggle aktywnych wariantów, emotki na końcu zdania

    • PressRoom · Edytor wydania tygodniowego: w polu **„Typ serwisu"** doszły **📰 Print** i **🎙️ Podcast** — można teraz oznaczyć wydanie jako serwis prasowy lub podcastowy (a nie tylko Radio / TV / Portale / Spotify).
    • PressRoom · Edytor wydania: nowy panel **„Aktywne warianty serwisu w tym tygodniu"** — pigułki Radio · Spotify · TV · Portale · Print · Podcast. Wyłączone (przekreślone) nie pojawią się w przełączniku „Wariant serwisu" na stronie dziennikarskiej. Pusta lista = wszystkie aktywne (zachowanie domyślne).
    • PressRoom · `/press/tydzien/…`: przełącznik wariantu pokazuje już **tylko warianty włączone dla danego tygodnia**. Jeśli ktoś wejdzie z `?variant=` na wariant wyłączony — automatycznie przeskakujemy na domyślny.
    • Messenger: skróty emotek (`:)`, `;)`, `:D`, `<3`, `:P` itd.) zamieniają się na emoji **od razu po dopisaniu znaku zamykającego** — nie tylko po wpisaniu spacji. Czyli „cześć :)" na końcu wiadomości też się złapie. Toggle „:)" obok wysyłki nadal wyłącza zamianę.
  541. v2.6.018 czerwca 2026, 22:00

    Pulse z filtrami, inline-checklista na kanbanie, Spotify URI klikalny

    • Pulse Artysty: nad feedem nowy pasek **filtrów po typie (Sukces / Milestone / Info / Uwaga / Krytyczne)** i **platformie (Radio / Spotify / YouTube / Shazam / Playlisty / Press / Inne)** — każdy chip pokazuje licznik. Doszło też pole **„Szukaj w wydarzeniach…"** i przycisk **„× wyczyść filtry"**.
    • Zadania (Kanban): klik w **pasek checklisty** na karcie zadania rozwija inline-listę z checkboxami i polem **„Dodaj punkt…"** — bez otwierania modala. Klik w **badge priorytetu** otwiera mini-popover do zmiany Niski/Normalny/Wysoki/Pilne. Jeśli checklisty nie ma — klik **„+ Dodaj checklistę"** tworzy ją i od razu można dorzucać punkty.
    • Messenger: rozmowa **otwiera się przewinięta na sam dół** (ostatnia wiadomość widoczna od razu, nie w połowie). Dodano też przełącznik **„:)"** obok wysyłki — wyłącza auto-zamianę emotek tekstowych (`:)`, `;)`, `:D`, `<3` itd.) jeśli komuś przeszkadza.
    • PressRoom · Newsletter: linki **`spotify:album:…` / `spotify:track:…`** w przyciskach „Dodatkowe CTA" są teraz **klikalne** (w podglądzie i w mailu) — otwierają aplikację Spotify. Iframe podglądu przepuszcza już deep-linki (`allow-popups`), przyciski mają `target="_blank"`. URI **nie jest konwertowane** na `https://` — zgodnie z prośbą zostaje natywne `spotify:` (dla Spotify for Artists).
    • PressRoom: na publicznej stronie wydania `/press/tydzien/…` wraca nazwa **„Serwis radiowy"** (eyebrow nad „Tydzień XX/2026"). Na głównej PressRoomu kafelek nazywa się teraz **„Najnowszy serwis tygodniowy"** — bo serwis idzie nie tylko do radia.
  542. v2.5.918 czerwca 2026, 20:00

    Sticky taby w segmentach + scalanie dziennikarzy

    • PressRoom · Segmenty: w panelu „Członkowie segmentu" taby **„Dodaj dziennikarzy / Import maili"** są teraz **sticky** i nie znikają, gdy segment ma kilkaset odbiorców (np. Radio 398). Header dostał własny limit wysokości — pigułki nigdy więcej nie zjedzą zakładek.
    • PressRoom · Profil dziennikarza: nowy panel **„Scal z innym rekordem"**. Wyszukujesz drugi wpis (po mailu, imieniu lub redakcji), potwierdzasz — i wszystkie powiązania (kanały, segmenty, eventy, feedback, newslettery, pitche, follow-y, pulse) przepinają się na ten profil. Mail źródłowy i jego alt-maile lądują w **alternatywnych adresach**, źródłowy rekord znika. Jeśli docelowy nie miał konta, a źródłowy miał — przejmujemy też user-id.
    • Auto-claim dziennikarza po logowaniu (Google / hasło / magic link) sprawdza teraz **nie tylko mail główny, ale i alt-maile** — jak ktoś dorzucił prywatny adres do profilu, samo się skojarzy.
  543. v2.5.818 czerwca 2026, 18:00

    Powtarzanie zadań + duplikuj, przełącznik wariantu serwisu

    • Zadania (Kanban): w drawerze zadania pojawiło się menu **„⋯"** z akcjami **Duplikuj zadanie** i **Ustaw powtarzanie** (codziennie / co tydzień / co 2 tyg / miesiąc / niestandardowo + data końca serii). Na karcie widać teraz badge **🔁 „co X dni/tyg"** oraz **„kopia"** dla duplikatów.
    • PressRoom · `/press/tydzien/…`: nad nagłówkiem nowy pasek **„Wariant serwisu"** — pigułki **Radio · TV · Portale · Spotify/DSP · Print · Podcast**. Wybór trafia do URL (`?variant=`) i jest udostępnialny. Po prawej podpowiedź **„Twój domyślny typ medium: …"** dla zalogowanych dziennikarzy (★ przy preferowanym wariancie).
    • Bonus: usunęliśmy resztę „Serwis radiowy" — wszędzie konsekwentnie **„Serwis tygodniowy"**.
  544. v2.5.718 czerwca 2026, 16:00

    Przenoszenie singli w newsletterze + duplikuj feature

    • Newsletter: każda karta singla w bloku **„Sekcja singli"** ma teraz dropdown **„↪ sekcja"** — przenosisz singla do innego bloku „Sekcja singli" w tym samym newsletterze, bez kasowania i dodawania od nowa. Spójnie z serwisem tygodniowym.
    • PressRoom · Features: w edytorze pojawił się przycisk **„Duplikuj"** (obok „Usuń"). Tworzy kopię feature jako draft — z tymi samymi adresatami, singlami, mood, intro/outro. Slug dostaje sufiks `-kopia` (kolejne kopie: `-kopia-2`, `-kopia-3` …).
  545. v2.5.618 czerwca 2026, 14:00

    Checklista inline, komentarze Pulse dla artystów, „odczytane przez" w komunikatorze

    • Zadania (Kanban): „Nowe zadanie" znów ma **checklistę inline** — wpisujesz tytuł zadania, a niżej dorzucasz punkty checklisty (Enter = kolejny punkt). „Zapisz" tworzy jedno zadanie + całą checklistę w jednym kliknięciu, bez otwierania dodatkowego modala.
    • Pulse (Artysta): **„Komentarze"** są teraz dostępne na każdym evencie — także na tych, które nie są bezpośrednio przypięte do Twojego profilu artysty. Wcześniej przycisk się nie pokazywał i nie dało się odpowiedzieć wydawcy z poziomu Pulse.
    • Komunikator: pod ostatnią wiadomością w Twoim „run" pojawia się **👁 odczytane przez** z liczbą osób (lub „wszyscy"), a w tooltipie pełna lista uczestników z godziną odczytu. Wreszcie wiesz, czy ktoś już to przeczytał.
    • Bonus porządkowy: szybkie dodawanie zadania nie wciąga już automatycznie pełnego drawera — wszystko, co trzeba, jest w popoverze.
  546. v2.5.518 czerwca 2026, 12:00

    Etap B: multi-add zadań, przenoszenie singli, filtry rejestracji

    • Zadania: **„Nowe zadanie" działa jak checklista** — wpisujesz tytuł, Enter dorzuca do listy, możesz wrzucić kilka i kliknąć **„Zapisz (N)"**. Każda pozycja staje się osobnym zadaniem. Bez wchodzenia w pełny modal.
    • PressRoom · Serwis tygodniowy: każda pozycja singla ma teraz **dropdown „↪ przenieś do sekcji"** w prawym górnym rogu — przekładasz singla między sekcjami bez kasowania i dodawania od nowa.
    • PressRoom · Segmenty → Członkowie: nowy pasek **„Wszyscy · 🟢 Zarejestrowani · ⚪ Niezarejestrowani · ✨ Nowi 7d"** + liczniki w nagłówku. Wreszcie wiesz, kogo z bazy zaprosiłeś, a kto jeszcze nie wpadł.
    • Rename: stary **„Serwis radiowy"** to teraz **„Serwis tygodniowy"** (i w wybieraczu wariantów, i na publicznej stronie `/press/tydzien/…`) — bo serwis idzie do radia + portali + TV, nie tylko radia.
  547. v2.5.418 czerwca 2026, 10:00

    Generator pomysłów, segmenty, emoji i format DSP

    • Generator pomysłów: modal „Iteruj z AI" leci teraz **nad** generatorem (poprawiony z-index), więc da się dopieszczać konkretny pomysł bez zamykania listy.
    • Nowy przycisk **„Generuj więcej (+N)"** — dorzuca kolejne propozycje do listy zamiast nadpisywać obecne. Powtórki po tytule są pomijane, a istniejące zaznaczenia zostają.
    • PressRoom · Segmenty: pusty filtr (bez formatu i bez gatunku) = **0 dziennikarzy** zamiast „wszyscy aktywni". Tak działa segment ręczny — członków dodajesz przez „include".
    • PressRoom · Segmenty: dodany format **DSP** (Spotify/Apple/Tidal) obok radio/web/print/tv/podcast/blog/other.
    • Komentarze (Pulse, Pomysły, Promo, Feedback): auto-zamiana skrótów typu `:)` → 🙂, `<3` → ❤️, `xD` → 😆 po spacji/enter. Wcześniej to działało tylko w komunikatorze.
  548. v2.5.318 czerwca 2026, 04:00

    Mobile: skrót do panelu po zalogowaniu

    • Mobilne menu landingu (`/`) po zalogowaniu pokazuje teraz przyciski **„Panel Admina"** (dla adminów) i **„Strefa Artysty"** (dla artystów) — wcześniej dało się tylko wylogować, bez wejścia do HUBa.
    • Gdy konto nie ma jeszcze przypisanej roli ani artysty, pojawia się „Przejdź do panelu →" prowadzący na `/welcome`, który dobierze właściwą stronę startową.
  549. v2.5.218 czerwca 2026, 03:00

    Paczka C — banner „Edytuje też…” w profilu artysty i w presskicie

    • Edytor profilu artysty (`/profile`): u góry pojawia się sticky banner „Edytuje też: <imię> · od HH:MM”, gdy ktoś inny otworzył ten sam profil. Heartbeat co 30s — gdy druga osoba wyjdzie, banner znika automatycznie po max 60s.
    • Presskit premiery (`/releases/$id/presskit`): ten sam banner pokazuje, czy artysta i admin równolegle edytują materiały promo. Twoje zmiany dalej zapisują się normalnie — banner jest sygnałem ostrzegawczym, nie blokadą.
    • Fundament Paczki C (RPC `claim_edit_lock` / `release_edit_lock`, `patchWithOptimisticLock` z 409 na konflikt, szablony filtrów i auto-followersi z v2.5.0–v2.5.1) jest tym samym wpięty produkcyjnie. Pełny conflict-modal i hard-save „nadpisz” w kolejnej iteracji.
  550. v2.5.118 czerwca 2026, 02:00

    Segmenty — szablony filtrów, auto-followersi i tryb dopasowania w UI

    • **Szablony filtrów** w Admin → PressRoom → Segmenty: nowy panel nad listą segmentów pokazuje zapisane presety. Klik w szablon otwiera kreator nowego segmentu z gotowym filtrem (formaty + gatunki + tryb dopasowania). Krzyżyk usuwa preset.
    • **Zapisz filtr jako szablon** w edytorze segmentu: nowy przycisk w stopce dialogu — pyta o nazwę i zapisuje aktualne ustawienia filtra jako preset (`press_segment_templates`).
    • **Auto-segment „Followersi singla / artysty"** dostępny z poziomu UI: wybierasz typ (Singiel / Artysta), wklejasz UUID, klikasz *Podgląd* (liczba osób) i *Utwórz segment*. Segment jest wirtualny — zawsze rezolwowany na żywo z `journalist_follows`.
    • **Tryb dopasowania gatunków (#9)** w edytorze: przełącznik *Dowolny (OR)* ↔ *Wszystkie (AND)* obok nagłówka „Gatunki". OR (domyślnie) działa jak dotychczas, AND wymaga, żeby dziennikarz miał wszystkie wybrane gatunki naraz.
  551. v2.5.018 czerwca 2026, 01:00

    Paczka B (cz. 7) + Paczka C — segmenty domknięte, autozapis z konfliktami

    • **#9 — tryb dopasowania ANY/ALL w segmentach.** Filtr genres ma teraz `match_mode`: domyślnie *any* (działa jak dotychczas — wystarczy że dziennikarz ma jeden z wymienionych gatunków), nowy tryb *all* wymaga wszystkich gatunków naraz (np. „rock **AND** alternatywa”).
    • **#9 — szablony segmentów.** Nowa tabela `press_segment_templates` + server fns `adminListSegmentTemplates / adminUpsertSegmentTemplate / adminDeleteSegmentTemplate`. Zapisuj często używane filtry jako presety i wstawiaj jednym kliknięciem przy tworzeniu nowego segmentu.
    • **#13 — auto-segment „Followersi singla / artysty”.** Wirtualny segment z `kind = 'followers_of_single' | 'followers_of_artist'` i `target_id` — rezolwer ciągnie z `journalist_follows`, ignorując formats/genres. Nowe server fns: `adminCreateFollowersSegment` (tworzy segment od razu z liczbą odbiorców) i `adminPreviewFollowers` (podgląd bez tworzenia).
    • **Paczka C — fundament autozapisu z optimistic-lockiem.** Migracja: pola `lock_session_id / lock_user_id / lock_touched_at` w `artist_profiles` i `release_submissions`, RPC `claim_edit_lock` (heartbeat, wygasa po 60s) i `release_edit_lock`. Nowe server fns: `claimEditLock`, `releaseEditLock`, `patchWithOptimisticLock` (PATCH per-pole, 409 gdy `updated_at` w bazie nowsze niż base; `force=true` nadpisuje świadomie).
    • **Paczka C — UI primitives.** Hook `useEditLock({ table, id })` z auto-heartbeatem i info kto trzyma lock; komponent `EditLockBanner` (sticky pasek „Edytuje też: Adam · od 14:32” z opcjami *Przejmij* / *Tylko podgląd*) oraz `SaveStatusBadge` (status zapisu z timestampem). Gotowe do wpięcia w edytor profilu artysty i presskit — najpierw integracja w `artist_profile`, potem `release_submissions`.
  552. v2.4.517 czerwca 2026, 23:30

    Paczka B · cz. 6 — Serwis tygodniowy z 4 zakładkami (Radio / TV / Portale / Spotify)

    • W edytorze wydania (Admin → PressRoom → Serwis tygodniowy → wydanie) doszedł pasek zakładek **Radio · TV · Portale · Spotify**. Sekcje (Premiery, Hit Alert, Polecane…) są wspólne dla wszystkich zakładek, ale single trzymane są per zakładka — możesz dodać ten sam singiel raz do każdego kanału z innym pitchem.
    • Przy zakładkach poza Radio pojawia się przycisk **„Duplikuj z Radio →"** — kopiuje wszystkie pozycje z radia do bieżącej zakładki (pomija duplikaty), żeby nie wpisywać tego samego ręcznie cztery razy.
    • W nagłówku wydania nowy przycisk **„Tydzień +1"** — klonuje całe wydanie (wszystkie 4 zakładki + sekcje + intro/about) jako szkic na kolejny tydzień. Bez wysyłki, bez airdate — od razu otwiera nowe wydanie do edycji.
    • Migracja: `press_weekly_items.channel` (radio/tv/portals/spotify, default 'radio'), nowy unique index `(issue_id, submission_id, channel)`. Stare wydania automatycznie trafiły do zakładki Radio.
  553. v2.4.417 czerwca 2026, 22:30

    Paczka B · cz. 5 — „Dodaj z bazy" w newsletterze

    • W edytorze **Admin → PressRoom → Newsletter** doszła sekcja **„Dodaj z bazy"** — picker ad-hoc dziennikarzy z wyszukiwarką (po imieniu, mailu, mediu, kanale). Wybrane osoby pokazują się jako chipy z X-em i lecą do wysyłki obok wybranych segmentów.
    • Mechanika unii: dziennikarz ad-hoc trafia do odbiorców **nawet jeśli nie pasuje do żadnego segmentu**, a wykluczenia segmentowe go nie blokują. Licznik odbiorców i wysyłka batchowa to uwzględniają — działa też dla newslettera bez segmentów.
    • Persistencja w nowej kolumnie `press_newsletters.adhoc_journalist_ids` (UUID[]). Endpoint `send-newsletter` rozpoznaje listę przy każdym tickcie crona, więc dodanie/usunięcie dziennikarza działa też po wstrzymaniu i wznowieniu wysyłki.
    • Co dalej w 20-punktowym planie: weekly 4 zakładki (radio/tv/portale/spotify) + #9 segmenty (OR + szablony) + Paczka C (UI autozapisu z optimistic lock i odzyskaniem wersji).
  554. v2.4.317 czerwca 2026, 21:30

    Paczka B · cz. 4 — kanały dziennikarzy w panelu + alt-maile

    • W panelu **Admin → PressRoom → Dziennikarz** dodaliśmy edytor „Kanały dziennikarza". Wyszukiwarka po `channel_master` (nazwa, miasto, medium), multi-select, gwiazdką oznaczasz kanał główny, każdy wpis ma swoje pole „rola" (np. prowadzący, redaktor). Zapis idzie do `journalist_channels` (diff: dodaje brakujące, usuwa odznaczone, aktualizuje istniejące).
    • Druga nowa sekcja: **„Alternatywne adresy e-mail"** — lista par etykieta+email z walidacją. To fundament pod #8 (wybór adresu przy wysyłce newslettera) — dane lądują w `journalist_profiles.alt_emails`.
    • Mobile-first: tap-target ≥36px, sticky-friendly layout, działa też na desktopie. Migracja: dodaliśmy GRANTy do `journalist_channels` (były polityki RLS, brakowało uprawnień Data API).
    • Pozostało w Paczce B: dialog „Dodaj z bazy" w kompozytorze newslettera (z pickerem alt-maila), weekly 4 zakładki (radio/tv/portale/spotify) + #9 segmenty. Potem rusza Paczka C (optimistic-lock autozapisu).
  555. v2.4.217 czerwca 2026, 20:30

    Paczka B · cz. 3 — blok „Plan wydawniczy" w newsletterze + tracking

    • Nowy blok w edytorze newslettera: **Plan wydawniczy (CTA)**. Wybierasz opcjonalnie konkretny singiel (wyszukiwarka po tytule/artyście), ustawiasz etykietę i styl (karta z opisem albo sam przycisk). Domyślny opis jasno mówi, co dziennikarz dostanie po kliknięciu — odsłuch i feedback „Biorę / Może / Pas".
    • Magic-link **per dziennikarz** — przy wysyłce rewriter zamienia statyczne `/press/plan?single=<id>` na `/press/m/<token>`, gdzie token ma `purpose=generic`, `scope=release_plan` i (jeśli wybrano deep-link) `single_id`. Resolver `/press/m/<token>` rozpoznaje plan i przekierowuje na `/press/plan/<token>#single-<id>`.
    • Pełny **tracking**: kliknięcie loguje się jako `open_link` w `press_events`, odsłuch trafia do tabeli zdarzeń przypisany do dziennikarza, a feedback („Biorę / Może / Pas" + komentarz) idzie do `press_feedback` z `journalist_id` i `submission_id`. Wszystko widoczne w profilu dziennikarza w hubie.
    • Pod spodem: util `mintMagicTokenServer` zapisuje teraz `scope` i `single_id` automatycznie kiedy target zaczyna się od `release_plan`, więc nowy blok i ręczny generator korzystają z tej samej ścieżki danych.
  556. v2.4.117 czerwca 2026, 19:00

    Paczka B · cz. 2 — generator linków do Planu wydawniczego w panelu A&R

    • Strona „Generator magic linków" (Admin → PressRoom) zyskała przełącznik trybu: „URL z PressRoomu" (jak dotychczas) oraz nowy „Plan wydawniczy" — wybierasz dziennikarza, opcjonalnie konkretny nadchodzący singiel z listy, klikasz „Wygeneruj" i dostajesz gotowy link `/press/plan/<token>` (z deep-linkiem do singla, jeśli wybrałeś).
    • Lista singli w trybie planu pokazuje tylko nadchodzące premiery (premiere_date ≥ dziś), posortowane chronologicznie z datą i tytułem — łatwo trafić we właściwą pozycję.
    • Reszta Paczki B (kanały dziennikarzy w sekcji Użytkownicy, alt-maile w wysyłkach, weekly z 4 zakładkami radio/tv/portale/spotify, segmenty z formatem Spotify) oraz cała Paczka C (optimistic locking autozapisu) — następne tury.
  557. v2.4.017 czerwca 2026, 18:00

    Paczka B · cz. 1 — magic-link do Planu wydawniczego dla dziennikarzy

    • Nowa publiczna trasa `/press/plan/<token>` — dziennikarz dostaje prywatny link (60 dni ważności), klika i widzi listę nadchodzących singli z premierami, gatunkiem, one-linerem prasowym i bezpośrednimi linkami do Spotify/YouTube — bez logowania.
    • Deep-link do konkretnego singla: token można wygenerować z `single_id`, link otwiera plan i auto-przewija do konkretnej pozycji (kotwica `#single-<id>`, podświetlenie na fioletowo).
    • Feedback per singiel: dziennikarz klika „Biorę / Może / Pas" + dodaje komentarz — trafia do `press_feedback` z atrybucją do dziennikarza i loguje się event `plan_feedback` w `press_events`.
    • Filtrujemy po fladze `allow_press_preview=true` na singlu — artysta może wyłączyć pokaz w planie wydawniczym dla prasy (domyślnie wszystkie nowe single są widoczne).
    • Bonus: util `normalizeMusicUrl` — konwertuje `spotify:track:xxx` (URI z aplikacji desktopowej Spotify) na klikalny `https://open.spotify.com/...`. Gotowy do podpięcia w polach URL singli, newsletterze i weekly w kolejnej turze.
    • Generator linków dla A&R (przycisk w panelu dziennikarza) + reszta Paczki B (kanały dziennikarzy w użytkownikach, alt-maile w wysyłkach, weekly z 4 zakładkami, segmenty z Spotify) i cała Paczka C (optimistic locking autozapisu) jadą w następnych turach — chcę dowieźć po kawałku stabilnie zamiast wszystko naraz.
  558. v2.3.217 czerwca 2026, 17:00

    Profil · „Ton komunikacji" jako multi-select

    • „Ton komunikacji" w edytorze profilu artysty pozwala teraz wybrać kilka tonów naraz (np. „Ironiczny + Bezpośredni + Zabawny") — wcześniej dało się zaznaczyć tylko jeden, co kłóciło się z resztą sekcji osobowości (Vibe, Zainteresowania). AI miesza wybrane tony zależnie od kontekstu (komunikat do fanów vs pitch do dziennikarza).
    • Zapis kompatybilny wstecz — w bazie wciąż jedno pole CSV w `personality.tone`, więc istniejące profile czytają się bez migracji.
  559. v2.3.117 czerwca 2026, 16:30

    Paczka A · cz. 2 — debiut artysty, safe-area iPhone, auto-emotki

    • Edytor profilu artysty ma nowe pole „Data debiutu (pierwszy singiel)" — zapisuje się autozapisem razem z resztą profilu i będzie autouzupełniać metadane przy każdej kolejnej premierze (pełna ekspozycja na stronie singla + override per-singiel w pressroomie dojedzie w Paczce B).
    • Pasek „Zapisz profil" na iPhonie nie chowa się już pod dolnym menu PWA — uwzględniamy `safe-area-inset-bottom` i odstęp na bottom nav, więc przycisk zawsze widać w całości.
    • Composer messengera zamienia popularne skróty tekstowe na emotki zaraz po naciśnięciu spacji: `:)` → 🙂, `:D` → 😄, `;)` → 😉, `:P` → 😛, `:(` → 🙁, `xD` → 😆, `:*` → 😘, `<3` → ❤️, `:o` → 😮, `:+1` → 👍 (i więcej). Reguła jest bezpieczna dla URL-i.
  560. v2.3.017 czerwca 2026, 15:00

    Paczka A · cz. 1 — lżejszy messenger, checklisty bez tarcia

    • Messenger ładuje teraz tylko 50 ostatnich wiadomości w wątku zamiast całej historii — otwieranie długich konwersacji jest dużo szybsze. Jeśli przewiniesz na samą górę, starsze wiadomości doczytują się automatycznie (z zachowaniem pozycji scrolla), jest też przycisk „Załaduj starsze wiadomości".
    • Stworzenie nowego zadania w kanbanie znów od razu otwiera kartę zadania na zakładce „Checklisty" — szybciej dorzucisz punkty od razu po dodaniu.
    • Punkty checklisty można edytować w miejscu: dwuklik na tekst lub ikonka ołówka → Enter zapisuje, Esc anuluje. Bez konieczności usuwania i wpisywania od nowa.
    • Fundamenty pod datę debiutu artysty (kolumna w bazie) i pod miniawatary „przeczytane" w messengerze (tabela `message_reads`) już są — UI rusza w kolejnej turze paczki A razem z resztą punktów (data debiutu w profilu/pressroomie, sticky bar z safe-area na iPhonie, autouzupełnianie emotek w composerach, lista uczestników z chevron).
  561. v2.2.717 czerwca 2026, 13:20

    Newsletter pressroomowy znowu startuje (cron + „Wyślij teraz")

    • Po ostatnim zabezpieczeniu endpointów sekretem `CRON_HOOK_SECRET` cron newslettera dostawał co minutę 401 i żaden zaplanowany mailing nie ruszał — m.in. zaplanowana wysyłka na Spotify czekała w „scheduled" mimo upłynięcia terminu.
    • Endpoint `/api/public/hooks/send-newsletter` akceptuje teraz dodatkowo publiczny klucz API (ten sam wzorzec, co `refresh-stats` i `warm-token-refresh`), a cron wysyła OBA nagłówki — sekret i `apikey` — żeby nie wywrócił go ponowny rozjazd wartości w Vault vs środowisko.
    • Przycisk „Wyślij teraz" w panelu newslettera dorzuca już `apikey`, więc ręczny kick-off od razu uruchamia pierwszą paczkę, a nie czeka 60 s na kolejnego ticka.
    • Logika wysyłki ani dedupy ani atomowy claim odbiorców nie były ruszane — żadnego ryzyka dubli z ostatnich incydentów.
  562. v2.2.617 czerwca 2026, 11:15

    Hamburger na Foldzie + szybsze odświeżanie radia/WARM

    • Na bardzo wąskich ekranach landing chowa mniej ważne elementy nagłówka, więc hamburger nie wypada już poza ekran; wylogowanie jest dostępne w rozwijanym menu.
    • Zaplanowane odświeżanie statystyk aktywnych projektów działa teraz co 2 godziny w ciągu dnia (zamiast co 6h), żeby emisje radiowe szybciej wpadały rano do HUB-a.
    • Token WARM rotuje teraz co 2 godziny, a jeśli WARM zwróci 401/403 podczas pobierania emisji, backend sam próbuje odnowić token i ponowić request — bez ręcznego klikania.
  563. v2.2.517 czerwca 2026, 22:40

    Messenger lżejszy + Wyloguj na stronie głównej + feedbacki tylko dla admina

    • Plakietki ról (ARTYSTA, WYDAWCA itp.) znikają z każdej pojedynczej wiadomości — kto jest kim, widać raz, w pasku uczestników nad rozmową. Nad dymkiem zostaje tylko imię, dzięki czemu mieści się więcej treści.
    • Plus-reakcji nie zajmuje już osobnego rzędu — pojawia się w pasku akcji obok „Edytuj" / „Usuń" (hover na desktopie, long-press na mobile). Same chipsy z istniejącymi reakcjami zostają wpięte w róg dymka, jak w Messengerze.
    • Na stronie głównej HUBa (mobile) wrócił widoczny przycisk „Wyloguj" przy zalogowanym koncie — wcześniej był ukryty na wąskich ekranach.
    • Sekcja „Ostatnie reakcje dziennikarzy" (szczegóły feedbacków z PressRoomu) jest teraz widoczna tylko w panelu admina. Artysta nadal widzi KPI, decyzje i kwartyle, ale bez surowych komentarzy dziennikarzy.
  564. v2.2.417 czerwca 2026, 22:10

    Messenger: mniej powtórzeń, avatar przy dymku, plus-reakcji ukryty

    • Zniknął zdublowany tytuł wątku w treści rozmowy — nagłówek z górnej belki wystarczy, a pod nim jest już tylko skrótowe „z Kayomee · 3 uczestników" + plakietki uczestników.
    • Avatar autora wraca do tego samego rzędu co dymek wiadomości (jak w klasycznym Messengerze) — nie wisi już osobno pod spodem, gdy wiadomość ma reakcje lub plus-reakcji.
    • Przycisk dodania reakcji na mobile pojawia się dopiero po przytrzymaniu wiadomości (long-press) — wcześniej był stale widoczny i niepotrzebnie rozsuwał kolejne wiadomości.
  565. v2.2.317 czerwca 2026, 21:45

    Wyloguj dostępny na wąskich ekranach (Fold itd.)

    • Na bardzo wąskich ekranach (np. Galaxy Fold w trybie złożonym) przycisk wylogowania nie był widoczny w nagłówku — teraz jest w menu hamburgera obok pozostałych skrótów.
    • Hamburger (☰) zyskał `shrink-0`, więc nigdy nie wypadnie poza ekran, nawet gdy w nagłówku jest dużo plakietek (Artysta, Admin, Aplikacja).
    • Gdy nie jesteś zalogowany, w tym samym miejscu w menu pojawia się przycisk „Zaloguj się →".
  566. v2.2.217 czerwca 2026, 21:30

    Reakcje przyklejone do dymka — jak w FB Messengerze

    • Reakcje (❤️ 👍 🔥 …) wystają teraz z dolnego rogu wiadomości — z prawej dla Twoich, z lewej dla cudzych — zamiast wisieć osobno pod spodem.
    • Przycisk dodania reakcji nadal pojawia się dopiero na hover (desktop) lub long-press (mobile), więc nic nie zaśmieca dymków bez reakcji.
  567. v2.2.117 czerwca 2026, 21:00

    Messenger zwężony — więcej rozmowy, mniej powietrza

    • Pod każdą wiadomością nie ma już grubej stopki z datą — godzina pojawia się dyskretnie obok dymka dopiero po najechaniu (desktop) lub przytrzymaniu (mobile).
    • Zamiast powtarzającej się daty przy każdej wiadomości jest jeden poziomy pasek na dzień (np. „wtorek, 16 czerwca") — od razu wiadomo, gdzie kończy się jeden dzień rozmowy a zaczyna następny.
    • Reakcje też dajesz na hover (desktop) lub long-press wiadomości (mobile) — przycisk nie zajmuje już miejsca w każdym dymku.
    • Kolejne wiadomości tej samej osoby się sklejają (jeden avatar i nagłówek na grupę) — w okienku mieści się znacznie więcej rozmowy.
  568. v2.2.017 czerwca 2026, 20:00

    Messenger zunifikowany — Fazy 1–3 widoczne wszędzie

    • Wątki releasowe (te ze stronki wydania), crew i bąble Messengera korzystają teraz z jednego modelu danych — koniec z dwoma równoległymi systemami czatu, koniec z „u mnie nic się nie zmieniło".
    • Pasek uczestników z rolami (A&R, manager, artysta), plakietki przy każdej wiadomości, wybór widoczności „Tylko dla…", wskaźnik „pisze…", panel emoji 😊, avatary z profilu i @wzmianki — wszystko działa teraz w `/inbox`, w bąblach na dole ekranu i w popupie Messengera.
    • Stare wiadomości i reakcje z czatu releasowego zostały przeniesione 1:1 do nowego modelu — żadna konwersacja się nie zgubiła.
    • Pod spodem: triggery automatycznie tworzą wątek dla każdego nowego release'u i dopisują tam artystę + zespół (admini i przypisana załoga), więc nie trzeba nic klikać ręcznie.
  569. v2.1.617 czerwca 2026, 18:30

    Fix: okładki w Messengerze znów mają normalny rozmiar

    • W liście wątków i bąblach Messengera okładka projektu rozjeżdżała się na całą szerokość dymka (wyglądało to jak gigantyczny plakat zamiast małego awatara). Teraz awatar trzyma się sztywno 40 × 40 px, jak należy.
    • Pod spodem: awatar wątku wymusza już własną szerokość/wysokość (inline-block + min/max), więc obrazek nie ucieka z ramki nawet w wąskich kontenerach.
  570. v2.1.517 czerwca 2026, 18:00

    Okładki i emoji w pozostałych miejscach Messengera

    • Lista wątków w dymku Messengera (te małe „bąble" na dole) używa teraz okładki projektu / avatara artysty zamiast inicjałów — z drobną ikonką płytki lub crew w rogu, żeby było wiadomo, jaki to typ wątku.
    • Panel emoji 😊 dorzucony do okna „Nowa wiadomość" (kompozytor wątku) i do okna odpowiedzi na ogłoszenie wydawcy — komplet kategorii i historia ostatnio użytych.
  571. v2.1.417 czerwca 2026, 17:00

    Okładki w Messengerze + panel emoji

    • W liście wątków, dzwonku Messengera, bąblach na dole ekranu i w powiadomieniach push zamiast inicjałów pokazuje się teraz okładka projektu, a jeśli jej brak — avatar artysty. Inicjały zostają jako ostatni fallback.
    • Nowy panel emoji w kompozytorze wiadomości (ikona 😊) — 6 kategorii (buźki, serca, gesty, ludzie, imprezka, natura) plus pasek „ostatnio użyte" zapamiętany w przeglądarce. Klik wstawia emoji na końcu tekstu.
  572. v2.1.317 czerwca 2026, 15:00

    Profil w HUBie + wibracja na nową wiadomość

    • Nowy ekran „Twój profil" (`/me`) — każdy zalogowany (artysta, załoga, w przyszłości fan) wgrywa avatar (do 5 MB) i ustawia wyświetlane imię oraz krótkie bio.
    • Avatar i imię z profilu automatycznie pojawiają się przy każdej Twojej wiadomości w Messengerze, w pasku uczestników i w powiadomieniach.
    • Telefon wibruje delikatnie, gdy w otwartym wątku pojawia się wiadomość od kogoś innego — i mocniej, gdy globalny licznik Messengera rośnie (Android/PWA; iOS Safari ignoruje wibracje).
    • Pierwszy krok w stronę strefy fanów — tabela profili obejmuje wszystkich użytkowników, nie tylko artystów.
  573. v2.1.217 czerwca 2026, 13:00

    Messenger projektowy — Faza 3 (typing, powiadomienia, pamięć widoczności)

    • Nowe wiadomości generują powiadomienia (in-app + push) — odbiorca dostaje ping i klika prosto do wątku. Prywatne wiadomości („Tylko dla…") trafiają wyłącznie do wybranych osób.
    • Wzmianki @nick są rozpoznawane jako osobny typ „message_mention" — głośniejszy alert, łatwiej zauważyć, że ktoś Cię oznaczył.
    • W konwersacji widać „X pisze…" w czasie rzeczywistym — wiesz, że ktoś właśnie odpowiada.
    • Wybór odbiorców w kompozytorze (np. tylko z artystą, tylko z A&R) jest zapamiętywany per wątek — nie musisz go ustawiać przy każdej wiadomości.
  574. v2.1.117 czerwca 2026, 11:30

    Messenger projektowy — Faza 2 (UI konwersacji)

    • Nad każdą konwersacją widać pasek uczestników z avatarami, imionami i kolorowym badgem roli (Wydawca · ID, Załoga ID · A&R/Promo/Prasa/Manager, Artysta).
    • Każda wiadomość ma avatar autora, imię i etykietę roli — od razu wiesz, kto pisze: artysta, A&R, promo, prasa, manager czy admin.
    • Nowy przełącznik „Widoczność" w kompozytorze — możesz wysłać do wszystkich w wątku lub wybrać konkretne osoby (multi-select). Wiadomość prywatna ma żółtą ramkę i etykietę „Tylko dla: …".
    • Działa identycznie na desktopie, w pełnoekranowym widoku mobilnym i w okienkach bąbla messengera.
  575. v2.1.017 czerwca 2026, 10:00

    Messenger projektowy — Faza 1 (model + backend)

    • Każdy projekt ma teraz jeden kanoniczny czat — automatycznie łączy Artystę, jego załogę i adminów ID Records w jednej konferencji (bez ręcznego dodawania).
    • Wiadomość możesz wysłać do wszystkich w wątku albo do wybranych osób — backend (z walidacją w bazie) pilnuje, że adresat naprawdę jest w wątku.
    • Lista uczestników i autor każdej wiadomości mają teraz avatar, imię oraz czytelną etykietę roli (Artysta / Załoga ID / Admin) — UI ich pokaże w Fazie 2.
    • Drobny fix landingu: kliknięcie logo płynnie wraca na samą górę i czyści hash (#oferta itp.) z URL.
  576. v2.0.317 czerwca 2026, 02:35

    Landing: ikonki w menu headera i drobna korekta sloganu

    • Każda pozycja menu w górnym headerze (Strefy, Oferta, Dlaczego my, O nas, Social, Kontakt) dostała swoją ikonę — łatwiej skanować i wygląda mniej biednie.
    • Slogan w hero poprawiony na „Wydawca i promotor Twojej muzyki" (bez „dla") — krócej i mocniej.
  577. v2.0.217 czerwca 2026, 02:10

    Slogan na landingu i ciche powiadomienia o nowej wersji

    • Nowy slogan w hero: „Wydawca i promotor dla Twojej muzyki — oraz portal, który łączy Artystów, Media i Fanów w jednym miejscu i nieustannie rozwija się o nowe możliwości."
    • Duży modal „Co nowego?" widzi już tylko załoga/admin — Artyści i pozostali zalogowani dostają dyskretny toast w prawym dolnym rogu z przyciskiem „Sprawdź co nowego" prowadzącym do /changelog.
    • Powiadomienie pojawia się tylko raz na wersję — po zamknięciu, automatycznym zniknięciu lub kliknięciu „Sprawdź co nowego" zapisujemy ostatnio widzianą wersję w przeglądarce.
  578. v2.0.117 czerwca 2026, 01:30

    Landing: jeden rząd menu na desktopie, hamburger na mobile

    • Na desktopie menu sekcji (Strefy, Oferta, Dlaczego my, O nas, Social, Kontakt) wskoczyło w jeden rząd obok logo — koniec osobnego paska pod headerem.
    • Przycisk „Wyślij demo" jest teraz na stałe w górnym menu, obok „Aplikacji" i logowania — łatwo zauważyć i kliknąć.
    • Na telefonie zamiast tłoku przycisków pojawił się klasyczny hamburger — pełne menu i „Wyślij demo" rozwijają się w jednym czystym panelu.
    • Naprawiony powrót do góry po kliknięciu w logo (#top z marginesem na fixed header) — żadnych skoków pod nagłówek.
  579. v2.0.017 czerwca 2026, 01:00

    Landing 2.0 — WOW header, fixed nav i nowy hero

    • Nowy fixed header — zawsze widoczny na górze, z logo ID Records HUB, podpisem „Artyści · Media · Fani" i pełnym menu sekcji (Strefy, Oferta, Dlaczego my, O nas, Social, Kontakt) pod ręką podczas przewijania.
    • W headerze nowy gradientowy przycisk „Aplikacja" prowadzący prosto do /zainstaluj (PWA · 30 sekund) — obok „Wyślij demo" i logowania.
    • Hero przeprojektowany na WOW: duże logo z gradientową poświatą, gigantyczny napis ID Records HUB, podtytuł „Artyści · Media · Fani" i slogan portalu, który łączy wszystkich.
    • Pożegnaliśmy pill „Music Campaign Intelligence" — landing mówi teraz wprost, kim jesteśmy i co robimy.
  580. v1.99.417 czerwca 2026, 00:25

    Landing: pełen dostęp bez gwiazdek, mniej przycisków, mail w CTA

    • Kafelek „Pełen dostęp do HUB jako Artysta" bez gwiazdki i bez przypisu o projektach podpisanych do końca sierpnia 2026 — pełen dostęp brzmi teraz tak, jak powinien.
    • Z górnego paska headera znika przycisk „Konsultuj singiel" — zostaje samo „Wyślij demo", żeby decyzja była prostsza.
    • W sekcji „Dołącz do Artystów ID" doszedł gradientowy kafelek z mailem kontaktowym demo@idrecords.pl — alternatywa dla osób, które wolą napisać mailem niż wypełniać formularz.
  581. v1.99.317 czerwca 2026, 00:10

    Landing: wyśrodkowane menu sekcji + poprawka opisu Messengera

    • Pasek menu sekcji landingu (Strefy od środka, Oferta, Dlaczego my, O nas, Social, Kontakt) jest teraz wyśrodkowany pod headerem.
    • W bannerze „Zainstaluj HUB na telefonie" Pełnoprawny Messenger to czat 1-na-1 i grupowy z A&R, prasą i innymi Artystami ID (zamiast mylącego „crew").
  582. v1.99.216 czerwca 2026, 23:55

    Landing: header z powrotem na górze, menu sekcji bez czarnego paska

    • Przywróciliśmy normalny układ górnego paska — logo „ID Records HUB", przycisk „Zaloguj się" i CTA „Wyślij demo / Konsultuj singiel" znów siedzą na samej górze, tak jak były.
    • Menu sekcji landingu (Strefy od środka, Oferta, Dlaczego my, O nas, Social, Kontakt) jest teraz zwykłym, lekkim paskiem przycisków pod headerem — bez czarnego tła i bez przyklejania się przy scrollu.
    • W sekcji „Inwestycja" doszedł nowy punkt: jeśli wydajesz często i regularnie albo masz już duże osiągnięcia — zapłacisz mniej. Doceniamy konsekwencję i dorobek.
  583. v1.99.116 czerwca 2026, 23:30

    Landing: focus wydawniczy w A&R + nowy wizualny blok „ID = hybryda"

    • Sekcja „A&R, opieka i komunikacja" — nowy kafelek „Skupiamy się — 2–3 single tygodniowo": wydajemy zwykle 2–3 single na tydzień, pilnujemy, by podobne premiery nie spadały na siebie, działamy z myślą, żeby udało się właśnie Tobie (Twoja wizja + nasze know-how).
    • Nad listą korzyści „Co dostajesz z ID" wszedł mocno wizualny blok „ID = hybryda — wolność dystrybutora + opieka wytwórni": równanie dystrybutor (niezależność, brak narzucania) + wytwórnia (realna promocja, relacje, marketing) = ID Records.
    • Pod równaniem trzy super-power HUB-a: dostępność na desktopie + iOS + Android (PWA), top-innowacyjny moduł Pomysłów na trudne problemy promocyjne, oraz przekaz „tworzysz / działasz / żyjesz" zamiast biernego czekania na airplay.
  584. v1.99.016 czerwca 2026, 22:30

    Landing v3: porządki w „Co dostajesz", Pressroom z feedbackiem, blok „Ile to kosztuje?"

    • Banner instalacji PWA na landingu mocno eksponuje teraz Pełnoprawny Messenger (czat 1-na-1 i grupowy z A&R, prasą i crew) jako pierwszą, szeroką cechę.
    • Sticky menu sekcji w nowym, ładniejszym stylu — z ikonami, gradientowym hoverem i wyraźniejszym kontrastem.
    • Pressroom od środka: „Plan wydawniczy" zamieniony na „Feedback prosto z Pressroomu" (ocena, co się podoba/nie podoba, sugestie kierunku promocji, opcja partnerstwa). Plan wydawniczy + odsłuchy przedpremierowe zebrane w jeden, mocniejszy kafelek na końcu sekcji.
    • „Co dostajesz z ID" — sekcja „A&R, opieka i komunikacja" rozbudowana o wsparcie popremierowe i rollout, reakcję na to, co się dzieje (korygowanie planu), wychytywanie mocnych i słabszych stron + konkretne sposoby na ich rozwiązywanie, oraz press-toury i trasy radiowe (przeniesione z „Dlaczego HUB").
    • Pakiet marketingowy UMP — uściślenie: Universal Music Polska wspiera wybrane projekty wg własnej oraz naszej oceny potencjału.
    • Sekcja „Dlaczego HUB" — zostawione 700+ kanałów promocyjnych, dodany nowy kafelek „Kanały nie są Tobą zainteresowane?" z odesłaniem do modułu Pomysły (generujemy konkretne akcje, by zainteresować redakcje).
    • Kontakt — adres mailowy zmieniony na demo@idrecords.pl (we wszystkich CTA z mailem na landingu).
    • Featured-kafelek „Pełen dostęp do HUB jako Artysta" — dodana gwiazdka i przypis: projekty podpisane do końca sierpnia 2026 dostają dostęp do wszystkich sekcji HUB-a; od września dostęp zależny od zakresu świadczeń.
    • Nowy blok „Ile to kosztuje?" tuż nad „Dołącz do Artystów ID" — wyjaśnia elastyczność oferty, mechanizm automatycznego rabatu przy przeszacowaniu zakresu i to, że bierzemy tylko projekty, w które wierzymy.
    • Usunięte zdublowane CTA pod sekcją „Co dostajesz z ID" — niżej i tak są te same przyciski w „Dołącz do Artystów ID".
    • Moduł Projekty (Strefa Artysty od środka) — dodany jasny przekaz, że to centrum pełnego monitoringu: airplay radio per stacja, streamingi, social i fanbase w jednym widoku.
    • Backend: kolumny `idea` i `name` w `newsletter_subscribers` + admin server fn `adminListFanZoneSignups` — gotowe pod nadchodzący formularz zapisów Strefy Fana z landingu.
  585. v1.98.016 czerwca 2026, 19:00

    Landing v2: Pressroom od środka, TOP oferta, Profil jako featured

    • Nowa sekcja „Strefy od środka" z przełącznikiem: „Strefa Artysty od środka" ↔ „Pressroom od środka". Profil Artysty (i Profil dziennikarza po stronie Pressroomu) wyciągnięte na samą górę jako featured-kafelek na całą szerokość — z mocno rozbudowaną listą argumentów (osobowość, gust, hobby, poziom doświadczenia, cele, brand kit, social handles, RODO).
    • Nowa, pełna lista modułów Pressroomu w jednym widoku: serwis tygodniowy, plan wydawniczy z odsłuchami przedpremierowymi, katalog singli + polecane, rozbudowane strony singli (artist pitch, wywiady, galerie, statystyki), powiadomienia o obserwowanych, Pulse dla dziennikarzy, Messenger PR, rezerwacje wywiadów i prośby o IDsy, profile stacji.
    • Nowa sekcja TOP oferta „Dołącz do Artystów ID Records" — dostęp do HUB, promocja na 700+ kanałach (250+ stacji radiowych, TV, śniadaniówki, portale, streaming, podcasty/influencerzy), press-toury i trasy radiowe, A&R 20 lat, polityka „płać za efekty", produkcja audio/video, dystrybucja Universal Music Group + Universal Music Polska, playlisty Spotify „Z kim pracujemy" i „Best projekty".
    • Sticky top-nav na landingu z anchorami: Strefy od środka / Oferta / Dlaczego my / O nas / Social / Kontakt. Nowe bloki „O nas" (20+ lat, 700+ kanałów, 400+ serwisów UMG), „Social" (FB / IG / TikTok / Spotify ID Records) i „Kontakt" (mail + telefon + demo).
    • Banner instalacji PWA — usunięte „Działa offline (cache)" (bez sensu), dodane mocniejsze cechy: Pulse i feedbacki na żywo, Connect (społeczność Artystów ID), Briefy zawsze pod ręką. To samo na /zainstaluj. Usunięty chip „Wkrótce: Pressroom" — Pressroom już jest.
  586. v1.97.416 czerwca 2026, 17:45

    Messenger wyeksponowany w landingu, bannerze PWA i opisach HUB-a

    • Landing instalacji (/zainstaluj) ma teraz Messenger jako pierwszą cechę aplikacji — „Pełnoprawny Messenger (czat 1-na-1 i grupowy)" + „Powiadomienia push o nowych wiadomościach".
    • Banner PWA „Zainstaluj HUB" na każdej platformie (iOS/Android/desktop) zaczyna się od „Pełnoprawny Messenger + push" — żeby instalacja apki miała jasny, namacalny powód.
    • „Strefa Artysty od środka" i „Hub od środka" — moduł „Skrzynka" przemianowany na „Messenger" z nowym opisem: czat 1-na-1 i grupowy z A&R, załączniki zdjęć i wideo, reakcje, @mentions, push.
    • Skróty w HUB-ie (dolny rząd „szybkie wejścia" + sekcja „Co dziś warto kliknąć") też mówią „Messenger" zamiast „skrzynki".
  587. v1.97.316 czerwca 2026, 17:00

    AI „Twoje radio" — komunikaty dopasowane do poziomu doświadczenia

    • Sekcja „AI ID Records — co mówią Twoje dane" w panelu „Twoje radio" (na stronie projektu) wreszcie czyta Twój poziom doświadczenia z profilu — koniec z domyślnym „ogromnym potencjałem" dla wszystkich.
    • Dla artystów L4 (Doświadczony) i L5 (Gwiazda) AI nie nazywa już regionalnych emisji „wspaniałym startem" — mówi wprost „rozbiegówka" i celuje w top stacje (RMF, Zet, Eska, Antyradio).
    • Dla L1/L2 (Debiutant/Wschodzący) ton zostaje ciepły i doceniający — tylko bez przesadnych fajerwerków, żeby nie budować fałszywego obrazu sytuacji.
    • Dokręcony centralny silnik tonu (narrative-tone.ts) — lista zakazanych fraz dla L4/L5 („ogromny potencjał", „impet", „rozbrzmiewa w eterze", „trzymamy kciuki"), domyślnie chłodny analityk-strateg zamiast cheerleadera. Działa też w briefingach, score narrative i generatorze pomysłów.
  588. v1.97.216 czerwca 2026, 16:00

    Messenger: pole do pisania wiadomości na pełną szerokość

    • Composer w Messengerze ma teraz układ dwurzędowy: textarea „Napisz wiadomość…” zajmuje całą szerokość okna, a ikony (zdjęcie/wideo, mikrofon, załącznik) i przycisk wysyłki są w wygodnym rzędzie pod spodem.
    • Naprawia ściśnięte, mikroskopijne pole tekstowe w okienku „chat heads” na desktopie — teraz wygodnie pisze się też w przypiętej rozmowie.
    • Działa tak samo w pełnoekranowym Messengerze, w Crew Chacie, w skrzynce odbiorczej i w okienku popup.
  589. v1.97.116 czerwca 2026, 15:10

    Messenger na telefonie: composer od razu widoczny + jaśniejsza ikona załącznika

    • Po otwarciu wątku na telefonie rozmowa otwiera się teraz na pełnym ekranie — pole „Napisz wiadomość…” jest od razu widoczne na dole, bez przewijania w dół.
    • Ikona załącznika wyraźnie pokazuje, że obsługujemy ZDJĘCIA i WIDEO: ikona zdjęcia z małym znacznikiem play w rogu, zamiast samego klapsa filmowego (który mylił, że można tylko wideo).
    • Powrót do listy wątków przez strzałkę „wstecz” w nagłówku konwersacji.
  590. v1.97.016 czerwca 2026, 14:30

    Poziom doświadczenia artysty: AI dopasowuje ton do Twojego etapu

    • Nowy suwak „Poziom doświadczenia” (1–5) w profilu artysty: od 🌱 Debiutanta przez 🚀 Wschodzącego, 🎯 Ugruntowanego, 💎 Doświadczonego, aż po ⭐ Gwiazdę. Ustawiasz raz, działa wszędzie.
    • Wpływa na TON wszystkich komunikatów AI: briefingu „Twój tydzień w trzech zdaniach”, opisu wyniku i kondycji, generatora pomysłów (Pulse / Premiery / bez kontekstu), wiadomości z Pulse Radio i PressRoomu, oraz wszystkich pitchy i refine'ów.
    • Sztywne reguły progów: dla Gwiazdy regionalne emisje to tylko „rozbiegówka”, sukcesem są dopiero top stacje (RMF/Zet/Eska, waga ≥70). Dla Debiutanta ~20 emisji to już realny sukces, bez fałszywej euforii.
    • Doprecyzowane też reguły dla metryk muzycznych: odsłuch bez pobrania = negatywny sygnał; pobranie = obserwacja, nie sukces; sukcesem są realne emisje, dodania do playlist i publikacje w mediach.
    • Widoczne też w panelu Admina (sekcja „Osobowość artystyczna”) — opiekun A&R wie z jakim tonem AI komunikuje się z artystą.
  591. v1.96.616 czerwca 2026, 10:05

    Messenger: rozszerzanie pola, wideo i lepsza responsywność

    • Pole do pisania wiadomości w Messengerze (bańka A&R przy każdej premierze) rozszerza się teraz faktycznie wraz z długością tekstu, do ~6 wierszy, a potem płynnie scrolluje. Poprzednia poprawka trafiła tylko do Crew Chatu — teraz działa wszędzie.
    • Można wysyłać filmiki z rolki/aparatu (mp4, mov, webm) — do 50 MB. Wideo odtwarza się bezpośrednio w wątku, bez wychodzenia z aplikacji.
    • Naprawiona responsywność wiadomości na małych ekranach: koniec poziomego przewijania całego okienka, długie linki i mentiony łamią się w bańce zamiast ją rozpychać.
  592. v1.96.516 czerwca 2026, 08:45

    Messenger: inteligentne rozszerzanie pola tekstowego

    • Pole do pisania wiadomości w Messengerze rozszerza się teraz automatycznie wraz z ilością tekstu (max ok. 6 wierszy), a potem płynnie przechodzi w przewijanie — zamiast stałego jednowierszowego paska.
    • Dużo wygodniejsze pisanie dłuższych odpowiedzi, zwłaszcza na telefonie, bez potrzeby ręcznego rozciągania okienka.
  593. v1.96.416 czerwca 2026, 23:30

    Bezpieczeństwo: zaproszenia muszą być zaakceptowane

    • Funkcja is_project_artist (używana w RLS ~20 tabel projektowych — statystyki, AI insights, radio, notatki, taski itd.) liczy teraz wyłącznie członków zespołu artysty z wypełnionym accepted_at.
    • Niezaakceptowane zaproszenia nie dają już żadnego dostępu do danych projektu — analogicznie jak wcześniej zostało to wzmocnione dla danych artysty.
  594. v1.96.316 czerwca 2026, 23:10

    Messenger: klikalne linki i przycisk „Zobacz szczegóły"

    • Wiersz „👉 Zobacz szczegóły: …" w wiadomościach z Pulse renderuje się teraz jako ładny przycisk z ikonką, zamiast surowego adresu URL.
    • Wszystkie inne linki w wiadomościach są automatycznie klikalne (skrócone do hosta + ścieżki), z odpowiednim zachowaniem dla linków wewnątrz HUBa i zewnętrznych.
  595. v1.96.216 czerwca 2026, 22:30

    Pulse → Messenger trafia do wątku premiery

    • Naprawione: „Do messengera" w Pulse nie tworzy już osobnego DM-a, tylko dokleja wpis do właściwego wątku premiery (release_submission) — dokładnie tam, gdzie A&R i artysta rozmawiają o tym tytule.
    • Wybór wątku jest mądrzejszy: najpierw release z eventu, potem premiera tego artysty na projekcie, w ostateczności najnowsza premiera projektu. Brak premiery → czytelny komunikat zamiast cichego fail-a.
    • Treść w Messengerze ładnie sformatowana: badge poziomu (🏆 Sukces / ⚠️ Uwaga / 🔔 Info), pogrubiony tytuł, opis i wyraźny link „👉 Zobacz szczegóły".
    • Wątek wypływa na górę listy Messengera, a artysta dostaje push o nowej wiadomości.
  596. v1.96.116 czerwca 2026, 22:00

    Bezpieczeństwo: szczelniejszy Realtime, team i fan-links

    • Messenger: usunięto politykę, która przez Realtime rozsyłała treść każdej prywatnej wiadomości do wszystkich zalogowanych. Teraz zdarzenia widzą tylko uczestnicy wątku.
    • Realtime: usunięto otwartą politykę na realtime.messages (kanały Broadcast/Presence — w aplikacji nieużywane). Zwykłe subskrypcje postgres_changes działają jak wcześniej, opierając się o RLS tabel.
    • Team: funkcje is_team_member / is_team_manager liczą wyłącznie zaakceptowane zaproszenia (accepted_at). Niezaakceptowani członkowie nie mają już dostępu do danych artysty.
    • Fan-artist links: zlikwidowano otwarty insert dla anon/authenticated. Powiązania powstają tylko przez chronione server-routes (presave, OAuth Spotify).
  597. v1.96.016 czerwca 2026, 21:00

    Zadania ↔ Pulse + most do Messengera

    • W zadaniu (drawer) nowy panel „Pulse dla artysty": przycisk „Wyślij do Pulse" wrzuca info do feedu artysty (z opisem, deadline’em i osobą odpowiedzialną) oraz push, a po pierwszym wysłaniu zmienia się w „Wyślij ponownie".
    • Zamknięcie zadania (status: zrobione) przez admina, w którym oznaczony jest artysta/projekt/premiera, automatycznie publikuje wpis ✅ w Pulse i wysyła push — chyba że w zadaniu zaznaczono nowy przełącznik „Nie wysyłaj automatycznie po zakończeniu".
    • W Pulse (admin) na każdym evencie pojawił się przycisk „Do messengera" — kopiuje treść eventu do wątku premiery (lub tworzy DM z artystą jako fallback) wraz z linkiem „Zobacz szczegóły".
    • Artyści zadania są zbierani z obu ścieżek: bezpośrednio z artistId zadania oraz z artystów projektu/premiery (z deduplikacją).
  598. v1.95.416 czerwca 2026, 20:00

    Pomysły: prostszy „Do Pulse" + liczniki komentarzy widoczne od razu

    • Przycisk w pomyśle uproszczony do „Do Pulse" (powtórne wysłanie: „Wyślij ponownie do Pulse") — bez dopisku „UWAGA + push". Powiadomienie push do artysty nadal działa tak samo, info opisane w tooltipie.
    • Liczba komentarzy pod pomysłem ładuje się od razu z listą — nie trzeba już rozwijać wątku, żeby zobaczyć, ile wiadomości w nim jest.
    • Ten sam licznik komentarzy pojawił się na kafelkach w feedzie Pulse (artysta + admin + „Twoje sukcesy" na dashboardzie) — widać go wprost przy przycisku „Komentarze".
  599. v1.95.316 czerwca 2026, 19:00

    Bezpieczeństwo: cron-hooki na dedykowany sekret + szczelniejszy Songstats

    • Wszystkie endpointy cronowe (kalendarz, rollout, newsletter, social, refresh-stats, detect-events, release-published, run-future-saves, warm-token-refresh) wymagają teraz `CRON_HOOK_SECRET` w nagłówku `x-hook-secret` (lub `authorization` / `apikey`). Koniec z publicznym anon key jako „sekretem".
    • Server fn `getProjects` (dane z arkusza PRESSING/PROMO) jest objęty `requireSupabaseAuth` — dostęp tylko dla zalogowanych.
    • Publiczny `GET /api/public/songstats-ingest?script=1` i `PUT` (które zwracały skrypt bookmarkletu wraz z tokenem zapisu) zostały wyłączone — bookmarklet pobieramy wyłącznie z panelu admina przez chronioną server function.
    • Pamiętaj: po wdrożeniu trzeba zaktualizować joby pg_cron, żeby przesyłały `x-hook-secret: ${CRON_HOOK_SECRET}` w nagłówkach `net.http_post`.
  600. v1.95.216 czerwca 2026, 18:00

    Messenger: niższe dymki — reakcje w jednej linii z datą

    • Pasek z reakcjami, datą wysłania i przyciskiem edycji został scalony w jedną linijkę pod treścią wiadomości — każdy dymek jest niższy, więc na ekranie widać wyraźnie więcej rozmowy bez przewijania.
    • Zachowane są wszystkie funkcje: dodawanie/zdejmowanie reakcji, znacznik „edytowano" i przycisk ołówka do edycji (admin) — tylko ułożone gęściej.
  601. v1.95.116 czerwca 2026, 17:00

    Kalendarz: Emisja na niebiesko + bogatszy kontekst Pomysł → Pulse

    • Kategoria „Emisja" (broadcast) w kalendarzu jest teraz wyraźnie niebieska (gradient blue → sky) — koniec zlewania się z fioletowymi premierami i wywiadami. Zmiana objęła siatkę miesiąca/tygodnia, panel kalendarza release'u, widok artysty i widget „Nadchodzące".
    • Przycisk „Do Pulse (UWAGA) + push" w Pomysłach buduje teraz pełny opis wpisu: artysta, tytuł projektu, platforma/kategoria, termin i — jeśli skala supportu ≥7 — adnotację „🔥 to duży moment". Tytuł wpisu zaczyna się od „⚠️ Wydawca podbija pomysł: …".
    • Powiadomienie do artysty kieruje go bezpośrednio do `/artist/ideas` z przedrostkiem `[Tytuł projektu]`, więc od razu wiadomo, czego dotyczy. Ponowne kliknięcie odświeża treść wpisu w Pulse, nie tworzy duplikatu.
  602. v1.95.016 czerwca 2026, 16:00

    Pomysły: czytelniejsze karty + wątek w Inbox + skrót do Pulse

    • Na liście pomysłów imię artysty i tytuł projektu są teraz wyraźnie wybite u góry karty (osobne „chipy" z ikonami 👤 i 💿) — nie zlewają się już z resztą metadanych.
    • Kategoria, platforma i termin (z relatywnym „dziś / jutro / za 3 dni / 5 dni temu") dostały ładniejsze, kontrastowe pigułki; przeterminowane terminy świecą na różowo.
    • Pojawił się przycisk „Wątek w Inbox" — jednym kliknięciem zakładasz (lub otwierasz istniejący) wątek w Messengerze dotyczący konkretnego pomysłu, z artystą i adminami w środku. Jeśli wątek już istnieje, karta pokazuje znacznik „💬 Wątek aktywny".
    • Admin ma nowy przycisk „Do Pulse (UWAGA) + push" — wysyła pomysł jako wpis warning do Pulse danego projektu i od razu pinguje artystę powiadomieniem. Powtórne kliknięcie ponawia push, nie duplikuje wpisu.
  603. v1.94.116 czerwca 2026, 15:00

    Powiększanie obrazków + okładki w Messengerze

    • Klik w obrazek w wiadomości (Messenger, wątki, podgląd załącznika przed wysłaniem) otwiera duży podgląd z przyciskami „Pobierz" i „Otwórz w nowej karcie".
    • Na liście wątków Messengera zamiast inicjałów „MY / GA" widać okładkę projektu (lub avatar artysty jako fallback) z małą ikoną płytki 💿 w rogu — od razu wiadomo, że to wątek dotyczący konkretnej premiery.
    • Crew Chaty (Label / Connect / HUB Support) zachowują swoje ikony, więc nadal łatwo odróżnić rozmowy zespołowe od release'owych.
  604. v1.94.016 czerwca 2026, 14:00

    Admin: dzwonek nowych rejestracji obok Messengera

    • W górnym pasku admina pojawiła się nowa ikonka 👤➕ z licznikiem nowych rejestracji z ostatnich 30 dni — artystów, dziennikarzy i zwykłych użytkowników w jednym miejscu.
    • Każda pozycja ma kolorowy tag roli (Artysta / Dziennikarz / Użytkownik / Admin), nazwę profilu (jeśli jest), e-mail, providera (Google / e-mail) i czas od rejestracji.
    • Klik w pozycję otwiera panel Użytkownicy z pre-filtrowanym wyszukiwaniem po e-mailu i przewija ekran do podświetlonego wiersza tego konta — od razu można nadać rolę / podpiąć artystę / zablokować.
    • Licznik nieprzeczytanych jest lokalny (per przeglądarka admina) — otwarcie widżetu resetuje znacznik.
  605. v1.93.116 czerwca 2026, 13:00

    Widżet Messengera: klik w wiadomość otwiera właściwy wątek

    • Klik w wiadomość w widżecie Messengera (ikonka 💬 obok dzwoneczka) prowadzi teraz prosto do konkretnego wątku, a nie tylko do listy.
    • Działa zarówno po stronie admina, jak i artysty — link niesie ze sobą ID wątku w adresie (`?thread=…`), więc da się go też zakładkować/forwardować.
  606. v1.93.016 czerwca 2026, 12:00

    Admin: podłączanie istniejących kont pod dostęp PRESS

    • Nowy przycisk „Podłącz konto użytkownika" w /admin/pressroom/journalists — pozwala znaleźć konto auth (po e-mailu / nazwisku) i podpiąć je pod dziennikarza dla wybranej stacji / redakcji.
    • Dwa warianty: (1) utwórz nowy profil dziennikarza dla danego kanału, albo (2) podepnij konto do istniejącego rekordu w bazie — z opcjonalną zmianą kanału.
    • Po podpięciu konto dostaje rolę „journalist" (user_roles) i może od razu logować się do PressRoomu — koniec zgadywania, dlaczego ktoś zarejestrowany przez zwykłe /login widnieje jako „user" zamiast „press".
    • Na liście dziennikarzy każdy rekord bez podpiętego konta ma teraz mały przycisk „Podłącz konto" w wierszu — szybkie uzupełnienie braków po imporcie / magic linkach.
  607. v1.92.016 czerwca 2026, 10:30

    Komentarze do pomysłów + brakujące powiadomienia (Pulse, Pomysły)

    • Każdy pomysł w sekcji Pomysły ma teraz rozwijany wątek komentarzy 'artysta ↔ wydawca' (na wzór komentarzy w Pulsie) — z licznikiem, możliwością usuwania własnych wpisów i auto-powiadomieniem drugiej strony.
    • Nowy typ powiadomień 'Komentarz w Pulsie' — wpada do dzwoneczka i pusha, gdy ktoś z drugiej strony wątku coś dopisze pod wydarzeniem Pulse (dotąd komentarze leciały po cichu).
    • Nowe typy powiadomień 'Nowy pomysł od wydawcy', '⭐ Wydawca rekomenduje pomysł' i 'Komentarz pod pomysłem' — wcześniej były wrzucane do kolejki, ale dzwoneczek ich nie pokazywał. Teraz mają ikony, opisy i klik prowadzi prosto do /artist/ideas lub /admin/ideas.
    • Wszystkie cztery nowe rodzaje powiadomień są też w /notification-settings — można niezależnie włączać/wyłączać in-app, e-mail i push.
  608. v1.91.116 czerwca 2026, 09:30

    Powiadomienia: bez duplikatów wiadomości z Messengera

    • Dzwoneczek powiadomień nie pokazuje już wpisów 'nowa wiadomość' — listę wątków masz w ikonce Messengera obok (z licznikiem).
    • Powiadomienia push o nowych wiadomościach działają jak wcześniej — zmieniamy tylko widżet w HUB-ie, żeby nie dublować tej samej informacji w dwóch miejscach.
  609. v1.91.016 czerwca 2026, 08:30

    Messenger w górnej belce + drobne poprawki UX

    • Górny pasek (admin i artysta) ma nową ikonkę Messengera 💬 z licznikiem nieprzeczytanych i podglądem 12 ostatnich wątków — działa dokładnie tak jak dzwoneczek powiadomień, z bezpośrednim linkiem do pełnego Messengera.
    • W pasku zniknął przycisk 'Crew chat' (został tylko w sekcji Connect — to ten sam czat). 'Messenger' jest teraz przyciskiem pierwszego rzędu zamiast w drugim pasku, a z dolnej nawigacji mobilnej zniknął duplikat (Messenger osiągasz z górnej belki).
    • Lista wątków po lewej podświetla aktualnie otwarty wątek — koniec zgadywania który jest aktywny.
    • Otwierany wątek zawsze startuje na samym dole konwersacji (nie 'gdzieś w środku'), kolejne wiadomości doklejają się płynnie.
    • Plan wydawniczy /admin/releases/plan: sticky backlog respektuje wysokość headera — pierwsza karta nie chowa się już pod górnym paskiem i da się ją przeciągnąć.
  610. v1.90.016 czerwca 2026, 00:30

    Reakcje dziennikarzy z PressRoomu — pełna widoczność dla admina

    • Plan wydawniczy admina (/admin/releases/plan): każda kafelka premiery pokazuje teraz mini-chipy 🔥/❤️/👍/👎 z liczbą reakcji dziennikarzy. Klik = pełna lista kto i kiedy ocenił.
    • Lista singli PressRoomu (/admin/pressroom/singles): dodajemy chipy reakcji w rogu okładki — od razu widać, które single rozpalają redakcje.
    • Nowa sekcja 'Hot list redakcji' na górze /admin/pressroom: TOP nadchodzących premier wg sumy reakcji (top×4 + interested×3 + ok×2 − pass), z ostatnim 'Dla mnie hit' i scorem.
    • Powiadomienia dla wszystkich adminów: każdy nowy 'Dla mnie hit' wpada do skrzynki (debounce 24h per singiel), a przy 3× top osobny, mocniejszy alert wysyłany raz na singla.
  611. v1.88.1315 czerwca 2026, 17:40

    Wgrywanie nagrań: m4a z dyktafonu i inne formaty audio/wideo

    • Artist pitch, wywiad i ContentDeliveryRecorder przyjmują teraz pełen zestaw formatów audio i wideo, nie tylko mp3.
    • Pliki m4a z dyktafonu w iPhonie/Androidzie, a także aac, wav, ogg, opus, flac, amr, 3gp, mp4, mov, webm — wszystkie są poprawnie pokazywane w wyborze pliku na telefonie.
    • Wcześniej akceptowaliśmy tylko 'audio/*', co na części mobilnych systemowych pickerów ukrywało m4a z aplikacji nagrywającej.
  612. v1.88.915 czerwca 2026, 15:40

    Pressroom: lepsze dane heatmapy odsłuchów

    • Wyniki serwisu nie pokazują już mylącego komunikatu o braku odsłuchów: gdy nie ma heatmapy per sekunda, pokazujemy istniejące dane z progów 0/25/50/75/100%, te same które widać przy feedbacku dziennikarzy.
  613. v1.88.816 czerwca 2026, 15:25

    Pressroom: uprawnienia zapisu heatmapy per sekunda

    • Uzupełniliśmy uprawnienia zapisu dla technicznej tabeli heatmapy per sekunda, żeby nowe odsłuchy mogły dopisywać dokładniejsze punkty wykresu.
    • To nie oznacza, że wcześniejsze odsłuchy zniknęły — dane progowe 0/25/50/75/100% były i nadal są dostępne w feedbacku oraz analityce.
  614. v1.88.415 czerwca 2026, 23:25

    Messenger: Twoje wiadomości po prawej z gradientem

    • W wątkach release (A&R) Twoje wiadomości są teraz po prawej i mają gradientowe tło, a rozmówcy po lewej w neutralnym dymku.
    • Działa z perspektywy admina i artysty — wcześniej admin zawsze widział swoje wiadomości po lewej.
  615. v1.88.215 czerwca 2026, 22:45

    Naprawiony dymek czatu

    • Kliknięcie ikonki czatu nie powinno już wywalać aplikacji błędem presence — wszystkie statusy online korzystają z jednego bezpiecznego kanału realtime.
  616. v1.88.115 czerwca 2026, 22:30

    Strona błędu pokazuje teraz szczegóły

    • Gdy aplikacja wywali ekran „This page didn't load" — pokazujemy teraz rozwinięty panel „Szczegóły błędu" z treścią i fragmentem stack trace.
    • Łatwiej zgłosić problem (np. po kliknięciu w wątek w dymku) — wystarczy skopiować zawartość panelu.
  617. v1.88.015 czerwca 2026, 22:00

    Lepsza jakość głosówek + zaostrzone bezpieczeństwo plików czatu

    • Głosówki w czatach release'ów i w Messengerze brzmią teraz na poziomie WhatsAppa/Messengera — włączyliśmy redukcję szumu, echo cancellation i automatyczne wzmocnienie głosu.
    • Nagrywamy w mono 48 kHz, kodek Opus 64 kb/s (na iPhonie AAC) — czysty głos, mniejsze pliki, bez przepełnienia bufora przy długich nagraniach.
    • Zaostrzyliśmy politykę bezpieczeństwa bucketa „release-chat": pliki trzymane są per zgłoszenie i walidowane RLS-em (tylko właściciel releasu + A&R mają dostęp).
  618. v1.87.015 czerwca 2026, 20:30

    Okienka czatu na dole ekranu (jak w Messengerze)

    • Nowe okienka czatu w stylu Facebook Messenger — wyskakują od dołu po prawej stronie na desktopie i tablecie. Każde okienko to pełnoprawna rozmowa: głosówki, foto, video, wklejanie obrazków, reakcje, edycja wiadomości.
    • Włączasz je jednym kliknięciem przycisku „Okienka" w nagłówku dymka komunikatora (lewy dolny róg). Ustawienie zapamiętuje się w przeglądarce. Możesz mieć otwarte do 3 rozmów obok siebie + dodatkowe zwinięte „chat heads".
    • Po włączeniu — klikasz wątek w dymku, a on otwiera się jako pływające okienko zamiast pełnoekranowo w dymku. Działa zarówno dla A&R/admina, jak i dla artystów.
  619. v1.85.015 czerwca 2026, 17:00

    Pełny Messenger w widoku www

    • Sekcja „Skrzynka" → zakładka „Wiadomości" to teraz pełen Messenger w wersji www: lista wszystkich wątków po lewej (A&R, Crew Chat, zespół), rozmowa po prawej, te same głosówki / foto / wideo / wklejanie co w dymku.
  620. v1.84.215 czerwca 2026, 16:00

    Powiadomienia o odpowiedziach na feedback

    • Gdy wydawca odpowie na zgłoszenie / pomysł / buga artysty — artysta dostaje dzwoneczek w HUB-ie i push (jeśli ma włączone powiadomienia w apce).
    • Dodatkowo, jeśli mamy maila artysty, wysyłamy też e-mail z treścią odpowiedzi i linkiem prosto do rozmowy w HUB-ie.
    • Gdy artysta odpisze pod swoim feedbackiem — wszyscy adminowie dostają dzwoneczek + push z linkiem `/admin/connect/feedback`.
    • Nowy typ powiadomienia „Odpowiedź na feedback" w Ustawieniach → Powiadomienia (domyślnie: dzwoneczek + push włączone, mail wyłączony).
  621. v1.84.115 czerwca 2026, 15:30

    Push z messengera domyślnie włączony

    • Po włączeniu powiadomień w apce od razu dostajesz pushe o nowych wiadomościach i wzmiankach (@) z messengera — bez dodatkowego klikania w Ustawieniach.
    • Każdy może to wyłączyć indywidualnie w Ustawieniach → Powiadomienia.
    • Wszystkim, którzy już mieli zasubskrybowane pushe, włączyliśmy te dwa kanały od ręki (zachowując inne indywidualne ustawienia).
  622. v1.84.015 czerwca 2026, 14:30

    Crew Chat z głosówkami i foto/wideo + odpowiedzi na feedback artystów

    • Crew Chat, ogłoszenia, dyskusje i DM dostały to samo, co bąbelek messengera: przycisk zdjęcie/wideo, nagrywanie głosówki (mikrofon) i wklejanie obrazów ze schowka.
    • Załączniki audio i wideo są od razu odtwarzane w wiadomości; limit 25 MB, do 5 plików na wiadomość.
    • W `/admin/connect/feedback` pod każdym pomysłem/zgłoszeniem błędu pojawiła się rozmowa — wydawca może odpisać artyście jednym kliknięciem.
    • Artysta widzi odpowiedzi wydawcy w sekcji „Twoje zgłoszenia i odpowiedzi wydawcy” na `/welcome` i może kontynuować rozmowę z poziomu HUB-a.
  623. v1.83.2015 czerwca 2026, 14:00

    Messenger: wklejanie obrazów ze schowka (Ctrl+V)

    • W bąbelku messengera możesz teraz wkleić zrzut ekranu lub skopiowany obrazek bezpośrednio w pole wiadomości — załącznik wgrywa się sam.
    • Działa zarówno na Windows (Ctrl+V), jak i macOS (Cmd+V); limit 10 MB jak przy ikonce dodawania pliku.
  624. v1.83.1915 czerwca 2026, 13:30

    Edytor projektów: lista po lewej przypięta na desktopie

    • Lista projektów w panelu admina (`/admin`) jest teraz **sticky** na desktopie — zostaje widoczna przy scrollowaniu szczegółów projektu.
    • Nie musisz wracać na górę, żeby przełączyć się na inny singiel — wystarczy kliknąć w przypiętej liście po lewej.
    • Na mobile zachowanie bez zmian (lista i szczegóły układają się jedna pod drugą).
  625. v1.83.1815 czerwca 2026, 13:00

    Live-analytics newslettera: wyniki per utwór zamiast listy linków

    • W panelu live-analytics newslettera tabela „Kliknięcia per link" została zastąpiona **„Wyniki per utwór"** — wszystkie dedykowane linki do tego samego singla są agregowane w jeden wiersz.
    • Dla każdego utworu widzisz od razu sumę kliknięć, odsłuchów, pobrań, feedbacków i obserwacji — bez ręcznego sumowania kilkudziesięciu linków.
    • Linki niepowiązane z utworem (np. `hub.idrecords.pl/press`) lecą do jednego zbiorczego wiersza na dole, żeby nie zaśmiecać widoku.
  626. v1.83.1715 czerwca 2026, 12:30

    Kanban premier: sticky pasek nawigacji etapów

    • Nad kolumnami tablicy `/admin/releases/kanban` jest teraz **sticky pasek z chipami etapów** (Szkic, Wysłane, Review, … Premiera) — klik przewija planszę od razu do wybranej kolumny, bez scrollowania w dół do poziomego paska przeglądarki.
    • Po bokach paska są **strzałki ◀ ▶** — przewijają o ~80% szerokości ekranu, gdy chcesz po prostu „rzucić okiem" na kolejne etapy.
    • Aktywny chip podświetla się automatycznie w miarę jak przewijasz planszę — wiesz gdzie jesteś.
  627. v1.83.1615 czerwca 2026, 12:00

    Kanban premier: wydane tytuły lądują w „Premierze", nie w „Planowaniu"

    • Na tablicy `/admin/releases/kanban` premiery, których data wydania już minęła (≤ dziś w strefie PL), automatycznie pojawiają się w kolumnie **„Premiera"** — niezależnie od zapisanego w bazie statusu (`planning`, `scheduled` itp.). Wcześniej wisiały w „Planowaniu", mimo że wszędzie indziej były oznaczone jako wydane.
  628. v1.83.1515 czerwca 2026, 11:30

    Radio (WARM): auto-rotacja tokena + świeższe dane przy „Zaktualizuj wszystko"

    • **Koniec z ręcznym wklejaniem tokena WARM co 24h.** Po zapisaniu sekretów `WARM_LOGIN_EMAIL` i `WARM_LOGIN_PASSWORD` system sam loguje się do WARM (Auth0), pobiera nowy access token i zapisuje go jako `WARM_API_TOKEN`. Cron robi to co 6h, więc statystyki radiowe działają też w weekend bez Twojej ingerencji.
    • W panelu admina (karta „WARM API — token") jest nowa sekcja **„Auto-logowanie (login + hasło)"** ze statusem sekretów i przyciskiem **„Zaloguj i pobierz nowy token"** — przydatne, gdy chcesz wymusić rotację natychmiast.
    • Pole „wklej ręcznie" zostaje jako fallback — nic Ci nie zabieramy.
    • Naprawione **„Zaktualizuj wszystko"** w statystykach radiowych: ostatnie 2–3h emisji nie wpadały, bo `untilDate` był liczony w UTC i ucinał dzień. Teraz używamy strefy `Europe/Warsaw` z marginesem na jutro — pobierane są wszystkie emisje aż do bieżącej godziny.
  629. v1.83.1415 czerwca 2026, 11:00

    Crew Chat: nowy kanał „HUB Support" + wklejanie screenów ze schowka

    • Trzeci stały kanał Crew Chat — **HUB Support**. Tu Wydawca informuje o zmianach i poprawkach stricte w Hubie, a Artyści zgłaszają uwagi i propozycje w jednym miejscu. Widać go na `/connect/chat` (zakładka „HUB Support") oraz w bańce messengera obok kanałów Label i Connect.
    • W każdym wątku messengera (czaty premier, DMy, Crew Chat) działa teraz **Ctrl/⌘+V** dla obrazków ze schowka — wklejony screen ląduje od razu jako załącznik, bez zapisywania pliku na dysk.
  630. v1.83.1314 czerwca 2026, 02:25

    Social (label): generator grafik znów zapisuje wyniki + odzyskane sieroty

    • Naprawione generowanie grafik w `/admin/social/new` jako label — insert do `social_assets` ustawiał `artist_id` razem z `owner_kind='label'` i wpadał na CHECK `social_assets_owner_check`. Teraz przy scope label wymuszamy `artist_id = NULL`, a powiązanie z artystą/releasem żyje w `brief.targetArtistId` / `brief.targetReleaseId`.
    • Sześć grafik wygenerowanych wcześniej (kredyty AI już poszły) zostało odzyskanych ze storage `social-assets/label/*` i dopisanych do bazy jako `draft` — od razu widać je w „Ostatnich generacjach" labelu.
    • Ścieżka artystyczna (`/admin/social/new` jako artysta, hub artysty) była i jest OK — błąd dotyczył wyłącznie generatora label.
  631. v1.83.1213 czerwca 2026, 22:55

    Profil artysty: koniec z wyzerowywaniem przy częściowym zapisie

    • Zapis profilu (`upsertArtistProfile`) **mergeuje** top-level klucze w `personality` i `contact` z istniejącym wierszem zamiast nadpisywać cały JSONB — partial save (np. tylko slider zaangażowania albo drugi tab) nie kasuje już reszty pól.
    • Każda zmiana na `artist_profiles` zostawia teraz snapshot poprzedniej wersji w nowej tabeli `artist_profile_history` (trigger BEFORE UPDATE). Dzięki temu w razie kolejnej wpadki da się wrócić do poprzedniej wersji profilu.
    • Dotyczy m.in. zgłoszeń MYK / Conki z 12–13.06 — od teraz częściowe zapisy są bezpieczne.
  632. v1.83.1113 czerwca 2026, 20:10

    Edytor kanałów: edytowany kanał wskakuje na górę sekcji

    • Edycja dowolnego pola kanału (waga, support, label, nacisk, komentarz itd.) przerzuca teraz wiersz na **samą górę swojej sekcji** zamiast spychać na dół.
    • Pod spodem: ustawiamy `position = min(position w bucketcie) − 1` i bumpujemy `last_activity_at`, więc i główne sortowanie po pozycji, i fallback po świeżości działają zgodnie z intuicją.
    • Ręczna kolejność z drag&drop / strzałek dalej obowiązuje — kolejna edycja po prostu „odświeża" kanał na szczyt, tak jak nowe wpisy.
  633. v1.83.1013 czerwca 2026, 18:50

    Mobile PressRoom: klikalne karty zamiast uciętych tabel

    • **Lista wyników newslettera** na telefonie: zamiast tabeli z uciętą prawą kolumną — klikalne karty (cała powierzchnia otwiera live-statsy, tap target ≥64px).
    • **Lista dziennikarzy** na telefonie: klikalne karty z imieniem, mailem, statusem, kanałem i licznikiem aktywności — wystarczy puknąć, żeby otworzyć edycję. Na desktopie cały wiersz tabeli też jest klikalny.
    • Panel **live analytics** dostał `min-w-0` na kontenerach, więc szerokie tabele (kliknięcia per link, odbiorcy, mapowanie kanałów) scrollują tylko siebie, a nie całą stronę.
  634. v1.83.913 czerwca 2026, 00:30

    Newsletter live-stats: porządek na mobile + pełny live-feed

    • Live-feed pokazuje teraz **wszystkie zarejestrowane eventy** (cap 1000) zamiast „ostatnich 40" — przewijasz do końca i widzisz całą historię, bez doładowywania.
    • Szerokie tabele (kliknięcia per link, odbiorcy, mapowanie do kanałów) dostały **poziomy scroll na wąskich ekranach** + `overscroll-contain`, dzięki czemu telefon nie miesza scrolla strony ze scrollem tabeli.
    • Wybrany newsletter na liście podświetlamy spokojnym **fioletem (primary)** zamiast krzyczącego pomarańczu z tokenu `accent` — pasuje do reszty interfejsu.
    • Drobne porządki na mobile: `min-w-0` na kolumnach edytora, większy kontener live-feed (do 70% wysokości ekranu na telefonie).
  635. v1.83.812 czerwca 2026, 17:45

    PressRoom: poprawiona skala punktów za odsłuch i pobranie (kwadratowo względem skali kanału)

    • Base support za **odsłuch** i **pobranie** liczymy teraz **kwadratowo względem skali kanału** (`factor × scale_max²`), żeby kanał ogólnopolski wnosił 4× więcej niż regionalny.
    • Skala 5 (regionalny): **odsłuch = 0,25**, **pobranie = 0,5**.
    • Skala 10 (ogólnopolski): **odsłuch = 1,0**, **pobranie = 2,0**.
    • Tą samą logiką (×scale_max²) skalują się też: accept, feedback „zagram"/„może", polecenia redakcji i pobrania materiałów (cover/press kit/zdjęcia).
  636. v1.83.712 czerwca 2026, 17:00

    PressRoom: odsłuchy i pobrania z newslettera automatycznie dopisują się do kanałów projektu

    • Naprawiony **most PressRoom → kanały projektu**: dziennikarza mapujemy najpierw przez **primary `journalist_channels` → `channel_master`**, dopiero potem przez stare pole `outlet`. Dzięki temu odsłuchy/pobrania (np. Conki → Czwórka) lądują w tym samym kanale, w którym pojawiają się ręczne emisje WARM.
    • Auto-utworzone kanały zapisują `channel_master_id`, więc kolejne eventy trafiają zawsze w jeden kanał (bez gimnastyki na nazwach).
    • **Feedback** dziennikarza („zagram"/„może"/„nie") teraz też podbija/promuje kanał na listę aktywnych, a pobrania okładki/presskitu/zdjęć dodają lekki sygnał aktywności.
    • Nowa sekcja w live-stats newslettera: **„Mapowanie do kanałów projektu"** — widać co który event zrobił z kanałem, brakujące mapowania można dopiąć ręcznie z autocomplete katalogu, a przycisk **„Przelicz"** robi backfill ostatnich eventów.
  637. v1.83.612 czerwca 2026, 15:45

    Live-stats newslettera: rozpoznawanie singla także z linków magicznych /press/m/<token>

    • Linki w newsletterze idą jako spersonalizowane **magic-linki** (`/press/m/<token>`), więc dotąd w „Kliknięcia per link" i live feedzie widać było tylko surowe URL-e. Teraz token jest rozwijany do `artist-slug/track-slug` i dopasowywany do singla — wszędzie pojawia się **🎵 Artysta — Tytuł**.
    • Działa też dla post-klikowych eventów (odsłuch, pobranie, feedback) — atrybucja po ostatnim kliknięciu dziennikarza.
  638. v1.83.512 czerwca 2026, 15:00

    Wyniki newslettera: nazwy piosenek zamiast surowych linków + krok „Obserw." w lejku

    • W **live feedzie** i w tabeli **„Kliknięcia per link"** zamiast długich, indywidualnych URL-i widać teraz **🎵 Artysta — Tytuł**. Pełny link nadal jest pod tooltipem, ale od razu wiadomo, czego dotyczy event.
    • W **lejku konwersji** doszedł 7. krok **„Obserw."** — liczy unikalnych dziennikarzy, którzy po kliknięciu zaczęli obserwować singiel lub artystę (wcześniej dane były tylko w kafelku na dole).
    • Kafle „Ukończyło / Pobrania / Feedback / Obserw. / Polecenia" rozłożone teraz na 5 kolumn na desktopie — żaden nie wypada poza ekran.
  639. v1.83.412 czerwca 2026, 14:15

    Newsletter: łagodne tempo 5–10 maili na minutę z live podglądem

    • Cron wysyłki przyspieszony z **co 5 min** na **co 1 min** — każda paczka widoczna w live-stats minuta po minucie, koniec długiego czekania na aktualizację.
    • Paczka zmniejszona z 10–15 do **5–10 maili na tick** i tylko jeden sub-batch na minutę — łagodniej dla dostawcy, łatwiej ugasić ewentualny pożar przyciskiem „Pauza".
    • Bezpieczniki anty-duplikatowe (atomic claim, pre-check w logu EmailLabs po journalist_id i adresie, insert-only reconcile) bez zmian.
  640. v1.83.312 czerwca 2026, 13:30

    Newsletter: atomowy claim odbiorcy + ostrzeżenia o duplikatach w live-stats

    • Wybieranie odbiorców do wysyłki jest teraz **atomowe**: rekord najpierw przechodzi `queued → sending` jednym warunkowym UPDATE, dopiero potem leci wysyłka. Dwa równoległe ticki crona nie mogą już złapać tej samej osoby.
    • Pre-check przed wysyłką sprawdza log EmailLabs **po journalist_id i po adresie email** (nie tylko po recipient_id). Jeśli ktoś już dostał maila w tej kampanii, fizyczna wysyłka jest pominięta i status porządkowany na `sent`.
    • Na początku każdego ticka „odklejamy" ewentualne osierocone `sending` z powrotem do `queued` — kolejka nigdy się nie zacina.
    • Finalizacja kampanii (`status=sent`) wymaga teraz `queued=0` **i** `sending=0` — nie zamykamy wysyłki póki cokolwiek jest jeszcze w locie.
    • Live-stats: nowy baner ostrzegawczy gdy dostawca przyjął więcej maili niż unikalnych odbiorców — z listą adresów, które dostały po 2/3 maile. KPI „Wysłane" pokazuje też liczbę zaakceptowanych przez providera (np. `19 z 397 · provider: 37`).
    • Tracking open/click działa też dla maili wysłanych przed pauzą — każde otwarcie/klik dolicza się do tej samej kampanii i odświeża live-stats.
  641. v1.83.212 czerwca 2026, 12:30

    Newsletter: koniec duplikatów wysyłki — bezpieczne wznowienie po pauzie

    • Naprawiony krytyczny bug: reconcile odbiorców przy każdym ticku crona robił `upsert` ze statusem `queued`, co cofało już wysłanych z powrotem do kolejki i powodowało **drugą wysyłkę do tych samych ludzi**. Teraz dodajemy tylko brakujące rekordy (insert-only).
    • Dodany **pre-check po logu EmailLabs** tuż przed wysyłką — jeśli ten konkretny odbiorca ma już potwierdzenie wysyłki tego newslettera, fizyczna wysyłka jest pomijana i status porządkowany na `sent`. „Pas i szelki" przed jakimkolwiek duplikatem.
    • Oznaczanie `sent` / `failed` po wysyłce jest teraz **warunkowe** (`.eq("status","queued")`) — równoległy tick nie nadpisze poprawnego stanu.
    • Licznik „wysłane" w live analytics liczy też rekordy z wypełnionym `sent_at` (nie tylko ze statusem `sent`) — UI nie cofa się przy chwilowych niespójnościach.
    • Posprzątana bieżąca paused-kampania: **19 osób** faktycznie dostarczonych przez EmailLabs oznaczonych jako `sent`, kolejka spadła do **378**. Po **„Wznów wysyłkę"** żaden z 19 nie dostanie drugiego maila.
  642. v1.83.112 czerwca 2026, 11:00

    Newsletter: „Wyślij teraz" startuje natychmiast + szybsze live analytics

    • Po kliknięciu **„Wyślij teraz"** kick-off do crona leci teraz w tle (`fire-and-forget`) — UI nie czeka już 2–3 min na zakończenie pierwszej tury z jitterem, tylko od razu przeskakuje na zakładkę live.
    • Live analytics newslettera odświeża się **co 3 s** dopóki status to `scheduled` / `sending` (zamiast co 15 s) — liczniki **WYSŁANE / OPEN / CLICK** tykają na żywo bez czekania na realtime.
    • Po wysyłce wracamy do **15 s** (dla `sent`) i **60 s** (dla `draft`/`paused`), żeby nie obciążać niepotrzebnie bazy.
  643. v1.83.012 czerwca 2026, 04:00

    Newsletter: awaryjna PAUZA i wznowienie wysyłki w live analytics

    • W panelu **live analytics newslettera** (`/admin/pressroom/newsletter-stats` → pojedynczy newsletter) pojawił się przycisk **„Pauza wysyłki"** — natychmiast wstrzymuje kolejne paczki cronowe, gdy coś zacznie się sypać tuż po starcie.
    • Po pauzie status zmienia się na **`paused`** — cron pomija newsletter, ale kolejka `queued` zostaje nienaruszona (nikt nie dostaje duplikatu, nikt nie ginie).
    • Przycisk **„Wznów wysyłkę"** wraca status na `sending` (jeśli zostali jeszcze odbiorcy w kolejce) lub `scheduled` (jeśli wysyłka nie zaczęła się) i przesuwa `scheduled_for` na teraz — najbliższy tick crona dokończy paczki.
    • Zabezpieczenie pod duże wysyłki (np. 400+ odbiorców) — admin ma awaryjny stop-button bez zaglądania w bazę.
  644. v1.82.012 czerwca 2026, 03:00

    Plan wydawniczy: szybki przełącznik widoczności premiery w PressRoom

    • Przy każdej karcie singla w adminowym **Planie wydawniczym** (`/admin/releases/plan`) jest teraz chip **„w PressRoom" / „ukryte"** — jedno kliknięcie chowa premierę przed dziennikarzami w `/press/plan`.
    • Przydatne, gdy materiał został już rozesłany **indywidualnie do redakcji** i nie chcesz, by dublował się w publicznym Planie PressRoomu.
    • Stan jest natychmiast widoczny po stronie dziennikarzy — ukryte premiery znikają z listy nadchodzących i z odtwarzacza fragmentów.
  645. v1.81.012 czerwca 2026, 02:00

    PressRoom: dziennikarze słyszą tylko fragment TikTok (snippet) — nie cały utwór

    • Odtwarzacz w **Planie wydawniczym** (`/press/plan`) i na **stronie singla** (`/press/:artist/:track`) jest hard-clampowany do wycinka A→B z presskitu — przewijanie poza okno jest zablokowane, a po dojściu do końca fragmentu odtwarzanie wraca do startu.
    • Czas pokazuje się **relatywnie do fragmentu** (np. `0:00 / 0:15 · fragment`) — dziennikarz nie widzi pełnej długości utworu.
    • W kroku **„TikTok & ocena"** w presskicie pojawia się wyraźna notka, że ten sam wycinek jest **przedpremierowym demo dla redakcji** — warto wybrać najmocniejszy moment.
    • Adminowie nadal słyszą całość do QA (podgląd 1:1), restrykcja dotyczy tylko widoku dziennikarzy.
  646. v1.80.112 czerwca 2026, 01:30

    Modal „Co nowego?" tylko po zalogowaniu — pressroom bez powiadomień o wersji

    • Modal **„Co nowego?"** nie pojawia się już w żadnej części pressroomu (`/press` i podstrony) — dziennikarze nie dostają powiadomień o nowych wersjach HUBa.
    • Na publicznym landingu (`/`) modal też się nie pokazuje — wyskakuje **dopiero po zalogowaniu** do panelu artysty lub admina.
    • Pełną historię wersji nadal można otworzyć ręcznie pod **`/changelog`** (link w stopkowym badge’u wersji).
  647. v1.80.012 czerwca 2026, 01:00

    Tracking obserwacji singla i artysty z newslettera + magic linków

    • Każde kliknięcie **„Obserwuj ten singiel"** / **„Obserwuj artystę"** zapisuje teraz event `follow_added` / `follow_removed` w `press_events` z atrybucją do ostatniego kliknięcia newslettera lub otwarcia magic linka (30-dniowe okno) — dzięki temu wiemy, **który newsletter wygenerował obserwację**, nawet gdy dziennikarz jeszcze nie miał konta i wszedł z magic linka.
    • Live tracking newslettera (`/admin/pressroom/newsletter-stats/<id>`): nowy kafel **„Obserw. singiel / artysta"** w lejku konwersji, dodatkowa kolumna **„Obserw."** w tabeli „Kliknięcia per link", dzwoneczki przy odbiorcy oraz nowe eventy **„Zaczął obserwować" / „Przestał obserwować"** w Live Feedzie (z realtime push).
    • Statystyki serwisu prasowego (`/admin/pressroom/stats`): nowy kafel KPI **„Obserwacje (singiel/artysta)"** sumujący wszystkie follow’e per release — z normalnym filtrem źródła (newsletter / magic / serwis).
  648. v1.79.712 czerwca 2026, 00:30

    PressRoom landing: jasne CTA „Zaloguj się / Zarejestruj"

    • Przycisk **„Zaloguj się"** na stronie `/press` zmieniony na **„Zaloguj się / Zarejestruj"** — od razu widać, że nowy dziennikarz może założyć konto bez mailowania.
    • Drugi przycisk **„Poproś o dostęp"** (mailto) → **„Skontaktuj się z nami"** — kontakt mailowy zostaje tylko jako opcjonalny kanał, nie jedyna droga do dostępu.
  649. v1.79.612 czerwca 2026, 00:15

    Newsletter: wolniejsza wysyłka (~10 maili/min) dla lepszej dostarczalności

    • Paczki anti-spam zwolnione: **10–15 maili** co **40–90s** (wcześniej 10–20 co 30–90s).
    • Szacowany tempo w panelu analytics: **~10 maili/min** (zamiast ~15).
    • Cel: mniejsze ryzyko trafienia w filtry spam / rate-limit skrzynek odbiorczych przy zachowaniu ciągłego strumienia.
  650. v1.79.512 czerwca 2026, 00:10

    PressRoom strona singla: blok „Obserwuj" z sensownym opisem

    • Na stronie singla (`/press/:artist/:track`) blok po prawej zmienił nagłówek z „Powiadom mnie" na **„Obserwuj"** — singiel już jest wydany, więc komunikat „damy znać, gdy będzie dostępny" nie miał sensu.
    • Nowy opis: **„Damy znać, jak rozwija się ten singiel / artysta oraz gdy ukaże się jego nowy singiel."**
    • Przyciski przemianowane na **„Obserwuj ten singiel"** i **„Obserwuj <nazwa artysty>"** — spójnie z resztą PressRoom.
  651. v1.79.411 czerwca 2026, 23:55

    Newsletter: status „sending" + równoległa wysyłka w paczce

    • Po kliknięciu **„Wyślij teraz"** newsletter natychmiast przechodzi w status **`sending`** (pulsujący niebieski badge) zamiast wisieć na `scheduled` — od razu wiadomo, że wysyłka ruszyła.
    • Wewnątrz jednej paczki maile lecą **równolegle po 5 naraz** (zamiast jeden po drugim) — testowa wysyłka do 4 adresów schodzi w kilkanaście sekund, a nie „kilka minut" jak wcześniej. Anti-spam jitter (10–20 maili, pauza 30–90s między paczkami) bez zmian.
    • Cron zbiera też newslettery utknięte w `sending` z queued odbiorcami — jeśli worker padnie w trakcie, kolejny tick dokończy resztę zamiast zostawiać ostatniego maila „w kolejce" na zawsze.
    • W panelu analytics live podpis paczek poprawiony: **„po 10–20 maili co 30–90s · ~15 maili/min"** (było mylące „po 40 co 5 min · ~8/min").
  652. v1.79.311 czerwca 2026, 23:30

    PressRoom: „Obserwuj" zamiast „Powiadom mnie" na serwisie i feature

    • Na stronie **serwisu tygodnia** (`/press/tydzien/...`) i **feature** (`/press/feature/...`) etykieta nad przyciskami obserwowania artysty / singla zmieniona z „Powiadom mnie" na **„Obserwuj"** — krócej, jaśniejsza intencja.
  653. v1.79.211 czerwca 2026, 23:00

    Pulse: przywrócony przycisk „Filtruj" (PressRoom + Admin)

    • Na stronie **Pulse w PressRoom** (`/press/pulse`) panel filtrów (artyści / single) jest znów schowany domyślnie również na desktopie — pokazuje się dopiero po kliknięciu przycisku **„Filtruj"**. Wcześniej zajmował pół ekranu i blokował korzystanie ze strony.
    • To samo w **Pulse Admina** (`/admin/pulse`) — pasek wyboru artystów jest schowany, rozwija się przyciskiem **„Filtruj"** / **„Ukryj filtry"** (etykieta zamiast „Pokaż listę" / „Ukryj listę").
    • Aktywne filtry (chipsy z wybranymi artystami / singlami) nadal są zawsze widoczne — wiadomo co jest włączone bez rozwijania panelu.
  654. v1.79.111 czerwca 2026, 22:00

    PressRoom: „Powiadom mnie" w sidebarze + wyraźne przyciski obserwowania na serwisie tygodnia

    • Na stronie singla widget **„Powiadom mnie"** (obserwowanie artysty / singla) przeniesiony ze strefy okładki do **sidebara** (nad Presspack / Credits). Sekcja banerowa nie rozjeżdża się już w pionie i wygląda spójnie.
    • Na stronie serwisu tygodnia (`/press/tydzien/...`) **przyciski obserwowania** artysty i singla są teraz **wyraźnie wyeksponowane** — kolor (rose / primary), większy tap target, etykieta „Powiadom mnie" nad nimi, „Obserwujesz" po włączeniu.
    • Nic nie zmieniło się w układzie kart serwisu — przyciski mieszczą się w tej samej kolumnie po prawej.
  655. v1.79.011 czerwca 2026, 21:00

    Newsletter: nowy blok „Link do serwisu tygodnia" (magic-link per dziennikarz)

    • W edytorze newslettera pojawił się blok **„Link do serwisu tygodnia"** (kategoria *Akcja*). Wstawia w mail CTA prowadzący do pełnego serwisu (`/press/tydzien/<slug>`).
    • Każdy dziennikarz dostanie **swój dedykowany magic-link** — kliknięcie auto-loguje go w PressRoomie, więc wszystkie późniejsze akcje (odsłuchy, pobrania, feedback, heatmapa) trafią do jego profilu.
    • Domyślny tryb to **„Powiązany serwis (z ustawień maila)"** — używa numeru tygodnia ustawionego w polu „Powiązany serwis tygodniowy". Można też wybrać konkretny numer ręcznie.
    • Dwa style: **karta z opisem** (różowo-fuksjowa, z krótkim subtitle) lub **tylko przycisk**. Etykieta i opis edytowalne.
  656. v1.78.311 czerwca 2026, 20:30

    Newsletter: pełne nazwy artystów w blokach „Single” i „Sekcja singli”

    • Po wybraniu singla w newsletterze wpisuje się teraz **pełna nazwa artystów** (np. „Ewa Novel & Karolina Leszko”) zamiast tylko głównego wykonawcy. Dotyczy bloku **Single** i **Sekcja singli**.
    • Wcześniej brana była tylko nazwa z `release_smartlinks.artist_name` — teraz doklejamy też feature/współwykonawców z `release_artists`, identycznie jak na stronie tygodnia i serwisu.
  657. v1.78.211 czerwca 2026, 20:00

    PressRoom: mocniejsze CTA „obserwuj/powiadom" na singlu i feature'ach

    • Na **stronie singla** karta „Powiadom mnie" jest teraz bardziej wyrazista: gradient fuksja, pulsująca kropka „live", krótki opis („damy znać push/mailem"). Wciąż mieści się w tym samym miejscu w bocznej kolumnie.
    • Karta jest też widoczna w **podglądzie admina** (z plakietką „podgląd admina") — dzięki temu możesz zobaczyć, jak wygląda dla dziennikarzy bez logowania jako journalist.
    • Na **stronie feature'a/serwisu** mikro-pille „Artysta"/„Singiel" dostały mocniejszy kolor (różowo-fuksjowe), wyższe tap-targets (h-9, ≥36 px) i etykietę „Powiadom mnie" nad nimi. Layout kart bez zmian — nic się nie rozjeżdża.
  658. v1.78.111 czerwca 2026, 19:15

    PressRoom: losowy układ okładek + przyjazne nazwy pobieranych singli

    • **Banner strony tygodnia** i **strony feature'a** — okładki/zdjęcia układają się teraz **losowo** za każdym wejściem. Żaden artysta nie jest „zawsze pierwszy".
    • **„Wyróżnienia redakcji"** na stronach serwisu — kafelki singli pokazują się w **losowej kolejności** (filtry i liczniki działają jak dotąd).
    • Pobierane pliki audio z karty singla mają teraz nazwę w formacie **„Artysta - Tytuł (mp3).mp3"** zamiast surowej, kryptycznej nazwy z chmury (np. `1781179281900-ConKi__Feel_Alive`). Plik pobiera się przez blob, więc nazwa nadawana przez nas nadpisuje tę z CDN.
  659. v1.78.011 czerwca 2026, 18:30

    Pulse: TikTok + Przyrost w panelu singla, filtr artystów w Admin Pulse

    • Panel **wydajności na stronie singla** (PressRoom) ma teraz zakładkę **TikTok** obok Radia, Spotify i YouTube — oraz przełącznik **„Przyrost / Dziennie"**. Domyślnie pokazujemy **Przyrost** (skumulowany), żeby od razu było widać, jak rośnie zasięg.
    • Filtry na pasku **Pulse PressRoom** są teraz **od razu widoczne na desktopie** — bez konieczności klikania w „Filtry". Na mobile dalej zwijają się w przycisk.
    • Nowość: **filtr artystów w Admin Pulse** (`/admin/pulse`) — multi-select z wyszukiwarką, sticky panel u góry. Zawęża **feed wydarzeń** i **siatkę projektów** do wybranych artystów. Działa równolegle z filtrem po projekcie i kategoriach severity.
  660. v1.77.011 czerwca 2026, 17:00

    Zdjęcia artystów upiększają PressRoom — banery, karty i kolaże

    • Na **stronie singla** za hero/banerem pojawia się teraz wizerunkowe **zdjęcie artysty** (jeśli zostało wrzucone do materiałów). Priorytet: zdjęcie artystyczne → personalne → ogólne → spotify. Tytuł, nazwa artysty i CTA pozostają w pełni czytelne dzięki gradientowi.
    • Karta **„Słowo od artysty"** ma delikatne tło ze zdjęcia artysty — kontekst wizualny zamiast pustego gradientu.
    • Na stronie **feature'a** każda karta singla wyświetla zdjęcie artysty jako subtelne tło (gdy istnieje), a kolaż w hero **strony tygodnia** preferuje zdjęcia wizerunkowe zamiast samych okładek — wizerunkowa wisienka na torcie.
    • Bez zmian funkcjonalnych w generatorach materiałów — jeśli singiel nie ma zdjęć, wszystko działa jak dotąd (rozmyta okładka jako tło).
  661. v1.76.211 czerwca 2026, 16:15

    PressRoom: auto LIVE po premierze + nowa etykieta PRZED PREMIERĄ

    • Badge statusu na stronie singla **automatycznie przełącza się na LIVE** („● LIVE", zielony), gdy data premiery minęła — niezależnie od ręcznego statusu w panelu admina.
    • Dla nadchodzących singli zamiast „EMBARGO" pokazujemy teraz **„PRZED PREMIERĄ"** (bursztynowy) — bardziej przyjazny i precyzyjny komunikat dla dziennikarzy.
  662. v1.76.111 czerwca 2026, 15:40

    Plan wydawniczy: pełne tiery + skala nasycenia do wagi 20

    • Picker tieru przy karcie singla w **Planie wydawniczym** ma teraz **wszystkie poziomy** prognozy: **X+, X, H+, H, S+, S, A+, A, B+, B, C+, C** (plus „wyczyść"). Każdy poziom ma swój kolor (X — bursztyn, H — fuksja, S — fiolet, A — błękit, B — zieleń, C — szary).
    • Pasek **„Nasycenie tygodnia"** został przeskalowany — maks. waga to **20** zamiast 14, a progi „ok / tight / full" są bardziej rozsądne. Dwa H w tygodniu nie wbijają od razu paska na czerwono.
    • Wagi nowych tierów: C/C+ = 1, B = 2, B+ = 3, A = 4, A+ = 5, S = 7, S+ = 8, H = 10, H+ = 12, X = 14, X+ = 16.
  663. v1.76.011 czerwca 2026, 15:00

    Wielu artystów na jednym singlu — w premierach i w PressRoomie

    • Jeśli singiel ma **więcej niż jednego głównego wykonawcę** (np. „Kobiety" — Ewa Novel + Karolina Leszko), wszędzie pokazujemy ich **po przecinku**: panel premier (kanban, plan wydawniczy, lista, edycja), strona singla w PressRoomie, blok singla na stronie tygodnia i feature, sticky player, nazwy plików do pobrania.
    • Goście (**feat.**) i remixerzy (**RMX**) lądują w nawiasie obok nazwy głównego: „Ewa Novel (feat. Karolina Leszko)" / „Ewa Novel (RMX X)". Role ustawiasz w panelu „Wykonawcy" przy premierze — to jest źródło prawdy dla wszystkich widoków.
    • Na stronie singla w sekcji **„O artyście"** każdy główny wykonawca dostaje **osobne bio** (z nagłówkiem nazwy), jeśli ma uzupełnione na swoim profilu artysty.
  664. v1.75.011 czerwca 2026, 12:30

    PressRoom: galeria zdjęć + ikonki dostępnych materiałów, presspack ZIP ukryty

    • Na stronie singla pojawiła się **galeria zdjęć artysty** (kolaż adaptacyjny do liczby zdjęć + lightbox z nawigacją ←/→, ESC, swipe i przyciskiem pobierania). Mocna zachęta dla artystów, by wgrywali wizerunkowe zdjęcia — od razu zmieniają wygląd strony.
    • W blokach singli na **stronie serwisu (tygodnia)** i **stronie feature** dziennikarz widzi teraz subtelne ikonki dostępnych materiałów: **Pitch artysty**, **Wywiad**, **Galeria**, **Teledysk**, **Tekst**. Klik prowadzi prosto do właściwej sekcji singla (#pitch / #interview / #gallery / #video / #lyrics).
    • Ukryto przyciski **„Pobierz presspack (.zip)"** w pressroomie (strona singla, tygodnia, feature oraz panel artysty/admina) do czasu naprawy generatora ZIP. Pojedyncze pliki (MP3, WAV, cover, PDF) działają bez zmian.
  665. v1.74.911 czerwca 2026, 10:20

    Plan wydawniczy: poprawki mobilne (backlog + tygodnie)

    • Backlog w **Planie wydawniczym** nie jest już sticky na telefonie — wcześniej przykrywał tygodnie i karty się na siebie nakładały. Na desktopie zostaje sticky, bez zmian.
    • Na mobile backlog jest **zwijany** i przewijany **poziomo** (karuzela kart), żeby od razu zobaczyć wszystkie tygodnie pod spodem.
    • Nagłówek każdego tygodnia (W##, data piątku, pasek nasycenia, licznik premier) ułożony w **stabilną siatkę** — pasek nasycenia ma na czym się ścisnąć, licznik nie wypycha layoutu.
    • Karty singli w tygodniu układają się **w pionie na mobile** i w poziomie od `sm:` — koniec z dwiema kartami zachodzącymi na siebie w wąskim widoku.
  666. v1.74.811 czerwca 2026, 03:40

    Pulse dziennikarza: sticky filtry + porównanie krzywych singli

    • Nad feedem Pulsu dziennikarza pojawił się **sticky pasek filtrów**: multi-select **artystów** i **singli** (z wyszukiwarką), zakres **7/14/30/60/90 dni** oraz przełącznik **Wartości ↔ Przyrost dzienny**.
    • Wybór 2+ artystów lub singli włącza **tryb porównania** — krzywe wszystkich projektów są nakładane na siebie na każdym wykresie (Spotify, Radio, YouTube, TikTok, Shazam) z kolorową legendą.
    • Filtry działają jednocześnie na **feed wpisów** i **wykresy** — dziennikarz może w sekundę porównać dwóch artystów albo wyizolować jeden singiel.
    • Aktywne filtry pokazują się jako **klikalne chipy** pod paskiem — jedno kliknięcie odpina filtr.
  667. v1.74.711 czerwca 2026, 03:00

    Pulse: dwa wątki komentarzy — Zespół i Z dziennikarzem

    • Komentarze pod każdym wpisem Pulse są teraz **rozdzielone na dwa wątki**: **Zespół** (admin ↔ artysta, dziennikarz nie widzi) i **Z dziennikarzem** (admin ↔ dziennikarz, z artystą gdy w PressRoom włączone „Pozwól artyście rozmawiać").
    • Każdy tab ma własny **licznik komentarzy** — od razu widać, gdzie jest świeża rozmowa.
    • Artysta zawsze ma dostęp do wątku „Zespół" przy swoich wpisach — niezależnie od ustawień PressRoom.
    • Backend: nowa funkcja `getPulseCommentCounts` (batch) + filtry artystów/singli/okresu w `getJournalistPulseFeed` i `getJournalistCharts` (gotowe pod nadchodzący redesign Pulsu dla dziennikarzy).
  668. v1.74.611 czerwca 2026, 02:30

    Plan: edycja Tier i Snippet z karty + reakcje i komentarze w Pulse artysty

    • Zakładka **Plan** pojawia się teraz także w widoku **Lista** (`/admin/releases`) — wcześniej była tylko po wejściu w Kanban.
    • Karty w Planie wydawniczym mają **klikalne chipy**: chip **Tier** (S/A+/A/B+/B/C/H) otwiera popover do szybkiej zmiany klasyfikacji, a chip **Snippet** (poprzednio nieaktywny „snippet?") pozwala wpisać start/koniec w sekundach i zapisać bez wchodzenia w presskit.
    • Pulse dla artysty: pod każdym wpisem widać teraz **pasek reakcji** (👍🔥❤️👏🚀) i przycisk **Komentarze** — artysta może odpowiedzieć wydawcy bez żadnej dodatkowej flagi w PressRoom.
    • Te same reakcje i komentarze działają w widgecie „Twoje sukcesy" na dashboardzie `/artist`.
  669. v1.74.511 czerwca 2026, 01:35

    Pulse: pozytywne oceny dziennikarzy też trafiają na feed

    • Oceny dziennikarzy z Planu wydawniczego trafiają teraz do Pulse projektu w pełnej skali: **🔥 Top wow → Sukces**, **❤️ Interested → Info**, **👎 Nie dla mnie → ⚠️ Uwaga**. **👍 OK** pozostaje neutralne (bez wpisu w Pulse).
    • Każdy wpis odpala się tylko przy realnej **zmianie** poziomu na dany stopień — kliknięcie tam i z powrotem nie generuje nowych pingów.
  670. v1.74.411 czerwca 2026, 01:20

    Negatywna ocena dziennikarza → Pulse „Uwaga" dla artysty

    • Jeśli dziennikarz zaznaczy w Planie wydawniczym ocenę **„Nie dla mnie"** (👎), do **Pulse projektu** trafia automatycznie wpis w kategorii **⚠️ Uwaga** (`warning`), widoczny dla artysty — żeby sygnał o braku dopasowania nie zginął tylko w licznikach.
    • Trigger odpala się przy **zmianie** poziomu na „pass" — kliknięcie tam i z powrotem nie generuje nowych ostrzeżeń.
  671. v1.74.311 czerwca 2026, 01:00

    Oceny dziennikarzy: nowy poziom „Nie dla mnie"

    • Skala przedpremierowych ocen od dziennikarzy ma teraz **4 poziomy**: 👎 **Nie dla mnie** · 👍 **OK** · ❤️ **Interested** · 🔥 **Top wow**. Dziennikarz może uczciwie zaznaczyć, że dany singiel po prostu nie jest dla niego — zamiast pomijać ocenę.
    • Nowy poziom widać i na `/press/plan` (czwarty przycisk w segmentowanym wyborze), i w panelu PressRoom premiery (karta „Zainteresowanie dziennikarzy") z osobnym licznikiem i chipem.
  672. v1.74.211 czerwca 2026, 00:30

    Pulse: kategoria „Uwaga", lista zainteresowania prasy + e-mail dla obserwujących

    • Pulse: do ręcznego dodawania wpisu i do filtrowania w panelu admina doszła **czwarta kategoria „Uwaga"** (⚠️ `warning`) — obok Milestone / Sukces / Info. Filtr „Uwaga" łapie też wcześniejsze ostrzeżenia z kategorii `critical`.
    • PressRoom (zakładka premiery, widoczna dla admina i ownera-artysty): nowa karta **„Zainteresowanie dziennikarzy"** — lista osób, które oznaczyły singla jako **Top wow / Interested / OK** w „Planie wydawniczym", z licznikami i datą.
    • Przycisk **„Powiadom dziennikarzy: utwór dostępny"** wysyła teraz dodatkowo **e-mail** do obserwujących (nowy szablon `press-release-available` z brandem PressRoom i CTA do podstrony singla). In-app + push działa jak wcześniej z `notification_queue`.
  673. v1.74.110 czerwca 2026, 23:45

    Plan wydawniczy — integracje i przyciski follow

    • W panelu PressRoom Admin (edycja singla) dodaliśmy przycisk **„Powiadom dziennikarzy: utwór dostępny"** — modal pokazuje listę obserwujących (singla + artystę), liczbę odbiorców i historię ostatniej wysyłki, żeby nie pingnąć dwa razy.
    • Na publicznej stronie singla (`/press/:artist/:track`) zalogowani dziennikarze mają teraz blok **„Bądź na bieżąco"** z przyciskami **„Powiadom o singlu"** i **„Obserwuj artystę"** — działa od ręki, bez wchodzenia w `/press/plan`.
    • W głównej nawigacji PressRoomu pojawił się kafelek **„Plan wydawniczy"** — szybkie wejście w nadchodzące, zatwierdzone single z fragmentami audio.
  674. v1.74.010 czerwca 2026, 23:00

    Plan wydawniczy + przedpremierowe odsłuchy dla dziennikarzy

    • Nowa, trzecia zakładka **„Plan"** w module Premiery (`/admin/releases/plan`): backlog po lewej, tygodniowa siatka piątków po prawej, **drag & drop** między tygodniami. Każdy slot ma chip **Opcja → Rezerwacja → Zatwierdzone** (kliknięcie cykluje) i pasek nasycenia tygodnia liczony z wag rokowań (S/A+/A/B+/B/C/H).
    • Publiczna strona **`/press/plan`** w PressRoomie: pokazuje **zatwierdzone** single z fragmentami audio (snippet TikToka jest obowiązkowy — bez niego singiel nie wchodzi do podglądu). Dziennikarz może kliknąć **„Powiadom mnie"** i automatycznie zaczyna obserwować singla.
    • Nowy przycisk admina **„Powiadom dziennikarzy: utwór dostępny"** — modal z liczbą i listą obserwujących (dedup po dziennikarzu, łączy follow singla i follow artysty), pingiem do `notification_queue` (in-app + push + email zgodnie z preferencjami) i logiem `release_availability_pings`, żeby nie wysłać dwa razy.
    • **3-stopniowa skala zainteresowania** singlem przez dziennikarzy (OK / Interested / Top wow) — widoczna dla nich na `/press/plan`, dla artysty + admina w panelu pressroomu projektu; każde pierwsze oznaczenie wpada do Pulse artysty.
    • Nowe powiadomienia: `press_release_available` (dziennikarz), `press_release_available_sent` + `press_release_interest` (artysta) — z pełną kontrolą preferencji push/email/in-app.
  675. v1.73.010 czerwca 2026, 23:30

    Etap „Produkcja" w module Premiery

    • Projekty oznaczone jako produkcyjne dostają nową zakładkę **„Produkcja"** (admin i artysta) z dwiema ścieżkami: **audio** (zawsze, 6 podetapów: koncepcja → kompozycja/tekst → produkcja → miks → master → finalizacja) i **wideo** (opcjonalnie, 6 podetapów: koncepcja → scenariusz → logistyka → plan zdjęciowy → montaż → finalizacja).
    • Admin przeklikuje statusy podetapów (czeka / w toku / czeka na artystę / blokada / gotowe), dorzuca notatki, daty startują i kończą się automatycznie. Artysta dostarcza inputy: **tekst utworu** (kompozycja) i **koncepcję teledysku** (lokalizacje, obsada, technika, miejsca).
    • Finalizacja każdej ścieżki ma własny **signoff artysty** („Zatwierdzam ten etap") — widoczny i dla admina, i dla artysty z datą.
    • W kanbanie premier `(/admin/releases/kanban)` w osi etapów pojawia się **kolumna „Produkcja"** — wyłącznie dla projektów typu produkcyjnego (filtruje się sama).
    • Nowy schemat `release-production.ts` + JSONB `production_progress` na `release_submissions` + server fns `updateProductionStage` / `updateProductionFlags` (RLS-aware).
  676. v1.72.110 czerwca 2026, 04:15

    Badge „obserwuje" w katalogu kanałów + licznik na kafelkach singli

    • Katalog kanałów (`/admin/channels`): przy każdym kanale, którego dziennikarze obserwują kogoś z naszego rosteru, pojawia się fuksjowy badge **„👁 obserwuje N"** obok nazwy — wiesz od ręki, którzy partnerzy aktywnie śledzą Twoje single.
    • Lista singli w PressRoomie (`/admin/pressroom/singles`): w lewym górnym rogu kafelka jest **licznik obserwujących dziennikarzy** (unikalni: bezpośrednio + przez artystę). Tooltip rozbija liczbę na „direct" vs. „przez artystę".
    • Nowa, wsadowa server fn `getSubmissionsFollowerCounts` — jeden round-trip dla całej listy, bez N+1.
  677. v1.72.010 czerwca 2026, 03:30

    Pulse + push, gdy dziennikarz Cię zaobserwuje

    • Trigger DB: gdy ktoś z PressRoomu (radio / TV / Spotify Editorial / blog) doda Twojego singla lub Ciebie do obserwowanych, automatycznie powstaje wpis w Pulse („XYZ obserwuje Twój singiel — łącznie N obserwujących") widoczny dla artysty i admina.
    • Powiadomienia: nowy klucz **„press_follow"** w preferencjach (in-app domyślnie ON, push domyślnie ON, e-mail OFF) — sterujesz w Ustawieniach > Powiadomienia.
    • Na stronie singla doszedł blok **„Obserwujące kanały"** — licznik + top 6 kanałów z ikonką medium (radio / tv / podcast / playlist / blog) i przycisk „Pokaż wszystkich" otwierający modal z pełną listą (dziennikarz · outlet · medium · data obserwacji).
    • Nowa server fn `getFollowingChannelIds` + `getChannelsFollowCounts` przygotowana pod oznaczanie kanałów badgem „👁 obserwuje N" na listach kanałów (kolejny krok wpięcie do katalogu adminowego).
  678. v1.71.210 czerwca 2026, 02:30

    Pulse dla dziennikarzy — piny, komentarze, embargo

    • Dziennikarz może **przypiąć singiel** w feedzie Pulse (przycisk „Przypnij singiel" pod wpisem) — wszystkie wpisy z tego singla lądują na samej górze, z bursztynowym obramowaniem i etykietą „przypięty".
    • Pod każdym wpisem Pulse jest teraz **wątek komentarzy** admin↔dziennikarz. Admin może oznaczyć wiadomość „tylko dla dziennikarzy" (ukrytą przed artystą), a jeśli przy publikacji włączono „z artystą", artysta dochodzi do tego samego wątku.
    • Publikując wpis w PressRoomie można ustawić **embargo** (datetime-local) — dziennikarze nie zobaczą wpisu do podanej daty, a powiadomienia nie są wtedy wysyłane. Po zdjęciu embarga wpis pojawia się normalnie, z plakietką informującą o terminie.
  679. v1.71.110 czerwca 2026, 01:15

    Reakcje pod wpisami Pulse + dzwonek dla dziennikarzy

    • Pod każdym wpisem Pulse (w /admin/pulse i /press/pulse) doszedł pasek reakcji 👍 🔥 ❤️ 👏 🚀 — wspólny dla admina, artysty i dziennikarza. Klik dodaje, drugi klik zdejmuje, liczniki aktualizują się live.
    • W nawigacji PressRoomu (hub) pojawił się dzwonek „Pulse" z licznikiem nieprzeczytanych powiadomień (auto-refresh co 60 s, badge „99+" przy większej liczbie).
  680. v1.71.010 czerwca 2026, 00:30

    Pulse dla dziennikarzy — feed, wykresy, „Wyślij do PressRoom"

    • Nowa zakładka **/press/pulse** w PressRoomie — dziennikarze widzą wpisy Pulse dla artystów i singli, których obserwują (filtrowanie po profilu „obserwowani" lub po flagze „all_new_singles").
    • Feed z filtrem „tylko nieprzeczytane", oznaczaniem przeczytane (per wpis lub zbiorczo), deep-linkiem do strony singla w PressRoomie i eksportem (pojedynczy wpis lub cały feed → CSV / TXT).
    • Wykresy dla obserwowanych singli: Spotify (streamy), Radio (spiny), YouTube, TikTok, Shazam — okna 7/14/30/60/90 dni, przełącznik „dziennie ↔ przyrost".
    • W admin Pulse na każdym wpisie nowy przycisk **„Wyślij do PressRoom"** (z opcjonalnym checkboxem „z artystą", który dopuszcza artystę do wątku admin↔dziennikarz). Po publikacji automatycznie wpadają powiadomienia in-app dla wszystkich dziennikarzy obserwujących projekt.
    • Na kafelkach Hub PressRoomu doszedł nowy quick-link do Pulse (fuksjowy gradient, ikona iskierki).
  681. v1.70.010 czerwca 2026, 23:55

    ISRC w credits + fundament Pulse dla dziennikarzy

    • Strona singla w Pressroomie pokazuje teraz ISRC w sekcji „Credits & wydawca" (monospace, łatwo skopiować). Plik credits .txt już wcześniej miał ISRC — teraz widać go też w UI.
    • Baza przygotowana pod nowy moduł „Pulse dla dziennikarzy": w `project_events` doszły pola `press_visible`, `notified_press_at` i `press_artist_chat_allowed` (admin decyduje, czy artysta wchodzi do wątku admin↔dziennikarz).
    • Nowe tabele: `journalist_pulse_reads` (oznaczanie przeczytane), `journalist_notifications` (kolejka in-app/e-mail per dziennikarz), `journalist_pinned_targets` (pinowanie artystów/singli na górze feedu) i `pulse_event_reactions` (👍 🔥 ❤️ 👏 🚀 — wspólne dla admina, artysty i dziennikarza).
    • `pulse_comments` dopuszcza autorów typu `journalist` i ma pole `visibility` (`all` / `press_admin`) — wątek dziennikarz↔admin jest domyślnie zamknięty przed artystą, dopóki admin nie kliknie „dołącz artystę".
    • W kolejnej iteracji na tej bazie ląduje: route `/press/pulse` (feed, filtry, piny), przycisk „Wyślij do Pressroom" w admin Pulse, dzwonek powiadomień dla dziennikarzy, reakcje w Pulse Admina/Artysty, wykresy radio/Spotify/YouTube/TikTok (dziennie ↔ przyrost) i preferencje e-mail (dzienny digest / natychmiast / off).
  682. v1.69.210 czerwca 2026, 23:45

    Pulse: countdown do premiery, taski po terminie, radio w rotacji, kamienie prasowe

    • Premiera — Pulse wrzuca info na D-14, D-7, D-3, D-1 i osobny wpis „🎉 Dziś premiera!" w D-0 (na podstawie pola premiere_date w projekcie).
    • Taski po terminie — codzienny wpis „⚠️ Zadanie po terminie" dla każdego taska z minionym `due_date` i statusem ≠ done/cancelled. Widoczność dla artysty dziedziczona z flagi `visible_to_artist` taska.
    • Radio w rotacji — gdy ta sama stacja zagra utwór w ≥3 różne dni w ostatnich 14 dniach, Pulse emituje milestone „📻 Stacja — utwór w rotacji!" (raz per stacja+projekt).
    • Kamienie prasowe — gdy premiera trafi do 1/3/5/10/25 opublikowanych feature'ów prasowych, Pulse emituje milestone z tytułem ostatniej publikacji.
    • Wszystkie nowe typy korzystają z `pulse_alert_settings` (włącz/wyłącz / severity) i są wpięte w cron `detect-events` razem z istniejącym detektorem.
  683. v1.69.110 czerwca 2026, 23:10

    Kalendarz: edytor kategorii + „Wróć do edycji" zaakceptowanego pitcha/wywiadu

    • W panelu admina (Kalendarz operacyjny) pojawił się przycisk „Kategorie" — w jednym oknie ustawiasz nazwę, kolor, ikonę-emoji, kolejność i to, czy kategoria jest aktywna. Możesz też dodawać nowe kategorie (np. „Premiera teledysku") bez migracji.
    • Kategorie systemowe (np. wywiad, premiera, emisja) chronimy przed usunięciem — można je tylko wyłączyć. Jeśli kategoria jest używana w jakimś wpisie, usunięcie jest blokowane z czytelnym komunikatem.
    • Artist Pitch oraz pełny wywiad mają teraz przycisk „Wróć do edycji" widoczny po wysłaniu/akceptacji A&R. Po odblokowaniu artysta (lub admin) może podmienić plik audio/video lub tekst, ale wpis wraca do statusu szkic i wymaga ponownego wysłania do akceptacji.
  684. v1.69.010 czerwca 2026, 22:10

    Kalendarz: nowa kategoria „Nadchodząca emisja" + auto-publikacja w Pulse

    • Dodaliśmy w bazie tabelę kategorii kalendarza (`calendar_categories`) z kompletem obecnych typów oraz nową kategorią „Nadchodząca emisja" (📻). Tabela jest gotowa pod edytor kategorii w panelu admina (UI doślemy w kolejnej iteracji — w tej ekspozycja chipa „Emisja" już działa na całym kalendarzu).
    • Kolumna `event_type` w `calendar_events` została przerobiona z enuma na text, dzięki czemu w kolejnym kroku będziemy mogli dodawać własne kategorie bez migracji.
    • Wpisy kategorii „Wywiad" i „Nadchodząca emisja" zapisane lub edytowane przez admina automatycznie tworzą wpis Pulse typu INFO (widoczny dla artysty). Tytuł zawiera nazwę stacji, body składa stację, datę PL, miejsce i krótką notatkę. Wpisy artystów trafiają do Pulse dopiero gdy admin je otworzy i zapisze (implicit accept).
    • Edycja wpisu kalendarza aktualizuje wpis Pulse (po `dedupe_key = calendar:{eventId}`), a usunięcie / zmiana statusu na „cancelled" / „done" wycofuje go (`dismissed_at`).
    • Zasiane nowe progi w `pulse_alert_settings`: `calendar_interview`, `calendar_broadcast`, `release_day`, `release_countdown`, `task_overdue` (warning), `press_feature_milestone`, `radio_added_to_rotation` — detekcja dla tych typów dojedzie w kolejnym ticketcie.
  685. v1.68.810 czerwca 2026, 20:30

    Edytor projektu: „FDB" przenosi kanał + ręczne oznaczanie „🎤 wywiad"

    • W sekcji „Do rozważenia – aktywne w innych projektach" klik „FDB" wreszcie realnie przenosi kanał do Feedback (wcześniej wiersz pozostawał na miejscu, bo bucket już był „current", ale bez wartości support nic się nie wyświetlało).
    • Każdy kanał z bucketem „Feedback" pojawia się teraz w sekcji „Feedback / działania" — nawet bez wpisanego supportu czy nacisku.
    • Chip „🎤 wywiad" przy nazwie kanału jest teraz przyciskiem: klikasz, żeby włączyć lub wyłączyć oznaczenie wywiadu (dodaliśmy w bazie pole `has_interview`). Stara automatyka po słowie „wywiad" w etykiecie supportu działa dalej jako fallback.
  686. v1.68.710 czerwca 2026, 19:30

    Fix: drag & drop kanałów w edytorze znów działa

    • W edytorze projektu („Topki & playlisty") przestało działać przeciąganie wierszy kanałów — dało się je chwycić tylko za mały uchwyt po lewej.
    • Przywróciliśmy poprzednie zachowanie: wiersz łapiesz w dowolnym miejscu (poza polami edycji i przyciskami) i przesuwasz w górę/w dół sekcji.
  687. v1.68.610 czerwca 2026, 18:10

    Fix: sekcja „O serwisie" pokazuje tekst z edytora

    • Na stronie serwisu („Tydzień X/Y") sekcja „O serwisie tygodniowym" wyświetlała hardkodowany opis, ignorując to, co wpisano w edytorze numeru.
    • Teraz pokazujemy tekst z pola about (numeru), a jeśli puste — globalny tekst „O serwisie" z ustawień pressroomu. Domyślny opis zostaje tylko jako fallback.
  688. v1.68.510 czerwca 2026, 17:40

    Fix: okładki w nagłówku serwisu radiowego znów się pokazują

    • Kolaż 6 okładek w hero strony „Tydzień X/Y" wyświetlał puste fioletowe kafelki, gdy pierwsze pozycje w numerze nie miały jeszcze podpiętej okładki.
    • Teraz wybieramy 6 pierwszych unikalnych okładek z całego numeru, więc nagłówek pokazuje realne single zamiast pustek.
  689. v1.68.410 czerwca 2026, 17:10

    Sieć bezpieczeństwa: audyt autozapisów Presskitu

    • Każdy autozapis i ręczny „Zapisz" w Presskicie/premierze trafia teraz do osobnego logu audytu z poprzednimi wartościami pól.
    • Jeśli artysta znów zgłosi, że po odświeżeniu pola są puste — daj znać, a odtworzymy ostatnią wpisaną wersję ręcznie z bazy.
    • Log działa po cichu w tle, nie spowalnia zapisu i nie blokuje go, gdy coś z audytem pójdzie nie tak.
    • Wyłączymy go dopiero, gdy będziemy mieli pewność, że problem z zanikającymi danymi już nie wraca.
  690. v1.68.310 czerwca 2026, 16:20

    Krytyczny fix: Presskit zapisuje się po akceptacji i planowaniu

    • Zapis artysty w Presskicie po przejściu premiery do etapów approved/planning/scheduled mógł odbijać się od blokady uprawnień — UI pokazywał autozapis, ale po odświeżeniu pola wracały puste.
    • Funkcja zapisu ma teraz własną walidację właściciela premiery i zapisuje do bazy bez polegania na zbyt wąskiej regule RLS, więc dane zostają po refreshu.
    • Licznik gotowości Presskitu patrzy teraz na realne pola formularza i honoruje ręczne „Oznacz jako gotowe”.
  691. v1.68.211 czerwca 2026, 17:45

    Fix: „Wróć do premiery" z briefu głosowego znów działa

    • Artysta po wejściu w brief głosowy i kliknięciu „Wróć do premiery" dostawał komunikat „Projekt nie został znaleziony" — przycisk prowadził do /single/{id} z id zgłoszenia premiery zamiast id projektu.
    • Teraz przycisk wraca poprawnie do /releases/{id} (panel premiery), więc nie trzeba już wchodzić od nowa z listy.
  692. v1.68.111 czerwca 2026, 16:30

    Krytyczny fix: autozapis presskitu już nie kasuje wpisanych pól

    • Znaleźliśmy wyścig: w pierwszej milisekundzie po wczytaniu premiery formularz był jeszcze pusty, a autozapis zdążył wysłać do bazy patcha zerującego wszystkie pola (story, kontakt, linki, zespół, plan promo).
    • Dodaliśmy bezpiecznik — autozapis i ręczny „Zapisz" startują dopiero wtedy, gdy formularz jest faktycznie zasiany danymi z serwera (form.id === sub.id).
    • Niestety wcześniejszych nadpisanych treści nie da się odzyskać (nie trzymamy historii pól) — trzeba ponownie wypełnić to, co zniknęło. Od teraz problem nie powinien już wracać.
  693. v1.68.011 czerwca 2026, 15:30

    PressRoom: presspack .zip działa dla admina, „Słowo od artysty" tuż pod „Dlaczego warto zagrać"

    • Naprawione „Brak dostępu" przy „Pobierz cały presspack (.zip)" — zalogowany admin/owner i dziennikarze z magic-linka dostają teraz krótki, jednorazowy token (5 min) zamiast 401.
    • Pod sekcją „Dlaczego warto zagrać" dorzuciliśmy teaser „Słowo od artysty": miniaturka wideo (lub audio / cytat), krótka zajawka tekstu i przycisk, który scrolluje dziennikarza prosto do sekcji „Wywiad z Artystą".
    • Jeżeli artysta nie wypełnił statystyk socialowych (Spotify monthly / IG / TikTok), blok statystyk się chowa zamiast pokazywać puste „—" — i dociągamy dane z najnowszego snapshotu profilu artysty, jeśli istnieje.
    • Endpoint /api/public/press/presspack/:id akceptuje też magic token (?m=…), więc dziennikarze otwierający link z e-maila newslettera pobiorą zip bez logowania.
  694. v1.67.711 czerwca 2026, 14:00

    Fix: zapis profilu z priorytetem Spotify

    • Backend nie przyjmował klucza „sp" (Spotify) w platformPriorities — przy zapisie profilu leciał błąd „Invalid enum value".
    • Dodaliśmy „sp" do walidacji po stronie serwera, więc suwak Spotify zapisuje się normalnie, także przy overbookingu.
  695. v1.67.611 czerwca 2026, 13:30

    Profil: overbooking w priorytetach platform social

    • Suwaki „Priorytety platform social" pozwalają teraz przekroczyć budżet 10 pkt — analogicznie do priorytetów promocyjnych.
    • Po przekroczeniu pojawia się badge „+N OVER" i adnotacja „Lekki overbooking — da się obronić, ale rozważ obniżenie najmniej kluczowej platformy".
    • Dzięki temu można szybko zaznaczyć kilka kluczowych platform na maksa, bez walki z twardym limitem.
  696. v1.67.511 czerwca 2026, 13:00

    Profil: Spotify w priorytetach platform

    • Dodany suwak Spotify / playlisty w sekcji „Priorytety platform social" w profilu artysty.
    • Wcześniej go brakowało, mimo że generator pomysłów traktował Spotify jako pełnoprawną platformę (DSP/playlisty) obok IG, TT, YT itd.
    • Teraz możesz przeznaczyć część z 10 pkt na Spotify, a generator pomysłów lepiej dopasuje propozycje playlistowania i akcji DSP.
  697. v1.67.411 czerwca 2026, 12:30

    Wywiady i Pitche: limit pliku do 100 MB

    • Podniesiony limit wgrywanego pliku audio/video w Wywiadach i Artist Pitchach z 50 MB do 100 MB.
    • Większe nagrania (dłuższe video lub WAV) wchodzą bez błędu „Payload too large".
    • Pliki nadal trzymane są w bezpiecznym storage HUBa (nie Dropbox) — dostęp tylko dla autora i adminów.
  698. v1.67.311 czerwca 2026, 12:00

    Admin: badge „Tylko tekst" przy odpowiedziach bez nagrania

    • W karcie odpowiedzi w panelu admina (/admin/wywiady/:id) pojawił się wyraźny badge „📝 Tylko tekst — artysta nie nagrał audio/video", gdy artysta odpowiedział tylko tekstem.
    • Dzięki temu admin od razu wie, dlaczego nie ma odtwarzacza audio/video, zamiast zastanawiać się nad pustym miejscem.
  699. v1.67.211 czerwca 2026, 11:40

    Fix: zakładka „Wywiady artystów" w panelu admina

    • Naprawiony bug w /admin/wywiady — kliknięcie zakładki „Wywiady artystów" nie robiło nic (walidator URL odrzucał wartość i wracał do „Artist Pitche").
    • Teraz wszystkie trzy zakładki (Artist Pitche / Wywiady artystów / Prośby dziennikarzy) przełączają się poprawnie.
  700. v1.67.111 czerwca 2026, 11:15

    Kolumny tablicy: więcej kolorów + zmiana kolejności kolumn

    • Edytor „Kolumny tablicy" (Kanban / lista zadań) — paleta rozszerzona do ~30 kolorów (szarości, niebieskie, zielone, żółte/pomarańczowe, czerwone/różowe, fiolety, brązy).
    • Pole „Własny" pozwala wybrać dowolny kolor z systemowego pickera albo wkleić HEX (#abcdef) i zatwierdzić jednym klikiem.
    • Przy każdej kolumnie pojawiły się strzałki „w górę / w dół" — zmieniają kolejność kolumn na tablicy Kanban i w widoku listy.
  701. v1.67.011 czerwca 2026, 10:30

    Artist Pitch jako osobny kafelek w Gotowości (oddzielony od wywiadu)

    • Nowy kafelek must-have „Artist Pitch (do dziennikarzy)" w Gotowości premiery — własna podstrona /releases/:id/artist-pitch z szybką nagrywarką (audio / audio+video / tekst), auto-transkrypcją i wysyłką do akceptacji A&R. Robisz to w kilkadziesiąt sekund, bez przechodzenia przez cały wywiad.
    • Wywiad z artystą ma teraz 9 pytań (+ Twoje własne). Dotychczasowe 10. pytanie „pitch dla dziennikarzy" zostało wyciągnięte do nowego kafelka — istniejące odpowiedzi zostały automatycznie zmigrowane jako Artist Pitche.
    • Sekcja „Wzmocnij premierę": wywiad przeniesiony do nice-to-have (nadal liczy się do gotowości, ale nie jest wymagany).
    • Admin /admin/wywiady — nowa zakładka „Artist Pitche" (domyślna) obok „Wywiady artystów" i „Prośby dziennikarzy". Akceptacja pitcha działa tak samo jak akceptacja wywiadu.
  702. v1.66.2111 czerwca 2026, 02:30

    Topki kanałów na mobile/PWA: pełna nazwa kanału w osobnej linii

    • W sekcji „Topki kanałów" (artist hub) na telefonie nazwa kanału (np. POLSKIE RADIO PROGRAM 1, UNIVERSAL) zajmuje teraz całą szerokość górnego rzędu — koniec nachodzących na siebie napisów typu „UNIVERSAL × PITCHING".
    • Metryka (np. 20.3 pkt × waga), odznaka nacisku PITCHING/PUSH i strzałka „>" schodzą do drugiego, dolnego rzędu — wszystkie te elementy zostają, tylko mają teraz miejsce, żeby się ładnie ułożyć.
    • Na desktopie układ pozostaje bez zmian — metryka i odznaki nadal są po prawej w jednym rzędzie.
  703. v1.66.2011 czerwca 2026, 02:00

    Edytor projektu: kosz w „Do rozważenia" naprawdę dezaktywuje kanał

    • Klik w ikonę kosza przy kanale w sekcji „Do rozważenia — aktywne w innych projektach" przenosi go teraz do „Nieaktywne w projekcie" i sekcja faktycznie się czyści.
    • Naprawiony błąd: kanał z bucketu archive/inactive wracał do „Do rozważenia" tylko dlatego, że ten sam kanał był aktywny w innych projektach. Jawna decyzja admina ma teraz pierwszeństwo nad sugestią z innych projektów.
    • Kanał da się oczywiście przywrócić — wystarczy dodać aktywność albo użyć strzałek „Przenieś" (AKT/PLAN/FDB).
  704. v1.66.1911 czerwca 2026, 01:15

    PressRoom: Lead i Story długie z pełnym AI (model + Szybko + Iteruj), POBRANIA liczone pełniej

    • Pole „Lead (story_short)" w edycji singla → PressRoom dostało ten sam pasek co Radio pitch: przełącznik modelu (Flash/GPT-5), „Szybko" (jednorazowo) oraz „Iteruj z AI ✨" — czat zachowuje historię i wstawia zatwierdzoną wersję do leada (z limitem 320 znaków).
    • Analogicznie pole „Story (długie)" — model + Szybko + Iteruj z AI ✨. Czat dostaje kontekst artysty, tytułu, gatunków, premiery, leada i radio pitcha.
    • Statystyka „POBRANIA" w PressRoom (Twój singiel u dziennikarzy + Wszystkie single u dziennikarzy) liczy teraz pobrania mp3, wav, okładki, presspacka .zip oraz one-pagera PDF — wcześniej zip i PDF były wykluczone.
    • Nowe scope'y w silniku AI Refine: `press_lead` (1-2 zdania, max 320 znaków, ton nagłówka) i `press_story` (3-5 zdań w jednym akapicie, ton redakcyjny) — używane też przez resztę modułów, które wywołują czat.
  705. v1.66.1811 czerwca 2026, 00:30

    Serwis tygodniowy: strzałki kolejności singli + naprawa „Nowego artysty" w linkach

    • W edytorze serwisu tygodniowego (/admin/pressroom/weekly/…) przy każdym singlu w sekcji pojawiły się strzałki ↑/↓ — można przestawić kolejność singli bez przeciągania, klik zapisuje od razu.
    • Strzałki sekcji (cała sekcja w górę/dół) działały już wcześniej; teraz analogicznie sortujesz też pojedyncze single w obrębie sekcji.
    • Linki prasowe: w bazie posprzątane stare etykiety „Nowy artysta" / „nowy-artysta" w danych smartlinków — dla singli, które mają już przypisanego prawdziwego artystę w release_artists (Conki, Antek Smykiewicz, Karcia), wszędzie pokazuje się teraz właściwe imię.
    • Efekt widać w: wyszukiwarce singli przy budowaniu serwisu, listingu sekcji, publicznej stronie /press/tydzien/… (badge artysty + linki) oraz w samych URL-ach /press/conki/… zamiast /press/nowy-artysta/…
  706. v1.66.1710 czerwca 2026, 23:45

    Gotowość premiery: badge'y „Do czego" przy każdym kroku

    • Pod tytułem każdego kroku Gotowości (Profil, Presskit, Brief, Wywiad, Brand kit, Social, Verdict, Kalendarz, Promo, Plan) pojawiły się kolorowe mini-badge'y: Media, AI · Strategia, Playlisty, Social AI, Grafiki, Booking, Crew, Fani.
    • Każdy badge ma własny kolor i ikonkę (Newspaper / Sparkles / ListMusic / Share2 / Palette / CalendarDays / Users / Heart) oraz tooltip z pełnym opisem — od razu widać, gdzie dane są wykorzystywane.
    • Pigułki są mobile-first: na telefonie skracają label (np. „AI · Strat."), nie łamią siatki kart i nie pchają CTA poza ekran w PWA.
  707. v1.66.1610 czerwca 2026, 23:15

    PressRoom: sticky CTA dla gości (Zainstaluj HUB + Zaloguj się)

    • Na stronach prasowych singla (/press/$artist/$track) i pitching feature'a (/press/feature/$slug) pojawia się dolny sticky pasek z dwoma akcjami dla gości: „Zainstaluj HUB" i „Zaloguj jako dziennikarz".
    • Przycisk instalacyjny ma autodetekcję platformy — pokazuje „Dodaj do ekranu iPhone" lub „Zainstaluj na Androidzie" i prowadzi do strony /zainstaluj z pełną instrukcją.
    • Link logowania niesie aktualną ścieżkę jako `?next=…`, więc po zalogowaniu dziennikarz wraca dokładnie do tej samej strony prasowej.
    • Pasek jest niewidoczny dla zalogowanych dziennikarzy/adminów oraz gdy HUB jest już uruchomiony jako PWA (standalone). Można go też zamknąć ręcznie — wybór trzyma się na czas sesji w przeglądarce.
  708. v1.66.1510 czerwca 2026, 22:45

    PressRoom: tracking pobrań PDF + ważony engagement

    • Link „One-pager PDF" na stronach prasowych singla idzie teraz przez proxy `/api/public/press/pdf/$id` — przed redirectem do pliku loguje event `download_pdf` (z journalist_id, jeśli wszedł z tokenem).
    • Nowy wskaźnik „Engagement" w panelu admina PressRoom (na stronie singla) — sumuje aktywność prasy z wagami: wejście×1, odsłuch×2, dokończony×3, PDF×5, ZIP×10.
    • W tym samym pasku statystyk widać osobno liczby pobrań PDF (×5) i ZIP (×10) — łatwo porównać, które singlowe materiały realnie ściągają dziennikarze.
  709. v1.66.1410 czerwca 2026, 22:15

    PressRoom: AI generuje Lead i Story singla

    • PressRoom (edycja singla, admin) · obok pola „Lead (story_short)" jest teraz przycisk „Wygeneruj AI" — pisze 1–2 zdania w stylu nagłówka prasowego (max 320 znaków), bazując na tytule, gatunku, USP i kontekście artysty.
    • PressRoom (edycja singla, admin) · obok pola „Story (długie)" pojawił się przycisk „Wygeneruj AI (3-5 zdań)" — pełny opis wydania (200–600 znaków) bez korpomowy, z kontekstem osobowości i ostatnich sukcesów artysty.
    • Oba przyciski respektują przełącznik modelu (Flash/GPT-5), działają jednorazowo (bez czatu) — wygenerowany tekst od razu trafia do pola i jest gotowy do ręcznej edycji.
  710. v1.66.1310 czerwca 2026, 21:30

    Bugfixy: ProjectEditor (przeciąganie vs kliki), newsletter (szablon 3, sort singli, AI A&R), edycja serwisu (tydzień/rok/about)

    • ProjectEditor · admin: przyciski w wierszu kanału (Usuń/Przenieś do archiwum, ↑/↓, Akt/Plan/Fdb/Nie) nie są już połykane przez drag handler całego wiersza — drag startuje wyłącznie z uchwytu „⋮⋮". Wcześniej kliknięcie „Usuń z aktywnych" mogło być interpretowane jako początek przeciągania.
    • Newsletter · nowy szablon „3 · Bez alertu (v1)" obok „1 · Klasyczny" i „2 · Okładka+tytuł" — układ jak v1, ale alerty są ukryte, a notka A&R ląduje inline pod gatunkami w prawej kolumnie.
    • Newsletter · w każdym singlu w sekcji są teraz dwie strzałki ↑/↓ do ręcznej zmiany kolejności (zamiast jednej GripVertical).
    • Newsletter · obok pola „Notka A&R" pojawił się przycisk „Napisz z AI" / „Iteruj z AI" (RefineChatDialog z kontekstem singla: tytuł, artysta, gatunki — pisze 1–3 zdania w stylu redakcji).
    • Admin · Serwis tygodniowy: edytowalny numer tygodnia, rok i pole „O serwisie tygodniowym" (about). Zmiana numeru/roku aktualizuje slug strony (np. /press/tydzien/2026-w24).
  711. v1.66.1210 czerwca 2026, 20:30

    Paczka bugfixów: Wywiady, PressRoom, okładki serwisu, Pulse

    • Admin · Wywiady & PR: klik w wywiad na liście znów otwiera podstronę akceptacji (lista była leafem zamiast layoutu — child route nie miał gdzie się wyrenderować).
    • PressRoom · strona singla: badge artysty bierze teraz nazwę z `artists.display_name` (po release_artists / artist_id) zamiast stałego snapshotu z release_smartlinks — koniec „Nowy artysta" przy Conkim, Antku, MieloW.
    • PressRoom · serwis tygodniowy: okładki w bannerze i kafelkach lecą z trwałego mirroru w Supabase Storage (`getStableReleaseCoverUrl`) i dopiero w fallbacku z Dropbox/smartlinka — koniec pustych kafelków po wygaśnięciu temp linków.
    • Pulse · Artysta: sekcja „Feed wydarzeń" (filtry + podbite + inne wydarzenia) trafiła na samą górę, nad wykresy — to najważniejszy widok dla artysty.
  712. v1.66.1110 czerwca 2026, 19:00

    Mobile lifting: hero poziomu, zakładki kanałów i karty mediów

    • Hero „Twój poziom kampanii" jest dużo bardziej kompaktowy na telefonie — mniejsza kafelka LEVEL, mniejszy nagłówek i opis, mniej pustej przestrzeni obok.
    • Zakładki bucketów (Wszystkie / Feedback / Aktywne / Zaplanowane / Minione / Nieaktywne) przewijają się teraz poziomo zamiast wchodzić w siebie w dwóch nachodzących rzędach.
    • Filtry mediów i typów też przewijają się poziomo na mobile, a na desktopie nadal zawijają się w siatce.
    • Karty kanałów pokazują pełną nazwę medium (np. „FM AIRPLAY", „UNIVERSAL", „TV TOP") — chip nacisku ląduje pod nagłówkiem na małych ekranach, a sama etykieta ma whitespace-nowrap.
  713. v1.66.910 czerwca 2026, 18:00

    Poziom supportu i % stosowanego nacisku — wracają

    • Obie karty obok celu projektu znów się wypełniają — liczymy je z aktywnych kanałów (feedback + planowane + aktywny pressing).
    • Support: (TAK·1 + mix·0,5 + NIE·0,25) / liczba aktywnych kanałów → %.
    • Nacisk: (punching·2 + pushing·1,5 + pitching·1) / liczba aktywnych kanałów → %.
    • Pod paskiem widać kolorowe chipki z liczbą kanałów w każdej kategorii (TAK / mix / NIE oraz punching / pushing / pressing / pitching / bez nacisku).
  714. v1.66.810 czerwca 2026, 17:30

    Admin: minimum w Celu kampanii

    • Karta „Cel kampanii” dostała dwa nowe pola: „Kategoria minimum” i „Minimum pkt”.
    • Domyślnie ustawiają się automatycznie — kategoria jest o jeden poziom niżej od celu (np. B+ → B), a punkty to próg tej kategorii w wybranym tygodniu.
    • Wartości można nadpisać ręcznie (pickerem lub wpisaniem pkt), a przyciskiem „reset → auto” wrócić do automatu.
    • Dzięki temu kafelek MINIMUM w hero artysty i pasek postępu od razu pokazują właściwy próg.
  715. v1.66.710 czerwca 2026, 17:00

    Admin: Cel kampanii w edycji projektu

    • W sekcji „Cele & status” pojawiła się nowa karta „Cel kampanii” — ustawisz tu docelową kategorię, tydzień osiągnięcia, datę ostatniego dnia goal-tygodnia i oczekiwane punkty.
    • Wcześniej te wartości szły tylko z arkusza; teraz można je nadpisać ręcznie i od razu zobaczyć je w hero artysty oraz banerze celu.
    • Podpowiedzi jednym kliknięciem: data ostatniego dnia wyliczana z premiery + numeru tygodnia, oczekiwane pkt z progu kategorii w danym tygodniu (z algorytmu).
  716. v1.66.610 czerwca 2026, 16:00

    Crew Chat Label/Connect w komunikatorze

    • Kanały Crew Chat „Label” i „Connect” są dopięte do komunikatora-bąbelka oraz do listy rozmów po stronie Admina i Artysty.
    • Uzupełniliśmy uczestników w bazie: wszyscy artyści z kontem oraz admini są zapisani do obu kanałów.
    • Na liście rozmów Crew Chaty mają własną gradientową ikonę i plakietkę „Crew”, żeby od razu odróżniały się od zwykłych rozmów premierowych.
  717. v1.66.510 czerwca 2026, 15:30

    Powiadomienia: „oznacz wszystkie" naprawdę czyści nieprzeczytane

    • Naprawiony zapis statusu „przeczytane" w backendzie — kliknięcie „oznacz wszystkie" nie odbija się już od ograniczenia statusów.
    • Dzwoneczek od razu wygasza fioletowe kropki i licznik, a w razie błędu przywraca poprzedni stan zamiast udawać sukces.
    • Pojedyncze kliknięte powiadomienie też aktualizuje się natychmiast przed przejściem do właściwego modułu.
  718. v1.66.410 czerwca 2026, 15:00

    Mini-wykresik trendu w mobilnym feedzie radiowym

    • Tryb „Najnowsze" w Pulse → Radio na telefonie pokazuje teraz mały sparkline 7-dniowego trendu obok artysty i tytułu utworu.
    • Pod słupkami widać deltę vs wczoraj (▲/▼) oraz sumę emisji z 7 dni — te same dane co w wersji desktopowej, tylko skondensowane.
    • Layout mobilny nadal trzyma pełne nazwy stacji i utworów — wykresik dosiada się w narożniku bez ścinania tekstu.
  719. v1.66.310 czerwca 2026, 14:00

    Feed emisji radiowych — czytelny układ mobilny

    • Tryb „Najnowsze" w Pulse → Radio dostał osobny układ na telefonie: pełna nazwa stacji (bez ucinania „Radio Str…"), pełny artysta i tytuł utworu.
    • Górny pasek wiersza: data + godzina po lewej, licznik #x/y po prawej — łatwiej skanować historię.
    • Stacja prezentowana w wyróżnionej ramce na całej szerokości, z logo, częstotliwością FM i lokalizacją.
    • Desktop bez zmian — zachowany 6-kolumnowy grid z trendem i sparkline.
  720. v1.66.210 czerwca 2026, 13:00

    Mobilne kółka Kondycja/Wynik + „Skąd te punkty" w edycji projektu

    • Hero artysty na telefonie: dwa kółka (Kondycja + Wynik) skalują się teraz do szerokości ekranu i nie wystają już poza kartę.
    • Liczby wewnątrz kółek są mniejsze na mobile, większe na desktopie — wszystko mieści się w środku bez ścinania.
    • Admin: w edycji projektu pojawił się pełny moduł „Skąd te punkty?" — taki sam rozkład źródeł, kanałów i mnożników, jaki widzi artysta na swoim singlu.
    • Dodaliśmy też skrót w nawigacji bocznej edytora projektu (sekcja „Skąd te punkty"), żeby szybko skoczyć do rozkładu.
  721. v1.66.110 czerwca 2026, 12:30

    Co dziś warto kliknąć — sygnały z całego HUB-a artysty

    • Projekty: skok lub spadek wyniku dzień-do-dnia (≥3 pkt) → wpada z linkiem do detali projektu.
    • Pomysły AI: świeże propozycje z 14 dni — najpierw polecone przez ekipę, potem reszta.
    • Gotowość / Brief: szkice do dokończenia + briefy po review z action items.
    • Connect: oprócz ankiet i próśb teraz też otwarte misje (z odliczaniem do końca) i świeże dyskusje z ostatniego tygodnia.
    • Radio: nowe emisje radiowe w 7 dniach per projekt — z liczbą emisji i liczbą stacji.
  722. v1.66.010 czerwca 2026, 12:00

    Welcome: szerszy widget „Co dziś warto kliknąć", odchudzony Hub i Narzędzia

    • Naprawiony layout „Co dziś warto kliknąć" na telefonie — tytuły już nie wychodzą poza ekran, badge i tytuł zawijają się czysto.
    • Widget ciągnie sygnały z większej liczby modułów: nadchodzące premiery, świeży Pulse, otwarte ankiety i prośby Crew, zadania widoczne dla artysty (overdue + propozycje), nieprzeczytane wątki Skrzynki, zaplanowane posty Social w ciągu 48h.
    • „Hub na start — sprawdź codziennie" zwinięty do kompaktowej siatki 4×2 ikon-skrótów (bez opisów, checkboxów i progress bara) — to po prostu linkownia, więc nie zajmuje już pół ekranu.
    • „Twoje narzędzia" też zwinięte do siatki 3×2 / 6 ikon. Plakietka „coś nowego" zostaje jako mała kropka na kafelku.
    • Bonus „+3 pkt Connect za 1. klik dziś" nadal działa — odpala się przy pierwszym wejściu w dowolny kafelek Hubu.
  723. v1.65.110 czerwca 2026, 11:30

    Powiadomienia: kliknięcie znów przenosi tam, gdzie trzeba

    • Klik w pozycję w dzwoneczku poprawnie otwiera powiązaną stronę — zadanie, wiadomość, premierę, post w kalendarzu social itd. (wcześniej nic się nie działo, bo nawigacja gubiła parametr `?task=…` / `?assetId=…`).
    • Przycisk „oznacz wszystkie" działa od razu — odznacza nieprzeczytane, odświeża listę i chowa czerwony badge.
    • Pojedyncze powiadomienie też oznacza się jako przeczytane w momencie kliknięcia, a nie po kilku sekundach.
  724. v1.65.010 czerwca 2026, 10:00

    Welcome: konkretne sprawy zamiast licznikowych żółtych plakietek

    • Sekcja „Odwiedź teraz" zamieniona na „Co dziś warto kliknąć" — pokazuje konkretne pozycje (np. „Premiera 'Dwa kroki' za 3 dni", świeży event z Pulse Twojego projektu, otwarta ankieta crew z jej pytaniem), a nie liczby typu „4 aktywne premiery".
    • Lista jest spersonalizowana: premiery i eventy Pulse pobierają się tylko dla projektów danego artysty. Gdy nic się nie dzieje, cała sekcja po prostu znika.
    • „Hub na start — sprawdź codziennie" stracił żółte plakietki „dla Ciebie" i podpisy licznikowe (np. „1 aktywnych premier"). Zostały czyste, neutralne kafelki 8 stref — bez wizualnego szumu.
    • Pozycje w „Co dziś warto kliknąć" są sortowane wg pilności (najbliższe premiery / wysoki severity Pulse na górze).
  725. v1.64.210 czerwca 2026, 00:20

    S4A: zapisy i playlisty z presave

    • Bookmarklet S4A startuje pobieranie od dnia PRZED datą premiery — dzięki temu liczymy też presave'y i playlisty editorialowe dodane „dnia zero”.
    • Dla „Dwa kroki” Myka zapisy skoczyły z 10 do 76, a liczba playlist z 5 do 24 — zgodnie z tym, co pokazuje panel S4A po ręcznym ustawieniu zakresu od 4.06.
    • Dla utworów bez znanej daty premiery zostaje stary fallback na ostatnie 12 miesięcy.
  726. v1.64.19 czerwca 2026, 23:55

    S4A: ostatnie 12 miesięcy bez nadmiarowych zapytań

    • Bookmarklet S4A pobiera teraz zakres ostatnich 12 miesięcy, zgodny z tym, co można wygenerować w panelu S4A.
    • Wycofane zostało dodatkowe źródło `songstats/v0/songs`, bo dublowało zapytania i ponownie sprowadzało błędy 429.
    • Jeśli w projekcie mamy już Spotify Artist ID, bookmarklet nie odpytuje dodatkowo Spotify API o artystów — mniej zapytań, mniejsze ryzyko limitu.
  727. v1.64.09 czerwca 2026, 23:15

    S4A legacy fallback + Hub na start dla konkretnej artystki

    • Bookmarklet S4A znów odpytuje też majowe źródło `songstats/v0/songs` i porównuje je z obecnym endpointem S4A, żeby świeże single nie wpadały w zaniżone zapisy/playlisty.
    • Alert bookmarkletu pokazuje diagnostykę `legacy songstats/v0`, więc od razu widać, czy stare źródło zwróciło dane.
    • Hub na start i Odwiedź teraz filtrują premiery, Pulse, zadania, pomysły i inbox pod daną artystkę/projekty, zamiast eksponować globalne liczby z całego HUBa.
    • Karty startowe pokazują komunikaty typu „dla Ciebie” / „Do akcji”, a nie surowe liczniki nieistotne z perspektywy artystki.
  728. v1.63.99 czerwca 2026, 22:50

    S4A: zapisy i playlisty bez zaniżania świeżych singli

    • Bookmarklet dla zapisów i dodań do playlist najpierw bierze agregat S4A (`current_period_agg` / total), czyli liczbę widoczną w panelu, a dopiero potem sumuje serię dzienną.
    • To naprawia przypadek świeżych singli typu „Dwa kroki”, gdzie seria dzienna dawała 10 zapisów / 5 playlist zamiast 76 / 24.
    • Import S4A nie obniża już wcześniej zapisanych zapisów ani playlist, jeśli endpoint zwróci chwilowo mniejszą wartość.
  729. v1.63.89 czerwca 2026, 21:45

    S4A: świeże single bez zaniżonego okna danych

    • Fallback po HTTP 400 nie używa już `created_at` projektu jako startu zakresu — to zawężało nowe single do kilku dni i dawało np. 10 zapisów / 5 playlist.
    • Bookmarklet pyta teraz do jutra, bo endpoint S4A traktuje `toDate` jak granicę końcową i potrafił ucinać bieżący dzień.
    • Wybór agregacji preferuje lifetime/total przed current-period oraz obsługuje warianty nazw `playlistAdds`, żeby nie mieszać liczby aktualnych playlist z dodaniami.
    • Import S4A odświeża też timestamp Spotify, więc UI pokazuje aktualność danych z bookmarkletu.
  730. v1.63.79 czerwca 2026, 21:15

    S4A/Songstats: poprawione playlisty, zapisy i curated

    • Bookmarklet S4A nie pozwala już, żeby `playlists=0` nadpisało realne `playlist_adds` widoczne jako „Dodania do playlisty”.
    • Dla streamów, zapisów i playlist wybieramy najwyższą wiarygodną agregację z danych lifetime/wykresu, więc świeże single typu „Dwa kroki” nie wpadają w zaniżone okno okresowe.
    • Import Songstats zapisuje liczbę playlist/curated do pola pokazywanego w widżecie Spotify jako „curated”.
  731. v1.63.69 czerwca 2026, 20:30

    S4A: bez HTTP 400 dla premier z przyszłości

    • Bookmarklet pomija utwory, których premiera jest dopiero przed nami — nie odpytuje już Spotify o statystyki z nielogicznym zakresem dat.
    • Alert pokazuje teraz sekcję „pominięte przed premierą”, więc wiadomo, że to nie błąd ani utracony import.
    • Plan S4A przekazuje tytuł projektu do bookmarkletu, żeby komunikat był czytelny zamiast samego Spotify ID.
  732. v1.63.59 czerwca 2026, 20:00

    S4A bookmarklet: koniec z HTTP 429

    • Dodany throttling — 350 ms przerwy miedzy utworami, zeby Spotify nie blokowal kolejnych zapytan.
    • Retry na HTTP 429 z poszanowaniem naglowka Retry-After (do 4 prob, backoff 0.8s → 6s) — wczesniej tracilismy kazdy utwor po pierwszym throttlingu.
    • Wygeneruj nowy bookmarklet z /admin (wersja S4A-2026-06-09-throttle) — powinien pobrac calosc zamiast 8 utworow.
  733. v1.63.49 czerwca 2026, 19:30

    Kolka Wynik/Kondycja bez brzydkiego przyciecia

    • Poswiata kolek w hero singla artysty nie konczy sie juz w polowie — gradientowe blob-y zamkniete we wlasnym overflow-hidden wrapperze, a kafelek przepuszcza glow rings na zewnatrz.
  734. v1.63.39 czerwca 2026, 18:30

    Wieksze kolka Wynik/Kondycja + S4A wreszcie z lifetime

    • Kolka Wynik i Kondycja w hero singla artysty sa wieksze (h-44/48) i pokazuja liczby z dokladnoscia do 2 miejsc po przecinku.
    • Kondycja moze byc ujemna — wyswietlamy prawdziwa wartosc (np. -331,00%) i kolorujemy ring na czerwono zamiast pokazywac 0%.
    • Bookmarklet S4A bierze teraz dane lifetime (fromDate=2015-01-01) z automatycznym fallbackiem na date premiery/utworzenia przy HTTP 400.
    • pickAgg czyta total przed current_period_agg — playlisty, zapisy i streamy w HUBie zgadzaja sie z liczbami widocznymi w S4A (m.in. naprawia '0 playlist' u Conkiego, zanizone wyniki MieloW i Karci).
    • Usuniety pusty parametr country= z URLa — kolejna potencjalna przyczyna HTTP 400 znika.
  735. v1.63.29 czerwca 2026, 17:00

    Hub na start — codzienna checklista + bonus Connect

    • Nowa sekcja 'Hub na start — sprawdź codziennie' z 8 strefami (Gotowość, Projekty, Pulse, Connect, Pomysły, Zadania, Skrzynka, Kalendarz) — checklista zapamiętuje co obejrzałeś dziś.
    • Badge ⚡ coś nowego zapala się, gdy faktycznie coś się ruszyło (nowe Pulse, otwarte ankiety/prośby, świeże wiadomości, nowe pomysły).
    • Za codzienne odhaczenie pierwszej strefy łapiesz +3 pkt Connect (raz na dobę, idempotentnie).
    • Pod checklistą nowa siatka 'Twoje narzędzia' (Social, Radio, Mediaplan, Konsultacje, Wnioski promo, Premiery).
    • W hero 'Dokończ swoje premiery' doszedł skrót 'Odwiedź teraz' przewijający do checklisty.
    • Krok Gotowości 'Zgłoszenia promo' prosi teraz wprost o wskazanie kanałów do mocniejszego przyciśnięcia + krótką argumentację dla wydawcy.
  736. v1.63.19 czerwca 2026, 15:00

    Odwiedz teraz — sygnaly dnia na welcome

    • Na welcome'u, obok Dokoncz swoje premiery, doszedl widget Odwiedz teraz z kartami: aktywne premiery, swieze Pulse (7 dni), otwarte ankiety i prosby crew.
    • Karty maja deep-linki i licznik (ile czeka), z fioletem/szafirem/zielenia/bursztynem dla rozróżnienia.
    • Mobile-first: poziomy snap-scroll na telefonie, grid 2/4 kolumn na desktopie. Pokazujemy tylko kategorie, gdzie cos faktycznie sie dzieje.
  737. v1.63.09 czerwca 2026, 14:00

    Gotowosc premiery: kalendarz + zgloszenia promo

    • Checklist gotowosci ma dwa nowe kroki (boostery, nie wymagane): Dostepnosc w kalendarzu i Zgloszenia promo (bylo/bedzie).
    • Dostepnosc liczona z calendar_availability — wystarczy jeden wpis, by krok byl zielony. Link prowadzi prosto do /artist/gotowosc.
    • Promo liczone z artist_channel_submissions po projekcie premiery (fallback po artyscie). Link prowadzi do /artist/promo.
    • Oba kroki wpadaja takze do admin override’ow — mozna recznie ustawic done/todo.
  738. v1.62.09 czerwca 2026, 10:00

    Wynik z mnoznikami w hero + widget Wynik/Kondycja dla Artysty

    • Hero singla (admin i artysta) pokazuje teraz wynik zgodny z panelem Skad te punkty — kanaly + liczby + PressRoom. Koniec rozjazdu 3475 vs 4704.
    • Na samej gorze strony singla Artysty pojawil sie duzy widget Wynik + Kondycja z linkiem Zobacz, skad sie wziely Twoje punkty.
    • Spotify saves i playlisty liczymy z S4A (spotify_saves_real + spotify_playlist_adds), nie z SongStats.
    • Pasek udzialow ma teraz legende z kolorami i % oraz tooltipy. Grupa Wsparcie pozostale zmieniona na Wsparcie Streaming.
    • AI komentarz jak zrozumiec liczby dostaje pelny breakdown i aktywne mnozniki — mowi konkretnie, ile pkt jest skad.
    • Skrocony przycisk Studio Pre-save w Social (pelny opis zostal jako tooltip).
  739. v1.61.08 czerwca 2026, 21:00

    Skąd te punkty? — pełny rozkład wyniku

    • Nowa sekcja na stronie singla: kolorowy panel z paskiem udziału i kafelkami per kategoria (Wsparcie kanałów, Spotify, Radio, Shazam, TikTok, YouTube, Instagram, DSP, PressRoom).
    • Mnożniki z panelu algorytmu są wreszcie doliczane do wyniku — Spotify streamy, spiny radiowe, Shazamy, wyświetlenia TikTok/YT/IG, dosłuchy i feedback z PressRoomu.
    • W rozwinięciu każdej karty widać dokładną formułę: ilość × mnożnik = punkty.
    • Killswitch w /admin/algorithm: jedno kliknięcie wraca do wyniku tylko z Wsparcia kanałów; każdy mnożnik można też włączać/wyłączać osobno.
  740. v1.60.18 czerwca 2026, 22:30

    Kolor i światło: Promo, Feedback, Konsultacje

    • Promo (admin i artysta), Feedback artystów i Konsultacje dostały gradientowe, energiczne nagłówki zamiast smutnej czerni.
    • Nad każdą listą widać teraz kolorowe kafelki KPI (np. „Oczekuje”, „Zaakceptowane”, „Otwartych”) — od razu wiadomo, co czeka na decyzję.
    • Pigułki filtrów i przyciski akcji są bardziej czytelne na telefonie i mocniej zaznaczają wybór.
  741. v1.60.08 czerwca 2026, 22:00

    PressRoom + większy algorytm

    • PressRoom odzyskał górny pasek nawigacji admina — wszystkie podsekcje pressroomu trzymają się reszty panelu.
    • Panel mnożników algorytmu rozbudowany o pełen zestaw kanałów: Radio/TV, Shazam, TikTok, YouTube, Spotify, Instagram, PressRoom i DSP, pogrupowane kolorami.
    • Nowy przycisk „Wgraj brakujące mnożniki” jednym kliknięciem dosypuje brakujące wartości domyślne — nie trzeba uzupełniać ich ręcznie.
  742. v1.59.18 czerwca 2026, 21:45

    Online teraz: liczymy też gości

    • Ticker „online” w prawym górnym rogu pokazuje teraz także osoby niezalogowane, które przeglądają HUBa.
    • W popoverze pojawiła się nowa, bursztynowa grupa „Gości” — widać ile osób bez konta jest aktualnie na stronie.
    • Każdy gość liczony jest raz na sesję przeglądarki, więc liczba nie skacze przy odświeżaniu zakładek.
  743. v1.59.08 czerwca 2026, 21:30

    Kto jest teraz online?

    • Nowy zielony ticker „online” w prawym górnym rogu HUBa — pokazuje, ile osób korzysta z HUBa w tej samej chwili (z pulsującą zieloną kropką).
    • Kliknij ticker, by zobaczyć listę osób online z podziałem: Adminów, Artystów (i teamu), Dziennikarzy.
    • Każda osoba na liście ma awatar i krótki podpis (np. nazwa projektu artysty), żeby od razu było wiadomo, kto jest pod ręką.
    • Działa w czasie rzeczywistym — gdy ktoś wejdzie lub wyjdzie z HUBa, ticker sam się zaktualizuje.
  744. v1.58.88 czerwca 2026, 19:34

    Historia HUBa: godziny bez podwójnego przesunięcia

    • Changelog pokazuje teraz godzinę wpisaną przy wersji dokładnie wprost — bez dodatkowego przeliczania strefy czasowej przez przeglądarkę.
    • Poprawiony wpis v1.58.5: komentarze w Pulse były o 17:35, nie o 19:35.
  745. v1.58.78 czerwca 2026, 20:45

    Connect na mobile + Verdict opt-in w Gotowości

    • Connect ma teraz mobilną nawigację w siatce 4 kolumn (ikona + etykieta) — wszystkie zakładki (Dashboard, Feed, Crew Chat, Prośby, Misje, Ankiety, Dyskusje, Verdict, Ranking) widoczne bez przewijania.
    • Gotowość premiery: nowy opcjonalny krok „Verdict — ocena społeczności”. Ticker Zezwalam / Nie zezwalam wprost w karcie — jeden klik zapisuje decyzję i wlicza krok do %.
    • Z karty krokowej szybki skrót do modułu Verdict — możesz od razu posłuchać nagrań od innych artystów.
  746. v1.58.68 czerwca 2026, 20:05

    Pulse Radio: poprawiony widok mobilny

    • Nagłówek „Wszystkie emisje radiowe” przebudowany pod telefon — tytuł, statystyki (Plays/Stacji/Projektów w 3 kolumnach) i akcje (Najnowsze/Kompakt/Pełny/4 dni, CSV) układają się jedno pod drugim, nic nie wychodzi poza ekran.
    • Przełącznik widoku można teraz przewinąć poziomo, jeśli nie mieści się w kadrze — etykiety nie są ucinane.
    • Filtry (Projekt, Stacja, Data od, Data do) dostały etykiety i układają się 1/2/4 kolumn zależnie od szerokości — puste pola dat już nie wyglądają jak zepsute dropdowny.
  747. v1.58.58 czerwca 2026, 17:35

    Pulse (admin): komentarze pod wydarzeniami

    • Karta wydarzenia w /admin/pulse ma nowy przycisk „Komentarze” — rozwija ten sam wątek, który widzi artysta.
    • Wątek działa live (realtime) — komentarz admina pojawia się od razu u artysty i odwrotnie.
  748. v1.58.48 czerwca 2026, 19:10

    Cykl wydawniczy: poprawiona etykieta + admin wchodzi w Profil/Brief z Gotowości

    • Presskit → cykl wydawniczy: pierwsza opcja („<1 m-c”) nazywa się teraz „Częściej niż co miesiąc” — wcześniej była odwrotna etykieta.
    • Admin może otworzyć kroki „Profil artysty” i „Brief głosowy” z modułu /admin/gotowosc bez wchodzenia w tryb artysty — artistId jest przekazywany w URL.
    • Strona Profil i strona Brief głosowy honorują parametr ?artistId= z URL (nie pokazują już „Brak kont artystów” i nie kręcą się w nieskończoność).
  749. v1.58.38 czerwca 2026, 18:30

    Profile social napędzają AI Analizę i wracają do Gotowości

    • Krok „Profile social do AI (IG/TT/YT/FB/Spotify)” wraca do punktacji Gotowości — każda z 5 wymaganych platform = 20%.
    • Strona „Konta social” w nowej, kolorowej odsłonie: karta per platforma z prawdziwym logiem, badge „Wymagane do AI” / „Bonus”, autozapis i CTA do uruchomienia Analizy AI.
    • Dodaliśmy Spotify jako wymaganą platformę (wcześniej go nie było).
    • Autopublikacja postów na social została oznaczona jako „Wkrótce” — możesz już teraz zapisać handle, ale nie wpływa na %.
  750. v1.58.28 czerwca 2026, 17:45

    Gotowość: pre-save i social jako „Wkrótce” — poza punktacją

    • Kroki „Smartlink i pre-save” oraz „Konta social podpięte” są teraz oznaczone jako „Wkrótce” i nie wpływają na procent gotowości premiery.
    • Karta gotowości ma osobny blok „Wkrótce dostępne” — widać, że funkcja istnieje, ale nie blokuje 100%.
    • W zakładce Social dodaliśmy skrót prowadzący do Studia Pre-save (otwierasz je z karty konkretnej premiery).
  751. v1.58.18 czerwca 2026, 17:20

    Admin: moduł „Gotowość” w menu

    • W menu admina pojawił się nowy moduł „Gotowość” (`/admin/gotowosc`) — globalny podgląd gotowości premier wszystkich aktywnych projektów.
    • Lewy panel: lista premier z artystą, statusem i datą + wyszukiwarka po tytule/artyście. Prawy panel: ta sama karta gotowości, którą widzi artysta.
    • Archiwum projektów oraz premiery odrzucone są ukryte — widzisz tylko to, co realnie wymaga uwagi.
  752. v1.58.08 czerwca 2026, 17:00

    Presskit: cykl wydawniczy z rekomendacjami i ostrzeżeniem

    • W presskicie (krok „Premiera”) doszło pole „Twój przewidywany cykl wydawniczy” — wybierasz, jak często wydajesz muzykę.
    • Pięciostopniowa skala: rzadziej niż co miesiąc, co miesiąc, co 2 m-ce, co 3 m-ce, rzadziej niż co 3 m-ce — z opisem, dla jakiego celu (streaming/radio) dany rytm jest rekomendowany.
    • Stałe ostrzeżenie: cykl rzadszy niż co 3 miesiące działa niekorzystnie przy selekcji do radia i playlist (uznawany za „rzadki plan wydawniczy artysty”).
  753. v1.57.88 czerwca 2026, 16:40

    Wyjście z trybu artysty od razu wraca do menu admina

    • Kliknięcie „Wyjdź z trybu artysty” przerzuca admina prosto na /admin, więc menu i nawigacja od razu wracają do widoku adminowego.
    • Koniec sytuacji, w której po wyjściu z impersonacji zostawał pasek artysty aż do ręcznego wejścia w Projekty → wróć do menu admina.
  754. v1.57.78 czerwca 2026, 16:10

    Gotowość: wydane premiery wracają, archiwum zostaje schowane

    • Picker premier znów pokazuje także wydane premiery — kryterium widoczności jest teraz zgodne z modułem Projekty (liczy się status projektu, nie premiery).
    • Z listy znikają tylko premiery odrzucone oraz te, których projekt został zarchiwizowany w module Projekty.
    • Sortowanie od najnowszej daty premiery do najstarszej pozostaje bez zmian.
  755. v1.57.68 czerwca 2026, 15:30

    Bezpieczeństwo: koniec wycieku danych w trybie wejdź jako Artysta

    • Wywiady & PR, Radio i CSV emisji są teraz scope'owane po stronie serwera do artystów, do których użytkownik faktycznie ma dostęp — admin w trybie wejdź jako Artysta nie widzi już cudzych premier ani emisji.
    • Dodaliśmy wspólny helper resolveArtistScope, który honoruje impersonację nagłówkiem x-impersonate-artist-id i listę team_members.
    • Sprzątnięte błędne powiązania konta Nowy artysta z projektami Feel Alive (Conki), Noc (Antek Smykiewicz) i Znaki (MieloW) w project_artists.
  756. v1.57.48 czerwca 2026, 18:40

    Gotowość: wydane premiery wracają do pickera

    • W module Gotowość premiery widać teraz wszystkie aktywne projekty artysty, łącznie z tymi już wydanymi — nie znikają z listy po release.
    • Z listy nadal wyłączamy tylko premiery odrzucone, więc Artysta może domykać presskit, wywiady i materiały po dacie premiery.
    • Naprawia sytuację, w której u Kayomee w pickerze widać było tylko świeży szkic, a „Stacja lato” znikała zaraz po wydaniu.
  757. v1.57.38 czerwca 2026, 18:05

    Autozapis w Presskicie i Profilu Artysty

    • Presskit premiery zapisuje wpisywane pola automatycznie po krótkiej pauzie — bez konieczności klikania „Zapisz” przy każdym kroku.
    • Profil Artysty też dostał autozapis, więc częściowo uzupełnione dane zostają zachowane nawet jeśli artysta przejdzie dalej albo zamknie aplikację.
    • Widoczny status autozapisu informuje, czy dane są właśnie zapisywane, zapisane albo wymagają poprawy (np. niedokończony email).
  758. v1.57.28 czerwca 2026, 17:30

    Koniec migania w trybie „wejdź jako Artysta”

    • Naprawione miganie i pętla przekierowań, gdy admin przełączał się na podgląd jako Artysta — strona „Witaj” respektuje teraz tryb impersonacji.
    • Admin w trybie „jako Artysta” zostaje w widoku Artysty zamiast być wyrzucanym z powrotem do /admin i z powrotem na /welcome.
  759. v1.57.18 czerwca 2026, 17:00

    Admin Brand Kit z generatorem AI i czatem iteracji

    • Admin Brand Kit (ID Records) dostał ten sam świeży redesign co Brand Kit Artysty — hero z gradientem, kolorowe pola koloru, podgląd na żywo.
    • Nowy generator AI dla labelu: jedno kliknięcie tworzy spójną propozycję palety, fontów i tonu głosu dla całej wytwórni.
    • Czat iteracji z AI — można dopieszczać propozycję w stylu „bardziej editorial, mniej fioletu”, a jednym kliknięciem wczytać ją do formularza i zapisać.
  760. v1.57.08 czerwca 2026, 16:00

    Admin ląduje od razu w panelu zespołu + nowy Brand Kit z generatorem AI

    • Po zalogowaniu admin trafia od razu do /admin (panel zespołu ID Records), zamiast do menu Artysty — bez ręcznego przeklikiwania się.
    • Brand Kit Artysty dostał świeży, efektowny redesign zgodny z resztą HUB-a (hero z gradientem, podgląd na żywo, kolorowe pola koloru zamiast malutkich kwadracików).
    • Nowy generator AI: jedno kliknięcie tworzy propozycję palety, fontów, tonu głosu i hashtagów na bazie profilu artysty, briefów i historii premier.
    • Czat iteracji z AI — można dopieszczać propozycję w stylu „więcej różu, mniej zieleni”, a jednym kliknięciem wczytać ją do formularza i zapisać.
  761. v1.56.78 czerwca 2026, 15:10

    Działające linki w module Gotowość premiery

    • Smartlink i pre-save prowadzi teraz do właściwej strony zasobów pre-save (wcześniej kończyło się 404).
    • Brand kit, Konta social i Plan promo otwierają się od razu z odpowiednim artystą — bez komunikatu „Brak artistId”.
    • Działa zarówno w widoku Artysty, jak i w admińskim podglądzie „jako Artysta”.
  762. v1.56.68 czerwca 2026, 14:30

    Presskit z Gotowości otwiera się od razu, bez przewijania

    • Link „uzupełnij presskit” z modułu Gotowość premiery prowadzi teraz na dedykowaną podstronę, która od razu pokazuje formularz presskitu na górze.
    • Wcześniej Artysta lądował na stronie premiery i musiał scrollować lub klikać w zakładkę, żeby dotrzeć do presskitu — naprawione.
  763. v1.56.58 czerwca 2026, 13:46

    Poprawione przypisywanie artysty przy eksporcie projektu do Premier

    • Eksport projektu do Premier bierze teraz głównego artystę bezpośrednio z edycji projektu i synchronizuje go w premierze oraz w panelu Wykonawcy.
    • Istniejące błędnie przypisane premiery z migracji zostały skorygowane: Karcia, Conki i Antek Smykiewicz nie są już podpięci pod testowego „Nowego artystę”.
    • Zmiana głównego wykonawcy w premierze odświeża też nagłówek, listę premier i widok artysty, żeby nie zostawał stary badge.
  764. v1.56.28 czerwca 2026, 11:20

    Wszystkie daty i godziny w HUBie sa teraz pokazywane w polskiej strefie czasowej

    • Wszystkie daty i godziny w HUBie sa teraz pokazywane w polskiej strefie czasowej (Europe/Warsaw, czyli GMT+2 latem i GMT+1 zima) - nie tylko w module Pulse/Radio, ale rowniez w changelogu, kalendarzu, wywiadach, briefach, pressroomie, inboxie i wszystkich innych miejscach
  765. v1.56.08 czerwca 2026, 11:15

    Historia wersji HUBa: nowa podstrona /changelog z pelna lista wersji od 0

    • Historia wersji HUBa: nowa podstrona /changelog z pelna lista wersji od 0.0.1 do dzis, plakietka wersji jest teraz klikalna, a po wgraniu nowej wersji Artysci zobacza krotkie okienko 'Co nowego?' z wypunktowana lista zmian
  766. v1.55.28 czerwca 2026, 11:02

    Modul Gotowosc premiery: % wypelnienia liczone realnie wg pol (Wywiad i Brief li

    • Modul Gotowosc premiery: % wypelnienia liczone realnie wg pol (Wywiad i Brief licza wypelnione odpowiedzi vs. wszystkie pytania, Brand kit z 5 pol, Konta social 1/3 za platforme, Smartlink 1/2 za cover i link)
  767. v1.55.18 czerwca 2026, 10:59

    Presskit „Współtwórcy

    • Presskit „Współtwórcy
  768. v1.55.08 czerwca 2026, 10:56

    Nowa dedykowana podstrona /releases/$id/presskit — Gotowość premiery kieruje Art

    • Nowa dedykowana podstrona /releases/$id/presskit — Gotowość premiery kieruje Artystę prosto do formularza presskitu (bez szukania zakładki na stronie premiery)
  769. v1.54.68 czerwca 2026, 10:51

    Profil artysty respektuje impersonację admina — listMyArtistAccounts zwraca kont

    • Profil artysty respektuje impersonację admina — listMyArtistAccounts zwraca konto podglądanego artysty (zamiast „Brak kont artystów\
  770. v1.54.48 czerwca 2026, 10:36

    Baner instalacji PWA na home eksponuje nagrywanie audio/video dla wydawcy i pras

    • Baner instalacji PWA na home eksponuje nagrywanie audio/video dla wydawcy i prasy + mobile-friendly UI, briefy pod ręką i offline
    • Tryb pełnoekranowy usunięty, żeby zmieściło się 6 zalet
  771. v1.54.38 czerwca 2026, 10:31

    Fix kliknięcia w szkice briefów: /admin/briefy jest teraz layoutem z Outlet, a l

    • Fix kliknięcia w szkice briefów: /admin/briefy jest teraz layoutem z Outlet, a lista briefów działa jako osobna strona indeksowa
    • Dzięki temu wejście w /admin/briefy/:id faktycznie renderuje szczegóły briefu
  772. v1.54.28 czerwca 2026, 10:21

    Fix przełącznika 'Jako artysta': gdy admin impersonuje, AppShell zawsze renderuj

    • Fix przełącznika 'Jako artysta': gdy admin impersonuje, AppShell zawsze renderuje ArtistShell (artystyczna nawigacja), a wejście na dowolną trasę /admin/* przekierowuje do /welcome
    • Wyjście z trybu artysty przez baner u góry
  773. v1.54.18 czerwca 2026, 10:18

    Gotowość premiery v2: na welcome jest nowy widget pokazujący wszystkie aktywne p

    • Gotowość premiery v2: na welcome jest nowy widget pokazujący wszystkie aktywne premiery z paskiem postępu i 'następnym krokiem' (deep-link)
    • Karta gotowości dostaje banner świętujący 100%
    • Admin override pisze do artysty notyfikację w notification_queue (z notatką i deep-linkiem do /artist/gotowosc)
  774. v1.54.08 czerwca 2026, 10:12

    Nowy moduł Gotowości premiery: artysta widzi w /artist/gotowosc checkliste (prof

    • Nowy moduł Gotowości premiery: artysta widzi w /artist/gotowosc checkliste (profil, presskit, brief, wywiad, smartlink, brand kit, social, plan) z paskiem postepu i deep-linkami
    • Karta tez wstrzykniete na stronie premiery
    • Admin: /admin/artysci/<id>/gotowosc z 3-state override (auto/gotowe/do zrobienia) + notatki
  775. v1.53.38 czerwca 2026, 09:44

    Step 1 presskitu zaciąga teraz na żywo profil artysty: widać kartę „Co artysta w

    • Step 1 presskitu zaciąga teraz na żywo profil artysty: widać kartę „Co artysta wpisał w profilu
  776. v1.53.28 czerwca 2026, 09:35

    Step 1 presskitu ma teraz pełen sync z profilem artysty (engagement, social, pri

    • Step 1 presskitu ma teraz pełen sync z profilem artysty (engagement, social, priorytety platform, kategorie, special_circumstances)
    • Badge artysty w adminie jest klikalny — prowadzi do panelu wykonawców, gdzie zmienisz głównego lub dodasz feat
  777. v1.53.18 czerwca 2026, 09:30

    Komentarze pod wydarzeniami Pulse (live, z powiadomieniami), AI Szybko/Iteruj na

    • Komentarze pod wydarzeniami Pulse (live, z powiadomieniami), AI Szybko/Iteruj na pełną historię w PressRoomie
    • Sync profil→presskit Step 1 i klikalny badge artysty idą w v1.53.2
  778. v1.53.08 czerwca 2026, 09:17

    Crew Chat ma dwa kanały: Label (z Wydawcą) i Connect (między Artystami) z auto-z

    • Crew Chat ma dwa kanały: Label (z Wydawcą) i Connect (między Artystami) z auto-zapisem do uczestników
    • Bloki AI w PressRoomie, sync profil→presskit, komentarze pod Pulse i klikalny badge artysty idą w kolejnych patchach v1.53.x
  779. v1.52.128 czerwca 2026, 07:58

    Bookmarklet S4A znów filtruje tylko projekty aktywne, a w alercie pokazuje ile a

    • Bookmarklet S4A znów filtruje tylko projekty aktywne, a w alercie pokazuje ile aktywnych ma Spotify ID i wymienia te, którym go brakuje (żeby było jasne dlaczego liczba pobranych ≠ liczbie aktywnych)
  780. v1.52.118 czerwca 2026, 06:52

    Naprawiono badge artysty w nagłówku premiery (bierze teraz głównego z release_ar

    • Naprawiono badge artysty w nagłówku premiery (bierze teraz głównego z release_artists, a nie „Nowy artysta” z artist_id), zwiększono limit znaków w opcjach ankiety ze 120 do 500 oraz odblokowano bookmarklet S4A na wszystkie projekty (nie tylko status=active) z nowym tagiem wersji
  781. v1.52.107 czerwca 2026, 21:55

    Fix: przywrócony link „Użytkownicy” w górnej belce admina, briefy artysty wymaga

    • Fix: przywrócony link „Użytkownicy” w górnej belce admina, briefy artysty wymagają teraz wyboru konkretnego projektu/premiery, a przełączanie „Stałe pytania” ↔ „Mów co chcesz” nie miesza już pytań ani postępu
    • Naprawiono też zapis wideo briefów (RLS storage) oraz podgląd kamery podczas nagrywania wywiadu
  782. v1.52.97 czerwca 2026, 17:08

    Wersja v1.52.9

    • Drobne ulepszenia i poprawki.
  783. v1.52.85 czerwca 2026, 14:28

    Wersja v1.52.8

    • Drobne ulepszenia i poprawki.
  784. v1.52.75 czerwca 2026, 13:12

    Wersja v1.52.7

    • Drobne ulepszenia i poprawki.
  785. v1.52.65 czerwca 2026, 12:52

    Wersja v1.52.6

    • Drobne ulepszenia i poprawki.
  786. v1.52.55 czerwca 2026, 12:34

    Wersja v1.52.5

    • Drobne ulepszenia i poprawki.
  787. v1.52.45 czerwca 2026, 12:30

    Wersja v1.52.4

    • Drobne ulepszenia i poprawki.
  788. v1.52.35 czerwca 2026, 12:16

    Naprawione linki „Moje briefy

    • Naprawione linki „Moje briefy
  789. v1.52.25 czerwca 2026, 12:11

    Admin desktop: PressRoom w górnej belce, a Single (presskit), Katalog kanałów, F

    • Admin desktop: PressRoom w górnej belce, a Single (presskit), Katalog kanałów, Feedback, Broadcast, Kalendarz i Algorytm wskakują do dolnej belki nawigacji
    • Dublujące się skróty zniknęły z paska przycisków nad listą projektów — zostały tylko te bez własnego linku w belkach (Social, Plan social AI, Badge'y singli, Email test, Konfiguracja)
  790. v1.52.15 czerwca 2026, 11:53

    Newsletter (pressroom): okładki singli już nie znikają następnego dnia

    • Newsletter (pressroom): okładki singli już nie znikają następnego dnia
    • Wcześniej w bloki zapisywaliśmy tymczasowy link do Dropboksa (~4h ważności) — teraz każda okładka jest mirrorowana do publicznego bucketa (broadcast-images/covers/{id}.jpg) i zapisywana jako stabilny URL
    • Stare newslettery auto-leczą się przy otwarciu w edytorze i tuż przed wysyłką, więc również wcześniej zapisane drafty wrócą do życia
  791. v1.52.05 czerwca 2026, 11:46

    Strona singla (press): sekcja 'Wywiad z Artystą' przeniesiona wysoko — tuż pod i

    • Strona singla (press): sekcja 'Wywiad z Artystą' przeniesiona wysoko — tuż pod informacją prasową, nad statystykami
    • Dialog próśb (IDsy/pozdrowienia/wywiad) przebudowany w pełny edytor: typ audycji/medium, nazwa programu, forma kontaktu (telefon/Zoom/live/nagranie), czas trwania, 3 proponowane sloty z walidacją przeciw kalendarzowi dostępności artysty (zielono = okno promo, czerwono = zajęte) + podgląd wolnych okien na 30 dni
    • Pełna obsługa mobile (sheet, sticky CTA)
  792. v1.51.05 czerwca 2026, 11:40

    Story Editor: tła wideo z dźwiękiem (z biblioteki rolek/canvasów oraz z uploadu)

    • Story Editor: tła wideo z dźwiękiem (z biblioteki rolek/canvasów oraz z uploadu)
    • Sekcja 'Twoje wideo i rolki' wczytuje gotowe materiały wygenerowane w innych modułach, wideo gra w podglądzie 9:16 z dźwiękiem (toggle Wycisz), tekst i stickery układają się na ruchomym tle
    • Zapis story = poster PNG + referencja do źródłowego wideo w brief.layers (admin widzi co użyto)
  793. v1.50.05 czerwca 2026, 11:35

    Widoczność modułów: Crew chat w górnej belce (admin + artysta), 'Briefy artystów

    • Widoczność modułów: Crew chat w górnej belce (admin + artysta), 'Briefy artystów' w pasku admina, wielki gradientowy CTA 'Wywiad ze mną' na /artist/wywiady i /admin/wywiady + osobny kafel 'Brief ode mnie' przy każdej premierze artysty
    • Edytor Story dla admina: nowy hub z wyszukiwarką artystów — admin wybiera artystę i otwiera pełen edytor (9:16, tła AI, grafiki/rolki z generatorów, warstwy, stickery)
    • Drobne porządki UX, mobile-first zachowane
  794. v1.49.05 czerwca 2026, 10:59

    Wywiad ze mną: artysta nagrywa głosowy brief do swojej premiery (sekcje: oczekiw

    • Wywiad ze mną: artysta nagrywa głosowy brief do swojej premiery (sekcje: oczekiwania, pomysły, działania, obawy, zasoby — albo open-mic: jedno długie nagranie, AI dzieli na sekcje)
    • AI robi transkrypcję, streszczenie per pytanie, TL;DR, action items i sygnały dla generatora pomysłów
    • Admin dostaje panel /admin/briefy z TL;DR, action items i odsłuchem oryginałów (audio/video)
    • Nowy kafel 'Brief ode mnie' (gradient fuchsia/cyan) na stronie singla
    • Drop-in komponent VoiceTextarea (mikrofon w rogu pola → AI streszcza wypowiedź i wkleja do textarea, oryginał zostaje w voice_field_recordings)
  795. v1.48.05 czerwca 2026, 10:39

    Singiel artysty: nowa, efektowna sekcja 'Media · PR · Wywiady' (gradient fuchsia

    • Singiel artysty: nowa, efektowna sekcja 'Media · PR · Wywiady' (gradient fuchsia/cyan, kafle IDsy / Pozdrowienia / Q&A z licznikami i listą ostatnich zleceń) — pokazuje wszystkie prośby admina i dziennikarzy w jednym miejscu, z deadline'ami i statusami
    • Dialog 'Zaproś artystę do wywiadu' obsługuje nowe rodzaje: IDsy, pozdrowienia, Q&A i custom (deadline + wymagane formaty wideo/audio/tekst)
    • Pod spodem: tabela interview_deliverables, klientowy ContentDeliveryRecorder z dual-streamem (wideo + osobne audio jednym nagraniem), serwerowa transkrypcja przez Gemini i AI-polish
  796. v1.47.15 czerwca 2026, 10:08

    Admin Wywiady & PR: nowy przycisk 'Zaproś artystę do wywiadu' — wypełniasz formu

    • Admin Wywiady & PR: nowy przycisk 'Zaproś artystę do wywiadu' — wypełniasz formularz za dziennikarza (artysta, premiera, opcjonalnie konkretny dziennikarz, rodzaj/format/audycja/długość, brief, do 3 proponowanych terminów)
    • Zaproszenie idzie od razu do artysty (pomija weryfikację e-mail), oznaczony dziennikarz dostaje powiadomienie po decyzji artysty, a admin dostaje notyfikację o każdej akceptacji / kontrpropozycji / odrzuceniu (kindy: interview_scheduled_admin, interview_counter_proposed_admin, interview_rejected_admin)
  797. v1.47.05 czerwca 2026, 10:01

    Planowanie wywiadów ze strony singla — faza 1 (backend): nowa tabela slotów inte

    • Planowanie wywiadów ze strony singla — faza 1 (backend): nowa tabela slotów interview_request_slots, prośba o wywiad nosi teraz audycję, format (telefon/Zoom/live/nagrane), długość i do 3 proponowanych terminów
    • Server fns: getReleaseAvailabilityWindow (publiczne okna dostępności artysty z calendar_availability), artistRespondToSlots (akceptuj/kontrpropozycja/odrzuć — akceptacja tworzy event w kalendarzu artysty i blokuje slot), journalistAcceptCounter, listRequestSlots
    • Notyfikacje in-app do artysty/dziennikarza po decyzji
    • Status prośby rozszerzony o 'scheduled' i 'counter_proposed'
    • UI dziennikarza (mini-kalendarz w dialogu prośby) i karta odpowiedzi artysty + banner dostępności w /calendar dolatują w v1.47.1
  798. v1.46.15 czerwca 2026, 09:51

    Karty pomysłów w adminie na telefonie: kontrolki statusu i kosz wjeżdżają w róg

    • Karty pomysłów w adminie na telefonie: kontrolki statusu i kosz wjeżdżają w róg karty (absolute), treść dostaje pełną szerokość, ikona i padding skalują się na mobile — koniec łamania tytułu/opisu po jednym słowie na linijkę
    • Przypomnienie: tracking otwarć/odsłuchów/pobrań wywiadów oraz dostęp dziennikarzy bez logowania działa już dziś przez magic linki (/press/m/<token> → strona singla z sekcją Wywiad), generator linków siedzi w /admin/pressroom/magic-links
  799. v1.46.05 czerwca 2026, 09:40

    Mobile/UX fixy: edytor Stories liczy podgląd telefonu z szerokości viewportu (dz

    • Mobile/UX fixy: edytor Stories liczy podgląd telefonu z szerokości viewportu (działa na telefonie), Artist Switcher ma dropdown dopasowany do ekranu, panel /admin/wywiady ma dwie zakładki (Wywiady + Prośby dziennikarzy) zamiast osobnych podstron
    • Nowy moduł Radio dla artysty (/artist/radio) widoczny w drugim rzędzie nawigacji — RLS sam ogranicza emisje do jego projektów
  800. v1.45.05 czerwca 2026, 08:21

    Mediaplan + Wywiady & PR rozdzielone: osobny moduł 'Mediaplan' i osobny 'Wywiady

    • Mediaplan + Wywiady & PR rozdzielone: osobny moduł 'Mediaplan' i osobny 'Wywiady & PR' w hubie/landingu artysty; admin dostaje sekcję /admin/mediaplan w głównym menu i Story jako osobny generator w Social subnav
    • Górne menu podzielone na 2 wiersze (Premiery w górnym, Wywiady & PR w dolnym) — i dla admina, i dla artysty
    • Nowy przycisk 'Wrzuć w mediaplan' obok kart Pulse: artysta wrzuca do swojego mediaplanu, admin wybiera (artysta vs wydawca ID Records)
    • Nowy hub /artist/wywiady listuje premiery z linkami do wywiadu i próśb dziennikarzy
  801. v1.44.05 czerwca 2026, 01:35

    Wywiady Faza 2 — domknięcie: sekcja 'Prośby wywiadowe' w /admin/inbox-approvals

    • Wywiady Faza 2 — domknięcie: sekcja 'Prośby wywiadowe' w /admin/inbox-approvals (jeden hub akceptacji), badge 🎤 wywiad w tabeli kanałów projektu (zarówno desktop jak i karta mobile), nowa karta 'Aktywność wokół wywiadu' w edytorze projektu admina (totals + top dziennikarze + ostatnie zdarzenia z press_events) oraz kolumna '🎤 Wywiad' w analityce newslettera (all-time per dziennikarz: odsłuchy / pobrania / prośby)
  802. v1.43.05 czerwca 2026, 01:29

    Wywiady Faza 2: prośby dziennikarzy (IDsy / powitania / custom) z weryfikacją ma

    • Wywiady Faza 2: prośby dziennikarzy (IDsy / powitania / custom) z weryfikacją magic-linkiem, skrzynka dziennikarza, akceptacja u admina i widok 'Prośby PR' u artysty przy premierze
    • Tracking odsłuchu i pobrań fragmentów wywiadu z kwadratowym scoringiem kanału (Play 0.05, Download 0.10, Request IDsy 0.25, Wywiad 0.50, baza skala 5, mnoznik (scaleMax/5)^2)
    • Nowy modul 'Mediaplan & Wywiady' na landing + welcome, link 'Prosby PR' w sidebarze admina i na karcie premiery artysty
    • Powiadomienia o nowych prosbach i akceptacjach przez trigger na bazie
    • Pozostale do v1.44: badge wywiad w tabeli kanalow projektu, kolumny interview w newsletter analytics, sekcja 'Aktywnosc wokol wywiadu' w edytorze projektu admina, peln integracja z /admin/inbox-approvals
  803. v1.42.05 czerwca 2026, 01:01

    Wywiad z Artysta – wpiecie sekcji na strone singla dla dziennikarzy, link 'Wywia

    • Wywiad z Artysta – wpiecie sekcji na strone singla dla dziennikarzy, link 'Wywiad' w kreatorze premiery oraz pozycja 'Wywiady' w nawigacji admina
    • Studio Stories: pelny redesign edytora w stylu Instagrama – inline AI generator tla (Lovable AI / Gemini), gradienty/solid/zdjecie/biblioteka, warstwy tekstu i stickerow z rotacja, skala, opacity i snap-to-center, podglad w ramce telefonu z safe-zone, undo/redo (Ctrl+Z), inspektor warstw i sticker-teksty (NEW, OUT NOW, PRE-SAVE)
  804. v1.41.05 czerwca 2026, 00:52

    Wywiad z Artysta (Faza 1): kreator z 9 stalymi pytaniami + wlasne pytania, nagry

    • Wywiad z Artysta (Faza 1): kreator z 9 stalymi pytaniami + wlasne pytania, nagrywanie audio/video w przegladarce lub upload, auto-transkrypcja przez Lovable AI (Gemini), akceptacja przez A&R per odpowiedz z flagami udostepnienia (audio+video / audio / tekst) i sekcja Wywiad z Artysta na stronie singla dla dziennikarzy z pobieraniem w 3 wersjach
  805. v1.40.05 czerwca 2026, 00:11

    Studio Stories - edytor 9:16 dla IG/FB Stories: tlo z istniejacych grafik lub up

    • Studio Stories - edytor 9:16 dla IG/FB Stories: tlo z istniejacych grafik lub upload, warstwy tekstu (tytul/podtytul/CTA/data) z drag&drop, kolory z Brand Kit, fonty (Inter/Space Grotesk/DM Serif/JetBrains/Bebas), pigulki tla, eksport 1080x1920 PNG do Social jako draft
    • Zamyka v1.39 - calosc roadmapy social juz dziala end-to-end
  806. v1.39.25 czerwca 2026, 00:02

    Rozbudowany brief generatora grafik: nowe pola (grupa docelowa, ton glosu, CTA,

    • Rozbudowany brief generatora grafik: nowe pola (grupa docelowa, ton glosu, CTA, obecnosc artysty - twarz/sylwetka/przedmioty/bez) + tryb '4 rozne kierunki estetyczne' (Editorial / Streetwear / Neon Night / Dokumentalny zamiast 4 wariantow tego samego)
    • Wszystko opcjonalne, wstrzykiwane do promptu obok Brand Kitu
    • Edytor stories (Konva) i osobny flow pending_review - w kolejnej iteracji (admin queue juz dziala jako de facto akceptacja)
  807. v1.39.14 czerwca 2026, 23:56

    Mediaplan ID Records - feed sukcesow artystow: nowa zakladka w admin Social skan

    • Mediaplan ID Records - feed sukcesow artystow: nowa zakladka w admin Social skanuje ostatnie 14 dni (premiery, airplay z radio, zaakceptowane pomysly) i pokazuje karty 'chwalebnych momentow'
    • Jeden klik 'Wrzuc w mediaplan' generuje pakiet pod profile ID Records (Story IG + Post IG + Post FB + TT) z gotowym copy, podziekowaniem stacjom i brandingiem labelu
    • Trafia jako szkice do kolejki Social
    • Idempotentne - kazdy moment mozna spakowac tylko raz
  808. v1.39.04 czerwca 2026, 23:52

    Mediaplan IG/FB/TT (MVP): nowa zakladka 'Mediaplan' w pasku Social pokazuje kanb

    • Mediaplan IG/FB/TT (MVP): nowa zakladka 'Mediaplan' w pasku Social pokazuje kanban slotow do publikacji recznej (copy, brief, sugerowana data, oznacz jako opublikowane)
    • Zamknieta petla pomysl -> pakiet: na kazdym zaakceptowanym pomysle przycisk 'Wrzuc do mediaplanu' - AI rozbija pomysl na 4-5 slotow (IG Story + Post + Reel + FB + TikTok) z gotowym copy i sugerowanym czasem publikacji
    • Reszta zakresu v1.39 (rozbudowany brief generatora grafik, ID Records feed sukcesow, edytor stories) - w nastepnych iteracjach
  809. v1.38.14 czerwca 2026, 23:45

    Doprecyzowanie zakresu v1

    • Doprecyzowanie zakresu v1.39 (Mediaplan IG/FB/TT): generator artysty zasysa zaakceptowane pomysły z modułu Pomysły i zamienia je na gotowe pakiety publikacji (zamykamy pętlę pomysł→akcept→post)
    • Dodatkowo nowa zakładka „Mediaplan ID Records
  810. v1.38.04 czerwca 2026, 23:40

    Pakiet UX: (1) maskujemy adres email dziennikarza w tooltipie AUTO w widoku arty

    • Pakiet UX: (1) maskujemy adres email dziennikarza w tooltipie AUTO w widoku artysty, (2) zielona kropka pressroom ma teraz pełny HoverCard z opisem zamiast pustego title, (3) AI „Co to da?\
  811. v1.37.24 czerwca 2026, 22:51

    Newsletter pressroom rozsyłany teraz z anti-spam jitterem: losowo 10-20 maili na

    • Newsletter pressroom rozsyłany teraz z anti-spam jitterem: losowo 10-20 maili na sub-batch i losowa przerwa 30-90 sekund między sub-batchami (zamiast sztywnych 40/30s)
    • Mniej szans na trafienie filtrów antyspamowych, bardziej „ludzkie” tempo wysyłki
  812. v1.37.14 czerwca 2026, 22:47

    Sprzątamy nagłówek HUB (zamiast duplikatu „Projekty / Projekt

    • Sprzątamy nagłówek HUB (zamiast duplikatu „Projekty / Projekt
  813. v1.37.04 czerwca 2026, 22:02

    Globalny przełącznik artysty w nagłówku HUB — jednym kliknięciem przełączasz akt

    • Globalny przełącznik artysty w nagłówku HUB — jednym kliknięciem przełączasz aktywne konto, a wybór trzyma się w localStorage
    • Kalendarz, Pomysły, Pulse i Generator social automatycznie podchwytują wybranego artystę (zamiast wymagać `?artistId=` w URL albo wybierać pierwsze konto z listy)
    • Widoczny tylko dla osób z >=1 podpiętym kontem; przy jednym koncie pokazuje tylko avatar bez listy
  814. v1.36.64 czerwca 2026, 21:50

    Wersja v1.36.6

    • Drobne ulepszenia i poprawki.
  815. v1.36.54 czerwca 2026, 21:42

    Wersja v1.36.5

    • Drobne ulepszenia i poprawki.
  816. v1.36.44 czerwca 2026, 13:03

    Wersja v1.36.4

    • Drobne ulepszenia i poprawki.
  817. v1.36.34 czerwca 2026, 12:54

    Wersja v1.36.3

    • Drobne ulepszenia i poprawki.
  818. v1.36.23 czerwca 2026, 15:40

    Wersja v1.36.2

    • Drobne ulepszenia i poprawki.
  819. v1.36.13 czerwca 2026, 14:15

    Wersja v1.36.1

    • Drobne ulepszenia i poprawki.
  820. v1.36.03 czerwca 2026, 14:09

    Wersja v1.36.0

    • Drobne ulepszenia i poprawki.
  821. v1.35.03 czerwca 2026, 13:58

    Wersja v1.35.0

    • Drobne ulepszenia i poprawki.
  822. v1.34.03 czerwca 2026, 13:30

    Wersja v1.34.0

    • Drobne ulepszenia i poprawki.
  823. v1.33.03 czerwca 2026, 13:15

    Wersja v1.33.0

    • Drobne ulepszenia i poprawki.
  824. v1.32.63 czerwca 2026, 12:49

    Wersja v1.32.6

    • Drobne ulepszenia i poprawki.
  825. v1.32.53 czerwca 2026, 12:31

    Wersja v1.32.5

    • Drobne ulepszenia i poprawki.
  826. v1.32.43 czerwca 2026, 12:25

    Wersja v1.32.4

    • Drobne ulepszenia i poprawki.
  827. v1.32.33 czerwca 2026, 12:23

    Wersja v1.32.3

    • Drobne ulepszenia i poprawki.
  828. v1.32.23 czerwca 2026, 12:16

    Wersja v1.32.2

    • Drobne ulepszenia i poprawki.
  829. v1.32.13 czerwca 2026, 12:11

    Wersja v1.32.1

    • Drobne ulepszenia i poprawki.
  830. v1.32.03 czerwca 2026, 12:08

    Wersja v1.32.0

    • Drobne ulepszenia i poprawki.
  831. v1.31.63 czerwca 2026, 12:03

    Wersja v1.31.6

    • Drobne ulepszenia i poprawki.
  832. v1.31.53 czerwca 2026, 11:57

    Wersja v1.31.5

    • Drobne ulepszenia i poprawki.
  833. v1.31.43 czerwca 2026, 11:49

    Wersja v1.31.4

    • Drobne ulepszenia i poprawki.
  834. v1.31.33 czerwca 2026, 11:36

    Wersja v1.31.3

    • Drobne ulepszenia i poprawki.
  835. v1.31.23 czerwca 2026, 11:19

    Wersja v1.31.2

    • Drobne ulepszenia i poprawki.
  836. v1.31.13 czerwca 2026, 11:11

    Wersja v1.31.1

    • Drobne ulepszenia i poprawki.
  837. v1.31.03 czerwca 2026, 10:59

    Wersja v1.31.0

    • Drobne ulepszenia i poprawki.
  838. v1.30.53 czerwca 2026, 10:47

    Wersja v1.30.5

    • Drobne ulepszenia i poprawki.
  839. v1.30.43 czerwca 2026, 10:44

    Wersja v1.30.4

    • Drobne ulepszenia i poprawki.
  840. v1.30.33 czerwca 2026, 10:43

    Wersja v1.30.3

    • Drobne ulepszenia i poprawki.
  841. v1.30.23 czerwca 2026, 10:40

    Wersja v1.30.2

    • Drobne ulepszenia i poprawki.
  842. v1.30.13 czerwca 2026, 10:31

    Wersja v1.30.1

    • Drobne ulepszenia i poprawki.
  843. v1.30.03 czerwca 2026, 10:19

    Wersja v1.30.0

    • Drobne ulepszenia i poprawki.
  844. v1.29.33 czerwca 2026, 10:12

    Wersja v1.29.3

    • Drobne ulepszenia i poprawki.
  845. v1.29.23 czerwca 2026, 10:09

    Wersja v1.29.2

    • Drobne ulepszenia i poprawki.
  846. v1.29.13 czerwca 2026, 09:39

    Wersja v1.29.1

    • Drobne ulepszenia i poprawki.
  847. v1.29.03 czerwca 2026, 09:13

    Wersja v1.29.0

    • Drobne ulepszenia i poprawki.
  848. v1.28.33 czerwca 2026, 01:37

    Wersja v1.28.3

    • Drobne ulepszenia i poprawki.
  849. v1.28.23 czerwca 2026, 01:32

    Wersja v1.28.2

    • Drobne ulepszenia i poprawki.
  850. v1.28.13 czerwca 2026, 01:26

    Wersja v1.28.1

    • Drobne ulepszenia i poprawki.
  851. v1.28.03 czerwca 2026, 01:18

    Wersja v1.28.0

    • Drobne ulepszenia i poprawki.
  852. v1.27.03 czerwca 2026, 01:09

    Wersja v1.27.0

    • Drobne ulepszenia i poprawki.
  853. v1.26.03 czerwca 2026, 00:59

    Wersja v1.26.0

    • Drobne ulepszenia i poprawki.
  854. v1.25.03 czerwca 2026, 00:55

    Wersja v1.25.0

    • Drobne ulepszenia i poprawki.
  855. v1.24.03 czerwca 2026, 00:44

    Wersja v1.24.0

    • Drobne ulepszenia i poprawki.
  856. v1.23.13 czerwca 2026, 00:40

    Wersja v1.23.1

    • Drobne ulepszenia i poprawki.
  857. v1.23.03 czerwca 2026, 00:38

    Wersja v1.23.0

    • Drobne ulepszenia i poprawki.
  858. v1.22.03 czerwca 2026, 00:24

    Wersja v1.22.0

    • Drobne ulepszenia i poprawki.
  859. v1.21.22 czerwca 2026, 23:55

    Wersja v1.21.2

    • Drobne ulepszenia i poprawki.
  860. v1.21.12 czerwca 2026, 23:51

    Wersja v1.21.1

    • Drobne ulepszenia i poprawki.
  861. v1.21.02 czerwca 2026, 23:20

    Wersja v1.21.0

    • Drobne ulepszenia i poprawki.
  862. v1.20.12 czerwca 2026, 23:13

    Wersja v1.20.1

    • Drobne ulepszenia i poprawki.
  863. v1.20.02 czerwca 2026, 22:51

    Wersja v1.20.0

    • Drobne ulepszenia i poprawki.
  864. v1.19.22 czerwca 2026, 22:46

    Wersja v1.19.2

    • Drobne ulepszenia i poprawki.
  865. v1.19.12 czerwca 2026, 22:40

    Wersja v1.19.1

    • Drobne ulepszenia i poprawki.
  866. v1.19.02 czerwca 2026, 22:05

    Wersja v1.19.0

    • Drobne ulepszenia i poprawki.
  867. v1.18.02 czerwca 2026, 21:39

    Wersja v1.18.0

    • Drobne ulepszenia i poprawki.
  868. v1.17.02 czerwca 2026, 21:33

    Wersja v1.17.0

    • Drobne ulepszenia i poprawki.
  869. v1.16.02 czerwca 2026, 21:22

    Wersja v1.16.0

    • Drobne ulepszenia i poprawki.
  870. v1.15.42 czerwca 2026, 21:17

    Wersja v1.15.4

    • Drobne ulepszenia i poprawki.
  871. v1.15.32 czerwca 2026, 21:13

    Wersja v1.15.3

    • Drobne ulepszenia i poprawki.
  872. v1.15.22 czerwca 2026, 19:24

    Wersja v1.15.2

    • Drobne ulepszenia i poprawki.
  873. v1.15.12 czerwca 2026, 19:13

    Wersja v1.15.1

    • Drobne ulepszenia i poprawki.
  874. v1.15.02 czerwca 2026, 18:55

    Wersja v1.15.0

    • Drobne ulepszenia i poprawki.
  875. v1.14.22 czerwca 2026, 18:28

    Wersja v1.14.2

    • Drobne ulepszenia i poprawki.
  876. v1.14.12 czerwca 2026, 18:20

    Wersja v1.14.1

    • Drobne ulepszenia i poprawki.
  877. v1.14.02 czerwca 2026, 18:12

    Wersja v1.14.0

    • Drobne ulepszenia i poprawki.
  878. v1.13.32 czerwca 2026, 18:04

    Wersja v1.13.3

    • Drobne ulepszenia i poprawki.
  879. v1.13.22 czerwca 2026, 18:00

    Wersja v1.13.2

    • Drobne ulepszenia i poprawki.
  880. v1.13.12 czerwca 2026, 17:56

    Wersja v1.13.1

    • Drobne ulepszenia i poprawki.
  881. v1.13.02 czerwca 2026, 17:49

    Wersja v1.13.0

    • Drobne ulepszenia i poprawki.
  882. v1.12.12 czerwca 2026, 17:17

    Wersja v1.12.1

    • Drobne ulepszenia i poprawki.
  883. v1.12.02 czerwca 2026, 17:10

    Wersja v1.12.0

    • Drobne ulepszenia i poprawki.
  884. v1.11.02 czerwca 2026, 16:49

    Wersja v1.11.0

    • Drobne ulepszenia i poprawki.
  885. v1.10.12 czerwca 2026, 16:42

    Wersja v1.10.1

    • Drobne ulepszenia i poprawki.
  886. v1.10.02 czerwca 2026, 16:38

    Selektor medium per dziennikarz w pitchu: dla osób z >1 powiązanymi kanałami moż

    • Selektor medium per dziennikarz w pitchu: dla osób z >1 powiązanymi kanałami możesz wybrać, którego nazwę wstrzyknąć jako {{outlet}}
    • Domyślnie używamy pola „outlet
  887. v1.9.02 czerwca 2026, 16:33

    Multi-segment w newsletterze i pitchu: zamiast jednego segmentu możesz teraz zaz

    • Multi-segment w newsletterze i pitchu: zamiast jednego segmentu możesz teraz zaznaczyć kilka (checkboxy)
    • Wysyłka idzie do unii — rodzic automatycznie dociąga swoje podsegmenty, a dziennikarz z dwóch segmentów dostanie wiadomość raz
  888. v1.8.02 czerwca 2026, 16:25

    Segmenty PressRoom: dodałem hierarchię (parent → child)

    • Segmenty PressRoom: dodałem hierarchię (parent → child)
    • Możesz teraz robić podsegmenty (np. „Radio › Rock\
  889. v1.7.52 czerwca 2026, 16:20

    Katalog kanałów: dodałem kolumnę „Medium\

    • Katalog kanałów: dodałem kolumnę „Medium\
  890. v1.7.42 czerwca 2026, 16:17

    Katalog kanałów: wywaliłem kolumnę „Owner\

    • Katalog kanałów: wywaliłem kolumnę „Owner\
  891. v1.7.32 czerwca 2026, 16:06

    Katalog kanałów — czytelność: wywaliłem kolumnę „Logo\

    • Katalog kanałów — czytelność: wywaliłem kolumnę „Logo\
  892. v1.7.22 czerwca 2026, 15:56

    Hierarchia kanałów — część 2: w `/admin/channels` doszła kolumna „Kanał nadrzędn

    • Hierarchia kanałów — część 2: w `/admin/channels` doszła kolumna „Kanał nadrzędny\
  893. v1.7.12 czerwca 2026, 15:52

    Hierarchia kanałów — część 1: tabela `channels` ma teraz `channel_master_id` (FK

    • Hierarchia kanałów — część 1: tabela `channels` ma teraz `channel_master_id` (FK do katalogu, backfill po znormalizowanej nazwie) + widok `channel_master_hierarchy` z breadcrumbem „Eska › Podcasty Eski\
  894. v1.7.02 czerwca 2026, 15:31

    Hierarchia kanałów: channel_master ma teraz parent_id (np

    • Hierarchia kanałów: channel_master ma teraz parent_id (np. „Podcasty Eski\
  895. v1.6.12 czerwca 2026, 14:08

    Import PressRoom: kolumna 'Medium' jest teraz edytowalna — klik w nazwę otwiera

    • Import PressRoom: kolumna 'Medium' jest teraz edytowalna — klik w nazwę otwiera autouzupełnianie z katalogu kanałów (ChannelAutocomplete)
    • Od razu widać, czy nazwa istnieje w katalogu (✓ z katalogu) czy będzie utworzona jako nowe medium (✎ nowa)
    • Dodany filtr 'Poprawione' oraz objaśnienie kolumny 'Powiązanie' (dawniej 'Link') — to wpis w journalist_channels łączący dziennikarza z medium; jeden dziennikarz może mieć wiele powiązań
  896. v1.6.02 czerwca 2026, 13:52

    PressRoom: nowa taksonomia segmentow i podsegmentow mediow (Radio, TV, Internet,

    • PressRoom: nowa taksonomia segmentow i podsegmentow mediow (Radio, TV, Internet, YouTube, Playlist...) + tabela journalist_channels umozliwiajaca przypisanie jednego dziennikarza do wielu mediow (jeden mail, mozliwy wybor projektu przy pitchu)
    • Strona /admin/pressroom/import — dry-run z tabela podgladu i przyciskiem 'Akceptuje — uruchom import' dla 610 kontaktow z arkusza Google
  897. v1.5.52 czerwca 2026, 13:26

    Hub na start dla Artysty przemeblowany: blok feedbackow + bugow skoczyl do gory,

    • Hub na start dla Artysty przemeblowany: blok feedbackow + bugow skoczyl do gory, pod nim widget aktualnej ankiety (glosowanie w miejscu), a ponizej dwukolumnowy podglad — 3 najnowsze posty z Feedu crew i okno Crew Chat z mozliwoscia pisania
    • Publiczny landing podpiety do jednego zrodla modulow — kafelek 'Pomysly' wraca na strone glowna
    • Nazwa modulu 'Pomysly' zostaje
  898. v1.5.42 czerwca 2026, 13:12

    AI Refine Chat — wpiecie do rollout AI per akcja: na karcie kazdej sugestii w se

    • AI Refine Chat — wpiecie do rollout AI per akcja: na karcie kazdej sugestii w sekcji 'Pomysly AI na rollout' admin ma teraz przycisk Iteruj (Wand2, widoczny po hoverze)
    • Otwiera czat z biezaca trescia akcji jako baza i kontekstem (data premiery, kanal, termin)
    • Po Zapisz pojedyncza pozycja w rollout_suggestions zostaje podmieniona przez updateRolloutSuggestion, a widok premiery sie odswieza
    • Plan A+B+C domkniety: idee, newsletter-tekst, rollout — wszedzie chat-refine
  899. v1.5.32 czerwca 2026, 13:09

    AI Refine Chat — wpiecie do bloku tekstowego newslettera: w edytorze bloku Tekst

    • AI Refine Chat — wpiecie do bloku tekstowego newslettera: w edytorze bloku Tekst pojawil sie przycisk Iteruj z AI, ktory otwiera czat z biezaca trescia jako baza
    • AI moze przepisac/skrocic/rozwinac fragment, a po Zapisz HTML bloku jest podmieniany (jesli AI zwroci czysty tekst, zostaje zawiniety w <p>)
    • Bez ruszania reszty flow newslettera
  900. v1.5.22 czerwca 2026, 13:07

    Wersja v1.5.2

    • Drobne ulepszenia i poprawki.
  901. v1.5.12 czerwca 2026, 13:01

    Wersja v1.5.1

    • Drobne ulepszenia i poprawki.
  902. v1.5.02 czerwca 2026, 12:50

    Wersja v1.5.0

    • Drobne ulepszenia i poprawki.
  903. v1.4.02 czerwca 2026, 12:33

    Wersja v1.4.0

    • Drobne ulepszenia i poprawki.
  904. v1.3.02 czerwca 2026, 12:26

    Wersja v1.3.0

    • Drobne ulepszenia i poprawki.
  905. v1.2.32 czerwca 2026, 12:03

    Wersja v1.2.3

    • Drobne ulepszenia i poprawki.
  906. v1.2.22 czerwca 2026, 11:56

    Wersja v1.2.2

    • Drobne ulepszenia i poprawki.
  907. v1.2.12 czerwca 2026, 11:35

    Wersja v1.2.1

    • Drobne ulepszenia i poprawki.
  908. v1.2.02 czerwca 2026, 11:20

    Wersja v1.2.0

    • Drobne ulepszenia i poprawki.
  909. v1.1.12 czerwca 2026, 10:59

    Wersja v1.1.1

    • Drobne ulepszenia i poprawki.
  910. v1.1.02 czerwca 2026, 10:49

    Wersja v1.1.0

    • Drobne ulepszenia i poprawki.
  911. v1.0.12 czerwca 2026, 10:36

    Wersja v1.0.1

    • Drobne ulepszenia i poprawki.
  912. v1.0.02 czerwca 2026, 10:28

    Wersja v1.0.0

    • Drobne ulepszenia i poprawki.
  913. v0.99.22 czerwca 2026, 09:30

    Wersja v0.99.2

    • Drobne ulepszenia i poprawki.
  914. v0.99.12 czerwca 2026, 09:19

    Wersja v0.99.1

    • Drobne ulepszenia i poprawki.
  915. v0.99.02 czerwca 2026, 09:14

    Wersja v0.99.0

    • Drobne ulepszenia i poprawki.
  916. v0.98.22 czerwca 2026, 08:53

    Wersja v0.98.2

    • Drobne ulepszenia i poprawki.
  917. v0.98.12 czerwca 2026, 08:19

    Wersja v0.98.1

    • Drobne ulepszenia i poprawki.
  918. v0.98.01 czerwca 2026, 23:30

    Wersja v0.98.0

    • Drobne ulepszenia i poprawki.
  919. v0.97.01 czerwca 2026, 22:07

    Wersja v0.97.0

    • Drobne ulepszenia i poprawki.
  920. v0.96.11 czerwca 2026, 21:16

    Wersja v0.96.1

    • Drobne ulepszenia i poprawki.
  921. v0.96.01 czerwca 2026, 21:16

    Wersja v0.96.0

    • Drobne ulepszenia i poprawki.
  922. v0.95.01 czerwca 2026, 12:35

    Wersja v0.95.0

    • Drobne ulepszenia i poprawki.
  923. v0.94.51 czerwca 2026, 07:38

    Wersja v0.94.5

    • Drobne ulepszenia i poprawki.
  924. v0.94.41 czerwca 2026, 07:29

    Wersja v0.94.4

    • Drobne ulepszenia i poprawki.
  925. v0.94.31 czerwca 2026, 07:15

    Wersja v0.94.3

    • Drobne ulepszenia i poprawki.
  926. v0.94.21 czerwca 2026, 07:02

    Wersja v0.94.2

    • Drobne ulepszenia i poprawki.
  927. v0.94.11 czerwca 2026, 00:12

    Wersja v0.94.1

    • Drobne ulepszenia i poprawki.
  928. v0.94.01 czerwca 2026, 00:07

    Wersja v0.94.0

    • Drobne ulepszenia i poprawki.
  929. v0.93.031 maja 2026, 23:55

    Wersja v0.93.0

    • Drobne ulepszenia i poprawki.
  930. v0.92.031 maja 2026, 23:39

    Wersja v0.92.0

    • Drobne ulepszenia i poprawki.
  931. v0.91.031 maja 2026, 23:30

    Wersja v0.91.0

    • Drobne ulepszenia i poprawki.
  932. v0.90.031 maja 2026, 23:17

    Wersja v0.90.0

    • Drobne ulepszenia i poprawki.
  933. v0.89.631 maja 2026, 23:08

    Wersja v0.89.6

    • Drobne ulepszenia i poprawki.
  934. v0.89.531 maja 2026, 22:54

    Wersja v0.89.5

    • Drobne ulepszenia i poprawki.
  935. v0.89.431 maja 2026, 22:51

    Wersja v0.89.4

    • Drobne ulepszenia i poprawki.
  936. v0.89.331 maja 2026, 22:29

    Wersja v0.89.3

    • Drobne ulepszenia i poprawki.
  937. v0.89.231 maja 2026, 22:09

    Wersja v0.89.2

    • Drobne ulepszenia i poprawki.
  938. v0.89.131 maja 2026, 21:52

    Wersja v0.89.1

    • Drobne ulepszenia i poprawki.
  939. v0.89.031 maja 2026, 21:47

    Wersja v0.89.0

    • Drobne ulepszenia i poprawki.
  940. v0.88.931 maja 2026, 21:38

    Wersja v0.88.9

    • Drobne ulepszenia i poprawki.
  941. v0.88.831 maja 2026, 21:14

    Wersja v0.88.8

    • Drobne ulepszenia i poprawki.
  942. v0.88.731 maja 2026, 21:07

    Wersja v0.88.7

    • Drobne ulepszenia i poprawki.
  943. v0.88.631 maja 2026, 20:37

    Wersja v0.88.6

    • Drobne ulepszenia i poprawki.
  944. v0.88.531 maja 2026, 20:36

    Wersja v0.88.5

    • Drobne ulepszenia i poprawki.
  945. v0.88.431 maja 2026, 20:25

    Wersja v0.88.4

    • Drobne ulepszenia i poprawki.
  946. v0.88.331 maja 2026, 19:02

    Wersja v0.88.3

    • Drobne ulepszenia i poprawki.
  947. v0.88.231 maja 2026, 18:50

    Wersja v0.88.2

    • Drobne ulepszenia i poprawki.
  948. v0.88.131 maja 2026, 18:41

    Wersja v0.88.1

    • Drobne ulepszenia i poprawki.
  949. v0.88.031 maja 2026, 18:21

    Wersja v0.88.0

    • Drobne ulepszenia i poprawki.
  950. v0.87.331 maja 2026, 16:10

    Wersja v0.87.3

    • Drobne ulepszenia i poprawki.
  951. v0.87.231 maja 2026, 16:01

    Wersja v0.87.2

    • Drobne ulepszenia i poprawki.
  952. v0.87.131 maja 2026, 15:49

    Wersja v0.87.1

    • Drobne ulepszenia i poprawki.
  953. v0.87.031 maja 2026, 15:22

    Wersja v0.87.0

    • Drobne ulepszenia i poprawki.
  954. v0.86.131 maja 2026, 15:14

    Wersja v0.86.1

    • Drobne ulepszenia i poprawki.
  955. v0.86.031 maja 2026, 15:05

    Wersja v0.86.0

    • Drobne ulepszenia i poprawki.
  956. v0.85.131 maja 2026, 14:55

    Nowa zakładka „Broadcast push

    • Nowa zakładka „Broadcast push
  957. v0.85.031 maja 2026, 14:48

    PWA + powiadomienia push: Hub można dodać do ekranu głównego telefonu jako apkę

    • PWA + powiadomienia push: Hub można dodać do ekranu głównego telefonu jako apkę „ID Records Hub”
    • W ustawieniach powiadomień pojawiła się trzecia kolumna „Push” oraz przycisk włączenia powiadomień na urządzeniu — admin, artyści i dziennikarze mogą dostawać alerty na telefon z licznikiem na ikonie aplikacji
    • In-app i e-mail działają jak dotąd
  958. v0.84.431 maja 2026, 14:05

    Pressroom · admin edytowanego singla ma teraz szybki link do publicznego podgląd

    • Pressroom · admin edytowanego singla ma teraz szybki link do publicznego podglądu strony singla
    • Lista cotygodniowych wydań dostała poziome przewijanie na telefonie, więc da się dojść do akcji i podglądu serwisu
  959. v0.84.331 maja 2026, 13:51

    Wersja v0.84.3

    • Drobne ulepszenia i poprawki.
  960. v0.84.231 maja 2026, 13:40

    Wersja v0.84.2

    • Drobne ulepszenia i poprawki.
  961. v0.84.131 maja 2026, 13:35

    Wersja v0.84.1

    • Drobne ulepszenia i poprawki.
  962. v0.84.031 maja 2026, 13:27

    Wersja v0.84.0

    • Drobne ulepszenia i poprawki.
  963. v0.83.031 maja 2026, 13:01

    Wersja v0.83.0

    • Drobne ulepszenia i poprawki.
  964. v0.82.031 maja 2026, 12:03

    Wersja v0.82.0

    • Drobne ulepszenia i poprawki.
  965. v0.81.031 maja 2026, 11:30

    Wersja v0.81.0

    • Drobne ulepszenia i poprawki.
  966. v0.80.131 maja 2026, 10:39

    Wersja v0.80.1

    • Drobne ulepszenia i poprawki.
  967. v0.80.031 maja 2026, 01:27

    Wersja v0.80.0

    • Drobne ulepszenia i poprawki.
  968. v0.79.031 maja 2026, 01:12

    Wersja v0.79.0

    • Drobne ulepszenia i poprawki.
  969. v0.78.031 maja 2026, 01:02

    Wersja v0.78.0

    • Drobne ulepszenia i poprawki.
  970. v0.77.031 maja 2026, 00:50

    Wersja v0.77.0

    • Drobne ulepszenia i poprawki.
  971. v0.76.031 maja 2026, 00:28

    Wersja v0.76.0

    • Drobne ulepszenia i poprawki.
  972. v0.75.331 maja 2026, 00:22

    Wersja v0.75.3

    • Drobne ulepszenia i poprawki.
  973. v0.75.231 maja 2026, 00:19

    Wersja v0.75.2

    • Drobne ulepszenia i poprawki.
  974. v0.75.131 maja 2026, 00:13

    Wersja v0.75.1

    • Drobne ulepszenia i poprawki.
  975. v0.75.031 maja 2026, 00:08

    Wersja v0.75.0

    • Drobne ulepszenia i poprawki.
  976. v0.74.031 maja 2026, 00:03

    Wersja v0.74.0

    • Drobne ulepszenia i poprawki.
  977. v0.73.130 maja 2026, 23:48

    Wersja v0.73.1

    • Drobne ulepszenia i poprawki.
  978. v0.73.030 maja 2026, 23:41

    Wersja v0.73.0

    • Drobne ulepszenia i poprawki.
  979. v0.72.030 maja 2026, 23:12

    Wersja v0.72.0

    • Drobne ulepszenia i poprawki.
  980. v0.71.030 maja 2026, 23:03

    Wersja v0.71.0

    • Drobne ulepszenia i poprawki.
  981. v0.70.030 maja 2026, 22:59

    Wersja v0.70.0

    • Drobne ulepszenia i poprawki.
  982. v0.69.030 maja 2026, 22:31

    Wersja v0.69.0

    • Drobne ulepszenia i poprawki.
  983. v0.68.030 maja 2026, 22:12

    Wersja v0.68.0

    • Drobne ulepszenia i poprawki.
  984. v0.67.030 maja 2026, 22:01

    Wersja v0.67.0

    • Drobne ulepszenia i poprawki.
  985. v0.66.130 maja 2026, 21:44

    Wersja v0.66.1

    • Drobne ulepszenia i poprawki.
  986. v0.66.030 maja 2026, 21:29

    Wersja v0.66.0

    • Drobne ulepszenia i poprawki.
  987. v0.65.030 maja 2026, 21:05

    PressRoom C3 — AI podsumowanie feedbacku dziennikarzy (Lovable AI / gemini-2

    • PressRoom C3 — AI podsumowanie feedbacku dziennikarzy (Lovable AI / gemini-2.5-flash): sentyment, top słowa kluczowe z tonem, sugestie dla artysty
    • Box „Sparkles
  988. v0.64.030 maja 2026, 20:57

    PressRoom Stats v2 — audio heatmapa per sekunda (zielony → czerwony), kafelki do

    • PressRoom Stats v2 — audio heatmapa per sekunda (zielony → czerwony), kafelki dosłuchań 25/50/75/koniec, ratio dosłuchów i konwersji pobrań w tabeli + KPI ogółem
    • Tracking ping co 5 s na presskicie i playerze tygodnia
  989. v0.63.330 maja 2026, 01:00

    Newsletter builder v2

    • Newsletter builder v2.3 fix: nowe bloki newslettera są od razu widoczne w podglądzie, a picker singli dociąga okładki także z assetów cover / Dropbox fallback
  990. v0.63.230 maja 2026, 00:53

    Newsletter builder v2

    • Newsletter builder v2.2 fix: live preview był ukryty na ekranach <1024px (sticky-pane miał `hidden lg:block`)
    • Dodany inline preview pod kanwą bloków — widoczny na węższych ekranach, pokazuje 1:1 jak singiel / sekcja singli wygląda w mailu (z placeholderem dla pustych bloków)
  991. v0.63.130 maja 2026, 00:44

    Newsletter builder v2

    • Newsletter builder v2.1: nowy moduł 'Sekcja singli' (Hit alert / Premiera tygodnia — tytuł + lista kart singli), autouzupełnianie wyszukiwarki z katalogu (debounce 220ms, brak przycisku Szukaj), karta singla z większą okładką 80×80, gradient placeholder, gatunek-chip i czytelniejsze przyciski
    • Live preview 1:1 zawsze widoczny po prawej (sticky, 460px) — nie trzeba klikać podglądu w modalu
  992. v0.63.030 maja 2026, 00:31

    Etap A — Newsletter renderer v2: email-safe, table-based HTML per blok (nowy src

    • Etap A — Newsletter renderer v2: email-safe, table-based HTML per blok (nowy src/lib/newsletter-blocks.ts), karta singla z okładką 160×160, gatunek-chip, notka A&R i 3 CTA (Posłuchaj/Pobierz/Materiały prasowe), hero z gradientem ID, footer z unsub
    • EmailPreview renderuje 1:1 przez iframe. buildNewsletterHtml dekoduje BLOCKS_V1 i woła nowy renderer (legacy mdToHtml jako fallback)
  993. v0.62.030 maja 2026, 00:05

    Sprint 4: TrackPerformancePanel na stronie singla — 3 zakładki Radio (WARM, spin

    • Sprint 4: TrackPerformancePanel na stronie singla — 3 zakładki Radio (WARM, spins+stations) / Spotify (streams+listeners) / YouTube (views), Recharts AreaChart 90 dni, KPI + opis
    • Sprint 5 (część): migracja press_weekly_issues.service_type ENUM(radio/spotify/tv/portal), defaultTab w panelu wybiera się wg typu serwisu z którego przyszedł dziennikarz
  994. v0.61.429 maja 2026, 23:59

    Hub /press: dodany gradient box 'Jak otrzymać dostęp' (był tylko na anon landing

    • Hub /press: dodany gradient box 'Jak otrzymać dostęp' (był tylko na anon landingu)
  995. v0.61.329 maja 2026, 23:52

    PressRoom Sprint 2: katalog z gradientowymi kartami + kolorowe chipy gatunków +

    • PressRoom Sprint 2: katalog z gradientowymi kartami + kolorowe chipy gatunków + hover-glow, mozaika 6 okładek na /press (anon + hub), fallback okładek w landing/hub
    • Sprint 3-5 w kolejnych iteracjach
  996. v0.61.229 maja 2026, 23:46

    PressRoom UX poprawki: info-box dostępu przeniesiony z edytora na /press, fallba

    • PressRoom UX poprawki: info-box dostępu przeniesiony z edytora na /press, fallback okładki Monell w admin/releases (po premierze), 'Pobierz singiel' w serwisach na czerwono (destructive)
  997. v0.61.129 maja 2026, 23:34

    PressRoom UX Sprint 1: usunięty napis 'Promo przypięte', fallback okładek w kata

    • PressRoom UX Sprint 1: usunięty napis 'Promo przypięte', fallback okładek w katalogu (Monell ↗ z projects), info-box kontaktu na landing-edytorze, info-box w Pitchach (różnica vs Features)
  998. v0.60.629 maja 2026, 22:35

    Personalized Features (C): admin CRUD mini-serwisów, publikacja/draft, podgląd p

    • Personalized Features (C): admin CRUD mini-serwisów, publikacja/draft, podgląd po magic-linku dla zaproszonych, publiczna strona /press/feature/<slug> z event-trackingiem
  999. v0.60.529 maja 2026, 22:28

    Panel dziennikarzy: filtry (format, rola, stacja, status), edycja inline, metryk

    • Panel dziennikarzy: filtry (format, rola, stacja, status), edycja inline, metryki aktywności/feedbacku, drawer edycji
  1000. v0.60.429 maja 2026, 22:23

    newsletter: live analytics (open/click rate, per-link CTR, lista odbiorców z bou

    • newsletter: live analytics (open/click rate, per-link CTR, lista odbiorców z bounces) + backend dla panelu Dziennikarze
  1001. v0.60.329 maja 2026, 22:18

    presskit: pole 'Co Cię wyróżnia spośród innych Artystów?' (USP) — propaguje się

    • presskit: pole 'Co Cię wyróżnia spośród innych Artystów?' (USP) — propaguje się do AI radio-pitch i planera rollout
  1002. v0.60.229 maja 2026, 22:09

    press: magic linki w pitchach (per-odbiorca) + admin generator magic linka z URL

    • press: magic linki w pitchach (per-odbiorca) + admin generator magic linka z URL do ręcznych maili
  1003. v0.60.129 maja 2026, 21:57

    press: pełny formularz rejestracji (login/register tabs) + magic linki podstawia

    • press: pełny formularz rejestracji (login/register tabs) + magic linki podstawiane w wysyłce newslettera per-odbiorca
  1004. v0.6029 maja 2026, 21:42

    press: rejestracja dziennikarzy z autocomplete kanału + magic linki w newsletter

    • press: rejestracja dziennikarzy z autocomplete kanału + magic linki w newsletterach (open_link tracking)
  1005. v0.5929 maja 2026, 18:27

    press: stonowany Polecam, kafelkowa karuzela wyróżnień, most press→kanały, heatm

    • press: stonowany Polecam, kafelkowa karuzela wyróżnień, most press→kanały, heatmapa odsłuchu
  1006. v0.5829 maja 2026, 16:38

    press: subtelniejsze tagi haków na stronie singla

    • press: subtelniejsze tagi haków na stronie singla
  1007. v0.5729 maja 2026, 16:31

    press: serwis tygodnia — twarde wyróżnienia promo i alerty przy kartach singli

    • press: serwis tygodnia — twarde wyróżnienia promo i alerty przy kartach singli
  1008. v0.5629 maja 2026, 16:18

    press: rekomendacje POLECAM-first + serwis tygodnia: widoczne wyróżnienia i aler

    • press: rekomendacje POLECAM-first + serwis tygodnia: widoczne wyróżnienia i alerty redakcji
  1009. v0.5529 maja 2026, 16:02

    press: feedback panel widoczny też dla admina (podgląd) + tydzień: badge banner

    • press: feedback panel widoczny też dla admina (podgląd) + tydzień: badge banner + alerty pełne, widoczne
  1010. v0.5429 maja 2026, 15:48

    press: feedback dziennikarza (decyzja+rating+tagi+komentarz+poleć rozgłośni) + C

    • press: feedback dziennikarza (decyzja+rating+tagi+komentarz+poleć rozgłośni) + CTA pod okładką + admin /pressroom/feedback
  1011. v0.5329 maja 2026, 15:17

    press: kondensacja singla + duży POBIERZ SINGIEL + link do tygodnia + admin /pre

    • press: kondensacja singla + duży POBIERZ SINGIEL + link do tygodnia + admin /pressroom/stats z wynikami serwisu
  1012. v0.5229 maja 2026, 15:01

    press: multi-alerty + badge rails na weekly + większy artysta na stronie singla

    • press: multi-alerty + badge rails na weekly + większy artysta na stronie singla + grid kafelków dla wydanych
  1013. v0.5129 maja 2026, 14:47

    admin premiery: zakładki Przed/Po premierze + kompaktowy stage dla wydanych

    • admin premiery: zakładki Przed/Po premierze + kompaktowy stage dla wydanych
  1014. v0.5029 maja 2026, 14:41

    admin redesign + radio service stats + public single cleanup

    • admin redesign + radio service stats + public single cleanup
  1015. v0.4929 maja 2026, 14:19

    press-badges + alert + hooks (admin UI)

    • press-badges + alert + hooks (admin UI)
  1016. v0.4829 maja 2026, 13:58

    single-credits + video + engagement-heatmap + press-pdf

    • single-credits + video + engagement-heatmap + press-pdf
  1017. v0.4729 maja 2026, 13:54

    weekly-hero-collage + premium-player + about-accordion

    • weekly-hero-collage + premium-player + about-accordion
  1018. v0.4629 maja 2026, 13:47

    weekly-player + cover-fallback + premiere-label

    • weekly-player + cover-fallback + premiere-label
  1019. v0.4529 maja 2026, 13:03

    pressroom-single-wow + release-pressroom-tab

    • pressroom-single-wow + release-pressroom-tab
  1020. v0.4429 maja 2026, 12:56

    pressroom-wow-weekly-v1

    • pressroom-wow-weekly-v1
  1021. v0.4329 maja 2026, 12:20

    pressroom-visual-editors-v1

    • pressroom-visual-editors-v1
  1022. v0.0.115 maja 2026, 09:00

    Start projektu

    • Pierwsza wersja HUBa ID Records — szkielet aplikacji, layout, podstawowa autoryzacja
    • Cały HUB powstał w ~3 tygodnie od zera (15 maja → 8 czerwca 2026)

Masz pomysł na nową funkcję? Daj znać zespołowi ID Records.

v2.178.2