Verze 19.0 přináší jeden z největších technologických kroků v historii platformy, nový MCP server pro propojení s AI nástroji, výrazné rozšíření datové vrstvy pro Google Tag Manager, číselník mezinárodních telefonních předvoleb, redesign administrátorského menu, novou stránku s rozcestníkem kategorií a desítky dalších úprav napříč backendem i storefrontem. Tato verze je zároveň označena jako LTS (Long-Term Support), což znamená, že ji budeme aktivně podporovat a vydávat pro ni bezpečnostní aktualizace minimálně po dobu 2 let.
Povýšení technologického stacku
Verze 19.0 posouvá backend na PHP 8.5, Symfony 7.4, Doctrine ORM 3 + DBAL 4 a PostgreSQL 18, storefront pak na React 19. Cíl je společný – udržet platformu na podporovaných a aktivně vyvíjených verzích, otevřít cestu k dalším vylepšením a snížit technický dluh. Jako doprovodný úklid byly Doctrine anotace nahrazeny PHP atributy a opuštěná knihovna litipk/php-bignumbers byla nahrazena aktivně udržovanou brick/math.
- PHP 8.5 – #4470
- Symfony 7.4 – #4448
- Doctrine ORM 3 + DBAL 4 – #4513
- React 19 – #4404
- PostgreSQL 18 – #4149
- Doctrine anotace → PHP atributy – #4395
- brick/math místo litipk/php-bignumbers – #4484
Nové funkcionality
MCP server pro propojení s AI nástroji (#4564)
Platforma má vlastní MCP (Model Context Protocol) server, který umožňuje superadministrátorům připojit AI klienty (Claude Code, Codex CLI a další) přímo k databázi projektu pro read-only průzkum.
Server vystavuje nástroje, díky kterým dokáže AI agent prozkoumat databázi a odpovídat uživateli na otázky ohledně projektových dat. MCP běží na dedikovaném read-only Doctrine spojení s limity řádků a statement timeoutem. Dostupné databázové schéma explicitně konfiguruje programátor pomocí PHP atributů a PHPStan pravidlo hlídá, že žádný nový sloupec nemůže do AI klientů uniknout neúmyslně. Každé volání nástroje se loguje do dedikovaného Monolog kanálu kvůli auditu.
Administrátor si v sekci „My MCP server“ spravuje přístupy buď ručně generovaným tokenem, nebo přes OAuth flow v prohlížeči, kde lze připojené klienty kdykoli odvolat. Vše je do detailu popsáno v dokumentaci.
Číselník mezinárodních telefonních předvoleb (#4514)
Telefonní čísla se až doteď ukládala jako prostý řetězec bez struktury, takže nešlo spolehlivě identifikovat předvolbu země, validovat čísla per země nebo podle ní filtrovat. Verze 19.0 zavádí kompletní podporu mezinárodních předvoleb: administrátor může nastavit povolené předvolby per doména (s výchozí), a všechna telefonní pole – v adminu, ve Frontend API i ve storefrontu – pracují s číslem rozloženým na předvolbu (např. +420) a národní část.
Existující data byla migrována – jednolitý sloupec telephone se rozpadl do tří sloupců (předvolba a národní část, navíc interně aplikace udržuje také kód země pro zobrazení správné vlaječky). Hodnoty byly rozparsované pomocí libphonenumber s ohledem na doménový kontext. Podezřelá čísla (s neznámou nebo nesedící předvolbou) se v administraci vizuálně označí, aby je bylo možné dohledat.

Výběr telefonní předvolby v profilu uživatele
Stavy a plánování článků blogu (#4490)
Články blogu mají nově multidoménové stavy, takže si redaktor může text připravit a sdílet, aniž by ho rovnou pustil veřejně. Stav Preview ponechá článek dostupný skrze přímý odkaz, ale prozatím robotům nedovolí indexaci (přidá noindex/nofollow) a vynechá ho ze sitemap – ideální pro náhled klienta nebo redakční schvalování. Ve výpisu i na detailu článku jsou nové štítky se stavem (Draft, Preview, Scheduled, Published) s ohledem na zvolenou doménu. Datum publikace je povinné jen pro stav Published; při ručním přepnutí se automaticky předvyplní aktuální čas dané domény.

Výpis článků blogu zobrazuje stavy publikace
Rozšíření a sjednocení datové vrstvy pro GTM
Proběhla celková revize implementace GTM na storefrontu a doplnění nových polí pro podrobnější měření chování uživatelů. Co majitel e-shopu nově změří:
- kdy si zákazník přidá produkt do oblíbených (wishlist) – #4594
- kdy zákazník odstoupí od objednávky – #4603
- kolik výsledků zákazníkovi vrátil našeptávač při vyhledávání – #4593
- konkrétní varianty produktů (např. barva, velikost) u položek v košíku – #4597
- kompletní data dokončené objednávky včetně produktů a souhlasů s dotazníky spokojenosti – #4602
- firemní identifikátory u registrace a přihlášení firemních zákazníků – #4595
- produktová ecommerce data u události hlídacího psa (watchdog) – #4598
Kromě toho se zpřesnila i kvalita dat, která už platforma do GTM posílala:
- GTM funguje i pro návštěvníky s vypnutým JavaScriptem díky noscript iframe fallbacku – #4586
- stránkové eventy používají aktuální metadata stránky – #4591
- doplnění uživatelských dat dle priority zdrojů (výdejní místo, dodací adresa, atd.) – #4599
- event o aktualizaci souhlasů (consent) odesílá aktuální hodnoty z formuláře – #4585
Zaokrouhlování objednávek na 0,05 EUR (#4522)
Některé evropské státy (např. Slovensko) vyžadují kvůli pětihaléřům (resp. eurocentům) zaokrouhlení celkové ceny objednávky na násobky 0,05 EUR při platbě v hotovosti. Logika zaokrouhlování byla zobecněna a oddělena od konkrétní měny, takže je připravená i pro další scénáře.

V souhrnu objednávky se objeví samostatný řádek „Zaokrouhlení“ s úpravou do ±0,04 €
Stránka s rozcestníkem kategorií
Storefront má novou statickou stránku /catalog (a její jazykové mutace), která vždy vykresluje strom kategorií do druhé úrovně. Slouží jako trvale dostupný rozcestník pro zákazníky i pro SEO – stránka byla současně přidána do sitemap.

Rozcestník kategorií
Hodnoty parametrů s vlastním obrázkem (vzor, dekor)
U parametrů typu barva lze nyní místo RGB hodnoty nahrát vlastní obrázek – např. obrázek dubového vzoru pro dřevěnou podlahu, kostkovaný vzor pro košili apod. Obrázek se zobrazí jak ve filtru kategorie, tak na detailu produktu. Drobné související úpravy v administraci: lepší popisek a nápověda pro ikony parametrových hodnot s povolenými formáty, náhled souborů, možnost vybrat existující soubor.
Design a vzhled
Facelift menu administrace (#4573)
Administrace dostala modernizované menu s novou primární barvou, gradientovým pozadím a upravenými stavy odkazů (při najetí/aktivaci). Nově je také možné nastavit vlastní logo projektu.

Nové menu s možností nahrát vlastní logo
Připnutí položek v menu administrátora (#4533)
Každý administrátor si nyní může připnout své často používané položky menu (hlavní i vnořené) do dedikované sekce „Připnuté“ v horní části sidebaru. Stačí najet myší na položku a kliknout na ikonu špendlíku, která se objeví. Pořadí připnutých položek si lze pak přetáhnutím upravit.

Oblíbené položky administrátora
Bezpečnost a výkon
CSP a další bezpečnostní hlavičky
Statické bezpečnostní HTTP hlavičky se nyní nastavují na úrovni Nginx (Content-Security-Policy, Referrer-Policy, Strict-Transport-Security, X-Frame-Options, X-Content-Type-Options a další). CSP hodnota nastavená superadminem se propisuje do storefrontu přes Frontend API. Nastavení hlaviček je detailně popsáno v naší dokumentaci. K tomu přibyly opravy konkrétních CVE (CVE-2026-4587 v hybridauth) a validace referer URL u sociálního přihlášení jako prevence proti open redirect.
- Security headers – #4447
- CVE-2026-4587 (hybridauth) – #4547
- Open redirect validace u sociálního loginu – #4320
Performance audit storefrontu (#4460)
Po přechodu na React 19 proběhl komplexní audit výkonu storefrontu. Zlepšily se metriky LCP/TBT a snížily zbytečné režie na stránce.
Pro vývojáře
Shopsys CLI – nový bootstrapper projektů (#4377)
Pro inicializaci a konfiguraci nových projektů na Shopsys Platform vznikl samostatný CLI nástroj. Ten eliminuje ruční nastavování, podporuje interaktivní nastavení domén i konfiguraci z YAML souboru. Umožňuje kompletní vytvoření a konfiguraci nového projektu, případně i úpravu existujícího projektu. CLI se distribuuje jako samostatný phar. Více informací najdete v dokumentaci.
Rozšíření CRUD controlleru
Generický CRUD controller dostal další funkce. Mazací akce (delete) je nově součástí systému, takže entity spravované přes CRUD controller mají v základu i smazání bez nutnosti psát vlastní akci controlleru. K tomu lze pro každý CRUD nastavit ikonu v menu administrace.
Konfigurace obrázků: z YAML do PHP atributů (#4421)
Konfigurace nastavení obrázků (typy a velikosti) se přesunula z YAML souboru přímo k entitám jako PHP atributy. Vývojář vidí konfiguraci přímo u třídy, IDE lépe našeptává a kontrola statickou analýzou je výrazně silnější.
Striktní typy v kódu (#4396)
Coding standardy nově globálně vynucují používání striktních typů ve všech relevantních PHP souborech a automaticky odstraňují redundantní anotace. Pomáhá to odhalit potenciální typové chyby už při code review a sjednocuje styl napříč celou codebase – včetně project-base i balíčků.
Cron používá standardní crontab syntaxi
Plánování cron modulů nyní používá běžnou crontab notaci. Cron moduly se navíc spouští izolovaně v separátních procesech a podporují nastavení stop_on_failure, takže provoz cronů je předvídatelnější a lépe řiditelný
Závěr
Verze 19.0 LTS je technologicky jedním z největších kroků v historii platformy a zároveň přináší konkrétní funkcionality, které využijí jak vývojáři (Shopsys CLI, CRUD rozšíření, image config v atributech, striktní typy), tak provozovatelé e-shopů (MCP server, telefonní předvolby, workflow článků blogu, rozcestník kategorií, parametry s obrázky, úprava zaokrouhlování, redesign administrace) i marketéři (rozšířené GTM eventy, SEO ve vyhledávání). Kompletní seznam změn najdete v changelogu a upgrade notes.
- Changelog: https://github.com/shopsys/shopsys/blob/19.0/CHANGELOG-19.0.md
- GitHub release: https://github.com/shopsys/shopsys/releases/tag/v19.0.0
Budeme rádi za vaše dotazy, nápady i příspěvky. Připojte se k diskuzi na GitHub Discussions, nahlaste issue nebo vytvořte pull request. Každá zpětná vazba nám pomáhá platformu zlepšovat a posouvat dál.
Čtěte také