v2.123.010 lipca 2026, 23:30Najnowsza
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ł.
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.
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ą.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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ń.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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ół.
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).
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.
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.
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.
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).
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ą.
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ę.
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.
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.
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.
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.
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.
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.
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.
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ć.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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”.
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.
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.
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.
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łę).
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.
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).
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.
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.
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.
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.
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.
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.
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?”.
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.
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.
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.
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.
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.
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.
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.
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.
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`.
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ł”.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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ę.
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.
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.
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.
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.
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`.
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.
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.
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.
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.
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.
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.
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.
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.
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.).
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.
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.
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).
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.
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.
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').
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ł.
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.
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.
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.
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`.
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.
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.
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.
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.
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.
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.
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`.
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.
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`.
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.
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.
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).
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.
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].
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.
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.
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.
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.
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}`.
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.
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.
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ń.
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.
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).
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ą.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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ą.
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.
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`.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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).
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ł.
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.
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.
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).
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”.
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.
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.
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.
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ę”.
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).
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).
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.
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".
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).
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.
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".
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.
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.
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/…
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.*`.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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).
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.
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.
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.
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.
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).
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.
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.
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).
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.
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".
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.
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.
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.
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.
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).
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.
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ą.
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.
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.
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).
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.
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ą.
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.
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".
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ę).
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ć".
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".
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.
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.
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.
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.
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.
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.
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.
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.
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”.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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".
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).
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).
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.
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).
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.
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.
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.
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.
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.
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ą.
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.
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.
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ć.
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".
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.
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.
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.
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.
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.
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.
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ę.
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.
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.
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.
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).
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.
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ć.
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.
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".
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ś".
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.
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 · …".
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.).
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ć.
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ę.
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.
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.
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.
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.
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.
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.
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 **> 500 MB** / **> 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"`.
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.
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.
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.
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.
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.
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.
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".
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`).
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.
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.
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.
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.
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.
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.
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.
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**.
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.
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.
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".
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.
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.
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.
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.
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).
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.
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.
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.
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).
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ę.
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.
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.
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"**.
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` …).
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.
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.
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.
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ą.
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.
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.
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`.
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.
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).
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).
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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ę →".
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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").
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.
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.
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.
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.
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".
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.
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.
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.
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ą.
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ć.
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.
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.
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.
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.
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).
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ą).
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".
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`.
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.
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.
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.
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.
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.
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ć.
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.
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.
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.
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ąć.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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).
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).
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.
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.
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ą).
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.
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ś.
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.
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.
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.
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.
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.
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.
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ę.
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).
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).
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.
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.
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.
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.
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.
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.
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.
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ę.
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.
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.
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).
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).
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.
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.
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.
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").
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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).
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`.
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.
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ń.
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.
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`.
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.
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.
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).
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.
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).
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.
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).
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).
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).
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.
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.
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.
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.
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.
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.
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.
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.
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”.
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.
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ć.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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/…
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.
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.
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.
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.
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).
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.
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.
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).
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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ść.
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.
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”.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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ść).
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 %.
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).
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.
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”).
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.
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.
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.
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.
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).
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.
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ć.
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ć.
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”.
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.
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.
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
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
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)
v1.55.18 czerwca 2026, 10:59
Presskit „Współtwórcy
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)
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\
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
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
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
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)
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
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
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
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
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
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)
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
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
v1.52.97 czerwca 2026, 17:08
Wersja v1.52.9
- Drobne ulepszenia i poprawki.
v1.52.85 czerwca 2026, 14:28
Wersja v1.52.8
- Drobne ulepszenia i poprawki.
v1.52.75 czerwca 2026, 13:12
Wersja v1.52.7
- Drobne ulepszenia i poprawki.
v1.52.65 czerwca 2026, 12:52
Wersja v1.52.6
- Drobne ulepszenia i poprawki.
v1.52.55 czerwca 2026, 12:34
Wersja v1.52.5
- Drobne ulepszenia i poprawki.
v1.52.45 czerwca 2026, 12:30
Wersja v1.52.4
- Drobne ulepszenia i poprawki.
v1.52.35 czerwca 2026, 12:16
Naprawione linki „Moje briefy
- Naprawione linki „Moje briefy
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)
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
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)
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)
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
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)
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
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)
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
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
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
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
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)
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
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)
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
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
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)
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
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
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
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?\
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
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
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
v1.36.64 czerwca 2026, 21:50
Wersja v1.36.6
- Drobne ulepszenia i poprawki.
v1.36.54 czerwca 2026, 21:42
Wersja v1.36.5
- Drobne ulepszenia i poprawki.
v1.36.44 czerwca 2026, 13:03
Wersja v1.36.4
- Drobne ulepszenia i poprawki.
v1.36.34 czerwca 2026, 12:54
Wersja v1.36.3
- Drobne ulepszenia i poprawki.
v1.36.23 czerwca 2026, 15:40
Wersja v1.36.2
- Drobne ulepszenia i poprawki.
v1.36.13 czerwca 2026, 14:15
Wersja v1.36.1
- Drobne ulepszenia i poprawki.
v1.36.03 czerwca 2026, 14:09
Wersja v1.36.0
- Drobne ulepszenia i poprawki.
v1.35.03 czerwca 2026, 13:58
Wersja v1.35.0
- Drobne ulepszenia i poprawki.
v1.34.03 czerwca 2026, 13:30
Wersja v1.34.0
- Drobne ulepszenia i poprawki.
v1.33.03 czerwca 2026, 13:15
Wersja v1.33.0
- Drobne ulepszenia i poprawki.
v1.32.63 czerwca 2026, 12:49
Wersja v1.32.6
- Drobne ulepszenia i poprawki.
v1.32.53 czerwca 2026, 12:31
Wersja v1.32.5
- Drobne ulepszenia i poprawki.
v1.32.43 czerwca 2026, 12:25
Wersja v1.32.4
- Drobne ulepszenia i poprawki.
v1.32.33 czerwca 2026, 12:23
Wersja v1.32.3
- Drobne ulepszenia i poprawki.
v1.32.23 czerwca 2026, 12:16
Wersja v1.32.2
- Drobne ulepszenia i poprawki.
v1.32.13 czerwca 2026, 12:11
Wersja v1.32.1
- Drobne ulepszenia i poprawki.
v1.32.03 czerwca 2026, 12:08
Wersja v1.32.0
- Drobne ulepszenia i poprawki.
v1.31.63 czerwca 2026, 12:03
Wersja v1.31.6
- Drobne ulepszenia i poprawki.
v1.31.53 czerwca 2026, 11:57
Wersja v1.31.5
- Drobne ulepszenia i poprawki.
v1.31.43 czerwca 2026, 11:49
Wersja v1.31.4
- Drobne ulepszenia i poprawki.
v1.31.33 czerwca 2026, 11:36
Wersja v1.31.3
- Drobne ulepszenia i poprawki.
v1.31.23 czerwca 2026, 11:19
Wersja v1.31.2
- Drobne ulepszenia i poprawki.
v1.31.13 czerwca 2026, 11:11
Wersja v1.31.1
- Drobne ulepszenia i poprawki.
v1.31.03 czerwca 2026, 10:59
Wersja v1.31.0
- Drobne ulepszenia i poprawki.
v1.30.53 czerwca 2026, 10:47
Wersja v1.30.5
- Drobne ulepszenia i poprawki.
v1.30.43 czerwca 2026, 10:44
Wersja v1.30.4
- Drobne ulepszenia i poprawki.
v1.30.33 czerwca 2026, 10:43
Wersja v1.30.3
- Drobne ulepszenia i poprawki.
v1.30.23 czerwca 2026, 10:40
Wersja v1.30.2
- Drobne ulepszenia i poprawki.
v1.30.13 czerwca 2026, 10:31
Wersja v1.30.1
- Drobne ulepszenia i poprawki.
v1.30.03 czerwca 2026, 10:19
Wersja v1.30.0
- Drobne ulepszenia i poprawki.
v1.29.33 czerwca 2026, 10:12
Wersja v1.29.3
- Drobne ulepszenia i poprawki.
v1.29.23 czerwca 2026, 10:09
Wersja v1.29.2
- Drobne ulepszenia i poprawki.
v1.29.13 czerwca 2026, 09:39
Wersja v1.29.1
- Drobne ulepszenia i poprawki.
v1.29.03 czerwca 2026, 09:13
Wersja v1.29.0
- Drobne ulepszenia i poprawki.
v1.28.33 czerwca 2026, 01:37
Wersja v1.28.3
- Drobne ulepszenia i poprawki.
v1.28.23 czerwca 2026, 01:32
Wersja v1.28.2
- Drobne ulepszenia i poprawki.
v1.28.13 czerwca 2026, 01:26
Wersja v1.28.1
- Drobne ulepszenia i poprawki.
v1.28.03 czerwca 2026, 01:18
Wersja v1.28.0
- Drobne ulepszenia i poprawki.
v1.27.03 czerwca 2026, 01:09
Wersja v1.27.0
- Drobne ulepszenia i poprawki.
v1.26.03 czerwca 2026, 00:59
Wersja v1.26.0
- Drobne ulepszenia i poprawki.
v1.25.03 czerwca 2026, 00:55
Wersja v1.25.0
- Drobne ulepszenia i poprawki.
v1.24.03 czerwca 2026, 00:44
Wersja v1.24.0
- Drobne ulepszenia i poprawki.
v1.23.13 czerwca 2026, 00:40
Wersja v1.23.1
- Drobne ulepszenia i poprawki.
v1.23.03 czerwca 2026, 00:38
Wersja v1.23.0
- Drobne ulepszenia i poprawki.
v1.22.03 czerwca 2026, 00:24
Wersja v1.22.0
- Drobne ulepszenia i poprawki.
v1.21.22 czerwca 2026, 23:55
Wersja v1.21.2
- Drobne ulepszenia i poprawki.
v1.21.12 czerwca 2026, 23:51
Wersja v1.21.1
- Drobne ulepszenia i poprawki.
v1.21.02 czerwca 2026, 23:20
Wersja v1.21.0
- Drobne ulepszenia i poprawki.
v1.20.12 czerwca 2026, 23:13
Wersja v1.20.1
- Drobne ulepszenia i poprawki.
v1.20.02 czerwca 2026, 22:51
Wersja v1.20.0
- Drobne ulepszenia i poprawki.
v1.19.22 czerwca 2026, 22:46
Wersja v1.19.2
- Drobne ulepszenia i poprawki.
v1.19.12 czerwca 2026, 22:40
Wersja v1.19.1
- Drobne ulepszenia i poprawki.
v1.19.02 czerwca 2026, 22:05
Wersja v1.19.0
- Drobne ulepszenia i poprawki.
v1.18.02 czerwca 2026, 21:39
Wersja v1.18.0
- Drobne ulepszenia i poprawki.
v1.17.02 czerwca 2026, 21:33
Wersja v1.17.0
- Drobne ulepszenia i poprawki.
v1.16.02 czerwca 2026, 21:22
Wersja v1.16.0
- Drobne ulepszenia i poprawki.
v1.15.42 czerwca 2026, 21:17
Wersja v1.15.4
- Drobne ulepszenia i poprawki.
v1.15.32 czerwca 2026, 21:13
Wersja v1.15.3
- Drobne ulepszenia i poprawki.
v1.15.22 czerwca 2026, 19:24
Wersja v1.15.2
- Drobne ulepszenia i poprawki.
v1.15.12 czerwca 2026, 19:13
Wersja v1.15.1
- Drobne ulepszenia i poprawki.
v1.15.02 czerwca 2026, 18:55
Wersja v1.15.0
- Drobne ulepszenia i poprawki.
v1.14.22 czerwca 2026, 18:28
Wersja v1.14.2
- Drobne ulepszenia i poprawki.
v1.14.12 czerwca 2026, 18:20
Wersja v1.14.1
- Drobne ulepszenia i poprawki.
v1.14.02 czerwca 2026, 18:12
Wersja v1.14.0
- Drobne ulepszenia i poprawki.
v1.13.32 czerwca 2026, 18:04
Wersja v1.13.3
- Drobne ulepszenia i poprawki.
v1.13.22 czerwca 2026, 18:00
Wersja v1.13.2
- Drobne ulepszenia i poprawki.
v1.13.12 czerwca 2026, 17:56
Wersja v1.13.1
- Drobne ulepszenia i poprawki.
v1.13.02 czerwca 2026, 17:49
Wersja v1.13.0
- Drobne ulepszenia i poprawki.
v1.12.12 czerwca 2026, 17:17
Wersja v1.12.1
- Drobne ulepszenia i poprawki.
v1.12.02 czerwca 2026, 17:10
Wersja v1.12.0
- Drobne ulepszenia i poprawki.
v1.11.02 czerwca 2026, 16:49
Wersja v1.11.0
- Drobne ulepszenia i poprawki.
v1.10.12 czerwca 2026, 16:42
Wersja v1.10.1
- Drobne ulepszenia i poprawki.
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
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
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\
v1.7.52 czerwca 2026, 16:20
Katalog kanałów: dodałem kolumnę „Medium\
- Katalog kanałów: dodałem kolumnę „Medium\
v1.7.42 czerwca 2026, 16:17
Katalog kanałów: wywaliłem kolumnę „Owner\
- Katalog kanałów: wywaliłem kolumnę „Owner\
v1.7.32 czerwca 2026, 16:06
Katalog kanałów — czytelność: wywaliłem kolumnę „Logo\
- Katalog kanałów — czytelność: wywaliłem kolumnę „Logo\
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\
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\
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\
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ń
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
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
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
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
v1.5.22 czerwca 2026, 13:07
Wersja v1.5.2
- Drobne ulepszenia i poprawki.
v1.5.12 czerwca 2026, 13:01
Wersja v1.5.1
- Drobne ulepszenia i poprawki.
v1.5.02 czerwca 2026, 12:50
Wersja v1.5.0
- Drobne ulepszenia i poprawki.
v1.4.02 czerwca 2026, 12:33
Wersja v1.4.0
- Drobne ulepszenia i poprawki.
v1.3.02 czerwca 2026, 12:26
Wersja v1.3.0
- Drobne ulepszenia i poprawki.
v1.2.32 czerwca 2026, 12:03
Wersja v1.2.3
- Drobne ulepszenia i poprawki.
v1.2.22 czerwca 2026, 11:56
Wersja v1.2.2
- Drobne ulepszenia i poprawki.
v1.2.12 czerwca 2026, 11:35
Wersja v1.2.1
- Drobne ulepszenia i poprawki.
v1.2.02 czerwca 2026, 11:20
Wersja v1.2.0
- Drobne ulepszenia i poprawki.
v1.1.12 czerwca 2026, 10:59
Wersja v1.1.1
- Drobne ulepszenia i poprawki.
v1.1.02 czerwca 2026, 10:49
Wersja v1.1.0
- Drobne ulepszenia i poprawki.
v1.0.12 czerwca 2026, 10:36
Wersja v1.0.1
- Drobne ulepszenia i poprawki.
v1.0.02 czerwca 2026, 10:28
Wersja v1.0.0
- Drobne ulepszenia i poprawki.
v0.99.22 czerwca 2026, 09:30
Wersja v0.99.2
- Drobne ulepszenia i poprawki.
v0.99.12 czerwca 2026, 09:19
Wersja v0.99.1
- Drobne ulepszenia i poprawki.
v0.99.02 czerwca 2026, 09:14
Wersja v0.99.0
- Drobne ulepszenia i poprawki.
v0.98.22 czerwca 2026, 08:53
Wersja v0.98.2
- Drobne ulepszenia i poprawki.
v0.98.12 czerwca 2026, 08:19
Wersja v0.98.1
- Drobne ulepszenia i poprawki.
v0.98.01 czerwca 2026, 23:30
Wersja v0.98.0
- Drobne ulepszenia i poprawki.
v0.97.01 czerwca 2026, 22:07
Wersja v0.97.0
- Drobne ulepszenia i poprawki.
v0.96.11 czerwca 2026, 21:16
Wersja v0.96.1
- Drobne ulepszenia i poprawki.
v0.96.01 czerwca 2026, 21:16
Wersja v0.96.0
- Drobne ulepszenia i poprawki.
v0.95.01 czerwca 2026, 12:35
Wersja v0.95.0
- Drobne ulepszenia i poprawki.
v0.94.51 czerwca 2026, 07:38
Wersja v0.94.5
- Drobne ulepszenia i poprawki.
v0.94.41 czerwca 2026, 07:29
Wersja v0.94.4
- Drobne ulepszenia i poprawki.
v0.94.31 czerwca 2026, 07:15
Wersja v0.94.3
- Drobne ulepszenia i poprawki.
v0.94.21 czerwca 2026, 07:02
Wersja v0.94.2
- Drobne ulepszenia i poprawki.
v0.94.11 czerwca 2026, 00:12
Wersja v0.94.1
- Drobne ulepszenia i poprawki.
v0.94.01 czerwca 2026, 00:07
Wersja v0.94.0
- Drobne ulepszenia i poprawki.
v0.93.031 maja 2026, 23:55
Wersja v0.93.0
- Drobne ulepszenia i poprawki.
v0.92.031 maja 2026, 23:39
Wersja v0.92.0
- Drobne ulepszenia i poprawki.
v0.91.031 maja 2026, 23:30
Wersja v0.91.0
- Drobne ulepszenia i poprawki.
v0.90.031 maja 2026, 23:17
Wersja v0.90.0
- Drobne ulepszenia i poprawki.
v0.89.631 maja 2026, 23:08
Wersja v0.89.6
- Drobne ulepszenia i poprawki.
v0.89.531 maja 2026, 22:54
Wersja v0.89.5
- Drobne ulepszenia i poprawki.
v0.89.431 maja 2026, 22:51
Wersja v0.89.4
- Drobne ulepszenia i poprawki.
v0.89.331 maja 2026, 22:29
Wersja v0.89.3
- Drobne ulepszenia i poprawki.
v0.89.231 maja 2026, 22:09
Wersja v0.89.2
- Drobne ulepszenia i poprawki.
v0.89.131 maja 2026, 21:52
Wersja v0.89.1
- Drobne ulepszenia i poprawki.
v0.89.031 maja 2026, 21:47
Wersja v0.89.0
- Drobne ulepszenia i poprawki.
v0.88.931 maja 2026, 21:38
Wersja v0.88.9
- Drobne ulepszenia i poprawki.
v0.88.831 maja 2026, 21:14
Wersja v0.88.8
- Drobne ulepszenia i poprawki.
v0.88.731 maja 2026, 21:07
Wersja v0.88.7
- Drobne ulepszenia i poprawki.
v0.88.631 maja 2026, 20:37
Wersja v0.88.6
- Drobne ulepszenia i poprawki.
v0.88.531 maja 2026, 20:36
Wersja v0.88.5
- Drobne ulepszenia i poprawki.
v0.88.431 maja 2026, 20:25
Wersja v0.88.4
- Drobne ulepszenia i poprawki.
v0.88.331 maja 2026, 19:02
Wersja v0.88.3
- Drobne ulepszenia i poprawki.
v0.88.231 maja 2026, 18:50
Wersja v0.88.2
- Drobne ulepszenia i poprawki.
v0.88.131 maja 2026, 18:41
Wersja v0.88.1
- Drobne ulepszenia i poprawki.
v0.88.031 maja 2026, 18:21
Wersja v0.88.0
- Drobne ulepszenia i poprawki.
v0.87.331 maja 2026, 16:10
Wersja v0.87.3
- Drobne ulepszenia i poprawki.
v0.87.231 maja 2026, 16:01
Wersja v0.87.2
- Drobne ulepszenia i poprawki.
v0.87.131 maja 2026, 15:49
Wersja v0.87.1
- Drobne ulepszenia i poprawki.
v0.87.031 maja 2026, 15:22
Wersja v0.87.0
- Drobne ulepszenia i poprawki.
v0.86.131 maja 2026, 15:14
Wersja v0.86.1
- Drobne ulepszenia i poprawki.
v0.86.031 maja 2026, 15:05
Wersja v0.86.0
- Drobne ulepszenia i poprawki.
v0.85.131 maja 2026, 14:55
Nowa zakładka „Broadcast push
- Nowa zakładka „Broadcast push
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
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
v0.84.331 maja 2026, 13:51
Wersja v0.84.3
- Drobne ulepszenia i poprawki.
v0.84.231 maja 2026, 13:40
Wersja v0.84.2
- Drobne ulepszenia i poprawki.
v0.84.131 maja 2026, 13:35
Wersja v0.84.1
- Drobne ulepszenia i poprawki.
v0.84.031 maja 2026, 13:27
Wersja v0.84.0
- Drobne ulepszenia i poprawki.
v0.83.031 maja 2026, 13:01
Wersja v0.83.0
- Drobne ulepszenia i poprawki.
v0.82.031 maja 2026, 12:03
Wersja v0.82.0
- Drobne ulepszenia i poprawki.
v0.81.031 maja 2026, 11:30
Wersja v0.81.0
- Drobne ulepszenia i poprawki.
v0.80.131 maja 2026, 10:39
Wersja v0.80.1
- Drobne ulepszenia i poprawki.
v0.80.031 maja 2026, 01:27
Wersja v0.80.0
- Drobne ulepszenia i poprawki.
v0.79.031 maja 2026, 01:12
Wersja v0.79.0
- Drobne ulepszenia i poprawki.
v0.78.031 maja 2026, 01:02
Wersja v0.78.0
- Drobne ulepszenia i poprawki.
v0.77.031 maja 2026, 00:50
Wersja v0.77.0
- Drobne ulepszenia i poprawki.
v0.76.031 maja 2026, 00:28
Wersja v0.76.0
- Drobne ulepszenia i poprawki.
v0.75.331 maja 2026, 00:22
Wersja v0.75.3
- Drobne ulepszenia i poprawki.
v0.75.231 maja 2026, 00:19
Wersja v0.75.2
- Drobne ulepszenia i poprawki.
v0.75.131 maja 2026, 00:13
Wersja v0.75.1
- Drobne ulepszenia i poprawki.
v0.75.031 maja 2026, 00:08
Wersja v0.75.0
- Drobne ulepszenia i poprawki.
v0.74.031 maja 2026, 00:03
Wersja v0.74.0
- Drobne ulepszenia i poprawki.
v0.73.130 maja 2026, 23:48
Wersja v0.73.1
- Drobne ulepszenia i poprawki.
v0.73.030 maja 2026, 23:41
Wersja v0.73.0
- Drobne ulepszenia i poprawki.
v0.72.030 maja 2026, 23:12
Wersja v0.72.0
- Drobne ulepszenia i poprawki.
v0.71.030 maja 2026, 23:03
Wersja v0.71.0
- Drobne ulepszenia i poprawki.
v0.70.030 maja 2026, 22:59
Wersja v0.70.0
- Drobne ulepszenia i poprawki.
v0.69.030 maja 2026, 22:31
Wersja v0.69.0
- Drobne ulepszenia i poprawki.
v0.68.030 maja 2026, 22:12
Wersja v0.68.0
- Drobne ulepszenia i poprawki.
v0.67.030 maja 2026, 22:01
Wersja v0.67.0
- Drobne ulepszenia i poprawki.
v0.66.130 maja 2026, 21:44
Wersja v0.66.1
- Drobne ulepszenia i poprawki.
v0.66.030 maja 2026, 21:29
Wersja v0.66.0
- Drobne ulepszenia i poprawki.
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
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
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
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)
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
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)
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
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)
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
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)
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)
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
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
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
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
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
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
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)
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
v0.5829 maja 2026, 16:38
press: subtelniejsze tagi haków na stronie singla
- press: subtelniejsze tagi haków na stronie singla
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
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
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
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
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
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
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
v0.5029 maja 2026, 14:41
admin redesign + radio service stats + public single cleanup
- admin redesign + radio service stats + public single cleanup
v0.4929 maja 2026, 14:19
press-badges + alert + hooks (admin UI)
- press-badges + alert + hooks (admin UI)
v0.4829 maja 2026, 13:58
single-credits + video + engagement-heatmap + press-pdf
- single-credits + video + engagement-heatmap + press-pdf
v0.4729 maja 2026, 13:54
weekly-hero-collage + premium-player + about-accordion
- weekly-hero-collage + premium-player + about-accordion
v0.4629 maja 2026, 13:47
weekly-player + cover-fallback + premiere-label
- weekly-player + cover-fallback + premiere-label
v0.4529 maja 2026, 13:03
pressroom-single-wow + release-pressroom-tab
- pressroom-single-wow + release-pressroom-tab
v0.4429 maja 2026, 12:56
pressroom-wow-weekly-v1
v0.4329 maja 2026, 12:20
pressroom-visual-editors-v1
- pressroom-visual-editors-v1
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.