<?xml version="1.0" encoding="utf-8"?>
	<rss version="2.0">
		<channel> 
			<title>Version history CMS Donate Engine</title> 
			<link>https://cde.by/en/news/</link> 
			<description>Here you can see the history of changes in CMS Donate Engine.</description>
			<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>
			<item>
				<title>v19.1.95</title>
				<description><![CDATA[test(store): cover PurchaseResolver::resolve()
Inject RandomItemPicker via constructor. Add 12 unit tests
for product/set/switch/roulette branches and DTO contract.]]></description>
				<files><![CDATA[Total: 11 files (+4, ~7, -0)

docs/
  M Store.php.md
  A Templates.md
www/public/style/gente/mods/store/
  M form_donate.tpl
  M index.tpl
  M modal_rulet.tpl
www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Purchase/
  M PurchaseResolver.php
  A ResolveError.php
  A ResolveResult.php
www/tests/Unit/Features/Store/Purchase/
  A PurchaseResolverTest.php]]></files>
				<pubDate>Thu, 08 Oct 2026 08:42:13 +0300</pubDate>
			</item>
			<item>
				<title>v19.1.94</title>
				<description><![CDATA[refactor(store): move localization to Smarty helpers
- Replace $LANGUAGE->t() and $config->get() assigns with {'KEY'|t}
  and {'cfg'|cfg} in all store templates
- Drop dead assigns and hardcoded strings
- Restore steam fallback in SteamForm::render
- Assign meta description/keywords on store index]]></description>
				<files><![CDATA[Total: 20 files (+1, ~19, -0)

www/public/style/gente/
  M header.tpl
www/public/style/gente/js/
  M shop.js
www/public/style/gente/mods/store/
  M admin_modal_delete.tpl
  M admin_modal_edit_product.tpl
  M admin_modal_error_product.tpl
  M admin_modal_group_edit.tpl
  M admin_modal_server_edit.tpl
  M admin_modal_source.tpl
  M form_donate.tpl
  M index.tpl
  M modal_bundle.tpl
  M modal_footer_price.tpl
  M modal_rulet.tpl
  M product_server_group.tpl
  M products_catalog.tpl
  M script.tpl
www/src/admin/lib/updater/migrate_mysql/
  A MigrateMySQL19193.php
www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/helpers/
  M SteamForm.php]]></files>
				<pubDate>Wed, 07 Oct 2026 18:37:03 +0300</pubDate>
			</item>
			<item>
				<title>v19.1.92</title>
				<description><![CDATA[refactor(store): extract read-side into query classes
Move inline SELECTs from store.php into StoreGroupQuery,
StoreProductQuery, StoreItemQuery. Add StoreServerCommand
for editServer partial UPDATE. Reuse existing query methods
that were duplicated inline.]]></description>
				<files><![CDATA[Total: 8 files (+1, ~7, -0)

www/public/style/gente/mods/store/
  M index.tpl
www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Catalog/
  M StoreGroupQuery.php
  M StoreItemQuery.php
  M StoreProductQuery.php
  A StoreServerCommand.php
www/src/app/lib/
  M Discount.php]]></files>
				<pubDate>Wed, 07 Oct 2026 14:17:33 +0300</pubDate>
			</item>
			<item>
				<title>v19.1.91</title>
				<description><![CDATA[refactor(store): extract write-side into command classes
Move inline INSERT/UPDATE/DELETE from store.php into
StoreProductCommand and StoreGroupCommand. Logging goes
through LogStore/Dto. editServer save left as-is.]]></description>
				<files><![CDATA[Total: 5 files (+2, ~3, -0)

docs/
  M Store.php.md
www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Catalog/
  A StoreGroupCommand.php
  A StoreProductCommand.php]]></files>
				<pubDate>Wed, 07 Oct 2026 12:31:26 +0300</pubDate>
			</item>
			<item>
				<title>v19.1.90</title>
				<description><![CDATA[refactor(core): php-cs-fixer]]></description>
				<files><![CDATA[Total: 148 files (+0, ~148, -0)

Most changed directories:
  12   www/src/admin/lib/DemoData/
  11   www/src/app/Features/Store/Purchase/Command/
  10   www/src/app/Features/Store/Purchase/Give/
  10   www/src/app/controllers/
  8   www/src/app/Features/Store/Purchase/Ports/
  8   www/src/app/Features/Auth/
  7   www/src/app/Features/Store/Purchase/
  5   www/src/app/lib/session/
  5   www/src/admin/controllers/
  4   www/tests/Unit/Features/Auth/]]></files>
				<pubDate>Wed, 07 Oct 2026 06:35:00 +0300</pubDate>
			</item>
			<item>
				<title>v19.1.88</title>
				<description><![CDATA[fix(admin): game auth]]></description>
				<files><![CDATA[Total: 3 files (+0, ~3, -0)

www/src/admin/controllers/
  M server_auth.php
www/src/app/
  M constants.php
www/src/app/controllers/
  M servers.php]]></files>
				<pubDate>Tue, 06 Oct 2026 14:36:46 +0300</pubDate>
			</item>
			<item>
				<title>v19.1.87</title>
				<description><![CDATA[refactor(store): add StoreProductQuery model]]></description>
				<files><![CDATA[Total: 10 files (+1, ~9, -0)

www/
  M composer.json
www/src/admin/controllers/
  M server_auth.php
www/src/app/
  M constants.php
www/src/app/controllers/
  M store.php
www/src/app/Features/Store/Admin/
  M RouletteTester.php
www/src/app/Features/Store/Catalog/
  M StoreGroupQuery.php
  A StoreProductQuery.php
www/src/app/Features/Update/Cleanup/
  M CleanupService.php
www/src/app/lib/inventory/
  M RandomItemPicker.php
www/src/app/lib/server/
  M GameAuth.php]]></files>
				<pubDate>Tue, 06 Oct 2026 14:30:27 +0300</pubDate>
			</item>
		</channel>
	</rss>