- AI Dopasowanie, "Zobacz kupujacych", kafelek 360 i Konto Premium:
nieaktywne z plakietka "Wkrotce" zamiast przyciskow bez akcji.
- Pomoc: jeden adres info@polskalokalnie.pl i prawdziwy numer
+48 453 193 605 jako linki mailto/tel, czat na zywo usuniety,
FAQ z prawdziwymi odpowiedziami zamiast jednego zdania.
- Poradniki: dzialajaca wyszukiwarka (?szukaj= w adresie), szybkie
poradniki linkuja do rozdzialow, martwe strzalki karuzeli usuniete.
- Mapa: "Szukaj na biezacej mapie" zaweza liste do widocznych ofert
(?obszar= w adresie).
- Porownanie: wybrane oferty w adresie (?oferty=), "Udostepnij
porownanie" kopiuje link.
- Kafelek miast prowadzi na mape, karuzela opinii bez atrap strzalek.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Nowa strona /negocjacje/:listingId porownuje cene ogloszenia sprzedazy
z cenami transakcyjnymi NBP i GUS oraz srednia ogloszen w dzielnicy
i miescie. Przedzial: od wartosci wg cen transakcyjnych do polowy
nadwyzki ceny ofertowej. W ogloszeniu przycisk "Ile moge utargowac?".
Usuniety fikcyjny model negocjacji i tabela cen za m2.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Kroki kreatora maja wlasne trasy (/wycena/szczegoly, /wycena/stan,
/wycena/wynik), a szkic formularza przetrwa F5. Pusty wynik wskazuje
brakujace dane linkami do kroku, "Co dalej?" prowadzi do prawdziwych stron.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Maile:
- Logo jest zalacznikiem inline (cid:) zamiast obrazka z adresu serwisu.
Wczesniej w mailach z lokalnego srodowiska (i w programach blokujacych
obrazki z zewnatrz) w miejscu logo byla ikona bledu. Usuniety tekst
zastepczy, ktory dublowal napis "Polska Lokalnie".
Naglowek:
- Menu nie nachodzi na logo ani panel przy zadnej szerokosci 1110-1920 px.
Ponizej 1560 px "Ulubione" to samo serce (nazwa w dymku), mniejsze odstepy
i przycisk "Dodaj ogloszenie" bez sztywnej szerokosci; w 1101-1270 px
mniejszy napis logo i tekst przycisku.
Logowanie i rejestracja (standard routingu):
- Kazdy krok ma wlasny adres: /logowanie, /logowanie/nie-pamietam-hasla,
/rejestracja, /rejestracja/osoba-prywatna, /rejestracja/firma,
/rejestracja/sprawdz-poczte. Dzialaja F5, Wstecz/Dalej i nowa karta,
formularz czysci sie takze przy Wstecz/Dalej, a cel powrotu po
zalogowaniu nie ginie przy przejsciach miedzy krokami.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Dotad rozmowy z kupujacymi istnialy tylko w przegladarce nadawcy: nic nie
trafialo na serwer, "odczytano" i odpowiedz sprzedajacego byly symulowane
timerem. Wzorem Gieldy Komunalnej:
Backend (/api/conversations):
- Conversation: jeden watek na pare (ogloszenie, kupujacy), sprzedajacy to
wlasciciel ogloszenia; tytul ogloszenia zapisany na wypadek jego usuniecia.
Wiadomosci w istniejacej tabeli messages z nowa kolumna conversation_id,
wiec rozmowa z administracja (conversation_id = null) dziala bez zmian.
- start/list/get/reply, blokada (UserBlock, w obu kierunkach), ukrycie
rozmowy u siebie (nowa wiadomosc przywraca ja obu stronom). Dostep tylko
dla stron rozmowy, filtr niedozwolonych slow jak w reszcie serwisu.
- Po zatwierdzeniu transakcji odbiorca dostaje powiadomienie w serwisie
i - jesli ma wlaczone powiadomienia o wiadomosciach - e-mail (w tle).
- /api/messages/unread-count wlicza rozmowy o ogloszeniach.
- Zgloszenie uzytkownika z rozmowy: zgloszonego, ogloszenie i tresc rozmowy
serwer bierze z bazy, nie z przegladarki.
Frontend:
- Adresy /wiadomosci/:conversationId, /wiadomosci/administracja
i /wiadomosci/nowa/:listingId zamiast rozmowy w location.state.
- Lista rozmow odswiezana co 30 s, otwarta rozmowa co 4 s.
- Zdjecia w wiadomosciach usuniete - serwer ich nie przyjmuje (rozmowa
z administracja i tak je gubila).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Nazwa i adres:
- marka "Mieszko" -> "Polska Lokalnie" w calym interfejsie (27 miejsc),
w tekstach zaleznych dodane slowo "serwis", zeby brzmialy poprawnie po polsku
- domena mieszko.pl -> polskalokalnie.pl (adresy kontaktowe, profil, udostepnianie)
- haslo pod logo: "mieszkania za darmo" -> "ogloszenia za darmo"
- backend: teksty powiadomien, dane demo i domyslna nazwa admina
- nazwa wyswietlana istniejacego admina zaktualizowana w bazie;
login admin@mieszko.pl celowo bez zmian
Naglowek:
- logo, nawigacja i panel zostaja widoczne przy przewijaniu (position: sticky,
warstwa 65 - nad listami rozwijanymi, pod lightboxem zdjec)
- sticky sidebary z top: 18-20px wyrownane do 96px, zeby nie wjezdzaly pod naglowek
Uklad stron konta:
- /ulubione, /wiadomosci i /powiadomienia otwieraja sie jak /konto/wyszukiwania -
wspolny layout AccountShell zamiast powielania ukladu w kazdej stronie
- /konto/porownanie mialo wlasny uklad (sidebar 300px, inny gap i padding),
przez co menu przeskakiwalo - wyrownane do .account-layout wraz z punktem
zwijania (1200px zamiast 1500px)
- narzedzia publiczne (/wycena, /historia-cen, /ranking-dzielnic, /negocjacje)
bez menu konta - dzialaja jak /kupno czy /wynajem
Naprawy regresji po zamianie przyciskow na linki:
- ikona ulubionych na kartach /kupno wracala do przeplywu (nadpisany
position: absolute) - teraz podnoszona jest tylko warstwa
- menu uzytkownika i "Zobacz wszystkie" w powiadomieniach: reguly CSS
celowaly tylko w <button>, przez co pozycje rozjezdzaly sie na dwie linie
Testy: 47 (bylo 41), w tym zabezpieczenie przed powrotem przeskoku menu
i przed rozjechaniem pozycji menu uzytkownika.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Nowa trasa:
- /firmy - lista firm i uslug na istniejacych komponentach (.directory-card)
i stylistyce sekcji uslug; filtr kategorii w query stringu (/firmy?kategoria=remonty)
- serviceCategories dostaly slug, nowa baza companyDirectory pokrywa wszystkie
8 kategorii, wiec filtrowanie dziala na realnych danych
- "Zobacz firmy" prowadzi do listy z wybrana kategoria, "Zobacz wszystkie"
do pelnej listy - ostatnie dwie atrapy href="#" usuniete
CTA zamienione na <Link> (wylacznie czysta nawigacja, bez akcji):
- 35 przyciskow onClick={() => navigate(x)} zamienionych automatycznie
- 5 skrotow panelu admina (setTab) -> Link do /admin/*
- karty narzedzi konta i kafelek poradnika: zamiast role="button" prawdziwy link
- pozycje menu konta i popovera powiadomien -> Link + zamkniecie popovera
- karty ofert: link rozciagniety na cala karte (.card-stretched-link) zamiast
role="button", bez zagniezdzania przyciskow w <a>
- bez zmian zostaly przyciski wykonujace akcje: publikacja, zapis draftu,
wyszukiwanie, oznaczanie powiadomien, bramki logowania
Wyglad 1:1 - rozszerzone selektory kontenerow o warianty <a>, reset :where(a)
o zerowej specyficznosci oraz odtworzenie centrowania tam, gdzie <button>
robil to domyslnie. Zweryfikowane zrzutami ekranu i pomiarem geometrii.
Naprawa: kazdy blad /auth/me (takze chwilowy timeout albo 5xx) kasowal token
i wylogowywal uzytkownika. Teraz sesje konczy tylko odrzucenie tokenu (401/403),
pozostale bledy sa ponawiane raz.
Testy: frontend/tests/routing.spec.ts (41 testow) + playwright.config.ts,
skrypt npm run test:e2e. E2E_BASE_URL pozwala uruchomic je na buildzie
produkcyjnym za nginx.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>