<?xml version="1.0" encoding="utf-8"?>
	<rss version="2.0">
		<channel> 
			<title>История коммерческой редакции CMS Donate Engine</title> 
			<link>https://cde.by/ru/news/</link> 
			<description>Здесь Вы можете ознакомиться с историей изменений в CMS Donate Engine.</description>
			<item>
				<title>v19.2.5</title>
				<description><![CDATA[fix(cleanup): tolerate race conditions in cleanupCaches]]></description>
				<files><![CDATA[Total: 6 files (+1, ~5, -0)

./
  M docker-compose.yml
docker/php/
  M entrypoint.sh
  M php-fpm-pool.conf
docs/
  A Testing.md
www/src/app/
  M constants.php
www/src/app/Features/Update/Cleanup/
  M CleanupService.php]]></files>
				<pubDate>Fri, 09 Oct 2026 09:36:25 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.4</title>
				<description><![CDATA[refactor(store): extract roulette test into StoreRouletteTestService
refactor(store): extract products json into StoreProductsJsonView]]></description>
				<files><![CDATA[Total: 4 files (+2, ~2, -0)

www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Admin/View/
  A StoreRouletteTestService.php
www/src/app/Features/Store/Catalog/View/
  A StoreProductsJsonView.php]]></files>
				<pubDate>Fri, 09 Oct 2026 06:23:31 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.3</title>
				<description><![CDATA[refactor(store): extract admin delete into StoreAdminDeleteService]]></description>
				<files><![CDATA[Total: 3 files (+1, ~2, -0)

www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Admin/View/
  A StoreAdminDeleteService.php]]></files>
				<pubDate>Fri, 09 Oct 2026 06:11:45 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.2</title>
				<description><![CDATA[refactor(store): extract server form into StoreServerFormData]]></description>
				<files><![CDATA[Total: 3 files (+1, ~2, -0)

www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Admin/Form/
  A StoreServerFormData.php]]></files>
				<pubDate>Fri, 09 Oct 2026 05:56:47 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.1</title>
				<description><![CDATA[refactor(store): extract group form into StoreGroupForm/FormData]]></description>
				<files><![CDATA[Total: 5 files (+2, ~3, -0)

www/src/admin/controllers/
  M core_updater.php
www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Admin/Form/
  A StoreGroupForm.php
  A StoreGroupFormData.php]]></files>
				<pubDate>Fri, 09 Oct 2026 05:49:11 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.0</title>
				<description><![CDATA[refactor(store): extract purchase flow into StorePurchaseService
Move itemID branch (resolver, cooldown, ValidatePayment, GiveContext,
PurchaseFactory) from controller into StorePurchaseService. Controller
keeps only HTTP: instantiation + Template::restContent.]]></description>
				<files><![CDATA[Total: 3 files (+1, ~2, -0)

www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Purchase/
  A StorePurchaseService.php]]></files>
				<pubDate>Thu, 08 Oct 2026 18:51:41 +0300</pubDate>
			</item>
			<item>
				<title>v19.1.99</title>
				<description><![CDATA[feat(console): add app:lint:container command
Compile DI container before deploy to catch autowiring errors.
ContainerFactory::lint() reuses createBuilder() without dumping
or writing cache files.]]></description>
				<files><![CDATA[Total: 4 files (+1, ~3, -0)

www/bin/
  M console
www/src/admin/lib/console/
  A LintContainerCommand.php
www/src/app/
  M constants.php
www/src/app/Container/
  M ContainerFactory.php]]></files>
				<pubDate>Thu, 08 Oct 2026 16:45:40 +0300</pubDate>
			</item>
			<item>
				<title>v19.1.98</title>
				<description><![CDATA[fix(store): move StoreImagePicker to View/ to exclude from DI]]></description>
				<files><![CDATA[Total: 4 files (+1, ~2, -1)

www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Admin/
  D StoreImagePicker.php
www/src/app/Features/Store/Admin/View/
  A StoreImagePicker.php]]></files>
				<pubDate>Thu, 08 Oct 2026 14:40:59 +0300</pubDate>
			</item>
			<item>
				<title>v19.1.97</title>
				<description><![CDATA[refactor(store): extract image picker from controller
Move scandir + tmbs filtering from imageSelect branch into
StoreImagePicker. Controller keeps only HTTP: assigns tmbs
and calls modal.]]></description>
				<files><![CDATA[Total: 3 files (+1, ~2, -0)

www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Admin/
  A StoreImagePicker.php]]></files>
				<pubDate>Thu, 08 Oct 2026 14:36:04 +0300</pubDate>
			</item>
			<item>
				<title>v19.1.96</title>
				<description><![CDATA[refactor(store): extract model layer from store.php
Move data preparation out of the controller into dedicated
classes: StoreProductFormData (insert branch), StoreProductForm
(add/edit modal), StorePackageView (package modal),
StoreCatalogView (index/server/category).
Also fixes:
- item='all' discount now matches in server/group badges
- number_format on string money/price (PHP 8.5 strictness)]]></description>
				<files><![CDATA[Total: 9 files (+4, ~5, -0)

docs/
  M Store.php.md
www/src/app/
  M constants.php
www/src/app/config/
  M services.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Admin/Form/
  A StoreProductForm.php
  A StoreProductFormData.php
www/src/app/Features/Store/Catalog/
  M StoreGroupQuery.php
www/src/app/Features/Store/Catalog/View/
  A StoreCatalogView.php
  A StorePackageView.php]]></files>
				<pubDate>Thu, 08 Oct 2026 12:18:43 +0300</pubDate>
			</item>
		</channel>
	</rss>