@@ -1,746 +1,72 @@
< b > ver . 0.306 - 22.02 . 2026 </ b >< br />
FIX - ukrywanie form dostawy gdy nie ma dostepnych form platnosci ( filtrowanie po min / max kwoty zamowienia )
< hr >
< b > ver . 0.305 - 22.02 . 2026 </ b >< br />
FIX - naprawa kolejnosci atrybutow permutacji , NEW - pasek postepu darmowej dostawy w koszyku
< hr >
< b > ver . 0.304 - 22.02 . 2026 </ b >< br />
NEW - konfigurowalne limity kwotowe metod platnosci ( min / max kwota zamowienia )
< hr >
< b > ver . 0.305 - 22.02 . 2026 </ b >< br />
FIX - naprawa kolejnosci atrybutow permutacji ( sortowanie po ID atrybutu ), NEW - pasek postepu darmowej dostawy w koszyku , FIX - icheck CSS przeniesiony do globalnego layoutu admina
< hr >
< b > ver . 0.304 - 22.02 . 2026 </ b >< br />
NEW - konfigurowalne limity kwotowe metod platnosci ( min / max kwota zamowienia ), zastapienie hardcoded warunku PayPo
< hr >
< b > ver . 0.303 - 22.02 . 2026 </ b >< br />
FIX - naprawiono wyswietlanie atrybutow produktu na fronci e ( kolizja kolejnosci ) , NEW - przycisk Podglad w edycji produktu
< hr >
< b > ver . 0.302 - 22.02 . 2026 </ b >< br />
NEW - REST API wariantów produktów ( CRUD ), słownik atrybutów , filtrowanie po atrybutach , wzbogacone atrybuty z tłumaczeniami
< hr >
< b > ver . 0.301 - 22.02 . 2026 </ b >< br />
NEW - Ukrywalne filtry tabel , mobilna wersja szczegółów zamówienia
< hr >
< b > ver . 0.300 - 21.02 . 2026 </ b >< br />
- NEW - System aktualizacji oparty na manifestach JSON ( checksum SHA256 , backup plikĂłw , automatyczny build )
- NEW - Panel logu aktualizacji w panelu admina
< hr >
< b > ver . 0.299 - 21.02 . 2026 </ b >< br />
- NEW - Ukrywanie / pokazywanie kolumn w tabelach admina ( toggle switch + localStorage )
< hr >
< b > ver . 0.298 - 20.02 . 2026 </ b >< br />
- FIX - kilka poprawek po aktualizacji
< hr >
< b > ver . 0.297 - 19.02 . 2026 </ b >< br />
- NEW - REST API produktów ( lista , szczegół y , tworzenie , aktualizacja )
- NEW - Endpoint products z filtrowaniem , sortowaniem i paginacjÄ…
- NEW - Partial update produktĂłw ( tylko zmienione pola )
< hr >
< b > ver . 0.296 - 19.02 . 2026 </ b >< br />
- NEW - REST API zamówień dla ordersPRO ( lista , szczegół y , zmiana statusu , pł atnoś ci )
- NEW - Endpointy sł ownikowe ( statusy , transporty , metody pł atnoś ci )
- NEW - Autentykacja API przez X - Api - Key header
- NEW - Kolumna updated_at w pp_shop_orders ( polling zmian )
< hr >
< b > ver . 0.295 - 19.02 . 2026 </ b >< br />
- NEW - Edycja produktĂłw w zamĂłwieniu z panelu admina ( dodawanie , usuwanie , zmiana iloĹ› ci / cen )
- NEW - Wyszukiwarka produktĂłw AJAX w formularzu edycji zamĂłwienia
- NEW - Automatyczna korekta stanĂłw magazynowych i przeliczanie kosztu dostawy
- FIX - Cena promo w zamĂłwieniu = 0 gdy identyczna z cenÄ… bazowÄ…
< hr >
< b > ver . 0.294 - 19.02 . 2026 </ b >< br />
- FIX - Code review zakończony ( 96 / 96 klas , ~ 1144 metod ) : 27 fixów across all layers
- FIX - Domain : null guard na query () -> fetchAll () w 8 repozytoriach , redundancja DI w PromotionRepository
- FIX - Admin : null safety find () ? : [] w 10 kontrolerach , null guard w App logowaniu / 2 FA
- FIX - Front : LayoutEngine undefined $level + $_GET null check , ShopBasketController missing global $lang_id
- FIX - Shared : Helpers $_GET null check + bug 'png' → 'image/png' ( Imagick lossless WebP nigdy nie dział ał )
< hr >
< b > ver . 0.293 - 19.02 . 2026 </ b >< br />
- FIX - ArticleRepository : SQL injection fix ( addslashes→ parameterized ), uproszczenie articleDetailsFrontend
- FIX - AttributeRepository : martwy class_exists ( '\S' ) blokowal czyszczenie cache / temp
- FIX - CategoryRepository : martwy class_exists ( '\S' ) blokowal generowanie linkow SEO kategorii
- FIX - BannerRepository : parametryzacja dat w SQL + null guard na query ()
- FIX - BasketCalculator : null guard checkProductQuantityInStock + opcjonalne DI params summaryPrice / calculateBasketProductPrice
- FIX - PromotionRepository : null guard na $basket ( produkcyjny fatal error )
- UPDATE - OrderRepository , ShopBasketController , ajax . php : jawne DI zamiast globals w callerach BasketCalculator
< hr >
< b > ver . 0.292 - 18.02 . 2026 </ b >< br />
- UPDATE - pelna migracja front\factory\ do Domain ( 5 ostatnich klas : ShopProduct , ShopPaymentMethod , ShopPromotion , ShopStatuses , ShopTransport )
- UPDATE - ProductRepository : ~ 20 nowych metod frontendowych ( cache Redis , lazy loading , SKU / EAN fallback )
- UPDATE - PromotionRepository : 5 metod aplikowania promocji ( applyTypeWholeBasket / CheapestProduct / CategoriesOr / CategoriesAnd / CategoryCondition )
- UPDATE - TransportRepository : 4 metody frontendowe z cache ( transportMethodsFront , transportCostCached , findActiveByIdCached , forPaymentMethod )
- UPDATE - PaymentMethodRepository : metody frontendowe z Redis cache
- CLEANUP - usuniety caly folder front\factory\ ( 20 klas zmigrowanych ) + 4 inne klasy legacy
- FIX - broken transports_list () w ajax . php zastapiony nowa metoda forPaymentMethod ()
- UPDATE - front\controls\Site przemianowany na front\App ( router , camelCase : checkUrlParams , pageTitle )
- UPDATE - front\view\Site przemianowany na front\LayoutEngine ( layout engine , camelCase : cookieInformation )
- CLEANUP - usuniete autoload / front / controls / i autoload / front / view / ( puste foldery + pliki legacy )
- UPDATE - usuniecie 12 legacy klas z autoload / shop / ( ~ 2363 linii ) — pelna migracja na Domain - Driven Architecture
- UPDATE - class . Order . php : logika Apilo sync i email statusu przeniesiona do OrderAdminService
- UPDATE - class . Product . php : ~ 20 metod przeniesionych do ProductRepository , calculate_basket_product_price do BasketCalculator
- FIX - findCached () : stale Redis cache z obiektami \shop\Product powodowal ceny 0 , 00 zl
- FIX - szablony : konwersja object access na array access po migracji Product
- UPDATE - AttributeRepository :: getAttributeValueById () — dodano Redis cache
- CLEANUP - katalog autoload / shop / pusty , zero referencji \shop\ w aktywnym kodzie
< hr >
< b > ver . 0.291 - 17.02 . 2026 </ b >< br />
- UPDATE - migracja front\controls\ShopProducer + shop\Producer do Domain\Producer\ProducerRepository + front\Controllers\ShopProducerController
- FIX - bug shop\Producer :: __get () referowal nieistniejace $this -> data
< hr >
< b > ver . 0.290 - 17.02 . 2026 </ b >< br />
- UPDATE - migracja front\factory\ShopCoupon + front\controls\ShopCoupon do Domain\Coupon\CouponRepository + front\Controllers\ShopCouponController
- UPDATE - migracja front\factory\ShopOrder + front\controls\ShopOrder + front\view\ShopOrder do Domain\Order\OrderRepository + front\Controllers\ShopOrderController
- FIX - kupony jednorazowe nigdy nie byly oznaczane jako uzyte ( is_one_time / set_as_used w shop\Coupon )
- FIX - webhooks przelewy24 / hotpay ujednolicone z tpay ( poprawna obsluga Apilo sync )
< hr >
< b > ver . 0.289 - 17.02 . 2026 </ b >< br />
- UPDATE - migracja front\factory\ShopCategory + front\view\ShopCategory do Domain\Category\CategoryRepository + front\Views\ShopCategory
- UPDATE - migracja front\factory\ShopClient + front\view\ShopClient + front\controls\ShopClient do Domain\Client\ClientRepository + front\Views\ShopClient + front\Controllers\ShopClientController
- FIX - usuniety hardcoded password bypass 'Legia1916' w logowaniu klienta
< hr >
< b > ver . 0.288 - 17.02 . 2026 </ b >< br />
- UPDATE - migracja front\factory\ShopBasket do Domain\Basket\BasketCalculator ( 4 metody statyczne )
- UPDATE - migracja front\controls\ShopBasket do front\Controllers\ShopBasketController ( camelCase , instancyjny )
- UPDATE - routing snake_case -> camelCase w dispatch dla nowych kontrolerow
- CLEANUP - usunieta klasa cms\Layout ( zastapiona $layoutsRepo -> find )
- CLEANUP - usuniete 3 klasy legacy ( front\factory\ShopBasket , front\controls\ShopBasket , cms\Layout )
< hr >
< b > ver . 0.287 - 17.02 . 2026 </ b >< br />
- UPDATE - migracja front\factory\Scontainers do Domain\Scontainers\ScontainersRepository ( frontScontainerDetails z Redis cache )
- UPDATE - migracja front\factory\ShopAttribute do Domain\Attribute\AttributeRepository ( frontAttributeDetails , frontValueDetails z Redis cache )
- CLEANUP - usuniete 3 klasy legacy ( front\factory\Scontainers , front\view\Scontainers , front\factory\ShopAttribute )
< hr >
< b > ver . 0.286 - 17.02 . 2026 </ b >< br />
- UPDATE - migracja front\factory\Layouts do Domain\Layouts\LayoutsRepository ( 6 metod frontend z Redis cache )
- UPDATE - migracja front\factory\Menu + front\factory\Pages do Domain\Pages\PagesRepository ( 6 metod frontend z Redis cache )
- UPDATE - migracja front\view\Menu do front\Views\Menu ( nowy namespace )
- CLEANUP - usuniete 4 klasy legacy + 1 martwy szablon ( submenu . php )
- FIX - null $lang_id przy wczesnym wywolaniu check_url_params ()
< hr >
< b > ver . 0.285 - 17.02 . 2026 </ b >< br />
- UPDATE - migracja class . Tpl . php do Shared\Tpl\Tpl ( ~ 135 plikow przepietych )
- CLEANUP - usunieta nieuzywana klasa CurlServer ( curl . class . php )
- FIX - thumb . php : naprawa require po migracji Image do Shared namespace
- FIX - Tpl :: render () branch 3 : sprawdzal templates_user ale ladowal templates
< hr >
< b > ver . 0.284 - 16.02 . 2026 </ b >< br />
- CLEANUP - usunieta klasa DbModel ( base ORM ) — logika wbudowana bezposrednio w shop\Promotion
< hr >
< b > ver . 0.283 - 16.02 . 2026 </ b >< br />
- UPDATE - migracja class . S . php do Shared\Helpers\Helpers ( ~ 140 plikow przepietych )
- UPDATE - migracja class . Html . php do Shared\Html\Html
- UPDATE - migracja class . Email . php do Shared\Email\Email
- UPDATE - migracja class . Image . php do Shared\Image\ImageManipulator
- UPDATE - migracja class . Log . php do Shared\Log\Log ( usunieta — logika przeniesiona )
- CLEANUP - usunieta class . Mobile_Detect . php ( przestarzala detekcja UA )
- CLEANUP - usunieto 12 nieuzywanych metod z klasy S
- FIX - array_cartesian_product () — blad iteracji po niezdefiniowanej zmiennej
< hr >
< b > ver . 0.282 - 16.02 . 2026 </ b >< br />
- UPDATE - Cache cleanup : eliminacja legacy class . Cache . php , migracja CacheHandler i RedisConnection do Shared\Cache namespace
- UPDATE - 60 odwolan CacheHandler i 12 odwolan RedisConnection przepietych na Shared\Cache\
- UPDATE - 13 metod front\factory przepietych z \Cache :: fetch / store na CacheHandler ( ShopProduct , ShopPaymentMethod , ShopCategory , ShopTransport , ShopAttribute )
- FIX - naprawione rozbieznosci kluczy cache ( random_products , category_name )
- CLEANUP - usuniete : class . Cache . php , class . CacheHandler . php , class . RedisConnection . php
- UPDATE - testy : OK ( 454 tests , 1449 assertions )
< hr >
< b > ver . 0.281 - 16.02 . 2026 </ b >< br />
- UPDATE - migracja Banners frontend : factory + view do Domain / Views ( DI )
- NEW - `front\Views\Banners` — czysty VIEW ( banners , mainBanner )
- UPDATE - `BannerRepository` rozszerzony o 2 metody frontendowe ( banners , mainBanner ) z Redis cache
- UPDATE - `front\view\Site::show()` przepiety na repo + Views
- CLEANUP - usuniete : front\factory\Banners , front\view\Banners
- UPDATE - testy : OK ( 454 tests , 1449 assertions )
< hr >
< b > ver . 0.280 - 16.02 . 2026 </ b >< br />
- UPDATE - migracja Articles frontend : factory + view + encja do Domain / Views ( DI )
- NEW - `front\Views\Articles` — czysty VIEW + utility ( renderowanie , generateTableOfContents , generateHeadersIds , getImage )
- UPDATE - `ArticleRepository` rozszerzony o 8 metod frontendowych ( z Redis cache )
- UPDATE - `front\view\Site::show()` — 5 sekcji przepietych na repo + Views
- UPDATE - `front\controls\Site::route()` — single article + page_type switch przepiete na repo + Views
- UPDATE - 5 szablonow `templates/articles/*` przepietych na `\front\Views\Articles::`
- CLEANUP - usuniete : `class.Article` ( encja + metody statyczne ), `front\factory\Settings` ( fasada )
- FIX - eliminacja `global $lang` z `articleNoindex()` , eliminacja zaleznosci od `front\factory\Pages::page_sort()`
- UPDATE - testy : `OK (450 tests, 1431 assertions)`
< hr >
< b > ver . 0.279 - 16.02 . 2026 </ b >< br />
- UPDATE - migracja Newsletter frontend : factory + view + controls do Domain / Controllers / Views ( DI )
- UPDATE - nowy namespace `front\Controllers` z `NewsletterController` ( DI via factory closures )
- UPDATE - nowy namespace `front\Views` z `Languages` i `Newsletter` ( czyste VIEW , statyczne metody )
- UPDATE - routing frontend : `Site::getControllerFactories()` z fallback na stare kontrolery
- FIX - `newsletter_unsubscribe()` — poprawiona skladnia medoo `delete()` ( 2 argumenty zamiast 3 )
- UPDATE - eliminacja fasady `front\factory\Languages` — 26 zaleznosci przepietych na `LanguagesRepository`
- CLEANUP - usuniete : `front\factory\Languages` , `front\factory\Newsletter` , `front\view\Languages` , `front\view\Newsletter` , `front\controls\Newsletter`
- UPDATE - testy : `OK (437 tests, 1398 assertions)`
< hr >
< b > ver . 0.278 - 16.02 . 2026 </ b >< br />
- UPDATE - migracja Settings + Languages do wspolnych klas Domain ( z cache Redis )
- FIX - `get_single_settings_value()` — parametr `$param` poprawnie uzywany ( wczesniej hardcoded `firm_name` )
< hr >
< b > ver . 0.277 - 16.02 . 2026 </ b >< br />
- NEW - migracja modulu `ShopProduct` ( factory ) — pelna migracja ~ 40 metod do `ProductRepository` + ~ 30 akcji w `ShopProductController`
- NEW - migracja modulu `Dashboard` do Domain + DI ( `DashboardRepository` , `DashboardController` )
- NEW - migracja modulu `Update` do Domain + DI ( `UpdateRepository` , `UpdateController` )
- UPDATE - klasa `admin\Site` przemianowana na `admin\App` ( plik `App.php` )
- UPDATE - refaktoring routingu — usunieto fallback na stare kontrolery , uproszczony routing
- UPDATE - template `update/main-view.php` — panele zamiast `gridEdit` , `$.confirm()` zamiast `$.prompt()`
- CLEANUP - usuniete stare foldery : `autoload/admin/controls/` , `autoload/admin/factory/` , `autoload/admin/view/`
- CLEANUP - usuniete legacy : `class.Dashboard.php` ( controls / shop ), `class.Update.php` ( controls / factory / view ), `class.Articles.php` ( factory ), `class.Page.php` ( view ), `class.ShopProduct.php` ( controls / factory / view )
- UPDATE - `front\factory\Newsletter` przepieta na `ArticleRepository::articlesByDateAdd()`
- UPDATE - testy : `OK (414 tests, 1335 assertions)`
< hr >
< b > ver . 0.276 - 15.02 . 2026 </ b >< br />
- NEW - migracja modulu `ShopOrder` do architektury Domain + DI ( `Domain\Order\OrderRepository` , `Domain\Order\OrderAdminService` , `admin\Controllers\ShopOrderController` )
- UPDATE - modul `/admin/shop_order/*` przepiety na nowy routing ( kanoniczny URL `/admin/shop_order/list/` ) i nowe widoki ( `orders-list` , `order-details` , `order-edit` )
- FIX - stabilizacja listy zamowien ( `OrderRepository::listForAdmin` ) oraz poprawa wygladu tabeli ( `components/table-list` , wyrownanie komorek i `text-right` )
- CLEANUP - usuniete legacy klasy / pliki : `autoload/admin/controls/class.ShopOrder.php` , `autoload/admin/factory/class.ShopOrder.php` , `admin/templates/shop-order/view-list.php`
- UPDATE - usunieta fasada `autoload/admin/factory/class.Integrations.php` ; wywolania przepiete na `Domain\Integrations\IntegrationsRepository`
- NEW - globalna wyszukiwarka admin ( produkty + zamowienia ) przy " Wyczysc cache " + endpoint `/admin/settings/globalSearchAjax/`
- FIX - wyszukiwanie po pelnym imieniu i nazwisku w global search
- UPDATE - testy : `OK (385 tests, 1246 assertions)`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.276.zip` , `ver_0.276_files.txt`
< hr >
< b > ver . 0.275 - 15.02 . 2026 </ b >< br />
- NEW - migracja modulu `ShopCategory` do architektury Domain + DI ( `Domain\Category\CategoryRepository` , `admin\Controllers\ShopCategoryController` )
- UPDATE - modul `/admin/shop_category/*` przepiety na nowy routing ( kanoniczny URL `/admin/shop_category/list/` ) i endpointy AJAX kontrolera ( `save_categories_order` , `save_products_order` , `cookie_categories` )
- UPDATE - widoki `shop-category/*` : wydzielenie skryptow do `*-custom-script.php` , ujednolicone strzalki drzewa ( `button + caret + aria-expanded` )
- UPDATE - przepiecie zaleznosci `ShopProduct` z `admin\factory\ShopCategory` na `Domain\Category\CategoryRepository`
- CLEANUP - usuniete legacy klasy / pliki : `autoload/admin/controls/class.ShopCategory.php` , `autoload/admin/factory/class.ShopCategory.php` , `autoload/admin/view/class.ShopCategory.php`
- UPDATE - testy : `OK (377 tests, 1197 assertions)`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.275.zip` , `ver_0.275_files.txt`
< hr >
< b > ver . 0.274 - 15.02 . 2026 </ b >< br />
- NEW - migracja modulu `ShopClients` do architektury Domain + DI ( `Domain\Client\ClientRepository` , `admin\Controllers\ShopClientsController` )
- UPDATE - modul `/admin/shop_clients/*` przepiety na `components/table-list` ( lista klientow i szczegoly zamowien )
- UPDATE - routing i menu admin przepiete na kanoniczny URL `/admin/shop_clients/list/`
- CLEANUP - usuniete legacy klasy / pliki : `autoload/admin/controls/class.ShopClients.php` , `autoload/admin/factory/class.ShopClients.php`
- UPDATE - testy : `OK (361 tests, 1125 assertions)`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.274.zip` , `ver_0.274_files.txt`
< hr >
< b > ver . 0.273 - 15.02 . 2026 </ b >< br />
- NEW - migracja `/admin/shop_product/mass_edit/*` do `Domain\Product\ProductRepository` + `admin\Controllers\ShopProductController` ( DI + routing )
- UPDATE - nowy widok / skrypt masowej edycji ( `mass-edit` , `mass-edit-custom-script` ) z iCheck i ujednoliconymi strzalkami drzewa
- FIX - zaznaczanie kategorii w mass - edit nie zaznacza automatycznie produktow na liscie
- UPDATE - ujednolicenie strzalek / checkboxow w drzewkach : `/admin/pages/list/*` oraz zakladka wyswietlania w `/admin/articles/edit/*`
- UPDATE - testy : `OK (351 tests, 1091 assertions)`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.273.zip` , `ver_0.273_files.txt`
< hr >
< b > ver . 0.272 - 15.02 . 2026 </ b >< br />
- NEW - migracja modulu `ShopProductSets` do architektury Domain + DI ( `Domain\ProductSet\ProductSetRepository` , `admin\Controllers\ShopProductSetsController` )
- UPDATE - modul `/admin/shop_product_sets/*` przepiety z legacy `grid/gridEdit` na `components/table-list` i `components/form-edit` + multi - select Selectize
- UPDATE - routing i menu admin przepiete na kanoniczny URL `/admin/shop_product_sets/list/`
- UPDATE - `shop\ProductSet` przepiety na fasade do `Domain\ProductSet\ProductSetRepository`
- CLEANUP - usuniete legacy klasy / pliki : `autoload/admin/controls/class.ShopProductSets.php` , `autoload/admin/factory/class.ShopProductSet.php` , `admin/templates/shop-product-sets/view-list.php` , `admin/templates/shop-product-sets/set-edit.php`
- UPDATE - testy : `OK (324 tests, 1000 assertions)` + nowe pliki testowe `ProductSetRepositoryTest` , `ShopProductSetsControllerTest`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.272.zip` , `ver_0.272_files.txt`
< hr >
< b > ver . 0.271 - 14.02 . 2026 </ b >< br />
- NEW - migracja modulu `ShopAttribute` do architektury Domain + DI ( `Domain\Attribute\AttributeRepository` , `admin\Controllers\ShopAttributeController` )
- UPDATE - modul `/admin/shop_attribute/*` przepiety z legacy `grid/gridEdit` na `components/table-list` , `components/form-edit` oraz nowy edytor wartosci ( `values-edit` )
- UPDATE - routing i menu admin przepiete na kanoniczny URL `/admin/shop_attribute/list/` ( bez aliasow legacy )
- UPDATE - przepiecie zaleznosci kombinacji produktu : `admin\controls\ShopProduct` , `admin\factory\ShopProduct` , `admin/templates/shop-product/product-combination.php`
- CLEANUP - usuniete legacy klasy / pliki : `autoload/admin/controls/class.ShopAttribute.php` , `autoload/admin/factory/class.ShopAttribute.php` , `autoload/admin/view/class.ShopAttribute.php` , `admin/templates/shop-attribute/_partials/value.php`
- UPDATE - testy : `OK (312 tests, 948 assertions)` + nowe pliki testowe `AttributeRepositoryTest` , `ShopAttributeControllerTest`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.271.zip` , `ver_0.271_files.txt`
< hr >
< b > ver . 0.270 - 14.02 . 2026 </ b >< br />
- FIX - Apilo : `shop\Order::set_as_paid()` wysyla mapowany typ platnosci Apilo ( z `payment_method_id` ), zamiast stalego `type = 1`
- NEW - Apilo : dodana kolejka retry `temp/apilo-sync-queue.json` dla nieudanych syncow platnosci / statusu ( chwilowa niedostepnosc API )
- UPDATE - `cron.php` : automatyczne ponawianie zaleglych syncow przez `Order::process_apilo_sync_queue(10)`
- UPDATE - debug Apilo : rozszerzone logi odpowiedzi o HTTP code i bledy cURL dla sync platnosci / statusu
- UPDATE - testy : `OK (300 tests, 895 assertions)`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.270.zip` , `ver_0.270_files.txt`
< hr >
< b > ver . 0.269 - 14.02 . 2026 </ b >< br />
- NEW - migracja modulu `ShopPaymentMethod` do architektury Domain + DI ( `Domain\PaymentMethod\PaymentMethodRepository` , `admin\Controllers\ShopPaymentMethodController` )
- UPDATE - modul `/admin/shop_payment_method/*` przepiety z legacy `grid/gridEdit` na `components/table-list` i `components/form-edit` ( nowe widoki listy i edycji )
- UPDATE - przepiecie zaleznosci na nowe repozytorium : `admin\controls\ShopTransport` , `front\factory\ShopPaymentMethod` , `shop\PaymentMethod`
- CLEANUP - usuniete legacy klasy / pliki : `autoload/admin/controls/class.ShopPaymentMethod.php` , `autoload/admin/factory/class.ShopPaymentMethod.php` , `autoload/admin/view/class.ShopPaymentMethod.php` , `admin/templates/shop-payment-method/view-list.php`
- UPDATE - Apilo : dodane automatyczne odswiezanie tokenu przed wygasnieciem ( `apiloKeepalive` ) oraz bardziej szczegolowe komunikaty bledow integracji
- UPDATE - testy : `OK (280 tests, 828 assertions)` + nowe pliki testowe `PaymentMethodRepositoryTest` , `ShopPaymentMethodControllerTest`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.269.zip` , `ver_0.269_files.txt`
< hr >
< b > ver . 0.268 - 14.02 . 2026 </ b >< br />
- NEW - migracja modulu `ShopStatuses` do architektury Domain + DI ( `Domain\ShopStatus\ShopStatusRepository` , `admin\Controllers\ShopStatusesController` )
- UPDATE - modul `/admin/shop_statuses/*` przepiety z legacy `grid/gridEdit` na `components/table-list` i `components/form-edit`
- NEW - nowy typ pola formularza `color` ( HTML5 color picker + pole tekstowe zsynchronizowane )
- UPDATE - `front\factory\ShopStatuses` dziala jako fasada do `Domain\ShopStatus\ShopStatusRepository`
- UPDATE - menu admin przepiete na kanoniczny URL `/admin/shop_statuses/list/`
- CLEANUP - usuniete legacy klasy : `autoload/admin/controls/class.ShopStatuses.php` , `autoload/admin/factory/class.ShopStatuses.php`
- UPDATE - reorganizacja dokumentacji technicznej : pliki przeniesione do folderu `docs/` i rozbite na mniejsze pliki tematyczne
- UPDATE - testy : `OK (254 tests, 736 assertions)` + nowe pliki testowe `ShopStatusRepositoryTest` , `ShopStatusesControllerTest`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.268.zip` , `ver_0.268_files.txt`
< hr >
< b > ver . 0.267 - 13.02 . 2026 </ b >< br />
- FIX - front : poprawione dobieranie layoutu dla kategorii / produktu / koszyka i innych stron moduł owych ( fallback do layoutu domyś lnego )
- FIX - produkt / koszyk : poprawiona obsł uga iloś ci dla kombinacji ( stan 0 po dodaniu do koszyka , limit max , odczyt `stock_0_buy` )
- FIX - produkt : usunięty bł ąd JS `TypeError: $(...).visible is not a function` ( zamiana na `:visible` )
- FIX - SEO redirecty produktów : blokada konfliktów po kopiowaniu URL oraz utwardzone wykrywanie pętli redirectów ( `lang_id` + graf przejś ć )
- UPDATE - admin : `input-switch` zapisuje wartoś ć `on` ( spójnie z obsł ugą pól checkbox w formularzach )
- CLEANUP - usunięte pliki : `apilo-bck` , `geocode-cache.php`
- UPDATE - testy : `OK (235 tests, 682 assertions)`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.267.zip` , `ver_0.267_files.txt` , `ver_0.267_sql.txt`
< hr >
< b > ver . 0.266 - 13.02 . 2026 </ b >< br />
- NEW - migracja modulu `ShopCoupon` do architektury Domain + DI ( `Domain\Coupon\CouponRepository` , `admin\Controllers\ShopCouponController` )
- UPDATE - modul `/admin/shop_coupon/*` przepiety z legacy `grid/gridEdit` na `components/table-list` i `components/form-edit`
- UPDATE - nowe widoki i partiale : `shop-coupon/coupons-list` , `shop-coupon/coupon-edit-new` , `shop-coupon/coupon-categories-selector` , `shop-coupon/coupon-categories-tree` , `shop-coupon/coupon-edit-custom-script`
- UPDATE - zachowana kompatybilnosc aliasow legacy akcji ( `view_list` , `coupon_edit` , `coupon_save` , `coupon_delete` ) w nowym kontrolerze
- CLEANUP - usuniete legacy klasy / pliki : `autoload/admin/controls/class.ShopCoupon.php` , `autoload/admin/factory/class.ShopCoupon.php` , `admin/templates/shop-coupon/view-list.php` , `admin/templates/shop-coupon/coupon-edit.php`
- UPDATE - menu admin wskazuje kanoniczny URL `/admin/shop_coupon/list/`
- FIX - ujednolicone drzewka ( strzalki + focus ) i wyglad checkboxow miedzy `/admin/shop_coupon/edit/*` oraz `/admin/layouts/edit/*`
- UPDATE - testy : `OK (235 tests, 682 assertions)` + nowe pliki testowe `CouponRepositoryTest` , `ShopCouponControllerTest`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.266.zip` , `ver_0.266_files.txt`
< hr >
< b > ver . 0.265 - 13.02 . 2026 </ b >< br />
- UPDATE - modul `/admin/shop_promotion/*` : dodano pole `Data od` ( `date_from` ) w repozytorium , formularzu i liscie
- UPDATE - front : `shop\Promotion::get_active_promotions()` uwzglednia `date_from` ( okno aktywnosci od - do )
- FIX - edycja promocji zapisuje aktualizacje rekordu zamiast tworzenia nowego ( `id` przekazywane przez hidden field + fallback z URL )
- UPDATE - testy : `OK (222 tests, 614 assertions)`
< hr >< b > ver . 0.264 - 13.02 . 2026 </ b >< br />
- NEW - migracja modulu `ShopPromotion` do architektury Domain + DI ( `Domain\Promotion\PromotionRepository` , `admin\Controllers\ShopPromotionController` )
- UPDATE - modul `/admin/shop_promotion/*` przepiety z legacy `grid/gridEdit` na `components/table-list` i `components/form-edit`
- UPDATE - nowe widoki i partiale : `shop-promotion/promotions-list` , `shop-promotion/promotion-edit` , `shop-promotion/promotion-categories-selector` , `shop-promotion/promotion-categories-tree` , `shop-promotion/promotion-edit-custom-script`
- CLEANUP - usuniete legacy klasy / pliki : `autoload/admin/controls/class.ShopPromotion.php` , `autoload/admin/factory/class.ShopPromotion.php` , `admin/templates/shop-promotion/view-list.php`
- UPDATE - menu admin wskazuje kanoniczny URL `/admin/shop_promotion/list/`
- UPDATE - testy : `OK (222 tests, 609 assertions)` + nowe pliki testowe `PromotionRepositoryTest` , `ShopPromotionControllerTest`
< hr >< b > ver . 0.263 - 13.02 . 2026 </ b >< br />
- NEW - migracja modulu `Integrations` do architektury Domain + DI ( `Domain\Integrations\IntegrationsRepository` , `admin\Controllers\IntegrationsController` )
- CLEANUP - usunieto integracje Sellasist i Baselinker z calego projektu ( kontrolery , factory , szablony , referencje w cron / Order / ShopStatuses / ShopTransport / ShopPaymentMethod / ShopProduct )
- UPDATE - `admin\factory\Integrations` jako fasada delegujaca do repozytorium ( tylko Apilo + ShopPRO )
- FIX - naprawione polskie znaki w `product-edit.php` ( usuniety podwojny encoding UTF - 8 / CP1250 )
- CLEANUP - usuniete pliki : `controls/Integrations` , `controls/Baselinker` , `factory/Baselinker` , `front/factory/Shop` , `shop/ShopStatus` , szablony sellasist / baselinker
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.263.zip` , `ver_0.263_files.txt`
< hr >< b > ver . 0.262 - 13.02 . 2026 </ b >< br />
- NEW - migracja modulu `Pages` do architektury Domain + DI ( `Domain\\Pages\\PagesRepository` , `admin\\Controllers\\PagesController` )
- UPDATE - widoki `/admin/pages/*` przepiete na nowy routing i komponent `components/form-edit` ( menu / page edit )
- FIX - przywrocony przycisk generowania linku SEO w edycji strony ( zakladka SEO , pola jezykowe )
- FIX - popup potwierdzenia usuwania menu / strony ujednolicony z `table-list-confirm-dialog` + poprawione polskie znaki
- CLEANUP - usuniete legacy pliki Pages : `admin/ajax/pages.php` , `autoload/admin/controls/class.Pages.php` , `autoload/admin/factory/class.Pages.php` , `autoload/admin/view/class.Pages.php`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.262.zip` , `ver_0.262_files.txt`
< hr >< b > ver . 0.261 - 13.02 . 2026 </ b >< br />
- UPDATE - finalizacja refaktoryzacji modulu `Articles` ( `/admin/articles` ) w warstwie Domain + DI
- UPDATE - nowe akcje AJAX w `admin\Controllers\ArticlesController` ( m . in . `files_order_save` )
- UPDATE - sortowanie zalacznikow i zdjec w edycji artykulu ( drag & drop + zapis kolejnosci przy pierwszym zapisie )
- UPDATE - utwardzenie uploadow ( wspolny helper `libraries/plupload/upload-common.php` , walidacje i tokeny )
- FIX - potwierdzenia usuwania zdjec / zalacznikow ujednolicone z widokiem listy ( jquery - confirm )
- CLEANUP - usuniete legacy `admin/ajax/articles.php` i `autoload/admin/view/class.Articles.php`
- UPDATE - pliki aktualizacji : `updates/0.20/ver_0.261.zip` , `ver_0.261_files.txt` , `ver_0.261_sql.txt`
< hr >< b > ver . 0.260 - 12.02 . 2026 </ b >< br />
- NEW - migracja modulu `ArticlesArchive` do architektury Domain + DI ( `admin\\Controllers\\ArticlesArchiveController` )
- UPDATE - `Domain\\Article\\ArticleRepository` rozszerzone o metody `listArchivedForAdmin` , `restore` , `deletePermanently`
- UPDATE - widok `/admin/articles_archive/view_list/` przepiety z legacy `grid` na `components/table-list`
- UPDATE - routing DI ( `admin\\Site` ) rozszerzony o modul `ArticlesArchive` + mapowanie akcji `article_restore -> restore`
- CLEANUP - usuniete legacy klasy `autoload/admin/controls/class.ArticlesArchive.php` , `autoload/admin/factory/class.ArticlesArchive.php` , `autoload/admin/view/class.ArticlesArchive.php`
- UPDATE - plik do usuniecia dodany w `updates/0.20/ver_0.260_files.txt`
< hr >< b > ver . 0.259 - 12.02 . 2026 </ b >< br />
- NEW - migracja modulu `Scontainers` do architektury Domain + DI ( `Domain\\Scontainers\\ScontainersRepository` , `admin\\Controllers\\ScontainersController` )
- UPDATE - widoki `/admin/scontainers/*` przepiete z legacy `grid/gridEdit` na `components/table-list` i `components/form-edit`
- UPDATE - routing DI ( `admin\\Site` ) rozszerzony o modul `Scontainers` + mapowanie akcji `container_edit/container_save/container_delete`
- UPDATE - `admin\\factory\\Scontainers` dziala jako fasada do repozytorium ( backward compatibility )
- UPDATE - `front\\factory\\Scontainers` korzysta z `Domain\\Scontainers\\ScontainersRepository`
- CLEANUP - usuniete legacy klasy `autoload/admin/controls/class.Scontainers.php` , `autoload/admin/view/class.Scontainers.php`
- UPDATE - plik do usuniecia dodany w `updates/0.20/ver_0.259_files.txt`
< hr >< b > ver . 0.258 - 12.02 . 2026 </ b >< br />
- UPDATE - modul `Newsletter` : funkcjonalnosc `Wysylka - przygotowanie` zostala tymczasowo wylaczona ( menu + akcje `prepare/send/preview` )
- UPDATE - modul `Newsletter` : lista `Szablony uzytkownika` zostala tymczasowo wylaczona ( menu + akcja `email_templates_user` )
- UPDATE - `NewsletterController` : lista szablonow ograniczona do szablonow administracyjnych ( `is_admin = 1` )
- UPDATE - `email_template_edit` i `template_save` obsluguja tylko szablony administracyjne
- CLEANUP - usuniete nieuzywane szablony newslettera : `admin/templates/newsletter/prepare.php` , `admin/templates/newsletter/preview.php` , `admin/templates/newsletter/email-templates-user.php`
- UPDATE - plik do usuniecia dodany w `updates/0.20/ver_0.258_files.txt`
< hr >< b > ver . 0.257 - 12.02 . 2026 </ b >< br />
- NEW - migracja modulu `Newsletter` do architektury Domain + DI ( `Domain\\Newsletter\\NewsletterRepository` , `Domain\\Newsletter\\NewsletterPreviewRenderer` , `admin\\Controllers\\NewsletterController` )
- UPDATE - widoki `/admin/newsletter/*` przepiete z legacy `grid/gridEdit` na nowe komponenty ( `components/table-list` , `components/form-edit` ) + nowy endpoint `/admin/newsletter/preview/`
- UPDATE - routing DI ( `admin\\Site` ) rozszerzony o moduł `Newsletter`
- UPDATE - `admin\\factory\\Newsletter` dziala jako fasada do nowego repozytorium ( backward compatibility )
- UPDATE - `front\\factory\\Newsletter` nie korzysta juz z `admin\\view\\Newsletter`
- CLEANUP - usuniete legacy klasy `autoload/admin/controls/class.Newsletter.php` , `autoload/admin/view/class.Newsletter.php`
< hr >< b > ver . 0.256 - 12.02 . 2026 </ b >< br />
- NEW - migracja modulu `Layouts` do architektury Domain + DI ( `Domain\\Layouts\\LayoutsRepository` , `admin\\Controllers\\LayoutsController` )
- UPDATE - lista `/admin/layouts/view_list/` przepieta z legacy `grid` na `components/table-list` ( filtry , sortowanie , paginacja )
- UPDATE - `layouts/layout-edit` korzysta z danych z repozytorium ( menus / categories ), bez wywolan legacy factory w widoku
- UPDATE - `Domain\\Languages\\LanguagesRepository` rozszerzone o wspolna metode `defaultLanguageId()`
- UPDATE - `admin\\Controllers\\ArticlesController` pobiera layouty przez `Domain\\Layouts\\LayoutsRepository` ( DI )
- CLEANUP - usuniete legacy klasy `autoload/admin/controls/class.Layouts.php` , `autoload/admin/view/class.Layouts.php`
< hr >< b > ver . 0.255 - 12.02 . 2026 </ b >< br />
- UPDATE - kontrolery admin `Settings` , `Banners` , `Dictionaries` , `Articles` pobieraja liste jezykow przez `Domain\\Languages\\LanguagesRepository` ( DI )
- UPDATE - routing DI ( `admin\\Site` ) przekazuje `LanguagesRepository` do kontrolerow `Articles` , `Banners` , `Settings` , `Dictionaries`
- UPDATE - aktywne legacy odwolania ( `admin\\controls` , `admin\\factory\\Shop*` ) przepiete z `admin\\factory\\Languages` na `LanguagesRepository`
- FIX - `autoload/admin/factory/class.Languages.php` uzywa pelnego znacznika PHP ( zgodnosc z `short_open_tag=Off` )
< hr >< b > ver . 0.254 - 12.02 . 2026 </ b >< br />
- UPDATE - modul `Languages` w panelu admin przepiety na `Domain\\Languages\\LanguagesRepository` + `admin\\Controllers\\LanguagesController`
- UPDATE - migracja widokow languages ( `languages-list` , `language-edit` , `translations-list` , `translation-edit` ) na `components/table-list` i `components/form-edit`
- UPDATE - routing DI dla `Languages` w `admin\\Site` oraz kompatybilna fasada `admin\\factory\\Languages` delegujaca do repozytorium
- UPDATE - naprawiono zapis edycji jezyka ( ID jezyka pobierane z URL przy edycji )
- UPDATE - globalne poprawki UX filtrĂłw w `components/table-list` ( kompaktowe kolumny `Aktywny` / `Domyslny` , spacing i pelna szerokosc selecta )
- CLEANUP - usuniete legacy klasy : `autoload/admin/controls/class.Languages.php` , `autoload/admin/view/class.Languages.php`
< hr >
< b > ver . 0.253 - 12.02 . 2026 </ b >< br />
- UPDATE - modul `Users` w panelu admin w pelni przepiety na `Domain\\User\\UserRepository` + `admin\\Controllers\\UsersController`
- UPDATE - migracja widokow users z `grid/gridEdit` na nowe komponenty ( `components/table-list` , `components/form-edit` )
- UPDATE - dodana walidacja warunkowa : przy wlaczonym 2 FA pole `E-mail do 2FA` jest wymagane
- UPDATE - globalne ulepszenia `components/table-list` ( kompaktowe filtry select / status i odstepy w formularzu paginacji )
- CLEANUP - usuniete legacy klasy users : `autoload/admin/controls/class.Users.php` , `autoload/admin/factory/class.Users.php` , `autoload/admin/view/class.Users.php`
< hr >
< b > ver . 0.252 - 10.02 . 2026 </ b >< br />
- UPDATE - migracja listy archiwum produktow do nowego komponentu tabeli ( `components/table-list` ) z filtrowaniem i paginacja
- UPDATE - banery i archiwum produktow : wydzielenie CSS / JS do osobnych widokow `*-custom-script.php`
- UPDATE - filemanager przepiety na nowy routing ( `admin\\Controllers\\FilemanagerController` )
- FIX - naprawiono blad `Invalid Key` w widoku filemanagera po refaktoryzacji
- UPDATE - usunieto legacy klasy i stare szablony ( `admin\\controls` , `admin\\view` , `admin/templates/product_archive` )
< hr >
< b > ver . 0.251 - 09.02 . 2026 </ b >< br />
- NEW - migracja modulu Dictionaries do nowej architektury ( Domain + admin Controller + DI )
- UPDATE - lista i formularz Dictionaries przepiete na nowe komponenty ( `components/table-list` , `components/form-edit` )
- UPDATE - dodano globalne ograniczenie szerokosci pierwszej kolumny ( Lp . ) w `components/table-list`
- FIX - zapis tlumaczen jednostek obsluguje `lang_id` jako string ( `pl` , `en` )
- UPDATE - usunieto legacy klasy Dictionaries : `admin\\controls` , `admin\\factory` , `front\\factory`
- UPDATE - przepieto uzycia na `Domain\\Dictionaries\\DictionariesRepository` ( `shop-product` , `shop_product` admin )
< hr >
< b > ver . 0.250 </ b >< br />
- UPDATE - refaktoryzacja Settings : `Domain\\Settings\\SettingsRepository` ma bezposredni dostep do bazy ( bez delegacji do `admin\\factory\\Settings` )
- UPDATE - przepieto pozostale uzycia `admin\\factory\\Settings` na `Domain\\Settings\\SettingsRepository` ( `admin\\controls\\Settings` , `admin\\controls\\Newsletter` , `front\\factory\\Newsletter` )
- UPDATE - DI dla SettingsController : repozytorium otrzymuje `$mdb` w `admin\\Site`
- UPDATE - Settings : widok edycji przeniesiony na nowy mechanizm formularza ( `FormEditViewModel` + `components/form-edit` ) jak w banerach
- UPDATE - usunieto nieuzywana legacy klase `autoload/admin/factory/class.Settings.php`
- UPDATE - usunieto legacy fallback kontrolera `autoload/admin/controls/class.Settings.php`
- UPDATE - usunieto nieuzywana klase widoku `autoload/admin/view/class.Settings.php`
< hr >< b > ver . 0.249 </ b >< br />
- FIX - banner edit : poprawiono zapisywanie danych jezykowych i synchronizacje CKEditor przed zapisem
- FIX - banner edit : naprawiono hash zakladek ( usunieto `undefined` w URL )
- FIX - filemanager : przywrocono dzialanie popupa wyboru obrazka z banera
- UPDATE - komunikaty zapisu w nowym formularzu sa wyswietlane w stylu panelu ( bez natywnego alertu JS )
- UPDATE - lista banerow : dodano kolumne miniatury oraz podglad duzego obrazka w popup po najechaniu
- UPDATE - usunieto nieuzywane legacy klasy banerow : `admin\\view\\Banners` , `admin\\factory\\Banners`
< hr >< b > ver . 0.248 </ b >< br />
- UPDATE - filtry w nowych tabelach dzialaja automatycznie na `onchange`
- UPDATE - `components/table-list` : auto - submit formularza filtrow po zmianie pola ( select , date , text )
< hr >< b > ver . 0.247 </ b >< br />
- UPDATE - nowy dialog potwierdzenia usuwania w `components/table-list` ( zamiast natywnego `confirm` )
- UPDATE - popup usuwania : wiekszy rozmiar i centrowanie na srodku ekranu
< hr >< b > ver . 0.246 </ b >< br />
- UPDATE - migracja listy banerow do nowego mechanizmu tabeli ( `components/table-list` , filtrowanie , sortowanie , paginacja )
- UPDATE - `admin\Controllers\BannerController::list()` buduje `PaginatedTableViewModel`
- UPDATE - `Domain\Banner\BannerRepository::listForAdmin()` ( bezpieczne filtrowanie i sortowanie )
- UPDATE - usunieto legacy kontroler `autoload/admin/controls/class.Banners.php`
- UPDATE - plik do usuniecia dodany w `updates/0.20/ver_0.246_files.txt`
< hr >< b > ver . 0.245 </ b >< br />
- UPDATE - refaktoryzacja listy artykulow : wspolny komponent `admin/templates/components/table-list.php` + `PaginatedTableViewModel`
- NEW - `admin\Support\TableListRequestFactory` ( wspolna obsluga filtrow , sortowania i paginacji dla list )
- UPDATE - `Domain\Article\ArticleRepository::listForAdmin()` utwardzone pod katem bezpieczenstwa ( whitelist sortowania , bind params , limit per_page )
- UPDATE - usunieto legacy `browse_list` dla modulu Articles
- UPDATE - usuniete pliki legacy sa wyszczegolnione w `updates/0.20/ver_0.245_files.txt`
- FIX - generator `.htaccess` i `libraries/htaccess.conf` ( QSA dla `/admin/...` , komentarz niedozwolonych dyrektyw `SetHandler/AddHandler/ForceType` )
< hr >< b > ver . 0.244 </ b >< br />
- UPDATE - refaktoryzacja : article_save przeniesiony do Domain\Article\ArticleRepository :: save () z prywatnymi helperami
- UPDATE - refaktoryzacja : article_delete przeniesiony do Domain\Article\ArticleRepository :: archive ()
- UPDATE - ArticlesController : nowe akcje save () i delete () z DI
- UPDATE - admin\factory\Articles :: article_save () i articles_set_archive () delegują do repozytorium ( kompatybilnoś ć )
< hr >< b > ver . 0.243 </ b >< br />
- UPDATE - refaktoryzacja : cleanup nieprzypisanych plików / zdjęć artykuł ów przeniesiony do Domain\Article\ArticleRepository
- UPDATE - ArticlesController :: edit () używa repozytorium do cleanupu , a admin\factory\Articles zachowuje delegowanie ( kompatybilnoś ć )
< hr >< b > ver . 0.242 </ b >< br />
- NEW - refaktoryzacja : Domain\Article\ArticleRepository + migracja article_edit do admin\Controllers\ArticlesController ( DI )
- UPDATE - admin\factory\Articles :: article_details () deleguje do nowego repozytorium ( kompatybilnoś ć zachowana )
- UPDATE - metody przejęte przez nowe kontrolery oznaczone jako @ deprecated w legacy kontrolerach admin\controls
< hr >< b > ver . 0.241 </ b >< br />
- NEW - refaktoryzacja : admin\Controllers\ProductArchiveController - archiwum produktĂłw z DI
- NEW - ProductRepository :: archive (), unarchive () - operacje archiwizacji w repozytorium
- FIX - naprawiono SQL w liś cie archiwum ( puste wyszukiwanie filtrował o wszystkie wyniki )
- FIX - naprawiono brakujÄ…cy filtr archive = 1 w zapytaniu bez wyszukiwania
- UPDATE - wyczyszczono szablony archiwum ( usunięto zbędne funkcje : apilo , baselinker , duplikowanie )
< hr >
< b > ver . 0.240 </ b >< br />
- NEW - refaktoryzacja : Domain\Settings\SettingsRepository + admin\Controllers\SettingsController ( architektura Domain - Driven )
- NEW - refaktoryzacja : Domain\Cache\CacheRepository - czyszczenie cache z obsł ugą Redis
- FIX - komunikat potwierdzenia zapisu ustawień w panelu administratora
- FIX - naprawiono element #content w layoucie admina (powiadomienia grid.js)
< hr >< b > ver . 0.239 </ b >< br />
- NEW - refaktoryzacja : Domain\Banner\BannerRepository + admin\Controllers\BannerController ( peł na migracja kontrolera )
- NEW - refaktoryzacja : Domain\Product\ProductRepository :: getPrice (), getName () - migracja kolejnych metod
- NEW - router admin z obsł ugą nowych kontrolerów ( fallback na stare )
- UPDATE - shop\Product :: get_product_price (), get_product_name () używają nowego repozytorium ( kompatybilnoś ć zachowana )
< hr >
< b > ver . 0.238 </ b >< br />
- NEW - refaktoryzacja : Domain\Product\ProductRepository - pierwsza klasa w nowej architekturze Domain - Driven
- NEW - Dependency Injection zamiast global variables
- UPDATE - shop\Product :: get_product_quantity () używa teraz nowego repozytorium ( kompatybilnoś ć zachowana )
< hr >
< b > ver . 0.237 </ b >< br />
- NEW - automatyczne czyszczenie cache produktu po aktualizacji przez CRON ( Sellasist , Apilo , Baselinker )
- UPDATE - przycisk " Wyczyś ć cache " w panelu administratora z obsł ugą AJAX i komunikatami o postępie
< hr >
< b > ver . 0.236 </ b >< br />
- FIX - zabezpieczenie przed duplikatami zamówień w Apilo - automatyczne pobieranie ID zamówienia przy bł ędzie " idExternal już wykorzystywany "
< hr >
< b > ver . 0.235 </ b >< br />
- FIX - poprawka funkcji aktualizacji
< hr >
< b > ver . 0.234 </ b >< br />
- NEW - przycisk zaznaczania zamówienia jako wysł ane do trustmate . io
< hr >
< b > ver . 0.232 </ b >< br />
- NEW - opcje GPSR
< hr >
< b > ver . 0.231 </ b >< br />
- FIX - poprawki bezpieczeństwa + dwuetapowa weryfikacja logowania
< hr >
< b > ver . 0.230 </ b >< br />
- FIX - poprawki bezpieczeństwa
< hr >
< b > ver . 0.229 </ b >< br />
- NEW - pola dodatkowe z opcjÄ… wymagane / niewymagane
< hr >
< b > ver . 0.228 </ b >< br />
- NEW - cron do wysył ania zamówień do trustmate . io
< hr >
< b > ver . 0.227 </ b >< br />
- NEW - historia kodĂłw rabatowych
< hr >
< b > ver . 0.226 </ b >< br />
- NEW - dodanie opcji faktury do zamĂłwienia
< hr >
< b > ver . 0.225 </ b >< br />
- NEW - przycisk czyszczenia cache < br >
- NEW - ponowne wysył anie zamówienia do apilo
< hr >
< b > ver . 0.224 </ b >< br />
- NEW - sortowanie form dostawy
< hr >
< b > ver . 0.223 </ b >< br />
- FIX - integracja z Orlen Paczka
< hr >
< b > ver . 0.222 </ b >< br />
- NEW - integracja z Orlen Paczka
< hr >
< b > ver . 0.221 </ b >< br />
- NEW - Automatyczne przekierowania adresĂłw URL produktĂłw , zmiany w pliku htaccess
< hr >
< b > ver . 0.220 </ b >< br />
- NEW - Dodanie moĹĽliwoĹ› ci wyĹ› wietlenia na strone ostatnio dodane produkty [ PRODUKTY_NEW ] lub [ PRODUKTY_NEW : 10 ] .< br >
- NEW - Dodanie moĹĽliwoĹ› ci wyĹ› wietlenia na strone popularnych produktĂłw [ PRODUKTY_TOP ] lub [ PRODUKTY_TOP : 10 ] .
< hr >
< b > ver . 0.219 </ b >< br />
- NEW - Dodanie możliwoś ci zmiany daty w artykuł ach
< hr >
< b > ver . 0.218 </ b >< br />
- NEW - indywidualny kod GTM
< hr >
< b > ver . 0.217 </ b >< br />
- NEW - zwiększenie obsł ugi REDIS
< hr >
< b > ver . 0.216 </ b >< br />
- NEW - aktualizacja api i cron ( apilo )
< hr >
< b > ver . 0.215 </ b >< br />
- FIX - generowanie pliku . htaccess
< hr >
< b > ver . 0.214 </ b >< br />
- NEW - dodanie API
< hr >
< b > ver . 0.213 </ b >< br />
- FIX - wyliczenie darmowej dostawy
< hr >
< b > ver . 0.212 </ b >< br />
- NEW - zmiany w zapisywaniu zamĂłwienia do apilo
< hr >
< b > ver . 0.211 </ b >< br />
- NEW - Debugowanie apilo + wyĹ› wietlanie podkategorii
< hr >
< b > ver . 0.210 </ b >< br />
- NEW - dodatkowe pola w widoku produktĂłw
< hr >
< b > ver . 0.209 </ b >< br />
- NEW - zmiany w widoku produktĂłw ( panel administratora )
< hr >
< b > ver . 0.208 </ b >< br />
- NEW - zmiany w wyszukiwarce produktĂłw
< hr >
< b > ver . 0.204 - 0.207 </ b >< br />
- NEW - htaccess update
< hr >
< b > ver . 0.204 - 0.206 </ b >< br />
- NEW - wysył anie produktów do apilo
< hr >
< b > ver . 0.203 </ b >< br />
- NEW - zmiana sposobu wyliczania cen produkty z dodatkami
< hr >
< b > ver . 0.202 </ b >< br />
- NEW - dodano " gł ówne zdjęcie " w edycji artykuł u
< hr >
< b > ver . 0.201 </ b >< br />
- FIX - aktualizacja statusĂłw na podstawie baselinkera
< hr >
< b > ver . 0.200 </ b >< br />
- NEW - wysył anie produktów do baselinker
< hr >
< b > ver . 0.199 </ b >< br />
- NEW - usprawnienie edycji danych do XML
< hr >
< b > ver . 0.198 </ b >< br />
- NEW - automatyczne generowanie kodĂłw SKU
< hr >
< b > ver . 0.197 </ b >< br />
- FIX - poprawki w Dashboard
< hr >
< b > ver . 0.196 </ b >< br />
- FIX - integracja z apilo . com
< hr >
< b > ver . 0.195 </ b >< br />
- FIX - aktualizacja statusĂłw
< hr >
< b > ver . 0.194 </ b >< br />
- UPDATE - integracja apilo
< hr >
< b > ver . 0.193 </ b >< br />
- UPDATE - aktualizacja synchronizacji z baselinker
< hr >
< b > ver . 0.192 </ b >< br />
- NEW - pobieranie statusĂłw z sellasist
< hr >
< b > ver . 0.191 </ b >< br />
- NEW - integracja z selasist
< hr >
< b > ver . 0.190 </ b >< br />
- FIX - produkty powiÄ…zane
< hr >
< b > ver . 0.189 </ b >< br />
- FIX - ceny promocyjne produktĂłw z dodatkiem
< hr >
< b > ver . 0.188 </ b >< br />
- NEW - widok listy produktĂłw
< hr >
< b > ver . 0.187 </ b >< br />
- FIX - pobieranie cen z APILO
< hr >
< b > ver . 0.186 </ b >< br />
- FIX - dodawanie do koszyka tych samych produktów ale z różną personalizacją
< hr >
< b > ver . 0.185 </ b >< br />
- FIX - masowa edycja produktĂłw
< hr >
< b > ver . 0.184 </ b >< br />
- NEW - druga częś ć integracji z apilo , masowa edycja produktów
< hr >
< b > ver . 0.183 </ b >< br />
- NEW - pierwsza częś ć integracji z apilo
< hr >
< b > ver . 0.182 </ b >< br />
- FIX - layout
< hr >
< b > ver . 0.181 </ b >< br />
- NEW - infinitescroll - opcja wł ączy / wył ącz
< hr >
< b > ver . 0.180 </ b >< br />
- NEW - aktualizacja dashboard
< hr >
< b > ver . 0.179 </ b >< br />
- NEW - obsł uga EAN
< hr >
< b > ver . 0.177 , 0.178 </ b >< br />
- FIX - custom_label
< hr >
< b > ver . 0.176 </ b >< br />
- NEW - custom_label
< hr >
< b > ver . 0.175 </ b >< br />
- NEW - nowe statystyki
< hr >
< b > ver . 0.174 </ b >< br />
- FIX - generowanie xml
< hr >
< b > ver . 0.173 </ b >< br />
- NEW - duplikowanie produktu wraz z kombinacjami
- NEW - dodanie przechodzenia pomiędzy zamówienia ( poprzednie / następne zamówienie )
< hr >
< b > ver . 0.172 </ b >< br />
- FIX - poprawki w Cache
< hr >
< b > ver . 0.171 </ b >< br />
- FIX - poprawki w Cache
< hr >
< b > ver . 0.170 </ b >< br />
- NEW - usuwanie cache produktu przy zapisie
< hr >
< b > ver . 0.169 </ b >< br />
- FIX - poprawki w liĹ› cie produktĂłw
< hr >
< b > ver . 0.168 </ b >< br />
- NEW - archiwum produktĂłw
< hr >
< b > ver . 0.167 </ b >< br />
- NEW - dodanie obsł ugi cen i stanów magazynowych kombinacji produktów
< hr >
< b > ver . 0.166 </ b >< br />
- NEW - współ praca z GTM
< hr >
< b > ver . 0.164 / 5 </ b >< br />
- FIX - ukrywanie produktĂłw nieaktywnych
< hr >
< b > ver . 0.163 </ b >< br />
- NEW - automatyczne podpowiadanie produktĂłw do zestawu na podstawie wczeĹ› niejszych zakupĂłw klientĂłw
< hr >
< b > ver . 0.162 </ b >< br />
- NEW - GA4
< hr >
< b > ver . 0.161 </ b >< br />
- UPDATE - aktualizacja menu administratora
< hr >
< b > ver . 0.160 </ b >< br />
- UPDATE - aktualizacja cron Baselinker
- NEW - waga i cena jednostkowa produktu
< hr >
< b > ver . 0.159 </ b >< br />
- FIX - cron Baselinker
< hr >
< b > ver . 0.158 </ b >< br />
- UPDATE - poprawa kolorystyki przyciskĂłw
< hr >
< b > ver . 0.157 </ b >< br />
- NEW - szybka zmiana statusu produktu
< hr >
< b > ver . 0.156 </ b >< br />
- NEW - dodanie szybkiej edycji google xml label
< hr >
< b > ver . 0.155 </ b >< br />
- NEW - infinite scroll w widoku kategorii
< hr >
< b > ver . 0.154 </ b >< br />
- FIX - atrybuty produktĂłw
< hr >
< b > ver . 0.153 </ b >< br />
- FIX - atrybuty produktĂłw
< hr >
< b > ver . 0.152 </ b >< br />
- FIX - tematy maili
< hr >
< b > ver . 0.151 </ b >< br />
- FIX - tematy maili
< hr >
< b > ver . 0.150 </ b >< br />
- NEW - domyĹ› lna forma transportu
< hr >
< b > ver . 0.149 </ b >< br />
- NEW - tematy maili
< hr >
< b > ver . 0.148 </ b >< br />
- FIX - cron - xml
< hr >
< b > ver . 0.147 </ b >< br />
- FIX - cron - xml
< hr >
< b > ver . 0.146 </ b >< br />
- NEW - cron - xml
< hr >
< b > ver . 0.145 </ b >< br />
- NEW - omnibus ready
< hr >
< b > ver . 0.144 </ b >< br />
- FIX - usunięcie adresu marianek . pl z kodu
< hr >
< b > ver . 0.143 </ b >< br />
- FIX - poprawa generowania plikĂłw WEBP
< hr >
< b > ver . 0.142 </ b >< br />
- FIX - poprawa adresu strony gł ównej
< ? php
// Auto-generated changelog from manifest files + legacy entries.
// Scans manifest JSON files, merges with changelog-legacy.json, sorts descending, outputs HTML.
$entries = [];
// 1. Scan manifest files
$manifests = glob ( __DIR__ . '/0.*/ver_*_manifest.json' );
if ( $manifests ) {
foreach ( $manifests as $file ) {
$json = @ file_get_contents ( $file );
if ( ! $json ) continue ;
// Strip UTF-8 BOM if present
if ( substr ( $json , 0 , 3 ) === " \xEF \xBB \xBF " ) {
$json = substr ( $json , 3 );
}
$data = @ json_decod e ( $json , true );
if ( ! $data || empty ( $data [ 'version' ] ) || empty ( $data [ 'changelog' ] ) ) continue ;
$date = isset ( $data [ 'date' ] ) ? $data [ 'date' ] : '' ;
// Convert YYYY-MM-DD to DD.MM.YYYY
if ( $date && preg_match ( '/^(\d{4})-(\d{2})-(\d{2})$/' , $date , $m ) ) {
$date = $m [ 3 ] . '.' . $m [ 2 ] . '.' . $m [ 1 ];
}
$entries [] = [
'version' => ( float ) $data [ 'version' ],
'ver_str' => $data [ 'version' ],
'date' => $date ,
'text' => $data [ 'changelog' ],
];
}
}
// 2. Load legacy entries
$legacyFile = __DIR__ . '/changelog-legacy.json' ;
if ( file_exists ( $legacyFile ) ) {
$legacyJson = @ file_get_contents ( $legacyFile );
if ( $legacyJson ) {
$legacy = @ json_decode ( $legacyJson , true );
if ( is_array ( $legacy ) ) {
foreach ( $legacy as $item ) {
if ( empty ( $item [ 'version' ] ) ) continue ;
$entries [] = [
'version' => ( float ) $item [ 'version' ],
'ver_str' => $item [ 'version' ],
'date' => isset ( $item [ 'date' ] ) ? $item [ 'date' ] : '' ,
'text' => isset ( $item [ 'text' ] ) ? $item [ 'text' ] : '' ,
];
}
}
}
}
// 3. Sort descending by version
usort ( $entries , function ( $a , $b ) {
if ( $a [ 'version' ] == $b [ 'version' ] ) return 0 ;
return ( $a [ 'version' ] > $b [ 'version' ] ) ? - 1 : 1 ;
} );
// 4. Output HTML
foreach ( $entries as $entry ) {
$header = 'ver. ' . htmlspecialchars ( $entry [ 'ver_str' ] );
if ( $entry [ 'date' ] ) {
$header .= ' - ' . htmlspecialchars ( $entry [ 'date' ] );
}
$text = nl2br ( htmlspecialchars ( $entry [ 'text' ] ) );
echo '<b>' . $header . '</b><br />' . " \n " ;
echo $text . " \n " ;
echo '<hr>' . " \n " ;
}