github geoffhumphrey/brewcompetitiononlineentry v3.1.0-09092027
Release Version 3.1.0

2 hours ago

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.

A previous 3.1.0 release (v3.1.0-09072026) had an issue with a 3-byte UTF-8 byte-order-mark (EF BB BF), resulting from a single space before the <?php tag in the config.sample.php file. When rendered in the browser, there is a white band just under the nav bar. Under the hood, this one little space in the file created havoc with how the browser interpreted display.

This hotfix release corrects that issue.

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

Full Changelog: v3.0.3...v3.1.0

Don't miss a new brewcompetitiononlineentry release

NewReleases is sending notifications on new releases.