2 categories = ["Releases"]
4 title = "BookStack Release v23.10"
5 date = 2023-10-30T11:43:00Z
7 image = "/images/blog-cover-images/cc-by-2/peter-trimming-squirrel.jpg"
8 slug = "bookstack-release-v23-10"
12 This October maintenance release brings with it a little more than originally planned,
13 with a significant revamp of user self-management in addition to an updated editor design,
14 along with many other additions & improvements.
16 * [Update instructions](/docs/admin/updates)
17 * [GitHub release page](https://github.com/BookStackApp/BookStack/releases/tag/v23.10)
22 TODO - Add to updates page
24 - **URL Changes** - Many of the URLs related to user details & preferences have changed in this release with the addition of the "My Account" area. If you have documented these links you may need to update your documentation.
27 <!-- {{<pt oMVSWxsayhfL7rjtzJLqNF>}} -->
31 With the added options over the years, user self-management was getting rather fractured within the
32 user interface with some options within "Preferences", but with many other options (including some which could be considered preferences)
33 within the "Edit Profile" view.
34 Additionally that "Edit Profile" was located in the application users settings which was acting dual-purpose for admin and end-user usage.
36 To address this, in this release there's a new central "My Account" area accessed via the header user dropdown menu:
38 TODO - Screenshot of my account area, with dropdown in view
40 The "My Account" area combines the pre-existing preference views, with end-user specific "Profile Details" and "Access & Security" views
41 to contain all user self-management within one neatly organised area.
42 The "Access & Security" view bundles the existing password, MFA and API token controls:
44 TODO - Screenshot of "Access & Security" area
46 These changes should now provide a much more intuitive end-user experience when it comes to finding account options.
48 ### Admin User Form Changes
50 With the above addition of a "My Account" area, we can now focus the pre-existing "Settings > Users > Edit" view
51 to be targeted on admin use.
52 Access to these views is now limited to just those with role permission to "Manage Users", since all other required end-user
53 abilities can now be managed via "My Account".
55 When third-party/social login options are in use, admin users will not be able to see what external
56 accounts users have connected to their BookStack profile. This was previously only visible to the user which they applied to.
58 TODO - Image of social acccounts for non-current user
60 Lastly, the "External Authentication ID" field will now always display on this form, even if using just normal email & password authentication.
61 This is to make it easier to manage and set-up external authentication accounts when required, negating the awkward need to swap
62 active system authentication system when attempting to set this up.
64 TODO - Image of external auth id field
66 ### Editor Design Update
68 During this release cycle I started making some minor improvements to the editor UI, but this soon
69 turned into a much more significant design update:
71 TODO - Image of editor
73 The new design is now closer aligned to the page display view, to be less jarring when switching
74 from viewing to editing and to provide a more consistent experience.
75 The existence of sidebar editor toolbox is now more obvious.
76 Care has been taken to ensure these design changes don't reduce usability or access to existing options.
77 On the smallest mobile sizes you'll actually now have more space for editing.
79 Of course these changes also apply when using the markdown editor.
80 Here's a view of the markdown editor, with the sidebar toolbox open:
82 TODO - Image of markdown + toolbox
84 ### Refresh Avatar Command
86 We have a new [command](/docs/admin/commands/) for this release.
87 This one allows the refreshing of user avatar images from the configured avatar
88 service ([Gravatar](https://gravatar.com/) by default).
89 There are options to do this for a single user, for all users, or just for users without avatars assigned:
93 # Refresh avatars for all users without avatars already assigned
94 php artisan bookstack:refresh-avatar --users-without-avatars
97 You can find more details about [this command in our docs here](/docs/admin/commands/#refresh-user-avatars).
98 A thanks to [@MarcHagen](https://github.com/BookStackApp/BookStack/pull/4560) for submitting the code for this functionality.
100 ### Basic PWA Support
102 This version of BookStack introduces basic PWA (Progressive Web App) functionality through the use of an added PWA manifest endpoint.
103 In practice, this will allow the easier usage of BookStack as a "contained" application on some platforms, with the correct name and icon set.
105 TODO - Image of usage on iOS as contained app?
107 Thanks to [@GamerClassN7](https://github.com/BookStackApp/BookStack/pull/4430) for working to provide the code for this functionality.
109 ### Visual Theme System Header Partials
111 When it comes to customising your BookStack instance, the header bar can be a popular target for tweaks and additions.
112 Previously the template code was mostly stored in a single large template file, requiring a lot to override and support for minor changes
113 using our [visual theme system](https://github.com/BookStackApp/BookStack/blob/development/dev/docs/visual-theme-system.md).
114 As of v23.10, the header bar has been split out into more specific template files, to allow more targeted tweaking.
115 The main links, logo, search-box, and user dropdown menu are now each their own template.
117 Additionally, we've added a blank `layouts/parts/header-links-start.blade.php` template that can specifically be used to
118 add extra links to the header, since this was a common customization desire.
119 As an example, adding a `<theme_folder>/layouts/parts/header-links-start.blade.php` of:
122 <a href="{{ url('/tags') }}">@icon('tag')<span>Tags</span></a>
127 TODO - Image of above customization
129 ### Editor Entity Search Prefill
131 This is a relatively minor feature but an example of a neat user experience optimisation,
132 [recommended by @aswgxf](https://github.com/BookStackApp/BookStack/issues/4571).
133 In the editor, when linking to another item in the system via the selector (commonly via the `Ctrl+Shift+K` shortcut)
134 we'll now pre-pill the search box with the text that was selected (if any) in the editor:
136 TODO - Image, or video? Webm?
138 ### Logical Theme System Error Handling
140 Within the v23.06 release I made a lot of changes to the location and paths of classes within the BookStack codebase.
141 These changes caused many usages of the logical theme system to break, which is expected, but many of those issues were
142 not clear to users which lead to unknown errors which many raised support queries for.
144 To help in such scenarios, extra error handling has been added to help indicate when logical theme system
147 TODO - Image of error handled
149 This won't catch all error scenarios of code within your `functions.php`, but it should help indicate issues
150 in the most common of scenarios upon changes from updates.
152 ### Image Upload Error Handling Improvements
154 Image uploads are a common source of potential issues for a system like BookStack.
155 Various limits and software configurations can lead to images failing to upload.
156 Previously in BookStack we didn't always handle these in the best way.
157 Failed uploads could respond with vague error messages, while potentially preventing the gallery from loading afterwards.
159 In this release cycle, I've spent a good while emaulating and testing common cases to better address these common cases.
160 Here's an extreme example to demonstrate the new messaging that can appear:
162 TODO - Image of image manager with failed messages
164 In particular, the tricky issue to handle here has been handling memory-limit events.
165 When these are triggered, the application goes straight into a shutdown-like mode which makes it difficult to catch
166 these errors in a typical error handling manner. Instead we have to reserve some extra memory,
167 then hook into that shutdown handling event so we can customise the application response with something friendlier.
171 Much of the focus of this release cycle was upon code-cleanup and bug-fixing.
172 I've been going back over parts of the codebase and addressing inconsistencies that have been on my mind for a while.
173 If interested, examples include:
175 - [Language handling cleanup](https://github.com/BookStackApp/BookStack/pull/4555/files)
176 - [Guest user handling cleanup](https://github.com/BookStackApp/BookStack/pull/4554/files)
177 - [HTTP calling cleanup](https://github.com/BookStackApp/BookStack/pull/4525/files)
178 - [Mixed-entity endpoint alignment](https://github.com/BookStackApp/BookStack/commit/2fbf5527c70d5d3eadb2767ca5301ad05f7f28c8)
180 See the [full list of changes below](/blog/bookstack-release-v23-10/#full-list-of-changes) for a complete view of all the changes made.
184 A new language enters with this BookStack release. The new addition is Uzbek!
185 Thanks to [@mrmuminov](https://github.com/BookStackApp/BookStack/pull/4527) for contributing this language addition.
187 Upon the new language, once again a massive thanks to all the phenomenal polylingual professionals below
188 that have contributed translation text since the last feature release:
190 - Name - *Language - x words*
194 *\* Word counts are those tracked by Crowdin, indicating original EN words translated.*
198 As mentioned in the last "Next Steps", my focus now will be on how we handle free-text inputs within the system.
199 Specifically these relate to comments and descriptions for shelves, books and pages.
200 It's been long requested to have a few more formatting options and features within descriptions, whereas we've always
201 had markdown support in comments but that's not been clear to users.
202 I'd be assessing the use of a simplistic WYSIWYG solution to unify these inputs, and attempting to find a balance and fit of options to include.
204 Beyond that, there's a pending pull request to add OIDC RP-initiated logout, so I'll likely dive into that for the next release.
205 On the subject of auth, there have been more requests for hardware tokens for MFA usage. I'd quite like to dig into this to gain
206 experience of the WebAuthN spec, although I'm not too sure how (if) the growing popularity of passkeys fit into this picture.
207 If that's your area of expertise, I'd love to hear your input in response [to my comment here](https://github.com/BookStackApp/BookStack/issues/3912#issuecomment-1781212350).
209 ### Full List of Changes
211 **Released in v23.10**
213 * Added new "My Account" area. ([#4615](https://github.com/BookStackApp/BookStack/pull/4615))
214 * Added Uzbek language translations. Thanks to [@mrmuminov](https://github.com/BookStackApp/BookStack/pull/4527). ([#4527](https://github.com/BookStackApp/BookStack/pull/4527))
215 * Added artisan command for re-fetching existing user avatar images. Thanks to [@MarcHagen](https://github.com/BookStackApp/BookStack/pull/4560). ([#4560](https://github.com/BookStackApp/BookStack/pull/4560), [#1893](https://github.com/BookStackApp/BookStack/issues/1893))
216 * Added basic PWA support. Thanks to [@GamerClassN7](https://github.com/BookStackApp/BookStack/pull/4430). ([#4430](https://github.com/BookStackApp/BookStack/pull/4430), [#1253](https://github.com/BookStackApp/BookStack/issues/1253))
217 * Added new header bar partials for easier customization. ([#4564](https://github.com/BookStackApp/BookStack/issues/4564))
218 * Added "View Tags" button to non-default homepage views. ([#4558](https://github.com/BookStackApp/BookStack/issues/4558))
219 * Updated page editor interface with a new design. ([#4604](https://github.com/BookStackApp/BookStack/pull/4604))
220 * Updated app caching behaviour to avoid expiry scenarios. ([#4600](https://github.com/BookStackApp/BookStack/issues/4600))
221 * Updated cleanup-images command to allow non-interactive running. ([#4541](https://github.com/BookStackApp/BookStack/issues/4541))
222 * Updated comment notification options to only show if comments active. Thanks to [@tusharnain4578](https://github.com/BookStackApp/BookStack/pull/4552). ([#4552](https://github.com/BookStackApp/BookStack/pull/4552), [#4508](https://github.com/BookStackApp/BookStack/issues/4508))
223 * Updated editor entity selector to pre-fill with selected text. ([#4571](https://github.com/BookStackApp/BookStack/issues/4571))
224 * Updated file & image upload handling for better indication of issues. ([#4578](https://github.com/BookStackApp/BookStack/pull/4578), [#4454](https://github.com/BookStackApp/BookStack/issues/4454))
225 * Updated guest user logic to reduce complexity and overlapping methods. ([#4554](https://github.com/BookStackApp/BookStack/pull/4554), [#4448](https://github.com/BookStackApp/BookStack/issues/4448))
226 * Updated HTTP calling in the codebase to align all handling. ([#4525](https://github.com/BookStackApp/BookStack/pull/4525))
227 * Updated icon handling to remove unneeded global helper. ([#4553](https://github.com/BookStackApp/BookStack/issues/4553))
228 * Updated language handling to reduce complexity and duplicated logic. ([#4555](https://github.com/BookStackApp/BookStack/pull/4555), [#4501](https://github.com/BookStackApp/BookStack/issues/4501))
229 * Updated logical theme system to capture load errors for better reporting & debugging. ([#4504](https://github.com/BookStackApp/BookStack/issues/4504))
230 * Updated mixed entity endpoints to share and align logic. ([#4444](https://github.com/BookStackApp/BookStack/issues/4444))
231 * Updated OIDC config handling to move logic out of config file. ([#4494](https://github.com/BookStackApp/BookStack/issues/4494))
232 * Updated OIDC request timeout to 5 seconds. ([#4397](https://github.com/BookStackApp/BookStack/issues/4397))
233 * Updated older notifications codebase to align with newer code organisation. ([#4500](https://github.com/BookStackApp/BookStack/issues/4500))
234 * Updated print view to ignore extra elements. ([#4594](https://github.com/BookStackApp/BookStack/issues/4594))
235 * Updated Slack authentication to use official Laravel implementation. ([#4464](https://github.com/BookStackApp/BookStack/issues/4464))
236 * Updated the default email settings to use example domain. ([#4518](https://github.com/BookStackApp/BookStack/issues/4518))
237 * Updated translations with latest Crowdin changes. ([#4523](https://github.com/BookStackApp/BookStack/pull/4523))
238 * Updated username truncation to always show some part of the name. Thanks to [@Bajszi97](https://github.com/BookStackApp/BookStack/pull/4533). ([#4533](https://github.com/BookStackApp/BookStack/pull/4533), [#4489](https://github.com/BookStackApp/BookStack/issues/4489))
239 * Updated security docs to remove huntr references. Thanks to [@radiantwave](https://github.com/BookStackApp/BookStack/pull/4618). ([#4616](https://github.com/BookStackApp/BookStack/issues/4616), [#4618](https://github.com/BookStackApp/BookStack/pull/4618))
240 * Fixed awkward sidebar scroll behaviour at mid-level screen sizes. Thanks to [@LawssssCat](https://github.com/BookStackApp/BookStack/pull/4562). ([#4562](https://github.com/BookStackApp/BookStack/pull/4562))
241 * Fixed buggy dark/light mode button when dark mode is the default. ([#4543](https://github.com/BookStackApp/BookStack/issues/4543))
242 * Fixed enter press incorrectly clearing tag input field. ([#4570](https://github.com/BookStackApp/BookStack/issues/4570))
243 * Fixed issue where "?" would show shortcuts when typing in an input. ([#4606](https://github.com/BookStackApp/BookStack/issues/4606))
244 * Fixed lack of content in plaintext export options. ([#4557](https://github.com/BookStackApp/BookStack/issues/4557))
245 * Fixed missing notification text in German-language emails. ([#4567](https://github.com/BookStackApp/BookStack/issues/4567))
246 * Fixed odd default homepage layout at iPad-like width. ([#4596](https://github.com/BookStackApp/BookStack/issues/4596))
247 * Fixed un-aligned text across elements when they show their empty states. ([#4563](https://github.com/BookStackApp/BookStack/issues/4563))
248 * Enabled Albanian translations for BookStack on Crowdin. ([#4065](https://github.com/BookStackApp/BookStack/issues/4065))
249 * Enabled Finnish translations for BookStack on Crowdin. ([#4614](https://github.com/BookStackApp/BookStack/issues/4614))
250 * Enabled Norwegian Nynorsk translations for BookStack on Crowdin. ([#4447](https://github.com/BookStackApp/BookStack/issues/4447))
252 **Released in v23.08.3**
254 * Fixed comment reply notifications not being sent to the correct/expected user. ([#4548](https://github.com/BookStackApp/BookStack/issues/4548))
255 * Fixed JavaScript error that could appear when not having comment permissions. ([#4531](https://github.com/BookStackApp/BookStack/issues/4531))
256 * Fixed wrong French translation in notification preferences. ([#4511](https://github.com/BookStackApp/BookStack/issues/4511))
257 * Updated translations with latest Crowdin changes. ([#4512](https://github.com/BookStackApp/BookStack/pull/4512))
259 **Released in v23.08.2**
261 * Fixed WYSIWYG filtering issue, introduced in v23.08.1, which breaks page editing and drawing use when certain elements exist in page content. ([#4510](https://github.com/BookStackApp/BookStack/issues/4510), [#4509](https://github.com/BookStackApp/BookStack/issues/4509))
262 * Updated translations with latest Crowdin changes. ([#4506](https://github.com/BookStackApp/BookStack/pull/4506))
264 **Released in v23.08.1**
266 * Updated preferences view styles to better respond to content and screen sizes to prevent wrapping buttons. ([#4502](https://github.com/BookStackApp/BookStack/issues/4502))
267 * Updated WYSIWYG editor filtering to help prevent page pointer being pasted into pages. ([#4474](https://github.com/BookStackApp/BookStack/issues/4474))
268 * Updated translations with latest Crowdin changes. ([#4481](https://github.com/BookStackApp/BookStack/pull/4481))
269 * Fixed a range of typos in our dev docs. Thanks to [@omahs](https://github.com/BookStackApp/BookStack/pull/4484). ([#4484](https://github.com/BookStackApp/BookStack/pull/4484))
270 * Fixed deleted watched books/chapters/pages breaking notification preferences view from loading. ([#4499](https://github.com/BookStackApp/BookStack/issues/4499))
271 * Fixed notifications not being sent in receiver language preference. ([#4497](https://github.com/BookStackApp/BookStack/pull/4497), [#4480](https://github.com/BookStackApp/BookStack/issues/4480))
275 <span style="font-size: 0.8em;opacity:0.9;">Header Image Credits: <span>Photo by <a href="https://www.flickr.com/photos/peter-trimming/31839968058/">Peter Trimming (CC-BY-2)</a> - Image Modified</span></span>