mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-06-28 00:24:23 +00:00
4.5 KiB
4.5 KiB
Changelog
All notable changes to this project are documented in this file.
Format inspired by Keep a Changelog and Semantic Versioning principles.
[Unreleased]
Fixed
- Troop duplication race-condition hardening for issue #98.
sendunitsComplete()now uses atomic per-record movement claim (proc = 1only when current worker owns the row) before processing reinforcements.returnunitsComplete()now uses the same atomic claim flow for returning troops and canceled-settler returns.sendSettlersComplete()now claims movement rows atomically before processing settle/return outcomes.
Security and Safety
- Added idempotent A2B request claiming in troop send flow to prevent duplicate processing from concurrent/replayed submissions.
- Introduced
claimA2b()in database layer and consumed it insendTroops()before any troop/resource mutation.
Changed
- Movement completion status updates for the hardened flows are now claim-first (atomic) instead of late batch marking.
[2026-03-14] - Stability, PHP 8, Docker and Installer Hardening
Added
- New root changelog file.
- Admin panel option to list users in the Users menu (
?p=users). - New admin users list page with pagination and links to player details:
Admin/Templates/users.tpl. - Installer SQL defaults in config form now read from
.env(with fallback to legacyMYSQL_*keys). - Random database prefix generation per installation session.
- Installer timezone option for Brazil (
America/Sao_Paulo) and default timezone set to Sao Paulo. - SSE explicit error payload in croppers builder to avoid infinite reconnect loops.
Changed
- Docker runtime upgraded to PHP 8.3 (Apache).
- Docker Compose database moved to MariaDB latest.
- Compose configuration modernized (v2 style), env naming standardized to
MARIADB_*with compatibility support. - README and Docker docs updated to reflect PHP 8/MariaDB and modern compose commands.
- Installer timezone id mapping fixed in
install/index.phpto match form options. - Croppers build progress behavior adjusted to report incremental progress in batches.
Fixed
- PHP 8 compatibility:
- Replaced deprecated
each()usage. - Added safe guards for
magic_quotes_*checks.
- Replaced deprecated
- Multiple warnings/fatals from undefined variables and null array offsets across game/admin/installer pages.
- Duplicate constant definition warnings in language file (preventing header issues).
- Duplicate key failures for croppers index creation in PHP 8 (
mysqli_sql_exceptionbehavior) by making index ops idempotent. - Installer and runtime DB connection robustness:
- host:port normalization,
- retry logic,
- throwable-safe handling.
- Duplicate primary key errors in units insertion by making
addUnitsidempotent (ON DUPLICATE KEY UPDATE). - Admin template warnings in report/message pages (undefined keys/indexes).
- Admin map tile query now uses dynamic table prefix (
TB_PREFIX) instead of hardcodeds1_tables. - Session/header issues in admin reset script:
- removed output before
<?php, - proper session start checks,
- safe admin access check.
- removed output before
- Mass message and system message flows no longer trigger undefined control variable warnings.
- Plus menu warning fixed by correcting
isset($_GET['id'])condition precedence. - Plus page now displays active option remaining time with seconds and end time.
Performance
- World data generation optimized for large maps:
- temporary session tuning for bulk writes,
- temporary drop/recreate of secondary indexes in
wdataduring heavy insert.
- Croppers generation optimized:
- per-tile bonus query replaced with chunk-level batch bonus calculation,
- reduced lock contention and improved perceived progress updates.
- Build/installer flow updated to avoid stalled progress UI states.
Security and Safety
- Stricter checks around request/session variables to prevent warnings escalating into header failures.
- More defensive null-safe access patterns in DB result handling.
- Better error propagation in SSE endpoints.
Developer Experience
.env.examplerestored and aligned with MariaDB naming.- Legacy
MYSQL_*compatibility keys now inherit values fromMARIADB_*. - Multiple PHP syntax validation passes performed after patches.
Notes
- This changelog reflects the current hardening/migration cycle and operational fixes applied to make the project run cleanly on PHP 8 + MariaDB.
- If you want strict version tags (e.g.
v8-migration.1,v8-migration.2), convert the dated section above into tagged releases as part of your next release process.