]> BookStack Code Mirror - website/blob - content/blog/2025/bookstack-release-v25-05.md
Added v25.05 video
[website] / content / blog / 2025 / bookstack-release-v25-05.md
1 +++
2 categories = ["Releases"]
3 tags = ["Releases"]
4 title = "BookStack Release v25.05"
5 date = 2025-05-31T14:30:00Z
6 author = "Dan Brown"
7 image = "/images/blog-cover-images/cc-by-2/karen-roe-pond.jpg"
8 slug = "bookstack-release-v25-05"
9 draft = false
10 +++
11
12 Today we have the May 2025 release of BookStack. The headline features
13 of this release are focused on new comment abilities but we have some other goodies
14 packaged in also!
15
16 * [Update instructions](/docs/admin/updates)
17 * [GitHub release page](https://github.com/BookStackApp/BookStack/releases/tag/v25.05)
18
19 {{<pt 9xmgxBYNdCt4FyZsAVdhDx>}}
20
21 ### Content Comments
22
23 In a platform like BookStack it's quite likely that page comments will be referring
24 to a specific part of the page content, which you'd previously need to describe
25 as part of the comment text.
26 With this release, it's now possible to directly & visually reference a part of the 
27 page content in a comment.
28 This is achieved via a new button in the content popover, which is shown when part of the page text
29 is selected:
30
31 ![View of the floating popover accessed when viewing a page, with the mouse cursor hovering above a comment icon](/images/2025/05/inline_comment_action.png)
32
33 Clicking this will start a new comment with a reference to the selected area & text range.
34 When viewing the page, this will then show as a highlight and marker for that content:
35
36
37 ![View of some page content, with a single word highlighted in a pale blue, with a floating comment bubble icon in the top right of the highlighted region](/images/2025/05/inline_comment_marker.png)
38
39 Clicking the comment marker will then open up that comment thread:
40
41 ![View of some page content, with a single word highlighted in a pale blue, with an active comment thread floating below this highlight zone](/images/2025/05/inline_comment_display.png)
42
43 From there you can close or read the thread within this inline display, or click the "Jump to thread"
44 action to jump to the full thread in the comments area, where you can edit or reply as needed.
45
46 When viewing the comments below the page, those which reference content will have an indicator to reflect their connection
47 to specific content. This may show as outdated if the referenced content has changed since the comment
48 was made. Clicking on this indicator will jump the user to the relevant section on the page.
49 If the referenced section no longer exists at all, this indicator will become orange and can't be clicked.
50
51 ![View of three comments at the bottom of the page, with each having content starting with a "Reference" badge. The first is blue. The second also has the text "Outdated" in this badge. The third also shows "Outdated" but is orange](/images/2025/05/comment_reference_indicators.png)
52
53 Some of these features are also supported in the page editor.
54 When using the new WYSIWYG editor, opening the comments sidebar will show the inline comments 
55 (where possible) and the reference indicators will be active as explained above.
56 This isn't supported in the markdown or the old default WYSIWYG editor; there the 
57 indicators will instead remain gray to represent being inactive.
58
59 ![BookStack page editor showing the comments sidebar open, and comment bubbles within the page content, with open open showing a discussion floating above page content](/images/2025/05/inline_comments_in_editor.png)
60
61 One thing to note is that only the starting comment of a thread can reference content in this way.
62 This is to avoid a range of confusing user experience scenarios, like having parts of threads duplicated across
63 various inline comment markers.
64
65 ### Comment Archiving
66
67 With the addition of content comments, I thought that comments would now be much more useful
68 for creating todo-like actions regarding the page content.
69 In such usage, it would really help to have a way to close-off and hide comments.
70 While you could delete comments, from a user perspective that seems quite dangerous, and in 
71 most scenarios you'd want to retain that context that led to changes.
72
73 To support these kind of scenarios, this release adds the ability to archive comments.
74 This is an action which shows on a comment like the existing options:
75
76 ![View the page comments in BookStack, with the comments under two tabs which have the labels "1 Comment Thread" and "2 Archived". A mouse cursor hovers over an "Archive" action on the first visible comment](/images/2025/05/archived_comments.png)
77
78 In the comments area, you'll now see tabs for jumping between active and archived threads.
79 Inline comment markers, introduced above, will show based upon which tab is active.
80 Within the page editor, archived threads can be accessed via a dropdown below active 
81 comment threads.
82
83 ![View of comment sidebar in editor with a "Archived Threads" dropdown below existing comments](/images/2025/05/archived_comments_in_editor.png)
84
85 Only the top-most comments have the ability to be archived or unarchived,
86 to keep management thread-based otherwise you will have parts of threads
87 split between tabs.
88 In terms of permissions, the ability to archive is currently just based
89 on the ability to edit or delete the comment.
90
91 ### AVIF Image Support
92
93 BookStack will now support the use of AVIF images for all 
94 places you can upload images!
95 AVIF, which is the image version of the AV1 video standard,
96 is a modern image format which can achieve great compression 
97 for smaller image file sizes at equivalent quality.
98 It's also quite featureful, with support for transparency, animation,
99 HDR, and lossless compression.
100
101 The only area which won't currently support AVIF images is 
102 our default PDF export option, but hopefully support in this
103 area will be here soon.
104
105 For an in-depth look & comparison of AVIF I'd strongly recommend reading
106 this blog post by Jake Archibald: https://jakearchibald.com/2020/avif-has-landed/
107
108 ### OIDC User Avatar Support
109
110 From this release it's now possible for instances using OIDC
111 authentication to assign user avatar images from the data
112 given from the OIDC system.
113 This can be enabled through the following `.env` option:
114
115 ```bash
116 OIDC_FETCH_AVATAR=true
117 ```
118
119 **Warning:** This should only be enabled where you trust the connected
120 OIDC system to provide safe URLs for user images otherwise this can 
121 present a server-side-fetching risk.
122
123 With this option enabled, upon login, BookStack will use the `picture` claim provided
124 in OIDC user data, and fetch that image to save it as the user's avatar.
125 This will only be done if the user does not already have a user avatar image set.
126
127 A big thanks to [@rubentalstra](https://github.com/BookStackApp/BookStack/pull/5429)
128 for contributing this feature.
129
130 ### System Info API Endpoint
131
132 A new api endpoint has been added in this release which provides some high-level
133 details of the system. The endpoint can be accessed at `GET /api/system` and
134 returns data like that shown below:
135
136 ```json
137 {
138   "version": "v25.02.4",
139   "instance_id": "1234abcd-cc12-7808-af0a-264cb0cbd611",
140   "app_name": "My BookStack Instance",
141   "app_logo": "https://docs.example.com/uploads/images/system/2025-05/cat-icon.png",
142   "base_url": "https://docs.example.com"
143 }
144 ```
145
146 This can be useful in integration scenarios where you need specific details
147 to make decisions or display elsewhere.
148
149 ### New WYSIWYG Editor Updates, Now in Beta
150
151 The new WYSIWYG editor, [introduced back in v24.10](/blog/bookstack-release-v24-10/#new-alpha-wysiwyg-editor-option),
152 is moving from Alpha to Beta status in this release!
153 We've now been through many patch and feature releases where fixes and
154 improvements have been made to this editor, so I'm happy to move it
155 a little further along the journey to becoming the default editor option.
156
157 During this stage I'll open up feedback to customization requirements while
158 also maybe switching over the comment WYSIWYG editor to use the same new framework
159 we've built here.
160
161 A big thanks to everyone that has [provided feedback](https://github.com/BookStackApp/BookStack/issues/5245)
162 during this alpha stage. I've started a [new fresh thread here](https://github.com/BookStackApp/BookStack/issues/5631) to gain feedback for this beta stage.
163
164 This release does bring a range of fixes and improvements itself:
165
166 - Updated dropdown behaviour to align with existing editor.
167 - Made it easier to escape above/below tables, code blocks and diagrams.
168 - Added auto-conversion of links to images on paste to align with existing editor behaviour.
169 - Fixed buggy diagram selection and keyboard interaction.
170 - Fixed table column size changes not showing until after page save.
171 - Fixes table selection/navigation issues when a caption is present or when changes are made to the table.
172
173 ### Translations
174
175 Once again a massive thanks to all the below precise prose professionals who have 
176 kindly contributed translations since our last feature release:
177
178 - mabdullah - *Arabic - 3862 words*
179 - Leonardo Mario Martinez (leonardo.m.martinez) - *Spanish, Argentina - 1678 words*
180 - m4z - *German Informal; German - 1116 words*
181 - toras9000 - *Japanese - 766 words*
182 - Qxlkdr - *Swedish - 757 words*
183 - Martins Pilsetnieks (pilsetnieks) - *Latvian - 682 words*
184 - Hari (muhhari) - *Indonesian - 597 words*
185 - Vitaliy (gviabcua) - *Ukrainian - 541 words*
186 - Jeff Huang (s8321414) - *Chinese Traditional - 506 words*
187 - cbridi - *Portuguese, Brazilian - 363 words*
188 - 仙君御 (xjy) - *Chinese Simplified - 336 words*
189 - Skrabák Csaba (kekcsi) - *Hungarian - 308 words*
190 - matthias4217 - *French - 300 words*
191 - Evert Meulie (Evert) - *Norwegian Bokmal - 263 words*
192 - neodvisnost - *Slovenian - 167 words*
193 - Jasper Backer (jasperb) - *Dutch - 124 words*
194 - Alexandar Cavdarovski (ace.200112) - *Swedish - 86 words*
195 - Ilya Shaulov (ishaulov) - *Russian - 85 words*
196 - Soubi Agatsuma (bisouya) - *Hebrew - 81 words*
197 - Igor V Belousov (biv) - *Russian - 71 words*
198 - Indrek Haav (IndrekHaav) - *Estonian - 57 words*
199 - 周盛道 (zhoushengdao) - *Chinese Simplified - 56 words*
200 - 구닥다리TV (yjj8353) - *Korean - 54 words*
201 - Konstantin Bobkov (b.konstantv) - *Russian - 46 words*
202 - scureza - *Italian - 40 words*
203 - Onur Oskay (o.oskay) - *Turkish - 38 words*
204 - Sébastien Merveille (SebastienMerv) - *French - 37 words*
205 - Honza Nagy (honza.nagy) - *Czech - 32 words*
206 - Maxim Kouznetsov (masya.work) - *Hebrew - 15 words*
207 - nutsflag - *French - 13 words*
208 - Guttorm Hveem (guttormhveem) - *Norwegian Nynorsk - 9 words*
209 - Ruben Sutter (rubensutter) - *German - 2 words*
210 - Michał Lipok (mLipok) - *Polish - 2 words*
211 - jellium - *French - 2 words*
212
213 *Word counts are those tracked by Crowdin, indicating original EN words translated.*
214
215 ### Next Steps
216
217 As referenced above, with the new editor moving to beta I may look to update the comment
218 editor to this new implementation, to get it used in more production scenarios, yet in a limited scope.
219 Regardless, I'm sure more fixes and improvements will be made in this area.
220
221 In July we'll see the 10 year anniversary since the start of the project.
222 I was aiming to build one of the very complicated & highly requested features in our backlog
223 for this event, but I burnt out on that after various attempts in this release cycle,
224 so I'm not keen on doing that again. 
225 I'm not one for a lot of fanfare, but I'm going to try and think about some different things
226 we can do to celebrate this milestone.
227
228 ### Full List of Changes
229
230 **Released in v25.05**
231
232 * Added support for comments to reference page sections. ([#5584](https://github.com/BookStackApp/BookStack/pull/5584), [#1265](https://github.com/BookStackApp/BookStack/issues/1265))
233 * Added comment archive support. ([#5584](https://github.com/BookStackApp/BookStack/pull/5584))
234 * Added AVIF image support. ([#5625](https://github.com/BookStackApp/BookStack/pull/5625), [#5474](https://github.com/BookStackApp/BookStack/issues/5474))
235 * Added new system info API endpoint. ([#5607](https://github.com/BookStackApp/BookStack/pull/5607), [#5603](https://github.com/BookStackApp/BookStack/issues/5603))
236 * Added user avatar image fetching for OIDC authentication. Thanks to [@rubentalstra](https://github.com/BookStackApp/BookStack/pull/5429). ([#5626](https://github.com/BookStackApp/BookStack/pull/5626), [#5429](https://github.com/BookStackApp/BookStack/pull/5429), [#4271](https://github.com/BookStackApp/BookStack/issues/4271))
237 * Updated new WYSIWYG editor with further fixes. ([#5627](https://github.com/BookStackApp/BookStack/pull/5627))
238 * Updated page-edit redirect to page-view if permission failed on edit. ([#5568](https://github.com/BookStackApp/BookStack/issues/5568))
239 * Updated translations with latest Crowdin changes. ([#5622](https://github.com/BookStackApp/BookStack/pull/5622))
240 * Update codebase and packages to address php 8.4 depreactions. ([#5358](https://github.com/BookStackApp/BookStack/issues/5358))
241
242 **Released in v24.02.5**
243
244 * Fixed incorrect image directory permissions. ([#5609](https://github.com/BookStackApp/BookStack/pull/5609), [#5605](https://github.com/BookStackApp/BookStack/issues/5605))
245 * Updated translations with latest Crowdin changes. ([#5608](https://github.com/BookStackApp/BookStack/pull/5608))
246 * Updated PHP packages.
247 * Updated system CLI:
248   - Fixed handling of database credentials with escaped special characters.
249   - Updated download-vendor command with extra clean-up handling.
250
251
252 **Released in v24.02.4**
253
254 * Updated PHP dependency package versions to fix compatibility issue on systems with recent libxml versions (eg. Arch Linux).
255
256 **Released in v24.02.3**
257
258 * Updated image file permission error handling for images to log instead of fail. ([#5601](https://github.com/BookStackApp/BookStack/pull/5601), [#5269](https://github.com/BookStackApp/BookStack/issues/5269))
259 * Fixed style issues in exports due to CSS variables being ignored. ([#5576](https://github.com/BookStackApp/BookStack/issues/5576))
260 * Updated translations with latest Crowdin changes. ([#5566](https://github.com/BookStackApp/BookStack/pull/5566))
261 * Updated PHP dependency package versions.
262
263 **Released in v24.02.2**
264
265
266 * Updated name sort rule handling to consider accented characters. Thanks to [@bernardo-campos](https://github.com/BookStackApp/BookStack/pull/5550). ([#5550](https://github.com/BookStackApp/BookStack/pull/5550), [#5542](https://github.com/BookStackApp/BookStack/issues/5542))
267 * Updated translations with latest Crowdin changes. ([#5537](https://github.com/BookStackApp/BookStack/pull/5537))
268 * Updated PHP dependency package versions.
269 * Fixed a range of issues for the new WYSIWYG editor: ([#5558](https://github.com/BookStackApp/BookStack/pull/5558))
270   - Fixed content saving issues, specifically on save shortcut usage.
271   - Fixed list conversion & parsing which was mishandling tasks lists.
272   - Fixed a range of list selection and nesting scenarios.
273   - Updated keyboard navigation to be more reliable around images & media embeds.
274 * Fixed comment times not being shown. ([#5555](https://github.com/BookStackApp/BookStack/issues/5555))
275
276 **Released in v24.02.1**
277
278 * Added ipv6 database host address support. ([#5464](https://github.com/BookStackApp/BookStack/issues/5464))
279 * Updated translations with latest Crowdin changes. ([#5505](https://github.com/BookStackApp/BookStack/pull/5505))
280 * Updated revisions list to hide changes link for oldest revision. ([#5454](https://github.com/BookStackApp/BookStack/issues/5454))
281 * Updated system CLI:
282   * Added new `download-vendor` command.
283   * Updated restore command to take environment variables into account. ([#5489](https://github.com/BookStackApp/BookStack/issues/5489))
284   * Updated backup command to use mariadb-dump where available. ([#5373](https://github.com/BookStackApp/BookStack/issues/5373))
285   * Updated update command to check, warn and exit early if the CLI is making changes to itself. ([#5335](https://github.com/BookStackApp/BookStack/issues/5335))
286   * Updated MySQL handling to use option files to pass details to CLI executions.
287   * Updated MySQL handling to consider common xampp directory.
288 * Updated PHP dependencies.
289
290 ----
291
292 <span style="font-size: 0.8em;opacity:0.9;">Header Image Credits: <span>Photo by <a href="https://www.flickr.com/photos/karen_roe/8247172011">Karen Roe (CC-BY-2)</a> - Image Modified</span></span>