WebCalendar v1.9.13 Release Notes
New Features / Major Changes
- New Bootstrap 5 single-page installer wizard -- Replaced the legacy install/ directory with a modern
installer in wizard/ featuring step-by-step AJAX navigation, real-time validation, database upgrade
detection, headless CLI mode for automated deployments, and post-install security recommendations (#608) - Switched rich text editor from CKEditor v4 to TinyMCE 7.x -- CKEditor v4 is no longer supported and has
open vulnerabilities; CKEditor v5 is not open source, so TinyMCE was chosen as the replacement - Dark/light theme support -- Added user option to choose between dark and light themes
- PostgreSQL improvements -- Full support for new installs and upgrades with PostgreSQL, including dev
Dockerfile support - Unique PHP session names per install directory -- Allows multiple WebCalendar installs on the same
server without login session conflicts - Added complete-translation.py tool -- Assists in completing partial translations using OpenAI
Security
- Fixed XSS vulnerability in report name
- Fixed CSRF vulnerability in reject_entry.php
- Fixed privilege escalation in user profile -- Users editing their own profile could set themselves as
administrator
Bug Fixes
- Fix upgrade to v1.9.12 not extending the length of the user password field
- Fix JSON parsing for layers
- Fix reminders sent at the wrong time when recurring events cross DST boundaries
- Fix "remember me" on login page (#527)
- Fix undo button in UAC access.php (#530)
- Fix week view display issues (#529)
- Fix JavaScript global variables in edit_entry.php referring to non-distinct arrays
- Fix "Export All" checkbox on the export page
- Fix category bugs: could not create global categories (#510), global categories not loading after
cat_owner NULL change, error when creating a new category (#496), could not set category for event (#507) - Fix advanced search crash when category filter was used
- Fix username bug on groups.php -- usernames with special characters prevented editing groups
- Fix PHP error when rejecting an event with no participants
- Fix broken install/session when home directory contains invalid session name characters
- Fix alignment of mini-calendars on month view
- Fix purge.php -- missing database reference in FROM clause
- Fix edit_entry.php -- PHP 8 no longer considers empty string equal to 0
- Fix deleted users still being assignable to groups
- Fix Event class -- allow null $_dueDate to prevent fatal error in month.php
PHP 8 Compatibility
- Extensive fixes for PHP 8.0, 8.2, and 8.3 deprecation warnings and type errors across the codebase
- Removed legacy mssql and mysql extension code (not supported in PHP 8); added blob handling for mysqli
- Replaced deprecated HTML attributes and tags with HTML5 equivalents
Installer / Wizard
- SQLite3 fixes for dbi4php.php and SQL used during install (#587)
- Refactored headless installer with environment variable support and improved error handling
- Added button in installer to view PHP details (version, modules, etc.)
- Removed requirement to run MariaDB shell for install permissions
UI / UX Improvements
- Improved base image styling and typography
- Smooth scrolling instead of jumping
- Better paragraph spacing and multi-line alignment
- Layout fixes across calendar views
- Converted elements to elements
Translations / i18n
- Updated German translation with "Default Visibility" (#593) and completed missing entries
- Updated and converted Spanish translation to UTF-8
- Updated Polish (UTF-8) and French translations with missing entries
- Fixed HTTP charset header -- Apache was sending UTF-8 regardless of the HTML meta tag, causing rendering
issues for non-UTF-8 charsets (#448) - Standardized translation file naming and encoding; all new language files are UTF-8
Dependencies
- Bumped actions/checkout from 2 to 6
- Bumped actions/cache from 3 to 4
- Bumped docker/build-push-action from 5 to 6
- Bumped phpunit/phpunit to 9.6.16
- Updated bootstrap-icons to latest version
- Updated composer.json / composer.lock
CI / DevOps
- Added new GitHub workflow to perform automated test install with SQLite3
- Added PHP syntax checking GitHub workflow
- Docker: added PostgreSQL dev container, removed PHP 7 Docker files, updated Dockerfile
- Updated Docker Compose documentation to use docker compose (v2)
Code Quality / Maintenance
- Numerous spelling corrections, redundant code removal, and code style standardizations
- Added unit tests for Event.php class
- Ensured admin.php remembers the DEFAULT_VISIBILITY setting (#592)
- Added select_db call before queries in dbi_query function