# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [2.6.5] – 2026-05-08
### Fixed
– Serwerowe zapytania do API MailerLite bywały odrzucane z HTTP 403 przez CDN/WAF przed API na części hostingów (domyślny user-agent WordPressa był blokowany). Wszystkie wywołania API wysyłają teraz jawny user-agent. To naprawia również przypadki, w których subskrybenci nie byli dodawani do MailerLite przy zmianie statusu zamówienia — z tej samej przyczyny (`wml_subscribe` też działa serwerowo).
### Improved
– Komunikaty błędów API pokazują teraz treść odpowiedzi MailerLite (lub fragment surowej odpowiedzi) zamiast samego kodu HTTP — błędy 403/uprawnień można zdiagnozować z panelu ustawień i z logów
## [2.6.4] – 2026-05-08
### Security
– Klucz API MailerLite nie jest już renderowany w stronie ani używany po stronie przeglądarki. Synchronizacja grup działa w całości po stronie serwera (nowy handler `wml_sync_groups`) — klucz nigdy nie opuszcza serwera. Wcześniej złośliwe rozszerzenie przeglądarki mogło odczytać klucz z DOM. (audyt bezpieczeństwa WP Desk)
– Logowanie przeniesione na logger WooCommerce (`WC_Logger`) — wpisy trafiają do `wp-content/uploads/wc-logs/` z haszowaną, nieodgadywalną nazwą pliku i ochroną dostępu zapewnianą przez WooCommerce, zamiast własnego pliku chronionego tylko przez `.htaccess` (który bywa nieskuteczny na nginx/LiteSpeed i mógł ujawniać adresy e-mail klientów). Podgląd logów w panelu wtyczki oraz w WooCommerce → Status → Logi. (audyt bezpieczeństwa WP Desk)
### Changed
– Pole klucza API nie jest pre-wypełniane — przy zapisanym kluczu pokazuje maskę; puste zapisanie zachowuje istniejący klucz, wpisanie nowego go nadpisuje
## [2.6.3] – 2026-05-08
### Fixed
– Brakujący mechanizm sprawdzania aktualizacji — wtyczka nigdy nie odpytywała serwera licencji, przez co powiadomienia o nowych wersjach nigdy nie pojawiały się w panelu WordPress. Dodano filtr `pre_set_site_transient_update_plugins` z cache’owaniem wyniku co 12h.
– Dodano obsługę popupu “Zobacz szczegóły wersji” w WordPress (filtr `plugins_api`) — wyświetla changelog bezpośrednio w adminie.
## [2.6.2] – 2026-05-06
### Added
– Log viewer wbudowany w panel wtyczki — wyświetla ostatnie 50 zdarzeń z kolorowaniem (OK/ERROR/skipped), przyciski Odśwież, Pobierz plik i Wyczyść logi. Nie wymaga dostępu do serwera.
### Fixed
– Podgląd logów czytał zły plik (`wml-log.txt` zamiast `wml-logs/wml-log.txt`) — sekcja logów była zawsze pusta mimo aktywnego logowania
## [2.6.1] – 2026-05-06
### Fixed
– Two-step MailerLite group assignment: subscriber is first created/updated via `POST /subscribers`, then explicitly assigned to the group via `POST /subscribers/{id}/groups/{group_id}` — guarantees group membership for both new and returning (existing) subscribers
### Improved
– Log entries now include the MailerLite subscriber ID on success, making remote debugging significantly easier
– Settings page now clearly explains that `unconfirmed` status prevents automations from firing until the subscriber confirms their subscription; recommends pairing `active` status with the consent checkbox for immediate automation triggers
### Added
– `readme.txt` for WordPress.org and WP Desk marketplace compliance
## [2.6.0] – 2026-05-06
### Added
– DNS Health Check panel in plugin settings — checks SPF, DMARC, BIMI, CAA, MTA-STS records for the store domain
– Warning displayed in settings when “active” subscription status is used without a consent checkbox
## [2.5.0] – 2026-04-20
### Added
– Marketing consent checkbox option for WooCommerce checkout — customers are added to MailerLite only if they opt in
– Subscription status setting: “unconfirmed” (double opt-in, recommended) or “active” (direct add)
– Editable consent checkbox label in plugin settings
## [2.4.1] – 2026-04-18
### Changed
– Full WordPress Coding Standards (WPCS) compliance: i18n wrappers on all user-facing strings, PHPDoc blocks on all functions, proper code formatting
## [2.4.0] – 2026-04-15
### Added
– Privacy policy content registration via wp_add_privacy_policy_content (GDPR)
– GPL-3.0+ license
### Changed
– Plugin version constant synchronized with plugin header
## [2.3.2] – 2026-04-10
### Fixed
– Log file moved to protected directory (wp-content/wml-logs/) with .htaccess deny — was previously accessible from the web
– MIME type validation added to ZIP file upload in license server admin
– Capability check added at the start of admin page render function
## [2.3.0] – 2026-03-01
### Added
– Automatic license verification via daily WP-Cron job
– Auto-deactivation of plugin features on invalid license
– Auto-update system: client plugin checks license server for newer version and injects into WordPress updater
– HTML email template for license delivery (new purchase and renewal variants)
– ZIP upload system in license server admin panel
– Search and delete functionality in license keys table