DinnerApp — Calendar reset + świadomie puste sloty + poprawione snapshoty/presety Data: 2026-10-10 KOLEJNOŚĆ WDROŻENIA 1. Wykonaj SQL: sql/2026-10-10_calendar_empty_slots_and_snapshot_presets.sql 2. Nadpisz pliki z paczki, zachowując strukturę katalogów. 3. Odśwież /calendar (ew. twarde odświeżenie przeglądarki). CO ZMIENIONO /calendar - Dodany przycisk „Restartuj plan”. - Restart usuwa wszystkie posiłki ORAZ znaczniki „Brak” tylko z bieżącego planu. - Zapisane presety/snapshoty pozostają nietknięte. - Puste pole ma teraz główne „+ Dodaj posiłek” oraz mały drugi przycisk „+ Brak”. - „+ Brak” zapisuje świadomie pusty slot w bazie. - Świadomie pusty slot pokazuje stan „× Brak / świadomie pusto”. - Małe „×” przy stanie Brak przywraca zwykły pusty slot. - Mały „+” w stanie Brak pozwala od razu wybrać posiłek. - Przeciągnięcie lub wybranie posiłku automatycznie usuwa znacznik Brak. - Zachowany drag & drop, tryb Plan/Kcal oraz zwijanie pór dnia. ZAPISZ PLAN / PRESETY - Przepisany mechanizm snapshotów. - Snapshot zapisuje WYŁĄCZNIE bieżący plan_id (wcześniej kopiowane były wszystkie wpisy kalendarza). - Wczytanie presetu czyści i odtwarza WYŁĄCZNIE bieżący plan_id (wcześniej czyszczona była cała tabela). - Odtwarzane wpisy mają poprawnie ustawiony plan_id. - Snapshot zapisuje również pola oznaczone jako „Brak”. - Formularz „Zapisz plan” w /calendar przekazuje bieżący plan_id. /plans - Nowy widok zapisanych presetów. - Każdy preset pokazuje nazwę, datę, liczbę posiłków i liczbę pól „Brak”. - Każdy preset ma dokładny, kompaktowy podgląd tygodnia: pora × osoba × dzień. - „Wczytaj do kalendarza” odtwarza snapshot jako bieżący kalendarz. - Z poziomu /plans można także zapisać aktualny kalendarz jako kolejny preset. NOWE TABELE - dnapp_calendar_empty_slots - dnapp_snapshot_empty_slots UWAGA - SQL należy uruchomić przed użyciem przycisku „+ Brak”. - Reset planu jest celowo destrukcyjny dla bieżącego kalendarza i ma potwierdzenie JS.