Hardening release from a code audit — includes a likes-counter fix that matters on non-MySQL databases.
Changes
- Cross-database likes counter: the
discussions.likes_countsync no longer uses MySQL-onlyCAST(... AS SIGNED)raw SQL. It now uses Eloquent's atomicincrement()/decrement(), so it works on PostgreSQL and SQLite too (previously a like on those engines threw and left the count permanently stale). Floored at 0. - Like/unlike listeners are container-resolved (
Class@method) — no manualresolve()per event. - The hero "newest member" field is cached for 5 minutes like the scoreboard counts, so it no longer adds a DB round-trip to every page load; the two ForumResource extenders are merged.
- Live-scores controller injects its Guzzle client instead of constructing one per request.
- Removed an unconditional
ini_set('memory_limit')that ran on every web request (it's a CLI/build concern). - The composer trigger opens the composer via the core component loader instead of a hard-coded
.IndexPage-newDiscussionDOM node. - Removed two unused locale keys.
Safe to update — no migrations.