Repository navigation
v1.9.0
[1.9.0] - 2026-10-12
Release summary: This minor release hardens comment ingestion with a honeypot anti-spam field and per-IP throttling, completes CSP nonce coverage across every inline admin script, and lands a large static-analysis-driven cleanup that corrects hundreds of PHPDoc/type annotations across the codebase.
Added
- Comment honeypot anti-spam – Hidden
websitefield on the blog single-post template silently accepts (without storing) bot-submitted comments - Per-IP comment throttling – Sliding-window rate limit (10 per 10 minutes) returns
429 Too Many RequestswithRetry-After - CSP nonces on inline scripts – Every inline
<script>in admin/auth layouts now carries a nonce from theCSP_NONCEconstant - Data request
request_updatedmigration – New CLI-onlyinstall/migrate-data-request-updated-column.php
Changed
- DAOs use explicit
SELECT_COLUMNSconstants / column lists instead ofSELECT * AppConfig::writeConfiguration()embeds the resolved payload inlineLogError/PassPhraseKeyswitch private static access fromstatic::toself::
Fixed
- CSRF token timing on privacy policy (token regenerated only after POST validation)
index.phpfails cleanly with HTTP 500 when the app is unconfigured- Optional-dependency guards (
BombScanner,UserDao, DB handles, WMI) DbMySQLireturnsfalseon failed prepared statements- CIDR netmask, elapsed-week, plugin sort-order, and unique-id cast edge cases
Security
- CSP
script-srcnow includes the shared nonce source - Honeypot detection and per-IP throttling reduce comment spam and abuse
- PHPStan level-1 static analysis clean across the release payload
Codename
Maleo Senkawor (retained) – Honoring Macrocephalon maleo, the critically endangered megapode endemic to Sulawesi, Indonesia.
Previous release: v1.8.3 · Commits since: 172
See CHANGELOG.md for the full changelog.