Please Note when Installing or Updating
The site/config.php file available on previous releases has been removed. Whether you are spinning a new installation or updating your existing one, follow the instructions on the top of the site/config.sample.php file. Essentially, fill in your environment's DB connection details, rename the file to config.php, and upload to your server's site/ directory.
Overview
This is fairly major update and bug-fix release, addressing issues reported or discovered since the release of version 3.0.3, as well as some dating back a couple of years.
This release features a full conversion to prepared statements for querying the database, along with some other new features and enhancements:
- Added the ability to manage hero banner images that display on a competition's homepage (contributor feature).
- Added a language toggle so visitors can switch the site's display language at runtime, separate from default language set by Admins (contributor feature).
- Added the new 2026 Brewers Association style guidelines.
- Added the ability for Admins to set a custom session (auto-logout) timeout for the installation. Updated the auto logout time to reset so that genuine activity that never generates a full browser refresh can still ping the server and resync the visible countdown.
- Entry fee amounts now support more foreign currency formats without being cut off.
Notable bug fixes:
- Fixed a bug that could produce incorrect results when using the BJCP 2025 or AABC 2025 style sets.
- Corrected data affected by a double/triple HTML-entity-encoding bug.
- Fixed BJCP entry-count reporting to follow BJCP's official judged, received, paid, total precedence.
- Fixed the BJCP export incorrectly counting medal winners as Best of Show entries when no BOS panel was held.
- Updated judge ID validation to accept the newer BJCP TEMP#### ID format.
- Corrected several errors in BJCP judge point calculations, including sessions being counted more than once, the daily point cap not always applying correctly, and BOS-only judges not receiving credit for their session.
- Fixed a display bug that prevented descriptors from showing on the full scoresheet display and download.
- Fixed garbled special characters (like curly quotes turning into strange symbols) showing up in more places: entry names and comments, Custom Categories, Mods, Sponsors, and judge evaluation data, including in archived competitions.
- Strengthened judging table assignments to prevent an entry from ever being recorded on two tables at once.
- Fixed minor display issues on archived judging tables and scores pages.
- Minor security hardening.
Other Contributor Additions and Integrations
- fix: URL-encode encrypted contact token in modal link (Issue #1708) by @delight-f in #1720
- feat: add select/deselect all checkbox to table style list by @delight-f in #1719
- fix: show Scores - Manage to top-level admins when judging numbers are obfuscated by @delight-f in #1717
- Expand Entry Fee DB column to better support foreign currencies by @auspisec in #1714
- banner image management by @jckeske in #1702
- fix: participant edit-save fatal on no-prefix installs by @delight-f in #1722
- fix: preserve lowercase surname particles in name capitalization by @delight-f in #1723
- Add Korean Won (KRW) currency support by @auspisec in #1710
- fix: normalize stored competition dates to UTC epoch before saving by @delight-f in #1718
- Support Multi-Language Installation and User Language Toggle by @auspisec in #1712
- perf(images): convert hero banner images to WebP q80 by @delight-f in #1729
- fix(styles): include AABC2022 beer/mead styles in style_convert() under AABC2025 by @delight-f in #1743
- fix(styles): apply AABC2025 mixed-version predicate to remaining style queries by @delight-f in #1738
- fix(styles): include AABC2022 beer/mead styles in AABC2025 active-style queries by @delight-f in #1737
- fix(purge): report success when purge fully succeeds by @delight-f in #1741
- fix: reset MysqliDb bind state when a query fails by @delight-f in #1731
- Add GNU GPL v3 License by @delight-f in #1742
- fix: guard session user resolution against null lookups by @delight-f in #1733
New Contributors
- @delight-f made their first contribution in #1720
Full Changelog: v3.0.3...v3.1.0