Releases: LibreBooking/librebooking
v4.1.0
v4.1.0 (2026-02-05)
Bug Fixes
-
Add command-line usage instructions for CombineDbFilesTask and UpgradeDbTask causing phpstan issue (
bea840d) -
Add default value handling in ConfigurationFile::GetKey method (
0f785cb) -
Add null check in EnsureNull method (
1bda603) -
Api group update will create a new group rather than updating the group (
b939389) -
Availability edit button disappears after editing schedule (
f12d65f) -
Cannot access offset type on ShibbolethConfigKeys (
a853e09) -
Changed wrong auth details response code to 401 (
da4d633) -
Database migration for 4.0 (
0b6c844) -
Display current reservation on tablet view and refine layout (#803,
570b889) -
Edited plugin config example to use nested layout (
1b14b35) -
Error in keycloak/oauth url generation (
eb548ff) -
Error in reservation.start.time.constraint (
98b72b4) -
Exporter page broken after config validation (
f7c6c3d) -
Flatpickr week start day ignored for Starts Today schedules (
a46c31a) -
GetConfigGroup and ConfiKeys in API (
12fc5dc) -
Ignore invalid configs in ManageConfiguration (
711e01e) -
Include conditionally displaying title and description (#941,
46d3069) -
Informational log message changed to more appropriate level (DEBUG instead of ERROR) (
dadca6b) -
Null error on unknown key (
a8363f1) -
Reorder PSR12 rule (
7c3473a) -
Show option key rather than values on config wrong choice (
e35a030) -
Standardize log messages and improve error handling in configuration tests (
0214c6d) -
Trumbowyg fails to load when use.local.js.libs is set to true (
ccaba0b) -
Update environment variable keys and add resource options in config files (
5cbd1a1) -
Update manual database setup documentation (
9c175bf) -
Use BooleanConverter for TABLET_VIEW_ALLOW_RESERVATIONS (
d941886) -
Use ConfigKey instead of hard-coded name (
62a1e9b) -
Use default logging level of 'error' (
0e850d3) -
Use lower-case log_level (
44ca668) -
Wrong section for slack token (
f407878) -
auth: Prevent auto-registration when self-registration is disabled (
9f24a5a) -
auth: Updated plugin configuration keys into nested structures (
1cfe196) -
AutocompleteUser: Handle potential null values (
d90b7ab) -
chore: Resolve many html escape issues (
c8a6396) -
config: Preserve unknown subkeys in original structure for validation and improve error logging for invalid config values (
723f238) -
config: Update configurator to new plugin config (
3fe962b) -
htaccess: Prevent redirect loop for /Web path without trailing slash (
ad8bde2) -
image-upload: Use correct directory for uploading image (
88cb94a) -
ldap: Rename debug configuration key for consistency (
f8efae3) -
ldap: Update default search filter to be optional with improved description (
7c17c7c) -
pdf: Enhance PDF generation error handling and improve table formatting (
b165000) -
pdf: Handle default values for repeat options and reservation details in PDF generation (
fda8a76) -
profile: Resolve loading the profile page when multiple attributes (
e5e423f) -
profile: Resolve saving of unchecked checkbox in the profile (
2672584) -
reservation: Resolve html rendering in announcement emails (
1fad3be) -
reservation: Resolve weekly series checkbox status on load (
d7a62b4) -
Resources: Improve string retrieval logic (
7e27ac5) -
schedule: Correct date display and layout issues (
d684695) -
templates: Replace regex check with empty check in Italian email templates (
1e71f81) -
test: Update configuration key test (
3444e6c) -
tests: Update symbolic link creation and improve PHPUnit error handling (
ae628bc)
Chores
-
Update phpstan-baseline.neon (
200517a) -
git: Enforce LF line endings (
85a929f) -
git: Normalize all line endings to LF (
b211a9a) -
phpstan: Update for 2.1.25 release (
86594c1) -
phpstan: Update phpstan-baseline.neon (
79ac102) -
scripts: Remove jQuery Timepicker plugin files (
1632653) -
templates: Remove unused Timepicker includes (
9d25543)
Code Style
-
Enhance PHP-CS-Fixer rules with Symfony standards (
a42d5f8) -
Redesign API help page with Bootstrap and improved UI (
3f13add) -
vscode: Add initial
.vscode/settings.json(afae984)
Continuous Integration
-
Mark the 'develop' branch as a release branch (
02c4e20) -
Prevent merge-commits in a PR ([
ebe5589](https://github.co...
v4.0.0
Highlights
- New configuration file format. Please read the documentation for more
details. Thanks to @lucs7 for all of their work. - Initial work on getting PHPStan setup and working. We have level 1 working
with no baseline and are currently using level 2 with a baseline. - Add configuration option to be able to choose the resource contact from a
drop-down list of registered users. - Language selector now working on the login page.
- New date selector library used, thanks @labmecanicatec
What's Changed
- style(manage_resources): don't default collapse CustomAttributes by @JohnVillalovos in #682
- fix: EmailMessage.php variable defined after use by @lucs7 in #683
- fix: captchas not working by @lucs7 in #684
- fix(participation): add missing ParticipationNotification import by @JohnVillalovos in #686
- chore: ensure all config variables are in both config files by @JohnVillalovos in #689
- fix(reservation): fix the delete reason not submitted when a reservation is not approved. by @belcirelk in #696
- fix(reservation): pdf generation is not working in French by @belcirelk in #697
- fix(API): stop storing multiple custom attributes of same type for Reources by @JohnVillalovos in #681
- chore: Replace jQuery UI datepicker with flatpickr by @labmecanicatec in #756
- fix(login): Language selector is not working due to httponly cookie by @belcirelk in #763
- fix: allow setting language for non-HTTPS by @JohnVillalovos in #764
- chore: remove exec permission from some files by @JohnVillalovos in #765
- chore: add text to the "More Resource Actions" drop-down by @JohnVillalovos in #766
- refactor: timezone handling and remove jstz library by @labmecanicatec in #769
- feat: optional: resource contact may be chosen via a drop-down list of users by @JohnVillalovos in #770
- Fix for reminders on cancelled reservations by @cgutteridge in #773
- Fix for phpunit tests and additional error check by @lucs7 in #774
- fix: error in WebAuthenticationTest and Facebook login by @lucs7 in #781
New Contributors
- @belcirelk made their first contribution in #696
Full Changelog: v3.0.3...v4.0.0
v3.0.3
Highlights
- Improvements to the Installation guide at https://librebooking.readthedocs.io/en/latest/INSTALLATION.html
What's Changed
- fix(API): add endpoint to get resource types by @JohnVillalovos in #663
- remove old docs by @JohnVillalovos in #665
- fix(schedule): datepicker conflicts with url validation by @lucs7 in #661
- Fix for #671 / Adjusting css to enable datepicker styling by @lucs7 in #673
- doc: remove trailing whitespace from *.rst files by @JohnVillalovos in #674
- fix(CustomAttribute): handle invalid data by @JohnVillalovos in #662
- fix: allow guests to book reservations by @JohnVillalovos in #668
- update(docs): update installation documentation: cloning, composer setup, and database config by @labmecanicatec in #675
- docs: add link to API docs, use notes, update PHP version by @JohnVillalovos in #676
Full Changelog: v3.0.2...v3.0.3
v3.0.2
Highlights
- Now have a documentation/home page website at https://librebooking.readthedocs.io/
What's Changed
- docs: add a
.readthedocs.ymlfile by @JohnVillalovos in #647 - docs: remove 'beta' designation of the
developbranch by @JohnVillalovos in #649 - docs: fix theme options list by @ClemCordier in #650
- Fix date and autogrow issues by @lucs7 in #657
- fix: correct datepicker issue introduced in e0cfcbc by @lucs7 in #658
- fix: don't attempt to reserve view-only resource by @JohnVillalovos in #656
New Contributors
- @ClemCordier made their first contribution in #650
Full Changelog: v3.0.1...v3.0.2
v3.0.1
v3.0.0
Highlights
- Bootstrap 5 Framework and Bootstrap icons now used.
- Modernization of the user interface.
- Integration of libraries such as Datatables and Trumbowyg.
- Migrate external libraries to be pulled in via composer instead of storing the code for those projects in the repository. Also upgraded versions of external libraries used.
- Improvements to the CI system.
- Thanks to @labmecanicatec and @lucs7 for all their work this release.
What's Changed
- dev-bootstrap5 by @labmecanicatec in #406
- Dev bootstrap5 by @labmecanicatec in #409
- Resurrect unit tests by @hakito in #408
- Switch to utf8mb4 by @hakito in #415
- Replace use of deprecated ldap_connect function with supported one by @nrundle in #422
- Mail translations by @hakito in #423
- PICKME Refactor Email system to builder pattern by @hakito in #426
- Revert " PICKME Refactor Email system to builder pattern" by @effgarces in #441
- Dev bootstrap5 by @labmecanicatec in #443
- Mail translations 2nd attempt by @hakito in #450
- Fix checkin/out button on Reservation page by @njm506 in #458
- Improved SAML instructions by @cgutteridge in #456
- fix: add secure and httponly flags to cookies and also add samsite 'l… by @VitorVieira20 in #461
- fix: add uri and params validations in guest-reservation, view-schedu… by @VitorVieira20 in #462
- Update Server.php by @cgutteridge in #465
- Update emailheader.tpl by @cgutteridge in #466
- New Styling plugin by @JohnXLivingston in #467
- Show ical subscription link only for logged in users by @lucs7 in #468
- feature: Allow hiding specific fields in the registration form (#367) by @VitorVieira20 in #469
- Fix Facebook login, smarty upgrade, Fix error on reservation page, when accessory is NULL on max or min. by @lennert1986 in #448
- docs: add information about the Discord channel by @JohnVillalovos in #475
- Dev bootstrap5 by @labmecanicatec in #477
- Added keycloak as external auth provider by @lucs7 in #482
- Updated js for datatables and resource admin view and editor fordescription/notefield by @lucs7 in #478
- Dev bootstrap5 by @labmecanicatec in #486
- Dev bootstrap5 by @labmecanicatec in #489
- chore(CAS): Use '.' instead of '_' for 'cas.logout.servers' by @JohnVillalovos in #519
- ci: add a 'stale' automatic workflow by @JohnVillalovos in #524
- ci(stale): don't require label to mark as stale by @JohnVillalovos in #525
- chore(ci): enable manual triggering of stale workflow by @JohnVillalovos in #526
- chore: setup issue templates by @JohnVillalovos in #527
- chore(issue_template): fix filename of 01-bug_report.md by @JohnVillalovos in #528
- docs: update Discord invite link by @JohnVillalovos in #529
- chore(stale): increase operations-per-run value by @JohnVillalovos in #530
- chore(authentication): support Drupal >= 10.1 hash algorithm by @JohnVillalovos in #531
- Add Oauth2 auth Provider by @larsl-net in #499
- Cleanup documentation and enable linter for the Markdown files. by @JohnVillalovos in #535
- chore: update composer.json and validate it in CI by @JohnVillalovos in #536
- chore: add '[Enhancement]' to Feature Request issue titles by @JohnVillalovos in #539
- fix: database 2.9 schema upgrade was invalid by @JohnVillalovos in #541
- chore: remove usage of deprecated
E_STRICTby @JohnVillalovos in #542 - Cleanup and resolve deprecations in
lib/Common/SmartyPage.phpby @JohnVillalovos in #545 - chore: enable error reporting for
config.devel.phpby @JohnVillalovos in #546 - chore: fix deprecated message in unit tests. by @JohnVillalovos in #550
- chore(tpl/Schedule): add comment headers for development use by @JohnVillalovos in #551
- chore: run Rector 'php81' rule on 'Jobs/' by @JohnVillalovos in #559
- chore: run Rector 'php81' rule on 'phing-tasks/' by @JohnVillalovos in #560
- chore: run Rector 'php81' rule on 'Controls/' by @JohnVillalovos in #561
- chore(.gitignore): ignore everything in
.phpunit.cache/by @JohnVillalovos in #562 - feat: add granular API access based on groups by @JohnVillalovos in #552
- test: default timezone must be 'America/Chicago' for unit tests by @JohnVillalovos in #564
- Revert "test: default timezone must be 'America/Chicago' for unit tests" by @JohnVillalovos in #565
- chore: fix another Smarty deprecation issue by @JohnVillalovos in #566
- chore: update Discord link again. by @JohnVillalovos in #569
- Fix for url validation issue with public schedule/calendar by @lucs7 in #570
- chore: fix deprecation warning by @JohnVillalovos in #571
- keep description and note edit from closing when losing focus by @lucs7 in #572
- chore: add CONTRIBUTING.md file by @JohnVillalovos in #575
- Fix .ics File by @supaeasy in #577
- Minor style improvements, removal of unnecessary code by @labmecanicatec in #579
- Trumbowyg is implemented in announcements by @labmecanicatec in #580
- ci: initial tox setup and environment to run commitizen by @JohnVillalovos in #583
- Composer migrate deps by @labmecanicatec in #585
- chore(resource creation): don't grant access by default by @JohnVillalovos in #554
- Resolve #558: Enable configurable mobile views and auto-scroll by @labmecanicatec in #586
- chore: drop docker-related objects by @colisee in #589
- New Export plugin: by @JohnXLivingston in #582
- fix: unclosed div in tpl\Dashboard\announcements.tpl by @labmecanicatec in #590
- fix(layout): Adjust tooltip and inline element alignment for custom footer by @labmecanicatec in #591
- docs(ldap): Show example ldap hosts with 'ldap://' prefix by @JohnVillalovos in #592
- refactor: fix PHPDoc annotations and register additional classes in SmartyPage by @labmecanicatec in #601
- docs(readme): modernize structure, add demo, checklist features, and badge section by @lucs7 in #602
- fix: register 'ResourcePermissionType' in Smarty by @JohnVillalovos in #603
- chore: remove font-awesome in favor of Bootstrap 5 icons by @JohnVillalovos in #605
- chore: remove unused LESS styles from Web/css/less by @JohnVillalovos in #606
- chore: remove deprecated external login images by @JohnVillalovos in #607
- refactor: replace colorpicker.js with Bootstrap 5 color input by @JohnVillalovos in #608
- chore(css): Move entityChoices styles to librebooking.css by @JohnVillalovos in #609
- refactor: monitor-display.css & monitor-display-schedule.tpl by @JohnVillalovos in #610
- chore: stop loading unused CSS files in preparation for removal by @JohnVillalovos in #611
- feat: Enable searchClear for filterCapacity by @JohnVillalovos in #612
- refactor(schedule.css): Remove @media (max-width: 1000px) by @JohnVillalovos in #613
- chore: remove unused assets from ColorPicker and C...
2.8.6.2 - GA4 Fix
The previous 2.8.6.2 had an issue with the Google Analytics 4 integration, if previously downloaded you can simply replace the globalfooter.tpl file in the tpl folder.
Check the commit history https://github.com/LibreBooking/app/commits/master for all the changes (there are many)
Thanks to everyone that has contributed, your efforts allow this project to keep going.
2.8.6.1
2.8.6
Librebooking now has PHP8 support
Many bugs, updates and even new features were added but the list is a bit long so for further details please check the commit history https://github.com/LibreBooking/app/commits/develop
Thanks to all that have contributed without you this release would not be possible.