================================================================================
 i-BOK 5 - CHANGELOG
================================================================================

v5.0.10 (2026-06-16)
--------------------
- Umowy: rejestracja i podgląd daty, godziny oraz adresu IP podpisania umowy
  przez klienta
  - Metadane zapisywane po stronie i-BOK (cfg/contracts/signatures.json), bez zmian w PYXIS
  - W panelu admina (Umowy): nowa sekcja "Umowy podpisane przez i-BOK" na liście
    głównej oraz dane podpisu w szczegółach klienta przy statusie "Podpisana"
- Płatności: wyświetlanie komunikatu po nieudanej inicjalizacji płatności
  (lista faktur czyta parametr error= z payment_init.php zamiast cichego powrotu)
- Dostępność (WCAG AA) i spójność CSP:
  - Przycisk hamburgera nawigacji: aria-controls/aria-expanded/aria-label
  - Modal wygaśnięcia sesji: aria-labelledby/aria-modal + id tytułu
  - Przełącznik trybu ciemnego: role=button, aria-label, tłumaczony tooltip
  - payment_return.php: dodano nonce CSP na skrypcie Bootstrap
- Responsywność (mobile): naprawiono poziome rozjeżdżanie się stron na telefonach
  - Dashboard, widżet "Nierozliczone faktury": na wąskich ekranach (<576px) ukryte
    kolumny "Pozostało" i "Termin" (zostają Nr faktury/Kwota/przycisk Zapłać);
    zachowano overflow:visible, więc dropdown bramek nadal działa
  - Strona klienta "Informacje": tabela historii logowań w table-responsive
  - Strona klienta "Umowy": tabela umów w table-responsive
- 2FA (panel klienta i admina): poprawki UI strony konfiguracji
  - Naprawiono ucinanie pola 6-cyfrowego kodu przy "Zweryfikuj i włącz"
  - Poszerzono pole "Klucz do ręcznego wpisu" (32-znakowy sekret nie jest ucinany)
  - Spójne wyśrodkowanie elementów setupu (QR, klucz, pole kodu); ujednolicono
    wygląd między panelem klienta a admina

v5.0.9 (2026-06-15)
--------------------
- Płatności online: obowiązkowa akceptacja regulaminu bramki przed płatnością
  - Modal z linkiem do regulaminu bramki i checkboxem "zapoznałem się z regulaminem"
    (wymóg przy przerzuceniu prowizji na klienta) — przejście do płatności możliwe
    dopiero po zaznaczeniu zgody
  - Konfigurowalny link regulaminu per bramka w panelu admina (Płatności); puste = oficjalny domyślny
- Tpay: naprawiono "wiszące" przekierowanie do płatności
  - Auto-submit formularza Tpay był blokowany przez CSP (inline <script> bez nonce) —
    dodano nonce + zapasowy przycisk w <noscript>
- Przelewy24: poprawiono format podpisu do REST API v1
  - Podpisy liczone jako SHA-384 z JSON (było: string z separatorem "|"):
    rejestracja, weryfikacja notyfikacji (pełny zestaw pól) oraz transaction/verify
- Płatności: blokada w trybie demo (spójny brak tokenu sesji) oraz przekazywanie
  e-maila klienta do bramki
- Faktury/urządzenia: naprawiono błąd SQL db_read_mac (kolumny prędkości M_PASMO*
  nie istnieją w widoku vMac PYXIS) — lista urządzeń klienta znów się ładuje;
  kolumny per-urządzenie dołączane tylko gdy faktycznie istnieją w widoku
- Prędkości dzień/noc: spójne wyświetlanie obu wariantów (jedna prędkość na dobę
  vs dzień+noc) przez helper ibok_has_night_speed(); dodano prędkość nocną na karcie
  klienta w panelu admina (bez rozjeżdżania kafelków)

v5.0.8 (2026-04-02)
--------------------
- Eliminacja migotania/drgania UI przy przewijaniu i klikaniu w bloki
  - Globalna reguła transition ograniczona do klasy dm-transition (aktywna tylko przy dark mode toggle)
  - Navbar hover: usunięto zmianę padding/margin powodującą reflow layoutu
  - Card hover box-shadow przeniesiony na pseudo-element ::after (GPU-accelerated)
  - Usunięto backdrop-filter z kart, stat-card i navbaru (pozostawiony tylko na login-card)
  - Skrócono animację stat-card (0.35s, mniejsze opóźnienia, dodano will-change)
  - Nav-icon hover: zmniejszono skalę, usunięto kosztowny drop-shadow filter
  - Usunięto transition z card-header icon filter
  - Fixed overlays (body::before, grain) — dodano contain:strict
  - Dark mode toggle w JS dodaje/usuwa klasę dm-transition na 350ms

v5.0.7 (2026-04-02)
--------------------
- Poprawka przypisywania umów do klientów: UM_INDEXUSER = U_INDEX (nie U_NRKLIENTA)
  - Wszystkie zapytania o umowy (pobieranie, podpisywanie, liczenie, PDF) używają JOIN Userdb
  - Wzorzec identyczny jak w db_read_mac() (M_INDEXUSER = U_INDEX)
  - Dotyczy: db_read_umowy_do_podpisu, db_read_umowy_klienta, db_podpisz_umowe,
    db_read_najnowsza_umowa, db_count_umowy_do_podpisu, db_read_umowy_admin,
    db_read_umowy_all, db_get_document_pdf (autoryzacja PDF umów)

v5.0.6 (2026-03-27)
--------------------
- Role użytkowników panelu admina: rozróżnienie admin (właściciel) i serwisant
  - Serwisanci logują się kontami z PYXIS (iBOK_Serw1..3Login/Haslo)
  - Ukrywanie finansowych danych analitycznych firmy dla serwisantów
- Nowa strona: Ustawienia > Funkcje panelu
  - Ukryj prędkości łącza w panelu klienta
  - Ukryj IP urządzeń w panelu klienta
  - Prędkości z urządzeń: fallback na vMac gdy brak w karcie usera
  - Pokazywana jest najwyższa prędkość spośród aktywnych urządzeń klienta
- Odczyt prędkości z tabeli vMac (M_PASMODOWNLOAD/UPLOAD*TXT) w db_read_mac()
- Obsługa błędów zapisu konfiguracji: komunikat z konkretną komendą chmod/chown

v5.0.5 (2026-03-26)
--------------------
- Poprawka połączenia SMTP
- Dodanie debug output SMTP w testach połączenia i wysyłki
- Poprawka formularza "Powiadomienia o logowaniu"
- Poprawka powiadomień o nieudanym logowaniu admina
- Poprawka eksportu backupu konfiguracji
- Szyfrowanie backupu konfiguracji: AES-256-CBC z hasłem, format .enc
- Backup: dodano db/2fa/ (sekrety TOTP, backup codes) i cfg/contracts/

v5.0.4 (2026-03-20)
--------------------
- Opis płatności (O_OPISPLATNOSCI) zapisywany w OplatyIbok z szablonu bramki płatności

v5.0.3 (2026-03-17)
--------------------
- Poprawka wysyłki email z formularza kontaktowego (SMTP używany gdy host skonfigurowany, niezależnie od flagi enabled)
- Poprawka fałszywego komunikatu sukcesu przy błędzie wysyłki w formularzu kontaktowym

v5.0.2 (2026-03-16)
--------------------
- Rejestrowanie wpłat online w tabeli OplatyIbok (data wpłaty, data dodania, kwota, klient, bramka, nr transakcji, nr faktury)
- Automatyczne tworzenie tabeli OplatyIbok przy pierwszej wpłacie (bez ręcznej migracji)

v5.0.1 (2026-03-14)
--------------------
- Zmiana hasła przez użytkownika (panel klienta)
- Wyświetlanie wersji w stopce panelu administracyjnego
- Poprawki stabilności i wydajności
- Poprawki w UI

v5.0.0 (2026-03-01)
--------------------
- Pierwsza wersja i-BOK 5
- Panel klienta: logowanie, dane konta, faktury, płatności online
- Panel administratora: zarządzanie klientami, infrastruktura, urządzenia, statystyki
- Obsługa baz danych: MySQL/MariaDB (PYXIS)
- Bramki płatności: Tpay, Przelewy24, PayU
- Dwuskładnikowe uwierzytelnianie (2FA/TOTP)
- Powiadomienia email (SMTP)
- Tryb demo
- Kontrola dostępu IP (panel klienta i admina)
- Ciemny motyw (dark mode)
- Wielojęzyczność (PL/EN)
- Umowy i oferty zmiany taryfy
- Analityka logowań
- Backup i import konfiguracji
