Releases: NB-Core/lotgd
Release list
v2.0.5
What's Changed
- Enable debug mode in ErrorHandlerReentrancyTest to allow reentrancy fallback output by @NB-Core in #1355
- test: align login query security assertions with new auth flow by @NB-Core in #1356
- fix: align installer password policy with runtime login by @NB-Core in #1357
- feat: add TOTP-based two-factor authentication module by @NB-Core in #1358
- fix: validate timeformat and timeoffset in prefs to avoid date() TypeError by @NB-Core in #1359
- fix: staged 2FA resume flow and add resume op by @NB-Core in #1360
- fix(twofactorauth): keep pending challenge active on failed tokens and add audit logging by @NB-Core in #1361
- Migrate to bcrypt hashing and implement two-factor authentication by @NB-Core in #1362
- Update changelog and README, move legacy changelog to docs, and remove obsolete sha1.js by @NB-Core in #1363
- feat: add WebAuthn passkey support as alternative 2FA by @NB-Core in #1364
- refactor: remove passkey legacy bridge indirection by @NB-Core in #1365
- Add tests for expired authentication challenge and registration account mismatch by @NB-Core in #1366
- Centralize legacy password checks, detect bcrypt hashes, and add PasswordHelper tests by @NB-Core in #1367
- fix: add migration to create prefixed twofactorauth_passkeys table by @NB-Core in #1368
- fix(passkeys): improve RP ID fallback and registration diagnostics by @NB-Core in #1369
- fix: harden passkey registration JSON/error handling by @NB-Core in #1370
- fix: harden passkey registration begin error handling by @NB-Core in #1371
- fix: isolate 2FA setup passkey async endpoints from nav lifecycle by @NB-Core in #1372
- Limit forced-nav bypass to passkey setup async routes; add API-safe handlers, logging, and structured errors by @NB-Core in #1373
- fix: harden passkey setup async flow and diagnostics by @NB-Core in #1374
- feat: route TwoFactorAuth passkey ceremonies through Jaxon async handler by @NB-Core in #1375
- fix(twofactorauth): harden async bootstrap pre_headscript contract by @NB-Core in #1376
- fix: harden 2FA async bootstrap and polling failure handling by @NB-Core in #1377
- fix: harden 2FA challenge async flow and diagnostics by @NB-Core in #1378
- fix: improve passkey async diagnostics and transport error handling by @NB-Core in #1379
- test: stabilize 2FA module verify flow assertions by @NB-Core in #1381
- fix: harden passkey beginRegistration async error handling by @NB-Core in #1382
- fix: make TwoFactorAuthPasskey constructor DI-free for Jaxon callables by @NB-Core in #1383
- fix: restore public passkey handler test-injection setters by @NB-Core in #1384
- fix: load Jaxon before LotGD integration and enforce absolute Jaxon requestURI by @NB-Core in #1385
- fix(async): disable background polling on two-factor challenge/setup pages by @NB-Core in #1387
- fix: harden passkey async redirects and Jaxon response contract by @NB-Core in #1388
- fix: harden passkey Jaxon routing and async diagnostics by @NB-Core in #1389
- fix: pin Jaxon transport to /async/process.php for passkey flows by @NB-Core in #1390
- Allow async/process.php during pending 2FA challenge and normalize URI matching by @NB-Core in #1391
- fix: harden passkey Jaxon callback bridge dispatch and add bridge diagnostics by @NB-Core in #1392
- Codex-generated pull request by @NB-Core in #1393
- Codex-generated pull request by @NB-Core in #1394
- Codex-generated pull request by @NB-Core in #1395
- Codex-generated pull request by @NB-Core in #1396
- Codex-generated pull request by @NB-Core in #1398
- Codex-generated pull request by @NB-Core in #1399
- docs: refresh unreleased changelog with passkey async updates by @NB-Core in #1401
- Password hash change by @NB-Core in #1402
- docs: refresh unreleased changelog with passkey async updates by @NB-Core in #1400
- fix: validate csrf on sync passkey handlers by @NB-Core in #1403
- fix: harden 2FA key derivation and add passkey rpId fallback diagnostics by @NB-Core in #1405
- fix: narrow passkey Jaxon registration surface by @NB-Core in #1406
- tests: relax PasskeyService rpId fallback diagnostic assertion by @NB-Core in #1407
- Widen settings.setting to VARCHAR(50) to support twofactorauth_key_material by @NB-Core in #1408
- fix: read 2FA passkey begin state from module prefs by @NB-Core in #1409
- Align translatortool save handling with Translator lookup and use parameterized DB writes by @NB-Core in #1410
- refactor: normalize twofactorauth output rendering by @NB-Core in #1411
- Passkey hardening by @NB-Core in #1412
- refactor: enforce Lotgd\Http policy, preserve legacy wrapper escaping, add QA gate and migrate core HTTP usage by @NB-Core in #1414
- Parameterize legacy SQL queries with DBAL bindings and add regression tests by @NB-Core in #1415
- Harden superuser editors with typed DBAL prepared statements and add regression tests by @NB-Core in #1417
- fix: normalize raw request values in nav and petition abuse fields by @NB-Core in #1418
- Normalize and validate request inputs; use prepared queries and encode nav params by @NB-Core in #1419
- Passkey hardening by @NB-Core in #1420
- build(deps): bump the composer-minor-and-patch group with 2 updates by @dependabot[bot] in #1413
- docs: add security review checklist, secure baseline, operator hardening, and deprecation milestone by @NB-Core in #1423
- feat: centralized runtime hardening bootstrap (session cookie, headers, fixation control) by @NB-Core in #1421
- refactor: harden security-critical superuser endpoints with typed DBAL bindings by @NB-Core in #1422
- chore: raise PHPStan memory limit for static analysis by @NB-Core in #1425
- Refactor PayPal IPN handling into IpnPaymentProcessor and add tests by @NB-Core in #1424
- fix: add canonical idempotency guard for IPN donation crediting by @NB-Core in #1426
- fix: switch IPN canonical paylog lookup to MAX(payid) semantics by @NB-Core in #1427
- feat(installer): add security defaults and admin recommendations module by @NB-Core in #1429
- fix: parameterize module SQL sinks and enforce addslashes() QA policy by @NB-Core in #1428
- chore(ci): update workflow action majors for Node.js 24 compatibility by @NB-Core in #1430
- refactor: enforce exact SQL addslashes baseline entries by @NB-Core in #1431
- fix: harden legacy superuser/account SQL writes with typed DBAL bindings by @NB-Core in #1432
- fix: parameterize registration inserts in create.php by @NB-Core in #1433
- fix: parameterize creatures/referers list queries and harden sort handling by @NB-Core in #1434
- fix: parameterize creature edit lookup query by @NB-Core in #1435
- fix: parameterize create and paylog read queries by @NB-Core in #1436
- docs: refresh Unreleased changelog with post-2.0.4 security, payment, and SQL hardening notes by @NB-Core in #1437
- refactor: migrate remaining SQL addslashes call sites to DBAL parameterized queries and retire baseline by @NB-Core in #1438
- refactor: migrate core security SQL paths to typed DBAL bindings by @NB-Core in https://github.com/NB-Core/...
v2.0.4
Important note in this release:
If you use the code on production, it is critical to update now because there is a serious exploit possibility in some cases depending on your config.
Issue #1352
What's Changed
- chore: add phpstan-doctrine and update async handlers + tests for new Jaxon/PHPUnit APIs by @NB-Core in #1256
- fix: specify extended setting value column name by @NB-Core in #1257
- fix: harden Doctrine metadata bootstrapping by @NB-Core in #1258
- fix: use Jaxon client polling in async setup by @NB-Core in #1259
- feat(async): adopt Jaxon 5.5 client handlers and simplify client setup by @NB-Core in #1260
- fix: register jaxon async namespace by @NB-Core in #1261
- fix: align async polling handler lookup by @NB-Core in #1262
- fix: initialize Lotgd async namespace before Jaxon script by @NB-Core in #1263
- fix(charrestore): prevent deletion when snapshot fails and notify admin by @NB-Core in #1264
- docs: clarify dragon flawless detection logic with comments by @NB-Core in #1265
- Add dragon bugfix to branch by @NB-Core in #1266
- fix(donators): validate id and amt as integers by @NB-Core in #1267
- Push donator fix into branch by @NB-Core in #1268
- refactor: harden Doctrine metadata cache clearing in Bootstrap by @NB-Core in #1270
- fix(doctrine): tolerate doctrine metadata cache clear races by @NB-Core in #1272
- fix(doctrine): harden metadata cache clearing against transient filesystem races by @NB-Core in #1273
- fix(datacache): fallback to temp dir when datacache path is empty by @NB-Core in #1274
- fix: gate Doctrine metadata cache clearing behind a version marker by @NB-Core in #1276
- fix(datacache): fallback to temp dir when datacache path is empty by @NB-Core in #1275
- docs: clarify datacache path requirement by @NB-Core in #1277
- fix: clear in-memory datacache entries on invalidation by @NB-Core in #1278
- fix: restore setAccessible for non-public properties in DoctrineEntityManager stub by @Copilot in #1280
- fix: prevent warnings from file time functions on disappearing paths by @Copilot in #1281
- More composer updates by @NB-Core in #1279
- refactor: modernize modules tables to Bootstrap markup by @NB-Core in #1282
- feat: add accessible captions to module tables by @NB-Core in #1283
- fix(modules): replace legacy table attributes with Bootstrap utilities and add accessible captions by @NB-Core in #1284
- feat: add DataTables integration to module manager tables by @NB-Core in #1285
- Codex-generated pull request by @NB-Core in #1286
- fix: include core DataTables (2.3.7) assets for modules page by @NB-Core in #1287
- Codex-generated pull request by @NB-Core in #1288
- fix: escape JS variables in modules table script by @NB-Core in #1289
- fix: respect base path for vendor assets by @NB-Core in #1290
- chore: refresh bundled vendor assets to Bootstrap 5.3.8 and jQuery 4.0.0 by @NB-Core in #1291
- feat: add vendor asset registry to Output and render in header by @NB-Core in #1292
- refactor: use vendor asset registry for modules assets by @NB-Core in #1293
- docs: document twig vendor asset registration by @NB-Core in #1294
- Codex-generated pull request by @NB-Core in #1295
- feat: add Output::addHeadMarkup() and render head markup with vendor assets by @NB-Core in #1296
- fix(modules.php): align 'Requires' sub-row to 6 columns by @NB-Core in #1297
- fix: move uninstalled module requirements into name cell by @NB-Core in #1298
- fix: use Output vendor asset for async jQuery load by @NB-Core in #1299
- Data tables modules by @NB-Core in #1300
- feat: add showFormTabbed helper by @NB-Core in #1301
- fix: use tabbed prefs form rendering in prefs.php by @NB-Core in #1302
- feat: add data-section attributes and tab filtering for tabbed forms by @NB-Core in #1303
- fix: preserve tabbed DataTable search when switching tabs by @NB-Core in #1304
- feat(forms): add accessible ARIA tabs and keyboard navigation for showForm by @NB-Core in #1305
- fix: load datatables assets in prefs by @NB-Core in #1306
- fix: scope tabbed form tab index input per form by @NB-Core in #1307
- feat(forms): use pressed-state buttons for form section filters (aria-pressed) by @NB-Core in #1308
- fix: read showFormTabIndex from first array entry by @NB-Core in #1309
- fix: correct prefs password length check by @NB-Core in #1310
- fix(forms): align showForm tab controls with button roles and unique hidden input ids by @NB-Core in #1311
- feat: add DataTables search input to tabbed forms by @NB-Core in #1312
- feat: add test-safe reset APIs and remove reflection in tests by @NB-Core in #1314
- fix: require jQuery before DataTables in prefs by @NB-Core in #1315
- Codex-generated pull request by @NB-Core in #1316
- fix: hide default DataTables filter in tabbed forms by @NB-Core in #1317
- fix: reapply striping on tabbed DataTables draws by @NB-Core in #1318
- fix: hide tabbed form header visually by @NB-Core in #1319
- fix: restore legacy row striping in tabbed forms by @NB-Core in #1320
- fix: restore prefs header styling by @NB-Core in #1321
- Add headscript_pre/headscript_mid hook buckets and reorder head asset rendering by @NB-Core in #1322
- feat: add vendor asset buckets (pre/mid/default) by @NB-Core in #1323
- Codex-generated pull request by @NB-Core in #1324
- Codex-generated pull request by @NB-Core in #1325
- fix: move jQuery and DataTables JS to mid vendor bucket and preserve load order by @NB-Core in #1326
- fix: toggle active tab class for tabbed forms by @NB-Core in #1328
- fix: scope DataTables row color overrides to legacy templates by @NB-Core in #1327
- fix: add autocomplete hints for password inputs by @NB-Core in #1329
- fix: add readonly username autocomplete field to prefs form by @NB-Core in #1330
- fix: restrict prefs save keys to allowlist by @NB-Core in #1331
- fix: add ShowForm tab fallback when DataTables is missing by @NB-Core in #1332
- fix: improve legacy form tab accessibility by @NB-Core in #1333
- Codex-generated pull request by @NB-Core in #1334
- feat: use tabbed form in user edit page by @NB-Core in #1335
- Codex-generated pull request by @NB-Core in #1336
- fix: guard async setup initialization by @NB-Core in #1337
- Codex-generated pull request by @NB-Core in #1338
- refactor: use tabbed form for module user prefs by @NB-Core in #1339
- Codex-generated pull request by @NB-Core in #1340
- chore(ci): bump checkout to v4 and add workflow concurrency guard by @NB-Core in #1341
- ci: cache Composer dependencies in workflow by OS, PHP, and lockfile by @NB-Core in #1342
- chore: add PR intake agent workflow by @NB-Core in #1343
- chore: add Composer-only Dependabot config and dependency PR triage prompt by @NB-Core in #1344
- chore(deps-dev): bump squizlabs/php_codesniff...
v2.0.3
What's Changed
- fix: guard missing mount fields in newday by @NB-Core in #1235
- Add legacy global alias
LotgdServerFunctionsin lib wrapper by @NB-Core in #1236 - fix: clamp news timestamp offsets by @NB-Core in #1237
- fix: populate gameoffsetseconds enum in configuration form by @NB-Core in #1238
- fix: ensure extended settings save message passes string for saved flag by @NB-Core in #1239
- docs: remove task list and make Raspberry Pi Docker guide purely instructional by @NB-Core in #1240
- chore(deps-dev): bump phpunit/phpunit from 9.6.29 to 9.6.33 by @dependabot[bot] in #1241
- fix: avoid deprecated reflection access in doctrine test stub by @NB-Core in #1243
- chore(tests): remove Doctrine ArrayCache stub and rely on PSR-6 ArrayAdapter by @NB-Core in #1244
- chore: remove doctrine/annotations dependency and document attribute-based mappings by @NB-Core in #1245
- chore: prepare doctrine orm 3 migration by @NB-Core in #1246
- chore: enable ORM 3 field declaration reporting by @NB-Core in #1247
- docs: clarify attribute metadata in Doctrine bootstrap docs by @NB-Core in #1248
- Normalize DBAL row counts for DBAL4 by @NB-Core in #1250
- refactor: align mail DBAL usage and document DBAL4 inventory by @NB-Core in #1251
- docs: add 2.0.3 changelog entry by @NB-Core in #1253
- chore: bump version to 2.0.3 by @NB-Core in #1254
- Doctrine annotations to php attributes by @NB-Core in #1252
New Contributors
- @dependabot[bot] made their first contribution in #1241
Full Changelog: v2.0.2...v2.0.3
v2.0.2 Release
What's Changed
- Handle null clan description conversion by @NB-Core in #1230
- Guard mount buff handling during new day by @NB-Core in #1231
- Fix mercenary camp heal navigation output initialization by @NB-Core in #1232
- Bump logd version to 2.0.2 by @NB-Core in #1233
- docs: realign changelog for 2.0.2 release by @NB-Core in #1234
Full Changelog: v2.0.1...v2.0.2
v2.0.1 - small bugfixes compared to 2.0.0
What's Changed
- fix: respect button state in user special actions by @NB-Core in #1219
- Add contributing guide by @NB-Core in #1220
- Add issue templates by @NB-Core in #1221
- Add pull request template aligning with contribution checklist by @NB-Core in #1222
- fix: cast motd id to integer by @NB-Core in #1223
- fix: parameterize MOTD save queries by @NB-Core in #1224
- fix: guard fightbar legacy alias by @NB-Core in #1225
- fix: sanitize debug sort parameter by @NB-Core in #1226
- fix: require cron bitmask argument by @NB-Core in #1227
- docs: warn administrators to secure cron.php by @NB-Core in #1228
- fix: ensure motd pollitem uses default voting controls by @NB-Core in #1229
Full Changelog: v2.0.0...v2.0.1
For ease of everything, version number stayed the same (tiny changes)
v2.0.0 Release
Legend of the Green Dragon v2.0.0
As this release is pretty major, please refer to all of the newly added .md files for more information.
There have been many changes being made under the hood, and I think this bringst the old DP-core, which has been stale for over 10 years, back into the current time in terms of technology and also structure.
The intention was to clean up, refactor, and make quality of life improvement while keeping the entire old modulestack working (OK, mostly, PHP8 incompatible things will still break, i.e., as will modules who do improper things but got away with it for now).
A big, big, part of the acutal work was done by AI, name OpenAI Codex, which helped me solo pump out this many things that I would never had the time nor power to do, as the work on the core fork I have has also been relatively stale the last years.
Well, now we're doing a big jump foward.
Still, an admin can just copy the entire files (which are more, yeah) to their webhost, push in the config for SQL and get it working as before.
More sophisticated people with a dedicated (virtual or not) server, or a docker environment, can make much more out of it now, and CLI things with doctrine migrations i.e. are a first great use.
Major Features
- Doctrine ORM + DBAL now back the core with a dedicated migrations tree and PHP 8.3 baseline, providing a modern schema-managed upgrade path.
- The async/Jaxon pipeline delivers incremental commentary, mail auto-refresh, and tunable rate limits to keep players updated without full page reloads.
- Twig is the default renderer with caching support, while LoGDnet and async admin alerts surface operational issues faster.
Key Refactors
- Broad PSR-4 namespacing, Composer autoloading, stricter typing, and a reorganized configuration tree simplify maintenance and extension work.
- New static-analysis and CI pipelines (PHPStan, Psalm, PHPUnit) enforce code quality throughout the development workflow.
Intentional Limits
- Doctrine adoption coexists with legacy wrappers and session arrays so not every table is represented by an entity yet; the legacy APIs remain in place for module compatibility while the migration continues.
Upgrade Summary
- Require PHP 8.3+, Composer, and a writable cache directory before you begin.
- Back up the database and existing files, deploy the new code, and keep your
config/directory in place. - Run the legacy installer bridge (1.x → 2.x) followed by
php bin/doctrine migrations:migrateto align schemas; CLI-only flows are documented for advanced admins. - Revisit async, mail, and Twig configuration defaults, migrate custom SQL to Doctrine prepared statements, and verify key gameplay flows once the upgrade completes.
Documentation
- UPGRADING.md — complete step-by-step upgrade checklist, configuration changes, and post-upgrade validation.
- docs/Doctrine.md — EntityManager bootstrap, repository usage, and migration configuration details.
- docs/LegacyWrappers.md — overview of the remaining legacy wrapper functions and guidance for porting modules to the namespaced API.
- docs/Deprecations.md — current deprecations, replacement APIs, and policy for removal timelines.
What's Changed since the last release candidate
- fix: default to clean install when no tables detected by @NB-Core in #1124
- fix: ensure clan removal uses integer acctid by @NB-Core in #1126
- fix: guard template validation in prefs by @NB-Core in #1125
- Fix time offset preview casting for user preferences by @NB-Core in #1127
- refactor: localize mount form singletons by @NB-Core in #1128
- fix: guard module pref keys before regex checks by @NB-Core in #1129
- fix: avoid int cast warnings in mount editor by @NB-Core in #1130
- fix: keep mount buff rounds field string-safe by @NB-Core in #1131
- fix: align dbwrapper settings include by @NB-Core in #1132
- fix: guard cron bootstrap notifications by @NB-Core in #1133
- fix: configure error handler before settings include by @NB-Core in #1134
- fix: harden error handler bootstrap guard by @NB-Core in #1135
- fix: defer cron Settings bootstrap by @NB-Core in #1136
- fix: guard legacy settings include by @NB-Core in #1137
- docs: clarify cron job configuration by @NB-Core in #1138
- fix: clarify malformed email change timestamp handling by @NB-Core in #1139
- fix: default gamelog sorting by date desc by @NB-Core in #1140
- feat: add severity metadata to gamelog by @NB-Core in #1141
- fix: restore default gamelog ordering by @NB-Core in #1142
- docs: append unreleased changelog entries by @NB-Core in #1143
- docs: document CLI-only upgrade workflow by @NB-Core in #1144
- Fix example village shop output formatting by @NB-Core in #1145
- fix: use nav headers for forest reward by @NB-Core in #1146
- refactor: drop deprecated colored headline proxy by @NB-Core in #1147
- fix: render header and footer in example shop by @NB-Core in #1148
- Fix Doctrine parameter usage in example forest reward module by @NB-Core in #1149
- Fix example forest reward gold placeholder by @NB-Core in #1150
- Document example modules in changelog by @NB-Core in #1151
- fix: parameterize async commentary refresh by @NB-Core in #1152
- Refactor Http::postParse to expose parameter bindings by @NB-Core in #1153
- fix: parameterize settings persistence by @NB-Core in #1154
- refactor: sanitize module installer operations by @NB-Core in #1155
- fix: sanitize module reinstall query by @NB-Core in #1157
- test: guard database stub alias by @NB-Core in #1156
- fix: harden referer tracking by @NB-Core in #1158
- Harden mail compose recipient lookups by @NB-Core in #1159
- fix: correct optional chaining in ajax polling notifications by @NB-Core in #1160
- fix(async): initialize mail baseline separately by @NB-Core in #1161
- fix: avoid commentary warnings for non-comment scripts by @NB-Core in #1162
- fix: seed async mail polling baseline by @NB-Core in #1163
- fix: preserve ajax mail baseline in fallback polling by @NB-Core in #1164
- fix: cache window focus state for async notifications by @NB-Core in #1165
- fix: refresh focus state before sending notifications by @NB-Core in #1166
- refactor: parameterize gamelog inserts by @NB-Core in #1167
- fix: support stubbed PlayerSearch lookups by @NB-Core in #1168
- fix: prefer namespaced PlayerSearch in bank transfers by @NB-Core in #1169
- docs: clarify legacy lib usage policy by @NB-Core in #1172
- Use PlayerSearch service directly in donor lookup by @NB-Core in #1171
- fix: format bank transfer confirmation by @NB-Core in #1170
- Refactor admin user lookup to PlayerSearch service by @NB-Core in #1173
- fix: normalize ret handling in donators admin page by @NB-Core in #1174
- Organize paylog navigation by year and add yearly totals by @NB-Core in #1175
- fix: coerce donation form fields to safe strings by @NB-Core in #1176
- fix: guard paylog payment_date parsing by @NB-Core in #1177
- fix: show yearly summary only for unfiltered paylog by @NB-Core in #1178
- fix: guard donor link item number placeholder by @NB-Core in #1179
- feat: replace ban user XML lookup with Jaxon handler by @NB-Core in #1181
- fix: harden paylog legacy payload handling by @NB-Core in #1182
- Refactor mail compose to use PlayerSearch service by @NB-Core in #1180
- fix: quote affected users onclick attributes by @NB-Core in #1183
- feat: modernize mail navigation layout by @NB-Core in https://githu...
v2.0.0-rc17
What's Changed
- fix: delay lgi cookie warning until persistent failure by @NB-Core in #1101
- fix: sanitize referral nav parameter by @NB-Core in #1102
- docs: sync Docker guide with PHP 8.3 base image by @NB-Core in #1103
- docs: reorganize hook reference by @NB-Core in #1104
- fix: use PvP service for inn bartender list by @NB-Core in #1105
- fix: normalize bartender color practice input by @NB-Core in #1106
- docs: reference DragonPrime Reborn resource hub by @NB-Core in #1107
- docs: reference spiritual successor in README by @NB-Core in #1108
- Update DragonPrime resource description in README by @NB-Core in #1109
- Auto-detect Doctrine-managed upgrades in the installer by @NB-Core in #1110
- fix: preserve installer upgrade selection by @NB-Core in #1111
- fix: harden installer upgrade version handling by @NB-Core in #1113
- fix: refine installer upgrade detection by @NB-Core in #1114
- fix: keep installer upgrade dropdown aligned with detected version by @NB-Core in #1115
- fix: preserve installer table prefix detection by @NB-Core in #1116
- Allow installer stage 5 to run with existing dbconnect.php by @NB-Core in #1117
- feat: modernize installer confirmation layout by @NB-Core in #1118
- fix: clarify installer upgrade options by @NB-Core in #1119
- Fix Stage 7 detection messaging for clean installs by @NB-Core in #1120
- fix(installer): refresh dbconnect prefix before migrations by @NB-Core in #1121
- fix: resync dbconnect prefix during stage9 migrations by @NB-Core in #1122
- fix: ensure installer upgrade fallback handles detected version by @NB-Core in #1123
Full Changelog: v2.0.0-rc16...v2.0.0-rc17
v2.0.0-rc16
What's Changed
- refactor: migrate root entrypoints to service APIs by @NB-Core in #1068
- refactor: replace legacy helper usage in entrypoints by @NB-Core in #1069
- refactor: adopt service layer in entry scripts by @NB-Core in #1070
- Refactor legacy entry points to service APIs by @NB-Core in #1071
- Refactor entrypoints to drop legacy lib includes by @NB-Core in #1072
- refactor: replace legacy helpers in entry scripts by @NB-Core in #1073
- refactor: use DateTime::checkDay in entry points by @NB-Core in #1074
- refactor: migrate core pages to Output services by @NB-Core in #1075
- fix: preserve original settings reference in create entrypoint by @NB-Core in #1076
- Refactor translation calls in top-level pages by @NB-Core in #1077
- fix: load newline converter in clan hall by @NB-Core in #1080
- Refactor entrypoints to use Output service by @NB-Core in #1079
- refactor: replace legacy getsetting helper in entrypoints by @NB-Core in #1081
- refactor: use camelCase random helpers by @NB-Core in #1082
- refactor: rename Random helpers to camelCase by @NB-Core in #1083
- Fix root PHP entry bootstrap and import order by @NB-Core in #1084
- Declare strict types in root PHP entry points by @NB-Core in #1085
- fix: guard optional request parameters by @NB-Core in #1087
- refactor: route legacy random helpers through Random by @NB-Core in #1086
- Ensure dynamic output strings use explicit formats by @NB-Core in #1088
- fix: address strict type mismatches in user input flows by @NB-Core in #1089
- fix: harden configuration request parsing by @NB-Core in #1090
- fix: prevent array to string warning when formatting output by @NB-Core in #1091
- refactor: guard Http input values by @NB-Core in #1092
- fix: accept integer gender for DK titles by @NB-Core in #1093
- Modernize legacy page controllers to use service singletons by @NB-Core in #1094
- fix: realign legacy entry points by @NB-Core in #1095
- refactor: modernize settings and output usage in core scripts by @NB-Core in #1096
- fix: correct schema argument for comment moderation by @NB-Core in #1097
- fix: prevent mail reply from closing window by default by @NB-Core in #1098
- fix: guard password inputs during account creation by @NB-Core in #1099
- fix: ensure email input is string for validator by @NB-Core in #1100
Full Changelog: v2.0.0-rc15...v2.0.0-rc16
v2.0.0-rc15
What's Changed
- test: cover mount caching by @NB-Core in #1051
- test: cover module manager cache clearing by @NB-Core in #1050
- test: cover module reinstall cache invalidation by @NB-Core in #1053
- test: cover force uninstall cache clearing by @NB-Core in #1052
- Add coverage for system mail notifications by @NB-Core in #1054
- test: cover ModuleManager force uninstall outcomes by @NB-Core in #1055
- fix: support legacy Doctrine dbconnect config by @NB-Core in #1056
- fix: ensure Doctrine bootstrap loads legacy globals by @NB-Core in #1057
- fix: restore db prefix registration during migrations by @NB-Core in #1058
- fix: ensure installer migrations honor DB prefix by @NB-Core in #1059
- Fix Stage 6 dbconnect parsing loop to avoid false buffer values by @NB-Core in #1061
- fix: honor table prefix for doctrine migrations by @NB-Core in #1060
- fix: prevent stage6 from rewriting modern dbconnect.php by @NB-Core in #1062
- Update installer module community link by @NB-Core in #1063
- fix: drop oldcreatureexp from installer creatures by @NB-Core in #1064
- fix: guard installer seeding on existing data by @NB-Core in #1065
- fix: parameterize installer superuser creation by @NB-Core in #1066
- fix: align installer admin allowed navs default by @NB-Core in #1067
Full Changelog: v2.0.0-rc14...v2.0.0-rc15
v2.0.0-rc14
What's Changed
- fix: stabilise account expiration thresholds by @NB-Core in #1027
- fix: update city travel battle nav call by @NB-Core in #1028
- fix: guard sender status lookup for deleted accounts by @NB-Core in #1029
- fix: ensure fetchAssoc handles cached associative rows by @NB-Core in #1030
- test: cover module user prefs cache invalidation by @NB-Core in #1031
- test: flesh out installer stages by @NB-Core in #1032
- fix: adjust installer affected rows check by @NB-Core in #1033
- Fix installer stage6 success flag initialisation by @NB-Core in #1034
- test: assert installer stage7 behavior by @NB-Core in #1035
- test: expand installer stage 8 coverage by @NB-Core in #1036
- test: ensure stage 5 remains locked on conflict by @NB-Core in #1037
- test: cover installer write failure session state by @NB-Core in #1038
- test: assert stage7 redirect header by @NB-Core in #1039
- test: cover installer overwrite confirmation by @NB-Core in #1040
- test: cover installer stage10 existing superuser by @NB-Core in #1041
- chore: remove phpstan phar artifacts by @NB-Core in #1042
- fix: correct optional chaining syntax by @NB-Core in #1043
- chore: exclude async js from phpcs by @NB-Core in #1044
- Add upgrade path coverage to installer stage 5 test by @NB-Core in #1045
- test: cover installer stage 4 connection failure by @NB-Core in #1046
- Add coverage for modified installer license handling by @NB-Core in #1048
- Add regression test for installer stage6 legacy migration by @NB-Core in #1049
- Fix installer harness to use Doctrine stub connection by @NB-Core in #1047
Full Changelog: v2.0.0-rc13...v2.0.0-rc14