]> BookStack Code Mirror - website/blob - content/blog/2024/bookstack-release-v24-05.md
Wrote out most core v24.05 content
[website] / content / blog / 2024 / bookstack-release-v24-05.md
1 +++
2 categories = ["Releases"]
3 tags = ["Releases"]
4 title = "BookStack Release v24.05"
5 date = 2024-05-10T13:36:00Z
6 author = "Dan Brown"
7 image = "/images/blog-cover-images/cc-by-sa-3/seven-sisters-cliffs-david-iliff.jpg"
8 slug = "bookstack-release-v24-05"
9 draft = false
10 +++
11
12 Todo - Doc Updates
13
14 Todo
15
16 * [Update instructions](/docs/admin/updates)
17 * [GitHub release page](https://github.com/BookStackApp/BookStack/releases/tag/v24.05)
18
19 **Upgrade Notices**
20
21 Todo
22 Todo - Copy to updates page
23
24 - **Item** - Note
25
26 TODO - Video
27 <!-- {{<pt 8w3F4aWqH3MProMwyQBf2d>}} -->
28
29
30 ### Framework & PHP Requirement Update
31
32 The core aim of this release was to update the core framework BookStack uses from
33 [Laravel](https://laravel.com/) 9 to 10 to help us stay on modern and supported dependencies.
34 This requires a bump to the minimum version of PHP we support, from 8.0 to 8.1.
35 This is something we typically do on a yearly basis, and keeps somewhat inline with the official
36 support lifetime of PHP versions, where PHP 8.0 stopped being officially supported late last year.
37
38 Apart from the PHP requirement change, this should not really have any affect to normal BookStack use
39 but it ensures we're keeping things maintained and on a modern codebase.
40
41 ### Command-based PDF Export Option
42
43 By default in BookStack we use a PHP-based PDF renderer ([DomPDF](https://github.com/dompdf/dompdf))
44 and have long provided a more accurate alternative via [wkhtmltopdf](https://www.bookstackapp.com/docs/admin/pdf-rendering/#using-wkhtmltopdf).
45 Unfortunately, wkhtmltopdf has become somewhat deprecated and is therefore dropping out of system repositories.
46 Additionally, there were security considerations when using wkhtmltopdf in BookStack.
47
48 As an alternative to we've now added a generic command-based option for BookStack.
49 Since PDF rendering can be a complex element, with different solutions having different strengths and weaknesses,
50 we didn't want to support a specific new PDF renderer, but instead provide an interface that could be 
51 used with many external options. This option allows you to define a command, which will take an input HTML
52 file argument, and an output PDF file argument, which BookStack will then call during an export.
53 Existing solutions can then be directly called via this, or wrapped to work with this command-based interface.
54
55 Right now we have a couple of examples in our documentation, but these are marked unsafe due to security concerns.
56 In the future we'd like to expand upon, and potentially build/maintain, some safer alternative examples.
57
58 TODO - Link to docs page above
59
60 ### Change to Default Link Styles
61
62 Within page content links are now underlined by default.
63
64 TODO - Image of link
65
66 We generally try to avoid change that can affect core user content within BookStack, but this
67 has been done to improve default accessibility by providing an additional indicator of a link upon
68 just the color, which may not be easy to identify to all.
69
70 If you'd prefer your links to remain non-underlined you can easily override this change by adding the following
71 to your "Custom HTML Head Content" customization setting:
72
73 TODO - Code here
74
75 ### OIDC Userinfo Endpoint Support
76
77 When OIDC authentication was in use, BookStack would previously only read claims direction from the supplied
78 user ID token. While this worked fine in most cases, some auth platforms would only provide certain details 
79 via the userinfo endpoint. In this release we add wider support of the OIDC spec by making use of the userinfo 
80 endpoint where needed. If not all details are in the token, BookStack will call & use the userinfo endpoint data.
81 This means existing OIDC use-cases should remain speedy and unaffected, with extra calls only being made during 
82 authentication when needed.
83
84 The userinfo endpoint will be fetched via autodiscovery if enabled, otherwise it can also be defined via env options 
85 using an `OIDC_USERINFO_ENDPOINT` option. Our [OIDC documentation](/docs/admin/oidc-auth/) has been updated to include this.
86
87 Thanks to [@LukeShu](https://github.com/BookStackApp/BookStack/pull/4726) for starting the implementation of this one.
88
89 ### Simple Registration Honeypot
90
91 For instances with open registration, spam can be a problem. While we don't want get deep into the ever moving scope
92 of spam prevention, this release adds a simple honeypot field to the registration to hopefully help at least
93 filter some of the simplest spam bots out.
94
95 Thanks to [@nesges](https://github.com/BookStackApp/BookStack/pull/4970) for contributing this addition.
96
97 ### Audit Log API Endpoint
98
99 We continue to expand the capabilities of the API in this release with the addition of a 
100 list API endpoint for the audit log. This endpoint provides much the same data you'd be able
101 to access when visiting the in-app Audit Log as an administrator. The endpoint requires
102 the API user to have both "Manage app settings" and "Manage users" role permission since
103 audit log data may contain sensitive information, and is unfiltered by item-level permissions.
104
105 This addition should be helpful to those that need external insight into BookStack activities, 
106 and those that like to standardise & centralise such audit data.
107
108 ### LDAP Custom TLS CA Cert Option
109
110 When using LDAP along with TLS, to encrypt connections, it could be common that custom
111 certificates are used by the authentication platform. Such custom certificates could then throw
112 errors due to not being issues by a trusted/known authority. While custom certificates could technically be configured 
113 via openldap, the methods/steps needed for this are not clear nor obvious.
114 In this release, we now support a `LDAP_TLS_CA_CERT` option that can be set so BookStack will use a
115 certain CA certificate, or a directory of many CA certificates.
116
117 You can find further details of this option in our [updated LDAP documentation](https://www.bookstackapp.com/docs/admin/ldap-auth/).
118
119 ### Translations
120
121 A big thanks once again to all the wonderful word weavers below that have helped translate BookStack
122 since that last feature release:
123
124 - Name - *LAng - x words*
125
126 *\* Word counts are those tracked by Crowdin, indicating original EN words translated.*
127
128 ### Next Steps
129
130 In BookStack the default WYSIWYG page editor (and recent description/comment editor) is powered by library
131 called TinyMCE. They've recently [changed the project](https://github.com/tinymce/tinymce/discussions/9496)
132 to a GPLv2+ license which is incompatible with our MIT license for the project as a working whole.
133 This is quite a big deal for us since it's such a core part of the project.
134 I've opened a BookStack [discussion for this here](https://github.com/BookStackApp/BookStack/issues/4908).
135 Over the next release cycle I'll be diving into this further to get a better idea of what route we'll take.
136
137 Last month we had the release of Ubuntu 24.04, for which we quickly published a [new install script](/docs/admin/installation/#ubuntu-2404),
138 but to accompany this I'd like to record a new video guide, perhaps going a little bit deeper this time into topics like updates
139 and other general maintenance tasks. 
140
141 ### Full List of Changes
142
143 **Released in v24.05**
144
145 * Updated app framework from Laravel 9 to 10. ([#4903](https://github.com/BookStackApp/BookStack/pull/4903))
146 * Added new command-based PDF export option. ([#4969](https://github.com/BookStackApp/BookStack/pull/4969), [#4732](https://github.com/BookStackApp/BookStack/issues/4732))
147 * Added Audit Log API list endpoint. ([#4987](https://github.com/BookStackApp/BookStack/pull/4987), [#4316](https://github.com/BookStackApp/BookStack/issues/4316))
148 * Added LDAP option to provide a custom CA cert. Thanks to [@mmoore2012](https://github.com/BookStackApp/BookStack/pull/4913). ([#4985](https://github.com/BookStackApp/BookStack/pull/4985), [#4913](https://github.com/BookStackApp/BookStack/pull/4913))
149 * Added OIDC userinfo endpoint support. Thanks to [@LukeShu](https://github.com/BookStackApp/BookStack/pull/4726). ([#4955](https://github.com/BookStackApp/BookStack/pull/4955), [#4726](https://github.com/BookStackApp/BookStack/pull/4726), [#3873](https://github.com/BookStackApp/BookStack/issues/3873))
150 * Added simple registration form honeypot. Thanks to [@nesges](https://github.com/BookStackApp/BookStack/pull/4970). ([#4970](https://github.com/BookStackApp/BookStack/pull/4970))
151 * Added Scala to list of supported languages in code blocks. ([#4953](https://github.com/BookStackApp/BookStack/issues/4953))
152 * Updated content links to be underlined by default for accessibility. ([#4939](https://github.com/BookStackApp/BookStack/issues/4939))
153 * Updated dev Dockerfile with improvements. Thanks to [@C0rn3j](https://github.com/BookStackApp/BookStack/pull/4895). ([#4895](https://github.com/BookStackApp/BookStack/pull/4895))
154 * Updated included images with extra compression to save data. Thanks to [@C0rn3j](https://github.com/BookStackApp/BookStack/pull/4904). ([#4904](https://github.com/BookStackApp/BookStack/pull/4904))
155 * Updated JS build system to split markdown-focused packages to own file. ([#4930](https://github.com/BookStackApp/BookStack/pull/4930), [#4858](https://github.com/BookStackApp/BookStack/issues/4858))
156 * Updated LDAP user filter option to support new placeholder format. ([#4967](https://github.com/BookStackApp/BookStack/issues/4967))
157 * Updated minimum required PHP version from 8.0 to 8.1. ([#4894](https://github.com/BookStackApp/BookStack/pull/4894), [#4893](https://github.com/BookStackApp/BookStack/issues/4893))
158 * Updated translations with latest Crowdin changes. ([#4890](https://github.com/BookStackApp/BookStack/pull/4890))
159 * Fixed code direction in WYSWIYG editor lacking direction support in code editor. ([#4943](https://github.com/BookStackApp/BookStack/issues/4943))
160 * Fixed difference of line-heights for paragraphs in tables between editor and page view. ([#4960](https://github.com/BookStackApp/BookStack/issues/4960))
161 * Fixed extra space at the beginning of a translation. Thanks to [@johnroyer](https://github.com/BookStackApp/BookStack/pull/4972). ([#4972](https://github.com/BookStackApp/BookStack/pull/4972))
162 * Fixed failing drag and drop of attachments into editor on Chrome. ([#4975](https://github.com/BookStackApp/BookStack/issues/4975))
163 * Fixed incorrect tag counts when tagged items are in the recycle bin. ([#4892](https://github.com/BookStackApp/BookStack/issues/4892))
164 * Fixed WYSIWYG object embeds in the editor showing image toolbar button. ([#4974](https://github.com/BookStackApp/BookStack/issues/4974))
165 * Fixed WYSIWYG table cell format handling which could clear styles unexpectedly. ([#4964](https://github.com/BookStackApp/BookStack/issues/4964))
166
167 **Released in v24.02.3**
168
169 * Fixed non-working "Open Link In..." option for description editors. ([#4925](https://github.com/BookStackApp/BookStack/issues/4925))
170 * Fixed failed reference loading when references are from recycle bin items. ([#4918](https://github.com/BookStackApp/BookStack/issues/4918))
171 * Fixed failed code block rendering when a code language was not set. ([#4917](https://github.com/BookStackApp/BookStack/issues/4917))
172 * Updated page editor max content widths to align with page display.  ([#4916](https://github.com/BookStackApp/BookStack/issues/4916))
173
174 **Released in v24.02.2**
175
176 * New version to address missed version and asset changes in v24.02.1. ([#4889](https://github.com/BookStackApp/BookStack/issues/4889))
177
178 **Released in v24.02.1**
179
180 * Updated translations with latest Crowdin changes. ([#4877](https://github.com/BookStackApp/BookStack/pull/4877))
181 * Updated breadcrumb book & shelf lists to be name-ordered. ([#4876](https://github.com/BookStackApp/BookStack/issues/4876))
182 * Updated MFA inputs to avoid auto-complete. Thanks to [@ImMattic](https://github.com/BookStackApp/BookStack/pull/4849). ([#4849](https://github.com/BookStackApp/BookStack/pull/4849))
183 * Fixed non-breaking spaces causing combined words in page navigation. ([#4836](https://github.com/BookStackApp/BookStack/issues/4836))
184 * Fixed page navigation click not jumping to headers in nested collapsible blocks. ([#4878](https://github.com/BookStackApp/BookStack/issues/4878))
185
186 ----
187
188 <span style="font-size: 0.8em;opacity:0.9;">Header Image Credits: <span>Photo by <a href="https://commons.wikimedia.org/wiki/File:Seven_Sisters_Panorama,_East_Sussex,_England_-_May_2009.jpg">David Iliff (CC-BY-SA-3)</a> - Image Modified</span></span>