commit 6a8b160a2fec937df36208acc503b783ab735938 Author: Jonathan Druart Date: Fri Nov 28 10:03:45 2025 +0100 Bug 41328: Fix incorrect use of ref in KohaTable.vue This patch fixes DataTables instantiation in Vue components. There was an error in the console Uncaught (in promise) TypeError: table.value.dt is not a function Signed-off-by: Lucas Gass Signed-off-by: Matt Blenkinsop Signed-off-by: Lucas Gass commit b2d3ec043c7483ab42ee485c7a93403a2cc82563 Author: Andrew Fuerste-Henry Date: Wed Nov 19 17:05:46 2025 +0000 Bug 40961: Default item and patron library values to blank To test: 1 - load the Circulation Statistics wizard 2 - confirm Home library, Holding library, and Patron library default to selecting the logged-in branch 3 - apply patch, restart_all, reload page 4 - confirm Home library, Holding library, and Patron library default to a blank selection 5 - confirm queries with those blank selections are not limited by items.homebranch, items.holdingbranch, or borrowers.branchcode Signed-off-by: Katherine Wolf Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit ff461167fd9fbef394340b2eecc9993137cd3919 Author: Eric Phetteplace Date: Wed Sep 24 12:49:22 2025 -0700 Bug 40873: AV dropdowns in OPAC don't use lib_opac To test (ktd): - Sign into the admin side - Go to Administration > Authorized Values - Edit or add to SUGGEST_FORMAT such that one AV has a different lib_opac - Sign into the public catalog - Go to purchase suggestions /cgi-bin/koha/opac-suggestions.pl?op=add_form - Note that the AV in the 'Item type' dropdown does not use your lib_opac text - Apply the patch and refresh the page - Now the AV uses the lib_opac text Sponsored-By: California College of the Arts Signed-off-by: David Nind Signed-off-by: Baptiste Wojtkowski Signed-off-by: Lucas Gass commit 2ea04163a3a0735d6136ab05b5b695ea2296e092 Author: Laura Escamilla Date: Wed Nov 5 21:18:06 2025 +0000 Bug 41198: Add visible "Sort results by" label above sort dropdown in OPAC search results This patch adds a visible "Sort results by:" label above the sort dropdown on the OPAC search results toolbar. Previously, only a screen-reader-only label was present, providing no visible context for sighted users. This improves accessibility (WCAG 2.1 compliance) and usability by making the function of the dropdown clear. To test: 1. Perform a search in the OPAC. 2. Confirm that the "Sort results by:" text appears above the sort dropdown. 3. Verify that the dropdown still functions correctly and the layout remains consistent across screen sizes. Signed-off-by: David Nind Signed-off-by: Baptiste Wojtkowski Signed-off-by: Lucas Gass commit d16b9f03118bc28e51a06e08b1579d4ef24803c9 Author: Lucas Gass Date: Fri Nov 21 14:39:13 2025 +0000 Bug 40205: data-categorycode should always be set to ALL To test: 1. Add at least one rule to the default-circulation-rules table that contains a patron category. 2. Now add a "Default checkout, hold and return policy" rule. 3. Inspect the "Unset" button: Unset 4. APPLY PATCH and clear browser cache 5. Try again, this time you should be able to delete the rule. Signed-off-by: Trevor Diamond Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 95f2639d64806f0c66abc4b6e2bcea9a03c97ec7 Author: Aleisha Amohia Date: Wed Jul 9 03:25:01 2025 +0000 Bug 39985: Set items.onloan when recall adjusts checkout due date This enhancement ensures the due date stored in items.onloan is changed when a recall causes a checkout due date to change. To test: 1. Enable UseRecalls syspref and set corresponding circulation rules: - Recalls allowed - Recalls per record - On shelf recalls allowed - set to "If any unavailable" - Recall due date interval - set to 1 - Recall pickup period 2. Check out an item to a patron (Patron A) 2a. Make sure this patron has a primary email address set 2b. Check the patron's messaging preferences - make sure this patron has the 'Email' checkbox checked for the 'Return recalled item' notice 3. Go to Tools -> Notices & slips and find the RETURN_RECALLED_ITEM notice. In the Email notice, change "[% checkout.date_due | $KohaDates %]" to "[% item.onloan | $KohaDates %]" and Save. 4. Log into the OPAC as another patron 5. Search for the item checked out in step 2, and place a recall on that item 6. Search for that item in the staff interface => Note that the item status says, "Checked out to : due " 7. Create the following SQL report in the reports module, using the barcode of the item that was recalled: SELECT onloan FROM items WHERE barcode='xxxxxxxxx' 8. Run the report => The onloan value is still set to the item's original due date, not the updated due date of tomorrow 9. Go to Patron A's account again and view their Notices tab. Click on the 'Notification to return a recalled item' => The original due date is used in the notice. 10. Apply the patch and restart services 11. Reset to run the tests again: - Check in the item, but do not confirm the recall in the pop-up - Go to the biblio detail page and cancel the recall 12. Repeat steps 2 to 5. 13. Run your report again (step 8) => The onloan value should now show the updated due date of tomorrow 14. View Patron A's latest 'Notification to return a recalled item' notice (step 9) => The updated due date should be used in the notice. 15. Confirm tests pass - t/db_dependent/Koha/Recalls.t Sponsored-by: Auckland University of Technology Signed-off-by: Brendan Gallagher Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 92d6fcf2bd01a8ab134405924090ae94a1b33386 Author: Martin Renvoize Date: Fri Nov 7 14:10:09 2025 +0000 Bug 41229: Fix desk and register session persistence on library change When changing library in circ/set-library.pl, desk and register values were not being properly cleared from the session. This caused stale desk/register data from the previous library to persist, resulting in: - Incorrect cashup displays showing wrong library's register - POS defaulting to registers from different libraries - Session state inconsistent with visual UI Three issues fixed: 1. Template: Changed register "None" option ID from "set-library-noregister" to "noregister" to match JavaScript expectations (consistent with desk handling) 2. Desk logic: Changed condition to use defined() and explicitly clear session when "No desk" is selected 3. Register logic: Added session clearing when "No register" is selected and fixed condition to handle empty initial state Test plan: 1. Select Library A with Register 5 2. Change to Library B without selecting a register 3. Verify register is cleared from session (check POS page) 4. Repeat for desk selection 5. Verify explicit "-- None --" selection clears session values Signed-off-by: Jason Robb Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 46bfbfee2d711dd982cb988d87bd1ad4b1ab8eb4 Author: Jonathan Druart Date: Fri Oct 10 10:42:31 2025 +0200 Bug 40760: Format 'Edit' link in item receive table as link When receiving items in the acq module, the "Edit" link in the items table for orders with items created when ordering is not recognizable as link, but appears just formatted as normal text. To test: * Create a basket with items 'on order' * Add an order line with 2+ items * Close basket * Receive shipment for the same vendor * Click on "receive" link * Verify the "Edit" in the items table on the left is formatted as a link Signed-off-by: Owen Leonard Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 0485296221612b9fa55efbe7c214e2ed6152edbf Author: Jonathan Druart Date: Tue Nov 25 14:04:56 2025 +0100 Bug 41298: Fix filtering items by in transit The filtering condition was not correct, the presence of a line in the transfer table is not enough to now if the item is in transit. Here we filter reusing the same conditions as Koha::Item::Transfer->in_transit Test plan: Have at least 2 items for a given bibliographic record Transfer item 1 Transfer item 2 Receive/Fullfill the transfer for item 1 Item 1 is now available and item 2 is in transit Go to items record and filter holdings table with status "In transit" => Only item 2 is displayed Filter holdings table with status "Available" => Only item 1 is displayed Signed-off-by: Anneli Österman Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 59d07337de5a5dfc3415dc28866f89e34ef274c2 Author: Katrin Fischer Date: Tue Oct 14 10:10:08 2025 +0200 Bug 41008: Fix bulkmarimport.pl -a -d After bug 35659 that added the OAI harvester to Koha the -d switch for deleting authorities before importing with bulkmarcimport.pl was broken and resulted in a FK error. Switching from truncate to DELETE FROM like we already did for items, biblio etc. fixes the issue. To test: - Make sure you have some authorities in your database - Export some into a file for importing - Run bulkmarcimport -a -d --file - Verify you get the a DB FK constraint error. - Apply patch - Repeat steps, verify the script now works as expected again * Existing authorities are deleted * File is imported Signed-off-by: David Cook Signed-off-by: Jan Kissig Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit af31453c63c9609144496ab42fc8f65f007410d4 Author: Martin Renvoize Date: Thu Oct 3 15:41:05 2024 +0100 Bug 38072: Fix regression in modal_printer This patch updates the JS for the modal printer to make it more reliable. I found that in recent versions of chrome the print dialog failed to open and instead you were just faced with a flash of white before the new tab autoclosed and no print takes place. Test plan 1) Enable cash registers and point of sale preferences 2) Add a debit type and mark it as 'Can be sold' 3) Add a cash register 4) Use 'Point of sale' to sell one of the above item for cash against the register you just created. 5) Navigate to the register and 'cashup' 6) Click the 'summary' link to display a modal 7) Use the 'Print' option in the modal and confirm you face a print dialog and can print 8) The print tab should be closed and you should be back to Koha Signed-off-by: David Nind Bug 38072: Ensure the printing tab closes Signed-off-by: David Nind Signed-off-by: Marcel de Rooy [EDIT] Squashed and tidied. Signed-off-by: Lucas Gass commit a6ba625592f05fbe952f7fe8fef97b7e12eb00f7 Author: David Cook Date: Thu Oct 30 01:36:53 2025 +0000 Bug 38516: Use PDF template copy for exporting PDFs Due to a bug in PDF::API2 or related libraries, you cannot export a PDF if you do not have write permission on the PDF template. We bypass this problem by taking a string copy of the PDF template and working on that instead. Test plan: 0. DO NOT APPLY THE PATCH YET 1. chmod 444 /kohadevbox/koha/koha-tmpl/intranet-tmpl/prog/pdf/*.pdf 2. Create a basket with a vendor 3. Add an order to the basket 4. Close basket (and attach the basket to a new basket group with the same name) 5. Go to "Closed" tab and click "Export as PDF" 6. Note that you get an error when you try to open it in Adobe or some other PDF program 7. Apply the patch and restart koha (e.g. koha-plack --restart kohadev) 8. Try to "Export as PDF" again 9. Note that this time there is no warning and your PDF opens just fine 10. Repeat the "Export as PDF" process for every option of the system preference "OrderPdfFormat". Every option should work without errors. 11. Celebrate! Signed-off-by: Arthur Suzuki Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 17b3158b35c247a6db5ab4406d80a584cdefd576 Author: Jonathan Druart Date: Thu Nov 27 11:03:45 2025 +0100 Bug 41314: Fix column visibility on the checkouts table Currently the column visibility is broken because the table is not using bKohaColumnsUseNames. We should first fix that because it's a bug (and a regression certainly caused by DT's saveState, bug 33484). Then it will be quite trivial to move it to the table's settings. Column visibility must use bKohaColumnsUseNames when some columns are displayed/hidden depending on sysprefs (or other variables). Test plan: 0. Do not apply this patch 1. Check an item out for a patron 2. Turn on ExportCircHistory 3. Reload the checkouts table => The export column is not displayed (FAIL) 4. Open the dev console (ctrl+shift+c on Firefox), Storage tab => local storage. Remove the 2 keys (only one may exist) DataTables_circ_circulation_issues-table DataTables_members_moremember_issues-table 5. Reload the checkouts table => The export column is displayed 6. Turn off ExportCircHistory 7. Reload the checkouts table => The column column is displayed (FAIL) Well, you got the idea, the syspref's value is not taken into account when a DataTable's state already exists in the local storage. Now apply this patch and repeat the different steps, on the two tabs * "Check out" (circ/circulation.pl) * "Default" (members/moremember.pl) Signed-off-by: David Nind Signed-off-by: Baptiste Wojtkowski Signed-off-by: Lucas Gass commit d3577b927738c8d2d8a5ff4b814eee6be15c2fe4 Author: Jonathan Druart Date: Fri Oct 3 15:26:08 2025 +0200 Bug 40680: Fix t tests Amended patch @ t/db_dependent/Realtime_holdsqueue.t:26 @ use Test::MockModule; -use C4::SIP::ILS::Transaction::Checkin qw( do_checkin ); +use C4::SIP::ILS::Transaction::Checkin; Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 41341ecccc42b7568552cae4208964eba2f78d32 Author: Jonathan Druart Date: Tue Sep 2 12:39:36 2025 +0200 Bug 40680: Fix C4::Calendar imports Attempt to call undefined import method with arguments (new ...) via package C4::Calendar (Perhaps you forgot to load the package?) at t/db_dependent/Hold.t line 25. Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit af63bcd9d3fec98f5587890b1bdc074e5ede412f Author: Jonathan Druart Date: Tue Sep 2 12:37:55 2025 +0200 Bug 40680: Fix t/Labels* Attempt to call undefined import method with arguments (split_callnumber) via package C4::ClassSplitRoutine::LCC (Perhaps you forgot to load the package?) at t/Labels.t line 22. Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 03f8ca2578353dabfdb5947827eebb66cbe24e8c Author: Jonathan Druart Date: Tue Sep 2 12:36:24 2025 +0200 Bug 40680: Fix svc/virtualshelves/search Attempt to call undefined import method with arguments (search) via package C4::Utils::DataTables::VirtualShelves (Perhaps you forgot to load the package?) at svc/virtualshelves/search line 8. Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 38d518c7bf00c9c98aa0394f8b3863a3a8809d0f Author: Jonathan Druart Date: Tue Sep 2 12:33:58 2025 +0200 Bug 40680: Fix TestBuilder perl -wc misc/devel/create_test_data.pl Attempt to call undefined import method with arguments ("schema") via package "Koha::Database" (Perhaps you forgot to load the package?) at /kohadevbox/koha/t/lib/TestBuilder.pm line 5. Attempt to call undefined import method with arguments ("_type") via package "Koha::Biblios" (Perhaps you forgot to load the package?) at /kohadevbox/koha/t/lib/TestBuilder.pm line 7. Attempt to call undefined import method with arguments ("_type") via package "Koha::Items" (Perhaps you forgot to load the package?) at /kohadevbox/koha/t/lib/TestBuilder.pm line 8. Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 7f9e2019a026d41f73871405eefab6e6eda2b2be Author: Jonathan Druart Date: Tue Sep 2 12:32:06 2025 +0200 Bug 40680: Fix admin/matching-rules.pl Attempt to call undefined import method with arguments (valid_normalization_routines) via package C4::Matcher (Perhaps you forgot to load the package?) at admin/matching-rules.pl line 27. Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit a42a263cbfa8febb37b60591d32213718eb579d2 Author: Jonathan Druart Date: Tue Sep 2 12:31:13 2025 +0200 Bug 40680: Fix admin/columns_settings.pl Attempt to call undefined import method with arguments (get_modules) via package C4::Utils::DataTables::TablesSettings (Perhaps you forgot to load the package?) at admin/columns_settings.pl line 8. Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit dbdf80ad1f33559277311734421959f08eadcf41 Author: Jonathan Druart Date: Tue Sep 2 12:29:02 2025 +0200 Bug 40680: Fix acqui scripts Attempt to call undefined import method with arguments (get_active) via package Koha::Acquisition::Currencies (Perhaps you forgot to load the package?) at acqui/addorder.pl line 133. Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 1c485e766827b51b89e97592c140645c9c5b91f5 Author: Jonathan Druart Date: Tue Sep 2 12:28:08 2025 +0200 Bug 40680: Fix C4/Patroncards/Patroncard.pm Attempt to call undefined import method with arguments (StrWidth) via package C4::Creators::PDF (Perhaps you forgot to load the package?) at /kohadevbox/koha/C4/Patroncards/Patroncard.pm line 28. Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit beac9eae8fc844cf1b289b0ca47bce32eaf39b34 Author: Jonathan Druart Date: Tue Sep 2 11:22:06 2025 +0200 Bug 40680: Move EXPORT_OK right after Modern::Perl So it is done before the other use statements. Also uniformize the pattern, must now be: ``` use Modern::Perl; use base 'Exporter'; BEGIN { our @EXPORT_OK = qw(subroutine list); } ``` Rebased-by: Victor Grousset/tuxayo Bug38936 exported redirect_if_opac_suppressed Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 95e704450c5afe83f64e2cff510c97423b27b86e Author: Jonathan Druart Date: Tue Sep 2 11:21:36 2025 +0200 Bug 40680: Remove duplicated code From commit b40ceb1cf5cb195f81347e090ade5e8bc3f316de Bug 39367: Manual changes Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 7adeda91f16f2a486cbea83ba7e5b4a99e41f34e Author: Jonathan Druart Date: Fri Nov 28 09:26:38 2025 +0100 Bug 38426: yarn.lock changes Signed-off-by: Jonathan Druart commit dda7bfde677161dd2e1c1a8905017109f9142694 Author: Jonathan Druart Date: Fri Nov 28 09:26:29 2025 +0100 Bug 38426: Correct types/ws version error "webpack-dev-server##@types/ws@^8.5.5" doesn't satisfy found match of "webpack-dev-server#@types/ws@8.5.3" Signed-off-by: Jonathan Druart commit 592d966d67d62c6d324eee8a4f342d566bf985dd Author: Pedro Amorim Date: Mon Nov 24 11:39:45 2025 +0000 Bug 37893: Handle SIPconfig.xml not found / unreadable prove t/db_dependent/Koha/SIP2/SIP2ModuleMigration.t Signed-off-by: Lucas Gass commit 0eb18dffd7e9872cd46b3f2d18a9dc9e4208a941 Author: Owen Leonard Date: Tue Jul 8 13:30:00 2025 +0000 Bug 26258: Circulation tabs inconsistent with counters This patch makes changes to the markup, style, and behaviour of counters which are displayed on the patron's account tabs: Checkouts, Holds, etc. This is a simplified patch compared to previous versions in order to try to get this moving foward. The patch no longer includes added code to keep tab counts up to date as, for instance, claims are added or removed. To test, apply the patch and rebuild the staff interface CSS. - Enable features if necessary: recalls, article requests, claims, clubs, and patron lists. Test both from the checkout page and the patron detail page. Recalls: - If necessary, check out some items to patrons so that there are titles which can be recalled. - Log in to the OPAC and place one or more recalls. - Return to the staff interface and view the "Recalls" tab on the patron's account. Return claims: - If necessary, check out some items to a patron. Click the "Claim returned" button on a few of the patron's checkouts. - As you add claims, the "Claims" tab should update the count of claims. *** NOTE: This changes the display of claims in the tab so that the count of unresolved claims appears first: "Unresolved / Resolved". I think it makes more sense for the first number to be the one which shows the number of "active" issues. - Test setting the ClaimReturnedWarningThreshold system preference to various values: e.g. empty, 1, 5. - If the pref is empty, OR if the pref is set to a number higher than the number of patron claims, the count of claims should be styled with the "info" blue background and the count of resolved claims is not shown. *** NOTE: Hiding the resolved claims seems logical if there is not a concern about the total number of claims. - If the number of all claims exceeds the value of the preference, the tab should show a count of "Unresolved claims / Resolved claims" with the yellow warning style. Restrictions: - Adding a restriction to the account should cause a counter with a red background to appear on the tab. Clubs: - If necessary, create at least one club template and then multiple clubs. - From the "Clubs" tab on the patron's account, try enrolling and cancelling enrollments to confirm that the count on the tab updates correctly. *** NOTE: I have removed the count of available clubs because I think it's not relevant to this interface. We don't do it with patron lists, so this makes it a little more consistent.. Patron lists: - If necessary, create two ore more patron lists. - From the "Patron lists" tab, try adding and removing the patron from lists. Sponsored-by: Athens County Public Libraries Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit cd36f5182b70aaafa1e96fb1436011e67ab700aa Author: CJ Lynce Date: Wed Oct 1 18:55:51 2025 +0000 Bug 33647: (follow-up) Wording update & only show lastseen if activity is tracked This follow-up implements these suggestions: A. Uses 'not recorded' instead of never when there is no date. B. Only shows lastseen if syspref TrackLastPatronActivityTriggers has at least one trigger. To test: 1. Apply patch 2. Ensure syspref TrackLastPatronActivityTriggers has no triggers set. 3. Check patron record top left corner to verify lastseen is not shown. 4. Change system TrackLastPatronActivityTriggers to trigger on Checking out an item. 5. Recheck patron record top left corner to verify lastseen says "not recorded". 6. Check out a book to patron 7. Recheck patron record top left corner to verify there is a date and time shown. Signed-off-by: Owen Leonard Signed-off-by: Bernard Scaife Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 65978945066dfee6b5f1c69f62132d64d81c37d9 Author: Lari Strand Date: Tue Aug 19 11:56:18 2025 +0300 Bug 33647: (follow-up) Add UI improvements Use colon for Updated on and Last seen on texts If lastseen value doesn't exist, show the text 'Never' in UI Signed-off-by: Owen Leonard Signed-off-by: Bernard Scaife Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit e2ad52b8296f126abf42272d9e68a9614a9f4bbf Author: Owen Leonard Date: Thu Aug 14 16:00:54 2025 +0000 Bug 33647: (follow-up) Don't try to show last seen info if there is none Signed-off-by: Owen Leonard Signed-off-by: Bernard Scaife Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 0cafe666a358951465ff1cda6640782ff2790cd8 Author: Lari Strand Date: Thu Aug 14 14:08:20 2025 +0300 Bug 33647: Display borrowers.lastseen on patronbriefinfo Signed-off-by: Owen Leonard Signed-off-by: Bernard Scaife Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 149db8979f2d61ae4f33f6a8e39fa7a878b2c10a Author: Jonathan Druart Date: Fri Nov 14 11:08:47 2025 +0100 Bug 41088: (bug 38201 follow-up) Fix I18N for relationships "Add new x", "Remove this x" and "There are no x created yet" were not translatable correctly. Test plan: Add a new agreement, then a new title, and confirm that the 3 strings are correctly displayed. Then try to update .po files, translate the strings, and install the translations and confirm that the strings are correctly translated when using a translated interface. Signed-off-by: Katrin Fischer Signed-off-by: Matt Blenkinsop Signed-off-by: Lucas Gass commit cee02bbf3b8b65b68837e0b20d01fe2d3dd5293a Author: Tomás Cohen Arazi Date: Fri Nov 21 11:35:13 2025 -0300 Bug 41032: Fix Open Fifth missing in plugin repos config Signed-off-by: Tomás Cohen Arazi Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 1085f9a18bcd0fc296f21cf778c3be8e779a368f Author: Jonathan Druart Date: Thu Nov 13 09:58:42 2025 +0100 Bug 40942: Hide the 'Contacts' block if nothing to display If there is no contact we should hide the "Contacts" block on the "show" view. Fixes VueFramework_spec.ts AssertionError: Timed out retrying after 10000ms: Expected to find content: 'Contracts' within the element: but never did. Signed-off-by: Lucas Gass commit 2721b0516d0d67b30e581123a8ac0aa6248e63e6 Author: Lucas Gass Date: Tue Nov 25 16:08:53 2025 +0000 Bug 41177: Adjust Cypress tests Signed-off-by: Paul Derscheid Signed-off-by: Lucas Gass commit bd6f8767063654b334bf78e4862d348e33ee0441 Author: Lucas Gass Date: Tue Nov 25 17:10:36 2025 +0000 Bug 38426: Adjust yarn.lock after node upgrade (18 to 20) Signed-off-by: Lucas Gass commit 5bc2ca65575a0a48b95e28a6dd32949e1429c0a3 Author: Lucas Gass Date: Fri Nov 21 20:04:34 2025 +0000 Bug 39532: DBRev 25.06.00.036 Signed-off-by: Lucas Gass commit 438e51351dd7aa1c6c2cd5a0c3f229d29be4916a Author: Jonathan Druart Date: Fri Nov 14 12:02:34 2025 +0100 Bug 25952: Skip invalid repositories when searching for plugins This patch prevents the end-user to get the ugly 500 "malformed JSON string" when something wrong happens with the plugin search. It happens currently in ktd with the plugin repos listed in $KOHA_CONF An error is reported to the UI Signed-off-by: Owen Leonard Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit d51dc1fc69afad080c026ab953920888e1daca87 Author: Lucas Gass Date: Thu Oct 30 20:26:08 2025 +0000 Bug 41149: Replace replaceWith() with empty() and append() To test: 1. Set AllowRenewalOnHoldOverride to 'Dont allow' 2. Set OverduesBlockRenewing to "block renewing" 3. Checkout an item and mark it as overdue. 4. Place a hold on that item to someone else 5. Now go look at the issues table for that patron/item 6. Check "Override renewal restrictions:" 7. Now a checkbox should appear in the "Renew" column, check it. 8. Click "Renew selected items" 9. After the "Renew failed: on hold" appears the spinning icon should disappear. Signed-off-by: Owen Leonard Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit d90333e911d5642b4f052ee40c04b89d3a47cf74 Author: Martin Renvoize Date: Thu Nov 20 09:15:22 2025 +0000 Bug 39532: Use new FINES restriction type to avoid conflict with SUSPENSION This patch introduces a new unique restriction type 'FINES' specifically for the debar_patrons_with_fines.pl script to prevent duplicate restrictions on repeated runs. The original fix used 'SUSPENSION' but this conflicted with the fine-in-days feature which uses SUSPENSION for time-limited restrictions when overdue items are returned. Running the script would overwrite those time-limited restrictions with indefinite ones. Changes: - Add new 'FINES' system restriction type to patron_restriction_types.yml for new installations - Create database update to add 'FINES' type to existing installations - Update debar_patrons_with_fines.pl to use 'FINES' instead of 'SUSPENSION' - Update AddUniqueDebarment and DelUniqueDebarment POD documentation This keeps SUSPENSION exclusively for the fine-in-days feature while preventing duplicate restrictions from the fines script. Test plan: 1. Run database update 2. Verify new FINES restriction type exists in restriction_types table 3. Run debar_patrons_with_fines.pl multiple times 4. Confirm only one FINES restriction per patron (no duplicates) 5. Verify SUSPENSION restrictions from fine-in-days are not affected 6. Run tests: prove t/db_dependent/Patron/Borrower_Debarments.t Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit fdb7c9b4056112d599fd8295117396db95991b53 Author: Kyle M Hall Date: Wed Apr 2 11:47:32 2025 -0400 Bug 39532: Script debar_patrons_with_fines.pl creates repeat restrictions, uses wrong restriction type The cronjob debar_patrons_with_fines.pl is meant to add a restriction based on a fines threshold. The problem is that the script adds a MANUAL restriction, which makes no sense. MANUAL restrictions are meant to be manually created, never automatic as this script does. In addition, they are repeatable, not unique. Every time this script runs, it will add an additional restriction. There is already a restriction type meant for this type of use case: SUSPENSION We should change this script to create SUSPENSION restrictions instead of MANUAL restrictions. In summary, this script should use the unique restriction type SUSPENSION to prevent multiple additional restrictions from being created on each run. Test Plan: 1) Set up a patron with fines 2) Run misc/cronjobs/debar_patrons_with_fines.pl -c -m "Test message" 3) Note the restriction is created 4) Run misc/cronjobs/debar_patrons_with_fines.pl -c -m "Test message" again 5) Note another restriction is created 6) Delete the restrictions 7) Apply this patch 8) Run misc/cronjobs/debar_patrons_with_fines.pl -c -m "Test message" 9) Note the restriction is created 10) Run misc/cronjobs/debar_patrons_with_fines.pl -c -m "Test message" again 11) Note another restriction is *not* created! Signed-off-by: Magnus Enger Signed-off-by: Emmi Takkinen Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit e4db78bf210ffb96f189e558fc307d9024a5f6a7 Author: Pedro Amorim Date: Thu Nov 20 15:57:38 2025 +0000 Bug 41271: Revert follow-up from bug 37893 This was a bad workaround. It was ugly and is no longer relevant now that pod_coverage.t no longer attempts to launch a SIP server. prove xt/author/pod_coverage.t Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit a2917e21726f6b8f18b629c77b255bbf4acaace2 Author: Pedro Amorim Date: Thu Nov 20 15:54:44 2025 +0000 Bug 41271: Fix pod_coverage for SIPServer.pm Because the file is now being properly checked for pod_coverage, it fails (because a lot of methods dont have pod coverage. Add here Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit c01b5d68ea6fadbc8e95974c50a8832e62535e55 Author: Pedro Amorim Date: Thu Nov 20 15:53:15 2025 +0000 Bug 41271: Dont run Net::Server::PreFork->run on 'require' or 'use' By using 'unless caller' we ensure the class is not executed when Pod::Coverage->new does 'require C4/SIP/SIPServer.pm Ensure no regressions are added: prove t/db_dependent/SIP/* koha-sip --restart kohadev koha-sip --status kohadev Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit a8526d441969480df11d8aa32ec1c0f0ddb54801 Author: Jonathan Druart Date: Thu Nov 20 14:58:31 2025 +0100 Bug 41274: Remove exceptions from files listed in the result repo IF we have pushed some files that should have been excluded from the tests but have been processed previously and failed, we should skip it the next build anyway Signed-off-by: Lucas Gass Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit a0f768f784e77b50fc7ef55179a6e836019c45d0 Author: Jonathan Druart Date: Thu Nov 20 14:58:02 2025 +0100 Bug 41274: Remove the exceptions from git range When listing the files from a git range we want to remove the exception files from that list Signed-off-by: Lucas Gass Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit 52533061871d08a3bcb1e455475d864e645bd17d Author: Jonathan Druart Date: Thu Nov 20 14:32:40 2025 +0100 Bug 41274: Remove range parameter from ls_perl_files It's not used. Signed-off-by: Lucas Gass Signed-off-by: Tomás Cohen Arazi Signed-off-by: Lucas Gass commit 291c2f103d59fc624842a5917d36326daab35410 Author: Marcel de Rooy Date: Fri Oct 24 13:06:23 2025 +0200 Bug 41094: Fix search_anonymize_candidates, locked_account We should not allow anonymizing patrons with failed login attempts when the pref FailedLoginAttempts has not been set. Test plan: Run the test again from the previous patch. This should pass now. Choose a patron with a positive value (say 55) in borrowers.login_attempts or modify one. (NOTE: This patron will be anonymized in the test plan.) Empty pref value for FailedLoginAttempts. Set PatronAnonymizeDelay to 1. Fill dateexpiry for this patron to yesterday. Run cleanupdatabase.pl -confirm -v and check if the patron was NOT anonymized. * Anonymized 0 patrons Now set FailedLoginAttempts to a value (say 55) so that the patron is considered as locked. (This unrealistic value is for testing only.) MAKE SURE that you will not be anonymizing more patrons than you like in the next step! (Set login_attempts to value < 55 for all other patrons.) Run cleanupdatabase.pl -confirm -v again and check if the patron was anonymized. * Anonymized 1 patrons Restore the changed pref values. Signed-off-by: Marcel de Rooy Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit f4ff248b5ce4de2638d0060a36057d47b033c044 Author: Marcel de Rooy Date: Fri Oct 24 13:06:23 2025 +0200 Bug 41094: Improve test of search_anonymize_candidates/account_locked Test plan: Run the test without applying the follow-up patch. The test should fail. This shows that we need the fix and will help avoid future regressions. Signed-off-by: Marcel de Rooy Signed-off-by: David Nind Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass