]> BookStack Code Mirror - website/blob - content/blog/2025/bookstack-release-v25-02.md
Completed core v25.02 post writing
[website] / content / blog / 2025 / bookstack-release-v25-02.md
1 +++
2 categories = ["Releases"]
3 tags = ["Releases"]
4 title = "BookStack Release v25.02"
5 date = 2025-02-27T12:00:00Z
6 author = "Dan Brown"
7 image = "/images/blog-cover-images/cc-by-4/resevoir-julian-herzog.jpg"
8 slug = "bookstack-release-v25-02"
9 draft = false
10 +++
11
12 Today we release BookStack v25.02! This aimed to be a maintenance 
13 release to upgrade the core framework, but it also introduces
14 automatic sorting along with some other enhancements.
15
16 * [Update instructions](/docs/admin/updates)
17 * [GitHub release page](https://github.com/BookStackApp/BookStack/releases/tag/v25.02)
18
19 **Upgrade Notices**
20
21 TODO - Copy to updates page
22
23 - **PHP Version Requirement Change** - The minimum supported PHP version has changed from PHP 8.0.2 to PHP 8.1 in this release. Please see our ["Updating PHP & Composer" documentation page](/docs/admin/updating-php/#updating-php) for guidance on updating PHP where needed.
24 - **Sorting** - Basic sort order changes for chapters and pages will no longer affect the "updated" time for these items. Wider changes during sorting (moving to a new parent) will still increment the "updated" time.
25 - **Theme System** - A `public/` folder within an active theme folder will now be exposed for public access. If for some reason you already have such a folder that you don't want exposed, rename it before upgrading.
26
27 TODO - Video
28 <!-- {{<pt imWKrALvSwokP3vrjRdUXh>}} -->
29
30 ### Automatic Sorting with Sort Rules
31
32 It's now possible to automatically sort pages & chapters within a book!
33 This is done using "Sort Rules" which are centrally managed via a new "Sorting"
34 page in the application settings:
35
36 TODO - Image of sorting settings
37
38 Within a sort rule, you can configure a range of sort operations which will be applied
39 in the configured order:
40
41 TODO - Image of sort operations
42
43 Created rules can then be assigned to books via an option in the "Sort" 
44 view for a book:
45
46 TODO - book sort option
47
48 It's also possible to configure a default sort rule to assign to any new
49 created books. This is also part of the new "Sorting" settings page.
50
51 These sort rules will then automatically run on events which may alter the sort order, 
52 like page/chapter create/update.
53 The operations within a sort rule can be updated as needed, and upon save
54 any assigned books will be automatically sorted to use the new order.
55
56 For those that want to assign a sort rule to their existing books, [a new
57 command](/docs/admin/commands/#assign-sort-rule) has been added to make this easy.
58 This has various options for batch assigning sort rules to books.
59
60 ### Search Indexing Improvements
61
62 The way BookStack indexes content for search now follows more advanced logic
63 for this release to address some common limitation faced.
64 Specifically, single terms containing certain punctuation like `.` periods
65 would have previously been split, leaving any searches for terms like "24.5" 
66 falling back to slower exact matches. 
67
68 As of v25.02, BookStack will now index the non-split term in addition to the split term, 
69 allowing both to match with indexed and scored results.
70 In additions to `.` periods, this is also done for `-` hyphens which we previously did not
71 consider before.
72
73 Lastly, «giullemets» are now considered as punctuation in the same manner as other brackets.
74
75 Note that to receive this improvements for existing content, you'll need to 
76 [regenerate the search index](/docs/admin/commands/#regenerate-the-search-index) after upgrading.
77
78
79 ### Improvements for the New WYSIWYG Editor
80
81 The new alpha WYSIWYG editor, [introduced in v24.10](/blog/bookstack-release-v24-10/#new-alpha-wysiwyg-editor-option), received another bunch of additions of fixes for this release:
82
83 - Added custom color select/management to color picker controls.
84 - Added color pickers to relevant form fields.
85 - Added table caption support.
86 - Added src conversions for YouTube urls via media insert.
87 - Added additional test helpers and documentation.
88 - Fixed issues with auto-url on space/enter, when at the end of a line.
89 - Fixed error importing code blocks in some cases.
90
91 The editor is now pretty much feature complete compared to the existing WYSIWYG editor,
92 but I want to develop a few key area into better stability before moving it into beta.
93
94 ### Public Files via Theme System
95
96 A common challenge for BookStack customization was how to expose files that need
97 to be loaded via the browser, like CSS and JavaScript files.
98
99 While there were some methods to work around this, BookStack now provides a 
100 direct way using the theme system via simply creating a `public` directory
101 within your theme folder.
102 Any files within this folder will then be served at the `theme/<theme_name>/`
103 location of your BookStack instance. 
104
105 For full details, see the added ["Publicly Accessible Files"](https://github.com/BookStackApp/BookStack/blob/development/dev/docs/visual-theme-system.md#publicly-accessible-files) section of the visual theme system documentation.
106
107 ### Framework Upgrade
108
109 The core aim for this release was to update the underlying framework.
110 We updated from Laravel 10 to Laravel 11, which also required a change
111 of our minimum required PHP version from PHP 8.1 to PHP 8.2.
112 This is something we generally do yearly to ensure we're staying on
113 supported versions of the software we depend on.
114 Hopefully there'll be no negative impact outside of some users needing to update
115 their installed PHP version.
116
117 ### Translations
118
119 A big thanks to the following ingenious interlingual interpreters that have helped
120 to translate BookStack since our last feature release:
121
122 - User - *Lang - 4580 words*
123
124 *\* Word counts are those tracked by Crowdin, indicating original EN words translated.*
125
126 ### Next Steps
127
128 We have the 10 year anniversary of BookStack coming up later this year.
129 I may stretch out this release cycle, to work on a chunkier feature, but I'm
130 decided on that yet.
131
132 I will continue to work on the new WYSIWYG editor with the aim to get
133 it in more of a "beta" state for the next feature release.
134 If I do stretch out the release cycle, I'll look to get editor fixes & enhancements
135 out via patch releases instead of waiting for a full release.
136
137 ### Full List of Changes
138
139 **Released in v25.02**
140
141 * Added sort rules with automatic book sorting. ([#5457](https://github.com/BookStackApp/BookStack/pull/5457), [#2065](https://github.com/BookStackApp/BookStack/issues/2065))
142 * Added method to serve public files via the theme system. ([#5405](https://github.com/BookStackApp/BookStack/pull/5405), [#3904](https://github.com/BookStackApp/BookStack/issues/3904))
143 * Updated app framework to Laravel 11. ([#5400](https://github.com/BookStackApp/BookStack/pull/5400))
144 * Updated codebase minimum PHP version from 8.1 to 8.2. ([#5397](https://github.com/BookStackApp/BookStack/issues/5397))
145 * Updated codebase to address various PHP 8.4 deprecations. ([#5491](https://github.com/BookStackApp/BookStack/pull/5491))
146 * Updated new WYSIWYG editor with a range of fixes. ([#5415](https://github.com/BookStackApp/BookStack/pull/5415))
147 * Updated search indexing to handle guillemets. Thanks to [@inv-hareesh](https://github.com/BookStackApp/BookStack/pull/5475). ([#5475](https://github.com/BookStackApp/BookStack/pull/5475), [#5471](https://github.com/BookStackApp/BookStack/issues/5471))
148 * Updated search indexing with advanced tokenization along with hyphen handling. ([#5488](https://github.com/BookStackApp/BookStack/pull/5488), [#2095](https://github.com/BookStackApp/BookStack/issues/2095))
149 * Updated sort handling to not increment the updated date for sorted content. ([#1777](https://github.com/BookStackApp/BookStack/issues/1777))
150 * Updated translations with latest Crowdin changes. ([#5409](https://github.com/BookStackApp/BookStack/pull/5409), [#5399](https://github.com/BookStackApp/BookStack/pull/5399))
151 * Fixed incorrect image orientation handling. ([#5462](https://github.com/BookStackApp/BookStack/issues/5462))
152 * Fixed layout issues at specific breakpoints. ([#5396](https://github.com/BookStackApp/BookStack/issues/5396))
153 * Fixed LDAP error thrown when server does not provide a cn value. ([#5443](https://github.com/BookStackApp/BookStack/issues/5443))
154 * Fixed wrong condition for showing new books list. Thanks to [@Silverlan](https://github.com/BookStackApp/BookStack/pull/5470). ([#5470](https://github.com/BookStackApp/BookStack/pull/5470))
155
156
157 **Released in v24.12.1**
158
159 * Updated export logic to have better temp file clean-up. ([#5374](https://github.com/BookStackApp/BookStack/issues/5374), [#5379](https://github.com/BookStackApp/BookStack/pull/5379))
160 * Updated in-app export endpoints to have rate limits. ([#5379](https://github.com/BookStackApp/BookStack/pull/5379))
161 * Updated translations with latest Crowdin changes. ([#5370](https://github.com/BookStackApp/BookStack/pull/5370))
162 * Updated PHP dependency package versions.
163 * Fixed markdown editor focus jumping on image insert. ([#5384](https://github.com/BookStackApp/BookStack/issues/5384))
164
165 ----
166
167 <span style="font-size: 0.8em;opacity:0.9;">Header Image Credits: <span>Photo by <a href="https://commons.wikimedia.org/wiki/File:Howden_Dam_Upper_Derwent_Reservoir_2023_01.jpg">Julian Herzog (CC-BY-4)</a> - Image Modified</span></span>