]> BookStack Code Mirror - website/blob - content/blog/bookstack-release-v22-03.md
Update filesystem-permissions.md
[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 aiming to align its feature-set with our markdown editor. We also see some changes to the settings 
14 view while 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 an assured level of 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 BookStack's markdown editor 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 via the main toolbar then emptying the link input before pressing save.
55 Now, when you're focused on a link, you'll 
56 see a toolbar to allow quick and easy link editing, removal or opening:
57
58 ![WYSIWYG Editor Toolbar Link with three buttons: Edit link, Remove link & Open link in new tab](/images/2022/03/link_toolbar.png)
59
60 In addition, a new shortcut has been added to the editor. 
61 You can press `Ctrl+Shift+K` (Or `Cmd+Shift+K` on MacOS) to instantly show a popup
62 for quick linking to existing BookStack content:
63
64 ![Link Selector Popup Modal Window Preview](/images/2022/03/link_selector.png)
65
66 ### Settings Interface Changes
67
68 Within the settings view we would previously show three categories of settings,
69 each in their own panel with their own "Save" button. 
70 In some cases, this could prove frustrating as a user may click the save button of
71 section "A", which would loose any settings changed within section "B".
72 To avoid this the settings view has been split out to a page-per-category with
73 a navigation bar on the side:
74
75 ![Example of new settings view, categorised via a left sidebar menu](/images/2022/03/settings_view.png)
76
77 ### Webhook Updates
78
79 There have been some further changes to webhooks based upon community feedback.
80 `created_by`/`updated_by`/`owned_by` details on the sent `related_item` property
81 will now be objects instead of ids, which themselves contain a few details
82 such as `id`, `name` and `slug`.
83
84 In addition, Page creation and update events will now include revision details
85 within the `related_item` content. 
86
87 Put all together, the POST data will now look something like this for a page update event:
88
89 ```json
90 {
91     "event": "page_update",
92     "...",
93     "related_item": {
94         "id": 2432,
95         "...",
96         "created_by": {
97             "id": 1,
98             "name": "Benny",
99             "slug": "benny"
100         },
101         "updated_by": {
102             "id": 1,
103             "name": "Benny",
104             "slug": "benny"
105         },
106         "owned_by": {
107             "id": 1,
108             "name": "Benny",
109             "slug": "benny"
110         },
111        "current_revision": {
112             "id": 597,
113             "page_id": 2598,
114             "name": "My wonderful updated page",
115             "created_by": 1,
116             "created_at": "2021-12-11T21:53:24.000000Z",
117             "updated_at": "2021-12-11T21:53:24.000000Z",
118             "slug": "my-wonderful-updated-page",
119             "book_slug": "my-awesome-book",
120             "type": "version",
121             "summary": "Updated the title and fixed some spelling",
122             "revision_number": 2
123         }
124     }
125 }
126 ```
127
128 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
129 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.
130
131 ### LDAP Group Debugging
132
133 When configuring LDAP authentication, enabling and configuring the group syncing
134 would be a common pain-point. We do have a `LDAP_DUMP_USER_DETAILS` debugging 
135 option but this did not contain any group, or "memberOf" details.
136 Instead you'd have to run manual external LDAP searches, out of BookStack, to emulate
137 what might be happening.
138
139 In this release, we've now added a new `LDAP_DUMP_USER_GROUPS` option.
140 Setting this to true will stop login requests, at the point of parsing group details,
141 and dump the found details out to the browser as JSON. You'll see the raw
142 data fetched from the LDAP system in addition to how BookStack has parsed that data, upon any
143 fetching of nested groups:
144
145 ```json
146 {
147   "details_from_ldap": {
148     "0": "memberof",
149     "memberof": {
150       "0": "cn=Editor,ou=Users,o=abc123,dc=jumpcloud,dc=com",
151       "1": "cn=Wizards,ou=Users,o=abc123,dc=jumpcloud,dc=com",
152       "2": "cn=All Users,ou=Users,o=abc123,dc=jumpcloud,dc=com",
153       "count": 3
154     },
155     "count": 1,
156     "dn": "uid=bjacobs,ou=Users,o=abc123,dc=jumpcloud,dc=com"
157   },
158   "parsed_direct_user_groups": [
159     "Editor",
160     "Wizards",
161     "All Users"
162   ],
163   "parsed_recursive_user_groups": [
164     "Editor",
165     "Wizards",
166     "All Users"
167   ]
168 }
169 ```
170
171 More details can be found in [our LDAP documentation](/docs/admin/ldap-auth/).
172
173 ### Translations
174
175 We have a new language in this release, Basque! Work on this language is still in progress
176 but a big thanks to "Xabi" on Crowdin for starting work on these translations!
177
178 Upon that, we've had lots of updates since the last feature release provided 
179 by the wonderful contributors listed below:
180
181 - metaarch - *Bulgarian*
182 - Xabi (xabikip) - *Basque*
183 - Vitaliy (gviabcua) - *Ukrainian*
184 - pedromcsousa - *Portuguese*
185 - na3shkw - *Japanese*
186 - Nir Louk (looknear) - *Hebrew*
187 - Statium - *Russian*
188 - scureza - *Italian*
189 - MASOUD HOSSEINY (masoudme) - *Persian*
190 - Indrek Haav (IndrekHaav) - *Estonian*
191 - stothew - *German*
192 - m0uch0 - *Spanish*
193 - SmokingCrop - *Dutch*
194 - Maciej Lebiest (Szwendacz) - *Polish*
195 - Martins Pilsetnieks (pilsetnieks) - *Latvian*
196 - 10935336 - *Chinese Simplified*
197
198 ### Full List of Changes
199
200 **Released in v22.03**
201
202 * 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))
203 * Added WYSIWYG control to remove & edit links. ([#3276](https://github.com/BookStackApp/BookStack/issues/3276), [#3298](https://github.com/BookStackApp/BookStack/pull/3298))
204 * 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))
205 * Added LDAP user group debugging option. ([#3345](https://github.com/BookStackApp/BookStack/issues/3345))
206 * Added support for the Basque language. ([#3296](https://github.com/BookStackApp/BookStack/issues/3296))
207 * 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))
208 * Updated code block rendering in WYSIWYG to help prevent scroll jumping upon undo/redo. ([#3326](https://github.com/BookStackApp/BookStack/issues/3326))
209 * Updated translations with latest Crowdin updates. ([#3320](https://github.com/BookStackApp/BookStack/pull/3320))
210 * Updated webhook data to include details of page/chapter/shelf/book creator/updater/owner. ([#3279](https://github.com/BookStackApp/BookStack/issues/3279))
211 * Updated webhook data to include revision details on page_update and page_create events. ([#3218](https://github.com/BookStackApp/BookStack/issues/3218))
212 * Fixed lack of translation support for some editor buttons. ([#3342](https://github.com/BookStackApp/BookStack/issues/3342))
213 * Fixed incorrect page concatenation in book markdown export. ([#3341](https://github.com/BookStackApp/BookStack/issues/3341))
214 * Fixed usage of `<br>` tags within code blocks instead of newlines when using the WYSIWYG editor. ([#3327](https://github.com/BookStackApp/BookStack/issues/3327))
215 * Fixed image thumbnail generation not taking EXIF rotation data into account. ([#1854](https://github.com/BookStackApp/BookStack/issues/1854))
216
217
218 **Released in v22.02.1 through v22.02.3**
219
220 * Updated editor references to avoid caching issue that would prevent WYSIWYG editor from opening. ([#3293](https://github.com/BookStackApp/BookStack/issues/3293))
221 * Updated code blocks within the editor to be more reliable, especially on first insertion. ([#3292](https://github.com/BookStackApp/BookStack/issues/3292))
222 * Added cache breaker to WYSIWYG onward loading to prevent plugin errors appearing if cached. ([#3303](https://github.com/BookStackApp/BookStack/pull/3303))
223 * 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))
224 * Updated sidebar fade to be more subtle when in dark mode. ([#3203](https://github.com/BookStackApp/BookStack/issues/3203))
225 * Fixed WYISWYG editor issue where blank lines would collapse. ([#3302](https://github.com/BookStackApp/BookStack/issues/3302))
226 * Added iframe allow-list control to prevent a range of malicious uses of untrusted iframe sources. ([#3314](https://github.com/BookStackApp/BookStack/issues/3314))
227
228 ### Next Steps
229
230 With the changes in this release, the WYSIWYG and markdown editors are now much better aligned in terms of features & functionality.
231 Over the next month the focus will be on providing the ability to switch between the editor types. 
232 This will likely be at a per-page level, with permission controls to decide who wields that power to change editor type.
233
234 ----
235
236 <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>