Co nowego w Listorii
Aktualna wersja v1.2.2Historia zmian i nowych funkcji
v1.2.2Reply-To dla emaili
2026-05-08- NowościReply-To pattern w lib/email — env RESEND_REPLY_TO przekierowuje odpowiedzi userów na realny adres (np. kontakt@listoria.app) zamiast bounce'ować na noreply@
- UlepszeniaAuto-injection w sendOrLog — wszystkie funkcje send* automatycznie dziedziczą replyTo bez konfiguracji per-function
v1.2.1Resend + Umami integracje
2026-05-08- NowościResend integracja: lib/email module + WorkspaceInviteEmail template (React Email)
- NowościEmail zaproszenia do workspace wysyłany automatycznie po inviteMember()
- NowościUmami analytics component (privacy-first, cookieless) — ładowany warunkowo gdy NEXT_PUBLIC_UMAMI_WEBSITE_ID ustawione
- UlepszeniaGraceful degradation: bez RESEND_API_KEY emaile logowane do konsoli (dev mode bez setupu)
- UlepszeniaFailure isolation: email send nie blokuje invite (token jest w bazie, UI kopiuje link)
- DokumentacjaSetup docs (Resend DNS verification, Umami Cloud setup) w root CLAUDE.md
- DokumentacjaPRD: 102 checkboxów zaznaczonych jako [x] (snapshot na v1.2)
v1.2Workspaces — multi-tenant fundament
2026-05-08- NowościMigracja 010: workspace_invites + active_workspace_id + workspace_id na favorites/folders + data migration (Personal workspace per user)
- NowościModuł lib/workspace: types, queries (8), actions (8) — switch, create, rename, invite, cancel, accept, change role, remove
- NowościWorkspaceSwitcher w AppNav — dropdown z role icons (Crown/Shield/User), klik → switch + refresh
- NowościStrona /settings/workspace: rename, members management, invite form, pending invites, create new
- NowościStrona /invite/[token] — public z login-redirect, accept przez RPC (email validation)
- Nowościis_workspace_member + is_workspace_admin (security definer) — używane w nowych RLS policies
- NowościRPC accept_workspace_invite — security definer, idempotent, walidacja email auth.users vs invite
- UlepszeniaMigracja RLS: projects/favorites/folders z user_id-based na workspace member-based
- UlepszeniaLimit Free 50 ulubionych liczony per-workspace (nie per-user)
- UlepszeniaPełny namespace i18n workspace.* (PL + EN) — switcher, roles, settings, accept errors
- Dokumentacja8 funkcji w docs/functions.md (sekcja Workspace) + supabase-docs/010
- DokumentacjaTeam plan w Stripe (per-seat), activity log, internal comments — odłożone do v1.2.x/v1.3
v1.1Help Center — 7 artykułów w aplikacji
2026-05-08- NowościCentrum pomocy w /help — 7 artykułów w 4 kategoriach (Pierwsze kroki, Funkcje, Płatności, Pytania)
- NowościArticles registry w lib/help/articles.ts (source of truth: slug, category, icon)
- NowościLayout helpers: ArticleLayout (breadcrumb + h1), ArticleSection, ArticleTip
- NowościDynamic route /help/[slug] z switch po slug + generateStaticParams (14 SSG stron)
- NowościFAQ artykuł z Base UI Accordion (7 Q/A)
- NowościContact card z mailto: hello@listoria.app
- UlepszeniaPełny namespace i18n help.* (PL + EN) — categories, articles content, FAQ
- UlepszeniaBrak MDX dependency — Server Components z t() są wystarczające dla 7 artykułów
- Dokumentacja7 funkcji w docs/functions.md (sekcja Help) + zaktualizowany lib/help/CLAUDE.md
- DokumentacjaWyszukiwarka artykułów + screenshoty odłożone do v1.2+
v1.0MVP Launch — Landing + final polish
2026-05-08- NowościLanding page: LandingNav (sticky), Hero z brand voice headline 'Kosztorys, który robi się sam.', ProblemSection, Features (5 USP w bento), PricingSection z toggle monthly/yearly, FAQSection (7 pytań), LandingFooter (multi-column)
- NowościSEO: sitemap.ts (8 URLs × hreflang), robots.ts (allow public, disallow gated), generateMetadata per locale (OG + Twitter + hreflang)
- NowościPełny namespace i18n landing.* (PL + EN) — meta, nav, hero, problem, features, pricing (toggle/free/pro), faq, footer
- UlepszeniaServer Components first — minimum JS na landingu (tylko PricingCards jako client island)
- UlepszeniaPricing zsynchronizowane z billing module (Free + Pro 49/39 PLN), Team odłożony do Faza 2
- UlepszeniametadataBase + keywords + formatDetection w root layout (no email/tel auto-link)
- UlepszeniaConditional CTA — zalogowany user widzi 'Otwórz aplikację' zamiast 'Załóż konto'
- DokumentacjaScope v1.0 zamknięty — wszystkie pozycje [x] z listoria-v1-scope.md
- Dokumentacja10 nowych funkcji w docs/functions.md (sekcja Landing) + zaktualizowany lib/landing/CLAUDE.md
- DokumentacjaTestimonials, Help Center, Chrome Extension, Team workspace, AI — odłożone do v1.1+/Faza 2/3
v0.10Eksporty — PDF + Excel + Moodboard PDF
2026-05-08- NowościPDF lista zakupowa (A4 portrait) — branding (Pro: logo + studio info; Free: 'Powered by Listoria') + tabela 5-kol per sekcja + sumy + numeracja
- NowościExcel lista (xlsx) — 2 arkusze (Lista + Podsumowanie), grupowanie per sekcja, SUM formulas, format walutowy — Pro only
- NowościPDF moodboard (A3 landscape) — image fill z PNG canvas Excalidraw, branded header — Pro only
- NowościExportButtons w SettingsTab — fetch + blob URL download flow
- NowościMoodboard PDF button w canvas (obok PNG export) — disabled + tooltip dla Free
- NowościRoute handlers (Node.js runtime, force-dynamic): list-pdf (GET), list-excel (GET 403 dla Free), moodboard-pdf (POST z PNG data URL)
- UlepszeniaDefense in depth: frontend disabled + serwer 403 dla Pro-only eksportów
- UlepszeniaPOST dla moodboard-pdf (nie GET) bo PNG data URL ~1-5MB
- UlepszeniaPełny namespace i18n exports.* (PL + EN) — labels, hints, Pro badges, toast messages
- UlepszeniaSlug filename z transliteracją PL diacritics (mieszkanie-kowalski-lista-2026-05-08.pdf)
- DokumentacjaDependency: @react-pdf/renderer ^4.5.1, exceljs ^4.4.0
- Dokumentacja10 nowych funkcji w docs/functions.md
v0.9Billing — Stripe + plany Free/Pro
2026-05-08- NowościMigracja 009: stripe_subscription_id + status + period_end na profiles
- NowościStripe Checkout (subscription mode) z 14-day trial — Pro Monthly (49 zł) / Yearly (39 zł/mc)
- NowościBLIK auto-detect przez Stripe na podstawie PLN currency
- NowościStripe Customer Portal — cancel, update card, invoices
- NowościWebhook /api/stripe/webhook z signature verification i idempotent handlerami
- NowościPlan-based limits: getFavoritesLimit, getProjectsLimit, hasProAccess (cancel-at-period-end uznawany jako Pro)
- NowościStrona /billing: aktualny plan + porównanie Free/Pro + toggle monthly/yearly
- NowościLimitBadge plan-aware: Pro = crown, Free = count/limit z color tone
- UlepszeniaLazy ensureCustomer — Stripe Customer przy pierwszym Checkout, nie przy signup
- UlepszeniaGraceful fallback gdy brak Stripe env vars (banner + disabled CTA)
- UlepszeniaPełny namespace i18n billing.* (PL + EN)
- DokumentacjaTEAM plan + per-project enforcement odłożone do v1.0
- Dokumentacja11 nowych funkcji w docs/functions.md + setup Stripe w CLAUDE.md
v0.8Notifications — in-app powiadomienia
2026-05-08- NowościMigracja 008: rozszerzenie RPC z v0.7 o INSERT do notifications
- NowościDesigner dostaje powiadomienia gdy klient: zmieni status, doda komentarz, otworzy panel
- NowościBell icon w AppNav z badge (unread count)
- NowościDropdown z 10 ostatnimi + button 'Mark all read' + link 'View all'
- NowościStrona /notifications z filter Tabs (all/unread) + paginacja 50 per page
- NowościPer powiadomienie: ikona po typie, deep link, time relative ('5 min temu')
- Nowościtrack_client_view z dedupe 1h (max 1 powiadomienie per godzinę per projekt)
- NowościKlik powiadomienia → auto-mark-read + nawigacja do deep linku
- NowościBulk actions: Mark all read, Delete read
- UlepszeniaICU plural rules dla polskiego (1 minutę / 2 minuty / 5 minut temu)
- UlepszeniaBody komentarza obcięte do 80 znaków + ellipsis w notification
- DokumentacjaEmail Resend odłożony do v0.8.1 (setup domain + API key)
- Dokumentacja9 nowych funkcji w docs/functions.md
v0.7Panel klienta — token-based access
2026-05-07- NowościMigracja 007: 3 RPC security-definer (get_client_view, client_set_product_status, client_add_comment)
- NowościPublic route /[locale]/c/[token] — mobile-first, bez auth, ze studio branding
- Nowości3 przyciski statusu na karcie produktu: Akceptuję / Do przemyślenia / Odrzucam
- NowościCollapsible komentarze per produkt z formularzem (designer/client thread)
- NowościDesigner side: sekcja Panel klienta w SettingsTab z listą linków + dialog tworzenia
- Nowości6 permissions checkboxów: canComment, canChangeStatus, viewPrices, viewSuppliers, viewLinks, viewMoodboard
- NowościServer-side filter pól wrażliwych w get_client_view (price/supplier/source_url null gdy permissions=false)
- NowościAuto-update last_accessed_at + badge “Wygasł” dla linków po expires_at
- NowościCopy-to-clipboard URL z toast confirmation
- UlepszeniaEmpty state dla invalid/expired tokena
- UlepszeniaPełny namespace i18n clientPanel.* (PL + EN) z designer + client UI
- UlepszeniaKlient może ustawić tylko 4 z 6 statusów (bez ordered/delivered — flow zamówienia)
- DokumentacjaMoodboard view w panelu klienta odłożony do v0.7.1 (potrzebny read-only Excalidraw)
- Dokumentacja9 nowych funkcji w docs/functions.md
v0.6Moodboard — Excalidraw canvas
2026-05-06- NowościMoodboardTab zastąpił placeholder — Excalidraw canvas (MIT, w pełni free komercyjnie)
- NowościAuto-save scene state do moodboards.tldraw_document (debounce 1.5s) w onChange callback
- NowościSidebar ProductPicker z miniaturami produktów — klik fetch'uje URL → dataURL → addFiles + updateScene
- NowościSaveBadge nad canvasem (idle/saving/saved/error) bez overlay-a żeby nie przechwytywać klików
- NowościEksport PNG przez exportToBlob({format: image/png, exportPadding: 32}) + manual download
- UlepszeniaDynamic import canvasa (ssr:false) z loading skeletonem
- UlepszeniaJSON-safe round-trip przed upsert — JSON.parse(JSON.stringify(scene))
- PoprawkiFix: swap z tldraw na Excalidraw — tldraw v3+ wymaga komercyjnej licencji w prod
- PoprawkiFix: position:relative na canvas wrapper — tldraw/excalidraw renderują absolute layers
- PoprawkiFix: usunięty revalidatePath z upsertMoodboard — refetch resetował canvas
- DokumentacjaPRD: PDF eksport odłożony do v1.0 (bundle z @react-pdf/renderer)
- Dokumentacja5 nowych funkcji w docs/functions.md
v0.5Favorites — baza ulubionych z folderami
2026-05-06- NowościStrona /favorites z sidebarem folderów + grid ulubionych
- NowościFoldery (CRUD) + 2 wirtualne entries: Wszystkie / Bez folderu
- NowościKarta ulubionego: zdjęcie, cena, dostawca, kategoria, tagi (chipsy)
- NowościAddToProjectDialog — 2-step picker (projekt → sekcja) tworzący snapshot produkt
- NowościQuick 'Save to Favorites' w ProductCard w widoku projektu
- NowościFiltry: search (debounce 300ms) + kategoria + tag z URL state
- NowościLimit Free 50 z LimitBadge (warning na 80%, block na 100%)
- NowościUpload zdjęć (reuse bucketu product-images z subfolderem favorites/)
- UlepszeniaPełny namespace i18n favorites.* (PL + EN) — ~70 kluczy
- UlepszeniaProductCard.tsx: dodany item 'Zapisz w ulubionych' w dropdown menu
- Dokumentacjadocs/functions.md: 14 nowych funkcji modułu Favorites
v0.4Projects — listy zakupowe + kosztorys
2026-05-06- NowościStrona projektu /projects/[id] z 3 zakładkami (Listy / Moodboard / Ustawienia)
- NowościHierarchia: projekt → sekcje (pomieszczenia) → produkty z auto-sumami per sekcja i per projekt
- NowościBudgetBar z animowanym NumberFlow + ostrzeżenie przy przekroczeniu budżetu
- NowościSekcje (pomieszczenia) z chipsami sugestii, inline rename, duplikacja z produktami
- NowościProdukty: cena, ilość, jednostka, dostawca, kategoria, nr katalogowy, link, notatka, zdjęcie
- Nowości6 statusów produktu z 1-klikową zmianą przez dropdown (Propozycja/Zaakceptowany/Odrzucony/Do przemyślenia/Zamówiony/Dostarczony)
- NowościDrag & Drop sekcji + produktów (sortowanie + przenoszenie między sekcjami) z optimistic UI
- NowościFiltry: search z debounce, status, kategoria, dostawca, toggle grid/list — wszystkie z URL state
- NowościUpload zdjęć produktów (Supabase Storage bucket product-images)
- NowościSoft delete produktów + AlertDialog confirm + cascade delete sekcji z ostrzeżeniem
- NowościMigracja 006: storage bucket product-images z RLS (public read, user-folder write)
- UlepszeniaPełny namespace i18n projects.* (PL + EN) — ~100 kluczy z ICU plural
- UlepszeniaMoodboardTab placeholder z planowaną implementacją w v0.6 (tldraw)
- Dokumentacjadocs/functions.md: 16 nowych funkcji modułu Projects
v0.3Dashboard — lista projektów
2026-05-07- NowościStrona /dashboard z gridem projektów (1/2/3 kolumny responsive)
- NowościModal 'Nowy projekt' (nazwa, klient, email, budżet, waluta)
- NowościEdycja projektu z osobnym uploadem cover image
- NowościArchiwizacja + Przywracanie + Oznacz jako ukończony
- NowościSoft delete (kosz na 30 dni) z AlertDialog confirm
- NowościFiltrowanie tabami: Wszystkie / Aktywne / Zarchiwizowane / Ukończone (z badge counterami)
- NowościEmpty state z CTA gdy 0 projektów
- NowościProjectCard z Motion hover, NumberFlow budżet, status badge
- NowościMigracja 005: storage bucket project-covers + RLS
- UlepszeniaAutoAnimate na liście (smooth add/remove/reorder)
- PoprawkiFix: UserMenu split server/client (Base UI error #31 — DropdownMenuLabel wymaga Group wrappera)
- Dokumentacjadocs/functions.md: rejestr 11 nowych funkcji v0.3
v0.2Auth + Settings
2026-05-07- NowościLogowanie email/hasło + magic link + Google OAuth (Supabase Auth)
- NowościRejestracja z auto-tworzonym profilem (trigger handle_new_user)
- NowościForgot/reset password flow (link email → /reset-password)
- NowościOAuth callback handler (PKCE flow) na /api/auth/callback
- NowościMiddleware: chain next-intl + Supabase JWT refresh
- Nowości(app) route group z AuthGuard — protected: dashboard, projects, favorites, settings, billing, help
- Nowości(auth) route group z reverse-guard — login/signup redirektują zalogowanego na /dashboard
- NowościSettings page: profil (imię, język, avatar) + pracownia (nazwa, logo, kontakt)
- NowościAppNav top bar + UserMenu dropdown (avatar, settings, billing, logout)
- NowościMigracja 004: storage buckets `avatars` + `company-logos` z RLS (public read, user-folder write)
- UlepszeniaLanding page z dynamicznym przyciskiem login/signup (zalogowany → dashboard)
- NowościRozbudowa kluczy i18n (auth, settings) PL + EN
- Dokumentacjadocs/functions.md: rejestr 14 nowych funkcji v0.2
v0.1Inicjalizacja projektu
2026-05-06- NowościBootstrap monorepo Turborepo (apps/web + apps/chrome-extension placeholder)
- NowościNext.js 16 + React 19 + Tailwind 4 + Base UI shadcn (54 komponenty)
- NowościKonfiguracja Supabase (clients SSR/browser/middleware) + migracja init schema (12 tabel + RLS)
- Nowościi18n next-intl 4: PL (domyślny) + EN
- NowościDesign system z palety Listorii — Coral #FF6037, Poppins + JetBrains Mono
- DokumentacjaDokumentacja: CLAUDE.md, database.md, functions.md, design-system.md, private-memory.md
- DokumentacjaWewnętrzne skille Claude (/release, /plan, /db-update, /module, /memory, /functions, /design-tokens, /i18n, /test)
- NowościStrona /changelog (publiczna) i /design-system (ukryta dev only)