27 Oct 2026
Koha is the first free and open source software library automation package (ILS). Development is sponsored by libraries of varying types and sizes, volunteers, and support companies from around the world. The website for the Koha project is:
Koha 26.05.05 can be downloaded from:
Installation instructions can be found at:
Koha 26.05.05 is a bugfix/maintenance release.
It includes 6 enhancements, 50 bugfixes.
System requirements
You can learn about the system components (like OS and database) needed for running Koha on the community wiki.
This fixes two accessibility issues with the patron's OPAC messaging table (OPAC > [log in] > Your account > Messaging): "Table header text should not be empty".
Previously: 1. The first column header has no text. 2. When responsive table controls were shown for the table, there was no title in the last column header with the controls (a green "+" button is shown when the browser window is narrower and all the columns can't be displayed).
Now: 1. The first column header now has the text "Message type". 2. The responsive table control column header has the text "Expand" when the responsive controls are shown.
This fixes an error when receiving an order, when the basket has "Create items when" set to "receiving an order". Orders can now be received when this is the case.
Previously, receiving an order would result in the page staying on "Processing", and nothing further happening (as well as a browser console JavaScript error "Uncaught TypeError: unique_item_fields.split is not a function").
This patch makes the content-type detection for the OAuth2 client more robust. The result is more robust integration with external identity providers.
32748 Library limitations will cause data loss when editing items
When an authorised value used on the item edition form (e.g. damaged status, withdrawn status, etc.) was restricted to a specific library, staff at other libraries could not see the item's current value in the dropdown list and risked silently overwriting it when saving.
This is now fixed: the current value is always displayed, even if it comes from an authorised value restricted to another library, with a warning indicating it is not normally available for the logged-in library.
Sponsored by BibLibre
35104 We should warn when attempting to save MARC records that contain characters invalid in XML
Sponsored by OpenFifth
43239 Serial items item type can be set incorrectly when receiving multiple items
This fixes the item type created for serials, when item records are created for subscriptions.
Explanation:
It is possible to create subscription item records with the wrong item type if:
- the makePreviousSerialAvailablesystem preference is enabled, and
- there is no value selected for the "Item type for older issues" field.
In installations where item types differ between items and records, this causes data inconsistencies and leads to errors in a record's holdings table.
This fix changes the behaviour of the serials subscription form so that if makePreviousSerialAvailable is enabled and a subscription's "Item type for older issues" field is empty/not selected, the previous item type value is kept for item records. It also adds a hint text to the subscription form about this change.
Sponsored by Koha-Suomi Oy
43260 Debug options in navigation bar untranslatable
This fixes the "Debug controls" options in the staff interface so that they are translatable. It also changes the options to sentence case, as per the coding guidelines.
The debug controls menu that is shown in the top right-hand side of the top menu in the staff interface (only shows if the staff patron has "Display the debug interface (debug)" permissions) - options are now in sentence case:
- Disable custom CSS
- Disable custom JS
- Disable custom stylesheets
Sponsored by Athens County Public Libraries
This fixes the ILL requests history table for a patron, so that a search doesn't result in a 500 error (Patrons > [selected patron] > ILL requests history > Search [filter above the table]).
This fixes a bug with the option to make expiration notices mandatory by patron category.
Before this update, if a Primary Contact Method has not been selected on the patron's account, the expiration notice will not be sent.
With the update, the standard patron messaging preferences can be set for the expiration notice.
If the expiration notice is mandatory, but the patron does not have any messaging preferences enabled for that notice, the notice will fall back to the first possible messaging method (depending on available contact information and system settings), in this order: - email - phone - sms - print
30319 Patron self-modification values not retained if field blocked in PatronSelfRegistrationBorrowerUnwantedField
Fixes a problem in patron self-modification where the fields in PatronSelfRegistrationBorrowerUnwantedField were being discarded even when they were visible, and editable, on the patron self-modification page.
Sponsored by OpenFifth
This fixes the display of cover images on detail pages in the OPAC. For cover images with a shorter height, the loading spinner indicating that the image is currently loading was still shown after the image is loaded.
42634 Self-checkout Finish/logout does not reliably clear the JWT cookie
Sponsored by OpenFifth
This fixes resetting a password for a patron in the staff interface ("More > Send password reset" option when OpacResetPassword is set to "allowed").
If a patron has no an email message, no message was sent. There was no indication about this and the reason why, so you would assume that a password reset notice was sent (apart from redirecting to the patron notices section, where you may have noticed that there isn't a password reset notice queued).
Now, if the patron does not have an email address, a message is shown:
Unable to send password reset The patron has no email address</li>- 43672 When a patron has no advance notices value and their category is changed to one with a value the checkboxes are not enabled
41648 Incorrect 'update_date' breaks the plugins home page
Sponsored by OpenFifth
40800 TransferArrived needlessly triggers alerts in SIP
Sponsored by OpenFifth
The Elasticsearch indexer daemon is a long-lived process that never cleared its L1 (in-process) cache, meaning changes to system preferences like IncludeSeeFromInSearches were not picked up until the daemon was manually restarted. The L1 cache is now flushed before each indexing batch, so preference changes take effect on the next indexing run without requiring a daemon restart.
This fixes how language selectors/tabs are shown in the staff interface for notices and slips and additional contents (such as news and customizations) - now shown in a consistent order, and removes the "randomness" when pages are refreshed:
For the staff interface footer: shows enabled languages in the order shown in the StaffInterfaceLanguages system preference.
For notices and slips (with TranslateNotices system preference enabled) the language tabs are now shown in this order: Default, English, then all languages installed in language code order (de-DE, fr-CA, fr-FR, pt-BR, pt-PT, ...) (notes: not in the order shown in the StaffInterfaceLanguages system preference, shows all installed languages - not just enabled languages).
For additional contents (news, HTML customizations, ...) the language tabs are now shown in this order: Default, all enabled languages in the order shown in the StaffInterfaceLanguages system preference, then languages not enabled at the end (note: if there is more than one language code for a language installed (such as fr-CA and fr-FR) but one is not enabled, the languages are grouped together - the language not enabled doesn't go to the end).
43313 Item's permanent location not shown when item's location is set to CART
Sponsored by OpenFifth
This removes support for LibrisSpellcheck, as the API that this feature was based on was removed by the Swedish National Library.
It removes two system preferences: LibrisKey and LibrisURL. It also removes the LibrisSpellcheck option from "Did you mean?" (Administration > Additional parameters > Did you mean?).
34166 Show total price in table of suggestions
Sponsored by OpenFifth
42789 EDI ORDRSP: Item and suggestion status not updated when order line cancelled by supplier
Sponsored by OpenFifth
41842 Improve translation of course reserves headings
Sponsored by Athens County Public Libraries
41706 "Use of uninitialized value..." warning in C4/Record.pm
Removes the cause of "[WARN] Use of uninitialized value $2 in split at /kohadevbox/koha/C4/Record.pm line 924." warnings from the plack-opac-error.log when viewing record detail pages in the OPAC. This was related to the Cite feature.
Sponsored by Ignatianum University in Cracow
This adds two new system preferences that let you control what happens when changing a patron's category: - Updating the enrollment period expiry date: UpdateDateExpiryOnCategoryChange - Updating the messaging preferences: UpdateMessagingPrefsOnCategoryChange
When changing a patron's category, a pop-up window with pre-populated checkboxes is shown and lets you select what to do (depending on the new system preference settings).
The options for both the new system preferences are: - Never update - Ask before updating, default to no - Ask before updating, default to yes (note: this is the default) - Always update without asking
The Koha manual is maintained in Sphinx. The home page for Koha documentation is
Koha Documentation As of the date of these release notes, the Koha manual is available in the following languages:
The Git repository for the Koha manual can be found at
Complete or near-complete translations of the OPAC and staff interface are available in this release for the following languages:
Partial translations are available for various other languages.
The Koha team welcomes additional translations; please see
For information about translating Koha, and join the koha-translate list to volunteer:
The most up-to-date translations can be found at:
The release team for Koha 26.05.05 is - Release Manager: Pedro Amorim
- QA Manager: Lisette Scheer
- QA Team:
- Marcel de Rooy
- Martin Renvoize
- Jonathan Druart
- Laura Escamilla
- Lucas Gass
- Tomás Cohen Arazi
- Lisette Scheer
- Nick Clemens
- Paul Derscheid
- Emily Lamancusa
- David Cook
- Matt Blenkinsop
- Andrew Fuerste-Henry
- Brendan Lawlor
- Pedro Amorim
- Kyle M Hall
- Aleisha Amohia
- David Nind
- Baptiste Wojtkowski
- Jan Kissig
- Katrin Fischer
- Thomas Klausner
- Julian Maurice
- Owen Leonard
- Lucas Gass
- Documentation Manager: Aude Charillon
- Documentation Team:
- Philip Orr
- Caroline Cyr La Rose
- David Nind
- Marion Durand
- Translation Manager: Jonathan Druart
- Wiki curators:
- George Williams
- Thomas Dukleth
- Release Maintainers:
- 26.05 -- Lucas Gass
- 25.11 -- Baptiste Wojtkowski
- 25.05 -- Wainui Witika-Park
- 24.11 -- Fridolin Somers
- Release Maintainer assistants:
- 26.05 --Jacob O'Mara
- 25.05 -- Alex Buckley & Aleisha Amohia
We thank the following libraries, companies, and other institutions who are known to have sponsored new features in Koha 26.05.05
We thank the following individuals who contributed patches to Koha 26.05.05
We thank the following libraries, companies, and other institutions who contributed patches to Koha 26.05.05
We also especially thank the following individuals who tested patches for Koha
We regret any omissions. If a contributor has been inadvertently missed, please send a patch against these release notes to koha-devel@lists.koha-community.org.
The Koha project uses Git for version control. The current development version of Koha can be retrieved by checking out the main branch of:
The branch for this version of Koha and future bugfixes in this release line is 26.05.x-security.
Bug reports and feature requests can be filed at the Koha bug tracker at:
He rau ringa e oti ai. (Many hands finish the work)
Autogenerated release notes updated last on 27 Oct 2026 14:20:18.