commit 458a1633607aa6b0fd1d2eb8441a4f77a0c35a00 Author: Jonathan Druart Date: Mon Feb 9 14:48:28 2026 +0100 Bug 39745: Replace more occurrences in selenium tests Signed-off-by: Lucas Gass commit 23934c8edc6d84a74a81bde17dea2b48362b2583 Author: Lucas Gass Date: Mon Feb 9 19:50:39 2026 +0000 Bug 3492: (RM follow-up) Adjust tests Signed-off-by: Lucas Gass commit d06e3d87a48d78f20bdf03ab26e310428d9615cf Author: Lucas Gass Date: Mon Feb 9 19:47:41 2026 +0000 Bug 3492: DBIC Signed-off-by: Lucas Gass commit 35154d19e14e1561ce83b335a0c1a0b4c30eef3a Author: Lucas Gass Date: Mon Feb 9 19:45:04 2026 +0000 Bug 3492: DBRev 25.12.00.023 Signed-off-by: Lucas Gass commit 1c893cc0194576e185d1c29fa7da8166363b45ed Author: Martin Renvoize Date: Thu Sep 11 07:27:11 2025 +0100 Bug 3492: (follow-up) Remove last reservefee references Sponsored-by: OpenFifth Signed-off-by: Jackie Usher Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit f1b20b645c8fbc55ab3b868cb5116ce6430d5e34 Author: Martin Renvoize Date: Mon Sep 8 18:48:31 2025 +0100 Bug 3492: Modernize hold fee system and migrate to circulation rules This commit completely modernizes the hold fee system by migrating from the deprecated categories.reservefee column to the circulation rules framework and implementing modern Koha::Objects patterns. WHAT CHANGED: 1. MIGRATION TO CIRCULATION RULES: - Moved hold fees from categories.reservefee to circulation_rules table - Added database migration script with atomic update - Maintains existing fee amounts during migration - Provides rule hierarchy: category+itemtype+branch specific rules 2. NEW SYSTEM PREFERENCE: TitleHoldFeeStrategy - Options: highest, lowest, most_common - Addresses inconsistent title-level hold fees when items have different fees - Default: 'highest' (safest approach for library revenue) 3. MODERN Koha::Objects API: - Koha::Item->holds_fee($patron): Calculate fee for specific item - Koha::Hold->calculate_hold_fee(): Enhanced item/title-level logic - Koha::Hold->should_charge($stage): Centralized charging logic - Koha::Hold->charge_hold_fee(): Modern fee charging with proper accounting - Removed C4::Reserves::GetReserveFee and ChargeReserveFee 4. ENHANCED FUNCTIONALITY: - Proper ReservesControlBranch logic (patron home vs item home library) - Complete HoldFeeMode implementation (placement/collection/not_always) - Clear OPAC messaging with "You will be charged..." commitment - Comprehensive test coverage for all fee scenarios 5. TECHNICAL IMPROVEMENTS: - Object-oriented design following Koha patterns - Proper error handling and edge case management - Modern test structure with comprehensive coverage - Clean separation between fee calculation and charging TEST PLAN: A) MIGRATION AND SETUP: 1. Apply all patches and run database update 2. Verify existing hold fees migrated to circulation rules: - Administration > Circulation and fine rules - Previous categories.reservefee values now in "Hold fee" column 3. Confirm old categories.reservefee column no longer used B) BASIC FEE CALCULATION: 1. Set up patron categories with different hold fees in circulation rules 2. Create items with different item types, each with different hold fees 3. Test item-level holds charge correct fees based on specific item 4. Test title-level holds use TitleHoldFeeStrategy preference C) TITLE-LEVEL HOLD STRATEGIES: 1. Set TitleHoldFeeStrategy to "highest": - Create title with items having fees $1.00, $2.00, $3.00 - Verify title-level holds charge $3.00 2. Set TitleHoldFeeStrategy to "lowest": - Verify same title charges $1.00 3. Set TitleHoldFeeStrategy to "most_common": - Add multiple items with $2.00 fee - Verify title-level holds charge $2.00 (most common) D) HOLDFEEMODE PREFERENCES: 1. Set HoldFeeMode to "any_time_is_placed": - Place holds and verify immediate fee charging - Check patron account for correct hold fee debits 2. Set HoldFeeMode to "any_time_is_collected": - Place holds, verify no immediate charges - Check out items to patron, verify fee charged on collection 3. Set HoldFeeMode to "not_always": - With available items: verify no fee charged - With all items checked out but no other holds: verify no fee - With all items checked out and other holds exist: verify fee charged E) RULE HIERARCHY TESTING: 1. Set different fees for different category/itemtype/branch combinations 2. Verify most specific rule applies: - Branch + Category + ItemType (most specific) - Category + ItemType - Category only (most general) 3. Test with different patron categories and item types F) USER INTERFACE TESTING: 1. OPAC interface: - Verify "You will be charged..." messages display correct amounts - Test both item-level and title-level hold fee messages - Confirm fees match actual charges in patron account 2. Staff interface: - Place holds for patrons and verify fee calculations - Check Administration > Circulation rules interface works correctly G) EDGE CASES AND ERROR HANDLING: 1. Test $0.00 fees (no charge scenarios) 2. Test patrons with no applicable fee rules (should default to $0.00) 3. Test items with no holdable copies (should return $0.00) 4. Test invalid/missing itemtypes or categories 5. Test holds on biblios with no items H) REGRESSION TESTING: 1. Verify existing hold placement workflows unchanged 2. Check patron account charging remains accurate 3. Confirm OPAC and staff interfaces display correctly 4. Test that existing holds continue to work properly I) UNIT TESTS: Run the following test suites to verify functionality: - prove t/db_dependent/Koha/Hold.t - prove t/db_dependent/Koha/Item.t - prove t/db_dependent/Reserves.t - prove t/db_dependent/Circulation.t BACKWARDS COMPATIBILITY: - All existing functionality preserved - Hold fee amounts maintained during migration - Existing workflows continue unchanged - Legacy code updated to use new API seamlessly Sponsored-by: OpenFifth Signed-off-by: Jackie Usher Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit d5f9858307e6f51c59154664783954a7c41732e5 Author: Martin Renvoize Date: Tue Sep 9 09:56:01 2025 +0100 Bug 3492: Remove from patron categories admin Sponsored-by: OpenFifth Signed-off-by: Jackie Usher Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit 35c7f0a7c45887a1a9ccaa725bceb3ebcea78b57 Author: Martin Renvoize Date: Mon Sep 8 18:47:01 2025 +0100 Bug 3492: Add hold fees to circulation rules system This commit integrates hold fee configuration into the main circulation rules system, providing granular control over hold fees based on patron category, item type, and branch combinations. Changes: - Add hold_fee as a new circulation rule type with full scope support - Remove deprecated reservefee column mapping from Koha::Patron::Category - Integrate hold fee input into the circulation rules admin interface - Add hold fee column to the main circulation rules matrix - Enable proper rule hierarchy resolution for hold fees Hold fees can now be configured at multiple levels with automatic fallback handling following standard circulation rule patterns. Sponsored-by: OpenFifth Signed-off-by: Jackie Usher Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit f5bc5be08d7b17abf3f900b3118db36d3aac2cf6 Author: Martin Renvoize Date: Mon Sep 8 18:43:44 2025 +0100 Bug 3492: Database migration for hold fees to circulation rules This commit adds the database migration to move hold fee configuration from patron categories to circulation rules, providing more granular control over hold fees based on patron category, item type, and branch. The migration: - Creates circulation rules for existing categories.reservefee values - Removes the deprecated reservefee column from categories table Sponsored-by: OpenFifth Signed-off-by: Jackie Usher Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit f4ddcd98bcde7cefcf0a2589b24347f887715ce5 Author: Lucas Gass Date: Mon Feb 9 15:39:45 2026 +0000 Bug 41624: (RM follow-up) Fix line at EOF Signed-off-by: Lucas Gass commit 977a8be9ebdc624e9046eda808c19f0271a1125d Author: Lucas Gass Date: Mon Feb 9 15:38:51 2026 +0000 Bug 41624: DBRev 25.12.00.022 Signed-off-by: Lucas Gass commit 58baeec11f67b10d6fae07544fb71274475acf91 Author: Jonathan Druart Date: Mon Feb 9 11:35:00 2026 +0100 Bug 41624: Simplify db rev Also fix QA failures: [FAIL] installer/data/mysql/atomicupdate/bug_41624.pl FAIL file_permissions File must have the exec flag FAIL forbidden_patterns forbidden pattern: trailing space char (line 13) Signed-off-by: Jonathan Druart Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 05d08e0ea406df802819885f52ac1085e420bc05 Author: Lucas Gass Date: Wed Feb 4 16:41:24 2026 +0000 Bug 41624: Revert bug 35211 Bug 41624: Revert "Bug 35211: (QA follow-up) Fix counting" This reverts commit 97a022054db86f076844228e01e31e3aac045d9a. Bug 41624: Revert "Bug 35211: (QA follow-up) fix display of other results tab and move template toolkit logic outside of script array" This reverts commit c4c2a4b235ccefee0c54892c1ca1057465987918. Bug 41624: Revert "Bug 35211: Removed local items from group tabs and removed group items from other holdings tab" This reverts commit 124c6c867065d4230ffa5553ca2b629e05b269a0. Bug 41624: Revert "Bug 35211: Fixed group tab item building logic" This reverts commit 23eb2dbd39ab7f46c19b299cef3db435a9ed4b7e. Bug 41624: Revert "Bug 35211: Fix tab building" This reverts commit f438535b5cfe868784bb6881839c58242432da71. Bug 41624: Revert "Bug 35211: Set SeparateHoldingsByGroup to separate based on SeparateHoldingsBranch syspref" This reverts commit d2a0527d86e82ff1edf0c31035f5ac9da232b5fe. Bug 41624: Revert "Bug 35211: Fixed count on logged in holdings" This reverts commit 96c7eb3459770c354f59fcc1d4c22ebc4eb2a559. Bug 41624: Revert "Bug 35211: Reordered tabs in Holdings Table and fixed group tabnames" This reverts commit 5c2b0fd49689b4bdaa392fc165a8fc97c1fafa1e. Bug 41624: Revert "Bug 35211: Separate group holdings into individual tabs" This reverts commit 08045c8009c52596d8df83e5da12d9e4e9abb9ae. Bug 41624: DB update to remove the pref Signed-off-by: Jonathan Druart Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit 080f5a249787a4e34567b33268f3a62d67c6eb59 Author: Jonathan Druart Date: Mon Feb 2 10:32:39 2026 +0100 Bug 41747: Tidy js/ill-availability.js xt/js_tidy.t does not check all files every run (it's using the incremental runs). Something happened (node version changed?) and this is triggered because bug 41512 modified those files Test plan: 0. Do not apply this patch 1. KOHA_CI_INCREMENTAL_RUNS=1 prove xt/js_tidy.t => fail 2. Apply this patch 3. Run prove again => pass 4. Run prove without the env var set => pass (i.e. there are no other JS files not tidy) Signed-off-by: Lucas Gass commit c58989fc51bf41fc92fd568875f304c03aa075f6 Author: Andrew Fuerste-Henry Date: Fri Jan 9 17:44:13 2026 +0000 Bug 41588: Normalize spaces in 856$u links To test: 1 - add 856$u " www.cheese.com" to a record 2 - confirm link does not work from results or details in either staff interface or OPAC 3 - add 856$u "www.cheese.com " to a record 4 - confirm link does not work from results or details in either staff interface or OPAC 7 - apply patch, restart_all 8 - reload pages, confirm both links work in results and details in staff interface and OPAC Optional final step: have some cheese as a treat Signed-off-by: David Nind Signed-off-by: Jan Kissig Signed-off-by: Lucas Gass commit b626e4f3bf90b27e7d57fd06acd71f575dc2412f Author: Lucas Gass Date: Fri Feb 6 22:11:07 2026 +0000 Bug 41701: DBRev 25.12.00.021 Signed-off-by: Lucas Gass commit eb69c7a7356800200a8a7eb537cf0932b825bd4b Author: Owen Leonard Date: Fri Jan 23 14:00:56 2026 -0500 Bug 41701: Fix definition of OAI-PMH:DeletedRecord preference in sysprefs.sql This patch updates the definition of the OAI-PMH:DeletedRecord preference in sysprefs.sql, correcting the switched options and explanation columns. To test, apply the patch and run updatedatabase. Check that the database has been updated correctly: SELECT `options`, `explanation` FROM `systempreferences` WHERE `variable` = 'OAI-PMH:DeletedRecord'; Sponsored-by: Athens County Public Libraries Signed-off-by: David Nind Signed-off-by: Jan Kissig Signed-off-by: Lucas Gass commit f55a6c885196fbb667abdb8cf52571e1d4bdfb8a Author: Nick Clemens Date: Thu Oct 23 19:27:33 2025 +0000 Bug 41093: Specify blank value for 'None specified' Signed-off-by: Phil Ringnalda Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit 6d005fbc0c3034058610e936dc3bf7878968250b Author: Lucas Gass Date: Fri Feb 6 22:07:55 2026 +0000 Bug 39802: DBRev 25.12.00.020 Signed-off-by: Lucas Gass commit 32d277687d5fe8a5a9687b475339435c427161d3 Author: Martin Renvoize Date: Thu Jan 29 17:36:23 2026 +0000 Bug 39802: (QA follow-up) Typo fixes Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 1249cea96d7843bb7ca38062e20a58277f4502a4 Author: Nick Clemens Date: Tue Aug 5 15:50:31 2025 +0000 Bug 39802: Add LostChargesControl system preference Sponsored-by: MAIN Library Alliance Signed-off-by: Trevor Diamond Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 6cf5b8d509305a4d6ba190fe3ded3ad903f336c3 Author: Nick Clemens Date: Wed Aug 6 18:01:50 2025 +0000 Bug 39802: Atomic update file Sponsored-by: MAIN Library Alliance Signed-off-by: Trevor Diamond Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit f5377250f57cc0e5d6ea7af122585e4e376768e7 Author: Nick Clemens Date: Wed Aug 6 15:20:29 2025 +0000 Bug 39802: Report when no branches will be selected and exit This highlights the issue mentioned in the last patch, reporting that nothign will be done and exiting the script To test: 1 - perl misc/cronjobs/longoverdue.pl -l 5=1 --library CPL 2 - Confirm script exits with warning that nothing has been done Sponsored-by: MAIN Library Alliance Signed-off-by: Trevor Diamond Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 95789607e2c27d36d23402a425982e8ff1c81c4d Author: Nick Clemens Date: Wed Aug 6 15:10:06 2025 +0000 Bug 39802: Use new preference in longoverdue cron The test plan here is largely confirming that nothing has changed. Using CircControl here has an existing problem - when set to 'PickupLibrary' the check in this cron looks for items from the userenv branch - the cron doesn't have a userenv branch, it is undef, so for any library limiting by branch and with CircControl set to 'PickupLibrary' / 'the library you are logged in at' the cron will do nothing Sponsored-by: MAIN Library Alliance Signed-off-by: Trevor Diamond Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit aee1c8f7a5a75f5029d83a791442768388481cd3 Author: Martin Renvoize Date: Mon Jun 9 15:03:54 2025 +0100 Bug 40095: Add context to intranet_js plugin hook The get_plugins_intranet_js method now passes the current script name (controller) to plugins via a 'page' parameter, allowing plugins to determine which page/controller is being displayed. This will allow plugin authors to only return JS that's relevant to the current page when they wish to do so. Test plan: 1. Create a plugin with an intranet_js method that logs the received parameters 2. Navigate to different pages in the staff interface 3. Verify that the plugin receives the page parameter containing the script name 4. Confirm that the script name reflects the actual controller (e.g., '/cgi-bin/koha/admin/admin-home.pl' when on the admin home page) 5. Run the test: prove t/db_dependent/Koha/Template/Plugin/KohaPlugins.t 6. Verify that the new test passes, confirming plugins receive the page parameter Signed-off-by: Roman Dolny Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit c2b7f2ddb23160c331f8ccf89ee0c199b3a1bf0d Author: Kyle M Hall Date: Fri Jan 30 11:53:47 2026 -0500 Bug 37402: (follow-up) Zero pad the hour automatically on blur Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit 5a8a8ffd5722f4e2a8d23110cf7ec917815b7459 Author: Owen Leonard Date: Wed Nov 26 09:25:29 2025 -0500 Bug 37402: (follow-up) Add standard 'required' attributes and labels This patch also moves time format hint into a standard
. The hour format has been corrected from hhmm to HH:MM. Signed-off-by: Owen Leonard Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit 38c3c56045e3856524e8682341db7828e1a998d5 Author: Adam Styles Date: Sun Nov 23 09:07:59 2025 +1100 Bug 37402: Applying scheduler form UI changes to ensure correct form state fail Also adding form place holder and label update to better inform users 1. login to koha instance 2. navigate to reports module 3. create a small quick test report or use an existing small test report 4. select 'schedule' from toolbar above main sql window 5. once redirected to task scheduler UI, choose 'tommorow' in drop down 'date' field. 6. enter 'test@local.com' in 'email' field 7. enter no value in the 'time' field 8. press 'save'. Result - PASS: - No 'Failed to add scheduled task' error state occurs, and the correct time require error state does occur - Form does not attempt submit as it identifies the required time field data is missing - Addition time field place holder information is provided and time field label also offer time format information to user Signed-off-by: Owen Leonard Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit e1ef80682a7d4a60299c87b3527e6fe947e81153 Author: Baptiste Wojtkowski Date: Wed Dec 10 09:49:36 2025 +0000 Bug 41420: Fix referrer in parcel.tt Test plan: Steps to reproduce : 1 - Go to http://localhost:8081/cgi-bin/koha/acqui/neworderempty.pl?booksellerid=1&basketno=1 and fill in a new item. 2 - Visit http://localhost:8081/cgi-bin/koha/acqui/parcels.pl?booksellerid=1, type an invoice name and validate. Inspect both "Cancel order" and "Cancel order and catalog record". Notice the link in "Cancel order is broken" 3 - Apply patch 4 - Repeat 3 and notice the referrer is well formed. For a reason I ignore, it does not seem to have an impact on main, but on the 24.11 I tested, if you click on cancel order, after confirming the deletion and clicking on "ok", you will be asked again to confirm, however the deletion has been performed Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit 61107cbfd4a6323f1718e61a3a1eb668eb7dd528 Author: Lucas Gass Date: Fri Feb 6 22:04:00 2026 +0000 Bug 36466: DBRev 25.12.00.019 Signed-off-by: Lucas Gass commit 2e3325a6803d6b069298731eaf0b70b1e2558786 Author: Hammat Wele Date: Thu Oct 2 13:43:08 2025 +0000 Bug 36466: (follow-up) Use NULL for blank planned and published dates instead of today Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit 085c27e41bd8b6ff2b57116eb3b1c12afe5ad6bb Author: Hammat Wele Date: Fri Mar 29 22:14:08 2024 +0000 Bug 36466: (follow-up) Adding atomicupdate file to fix 0000-00-00 in serial table WNC amended patch - tidied Signed-off-by: Owen Leonard Signed-off-by: Emmi Takkinen Signed-off-by: Nick Clemens Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit cbdd895dbff8fbaa7f9c59904eff4598a510ca83 Author: Hammat Wele Date: Wed Nov 19 14:15:04 2025 +0000 Bug 36466: Incorrect date value stored when 'Published on' or 'Expected on' are empty When we edit a serial and we leave the date fields ('Published on' or 'Expected on') empty incorrect date are saved in the database 0000-00-00 instade of current date and we get Error 500 to reproduce 1. Connect to staff interface 2. Go to Serials and create a new subscription 3. Click on Serial collection in the left menu (and note the Subscription numnber) 4. Select a serial to edit and Click on «Edit serials» 5. In the Serial edition form, delete «Published on > and « Expected on » dates and save ----> Error 500 page is displayed 6. Check the value of «Published on > and « Expected on » dates in the database select planneddate,publisheddate from serial where subscriptionid=; ------> planneddate publisheddate have «0000-00-00» value 7. Apply the patch 8. run ./installer/data/mysql/updatedatabase.pl 9. repeat step 2, 3, 4, 5, 6 -----> Error 500 page is no more displayed -----> «Published on » and « Expected on » field have NULL as value Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit b190813020cf2663036d3b8e445009e503d8d699 Author: Lucas Gass Date: Wed Dec 3 20:37:57 2025 +0000 Bug 41368: Fix View batch click To test: 1. APPLY PATCH 2. yarn build 3. cypress run --spec t/cypress/integration/Tools/ManageMarcImport_spec.ts 4. It should now pass Signed-off-by: David Nind Signed-off-by: Nick Clemens Signed-off-by: Lucas Gass commit 5b8756f7b23238af04f40f0ac64f13867754210b Author: Owen Leonard Date: Wed Feb 4 12:28:07 2026 -0500 Bug 41764: ISSN hidden input missing from Z39.50 search form navigation This patch modifies the Acquisitions and Cataloging Z39.50 search forms so that the pagination form includes a hidden ISSN input. This is necessary for the form to submit the same search parameters each time the user requests a new page of results. To test, apply the patch and go to Acquisitions. - Search for a vendor, and create a basket if necessary. - Add to the basket and choose "From an external source." - In the "ISSN" field, enter a partial ISSN number, e.g. 0361, and search. - At the bottom of the search results, click the "Next page" button. - The second page of results should load correctly. At the top of the table of results it should say "You searched for: ISSN: 0361" - Perform the same test in Cataloging: - Cataloging -> New from Z39.50/SRU Sponsored-by: Athens County Public Libraries Signed-off-by: David Nind Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit c800ea71de1f5ab1003dc9d5330bc29ad508b2f2 Author: Baptiste Wojtkowski Date: Mon Oct 6 11:45:10 2025 +0200 Bug 40960: Print notification only if selected type is impossible Test plan (ktd): 1 - Have henry acevedo have no mail and set messaging preference "Hold filled to sms" 2 - Have edna acosta have not messaging preference 3 - Place an hold on two books for edna acosta and henry acevedo, check in both books and select the button to fill the hold 4 - Check in notices and see that both received a notice 5 - Apply tests and run tests -> they should fail 6 - Apply patch, run rest -> they should pass 7 - Unfill both holds and fill them back. Henry should keep receiving notices while Edna should not anymore. Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit ed42880f3da7ee4a456910c120e6314cbce99596 Author: Baptiste Wojtkowski Date: Mon Oct 6 16:46:57 2025 +0200 Bug 40960: Fix unit tests Two unit tests have been moved/replaced to fit the desired behaviour - "patron notified when item set to waiting" -> does not fit the desired behaviour. The desired behaviour for mails/sms is already tested The desired behaviour for prints is changed to "patron not notified if no messaging preference is specified" - "patron not notified a second time (bug 11445)" -> Moved into _koha_notify_reserve tests Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit d2a3fe93f240fd6448fece258707b19c5f461119 Author: Lucas Gass Date: Wed Dec 17 22:50:51 2025 +0000 Bug 41475: Make hostitemnumbers an array ref To test: 1. Set 'EasyAnalyticalRecords' to 'Show'. 2. Find or create a parent record that has at least 2 items on it. Note the itemnumbers and the framework. 3. Edit that framework so you can add a 773$0, 773$9, and 773$t 4. Find or create a child record. 5. Make at least 2 773 entries on the child record. Add the biblionumber of the host record to the 773$0. 6. In each entry for the 773$9 add one of the itemnumbers from the host record. 7. For the 773$t and the biblio title of the host record. 8. Save. 9. Now attempt to put a hold on the child record. 10. 500 error: 11. APPLY PATCH and restart_all 12. Try placing the hold again, this time it succeeds. Signed-off-by: Emmi Takkinen Signed-off-by: Lucas Gass commit c27f4e54ac77102f06599043c753922738e34d7d Author: Emmi Takkinen Date: Mon Dec 29 11:13:08 2025 +0200 Bug 41431: Use correct data-attribute to fetch existing circulation rule note If you click Edit on a line with a note, the note field is not displayed in the editing line and is blanked upon save (i.e., the note is lost, even if you made no edits on the note). Value of the note is stored to data-attribute which was changed to use Bootstraps own data-attribute. So now the value must be fetched with keyword "bsContent" instead of just "content". To test: 1. Add note for a circulation rule. 2. Edit the rule. => Note that notes value is not displayed in editing row. 3. Apply this patch. 4. Edit rule again. => Note that notes value is now displayed as expected. Sponsored-by: Koha-Suomi Oy Signed-off-by: David Nind Signed-off-by: Kyle M Hall Signed-off-by: Lucas Gass commit 56410f9c90092b34052f1f0ac10eb1917c4895b4 Author: Marcel de Rooy Date: Thu Dec 11 09:20:27 2025 +0100 Bug 19690: Change comments in IsAvailableForItemLevelRequest The term 'If any unavailable' is not very clear but it is also very hard to find something short and better. A next available hold is possible when at least one item is unavailable (checked out, on order, waiting/transit hold). A item level hold is possible when the specific item is unavailable. Test plan: Read the patch. The code did not change. Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit b7ab84f56068fe5607f874ac015d8df017776b5e Author: Tomás Cohen Arazi Date: Wed Jan 14 15:55:43 2026 -0300 Bug 41617: Remove extra spaces breaking CSV formatting This patch removes extra spaces breaking CSV parsing in tools like Excel. To test: 1. Perform an item search selecting the CSV option 2. Open the CSV with a TEXT EDITOR of your choice => FAIL: Notice the extra spaces after the commas (those used as separators, no the ones within the double quotes) 3. Apply this patch 4. Repeat 1-2 => SUCCESS: No extra spaces! 5. Sign off :-D Note: On the first attempt you can open the file on Excel if you have it and notice things are not aligned. Note2: Using double quotes on all fields regardless of the context works for most parsers, but is not correct CSV. Will deal with it on a separate bug. Signed-off-by: Tomás Cohen Arazi Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 971e2ead4bbe6cca8db002bd4ba20158fd01f1f5 Author: Martin Renvoize Date: Mon Feb 2 11:58:32 2026 +0000 Bug 41749: Display patron consents on staff patron detail page Adds a read-only "Consents" section to the staff patron detail page showing the patron's consent status for GDPR (when PrivacyPolicyConsent is enabled) and any plugin-defined consent types. Each consent displays with visual status indicators: - Green checkmark with timestamp when consent was given - Red X with timestamp when consent was refused - Gray "Not specified" when no consent recorded Test plan: 1. Enable PrivacyPolicyConsent system preference 2. As patron in OPAC: give/refuse consent at "Your consents" 3. As staff: view patron detail page 4. Verify "Consents" section shows correct status and timestamp 5. Test with no consent recorded (should show "Not specified") 6. If available, test with plugin-defined consent types Signed-off-by: David Nind Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit cc68988bce20b0f0de85d6068dc5890fc598e56e Author: Andrew Fuerste-Henry Date: Mon Feb 2 14:02:00 2026 +0000 Bug 41752: label concactfirstname and contactname as Guarantor first name and Guarantor surname This change impacts the display of patron fields listed in system preferences: BorrowerMandatoryField BorrowerUnwantedField PatronSelfModificationBorrowerUnwantedField PatronSelfRegistrationBorrowerMandatoryField PatronSelfRegistrationBorrowerUnwantedField To test: 1 - confirm that the sysprefs listed above include "Alternate contact: First name (contactfirstname)" and "Alternate contact: Surname (contactname)" 2 - confirm that toggling the display of these fields hides/shows the Guarantor first name and Guarantor surname fields in a patron record 3 - apply patch, restart_all 4 - confirm that sysprefs now show "Guarantor first name (contactfirstname)" and "Guarnator surname (contactname)" 5 - confirm toggling the display of these fields still hides/shows the correct fields in a patron record in the staff client, in self-ref, and in OPAC self-modification Signed-off-by: Anneli Österman Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit 707a208e164e86f68712d2db3344adbc3f2eb957 Author: Ayoub Glizi-Vicioso Date: Fri Jan 23 15:20:28 2026 -0500 Bug 41689: Make patron message labels translatable To Test: BEFORE APPLYING PATCH: 1- Go to any patron account > Add message 2- Add a message for: "Staff - Internal note" 3- Add a second message for: "OPAC - [NAME OF THE PATRON SELECTED]" 4- Add any language (I'll use french-Canada, fr-CA, in this case): From your koha instance, enter on the command line: ./misc/translator/translate install fr-CA 5- Go to Administration > System preferences > enter language 6- Make sure to check 'Français (fr-CA)' box from the 'StaffInterfaceLanguages'preference and save. 7- Go back to the specific patron in which you added the messages 8- Switch language to 'Français' (bottom left corner) 9- Notice that: --> 'OPAC' is still the same (Since we spell OPAC the same way in both english and french. However, it might not be the case in other languages). --> 'Staff note' is not translated. 10- apply patch AFTER APPLYING PATCH: 11 - From you koha instance, enter on the command line: ./misc/translator/translate update fr-CA ./misc/translator/translate install fr-CA 12- Reload patron's page 13- Notice that 'Staff note' is now translated ** You should see this output: 'Note interne' Signed-off-by: David Nind Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit 531dbe668bb86f8e29ef68ae42c9fee67fb36957 Author: Owen Leonard Date: Fri Jun 13 15:02:35 2025 +0000 Bug 37773: Show search term in cataloging search results This patch updates the cataloging search results page so that the search term is shown in the page title, breadcrumb, and headings. To test, apply the patch and go to Cataloging in the staff interface. - Perform searches which will return varying results: - A search which returns records in both the catalog and the reservoir (perform some Z39.50 searches if the reservoir is empty). - A search which returns records in the catalog but not the reservoir. - A search which returns records in the reservoir but not the catalog. - A search which returns no results at all. - In all cases, check the page title, breadcrumbs, and headings. Your search term should appear as expected. - Test that the correct strings are translatable. In this example I'm testing fr-FR: - Update a translation: > gulp po:update > cd misc/translator > perl translate update fr-FR - Open the corresponding .po file for the strings pulled from the template e.g. misc/translator/po/fr-FR-messages.po - Locate strings pulled from addbooks.tt for translation, e.g.: #: koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt:93 #: koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbooks.tt:207 #, fuzzy, perl-brace-format msgid "No catalog search results for '{query}'" msgstr "Résultats de recherche pour '{query}'" - Delete the line starting with "#, fuzzy" - Edit the "msgstr" string however you want (it's just for testing) - Install the updated translation: > perl translate install fr-FR - Switch to your updated translation in the staff interface and perform the same tests as above. The translations should appear as expected. Sponsored-by: Athens County Public Libraries Signed-off-by: David Nind Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit e948934081135b8f1e80a5d9749998647f02dbd6 Author: Owen Leonard Date: Wed Mar 5 18:36:09 2025 +0000 Bug 39255: Improve translation of title tags: OPAC part 4 This patch updates a batch of OPAC templates so that title tags can be more easily translated. To test, apply the patch and confirm that the following pages have correct title tags: - The summary page for a logged in user - Most popular - Purchase suggestions - Recent comments - Tags - Lists - List of lists - List contents - Send list - Share a private list - Send a cart - View a subscription -> More details - The opac-showmarc page isn't usually accessed directly but you can test it by opening the URL, e.g. http://localhost:8080/cgi-bin/koha/opac-showmarc.pl?viewas=html&id=5 - Self checkin (with SelfCheckInModule enabled). - Self checkout (with WebBasedSelfCheck enabled). - Self checkout help - Self checkout slip Sponsored-by: Athens County Public Libraries Signed-off-by: David Nind Signed-off-by: Katrin Fischer Signed-off-by: Lucas Gass commit 3e1b77f4f319a8b171abf2896f2dd31be2a66ef4 Author: Lucas Gass Date: Thu Feb 5 20:27:04 2026 +0000 Bug 41536: (follow-up) Tidy the template Signed-off-by: Lucas Gass commit 9c8a475d08afea770b8a307cf03e3b792c295931 Author: Pedro Amorim Date: Wed Jan 7 10:27:29 2026 +0000 Bug 41536: Move 'Edit request' button to after backend actions buttons This ensures that the 'Confirm request' will always be the first button in the toolbar. Test plan: 1) Apply patch (skip this if sandbox) 2) Enable the ILLModule sys pref 3) Create a new request, visit: /cgi-bin/koha/ill/ill-requests.pl?method=create&backend=Standard 4) Add any type, '42' as cardnumber, any library. Click 'Create'. 5) Notice the 'Confirm request' button is shown first, and with the 'primary button' styling. Signed-off-by: Photonyx Signed-off-by: Laura_Escamilla Signed-off-by: Lucas Gass commit c47bbdec8d93a1c0d6862ad2e4c7eca02d50d723 Author: Pedro Amorim Date: Wed Jan 7 10:26:33 2026 +0000 Bug 41536: Add 'btn-primary' class to 'Confirm request' button This makes the button stand out from the other available actions Signed-off-by: Laura_Escamilla Signed-off-by: Lucas Gass commit 59b4f329a4572582dd19412054a5c8645dfeab55 Author: Martin Renvoize Date: Wed Feb 4 12:25:00 2026 +0000 Bug 7376: (QA follow-up) Trivial typo fixes Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass