]> BookStack Code Mirror - website/blob - content/blog/2024/bookstack-release-v24-10.md
Added v24.10 post images, proof-read post content
[website] / content / blog / 2024 / bookstack-release-v24-10.md
1 +++
2 categories = ["Releases"]
3 tags = ["Releases"]
4 title = "BookStack Release v24.10"
5 date = 2024-10-09T12:00:00Z
6 author = "Dan Brown"
7 image = "/images/blog-cover-images/cc-by-sa-4/pallastunturi-simo-rasanen.webp"
8 slug = "bookstack-release-v24-10"
9 draft = false
10 +++
11
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!
13
14 * [Update instructions](/docs/admin/updates)
15 * [GitHub release page](https://github.com/BookStackApp/BookStack/releases/tag/v24.10)
16
17 TODO - Update Translators List
18 TODO - PT video
19 <!-- {{<pt hfo6x4Bkw6j1eRqcYpMQYC>}} -->
20
21
22 ### New (Alpha) WYSIWYG Editor Option
23
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:
28
29 ![View of the new WYSIWYG editor, with toolbar containing a range of options towards the top, and with a range of content displayed within. The formats menu dropdown is showing presenting a range of heading & other format options](/images/2024/10/new-wysiwyg.png)
30
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.
32
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:
34
35 ![View of the page editor draft menu with a "Switch to new WYSIWYG" option highlighted, with text below it stating "(In Alpha Testing)"](/images/2024/10/new-wysiwyg-change-option.png)
36 ![View of the "Default page Editor" BookStack setting, with the mouse hovering a "New WYSIWYG (alpha testing)" option](/images/2024/10/new-wysiwyg-default-option.png)
37
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.
40
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.
42
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.
44
45 ### Advanced Search Term Negation
46
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:
49
50 ```
51 -"dog" -[Priority] -{is_restricted}
52 ```
53
54 Will search for content that:
55
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
59
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).
62
63 Our [search documentation](/docs/user/searching/#negated-terms) has been updated to reflect negated terms.
64
65 ### Browser Search Support via OpenSearch
66
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:
71
72 ![Screenshot of the URL bar in FireFox, with the mouse hovering a BookStack icon with a tooltip stating "Add search engine BookStack"](/images/2024/10/opensearch-firefox.png)
73
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.
76
77 A big thanks to [@maximilian-walter](https://github.com/BookStackApp/BookStack/pull/5198) for providing this feature to BookStack.
78
79 ### R & SAS Code Block Support
80
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:
82
83 ![View of code content in BookStack, one block of R code and one block of SAS code, with text in both showing in a range of colors for different parts of the language](/images/2024/10/r-and-sas-code.png)
84
85 ### PDF Timeout Option
86
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:
90
91 ```bash
92 # Allow 30 seconds for the export process instead of the default 15
93 EXPORT_PDF_COMMAND_TIMEOUT=30
94 ```
95
96 ### Improved User Invite Failure Feedback
97
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.
101
102 ![An error notification in BookStack with the text "Could not create user since invite email failed to send"](/images/2024/10/invite-error-notification.png)
103
104 This should hopefully avoid a frustrating start to many initial uses of BookStack.
105
106 ### Translations 🏴󠁧󠁢󠁷󠁬󠁳󠁿
107
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.
110
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:
113
114 TODO, Format: 
115 - Michele Bastianelli (makoblaster) - *Italian - 1971 words*
116
117 *\* Word counts are those tracked by Crowdin, indicating original EN words translated.*
118
119 ### Next Steps
120
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.
122
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.
124
125 ### Full List of Changes
126
127 **Released in v24.10**
128
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))
141
142 **Released in v24.05.4**
143
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))
152
153 **Released in v24.05.3**
154
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))
163
164 **Released in v24.05.2**
165
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))
173
174 **Released in v24.05.1**
175
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))
186
187 ----
188
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>