draft = false
+++
-TODO
+Today we release BookStack v25.02! This aimed to be a maintenance
+release to upgrade the core framework, but it also introduces
+automatic sorting along with some other enhancements.
* [Update instructions](/docs/admin/updates)
* [GitHub release page](https://github.com/BookStackApp/BookStack/releases/tag/v25.02)
TODO - Copy to updates page
-- **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.
+- **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.
- **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.
+- **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.
TODO - Video
<!-- {{<pt imWKrALvSwokP3vrjRdUXh>}} -->
-### Feature
+### Automatic Sorting with Sort Rules
-TODO
+It's now possible to automatically sort pages & chapters within a book!
+This is done using "Sort Rules" which are centrally managed via a new "Sorting"
+page in the application settings:
+TODO - Image of sorting settings
+
+Within a sort rule, you can configure a range of sort operations which will be applied
+in the configured order:
+
+TODO - Image of sort operations
+
+Created rules can then be assigned to books via an option in the "Sort"
+view for a book:
+
+TODO - book sort option
+
+It's also possible to configure a default sort rule to assign to any new
+created books. This is also part of the new "Sorting" settings page.
+
+These sort rules will then automatically run on events which may alter the sort order,
+like page/chapter create/update.
+The operations within a sort rule can be updated as needed, and upon save
+any assigned books will be automatically sorted to use the new order.
+
+For those that want to assign a sort rule to their existing books, [a new
+command](/docs/admin/commands/#assign-sort-rule) has been added to make this easy.
+This has various options for batch assigning sort rules to books.
### Search Indexing Improvements
Note that to receive this improvements for existing content, you'll need to
[regenerate the search index](/docs/admin/commands/#regenerate-the-search-index) after upgrading.
+
+### Improvements for the New WYSIWYG Editor
+
+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:
+
+- Added custom color select/management to color picker controls.
+- Added color pickers to relevant form fields.
+- Added table caption support.
+- Added src conversions for YouTube urls via media insert.
+- Added additional test helpers and documentation.
+- Fixed issues with auto-url on space/enter, when at the end of a line.
+- Fixed error importing code blocks in some cases.
+
+The editor is now pretty much feature complete compared to the existing WYSIWYG editor,
+but I want to develop a few key area into better stability before moving it into beta.
+
+### Public Files via Theme System
+
+A common challenge for BookStack customization was how to expose files that need
+to be loaded via the browser, like CSS and JavaScript files.
+
+While there were some methods to work around this, BookStack now provides a
+direct way using the theme system via simply creating a `public` directory
+within your theme folder.
+Any files within this folder will then be served at the `theme/<theme_name>/`
+location of your BookStack instance.
+
+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.
+
+### Framework Upgrade
+
+The core aim for this release was to update the underlying framework.
+We updated from Laravel 10 to Laravel 11, which also required a change
+of our minimum required PHP version from PHP 8.1 to PHP 8.2.
+This is something we generally do yearly to ensure we're staying on
+supported versions of the software we depend on.
+Hopefully there'll be no negative impact outside of some users needing to update
+their installed PHP version.
+
### Translations
-TODO
+A big thanks to the following ingenious interlingual interpreters that have helped
+to translate BookStack since our last feature release:
- User - *Lang - 4580 words*
### Next Steps
-TODO
+We have the 10 year anniversary of BookStack coming up later this year.
+I may stretch out this release cycle, to work on a chunkier feature, but I'm
+decided on that yet.
+
+I will continue to work on the new WYSIWYG editor with the aim to get
+it in more of a "beta" state for the next feature release.
+If I do stretch out the release cycle, I'll look to get editor fixes & enhancements
+out via patch releases instead of waiting for a full release.
### Full List of Changes
**Released in v25.02**
-TODO
+* Added sort rules with automatic book sorting. ([#5457](https://github.com/BookStackApp/BookStack/pull/5457), [#2065](https://github.com/BookStackApp/BookStack/issues/2065))
+* 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))
+* Updated app framework to Laravel 11. ([#5400](https://github.com/BookStackApp/BookStack/pull/5400))
+* Updated codebase minimum PHP version from 8.1 to 8.2. ([#5397](https://github.com/BookStackApp/BookStack/issues/5397))
+* Updated codebase to address various PHP 8.4 deprecations. ([#5491](https://github.com/BookStackApp/BookStack/pull/5491))
+* Updated new WYSIWYG editor with a range of fixes. ([#5415](https://github.com/BookStackApp/BookStack/pull/5415))
+* 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))
+* 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))
+* Updated sort handling to not increment the updated date for sorted content. ([#1777](https://github.com/BookStackApp/BookStack/issues/1777))
+* Updated translations with latest Crowdin changes. ([#5409](https://github.com/BookStackApp/BookStack/pull/5409), [#5399](https://github.com/BookStackApp/BookStack/pull/5399))
+* Fixed incorrect image orientation handling. ([#5462](https://github.com/BookStackApp/BookStack/issues/5462))
+* Fixed layout issues at specific breakpoints. ([#5396](https://github.com/BookStackApp/BookStack/issues/5396))
+* Fixed LDAP error thrown when server does not provide a cn value. ([#5443](https://github.com/BookStackApp/BookStack/issues/5443))
+* 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))
**Released in v24.12.1**