<?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.2.60</title>
				<description><![CDATA[fix(sql): debug error_log]]></description>
				<files><![CDATA[Total: 4 files (+0, ~3, -1)

docs/todo/
  D mysql-buffered-queries.md
www/src/admin/lib/updater/services/
  M Updater.php
www/src/app/
  M constants.php
www/src/app/lib/database/
  M Database.php]]></files>
				<pubDate>Mon, 19 Oct 2026 13:21:50 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.59</title>
				<description><![CDATA[perf(database): SqlParser md5 cache
perf(router): CompiledUrlGenerator + file cache
fix(install): MigrateMySQL19164 1054/2014, DBMigration null-guard
feat(settings): DB logging select off/error/all
feat(install): DefaultPasswordChecker non-blocking warning
fix(errorhandler): mask passwords & session tokens in backtrace
chore(docker): opcache JIT tracing, validate_timestamps
docs(todo): split-current-user-money, monolog, mysql-buffered, Remove_fpm_client
Baseline: 356/5, PHPStan 0, container OK]]></description>
				<files><![CDATA[Total: 40 files (+7, ~28, -5)

./
  M .env
  M docker-compose.yml
docker/php/
  M Dockerfile
  M opcache.ini
docs/addons/
  D apache.rewrite.sample.htaccess
  D mysql_error.txt
  D web.config
docs/todo/
  A Remove_fpm_client.md
  A errorhandler-context-instead-of-wrap.md
  A monolog-migration.md
  A mysql-buffered-queries.md
  M split-current-user-money.md
www/bin/
  M install.php
www/public/install/
  M index.php
www/public/style/lte3/
  M admin_ajax.tpl
  M admin_layout.tpl
  D admin_pjax.tpl
  D content_page.tpl
www/src/admin/controllers/
  M settings.php
www/src/admin/lib/updater/migrate_mysql/
  M DBMigration.php
  M MigrateMySQL19164.php
  A MigrateMySQL19258.php
www/src/app/
  M Kernel.php
  M constants.php
www/src/app/Container/
  M ContainerFactory.php
www/src/app/lib/
  M ErrorHandler.php
  M Template.php
www/src/app/lib/database/
  M Query.php
www/src/app/lib/database/middleware/
  M CacheMiddleware.php
  M LoggingMiddleware.php
  M SqlParserMiddleware.php
www/src/app/lib/rcon/Protocol/
  M RconDayz.php
www/src/Install/assets/
  M database_config.tpl
www/src/Install/assets/css/
  M setup.css
www/src/Install/Core/
  A DefaultPasswordChecker.php
  M InstallationConfig.php
www/src/Install/lang/
  M ru.php
www/src/Install/Step/
  M DatabaseConfig.php
www/tests/
  M bootstrap.php
www/tests/Unit/Database/
  A SqlParserCachingTest.php]]></files>
				<pubDate>Sun, 18 Oct 2026 22:48:20 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.57</title>
				<description><![CDATA[fix(admin/money,realmoney): invalidate user data version after money delete
fix(auth): populate session balance from driver, not stale CurrentUser
refactor(CurrentUser): stop loading balance from PlayerDataRepository
fix(cache): per-service circuit isolation
chore(session): remove dead UserDataVersionManager
fix(money): CraftConomy3 set semantics + SQL syntax + zero-guard]]></description>
				<files><![CDATA[Total: 17 files (+2, ~14, -1)

www/src/admin/controllers/
  M money.php
  M realmoney.php
www/src/app/
  M FrontRunner.php
  M constants.php
www/src/app/controllers/
  M bans.php
www/src/app/Features/Auth/
  M LoginController.php
www/src/app/lib/
  M AppCache.php
  M Bans.php
  M memberData.php
www/src/app/lib/database/
  M Database.php
www/src/app/lib/database/middleware/
  M CacheMiddleware.php
www/src/app/lib/money/
  M UserCraftConomy3Balance.php
www/src/app/lib/sender/
  M Dialog.php
www/src/app/lib/session/
  M CurrentUser.php
  D UserDataVersionManager.php
www/tests/Unit/Database/
  A CrossServiceCircuitBreakerTest.php
www/tests/Unit/Money/
  A UserCraftConomy3BalanceSetTest.php]]></files>
				<pubDate>Sat, 17 Oct 2026 20:45:50 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.56</title>
				<description><![CDATA[fix(admin/money,realmoney): validate money input and check addMoney result
ux(admin/money,realmoney): remove dead back link from modal result messages]]></description>
				<files><![CDATA[Total: 3 files (+0, ~3, -0)

www/src/admin/controllers/
  M money.php
  M realmoney.php
www/src/app/
  M constants.php]]></files>
				<pubDate>Sat, 17 Oct 2026 09:36:35 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.55</title>
				<description><![CDATA[refactor(core): drop dead $GLOBALS[coins/rub/posts] writes]]></description>
				<files><![CDATA[Total: 4 files (+0, ~4, -0)

www/src/app/
  M FrontRunner.php
  M Kernel.php
  M constants.php
www/src/app/lib/
  M memberData.php]]></files>
				<pubDate>Sat, 17 Oct 2026 08:43:12 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.54</title>
				<description><![CDATA[fix(money): allow set balance to zero]]></description>
				<files><![CDATA[Total: 2 files (+0, ~2, -0)

www/src/app/
  M constants.php
www/src/app/lib/money/
  M UserBalance.php]]></files>
				<pubDate>Sat, 17 Oct 2026 08:11:52 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.53</title>
				<description><![CDATA[test(store): cover ManualGive give strategy]]></description>
				<files><![CDATA[Total: 12 files (+6, ~2, -4)

docs/
  D Controllers.md
  D Store.php.md
  D Templates.md
  D Testing.md
docs/contracts/
  A Controllers.md
  A Templates.md
  A Testing.md
  A store.md
docs/todo/
  A split-current-user-money.md
www/src/app/
  M constants.php
www/src/app/lib/
  M Template.php
www/tests/Unit/Features/Store/Purchase/Give/
  A ManualGiveTest.php]]></files>
				<pubDate>Sat, 17 Oct 2026 06:46:44 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.52</title>
				<description><![CDATA[fix(user): read balance from money db in PlayerDataRepository]]></description>
				<files><![CDATA[Total: 3 files (+0, ~3, -0)

www/src/app/
  M constants.php
www/src/app/config/
  M services.php
www/src/app/lib/user/
  M PlayerDataRepository.php]]></files>
				<pubDate>Fri, 16 Oct 2026 15:39:03 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.51</title>
				<description><![CDATA[fix(store): prevent double refund on concurrent cancel
The cancel flow credited the buyer before flipping the message body,
so two admins clicking at the same time could each pass the marker
check and each trigger addMoney, doubling the refund.
Flip the message body first with a conditional UPDATE on the original
body and bail out when affectedRows is 0. Only the request that wins
the UPDATE proceeds to credit the buyer and write the refund log.
Roll back the body if addMoney returns false.]]></description>
				<files><![CDATA[Total: 3 files (+0, ~3, -0)

www/src/app/
  M constants.php
www/src/app/Features/Store/Http/
  M StoreCatalogController.php
  M StoreDeliveryController.php]]></files>
				<pubDate>Fri, 16 Oct 2026 13:53:46 +0300</pubDate>
			</item>
			<item>
				<title>v19.2.50</title>
				<description><![CDATA[fix(store): restore add-product action in category nav]]></description>
				<files><![CDATA[Total: 2 files (+0, ~2, -0)

www/src/app/
  M constants.php
www/src/app/Features/Store/Http/
  M StoreCatalogController.php]]></files>
				<pubDate>Fri, 16 Oct 2026 13:34:33 +0300</pubDate>
			</item>
		</channel>
	</rss>