commit e7855c0c016e2d0047c077f7057b7f7c6ef41a80 Author: Jonathan Druart Date: Mon Mar 2 11:15:42 2026 +0100 Bug 41409: Add COMMENT to kohastructure To fix misc4dev/run_tests.pl --run-db-compare-only Signed-off-by: Lucas Gass commit 233e02fc1cbe4feadc480ccd9d9ba02a1fa34cf8 Author: Baptiste Wojtkowski Date: Thu Feb 19 14:52:20 2026 +0000 Bug 39725: Remove GetSuggestionByStatus from C4/Suggestions.pm Signed-off-by: Owen Leonard Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 452089fc007312e4ead8e6c7e2668ae49355018b Author: Baptiste Wojtkowski Date: Wed Mar 4 15:46:22 2026 +0000 Bug 39724: (follow-up) use the suggestion object in neworderempty.tt Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit e4f14b3b1d7104b370c42e590c2a555286645488 Author: Baptiste Wojtkowski Date: Thu Feb 19 14:34:21 2026 +0000 Bug 39724: Remove GetSuggestionInfo from C4/Suggestions.pm Signed-off-by: Owen Leonard Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 713b525d1f35653e5d2393fd2bc3aa2c976428a2 Author: Baptiste Wojtkowski Date: Tue Mar 3 15:48:53 2026 +0000 Bug 39723: (follow-up) only use the suggestion object in template params Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit df21bc24ebaaa2de23c21fe430f962950d4ba0df Author: Baptiste Wojtkowski Date: Tue Jan 20 13:27:30 2026 +0000 Bug 39723: Remove GetSuggestionInfoFromBiblionumber from C4/Suggestions.pm To test: Create, edit and receive a command from a suggestion (the lonely call of modReceiveOrder is at the receipt in acqui/finishreceive.pl) Run `prove prove t/db_dependent/Acquisition.t` Run `prove prove t/db_dependent/Suggestions.t` Signed-off-by: Owen Leonard Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 5323b8858eff7a13352edccdea8076342ebbeee8 Author: Emmi Takkinen Date: Fri Nov 7 08:17:49 2025 +0200 Bug 36920: Tidy file Signed-off-by: Owen Leonard Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit 597866b9d564fb1ba39df559f1955719e1c859ea Author: Katariina Pohto Date: Thu May 23 12:46:11 2024 +0300 Bug 36920: Greater/less than search option for item search page field drop-down menu The field drop-down menu (including custom fields) can currently only use operators 'is' (LIKE) and 'is not' (NOT LIKE). Greater and less than operators would be useful especially for date fields. This patch adds '>' and '<' operators to the search. 1. Go to item search page and navigate to the field drop-down menu (default value Barcode). 2. Note that the operator choices for this search menu are 'is' and 'is not'. 3. Apply patch and refresh cache. 4. Navigate back to the menu and note that the operator menu now includes '<' and '>'. 5. Choose one of the new values and refresh page to see that the selection remains. 6. Test a field or several with the new operators to see that the new operators are working as intended. Signed-off-by: David Nind Signed-off-by: Owen Leonard Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit 713cae3a498bbbdc9346223b9e3fe6de69fc5760 Author: Owen Leonard Date: Tue Oct 28 17:30:10 2025 +0000 Bug 41126: Move shelving location into a separate column in inventory This patch updates the inventory template so that items' shelving location is showin in its own column in the table of results. This makes it consisten with other displays like the bibliographic detail holdings table and the holds queue report. To test, apply the patch and restart services. - If necessary, modify a few items to add a shelving location. - Go to Cataloging -> Inventory - To narrow down the results, I used the item call number fields under "Item location filters." - Submit the form. - In the list of results, confirm that there is a separate column for shelving location and that the correct information is displayed. - Confirm that the column visibility menu works to show and hide the column. - Go to Administration -> Table settings -> Tools (sic) -> Inventory - Confirm that there is a checkbox for the shelving location column and that your changes to the column's configuration are reflected in the inventory results. - Because of DataTables state saving feature you might have to clear your browser's local storage in order to see the new column configuration. Sponsored-by: Athens County Public Libraries Signed-off-by: Laura_Escamilla Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit b53496e069f0d4faa2cf2c3e4304893ec201b874 Author: David Cook Date: Tue Mar 3 23:47:54 2026 +0000 Bug 41986: Add more names to Contact information and clarify preferred name This patch adds the "Middle name" to the Contact information on moremember.pl, and it adds "Preferred name:" when it differs from the "First name:". This provides maximum clarity to staff users. Test plan: 0. Apply the patch 1. Go to the "Patrons" module and search for or add a new patron 2. Add a firstname, a middle name, and a surname. Also add a "Preferred name" which matches the firstname. 3. Go to "Details" on the sidebar, and note that "First name", "Middle name", and "Surname" appear in the "Contact information". 4. Edit the patron and change "Preferred name" to a name that does not match the "First name" 5. Go to "Details" on the sidebar, and note that "Preferred name" now shows as well. 6. Enjoy fully comprehending which name is which for the patron! Signed-off-by: David Nind Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 84a774d4bcde953b76b9f03248f9b4466a048b06 Author: David Nind Date: Fri Feb 27 23:29:18 2026 +0000 Bug 41958: Rename BibTeX cart and list download options in the staff interface This patch renames BibTex to BibTeX (with a capital X) for the staff interface cart and list download options, to match the OPAC. Test plan: 1. Log in to the staff interface and search for a term that returns results. 2. Add some records from the results to the cart (select records > Add to cart). 3. Add some records from the results to a new public list (select records > Add to list > New list > name the list > make it a public list > Save). 4. Note the download options for the cart and the spelling: Cart > Download > BibTexi (with a lowercase X). 5. Note the download options for lists and the spelling: Lists > Public lists > select the list > Download list > BibTex (with a lowercase X). 6. Go to the OPAC and search for a term that returns results. 7. Add some records from the results to the cart (select records > Add to cart). 8. Note the download options for the cart and the spelling (with a capital X): Cart > Download > BibTeX. 9. Note the download options for lists and the spelling (with a capital X): Lists > Public lists > the name of your list > Download > BibTeX. 10. Apply the patch. 11. Recheck the download options in steps 4 and 5. 12. The option should now show as BibTeX (with a capital X). Signed-off-by: David Nind Signed-off-by: Laura_Escamilla Signed-off-by: Brendan Lawlor Signed-off-by: Lucas Gass commit 199cdbd34aad5e2428bb80d361406b412a6d126d Author: Owen Leonard Date: Tue Feb 10 08:20:07 2026 -0500 Bug 41807: Fix automatic tab selection on basket groups page This patch fixes the JS in the basket groups template which is intended to select the "Closed" tab when a "listclosed" parameter is passed. To test, apply the patch and go to Acquisitions. - Search for and view a vendor. - Click "Basket groups" in the sidebar. - Create a new basket group if necessary. - Click "Delete" to remove the basket group. - When the page reloads the "Closed" tab should be selected. - Create a new basket group if necessary and click "Close and export as PDF." When the page reloads the "Closed" tab should be selected. - Click "Reopen." The "Closed" tab should again be selected. The patch doesn't make any changes to existing behavior but I think we should re-evaluate whether the "Closed" tab is the right place to go after deleting or reopening a basket group. Sponsored-by: Athens County Public Libraries Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 7f3868218439d78fddaf9a2db864bb410c0de5e6 Author: Hammat Wele Date: Fri Jan 23 12:53:45 2026 +0000 Bug 41692: "See all charges" link in the guarantor details does not activate Guarantees charges tab When a member has guarantees and the guarantees have charges/fines, the link "See all charges." in the guarantor details does not work. It should activate the "Guarantees’ charges" tab and display the guarantee’s charges. Steps to Reproduce 1. Find or create a patron with the 'Kid' category. 2. Add a guarantor for this patron. 3. Go to Accounting and create a manual invoice without paying it. 4. Open the guarantor details page. 5. Click on "See all charges." ==> it does nothing. 6. Apply the patch 7. Repeat step 4, 5 ==> The "Guarantees’ charges" tab is activate Signed-off-by: Owen Leonard Signed-off-by: Laura_Escamilla Signed-off-by: Lucas Gass commit ecd2f81c75fa43cdc05a975333bdc2674ed0601a Author: Brendan Lawlor Date: Tue Sep 9 14:58:13 2025 +0000 Bug 21555: Disable merge patrons button when using select all This patch disables the merge patrons button when select all is clicked. The button is re-enabled after clicking clear all or manually changing the selection. To test: 1. Do a patron search 2. Select at least 2 patrons 3. The merge patron button is enabled 4. Click select all 5. The merge patron button is still enabled 6. Apply patch and refresh browser 7. Click select alll 8. The merge patron button is not enabled anymore 9. Change the selection manually 10. Confirm the merge patron button is re-enabled Sponsored-by: CLAMS Signed-off-by: Emmi Takkinen Signed-off-by: Laura_Escamilla Signed-off-by: Lucas Gass commit d96183d41b102246d4869b54286a39a0bdb177bb Author: Kevin Carnes Date: Tue Feb 24 13:15:05 2026 +0100 Bug 41496: Update current URL for item search The "Copy shareable link" button on the item search table creates a link based on the current URL, but an item search does not update the current URL with the search parameters. This patch copies the code to generate the URL with search parameters and uses it to update the current URL. Test plan: 1. Click "Item search". 2. Perform an item search (e.g. Home library is Centerville). 3. Click the "Copy shareable link" button on the right side of the screen above the table. 4. Paste and visit the link. 5. Observe that you only see the search page without any results. 6. Apply patch. 7. Repeat steps 1-4. 8. Observe that you see the results with the table settings. 9. Sign off. Sponsored-by: Lund University Library Signed-off-by: Andrew Fuerste Henry Signed-off-by: Laura_Escamilla Signed-off-by: Lucas Gass commit fccbf3099db544fc024d11a2342465748dae59f7 Author: David Cook Date: Tue Mar 3 01:36:22 2026 +0000 Bug 41970: Fix typo in pa_class in template This change fixes a typo from pa_loo to pa_class, so that the ID attribute of the fieldset is properly set when using PA_CLASS to group patron attributes. Test plan: 0. Set up two PA_CLASS values 1. Set up two patron attributes which are viewable/editable on the OPAC and assign them one class each 2. Go to http://localhost:8080/cgi-bin/koha/opac-memberentry.pl 3. Look at the HTML and note that fieldsets for both PA classes have the ID of "aai_" 4. Apply the patch 5. Reload the page http://localhost:8080/cgi-bin/koha/opac-memberentry.pl 6. Note that now the fieldsets have ID attributes of "aai_". 7. Rejoice as now it's easier to use Javascript and CSS and have valid HTML! Signed-off-by: Roman Dolny Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 537435659f2cffb3c102069f3253c1072e4bad54 Author: David Nind Date: Fri Feb 27 21:59:59 2026 +0000 Bug 41885: (follow-up) Rename iso2709 to MARC for list downloads Rename iso2709 to MARC in the list of download options for lists in the staff interface. Signed-off-by: David Nind Signed-off-by: Lucas Gass commit 113d290ace73ede1eab0b69498efdbe19a0f9151 Author: Katrin Fischer Date: Mon Feb 23 10:19:34 2026 +0000 Bug 41885: Rename list download option in staff interface to 'MARC' This makes the name match the other places in staff interface and OPAC where we allow download of MARC records (OPAC lists and cart, staff cart). To test: * Create a list in staff with at least one record in it * Check the download options offer 'iso2709' * Apply patch * Verify the name of the option has changed to 'MARC' * Verify the same name is used for the download options of the list in the OPAC Signed-off-by: Gretchen Maxeiner Signed-off-by: David Nind Signed-off-by: Lucas Gass commit 1058fe254c5d9ff98fc34c5ad1a4d80bd85082cb Author: Roman Dolny Date: Mon Jan 26 22:12:10 2026 +0000 Bug 41715: Argument "YYYY-MM-DD" isn't numeric in numeric lt (<)... warnings in issues_stats.pl The warnings: [WARN] Argument "YYYY-MM-DD" isn't numeric in numeric lt (<) at /kohadevbox/koha/reports/issues_stats.pl line 224. appears in the plack-intranet-error.log. It happens because a numerical comparison was used to compare the dates instead of a string comparison. To test: ======== 1. Observe plack-intranet-error.log. 2. In staff interface go to Reports > Statistics wizards > Circulation. 3. Select date "From" and date "To" then submit. 4. Two warnings appear in plack-intranet-error.log. 5. Apply the patch; restart_all. 6. Repeat 2-3. No warnings appear in log. Sponsored-by: Ignatianum University in Cracow Signed-off-by: David Nind Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 9dee981687286051f9653a64fda2de4371d56a5a Author: Owen Leonard Date: Thu Feb 12 09:34:45 2026 -0500 Bug 41838: Fix automatic tab selection on MARC subfield edit pages This patch fixes automatic tab selection on MARC subfield edit pages for both authority and bibliographic records. The patch also removes some unused markup and JS associated with old ways of handling tabs. To test, apply the patch and go to Administration -> Authority types. - Click the "Actions" button for one of the authority types and select "MARC structure" - Pick a tag which has multiple subfields, e.g. 020 and click Actions -> Subfields. - Click one of the subfield links (not the first one). On the subfield edit page the corresponding tab should be selected when the page loads. - Go back and click the "Edit" button and confirm that this also selects the correct tab. - Go to Administration -> MARC bibliographic framework -> MARC structure -> View subfields and perform the same tests. Sponsored-by: Athens County Public Libraries Signed-off-by: John Doe Signed-off-by: Nic Olsson Signed-off-by: David Cook Signed-off-by: Lucas Gass commit 9b2f2fcf6ff578498906e1e8bde5108e89fe5f52 Author: David Cook Date: Fri Jan 16 04:03:41 2026 +0000 Bug 41645: Make self-checkout use responsive CSS This change makes the responsive CSS work with self-checkout. This changes also includes a few minor HTML changes to make the display look good both on large and small screens. Test plan: 0. Apply the patch 1. Go to http://localhost:8080/cgi-bin/koha/sco/sco-main.pl 2. Log in as the koha user 3. Check out barcodes 39999000004571 and 39999000001310 4. In an incognito window, add holds and charges for the koha user 5. Go back to http://localhost:8080/cgi-bin/koha/sco/sco-main.pl and log in as the koha user 6. Using your F12 dev tools, look at the interface with different widths 7. Note that the datatables have a responsive design which looks good on a mobile view 8. Note that the page stays contained to the small screen size and you don't have to scroll horizontally to see all the content Signed-off-by: David Nind Signed-off-by: Baptiste Wojtkowski Signed-off-by: Lucas Gass commit 28b479d114ebe85f343a0dce744c7ec266076442 Author: Roman Dolny Date: Fri Feb 20 19:25:44 2026 +0000 Bug 41904: "Use of uninitialized value..." warning in del_message.pl The warning [WARN] Use of uninitialized value in string eq at /kohadevbox/koha/circ/del_message.pl line 54. appears in plack-intranet-error.log Test plan: ========== 1. Observe plack-intranet-error.log 2. Search for any patron and go to "Check out" tab. 3. Add message for patron. Added message is shown in "Message" area with "Edit" and "Delete" links. 4. Click "Delete" and confirm modal. 5. Warning appears in plack-intranet-error.log 6. Apply the patch; restart_all 7. Repeat 3-4. No warning appears. Sponsored-by: Ignatianum University in Cracow Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 7fdf10b9ad089345bfdeecd84df795cdb18ff800 Author: Jonathan Druart Date: Fri Jan 9 12:13:30 2026 +0100 Bug 41558: Fix and standardize links to tab on opac-user We have different implemented solution to select a tab on opac-user: * a "tab" variable (from bug 37972), it's never used * several variables passed from the controller to the template, depending on the tab to select (it works and is used) * use of anchors (it does not work and is used) We should fix and standardize it. I've linked to several reports that seem to conflict with each others. This patch suggests to have a "tab" variable Test plan: Confirm that the different links to tab to opac-user are not using a query parameter to pass the tab to select, e.g. from the opac-main page. Signed-off-by: Paul Derscheid Signed-off-by: David Nind Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 036d92e6549b06ef62a55a54d840df500d3adbd7 Author: Nick Clemens Date: Wed Nov 26 16:29:12 2025 +0000 Bug 41316: Use patrons homelibrary for selecting overdues that should be sent Currently the patron homelibrary option for OverdueNoticeFrom will select overdues for a branches triggers based on the issuing branch The other two options select the trigger/overdues based on the selection This patch alters the selection of overdues to match only for the patrons branch To test: 1 - Apply 41315 and follow the plan there 2 - Apply this bug and run the overdues script, assuming CPL is branch A: perl misc/cronjobs/overdue_notices.pl --triggered --library CPL --test --nomail -v -v 3 - No overdues should be triggered 4 - Run the script for one of the patrons home libraries, in my case MPL perl misc/cronjobs/overdue_notices.pl --triggered --library MPL --test --nomail -v -v 5 - Note only overdues for patrons from that branch are triggered Signed-off-by: Ben Daeuber Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 0b7c7eab865c5986cca491dbe72163080b7c3541 Author: Owen Leonard Date: Thu Jul 31 11:41:00 2025 +0000 Bug 40568: Various corrections to recalls templates This patch makes various minor changes to recalls templates. - Correct sorting of dates in tables - Wrap recalls table in "page-section" div. - Hide "Show old recalls" if there are no recalls. To test, apply the patch and enable Recalls if necessary. - If necessary, place some recalls. - Check the sorting of date columns on the "Recalls queue" page. It should be correct. - View a patron who has never placed a recall. Go to their recalls history and confirm that you see a "Patron has no recalls" message but no "Show old recalls" checkbox. Sponsored-by: Athens County Public Libraries Signed-off-by: David Nind Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 4996ea86913c01811e551eb98528b878c700cbd9 Author: Baptiste Wojtkowski Date: Wed Aug 27 11:40:40 2025 +0000 Bug 40711: Fix valuebuilder for UNIMARC 181c and 2 Test plan (UNIMARC ONLY): 1 - Make sure you have valuebuilder enabled for 181$c and 181$2 (see hereafter) 2 - Edit any record. Use valuebuilder to set 181$c to "cri - cartographic image", notice there is no change 3 - Use valuebuilder to set 181$c to "crm - cartographic moving image", notice it is set to "a" 4 - Open the valuebuilder for 181$2 and inspect the body ID. See it is cat_unimarc_field_182-2. 5 - Apply patch 6 - Repeat 2&3 and notice the codes are now cri respectively cri and crm 7 - Open the valuebuilder for 181$2 and inspect the body ID. See it is cat_unimarc_field_181-2. Signed-off-by: David Nind Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 7f8f5cbb5c7e1477dd3de8777fc9cf882801c54c Author: Marcel de Rooy Date: Fri Feb 27 09:32:23 2026 +0100 Bug 41444: (QA follow-up) Rearrange comments It would be at least helpful to add a reference to get_transfer here, since we are replacing it here. Used the opportunity to update the older comments Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 13d2eb3d1b0ca5b402516fdef85c83290b542587 Author: Nick Clemens Date: Fri Dec 12 20:18:26 2025 +0000 Bug 41444: Search for transfers directly This patch removes a fetch of the item object followed but get_transfer to simply search the transfers by itemnumber and status To test: 1 - Add many items to your records https://github.com/kidclamp/handy-koha-script/blob/main/randitems.pl NOTE: this script makes a lot of items withdrawn or damaged, undo that for more dramatic difference UPDATE items SET withdrawn=0,damaged=0 perl misc/search_tools/rebuild_elasticsearch -v 2 - Set Koha system preferences to display more results and check more items: maxItemsInSearchResults 60 numSearchResults 50 3 - Do a search, several times, note the time it takes 4 - Apply patch, restart all 5 - Repeat search several times, note the time it takes 6 - Confirm it is better after the patch Signed-off-by: David Nind Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 5779eec49bd85e38c192e3034b9829b9a1d1298f Author: Kyle M Hall Date: Fri Apr 25 10:26:13 2025 -0400 Bug 39749: RestrictPatronsWithFailedNotices should not trigger for DUPLICATE_MESSAGE failures Koha is built to prevent sending duplicate notices. Notices with static language ( e.g. "You have one or more holds ready to pick up" ) will easily trigger this filter. RestrictPatronsWithFailedNotices should ignore these notices because they do not indicate any problem with contacting the patron. Test Plan: 1) Enable RestrictPatronsWithFailedNotices 2) Enqueue to identical notices for a patron 3) Run process message queue to send one and fail the other as a duplicate ( alternately, just modify them in the database ) 4) Run restrict_patrons_with_failed_notices.pl 5) Note the restriction 6) Remove the restriction 7) Apply this patch 8) Run restrict_patrons_with_failed_notices.pl 9) Note that no restriction was created! Signed-off-by: Marion Durand Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 3d99867f60ff72866f31c840b8c70d36a5422a59 Author: Lucas Gass Date: Thu Mar 5 14:59:03 2026 +0000 Bug 23260: DBIC Signed-off-by: Lucas Gass commit c88a86d0af9277fb53bd074a888b9bbe69725b3c Author: Lucas Gass Date: Thu Mar 5 14:49:00 2026 +0000 Bug 23260: DBRev 25.12.00.028 Signed-off-by: Lucas Gass commit 599286cf4040cf533ee55c4cff80aad5dd662406 Author: Martin Renvoize Date: Fri Jan 30 11:01:37 2026 +0000 Bug 23260: (QA follow-up) Validate AnonymousPatron preference value Add validation to ensure AnonymousPatron preference contains a valid borrowernumber before attempting to use it in the anonymization process. This prevents foreign key constraint errors and orphaned records if the preference contains an invalid value (non-existent borrowernumber, string instead of number, etc.). Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit c074c66d51f45fc93f710ec1ed9ab4d949c21e80 Author: Martin Renvoize Date: Fri Jan 30 10:58:00 2026 +0000 Bug 23260: (QA follow-up) Optimize anonymize_last_borrowers to avoid N+1 queries This commit refactors Koha::Patrons->anonymize_last_borrowers() to use a single bulk UPDATE instead of looping through patrons individually. Performance Problem: ------------------- The original implementation had a severe N+1 query problem: 1. Query all patrons with items_last_borrower records 2. Loop through each patron (First N+1) 3. For each patron, search their items_last_borrowers (Second N+1) 4. Update each result set For a library with 10,000 patrons and 100,000 items, this would execute 20,000+ database queries when run as a cronjob. The Fix: -------- Query the items_last_borrower table directly with all conditions in a single search, then perform one bulk UPDATE: $schema->resultset('ItemsLastBorrower')->search({...})->update({...}) This reduces execution from potentially thousands of queries to a single SQL UPDATE statement, regardless of data volume. Why This Pattern: ----------------- While Koha::Objects->update() exists, it loops through records individually if the object class has update()/store() methods, unless {no_triggers => 1} is passed. Working directly with the resultset guarantees bulk update behavior. This pattern is used throughout Koha for bulk operations (see Koha/Item.pm, Koha/Hold.pm, admin/koha2marclinks.pl, etc). Testing: -------- prove t/db_dependent/Koha/Patrons.t All existing tests pass, confirming identical behavior with dramatically improved performance. Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 2d75cac7d102ed323159981e70fe2d0756148e0a Author: Lucas Gass Date: Thu Jan 29 21:39:59 2026 +0000 Bug 23260: Fix database update Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit a37d887df6539cc888c46edc252c7d2d47b318b0 Author: Lucas Gass Date: Thu Jan 29 21:32:24 2026 +0000 Bug 23260: Fix kohastructure.sql Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit fde40177fa3d5013552e6be8dc2122ee9a92ed3e Author: Lucas Gass Date: Thu Sep 25 19:33:34 2025 +0000 Bug 23260: Update cron to exit if AnonymousPatron is not set Signed-off-by: Peter Moore Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 9165c0fa4b5bf81e7b0df8ced48779a598a22d53 Author: Lucas Gass Date: Thu Sep 25 19:32:28 2025 +0000 Bug 23260: Fix DB update to NOT allow for NULL borrowernumber Signed-off-by: Peter Moore Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit f0d4240ee22e76668ee0d22808785e8d29b2f36d Author: Andrew Fuerste-Henry Date: Wed Sep 24 20:16:56 2025 +0000 Bug 23260: (QA follow-up) Prevent use of cronjob when AnonymousPatron not set To test: 1 - configure StoreLastBorrower but not AnonymousPatron 2 - perl misc/cronjobs/anonymize_last_borrowers.pl -c 3 - the cron tells 'Preference 'AnonymousPatron' must be enabled to anonymize item's last borrower' 4 - put a value in AnonymousPatron 5 - repeat 2 6 - cron runs good Signed-off-by: Peter Moore Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 7eda8d23fae696dfbbe8672f18df52f71ec4847b Author: Lucas Gass Date: Tue May 6 21:53:35 2025 +0000 Bug 23260: Add a confirm flag To test the confirm flag: 1. Run perl misc/cronjobs/batch_anonymise.pl --days 1 2. Notice the warning about needing a confirm flag 3. Run perl misc/cronjobs/batch_anonymise.pl --days 1 --confirm 4. The script runs Signed-off-by: Peter Moore Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit ecfd85ebb88449b68d2396412a66760224f580c2 Author: Nick Clemens Date: Tue Nov 28 13:31:13 2023 +0000 Bug 23260: Add cronjob anonymize_last_borrowers.pl This patch adds the feature to anonymize patrons from items_last_borrower table. This code is run from batch_anonymize script, which is triggered from a new cron job anonymize_last_borrowers.pl To test: 1) apply this patch and the previous ones 2) perl installer/data/mysql/updatedatabase.pl 3) set StoreLastBorrower preference to Allow. 4) set AnonymousPatron preference to a valid patron id 5) Create a Check out followed by a Check in. CHECK => a row should appear in items_last_borrower table with the borrower and the item number. 6) In mysql, update created_on of items_last_borrower and returndate of old_issues to two days earlier. 7) perl misc/cronjobs/anonymize_last_borrowers.pl CHECK => borrower number in items_last_borrower is not anonymized yet. 8) Repeat step 5 and 6 but instead of two days earlier, set the new entry in items_last_borrower to three days earlier. 9) set AnonymizeLastBorrower to 'Anonymize' and AnonymizeLastBorrowerDays to 2 days. 10) perl misc/cronjobs/anonymize_last_borrowers.pl SUCCESS => borrower number in items_last_borrower changed to AnonymousPatron id 11) repeat step 8 12) set AnonymousPatron preference to 0 13) perl misc/cronjobs/anonymize_last_borrowers.pl SUCCESS => borrower number in items_last_borrower changed to null 14) prove t/db_dependent/Koha/Patrons.t Signed-off-by: Martin Renvoize Signed-off-by: Kyle M Hall Signed-off-by: Peter Moore Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 39ce85bf843c2038e010a67ea71677e32c50411c Author: Nick Clemens Date: Tue Nov 28 13:30:45 2023 +0000 Bug 23260: Unit tests Signed-off-by: Martin Renvoize Signed-off-by: Kyle M Hall Signed-off-by: Peter Moore Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 974007c0db25ebd03966277dabcdddd1b7a5a80c Author: Nick Clemens Date: Tue Nov 28 13:29:19 2023 +0000 Bug 23260: Add anonymize_last_borrowers method to Patrons.pm This patch adds a new routine to allow anonymizing the items_last_borrower table Signed-off-by: Martin Renvoize Signed-off-by: Kyle M Hall Signed-off-by: Peter Moore Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit ab5efb97a45cdefa9ecef53ad1d4b14600854e1d Author: Nick Clemens Date: Tue Nov 28 13:27:27 2023 +0000 Bug 23260: Database updates and new system preferences AnonymizeLastBorrower / AnonymizeLastBorrowerDays This patch alters the items_last_borrowers table to allow for NULL borrowers It also adds two new system preferences to allow controlling the anonymization of items_last_borrower data Signed-off-by: Martin Renvoize Signed-off-by: Kyle M Hall Signed-off-by: Peter Moore Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit e47511f8897b699c86b9acde509a0b75b10b1c83 Author: Martin Renvoize Date: Thu Nov 27 15:50:38 2025 +0000 Bug 41319: Automate sponsor tracking from git trailers This patch replaces the hardcoded "Contributing companies and institutions" list on the about page with an automated system that extracts sponsor information from git commit trailers. Changes: 1. about.pl: Load sponsor data from docs/sponsors.yaml using YAML::XS 2. about.tt: Replace hardcoded list with dynamic rendering from sponsors.yaml, displaying sponsors with their locations 3. docs/sponsors.yaml: Generated sponsor data file containing 212 unique sponsors with contribution counts, locations, and URLs The sponsor data is generated at release time using the koha-update-sponsors script from release-tools (see release-tools commit a30b8a3). The script: - Extracts Sponsored-by: trailers from git history - Applies alias resolution to consolidate duplicate names - Preserves historical sponsors without git trailers - Merges location and URL data from sponsor_map.yaml This replaces the manual process of updating the sponsor list with a maintainable approach that automatically captures all Sponsored-by: entries from the git history while preventing duplicate entries through alias resolution. The about page now displays sponsors in the format: "Organization Name, Country" instead of showing contribution counts. To update the sponsor list at release time: 1. Run koha-update-sponsors from the Koha source directory 2. Review and commit the updated docs/sponsors.yaml See release-tools README.md for detailed documentation. Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit 0ddcaa5e8a7f40234b054c74ec2188f6f51b5df6 Author: Owen Leonard Date: Wed Oct 29 17:01:57 2025 +0000 Bug 41134: Add table settings to transfers This patch updates the transfers page in order to add table settings to the table of transfered items. The patch also makes another minor correction: The transfer submit button now has the standard class "btn-primary." To test, apply the patch and restart services. - Go to Circulation -> Transfer. - Submit a barcode from a library other than your own so that the transfer will complete successfully. - Note that the "Transfer" button has the standard primary yellow color. - In the table of transferred items you should see the columns setting menu, export option, etc. Confirm that these controls work correctly. - Go to Administration -> Table settings -> Circulation -> Transfers - Make some changes to the column visibility settings and return to the transfers page to confirm that your settings are now applied when you transfer more items. - Because of DataTables state saving feature you might have to clear your browser's local storage in order to see the new column configuration. Sponsored-by: Athens County Public Libraries Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit d7aae3632e90c5f99b85d1d575d8f725e3707ba4 Author: Lucas Gass Date: Thu Mar 5 14:31:47 2026 +0000 Bug 39698: DBRev 25.12.00.027 Signed-off-by: Lucas Gass commit 5b59301de29c752ee0e9d0c7abbbed648f62bc10 Author: Jake Deery Date: Tue Apr 22 09:45:35 2025 +0100 Bug 39698: Add option to expand responsive datatable This patch adds the 'OPACTableColExpandedByDefault' system preference, disabled by default, which controls whether responsive datatable rows are expanded or not. This work has been performed after recommendations from a recent accessibility audit. TO TEST: a) set 'OpacLocationBranchToDisplay' to both b) search the OPAC for history, select first result c) zoom your browser in to maxiumum, scroll down to holdings table - notice how the rows are collapsed by default, with '+' visible **apply patch** e) refresh details page, notice how the behaviour is currently unchanged f) change new 'OPACTableColExpandedByDefault' syspref to 'Expand' g) return to OPAC details page, refresh, zoom in - notice how the rows are now expanded by default, with '-' visible **sign off** Sponsored-by: British Museum Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 73c320e75163ab43cd8fce3102c910f99d2167ff Author: Shi Yao Wang Date: Tue Apr 8 10:13:11 2025 -0400 Bug 39580: Make Elasticsearch process_error error string translatable Test plan: 1- Change to a language other than english 2- Search in the catalog with "!" 3- Notice the string "Unable to understand your search query, please rephrase and try again." is not translated 4- Apply the patch 5- Add translation in .po file of used language for "Unable to understand your search query, please rephrase and try again.\n" 6- Update translation 7- Redo the search and notice the string is now translated Signed-off-by: Lucas Gass Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit 3487b56e20da853dc3eefb7aadd0aa661ebbe3d5 Author: Kyle M Hall Date: Tue Feb 17 09:59:13 2026 -0500 Bug 36542: Update unit test Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit c3ce3b17c736139dc6b9e0658f5d05f7ee9dbc1c Author: Arthur Suzuki Date: Wed Apr 10 12:03:08 2024 +0200 Bug 36542: after_biblio_action plugin hook is now called after the dbx transaction is finished To reproduce : 1) Install a plugin which uses the biblionumber of a created record in the "after_biblio_action". 2) Verify the biblionumber is missing This is because the call to the hooks is done before the DB transaction is actually done (in AddBiblio function). Signed-off-by: Katrin Fischer Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass