]> BookStack Code Mirror - website/blob - content/blog/bookstack-release-v22-03.md
d99c5fefe424c04ac7a65fe8cc36b53c041a3cc5
[website] / content / blog / bookstack-release-v22-03.md
1 +++
2 categories = ["Releases"]
3 tags = ["Releases"]
4 title = "BookStack Release v22.03"
5 date = 2022-03-30T12:00:00Z
6 author = "Dan Brown"
7 image = "/images/blog-cover-images/spring-bird-brian-breeden.jpg"
8 slug = "bookstack-release-v22-03"
9 draft = false
10 +++
11
12 Today we release BookStack v22.03 which features some further additions to the WYSIWYG editor
13 to align its feature-set with our markdown editor. We also see some changes to the settings 
14 view and LDAP users get a useful new debugging option.
15
16 * [Update instructions](https://www.bookstackapp.com/docs/admin/updates)
17 * [GitHub release page](https://github.com/BookStackApp/BookStack/releases/tag/v22.03)
18
19 **Upgrade Notices**
20
21 - **Webhook Data Changes** - Properties found at the `related_item -> created_by/updated_by/owned_by` path of the webhook data will now be an object instead of an ID integer. If you were using these ids you'd now need to access them within the relevant objects. (For example `related_item.created_by.id`).
22 - **Security Releases** - During this last release cycle there was a security update. See the [v22.02.3 blog post](/blog/bookstack-release-v22-02-3/) for more detail.
23
24 ### Official Support Services & Website Updates
25
26 While not a particular feature for this release, I've been spending time this release
27 cycle putting together some official support services. These services are primarily targeted at
28 business that require assured support.
29
30 Details regarding the launch of this service can be [found in this blogpost](/blog/bookstack-support-services/)
31 and details of the available plans can be seen on [our new support page](/support/).
32
33 Adding an additional link to our website header made things a little too busy so I've also redesigned
34 that area of this site to make things a little cleaner. We now have a multi-level site menu and a search bar
35 has been added to the center, mimicking the header style of BookStack itself.
36
37 ### WYSIWYG Editor Task-Lists
38
39 You can now have checkbox task-lists within the WYSIWYG editor. 
40 Such lists have been part of the BookStack Markdown editor's capabilities
41 for a long time but now the editors are aligned on supporting this option.
42 Task-lists can be found in the list section overflow in the WYSIWYG toolbar:
43
44 ![WYSIWYG Editor Task List Example](/images/2022/03/task_lists.png)
45
46 Checked status can be controlled when editing the page by simply clicking the checkbox.
47 This checked status will then be reflected when the page is viewed, with the checkbox
48 in a non-editable state.
49
50 ### Link Control in WYSIWYG Editor
51
52 Links within the WYSIWYG editor are now easier to manage.
53 Previously, removing a link would be a non-obvious chore of editing the link
54 then emptying the link input. Now, when you're focused on a link, you'll 
55 see a toolbar to allow easy and quick link editing, removal or opening:
56
57 ![WYSIWYG Editor Toolbar Link with three buttons: Edit link, Remove link & Open link in new tab](/images/2022/03/link_toolbar.png)
58
59 In addition, a new shortcut has been added to the editor. 
60 You can press `Ctrl+Shift+K` (Or `Cmd+Shift+K` on mac) to instantly show a popup
61 for quick linking to existing BookStack content:
62
63 ![Link Selector Popup Modal Window Preview](/images/2022/03/link_selector.png)
64
65 ### Settings Interface Changes
66
67 Within the settings view we would previously show three categories of settings,
68 each in their own panel with their own "Save" button. 
69 In some cases, this could prove frustrating as a user may click the save button of
70 section "A", which would not save their settings changed within section "B".
71 To avoid this the settings view has been split out to a page-per-category with
72 a navigation bar on the side:
73
74 ![Example of new settings view, categorised via a left sidebar menu](/images/2022/03/settings_view.png)
75
76 ### Webhook Updates
77
78 There have been some further changes to webhooks based upon community feedback.
79 `created_by`/`updated_by`/`owned_by` details on the sent `related_item` property
80 will now be objects instead of ids, which themselves contain a few addition details
81 such as `id`, `name` and `slug`.
82
83 In addition, Page creation and update events will now include revision details
84 within the `related_item` content. 
85
86 Put all together, the POST data will now look something like this:
87
88 ```json
89 {
90     "event": "page_update",
91     "...",
92     "related_item": {
93         "id": 2432,
94         "...",
95         "created_by": {
96             "id": 1,
97             "name": "Benny",
98             "slug": "benny"
99         },
100         "updated_by": {
101             "id": 1,
102             "name": "Benny",
103             "slug": "benny"
104         },
105         "owned_by": {
106             "id": 1,
107             "name": "Benny",
108             "slug": "benny"
109         },
110        "current_revision": {
111             "id": 597,
112             "page_id": 2598,
113             "name": "My wonderful updated page",
114             "created_by": 1,
115             "created_at": "2021-12-11T21:53:24.000000Z",
116             "updated_at": "2021-12-11T21:53:24.000000Z",
117             "slug": "my-wonderful-updated-page",
118             "book_slug": "my-awesome-book",
119             "type": "version",
120             "summary": "Updated the title and fixed some spelling",
121             "revision_number": 2
122         }
123     }
124 }
125 ```
126
127 For those customizing the webhook data via our [logical theme system](https://github.com/BookStackApp/BookStack/blob/development/dev/docs/logical-theme-system.md), it may be useful
128 to know I've extracted out the default webhook formatting to it's own [class which can be seen here](https://github.com/BookStackApp/BookStack/blob/0887c396940b99b37cd1bec4387dc7e112f171cf/app/Actions/WebhookFormatter.php). If needed, you could use this to emulate the base default webhook data as a starting point.
129
130 ### LDAP Group Debugging
131
132 When configuring LDAP authentication, enabling and configuring the group
133 would be a common pain-point. We do have a `LDAP_DUMP_USER_DETAILS` debugging 
134 option but this did not contain and group, or "memberOf" details.
135 Instead you'd have to run manual external LDAP searches, out of BookStack, to emulate
136 what might be happening.
137
138 In this release, we've now added a new `LDAP_DUMP_USER_GROUPS` option.
139 Setting this to true will stop login requests, at the point of parsing group details,
140 and dump the found details out to the browser as JSON. You'll see the raw
141 data fetched from the LDAP system in addition to how BookStack has parsed that and any
142 fetching of nested groups:
143
144 ```json
145 {
146   "details_from_ldap": {
147     "0": "memberof",
148     "memberof": {
149       "0": "cn=Editor,ou=Users,o=abc123,dc=jumpcloud,dc=com",
150       "1": "cn=Wizards,ou=Users,o=abc123,dc=jumpcloud,dc=com",
151       "2": "cn=All Users,ou=Users,o=abc123,dc=jumpcloud,dc=com",
152       "count": 3
153     },
154     "count": 1,
155     "dn": "uid=bjacobs,ou=Users,o=abc123,dc=jumpcloud,dc=com"
156   },
157   "parsed_direct_user_groups": [
158     "Editor",
159     "Wizards",
160     "All Users"
161   ],
162   "parsed_recursive_user_groups": [
163     "Editor",
164     "Wizards",
165     "All Users"
166   ]
167 }
168 ```
169
170 More details can be found in [our LDAP documentation](/docs/admin/ldap-auth/).
171
172 ### Translations
173
174 We have a new language in this release, Basque! This language is still in progress
175 but a big thanks to "Xabi" on Crowdin for starting work on this language!
176
177 Upon that, we've had lots of updates since the last feature release provided 
178 by the wonderful contributors listed below:
179
180 - metaarch - *Bulgarian*
181 - Xabi (xabikip) - *Basque*
182 - Vitaliy (gviabcua) - *Ukrainian*
183 - pedromcsousa - *Portuguese*
184 - na3shkw - *Japanese*
185 - Nir Louk (looknear) - *Hebrew*
186 - Statium - *Russian*
187 - scureza - *Italian*
188 - MASOUD HOSSEINY (masoudme) - *Persian*
189 - Indrek Haav (IndrekHaav) - *Estonian*
190 - stothew - *German*
191 - m0uch0 - *Spanish*
192 - SmokingCrop - *Dutch*
193 - Maciej Lebiest (Szwendacz) - *Polish*
194 - Martins Pilsetnieks (pilsetnieks) - *Latvian*
195 - 10935336 - *Chinese Simplified*
196
197 ### Full List of Changes
198
199 **Released in v22.03**
200
201 * Added support for checkbox tasklists in the WYSIWYG editor. ([#3333](https://github.com/BookStackApp/BookStack/pull/3333), [#4](https://github.com/BookStackApp/BookStack/issues/4))
202 * Added WYSIWYG control to remove & edit links. ([#3276](https://github.com/BookStackApp/BookStack/issues/3276), [#3298](https://github.com/BookStackApp/BookStack/pull/3298))
203 * Added WYSIWYG `Ctrl+Shift+K` shortcut to show entity selector popup shortcut in WYSIWYG editor. ([#3244](https://github.com/BookStackApp/BookStack/issues/3244), [#3298](https://github.com/BookStackApp/BookStack/pull/3298))
204 * Added LDAP user group debugging option. ([#3345](https://github.com/BookStackApp/BookStack/issues/3345))
205 * Added support for the Basque language. ([#3296](https://github.com/BookStackApp/BookStack/issues/3296))
206 * Updated settings view with a re-organized layout for a less confusing user experience. ([#3349](https://github.com/BookStackApp/BookStack/pull/3349), [#3221](https://github.com/BookStackApp/BookStack/issues/3221))
207 * Updated code block rendering in WYSIWYG to help prevent scroll jumping upon undo/redo. ([#3326](https://github.com/BookStackApp/BookStack/issues/3326))
208 * Updated translations with latest Crowdin updates. ([#3320](https://github.com/BookStackApp/BookStack/pull/3320))
209 * Updated webhook data to include details of page/chapter/shelf/book creator/updater/owner. ([#3279](https://github.com/BookStackApp/BookStack/issues/3279))
210 * Updated webhook data to include revision details on page_update and page_create events. ([#3218](https://github.com/BookStackApp/BookStack/issues/3218))
211 * Fixed lack of translation support for some editor buttons. ([#3342](https://github.com/BookStackApp/BookStack/issues/3342))
212 * Fixed incorrect page concatenation in book markdown export. ([#3341](https://github.com/BookStackApp/BookStack/issues/3341))
213 * Fixed existence of `<br>` tags within code blocks instead of newlines. ([#3327](https://github.com/BookStackApp/BookStack/issues/3327))
214 * Fixed image thumbnail generation not taking EXIF rotation data into account. ([#1854](https://github.com/BookStackApp/BookStack/issues/1854))
215
216
217 **Released in v22.02.1 through v22.02.3**
218
219 * Updated editor references to avoid caching issue that would prevent WYSIWYG editor from opening. ([#3293](https://github.com/BookStackApp/BookStack/issues/3293))
220 * Updated code blocks within the editor to be more reliable, especially on first insertion. ([#3292](https://github.com/BookStackApp/BookStack/issues/3292))
221 * Added cache breaker to WYSIWYG onward loading to prevent plugin errors appearing if cached. ([#3303](https://github.com/BookStackApp/BookStack/pull/3303))
222 * Updated translations with latest Crowdin changes. ([#3301](https://github.com/BookStackApp/BookStack/pull/3301), [#3312](https://github.com/BookStackApp/BookStack/pull/3312), [#3291](https://github.com/BookStackApp/BookStack/pull/3291))
223 * Updated sidebar fade to be more subtle when in dark mode. ([#3203](https://github.com/BookStackApp/BookStack/issues/3203))
224 * Fixed WYISWYG editor issue where blank lines would collapse. ([#3302](https://github.com/BookStackApp/BookStack/issues/3302))
225 * Added iframe allow-list control to prevent a range of malicious uses of untrusted iframe sources. ([#3314](https://github.com/BookStackApp/BookStack/issues/3314))
226
227 ### Next Steps
228
229 With the changes in this release, the WYSIWYG and markdown editors are now much better aligned in terms of features & functionality.
230 Over the next month the focus will be on providing the ability to switch between the editor types. 
231 This will likely be at a per-page level, with permission controls to decide who wields that power to change editor type.
232
233 ----
234
235 <span style="font-size: 0.8em;opacity:0.9;">Header Image Credits: <span>Photo by <a href="https://unsplash.com/@bcbreeden?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Brian Breeden</a> on <a href="https://unsplash.com/s/photos/spring?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a></span></span>