draft = false
+++
-For this Christmas time holiday season we have BookStack v24.12 which includes the gift of a
+For this Christmas time holiday period we have BookStack v24.12 which includes the gift of a
new import & export format, while improving upon the new editor introduced in the last release.
* [Update instructions](/docs/admin/updates)
**Upgrade Notices**
-- **Requirements Change** - The "zip" PHP extension is now a requirement for BookStack. If you installed via our Ubuntu scripts, this should already be installed.
+- **Requirements Change** - The PHP "zip" extension is now a requirement for BookStack. If you installed via our Ubuntu scripts, this should already be installed.
### New Importable Export Format
-A new export option is now available for books, chapters & pages: "Portable ZIP"
+A new "Portable ZIP" export option is now available for books, chapters & pages:
-TODO - Image of export options
+<img alt="View of the export dropdown in BookStack, with the mouse hovering the 'Portable ZIP' option which sits below 4 other export options" src="/images/2024/12/export-options.png" width="460">
This exports your content within a compressed ZIP file, containing common
related data including tags, attachments and images.
These ZIP files can then be imported back into your instance, or you could even
-import these into other BookStack instances (as long as they're on v24.12 or greater).
+import these into other BookStack instances (if they're on v24.12 or greater).
During the import process, you're provided an overview of the content you're due to import
and are able to choose the target parent location (for chapter and page imports):
-TODO - Image of in progress Import overview
+
Upon import, all the content of the ZIP will be added to the target BookStack instance, with attachments & images
uploaded into the system, and links between items in the import handled to point to the correct location in the target instance.
To support this addition, A new "Import content" role permission has been added
which will only be assigned to admin level roles by default (those who can change app settings).
-With this permission assigned, a user can access the "Import" view via the actions on the Books list view.
+With this permission assigned, a user can access the "Import" area via the actions on the Books page.
-TODO - Image of import list
+
On this page you can upload a ZIP to start an import, or see existing pending imports.
Users will only see their own import uploads by default, but users with permission to change app settings
will be able to see all pending imports from all users.
-The ZIP format & structure has been specifically designed to be simple and easy to understand for developers.
-The format is [fully documented here](https://github.com/BookStackApp/BookStack/blob/development/dev/docs/portable-zip-file-format.md)
-so ensure the format is accessible to developers.
+The ZIP format & structure has been specifically designed to be simple and easy to understand,
+and it's [fully documented here](https://github.com/BookStackApp/BookStack/blob/development/dev/docs/portable-zip-file-format.md)
+to ensure the format is accessible to developers.
To be clear, this is not intended as a backup format. There's a lot of metadata that is not part of these exports, so backups
-should still be done at an instance level following our guidance.
-That said, there's a lot of opportunity that I'm excited about in this portable and stable common import/export format.
-
+should still be done at an instance level [following our guidance](/docs/admin/backup-restore/).
+That said, I'm excited about the wide array of possibilities for such a portable and stable common import/export format.
Here's some ideas in how this new format could be potentially used:
-- Export & import template books
-- Sharing books between different BookStack instances
-- Target format for building migration tools
-- Easier access/display of content in external applications
-- A way to "Promote" content from a "Staging" instance to a "Production" instance
+- Export & import of template books.
+- Sharing books between different BookStack instances.
+- A target format for building migration tools.
+- Easier access/display of content in external applications.
+- A way to "Promote" content from a "Staging" instance to a "Production" instance.
-One notable limitation is that there's not yet API endpoints provided for import/export of this format.
+One notable limitation is that there's not yet any export/import API endpoints provided for this format.
This was initially planned, but I want delay that for a while to ensure the process we have works, before adding API
support since there'd otherwise be a significant chance of API breaking changes.
In the [last release we introduced](/blog/bookstack-release-v24-10/#new-alpha-wysiwyg-editor-option)
the new WYSIWYG editor in alpha testing. It remains in an alpha-testing state for this release, but
-it's received a number of improvements:
+it's received a number of significant improvements:
- Dark mode is now supported.
- The UI will now properly adapt for mobile screen sizes.
- Behaviour of collapsible blocks has been improved & made consistent.
- Selection and nesting behaviour of lists has been improved.
-Upon these user-facing improvements, work has gone into further merge & develop the underlying
-codebase for this editor since we decided to fork in the [Lexical](https://lexical.dev/) editor core code late in the last
+
+
+Upon these user-facing improvements, more work has gone into merging & developing the underlying
+codebase for this editor since I decided to fork in the [Lexical](https://lexical.dev/) editor core code late in the last
development cycle.
### API Improvements
### LDAP: Support for multiple name attributes
-For users using LDAP for authentication, it's now possible to make of multiple LDAP
+For those using LDAP for authentication, it's now possible to make use of multiple LDAP
attributes for a user's name. To do this, you can just define multiple
attributes in the `LDAP_DISPLAY_NAME_ATTRIBUTE` setting separated with a pipe like so:
```
Values of those properties will then be combined with a space.
-In the above example upon first login, if the LDAP user data has a `firstname` of `Barry` and a
+In the above example, upon first login, if the LDAP user data has a `firstname` of `Barry` and a
`lastname` of `Chuckle`, their name in BookStack would be `Barry Chuckle` as a result.
Thanks to [@MatthieuLeboeuf](https://github.com/BookStackApp/BookStack/pull/5295) for working on this one!
### Translations
-TODO
-
-- User - *Lang - x words*
+A big thanks to all the below terrific textual transformers who have helped translate the BookStack UI into a range of different languages since our last feature release:
+
+- Ásgeir Shiny Ásgeirsson (AsgeirShiny) - *Icelandic - 4580 words*
+- Michele Bastianelli (makoblaster) - *Italian - 1090 words*
+- Avishay Rapp (AvishayRapp) - *Hebrew - 699 words*
+- Mohammad Aftab Uddin (chirohorit) - *Bengali - 1683 words*
+- Yannis Karlaftis (meliseus) - *Greek - 547 words*
+- felixxx - *German Informal - 315 words*
+- Jeff Huang (s8321414) - *Chinese Traditional - 515 words*
+- Jøran Haugli (haugli92) - *Norwegian Bokmal - 312 words*
+- m0uch0 - *Spanish - 332 words*
+- sarahalves7 - *Portuguese, Brazilian - 301 words*
+- Tim (thegatesdev) - *Dutch - 183 words*
+- Ngoc Lan Phung (lanpncz) - *Vietnamese - 52 words*
+- Maciej Lebiest (Szwendacz) - *Polish - 49 words*
+- ka_picit - *Danish - 36 words*
+- Guttorm Hveem (guttormhveem) - *Norwegian Nynorsk - 35 words*
+- Mohammed srhiri (m.sghiri20) - *Arabic - 21 words*
+- YongMin Kim (kym0118) - *Korean - 22 words*
+- Mykola Ronik (Mantikor) - *Ukrainian - 20 words*
+- scureza - *Italian - 20 words*
+- Martin Sebek (sebekmartin) - *Czech - 20 words*
+- toras9000 - *Japanese - 56 words*
+- grobert63 - *French - 22 words*
+- Rivo Zängov (Eraser) - *Estonian - 15 words*
+- ИEØ_ΙΙØZ (NEO_IIOZ) - *Chinese Traditional - 21 words*
+- madnjpn (madnjpn.) - *Georgian - 4 words*
+- 10935336 - *Chinese Simplified - 4 words*
+- test65428 - *Greek - 5 words*
+- petr.husak - *Czech - 2 words*
+- Francisco Rafael Fonseca (chicoraf) - *Portuguese, Brazilian - 2 words*
*\* Word counts are those tracked by Crowdin, indicating original EN words translated.*
### Next Steps
Our next main release will probably be a maintenance release. With PHP 8.4 we're hitting a lot of PHP deprecations which we can't
-overcome without updating our framework and minimum PHP version, we we'll probably get our yearly update in that regard out the way a
-little sooner, but dropping PHP 8.1 support will need a little extra work due to its widespread use.
+overcome without updating our framework and minimum PHP version, so we'll probably get our yearly update in that regard out the way a
+bit sooner, but dropping PHP 8.1 support will need a little extra work due to its widespread use.
I'd also like to tie up some loose ends, like provide some more options for the [PDF export command we added this year](/blog/bookstack-release-v24-05/#command-based-pdf-export-option).
-Other than that I'd like to spend a fair bit more time on the new editor so it can move into a more "Beta" status for the next release
+
+Lastly I'm planning to spend a bit more time on the new editor so it can move into a more "Beta" status for the next release
to continue it's journey to eventually becoming the default option.
### Full List of Changes
* Updated project NPM package & SASS deprecations/changes. ([#5354](https://github.com/BookStackApp/BookStack/pull/5354))
* Updated the new WYSIWYG editor with a range of fixes/updates. ([#5365](https://github.com/BookStackApp/BookStack/pull/5365))
* Updated translations with latest Crowdin changes. ([#5345](https://github.com/BookStackApp/BookStack/pull/5345))
-* Fixed API attachment update issue when name not provided . ([#5353](https://github.com/BookStackApp/BookStack/issues/5353))
+* Fixed API attachment update issue when name not provided. ([#5353](https://github.com/BookStackApp/BookStack/issues/5353))
* Fixed attachment actions showing when lacking permissions. ([#5323](https://github.com/BookStackApp/BookStack/issues/5323))
-* Fixed missing book description and extra newlines in markdown exports. Thanks to [@czemu](https://github.com/BookStackApp/BookStack/pull/5313). ([#5313](https://github.com/BookStackApp/BookStack/pull/5313))
-* Fixed page content indexing breaking with very large amounts of content. ([#5322](https://github.com/BookStackApp/BookStack/issues/5322))
+* Fixed missing book description and formatting in markdown exports. Thanks to [@czemu](https://github.com/BookStackApp/BookStack/pull/5313). ([#5313](https://github.com/BookStackApp/BookStack/pull/5313))
+* Fixed page indexing breaking with very large pages. ([#5322](https://github.com/BookStackApp/BookStack/issues/5322))
**Released in v24.10.3**