2 categories = ["Releases"]
4 title = "BookStack Release v21.05"
5 date = 2021-05-30T14:32:33Z
7 image = "/images/blog-cover-images/book-collection-fredmarriage.jpg"
8 slug = "bookstack-release-v21-05"
12 BookStack v21.05 has now been released which brings along new user interface
13 features & enhancements including a favourites system and easier in-book
16 The previous release, BookStack v21.04, also received a bunch of fixes & enhancements during
17 the last couple of months so we'll also delve into a few of those changes within this post.
19 * [Update instructions](https://www.bookstackapp.com/docs/admin/updates)
20 * [GitHub release page](https://github.com/BookStackApp/BookStack/releases/tag/v21.05)
25 For quite a while I've wanted to be able to favourite specific items within BookStack for easier future location.
26 For this release cycle I decided to be a bit selfish and spend a couple of nights getting this implemented.
27 Thanks to all those that provided feedback in regards to the naming in [GitHub issue 2053](https://github.com/BookStackApp/BookStack/issues/2053).
29 When viewing a shelf, book, chapter or page while logged in you'll see a new "Favourite" action
30 situated next to the export action.
32 
35 Clicking this will add the item to your personal favourites.
36 Now when you're on the homepage you'll see a list of your most viewed favourites:
39 
41 You can view all your favourites by clicking the header of the homepage list shown above or via
42 a link within the profile dropdown menu in the header bar:
45 
47 This new feature makes it really easy to curate a personal collection of items within the system.
48 In the future we may able to use this for other purposes; For example, for watching/notification control.
50 ### Next/Previous Page & Chapter Navigation
52 Much like a physical book, you'll often want to move to the next or previous page when you get to the
53 bottom of the current one. To support this we now have actions below the page content to move to the
54 next, or previous, chapter or page from the current one within the ordering of the current book.
56 
58 The links are designed to not be distracting by default, like the other non-content interface, but will
59 become more apparent upon interaction. Thanks to [@shubhamosmosys](https://github.com/BookStackApp/BookStack/pull/2511) for providing an initial
60 implementation of this and also a thanks to [@james-geiger](https://github.com/BookStackApp/BookStack/issues/1381#issuecomment-540105003)
61 for supporting a work-around for this in the mean time.
63 ### Tags Within Search Results
65 Tags applied to content will now be shown within search results:
67 
69 They are shown below the content preview, with a more muted design to prevent them from being too distracting when
70 parsing the search results. Thanks to [@burnoutberni](https://github.com/BookStackApp/BookStack/pull/2487) for an
71 initial implementation of this feature.
73 ### LDAP User Avatar Import
75 When using LDAP for authentication, you can now specify an attribute for fetching
76 a JPEG user avatar image. This is done via a `LDAP_THUMBNAIL_ATTRIBUTE` in your `.env` like so:
79 LDAP_THUMBNAIL_ATTRIBUTE=jpegphoto
82 BookStack will import and use this thumbnail data as the user avatar upon login or registration
83 if that user doesn't have an existing avatar image set.
84 Thanks to [@jasonhoule](https://github.com/BookStackApp/BookStack/pull/2320) for providing
85 the pull request with the initial implementation of this feature.
87 ### Improved Header Accessibility
89 In BookStack patch release v21.04.1, the accessibility of the mobile-style header
90 controls was significantly improved. Previously you could not use the dropdown menu
91 nor the Info/Content layout controls via keyboard alone. These issues
92 have now been addressed providing a much more accessible experience at smaller
95 
97 A big thanks to [@Flameborn and @tspivey for reporting and verifying](https://github.com/BookStackApp/BookStack/issues/2681)
98 the previous limitations.
100 ### Dark Mode Updates
102 Within the v21.04.3 & v21.04.4 patch releases we addressed a good few outstanding
103 issues with dark mode. This included the leftover layout control light styles showing in
110 <img src="/images/2021/05/dark-mode-header-2104.png" alt="Dark mode interface controls in v21.04">
114 <img src="/images/2021/05/dark-mode-header-2105.png" alt="Dark mode interface controls in v21.05">
122 As usual, our terrific translating team have been at work to bring the following language updates since
123 the original v21.04 release:
125 - Gerwin de Keijzer (gdekeijzer) - *Dutch; German; German Informal*
126 - Jonas Anker Rasmussen (jonasanker) - *Danish*
127 - Francesco Franchina (ffranchina) - *Italian*
128 - Leonardo Mario Martinez (leonardo.m.martinez) - *Spanish, Argentina*
129 - Aimrane Kds (aimrane.kds) - *Arabic*
130 - kometchtech - *Japanese*
131 - Martins Pilsetnieks (pilsetnieks) - *Latvian*
132 - nutsflag - *French*
133 - Auri (Atalonica) - *Catalan*
135 - 10935336 - *Chinese Simplified*
136 - Statium - *Russian*
137 - Luís Tiago Favas (starkyller) - *Portuguese*
138 - Rodrigo Saczuk Niz (rodrigoniz) - *Portuguese, Brazilian*
139 - whenwesober - *Indonesian*
140 - aarchijs - *Latvian*
141 - Mykola Ronik (Mantikor) - *Ukrainian*
142 - [@Jokuna](https://github.com/BookStackApp/BookStack/pull/2716) - *Korean*
145 ### Full List of Changes
147 **Released in v21.05**
149 * Added shelf/book/chapter/page favourite system. ([#2748](https://github.com/BookStackApp/BookStack/pull/2748))
150 * Added previous/next navigation to chapters and pages. Thanks to [@shubhamosmosys](https://github.com/BookStackApp/BookStack/pull/2511). ([#2511](https://github.com/BookStackApp/BookStack/pull/2511), [#1381](https://github.com/BookStackApp/BookStack/issues/1381))
151 * Added display of tags within search results. Thanks to [@burnoutberni](https://github.com/BookStackApp/BookStack/pull/2487). ([#2487](https://github.com/BookStackApp/BookStack/pull/2487), [#2462](https://github.com/BookStackApp/BookStack/issues/2462))
152 * Added the ability to import JPEG user avatar images during LDAP login/registration. Thanks to [@jasonhoule](https://github.com/BookStackApp/BookStack/pull/2320). ([#2320](https://github.com/BookStackApp/BookStack/pull/2320), [#1161](https://github.com/BookStackApp/BookStack/issues/1161))
153 * Updated export meta date format to align with the format used in revisions. ([#2771](https://github.com/BookStackApp/BookStack/issues/2771))
154 * Updated drawing manager system to verify host on post messages for additional security. ([#2769](https://github.com/BookStackApp/BookStack/issues/2769))
155 * Updated potential external links with `rel="noopener"` for better security . Thanks to [@CorruptComputer](https://github.com/BookStackApp/BookStack/pull/2768). ([#2768](https://github.com/BookStackApp/BookStack/pull/2768))
156 * Updated drawing upload error handling to better advise when images are too large for the server. ([#2740](https://github.com/BookStackApp/BookStack/issues/2740))
157 * Updated page deletions to also delete related revisions. ([#2668](https://github.com/BookStackApp/BookStack/issues/2668))
158 * Updated shelf, book & chapter creation/edit views to autofocus on the name input. ([#1956](https://github.com/BookStackApp/BookStack/issues/1956))
159 * Updated translations with latest Crowdin changes. ([#2764](https://github.com/BookStackApp/BookStack/pull/2764))
160 * Fixed issue where user search field could stack too early in certain languages. ([#2147](https://github.com/BookStackApp/BookStack/issues/2147))
162 **Released in v21.04.1 through v21.04.6**
164 * Added a way to configure options on a social driver, for the initial redirects, through the `Theme::addSocialDriver` system. ([#2759](https://github.com/BookStackApp/BookStack/issues/2759))
165 * Added a new `SAML2_IDP_AUTHNCONTEXT` option for SAML2 authentication since the default did not work well for some Windows environments. Thanks to [@ivir](https://github.com/BookStackApp/BookStack/pull/1998). ([#1998](https://github.com/BookStackApp/BookStack/pull/1998))
166 * Updated mobile header elements for much better keyboard/screen-reader accessibility. ([#2681](https://github.com/BookStackApp/BookStack/issues/2681))
167 * Updated WYSIWYG editor code-block handling provide a more stable undo/redo experience. ([#2602](https://github.com/BookStackApp/BookStack/issues/2602))
168 * Updated AWS S3 SDK to fix incompatibility with Minio. ([#2689](https://github.com/BookStackApp/BookStack/issues/2689))
169 * Updated translations with latest Crowdin changes. ([#2691](https://github.com/BookStackApp/BookStack/pull/2691), [#2695](https://github.com/BookStackApp/BookStack/pull/2695), [#2719](https://github.com/BookStackApp/BookStack/pull/2719), [#2672](https://github.com/BookStackApp/BookStack/pull/2672), [#2737](https://github.com/BookStackApp/BookStack/pull/2737))
170 * Updated migration string column lengths to better fit within restrictive index limits ([#2710](https://github.com/BookStackApp/BookStack/issues/2710))
171 * Updated select box styles with to work around default iOS styles causing issues in dark mode. ([#2709](https://github.com/BookStackApp/BookStack/issues/2709))
172 * Updated styles of layout view buttons in mobile screen sizes to respect dark mode.
173 * Updated image upload behaviour for s3 style uploads to set public permissions as part of the upload request instead of a separate request.
174 * Updated Korean translations. Thanks to [@Jokuna](https://github.com/BookStackApp/BookStack/pull/2716). ([#2716](https://github.com/BookStackApp/BookStack/pull/2716))
175 * Updated table style handling across exports types to be consistent. ([#2666](https://github.com/BookStackApp/BookStack/issues/2666))
176 * Updated S3 ACL setting so ACLs are set via another request, as per pre-v21.04.2, but only when actually use AWS S3. ([#2739](https://github.com/BookStackApp/BookStack/issues/2739))
177 * Updated overflowing table content to be consistent. Thanks to [@dopyrory3](https://github.com/BookStackApp/BookStack/pull/2735). ([#2735](https://github.com/BookStackApp/BookStack/pull/2735), [#2732](https://github.com/BookStackApp/BookStack/issues/2732))
178 * Updated export system to remove JavaScript used in Custom HTML Head Content to prevent errors or strange behaviour. ([#2490](https://github.com/BookStackApp/BookStack/issues/2490))
179 * Improved error messaging when attempting to access a non-existent image file. ([#2696](https://github.com/BookStackApp/BookStack/issues/2696))
180 * Fixed issue where "Recently Viewed" would show non-viewed content for new users. ([#2703](https://github.com/BookStackApp/BookStack/issues/2703))
181 * Fixed issue where a page could become inaccessible when the creator no longer existed. ([#2687](https://github.com/BookStackApp/BookStack/issues/2687))
182 * Fixed HTTP JSON detection when an encoding is in the response JSON content type. ([#2684](https://github.com/BookStackApp/BookStack/issues/2684))
183 * Fixed page export error thrown when the created by, or last updated by user, had been deleted. ([#2733](https://github.com/BookStackApp/BookStack/issues/2733))
184 * Fixed white borders on layout buttons when in dark mode when using Safari. ([#2728](https://github.com/BookStackApp/BookStack/issues/2728))
185 * Fixed error during PDF export in some cases due to incorrect path. ([#2746](https://github.com/BookStackApp/BookStack/issues/2746))
186 * Fixed error thrown when saving a markdown page with empty content. ([#2741](https://github.com/BookStackApp/BookStack/issues/2741))
187 * Fixed scenario where recent Image upload visibility changes caused issues on hosting where webserver and PHP process group/user differ. ([#2758](https://github.com/BookStackApp/BookStack/issues/2758))
192 As planned for this release cycle, I've been through a good chunk of the outstanding pull requests on GitHub.
193 I'll look to continue this for another release cycle as I'd ideally want to address most of these before
194 updating the Laravel framework version, which will soon be due.
196 To start thinking about our next "Editor Review" roadmap stage, I've [opened a scoping issue on GitHub](https://github.com/BookStackApp/BookStack/issues/2738) to gain feedback on potential options. If you have experience on developing with any of the options posted then feedback is appreciated. I'll be looking to dig a little deeper into this within the next release cycle or two.
199 ### Donating to BookStack
201 Donations are always something I stayed away from. I always thought that people should spend their money
202 on more worthy causes, since I didn't really need the money myself nor would I expect it to have a
203 significant impact on the project. That said, people really wanted to provide donations and it was raised
204 multiple times. Ideas like bug-bounties were floated but I never wanted money to be a core motivator
205 for BookStack features and efforts.
207 After thinking it through over the last few years, I realised that donations could be used for the following:
209 1. Support the projects & people that BookStack is built upon by forwarding donations onwards.
210 2. Gauge the feasibility of using the income to potentially one day work on open source full time.
212 The second idea is a bit of a pipe-dream but for now I'll focus on the first, supporting other projects.
213 Since the end of last year I've been testing out utilising GitHub sponsors:
215 <iframe src="https://github.com/sponsors/ssddanbrown/button" title="Sponsor ssddanbrown" height="35" width="116" style="border: 0;" loading="lazy"></iframe>
217 GitHub sponsors provides a multitude of options for one-off and monthly donations.
218 As my donations build up I'll look to support additional projects and people.
219 If the donations ever get to a point where they could support me working on open source full time, I'll likely change focus and only support myself
220 until I could get to a point of stable sustainability to be able to then support others again.
224 <span style="font-size: 0.8em;opacity:0.9;">Header Image Credits: <span>Photo by <a href="https://unsplash.com/@fredmarriage?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">freddie marriage</a> on <a href="https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a></span></span>