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 October day 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)
22 <!-- {{<pt hfo6x4Bkw6j1eRqcYpMQYC>}} -->
25 ### New (Alpha) WYSIWYG Editor Option
27 This release introduces the new WYSIWYG editor! This is the first step of a longer term plan
28 to replace the existing (TinyMCE based) WYSIWYG editor [due to licensing changes](/blog/9-years-of-bookstack/#project-status-update-new-editor).
29 Initially our goal is to match the existing editor functionality & layout as close as possible
30 to ensure a stable & familiar upgrade path, so it should look much the same:
32 TODO - Image of new editor
34 This is an initial alpha revision of this editor though, 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.
36 This new editor option can be enabled as a site default for new pages, or can be switched ot when in the editor if permissions allow:
38 TODO - Image of controls
40 Be wary though that the new editor right now can be less reliable, and specific content support can differ leading to loss of formatting in edge cases that may have been previously allowed.
41 I don't advise it's use in production scenarios right now, it's primarily in this release for wider testing to gain feedback for.
43 This new editor is quite a significant undertaking. The editor controls UI is 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 in 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 and sustainability quite a lot as we mature this editor over the next few releases.
45 Going forward, we'll continue to improve and stabilize this editor over the next few releases 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. Making this a stable and easy switch-over for 99% of users is super important to me.
47 ### Advanced Search Term Negation
49 It's now possible to negate exact, filter and tag search terms when performing searches in BookStack!
50 This is done using a `-` prefix with the term. For example, a search of:
53 -"dog" -[Priority] -{is_restricted}
56 Will search for content that:
58 - does **not** contain the text "dog"
59 - that is **not** tagged with a "Priority" named tag
60 - which does **not** have permissions set
62 This opens up search to a whole range of more advanced scenarios.
63 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).
65 Our [search documentation](/docs/user/searching/#negated-terms) has been updated to reflect negated terms.
67 ### Browser Search (OpenSearch) Support
69 BookStack will now advertise OpenSearch support to browsers.
70 I don't mean the Amazon fork of ElasticSearch, but [the standard](https://developer.mozilla.org/en-US/docs/Web/OpenSearch) used to tell
71 browsers about the search functions of a website.
72 For example, FireFox will now show an instance as an option to add for searching:
74 TODO - Screenshot of add option in firefox
76 When added, I can then at any point perform a search via my BookStack instance using the FireFox URL/Search bar. While this was possible to set up before, this automates much of the tedious setup work.
77 Different browsers use this in different ways though, so how it presents in other browsers may differ.
79 A big thanks to [@maximilian-walter](https://github.com/BookStackApp/BookStack/pull/5198) for providing this feature to BookStack.
81 ### R & SAS Code Block Support
83 Another pair of code languages have been introduces as support code block languages, enabling proper syntax highlight support. The languages are R and SAS:
85 TODO - Screenshot of languages
87 ### PDF Timeout Option
89 In the [last release we added](/blog/bookstack-release-v24-05/#command-based-pdf-export-option)
90 the command-based PDF export option which allowed PDF exports to be generated using a custom command.
91 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 not configurable:
94 # Allow 30 seconds for the export process instead of the default 15
95 EXPORT_PDF_COMMAND_TIMEOUT=30
98 ### Improved User Invite Failure Feedback
100 Sending user invites, when users are created by admins, is quite commonly the first use of emails
101 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.
102 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.
104 TODO - Image of error view
106 This should hopefully avoid a frustrating start to many initial uses of BookStack.
110 This release adds a new language: Welsh 🏴!
111 This is thanks to Crowdin member "KateBaber"'s continuous work over the last 10 months to develop out these Welsh translations.
113 Of course there's been plenty of other great efforts by our translators, so a big thanks to the
114 band of brilliant bilinguals below that have made contributions since our last feature release:
117 - Michele Bastianelli (makoblaster) - *Italian - 1971 words*
119 *\* Word counts are those tracked by Crowdin, indicating original EN words translated.*
123 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 likely also look to migrate more of our original JS code to TS.
125 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 focusing on maintenance work and like-for-like replacements of existing functionality.
127 ### Full List of Changes
129 **Released in v24.10**
131 * Added ability to configure the PDF export command timeout. ([#5119](https://github.com/BookStackApp/BookStack/issues/5119))
132 * Added new Lexical based editor. ([#5058](https://github.com/BookStackApp/BookStack/pull/5058))
133 * Added not operator to search. ([#4536](https://github.com/BookStackApp/BookStack/issues/4536))
134 * Added OpenSearch support. Thanks to [@maximilian-walter](https://github.com/BookStackApp/BookStack/pull/5198). ([#5198](https://github.com/BookStackApp/BookStack/pull/5198))
135 * Added SAS and R code language support. ([#5206](https://github.com/BookStackApp/BookStack/issues/5206))
136 * Added search term negation support. ([#5239](https://github.com/BookStackApp/BookStack/pull/5239))
137 * Added Welsh language to language list. ([#5240](https://github.com/BookStackApp/BookStack/issues/5240))
138 * Updated dompdf and bacon-qr-code libraries to new major versions. ([#5222](https://github.com/BookStackApp/BookStack/issues/5222))
139 * Updated page editor type to always exist in API and database. ([#5117](https://github.com/BookStackApp/BookStack/issues/5117))
140 * Updated translations with latest Crowdin changes. ([#5188](https://github.com/BookStackApp/BookStack/pull/5188))
141 * Updated user account creation to provide better email failure feedback. ([#5195](https://github.com/BookStackApp/BookStack/issues/5195))
142 * Fixed drifting search icon on smaller screen sizes. ([#5204](https://github.com/BookStackApp/BookStack/issues/5204))
144 **Released in v24.05.4**
146 * Updated API docs with consistent parameter types. ([#5183](https://github.com/BookStackApp/BookStack/issues/5183))
147 * Updated default content iframe embed max-width to align with other content types. ([#5130](https://github.com/BookStackApp/BookStack/issues/5130))
148 * Updated LDAP group sync to query via full DN.
149 * Updated translations with latest Crowdin changes. ([#5118](https://github.com/BookStackApp/BookStack/pull/5118))
150 * Fixed books read API response not applying visibility control to chapter contents.
151 * Fixed API docs users response showing extra property. ([#5178](https://github.com/BookStackApp/BookStack/issues/5178))
152 * Fixed database error thrown when using out dev docker setup. ([#5124](https://github.com/BookStackApp/BookStack/issues/5124))
153 * Fixed RTL display issues with tasklist checkboxes. ([#5134](https://github.com/BookStackApp/BookStack/issues/5134))
155 **Released in v24.05.3**
157 * Updated translations with latest Crowdin changes. ([#5065](https://github.com/BookStackApp/BookStack/pull/5065))
158 * Updated callouts with LTR text handling where supported. ([#5104](https://github.com/BookStackApp/BookStack/issues/5104))
159 * Updated project PHP and JavaScript dependencies.
160 * Fixed blocked diagrams.net loading when using a custom URL that includes a port. ([#5107](https://github.com/BookStackApp/BookStack/issues/5107))
161 * Fixed OIDC incorrectly calling userinfo endpoint when valid empty groups provided. ([#5101](https://github.com/BookStackApp/BookStack/issues/5101))
162 * 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))
163 * Fixed HTML code block highlighting when custom self-closing tags are used. ([#5078](https://github.com/BookStackApp/BookStack/issues/5078))
164 * 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))
166 **Released in v24.05.2**
168 * Fixed initial page publish changelog message not being saved if set. ([#5056](https://github.com/BookStackApp/BookStack/issues/5056))
169 * Fixed incorrect WYSIWYG code shortcut reference. Thanks to [@bradenterpstra01](https://github.com/BookStackApp/BookStack/pull/5036). ([#5036](https://github.com/BookStackApp/BookStack/pull/5036))
170 * Added role create/update validation to warn about too-long external auth ID values. ([#5037](https://github.com/BookStackApp/BookStack/issues/5037))
171 * Updated GIF thumbnail generation to no support animation, to avoid issues with large-frame-count GIFs. ([#5029](https://github.com/BookStackApp/BookStack/issues/5029))
172 * Updated translations with latest Crowdin changes. ([#5022](https://github.com/BookStackApp/BookStack/pull/5022))
173 * Updated backup code description text to clarify their use. ([#5017](https://github.com/BookStackApp/BookStack/issues/5017))
174 * 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))
176 **Released in v24.05.1**
178 * Updated PHP dependencies.
179 * Updated routes with IP-based rate limiting. ([#4993](https://github.com/BookStackApp/BookStack/issues/4993))
180 * Updated email confirmation flow to not require email submission form.
181 * Updated translations with latest Crowdin changes. ([#4994](https://github.com/BookStackApp/BookStack/pull/4994))
182 * Updated WYSIWYG alignment handling to also consider table `align` attributes. ([#5011](https://github.com/BookStackApp/BookStack/issues/5011))
183 * Fixed attachment upload validation errors appearing as JSON. ([#4996](https://github.com/BookStackApp/BookStack/issues/4996))
184 * 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))
185 * Fixed non-visible MFA setup titles in dark mode. ([#5018](https://github.com/BookStackApp/BookStack/issues/5018))
186 * Fixed outdated path in visual theme system guidance. ([#4998](https://github.com/BookStackApp/BookStack/issues/4998))
187 * Fixed potential cache permission issues by reverting cache location. ([#4999](https://github.com/BookStackApp/BookStack/issues/4999))
191 <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>