ChangeLog Zgłoszeniomat COZ

To lista co zmieniamy

Czym jest ChangeLog Zgłoszeniomat?

To dziennik zmian projektu – zapisujemy tu nowe funkcje, poprawki i decyzje techniczne. Dzięki temu widzisz, w jakim kierunku rozwijamy narzędzie i co już dziś działa lepiej niż wczoraj.

📅 2025-10-20 | v0.6.0-beta
⚙️ Nowe funkcje: Edycja i zapis opisu podczas przeglądania zgloszenia.
⚙️ Nowe funkcje: Akcje wideo: „Oznacz jako dowód” - używanie dowodu do innych zgłoszeń
⚙️ Nowe funkcje: Dodano automatyczną blokadę edycji opisu zgłaszającego.
📅 2025-10-19 | v0.5.5-beta
⚙️ Aktualizacja: Tailwind v3 na v4 – pełna kompatybilność z Vite i Flowbite.
🕒 Dodano: Harmonogram zadań backup:db z logowaniem wyników.
📄 Opracowano: Szablon pism z watermarkiem Zgłoszeniomat.pl i nagłówkiem systemowym.
🔢 Dodano: Generowanie kodu kreskowego na pismach PDF (identyfikator sprawy).
📅 2025-10-16 | v0.5.4-beta
⚙️ Naprawiono: Usuwanie zdjęcia podczas tworzenia zgłoszenia.
⚙️ Dodano: Relacja parent_id między zdjęciem a miniaturą (pełna automatyka kasowania).
🧹 Poprawiono: czyszczenie plików _thumb z dysku.
📅 2025-10-12 | v0.5.3-beta
🚀 Nowość: Dodano okno potwierdzenia wysyłki zgłoszenia (modal). Przed wysłaniem użytkownik potwierdza oświadczenie o prawdziwości danych, świadomości odpowiedzialności karnej (art. 66 § 1 KW) oraz zgodzie na ewentualne wezwanie w charakterze świadka.
🗂️ Ulepszenie: Dodano bezpieczne kasowanie zgłoszeń wraz z powiązanymi plikami (zdjęcia, filmy, katalogi MinIO). System automatycznie rozpoznaje lokalizację plików — lokalną (local/tmp) lub zdalną — i usuwa je w transakcji.
⚙️ Usprawnienie: Wprowadzono kontrolę statusu przy usuwaniu — tylko zgłoszenia w statusie w_przygotowaniu mogą zostać usunięte, inne są chronione.
🎨 Ulepszenie: Odświeżony wygląd changeloga! Zmieniono układ panelu miesięcy i sekcji wpisów. Dodano przewijanie do początku przy zmianie miesiąca oraz poprawiono wrażenia wizualne (lepsze kontrasty, marginesy, animacja przejść).
📅 2025-10-11 | v0.5.2-beta
🚗 Nowość: Wprowadzono system recydywy pojazdów! Teraz możesz zobaczyć, ile razy dany samochód był już zgłaszany — koniec z notorycznymi łamaczami przepisów.
⚙️ Ulepszenie: Dodano dynamiczne trasy dla bloga i artykułów (/blog, /poradniki, /artykuly), w tym obsługę kategorii i pojedynczych wpisów. Teraz wszystkie materiały edukacyjne dostępne są pod czytelnymi adresami SEO-friendly.
🚀 Nowość: Automatyczne rozpoznawanie adresata zgłoszenia (Straż Miejska / Policja / e-mail) na podstawie danych z bazy cms_miasta i cms_wojewodztwa. System wyświetla pełną nazwę jednostki, adres e-mail oraz datę wysyłki zgłoszenia w panelu podglądu.
🛡️ Nowość: Wprowadzono kompletny panel administracyjny z kontrolą dostępu opartą o role użytkowników. Nowy AdminMiddleware chroni sekcje /admin, a widok błędu 403 informuje o braku uprawnień w elegancki sposób.
⚙️ Ulepszenie: Dodano obsługę ról w tabeli users (pole rola) i definicję uprawnienia Gate::define('admin-only'). Dzięki temu system rozpoznaje administratorów i pozwala im korzystać z dodatkowych funkcji panelu.
📅 2025-10-10 | v0.5.1-beta
🔧 Fix: Middleware ServiceMode obsługuje teraz poprawnie ścieżki zagnieżdżone (/panel/*, /api/*) oraz adresy nadrzędne.
🥳 Ulepszenie:pełne wsparcie dla kolorowych emoji w interfejsie i powiadomieniach (Ubuntu + Chrome fix).
🥳 Ulepszenie:Zmiany treści szablonów e-mail i załączników PDF
🥳 Mowość:Teraz zawsze wiesz, do kogo trafi Twoje zgłoszenie! Informacja o adresacie (Straż Miejska / Policja) pojawia się przy tworzeniu i przeglądaniu zgłoszenia.
🥳 Ulepszenie:Poprawki w wyglądzie listy zgłoszeń. Dodano markę pojazdu, numer rejestracyjny
📅 2025-10-10 | v0.5.0-beta
🧾 Nowość: Wprowadzono inteligentny parser numerów rejestracyjnych oparty o pełną bazę województw i powiatów. System rozpoznaje tablice rejestracyjne indywidualne.
🎥 Nowość: Możliwość dodawania filmów do zgłoszenia. Każdy film jest automatycznie przesyłany na serwer zewnętrzny przez bezpieczne połączenie SFTP i może być odtwarzany przez wewnętrzny proxy player.
🛡️ Nowość: Wbudowany system antywirusowy (ClamAV). Każde przesłane zdjęcie i film są automatycznie skanowane w tle przez 2 niezależne silniki antywirusowe.
🧾 Nowość: Tryb serwisowy. Wyłącza stronę na czas prac związanych z modyfikacją kodu aplikacji.
⚙️ Nowość: System kolejek dla zgłoszeń oparty o Bus::chain() do przetwarzania zgłoszeń krok po kroku
🚦 Nowość: Tryb anonimowego i jawnego zgłaszania – użytkownik może sam wybrać, czy chce pozostać anonimowy.
🔐 Bezpieczeństwo: Integracja z WireGuard VPN i firewall. Ograniczony dostęp do usług.
🛰️ Nowość: Własny serwer proxy do wyświetlania zdjęć i filmów (bezpośrednie URL-e ukryte). Obsługa podpisanych linków, cache-control, miniatur oraz Range dla szybkiego podglądu.
🎬 Nowość: Własny odtwarzacz wideo w panelu — scrubber, podgląd klatek, prędkość 0.5×–2×, zapamiętywanie pozycji, klawisze skrótów (J/K/L, ←/→), tryb obraz-w-obrazie. Wsparcie strumieniowania przez proxy.
🧪 Jakość: Detekcja duplikatów plików (SHA256) – brak powielonych załączników.
📅 2025-09-25 | v0.4.3-beta
🔒 Bezpieczeństwo & spójność: deduplikacja zdjęć oparta o UNIQUE(tempId, hash_sha256) + atomowe insertOrIgnore (koniec z race condition). Usunięto zbędny indeks hash_sha256_2.
🧼 Cleanup: poprawne czyszczenie plików TMP na disk('local') również w ścieżkach wyjątków.
🪪 Sesja: ujednolicenie klucza sesji na tempId i poprawny reset po zapisaniu zgłoszenia.
📅 2025-09-24 | v0.4.2-beta
🧩 UI/UX: auto-expand sekcji changeloga po hashu w URL (#vX.Y.Z) + przycisk „udostępnij link”.
📈 Content: uzupełnienia wpisów (czas publikacji, GA/GSC śledzenie widoków changeloga).
📅 2025-09-22 | v0.4.1-beta
✉️ MailService: presigned/streamowane załączniki z MinIO w e-mailu; fallback na tabelkę linków „Zobacz/Pobierz”. Logowanie wysyłek.
🧱 Joby: GenerateSendEmailJob (timeout, $tries), spójne ID procesu (pid) w logach.
🧪 Debug: szybkie testy Tinkerem dla dysków MinIO (exists()) i walidacji zmiennych.
📅 2025-09-21 | v0.4.0-beta
🧵 Workflow: wprowadzenie kolejek dla zgłoszenia (Bus::chain): ZIP → UploadVideo → PDF → BuildEmail → SendEmail. Każde zgłoszenie z własną kolejką case-{id}.
🧑‍💻 CLI: komenda php artisan zgl:run-case {id} uruchamia dedykowanego workera (queue:work) dla konkretnego case’a.
🧾 PDF: generowanie wielostronicowego PDF (zdjęcia + thumbs), ~200 KB przy 5 zdjęciach.
🛡 MinIO ACL: naprawa błędu 403 (AccessDenied) – poprawione polityki/buckety dla zgm-documents.
📅 2025-09-20 | v0.3.9-alpha
📤 Asynchroniczne „Wyślij”: natychmiastowa odpowiedź do UI (workflow_status=queued) + uruchomienie workera w tle.
🧯 Stabilność: timeouty jobów, retry, i kolejkowanie CPU-heavy zadań, by nie dławić serwera dedykowanego.
📅 2025-09-18 | v0.3.8-alpha
🪣 Storage: MinIO multi-bucket (zgm-temp, zgm-images, zgm-documents, zgm-archives, zgm-videos). Portainer stack + monitoring.
🛡 AV: Dockerized ClamAV; test EICAR OK; MIME/magic-bytes + sha256 + throttle „podejrzanych” JPEG.
🖼 Media: skalowanie (max 1920 px), thumbs 600 px, EXIF privacy tips.
📅 2025-09-16 | v0.3.7-alpha
🧰 Refactor uploadu: hash z oryginału, idempotentny zapis, rollback rekordu przy błędzie uploadu do MinIO.
🧩 Endpoint: zdjecie_remove usuwa pliki + rekord; statusy zwracane jako JSON.
📅 2025-09-10 | v0.3.6-alpha
🧭 Routing & streaming: publiczne trasy do streamowania obrazów z MinIO z ochroną hash-ową (/zdjecie/{sha256}).
🖼 UI: podgląd istniejących zdjęć po odświeżeniu (init Dropzone na podstawie tempId).
📅 2025-09-08 | v0.3.5-alpha
🧱 Walidacja: wymagane co najmniej 1 zdjęcie (server-side) przed zapisaniem zgłoszenia; komunikaty dla użytkownika.
🗺 Mapa: generowanie zdjęcia mapy z pinem i dołączanie jako osobne zdjęcie do zgłoszenia.
📅 2025-08-08 | v0.3.4-alpha
📦 08:52 | Nowość: Instalacja i integracja, obsługa wyboru lokalizacji Mapbox:
dodanie interaktywnej mapy z Mapbox do formularza zgłoszenia (adres zgłoszenia)
wyświetlanie mapy z pinezką (widok statyczny) na stronie pojedynczego zgłoszenia
wybór lokalizacji przez kliknięcie w mapę
📦 09:57 | Nowość: Generowanie oświadczeń
Ulepszono generowanie oświadczeń: tekst „Byłem świadkiem momentu parkowania...” teraz automatycznie uwzględnia płeć kierującego.
Dodano dynamiczne podstawianie rodzaju gramatycznego w zdaniach (np. „kierująca kobieta naruszyła zieleń...”).
Pełna zgodność językowa z płcią kierującego – jak w sądowym protokole 👩‍⚖️👨‍⚖️
🔧 22:47 | Usprawniono: zapamiętywanie lokalizacji na mapie po nieudanym zapisie zgłoszenia.
📅 2025-08-07 | v0.3.3-alpha
🔧 Zmieniono: wygląd profilu użytkownika: Dodano nowe pola: adres, numer telefonu oraz miejscowość.Wprowadzono walidację danych.
🧾 Zmieniono: wygląd strony przeglądu zgłoszenia: Zmieniono layout sekcji szczegółów. Dane są teraz pobierane dynamicznie z bazy danych – wyświetlane są szczegóły zgłoszenia wraz z danymi użytkownika i powiązanymi wpisami.
🔗 Poprawiono: relacje w bazie danych: Usprawniono powiązania między tabelami zgloszenia, wykroczenia_drogowe oraz wykroczenia_drogowe_lista, uwzględniając pivoty i dodatkowe pola (user_id) w tabeli pośredniczącej.
🆕 Dodano: integrację z Google Analytics – śledzenie ruchu na stronie w środowisku produkcyjnym.
🆕 Dodano: integrację z Google Search Console oraz możliwość automatycznego generowania i aktualizacji pliku sitemap.xml przy użyciu Laravel Scheduler.
📸 Nowość: Dodano pełną obsługę dodawania zdjęć do zgłoszenia za pomocą Dropzone.js:
przeciąganie plików (drag & drop),
dynamiczny podgląd miniatur,
możliwość usuwania,
limit rozmiaru i ilości (max 3 zdjęcia, max 5 MB każdy),
detekcja duplikatu nazwy – z kodem 409 i komunikatem SweetAlert,
wykrywanie błędów przesyłania (500, 403 itd.) z pełną obsługą komunikatów.
Wdrożono pobieranie już przesłanych zdjęć po odświeżeniu strony (init Dropzone na podstawie tymczasoweId).
📦 Bezpieczeństwo: Wydzielony magazyn plików Zgłoszeniomatu – dane poza public, a jednak dostępne.
📄 Wprowadzono: SweetAlert2 do komunikatów o błędach i sukcesach (duplikaty, usunięcia)..
🆕 Dodano:
Przycisk „Udostępnij link” przy każdej sekcji changelogu (po prawej stronie nagłówka).
Funkcjonalność kopiowania bezpośredniego linku do schowka.
Estetyczne powiadomienia toastowe z wykorzystaniem SweetAlert2 potwierdzające kopiowanie lub zgłaszające błąd.
🆕 Dodano:
Mechanizm powiązania zdjęć z tymczasowym identyfikatorem tymczasowe_id podczas dodawania zdjęć do zgłoszenia.
Po zapisaniu zgłoszenia następuje automatyczne przypisanie zdjęć z tymczasowe_id do właściwego rekordu zgloszenie_id w bazie.
Połączenie zdjęć ze zgłoszeniem oraz czyszczenie tymczasowe_id z sesji zapewnia porządek i poprawne przypisanie zasobów.
🧹 Poprawka: po zapisaniu zgłoszenia usuwany jest katalog zgloszenia/tymczasowe/{id}, aby nie pozostawały niepotrzebne pliki. przy użyciu Laravel Scheduler.
📸 Dodano: wyświetlanie zdjęć zgłoszenia na stronie przeglądu – każde zdjęcie prezentowane w osobnym kontenerze z miniaturą i nazwą pliku.
⚠️ Poprawiono: dodanie walidacji po stronie serwera – wymagane co najmniej jedno zdjęcie do zgłoszenia.
📦 Dodano: system zarządzania plikami po zapisaniu zgłoszenia:
Przenoszenie zdjęć z katalogu tymczasowego do katalogu docelowego (wg wzoru ZGM/ID_USERA/WD/ID_ZGLOSZENIA_*.png)
Zmiana ścieżki i nazwy plików w bazie danych.
Usuwanie katalogu tymczasowego po przeniesieniu zdjęć
📤 Poprawiono: zachowanie Dropzone.js – dodanie automatycznego usuwania nadmiarowych plików przy przekroczeniu limitu (max 3 zdjęcia).
🧽 Refaktoryzacja: uporządkowano obsługę plików w kontrolerze i helperze sesji getTymczasoweId()
🆕 Dodano obsługę GLightbox:
Zdjęcia w zgłoszeniu można teraz przeglądać w pełnym rozmiarze dzięki GLightbox
Inicjalizacja lightboxa oparta o data-glightbox="zgloszenie-{id}"
Pełna integracja z Vite (import JS + CSS, npm install glightbox)
Responsywność, animacje i wyświetlanie tytułów zdjęć.
🆕 Poprawiono numerację zgłoszeń
Naprawiono błąd powodujący, że nowe zgłoszenia otrzymywały zawsze ten sam numer (ZGM/ID_USER/WD/NR_KOLEJNY).
Wprowadzono logikę inkrementacji numeru nr_kolejny dla kombinacji user_id + typ_kod
Dodano funkcję generujSygnature() zwracającą zarówno sygnaturę, jak i numer porządkowy.
Sygnatury typu ZGM/{user}/{typ}/{numer} generowane są teraz poprawnie i unikalnie.
🗑️ Możliwość anulowania wersji roboczej
Użytkownik może teraz anulować niesfinalizowane zgłoszenie (status: w_przygotowaniu).
System usuwa automatycznie wszystkie powiązane dane, relacje i zdjęcia z serwera.
Bezpieczeństwo: tylko właściciel zgłoszenia ma dostęp do tej opcji.
🎯 Dodane: Dostosowanie stron CMS do udostępniania w social media (OpenGraph, Twitter Card, og:image)
🆕 Dodane: Utworzono serwer Discord – dedykowany kanał dla społeczności Zgłoszeniomatu: dyskusje, sugestie, luźne rozmowy i szybki kontakt z twórcami.
🆕 Utworzono: stronę „Kontakt” – nowa podstrona kontaktowa z wszystkimi formami kontaktu: fanpage, grupa, Discord, e-mail.
Dodano: pole show_meta do tabeli cms_pages – możliwość zarządzania widocznością paska metadanych (autor, data, czas czytania, liczba wyświetleń).
📅 2025-08-06 | v0.3.2-alpha
🆕 Dodane: nowe logo w nawigacji, stopce oraz na stronie logowania
🆕 Dodane: system zliczania kliknięć w linki (fanpage, grupa) z wbudowanym mechanizmem antyspamowym, zabezpieczenie sztucznemu nabijaniu statystyk. Możliwość szybkiego dodawania nowych linków bez dodatkowego kodowania.
🆕 Dodane: meta panelu nad treścią stron (autor, data publikacji, ostatnia aktualizacja, czas czytania, liczba wyświetleń).
🆕 Dodane: Automatyczne wyliczanie czasu czytania na podstawie liczby słów w treści ($content), z minimalną wartością 1 min.
🆕 Dodane: globalnego helpera formatDatePL() – automatyczne formatowanie dat w stylu „6 sierpnia 2025” z obsługą języka polskiego.
🖼 Dodane: favicon w Zgłoszeniomacie (pełny zestaw ikon, obsługa PWA)
📦 Dodana: paczka `picqer/php-barcode-generator` do generowania kodów kreskowych
🎨 Ulepszone: Nowy układ regulaminu – zmiana kolejności sekcji, unikalne sformułowania, przeniesienie tip-boxa na górę.
🎨 Ulepszone: Aktualizacja wersji systemu do **v0.3.2-alpha**
🎨 Ulepszone: Drobne poprawki w changelogu
🔒 Ulepszone: Ograniczenie listy zgłoszeń do zalogowanego użytkownika (`where('user_id', auth()->id())`)
Dodano url prowadzący do szczegółów zgłoszenia w liście zgłoszeń
📦 Aktualizacja: o godzinie 18:07 helpera formatDatePL()
Rozszerzenie: dodano obsługę 3 trybów formatowania:
- `standard` → `6 sierpnia 2025 15:45`
- `full` → `środa, 6 sierpnia 2025 15:45`
- `short` → `06.08.2025 15:45`

formatDatePL('2025-08-06 15:45')   // 6 sierpnia 2025 15:45
formatDatePL('2025-08-06 15:45', 'full')   // środa, 6 sierpnia 2025 15:45
formatDatePL('2025-08-06 15:45', 'short')  // 06.08.2025 15:45
📅 2025-08-05 | v0.3.1-alpha
🆕 Dodane: Tip-boxy z ikonami 💡⚠️🚨✅
🆕 Dodano: Generowanie sygnatur zgłoszeń
🆕 Dodano: Moduł zgłoszeń drogowych
🆕 Dodane: Moduł cms_pages do tworzenia podstron
🆕 Dodane: SEO meta z bazy
🆕 Dodane: Komponent <x-tip-box> w stylu 🔵
🆕 Dodane: Wersje kolorystyczne: info, warning, danger, success
🆕 Dodane: publikacje pierwszych stron w module CMS
🆕 Dodane: artykuł „Jak zgłaszać krok po kroku”
🆕 Dodane: artykułu „Misja i cele projektu”
🆕 Dodane: changeloga jako podstrony
🆕 Dodane: Placeholder linków w stopce z `?placeholder=true`
🆕 Dodane: Info-box „Treść w przygotowaniu” na liście stron
🆕 Dodane: Safelist w Tailwind dla kolorów
🆕 Dodane: „Misja i cele projektu” jako artykuł premium
🆕 Dodane: Komponenty 🟪🟧🟩🟥🟦 dla boxów premium
🆕 Dodane: Obsługa linków nieaktywnych → przekierowanie z ?placeholder=true
🆕 Dodane: Oznaczenia ✅/❌ w stopce dla admina
🆕 Dodane: Styl CTA w stopce – box „Masz coś do zgłoszenia?”
🆕 Dodane: Widok 404 w <x-app-layout>
🎨 Ulepszone: Przygotowanie nowej strony głównej – odświeżony układ, treści i sekcje
🎨 Ulepszone: Breadcrumbs, formatowanie nagłówków i list
🎨 Ulepszone: Responsywny widok pages/show
🎨 Ulepszone: Spójność pages/index i pages/show
🎨 Ulepszone: Nowe style boxów premium 🟩🟧🟥🟦
🎨 Ulepszone: Spójność pages/index i pages/show, SEO meta i breadcrumbs
🎨 Ulepszone: Paginacja i układ kart w prose
📅 2025-08-04 | v0.3.0-alpha
🆕 Zakup: Zakup domeny zgloszeniomat.pl
🛠 Konfiguracja: Konfiguracja hostingu produkcyjnego (Home.pl)
🛠 Konfiguracja: Wdrożenie certyfikatu SSL (Let's Encrypt) + wymuszanie HTTPS
🆕 Dodane: skrzynkę pocztową info@zgloszeniomat.pl
📅 2025-08-03 | v0.2.1-alpha
🆕 Dodane: Widok changeloga i trasa /changelog
🆕 Dodane: Strona z wyborem typu zgłoszenia – podział na kategorie (wykroczenia drogowe, śmieci, picie alkoholu w miejscu publicznym itp.)
🛠 Przebudowa: Bazy danych – dodanie obsługi zgłoszeń według typu
🆕 Dodane: Dedykowana tabela dla wykroczeń drogowych
🆕 Dodane: Powiązanie wykroczeń drogowych z konkretnym zgłoszeniem
📅 2025-08-02 | v0.2.0-alpha
🆕 Dodano: system pierwszego ustawienia hasła
🆕 Dodano: stopkę z dynamiczną nazwą i wersją systemu w `layouts.app`
🆕 Dodano: Trasa `/changelog` z podglądem `CHANGELOG.md`
🆕 Dodano: Widok changeloga (`resources/views/changelog.blade.php`)
🆕 Dodano: kontrolery: ZgloszeniaController (lista, filtrowanie) i ZgloszenieController (tworzenie i zapis)
🛠 Konfiguracja: `APP_PROJECTNAME` oraz `APP_VERSION` w `.env` i `config/app.php`
🛠 Konfiguracja: użytkownik z `first_register == true` widzi formularz `Zmień hasło`
🛠 Konfiguracja: po zapisaniu hasła pole `first_register` zmienia się na `true`, a widok znika
🛠 Konfiguracja: Jeśli `first_register == false`, użytkownik widzi formularz `Ustaw hasło`
🛠 Konfiguracja: Pole `first_register` w tabeli `users` (domyślnie `false` dla kont Google)
📅 2025-08-01 | v0.1.0-alpha
💡 Pomysł: Własny „MJIPAK CMS”
💡 Plan: System zgłoszeń, Laravel 12 + Vite + Tailwind
🛠 Instalacja frameworka w PHP w Laravel 12
🛠 Instalacja Laravel Breeze (autoryzacja, rejestracja, reset hasła)
🛠 Instalacja tailwindCSS + Blade
🛠 Instalacja systemu ról oparty o `spatie/laravel-permission`
🛠 Konfiguracja middleware `role:` do kontroli dostępu do tras
🛠 Konfiguracja routingu zabezpieczone przez `auth` i `role`
🛠 Konfiguracja logowania i rejestracji z użyciem konta Google (`laravel/socialite`)
🛠 Konfiguracja przypisywanie roli `user` przy logowaniu Google (z automatycznym `firstOrCreate`)

Masz coś do zgłoszenia?

Przejdź do formularza i zgłoś problem w swojej okolicy.

🚨 Zgłoś teraz

Szanujemy Twoją prywatność

Używamy plików cookie w celach niezbędnych, analitycznych i funkcjonalnych. Szczegóły w Polityce prywatności oraz Polityce cookies.