2 categories = ["Releases"]
4 title = "BookStack Release v24.10"
5 date = 2024-10-09T12:00:00Z
7 image = "/images/blog-cover-images/cc-by-sa-4/pallastunturi-simo-rasanen.webp"
8 slug = "bookstack-release-v24-10"
12 This laggard of a release finally lingers to deployment this day in October bringing the first alpha-state inclusion of the new WYSIWYG editor, which has been the main development focus, but that doesn't stop a few other goodies being included for this release too!
14 * [Update instructions](/docs/admin/updates)
15 * [GitHub release page](https://github.com/BookStackApp/BookStack/releases/tag/v24.10)
17 TODO - Update Translators List
19 <!-- {{<pt hfo6x4Bkw6j1eRqcYpMQYC>}} -->
22 ### New (Alpha) WYSIWYG Editor Option
24 This release introduces the new WYSIWYG editor! This is the first step of a longer term plan
25 to replace the existing (TinyMCE based) WYSIWYG editor [due to licensing changes](/blog/9-years-of-bookstack/#project-status-update-new-editor).
26 Initially our goal is to match the existing editor functionality & layout as close as possible
27 to ensure a stable & familiar upgrade path, so it should look much the same:
29 
31 This is an initial alpha revision of this editor so there are some known omissions & weak-points along with a range of issues to solve, which I'm listing & taking feedback for [on a GitHub issue here](https://github.com/BookStackApp/BookStack/issues/5245). The biggest limitation right now is the lack of specific mobile support.
33 This new editor option can be enabled as a site default for new pages, or can be switched to when in the editor if permissions allow:
35 
36 
38 Be wary though that, in its current state, the new editor can be less reliable, and specific content support can differ leading to loss of formatting in edge cases that may have been previously allowed.
39 I don't advise its use in production scenarios right now, it's primarily in this release for wider testing to gain feedback.
41 This new editor is quite a significant undertaking. The editor UI controls are completely custom built from scratch and the core editing is based upon the [Lexical library](https://lexical.dev/), although I made the decision to fork the lexical codebase into BookStack quite late during development due to some incompatible core design decisions made in lexical. This quite massively increases the maintenance surface area, but also provides us more control and possibilities around a fundamental part of BookStack. I'm thinking that as my funding continues to grow, it might even be possible to fund someone to help work part time specifically on some of the growing JavaScript/TypeScript components. This is all a bit of an experimental jump though, so I'll be thinking about maintainability & sustainability quite a lot as we mature this editor over the next few releases.
43 Going forward, we'll continue to improve and stabilize this editor to get it into a beta status, before eventually later making it the default WYSIWYG option. Then, in quite a few releases later, we'll remove the existing TinyMCE based editor. It's super important to me that this is a stable and easy switch-over for 99% of users.
45 ### Advanced Search Term Negation
47 It's now possible to negate exact, filter, and tag search terms when performing searches in BookStack!
48 This is done using a `-` prefix with the term. For example, a search of:
51 -"dog" -[Priority] -{is_restricted}
54 Will search for content that:
56 - does **not** contain the exact text "dog"
57 - that is **not** tagged with a tag named "Priority"
58 - which does **not** have permissions set
60 This opens up search to a whole range of more advanced scenarios.
61 Note that this is not supported for normal search terms though due to ambiguity in expectations and syntax, and negated terms are not currently reflected in the search UI (although they can still be used via search boxes).
63 Our [search documentation](/docs/user/searching/#negated-terms) has been updated to reflect negated terms.
65 ### Browser Search Support via OpenSearch
67 BookStack will now advertise OpenSearch support to browsers.
68 I don't mean the Amazon fork of ElasticSearch, but [the standard](https://developer.mozilla.org/en-US/docs/Web/OpenSearch) used to tell
69 browsers about the search functions of a website.
70 For example, FireFox will now show an instance as an option to add for searching:
72 
74 When added you can then, at any point, perform a search via the added BookStack instance using the FireFox URL/search bar. While this was possible to set up before, OpenSearch support automates much of the tedious setup work.
75 Different browsers use this in different ways though, so how it presents in other browsers may differ.
77 A big thanks to [@maximilian-walter](https://github.com/BookStackApp/BookStack/pull/5198) for providing this feature to BookStack.
79 ### R & SAS Code Block Support
81 Another pair of code languages have been introduced as supported code block languages, enabling proper syntax highlight support. The languages are R and SAS:
83 
85 ### PDF Timeout Option
87 In the [last release we added](/blog/bookstack-release-v24-05/#command-based-pdf-export-option)
88 the command-based PDF export option which allowed PDF exports to be generated using a custom command.
89 One limitation of this was the default 15 second process timeout, which was found to be fairly limiting in some scenarios, so this timeout is now configurable:
92 # Allow 30 seconds for the export process instead of the default 15
93 EXPORT_PDF_COMMAND_TIMEOUT=30
96 ### Improved User Invite Failure Feedback
98 Sending user invites, when users are created by admins, is quite commonly the first use of emails
99 within a new BookStack instance but if email has not been configured correctly & tested, this can result in an error when BookStack tries to send the invite. Previously this would just result in a generic error screen, leaving the admin needing to hunt around in error logs to understand what went wrong.
100 From this release we now specifically show an error notification to explain the scenario, while returning the admin back to the user creation form with the existing data-prefilled.
102 
104 This should hopefully avoid a frustrating start to many initial uses of BookStack.
106 ### Translations 🏴
108 This release adds a new language: Welsh!
109 This is thanks to Crowdin member "KateBaber"'s continuous work over the last 10 months to develop out these Welsh translations.
111 Of course there's been plenty of other great efforts by our translators, so a big thanks to the
112 band of brilliant bilinguals below that have made contributions since our last feature release:
115 - Michele Bastianelli (makoblaster) - *Italian - 1971 words*
117 *\* Word counts are those tracked by Crowdin, indicating original EN words translated.*
121 Efforts will be focused on maturing the new editor over the next release cycle, addressing issues raised in its wider testing. Build of the new editor introduces TypeScript into the BookStack codebase, so I'll probably look to migrate more of our original JS code to TS.
123 It'd be nice to get back to some other features though, so I may also pick out a long-standing desired feature to focus on otherwise this year looks a bit thin due to so far focusing on maintenance work and like-for-like replacements of existing functionality.
125 ### Full List of Changes
127 **Released in v24.10**
129 * Added ability to configure the PDF export command timeout. ([#5119](https://github.com/BookStackApp/BookStack/issues/5119))
130 * Added new Lexical based editor. ([#5058](https://github.com/BookStackApp/BookStack/pull/5058))
131 * Added not operator to search. ([#4536](https://github.com/BookStackApp/BookStack/issues/4536))
132 * Added OpenSearch support. Thanks to [@maximilian-walter](https://github.com/BookStackApp/BookStack/pull/5198). ([#5198](https://github.com/BookStackApp/BookStack/pull/5198))
133 * Added SAS and R code language support. ([#5206](https://github.com/BookStackApp/BookStack/issues/5206))
134 * Added search term negation support. ([#5239](https://github.com/BookStackApp/BookStack/pull/5239))
135 * Added Welsh language to language list. ([#5240](https://github.com/BookStackApp/BookStack/issues/5240))
136 * Updated dompdf and bacon-qr-code libraries to new major versions. ([#5222](https://github.com/BookStackApp/BookStack/issues/5222))
137 * Updated page editor type to always exist in API and database. ([#5117](https://github.com/BookStackApp/BookStack/issues/5117))
138 * Updated translations with latest Crowdin changes. ([#5188](https://github.com/BookStackApp/BookStack/pull/5188))
139 * Updated user account creation to provide better email failure feedback. ([#5195](https://github.com/BookStackApp/BookStack/issues/5195))
140 * Fixed drifting search icon on smaller screen sizes. ([#5204](https://github.com/BookStackApp/BookStack/issues/5204))
142 **Released in v24.05.4**
144 * Updated API docs with consistent parameter types. ([#5183](https://github.com/BookStackApp/BookStack/issues/5183))
145 * Updated default content iframe embed max-width to align with other content types. ([#5130](https://github.com/BookStackApp/BookStack/issues/5130))
146 * Updated LDAP group sync to query via full DN.
147 * Updated translations with latest Crowdin changes. ([#5118](https://github.com/BookStackApp/BookStack/pull/5118))
148 * Fixed books read API response not applying visibility control to chapter contents.
149 * Fixed API docs users response showing extra property. ([#5178](https://github.com/BookStackApp/BookStack/issues/5178))
150 * Fixed database error thrown when using out dev docker setup. ([#5124](https://github.com/BookStackApp/BookStack/issues/5124))
151 * Fixed RTL display issues with tasklist checkboxes. ([#5134](https://github.com/BookStackApp/BookStack/issues/5134))
153 **Released in v24.05.3**
155 * Updated translations with latest Crowdin changes. ([#5065](https://github.com/BookStackApp/BookStack/pull/5065))
156 * Updated callouts with LTR text handling where supported. ([#5104](https://github.com/BookStackApp/BookStack/issues/5104))
157 * Updated project PHP and JavaScript dependencies.
158 * Fixed blocked diagrams.net loading when using a custom URL that includes a port. ([#5107](https://github.com/BookStackApp/BookStack/issues/5107))
159 * Fixed OIDC incorrectly calling userinfo endpoint when valid empty groups provided. ([#5101](https://github.com/BookStackApp/BookStack/issues/5101))
160 * Fixed image replacement being case-sensitive when it should not be. Thanks to [@DanielGordonIT](https://github.com/BookStackApp/BookStack/pull/5096). ([#5096](https://github.com/BookStackApp/BookStack/pull/5096)) ([#5095](https://github.com/BookStackApp/BookStack/issues/5095))
161 * Fixed HTML code block highlighting when custom self-closing tags are used. ([#5078](https://github.com/BookStackApp/BookStack/issues/5078))
162 * Fixed testing when custom ALLOWED_IFRAME_SOURCES is set. Thanks to [@mueller-contria](https://github.com/BookStackApp/BookStack/pull/5069). ([#5069](https://github.com/BookStackApp/BookStack/pull/5069)) ([#5068](https://github.com/BookStackApp/BookStack/issues/5068))
164 **Released in v24.05.2**
166 * Fixed initial page publish changelog message not being saved if set. ([#5056](https://github.com/BookStackApp/BookStack/issues/5056))
167 * Fixed incorrect WYSIWYG code shortcut reference. Thanks to [@bradenterpstra01](https://github.com/BookStackApp/BookStack/pull/5036). ([#5036](https://github.com/BookStackApp/BookStack/pull/5036))
168 * Added role create/update validation to warn about too-long external auth ID values. ([#5037](https://github.com/BookStackApp/BookStack/issues/5037))
169 * Updated GIF thumbnail generation to no support animation, to avoid issues with large-frame-count GIFs. ([#5029](https://github.com/BookStackApp/BookStack/issues/5029))
170 * Updated translations with latest Crowdin changes. ([#5022](https://github.com/BookStackApp/BookStack/pull/5022))
171 * Updated backup code description text to clarify their use. ([#5017](https://github.com/BookStackApp/BookStack/issues/5017))
172 * Updated docker-compose.yml to remove deprecated version. Thanks to [@michaelortnerit](https://github.com/BookStackApp/BookStack/pull/5052). ([#5052](https://github.com/BookStackApp/BookStack/pull/5052))
174 **Released in v24.05.1**
176 * Updated PHP dependencies.
177 * Updated routes with IP-based rate limiting. ([#4993](https://github.com/BookStackApp/BookStack/issues/4993))
178 * Updated email confirmation flow to not require email submission form.
179 * Updated translations with latest Crowdin changes. ([#4994](https://github.com/BookStackApp/BookStack/pull/4994))
180 * Updated WYSIWYG alignment handling to also consider table `align` attributes. ([#5011](https://github.com/BookStackApp/BookStack/issues/5011))
181 * Fixed attachment upload validation errors appearing as JSON. ([#4996](https://github.com/BookStackApp/BookStack/issues/4996))
182 * Fixed incorrect notification preferences URL in email. Thanks to [@KiDxS](https://github.com/BookStackApp/BookStack/pull/5008). ([#5008](https://github.com/BookStackApp/BookStack/pull/5008), [#5005](https://github.com/BookStackApp/BookStack/issues/5005))
183 * Fixed non-visible MFA setup titles in dark mode. ([#5018](https://github.com/BookStackApp/BookStack/issues/5018))
184 * Fixed outdated path in visual theme system guidance. ([#4998](https://github.com/BookStackApp/BookStack/issues/4998))
185 * Fixed potential cache permission issues by reverting cache location. ([#4999](https://github.com/BookStackApp/BookStack/issues/4999))
189 <span style="font-size: 0.8em;opacity:0.9;">Header Image Credits: <span>Photo by <a href="Source: https://commons.wikimedia.org/wiki/File:Path_to_Pallastunturi_in_autumn_color_display,_Muonio,_Lapland,_Finland,_2021_September.jpg">Ximonic (Simo Räsänen) (CC-BY-SA-4)</a> - Image Modified</span></span>