2 categories = ["Releases"]
4 title = "Beta Release v0.29.0"
5 date = 2020-04-13T15:30:00Z
7 image = "/images/blog-cover-images/unsplash/easter-victor-larracuente.jpg"
8 description = "This Easter BookStack release focuses on bringing a range user-experience improvements, with features such as dark mode and improved RTL textsupport, in addition to a bunch of fixes and enhancements."
9 slug = "beta-release-v0-29-0"
13 This Easter BookStack release welcomes a range of user-experience improvements, with
14 features such as dark mode and improved right-to-left text support, in addition to a bunch
15 of fixes and enhancements.
17 * [Update instructions](https://www.bookstackapp.com/docs/admin/updates)
18 * [GitHub release page](https://github.com/BookStackApp/BookStack/releases/tag/v0.29.0)
23 BookStack now has a built-in dark mode. Here's a comparison of the same content shown in both dark and light mode:
25 [](/images/2020/04/bookstack-dark-mode.png)
27 [Click to open larger view](/images/2020/04/bookstack-dark-mode.png).
29 The dark mode covers all areas of the system including both the WYSIWYG and markdown editors.
30 Where possible, page content such as tables & code blocks will react and change to be suitable dark alternatives.
31 Vibrant theme-color elements, such as the header bar, will be automatically dimmed and de-saturated
32 so they don't stand-out or remain overly-bright on an otherwise dark page.
34 The option is user-selectable, from either the home-screen on via the top-right profile menu:
37 
39 This can be toggled at any point and the current preference will be saved to the user.
40 For non-logged-in users, their preference will be saved to their browsing session.
42 A massive thanks to [@domainzero on GitHub](https://github.com/domainzero) for tiding-over the BookStack
43 community with a well-supported dark theme for the last few years.
46 ### Custom Draw.io Option
48 Previously in BookStack the URL for draw.io ([now diagrams.net](https://www.diagrams.net/blog/move-diagrams-net))
49 was hard-coded within the BookStack code. This has now been exposed and can be customised as an `.env` option
50 meaning you can tweak the embed behaviour or even use your own [self-hosted draw.io instance](https://github.com/jgraph/drawio).
52 [Details for using this option can be found here](/docs/admin/other-config/#custom-drawio-url).
56 When viewing a single shelf, it's now possible to toggle between grid & list view
59 
61 This aligns the shelf page with the view options available on the "Books" page.
62 A big thanks to [@philjak](https://github.com/BookStackApp/BookStack/pull/1755) for contributing
65 ### List of Shelves for Books
67 Previously in BookStack it was not easy to see the shelves a book is assigned to.
68 In this release, A list of assigned shelves can now be seen when viewing a book:
70 
72 Big thanks to [@cw1998](https://github.com/BookStackApp/BookStack/pull/1688) for contributing
73 this feature to BookStack.
78 The API has been expanded upon with the ability to perform CRUD operations on shelves.
79 In addition, books have received endpoints for exporting their contents as HTML, PDF or plain-text.
80 You'll be able to find details of these when accessing the [API docs in your instance](/docs/admin/hacking-bookstack/#bookstack-api), after updating.
82 
84 ### Instance URL Update Command
86 Since BookStack hard-codes system URL's in the database, a change in the domain
87 used for your instance meant that some manual SQL commands needed to be ran to
88 update the domain in the relevant tables & columns. In this release a command
89 has been added to make this much quicker & easier, You just run the command providing
90 your old and new URL and all the required columns will be updated.
92 Here's and example of running this command:
95 $ php artisan bookstack:update-url http://bookstack.local https://my-docs.com
97 This will search for "http://bookstack.local" in your database and replace it with "https://my-docs.com".
98 Are you sure you want to proceed? (yes/no) [no]:
101 This operation could cause issues if used incorrectly. Have you made a backup of your existing database? (yes/no) [no]:
104 Updated 0 rows in attachments->path
105 Updated 26 rows in pages->html
106 Updated 0 rows in pages->text
107 Updated 8 rows in pages->markdown
108 Updated 394 rows in images->url
109 Updated 0 rows in comments->html
110 Updated 0 rows in comments->text
111 URL update procedure complete.
114 The command has been added to the [command documentation found here](/docs/admin/commands/).
117 ### Improved RTL System UI Support
119 For this release the core styles have been revised to work better for right-to-left (RTL) languages:
121 
123 Previously the BookStack UI would remain left-to-right (LTR), even when a RTL language was in use.
124 Setting the html to display as RTL would cause most of the views to break as the styles were defined with LTR
127 For v0.29, we've made heavy use of [CSS logical properties and values](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties)
128 to ensure our styles work as expected when showing in an RTL format. Although, as of writing, [the spec for logical properties is in draft](https://drafts.csswg.org/css-logical/) it is well supported amongst the modern browsers we support, albeit with a [few omissions](https://bugs.chromium.org/p/chromium/issues/detail?id=1050751).
132 Our fantastic community of translators continue to provide their great efforts as this release brings updates
133 from the below languages by the below great Crowdin & GitHub members:
135 * Hasan Özbey (the-turk) - *Turkish*
136 * mrjaboozy - *Slovenian*
138 * Ali Yasir Yılmaz (ayyilmaz) - *Turkish*
140 * scureza - *Italian*
141 * Statium - *Russian*
142 * Biepa - *German Informal; German*
143 * Finn Wessel (19finnwessel6) - *German*
144 * nutsflag - *French*
145 * syecu - *Chinese Simplified*
146 * Rodrigo Saczuk Niz (rodrigoniz) - *Portuguese, Brazilian*
148 * Thinkverse (thinkverse) - *Swedish*
149 * milesteg - *Hungarian*
150 * [@jzoy](https://github.com/BookStackApp/BookStack/pull/2023) - *Chinese*
152 ### Full List of Changes
154 * Added a user-selectable dark-mode option. ([#2022](https://github.com/BookStackApp/BookStack/pull/2022), [#1234](https://github.com/BookStackApp/BookStack/issues/1234))
155 * Added the ability to define a custom draw.io URL and therefore use a custom instance if preferred. ([#826](https://github.com/BookStackApp/BookStack/issues/826))
156 * Added grid-view support, with toggle, to the shelf view. Thanks to [@philjak](https://github.com/BookStackApp/BookStack/pull/1755). ([#1755](https://github.com/BookStackApp/BookStack/pull/1755), [#1221](https://github.com/BookStackApp/BookStack/issues/1221))
157 * Added a list of bookshelves that a book belongs when viewing a book. Thanks to [@cw1998](https://github.com/BookStackApp/BookStack/pull/1688). ([#1688](https://github.com/BookStackApp/BookStack/pull/1688), [#1598](https://github.com/BookStackApp/BookStack/issues/1598))
158 * Added a new command to update your BookStack URL in the database. ([#1225](https://github.com/BookStackApp/BookStack/issues/1225))
159 * Added shelf API endpoints. Thanks to [@osmansorkar](https://github.com/BookStackApp/BookStack/pull/1908). ([#1908](https://github.com/BookStackApp/BookStack/pull/1908))
160 * Added book-export API endpoints.
161 * Updated password reset flows to avoid indicating if a email is in use within the system. ([#2016](https://github.com/BookStackApp/BookStack/issues/2016))
162 * Updated WYSIWYG entity-link-insert to set link text to entity name, if input is empty. ([#2014](https://github.com/BookStackApp/BookStack/issues/2014))
163 * Updated styles with better RTL support through the use of CSS logical properties/values. ([#2003](https://github.com/BookStackApp/BookStack/pull/2003))
164 * Updated the name of saved drawings to not include the user's name, to prevent issues with non-standard characters. ([#1993](https://github.com/BookStackApp/BookStack/issues/1993))
165 * Removed BMP and TIFF from the list of allows image upload types since these could not be resized properly. ([#1990](https://github.com/BookStackApp/BookStack/issues/1990))
166 * Updated code-block insert to handle focus, so code blocks can be inserted smoothly via keyboard alone. ([#1972](https://github.com/BookStackApp/BookStack/issues/1972))
167 * Updated namespacing used in tests to avoid warnings on recent versions of composer. ([#1924](https://github.com/BookStackApp/BookStack/issues/1924))
168 * Updated Chinese translations. Thanks to [@jzoy](https://github.com/BookStackApp/BookStack/pull/2023). ([#2023](https://github.com/BookStackApp/BookStack/pull/2023))
169 * Updated translations for Turkish, Slovenian, Swedish, Spanish, Italian, Russian, German Informal, German, French, Chinese Simplified, Portuguese, Brazilian & Hungarian. Thanks to [Crowdin Users](https://github.com/BookStackApp/BookStack/blob/development/.github/translators.txt).
170 * Updated default .htaccess to allow Authorization header for API usage. Thanks to [@osmansorkar](https://github.com/BookStackApp/BookStack/pull/1908). ([#1908](https://github.com/BookStackApp/BookStack/pull/1908))
171 * Updated GitHub authorization library to avoid use of deprecated auth methods. ([#1879](https://github.com/BookStackApp/BookStack/issues/1879))
172 * Fixed issue where ordered list numbers could be cut-off. This was most apparent on Safari.([#1978](https://github.com/BookStackApp/BookStack/issues/1978))
177 For the next release I'll look to continue expanding the range of API endpoints. Would be nice to get the core chapter & page actions done.
178 As per my "v0.28 next steps", I'll look to align how activity is tracked. The first steps will likely be to expand the range of
179 tracked actions then expose everything within the admin area in a filterable "Audit Trail".
183 <span style="font-size: 0.8em;opacity:0.8;">Header Image Credits: <a style="background-color:black;color:white;text-decoration:none;padding:4px 6px;font-family:-apple-system, BlinkMacSystemFont, "San Francisco", "Helvetica Neue", Helvetica, Ubuntu, Roboto, Noto, "Segoe UI", Arial, sans-serif;font-size:12px;font-weight:bold;line-height:1.2;display:inline-block;border-radius:3px" href="https://unsplash.com/@victorbrd?utm_medium=referral&utm_campaign=photographer-credit&utm_content=creditBadge" target="_blank" rel="noopener noreferrer" title="Download free do whatever you want high-resolution photos from Victor Larracuente"><span style="display:inline-block;padding:2px 3px"><svg xmlns="http://www.w3.org/2000/svg" style="height:12px;width:auto;position:relative;vertical-align:middle;top:-2px;fill:white" viewBox="0 0 32 32"><title>unsplash-logo</title><path d="M10 9V0h12v9H10zm12 5h10v18H0V14h10v9h12v-9z"></path></svg></span><span style="display:inline-block;padding:2px 3px">Victor Larracuente</span></a></span>