commit 96ec520e0311b286a9efd9cccd68d3527d3763aa Author: Jonathan Druart Date: Thu Apr 9 14:33:25 2026 +0200 Bug 42190: Do not export the dropdown menu for itemnumbers, biblionumbers, cardnumbers and borrowernumbers Signed-off-by: Michaela Sieber commit 137e465fd36b858e0df394c03b1d2a3bde21c6a5 Author: Jonathan Druart Date: Thu Apr 9 14:29:21 2026 +0200 Bug 42190: Use num-html for itemnumber and biblionumber columns Signed-off-by: Michaela Sieber commit 797fbc135118f850dcb29cd60ff70559e4367cc6 Author: Jonathan Druart Date: Fri Apr 3 14:22:55 2026 +0200 Bug 42190: Add "Back to normal view" Signed-off-by: Michaela Sieber commit c152a9b162ac1d69ec9c52f73012ad6f6d100bb3 Author: Jonathan Druart Date: Fri Apr 3 14:05:24 2026 +0200 Bug 42190: Remove the 'Configure' button Remove the "Configure" if the table does not have module, page and table defined. Signed-off-by: Michaela Sieber commit 2857d2a95dc46dd794ffec7b0b69e2ed95357d08 Author: Jonathan Druart Date: Fri Mar 27 12:49:34 2026 +0100 Bug 42190: Add DataTables to report results This is a POC (i.e. not ready for inclusion yet) It adds a "Open in DataTables" button in the toolbar, that will refetch the report (with a limit=100000, that needs to be configurable, how?) and load the results in a kohaTable (DataTables) Signed-off-by: Michaela Sieber commit 397c17e14cd2f1044ca31bf746a9c469f0cc8286 Author: Lucas Gass Date: Thu Apr 9 19:23:35 2026 +0000 Bug 42273: DBReb 25.12.00.042 Signed-off-by: Lucas Gass commit 7ae9616df91f3a360478aa747eeea0c7ebc9c9cb Author: Emmi Takkinen Date: Mon Mar 30 09:39:25 2026 +0300 Bug 23415: (follow-up): Declare variable AllowFineOverrideRenewing Missing variable causes JS error. Signed-off-by: Lucas Gass commit d0ba565dff3d5c947238a615d2418e6a309689ff Author: Jonathan Druart Date: Mon Mar 30 10:08:15 2026 +0200 Bug 41568: (follow-up) Tidy kohaTable - circ/circulation_batch_checkouts.tt Signed-off-by: Lucas Gass commit 08e559e207aed379730bddaa85bf107cc6737103 Author: Jonathan Druart Date: Fri Apr 3 10:54:21 2026 +0200 Bug 41582: Fix tags - OPAC TagsInputEnabled is not a syspref but a TT var defined at the top of the template Without this patch the "Add tag(s)" link on the opac-detail page is not working Signed-off-by: Lucas Gass commit 7cdba6ba021791afa30f59acf56557e11370e8de Author: Saiful Amin Date: Mon Dec 8 19:18:32 2025 +0000 Bug 41383: SIP2 server does not search patrons by unique patron attributes (alternate IDs unusable in SIP2) Currently, Koha::Patrons->find_by_identifier only searches for patrons by userid and cardnumber. This patch extends this method to also search by unique borrower attributes (where unique_id=1). This enhancement allows modules like SIP2 to identify patrons using alternative unique identifiers defined in the system. Test Plan: 1. Test current behaviour: - Go to Administration -> Patron attribute types - Create a new Patron attribute with: - Patron attribute type code = "AltID" - Description = "Alternate ID" - Unique identifier checkbox selected - Save - Edit any patron record and go to Additional attributes and identifiers - Add a value "altid123" to "Alternate ID" - Save - Use any SIP2 client to search for the patron using this attribute value. e.g., `perl misc/sip_cli_emulator.pl -su term1 -sp term1 -l CPL --host localhost --patron altid123 -m patron_information` - Verify that the patron is NOT found with this message: 'AFInvalid cardnumber' e.g.: READ: 64YYYY 00120260304 104611000000000000000000000000AOCPL|AAaltid123|AE|BLN|AFInvalid cardnumber| 2. Apply the patch. 3. Run the tests: prove t/db_dependent/Koha/Patrons.t - Verify that all tests pass, including the new cases for unique attribute lookup. 4. Test with patch applied: - Use any SIP2 client to search for the patron using this attribute value. e.g., `perl misc/sip_cli_emulator.pl -su term1 -sp term1 -l CPL --host localhost --patron altid123 -m patron_information` - Verify that the patron is found with this message: 'AFGreetings from Koha.' e.g.: READ: 64 00120260304 104328000000000000000000000000AOCPL|AA23529001000463|AEEdna Acosta|BLY|BHUSD|BV0|CC5|BD7896 Library Rd. Portland, OR 44240|BF(212) 555-1212|PB19800424|PCPT|PIY|AFGreetings from Koha. | 5. Test non-unique attribute: - Go to Administration -> Patron attribute types - Edit "Alternate ID" attribute type - Unique identifier checkbox NOT selected - Save - Use any SIP2 client to search for the patron using this attribute value. e.g., `perl misc/sip_cli_emulator.pl -su term1 -sp term1 -l CPL --host localhost --patron altid123 -m patron_information` - Verify that the patron is NOT found with this message: 'AFInvalid cardnumber' e.g.: READ: 64YYYY 00120260304 104611000000000000000000000000AOCPL|AAaltid123|AE|BLN|AFInvalid cardnumber| 6. Sign-off Signed-off-by: Syed Faheemuddin Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 0bcf87df3848487abc5d425e0c3ed84919cd7d88 Author: Tadeusz „tadzik” Sośnierz Date: Wed Apr 8 13:48:42 2026 +0200 Bug 42302: Fix xgettext.pl's STDOUT output xgettext.pl tries to produce output to STDOUT by default, but fails because of an error in the code. It should go to the actual STDOUT instead of a file named '&STDOUT'. Test plan: 1. Run xgettext.pl: echo koha-tmpl/opac-tmpl/bootstrap/en/includes/serial-status.inc > transfiles ./misc/translator/xgettext.pl -vaf transfiles 2. Observe no standard output, and the existence of a file called `&STDOUT`. Output to the screen is: echo koha-tmpl/opac-tmpl/bootstrap/en/includes/serial-status.inc > transfiles kohadev-koha@kohadevbox:koha(main)$ ./misc/translator/xgettext.pl -vaf transfiles ./misc/translator/xgettext.pl: Outputting to STDOUT... ./misc/translator/xgettext.pl: Opening input file list "transfiles" ./misc/translator/xgettext.pl: Processing file "./koha-tmpl/opac-tmpl/bootstrap/en/includes/serial-status.inc" 3. Apply the patch. 4. Run again. 5. Observe that information is output to the screen (see example of outpunt in the bug comment). Signed-off-by: David Nind Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit d345453a235cfe907d3b05747adca5de7b46188d Author: Lucas Gass Date: Wed Feb 18 22:15:32 2026 +0000 Bug 41883: logaction when batch modifying holds To test: -APPLY PATCH and restart_all -Place a hold -Run the Holds log using the hold's reserve_id. There will be a single entry for the hold's creation. -Find the hold using the batch hold modification tool, and update its pickup location -Look at the action log, the chnage should be logged -Try batch modding holds in other ways, ensure the changes are logged -Turn off HoldsLog and batch modify some holds, the changes should NOT be logged. Signed-off-by: Anneli Österman Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit 894e144303b52dda60136fe2a72cb76adc36ee1b Author: Tomás Cohen Arazi Date: Mon Apr 6 22:11:49 2026 -0300 Bug 42273: Fix 'idenfity' typo in categories table The categorycode column comment in the categories table had a typo: 'idenfity' instead of 'identify'. This fixes it in kohastructure.sql and adds an atomic update to correct existing installations. Test plan: 1. Apply this patch 2. Run: $ updatedatabase => SUCCESS: The atomic update is applied 3. Verify: echo "SHOW FULL COLUMNS FROM categories WHERE Field='categorycode';" | koha-mysql kohadev => SUCCESS: The comment reads 'unique primary key used to identify the patron category' 4. Sign off :-D Signed-off-by: Laura_Escamilla Signed-off-by: David Nind Signed-off-by: Lucas Gass commit ce0d0ec93a5ed0d40cc8e22b8b0d26ce49ef7794 Author: Lucas Gass Date: Thu Apr 9 14:08:51 2026 +0000 Bug 42053: DBRev 25.12.00.041 Signed-off-by: Lucas Gass commit 38e2b4b99118099a72b0dd22b224e1d959afc9f1 Author: Kyle M Hall Date: Tue Mar 10 12:09:02 2026 -0400 Bug 42053: Add sip2 to userflags if it doesn't exist Bug 37893 only creates the sip2 userflag if the instance has a SIPConfig.xml set up. This userflag needs to be created reguardless or the instance will not be able to use SIP in the future! Test Plan: 1) Ensure you have no SIPConfig.xml 2) Run the bug 37893 update 3) Note the missing userflag 4) Apply this patch 5) Run updatedatabase.pl again 6) Note the userflag exists! Signed-off-by: Fridolin Somers Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit 39352eabb1a32467714c9f33d9c232fe677cc9ba Author: Tomás Cohen Arazi Date: Tue Apr 7 10:36:05 2026 -0300 Bug 41944: Fix template error for non-existent ILL requests This patch fixes a template error that occurred when attempting to view a non-existent ILL request in the staff interface. Previously, navigating to ill-requests.pl with an invalid illrequest_id would result in a 500 error and a stacktrace. The Perl-side fix (output_and_exit with 'unknown_ill_request') was already applied. This patch adds the template-side guard: wrapping the ILL content with [% UNLESS blocking_error %] to prevent processing ILL-specific content when the request doesn't exist, following the same pattern used in serials/subscription-detail.tt and members/moremember.tt. Test plan: 1. Ensure KTD is launched with Rapido ILL plugin and bootstrapped: $ ktd --proxy --name rapido --single-plugin ~/git/koha-plugins/rapido-ill up -d $ ktd --shell k$ cd /kohadevbox/plugins/rapido-ill/scripts k$ perl bootstrap_rapido_testing.pl k$ restart_all 2. Log into the staff interface at http://rapido-intra.localhost. 3. Point your browser to a non-existent ILL request, e.g., http://rapido-intra.localhost/cgi-bin/koha/ill/ill-requests.pl?op=illview&illrequest_id=1000 => SUCCESS: An 'ILL request not found.' message is displayed, consistent with other not-found pages in Koha. 4. Sign off :-D Signed-off-by: David Nind Signed-off-by: Jan Kissig Signed-off-by: Lucas Gass commit 581c9b39bbd1501a63399adbb23b15338eef56f3 Author: Jan Kissig Date: Tue Mar 17 09:32:52 2026 +0000 Bug 28297: Allow syspref text fields to be saved when content changed to original value This fixes the behavior on changed system preferences in HTML input text fields. Preferences which are changed back to the original value can be saved now without reloading the system pref page. This will only affect input fields with type=text as they have the property defaultValue which is checked to highlight a field as 'modified'. Testplan: a) take a syspref with an HTML text input field f.e. AccessControlAllowOrigin b) write '*' into the iput field. Notice that the preference is marked 'modified'. Click 'save' c) now got to the text field again and delete that '*'. Notice the preference does not get marked as modified and can theefore not be saved. d) apply patch and reload page e) repeat b) and c) and notice that the preference gets marked 'modified' on both cases. Signed-off-by: David Nind Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit b4c3352f333726993e31c188d5830ffec98b804c Author: Laura Escamilla Date: Fri Apr 3 15:53:21 2026 +0000 Bug 42142: Improve accessibility of login settings toggle button Test plan: 1. Log in to the staff interface 2. Click on the logged in menu dropdown 3. View source or inspect the markup for the login settings toggle (gear button) 4. Confirm the icon element has aria-label="Toggle panel for login settings" 5. Confirm the interactive element does not expose aria-expanded 6. Paste the page source into the W3C Markup Validation Service 7. Confirm the validator reports that aria-label must not be specified on the i element Apply the patch: 8. Repeat steps 1-3 9. Confirm the aria-label has been moved from the i element to the toggle link 10. Confirm the i element now uses aria-hidden="true" 11. Confirm the toggle exposes aria-expanded="false" before opening the panel 12. Activate the login settings toggle 13. Confirm the panel opens and aria-expanded changes to "true" 14. Activate the toggle again 15. Confirm the panel closes and aria-expanded changes back to "false" 16. Paste the updated page source into the W3C Markup Validation Service 17. Confirm the validator error is resolved 18. Sign off and have a great day! Signed-off-by: Owen Leonard Signed-off-by: Brendan Lawlor Signed-off-by: Lucas Gass commit daa1b20312703a33d3b3290335dc25a2e72731e3 Author: Jonathan Druart Date: Thu Dec 18 13:37:20 2025 +0100 Bug 41476: Fix plugins table when one of the plugin has errors I've tried to install one of my old plugin and it exploded. https://gitlab.com/joubu/koha-plugin-jump Test plan: Install a broken plugin and notice the Datatable error on the plugins list With this patch applied the error is gone Signed-off-by: Emmi Takkinen Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit 7fd1ff8e89fa171c4f03ad2546b3dafb5309f378 Author: Lucas Gass Date: Fri Feb 27 20:49:25 2026 +0000 Bug 41880: Add a unit test for item level holds logging Signed-off-by: David Nind Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit 27b76f9bf3b6bb8bb3d6ca1b418a96a2c9c2f484 Author: Lucas Gass Date: Thu Feb 26 18:43:32 2026 +0000 Bug 41880: Add a unit test Signed-off-by: David Nind Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit 8357a8f074d2dc6566ddfb6497bd281755150391 Author: Lucas Gass Date: Thu Feb 26 17:36:47 2026 +0000 Bug 41880: Keep original copy of hold for proper logging To test: 0. APPLY PATCH, restart_all. 1. Make sure HoldsLog is enabled 2. Place a record/bib level hold on bib A. 3. Move the hold to bib B. 4. Look at the diff column in the holds log. You should see the Old (0) biblionumber and the New (N) biblionumber. You should see nothing about itemnumber because this is a record level hold. 5. Ensure that the New and Old biblionumbers are the correct ones. 6. Place an item level hold on item A. 7. Mobe the hold to item B 8. Look at the diff column in the holds log. You should see the Old (0) biblionumber and the New (N) biblionumber. You should also see the New and Old itemnumbers since this is an item level hold. 8. Ensure that the New and Old biblionumbers AND the New and Old itemnumbers are correct. Signed-off-by: David Nind Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit a4903946ca3fcba97f61465ed00793787df5b8df Author: Pedro Amorim Date: Wed Apr 1 12:23:12 2026 +0000 Bug 42238: Fix loading 'holds' tab when navigating with hash I don't know what caused this to stop working. Possibly a change in the markup due to a bootstrap upgrade? Test plan: Before applying patch: 1) Place any hold for Henry, link to help: /cgi-bin/koha/reserve/request.pl?biblionumber=76&findborrower=23529000035676 2) Open a new tab and visit the Patron details page directly on the 'Holds' tab: /cgi-bin/koha/members/moremember.pl?borrowernumber=19#holds_panel 3) Notice it activates the correct tab, but doesn't load the table. 4) Open a new tab again, this time visit the Patron 'Check out' page directly on the 'Holds' tab: /cgi-bin/koha/circ/circulation.pl?borrowernumber=19#holds_panel 5) Notice the same behavior (tab activates, no table is loaded). 6) Apply patch. Repeat test plan. Confirm table loads on both occasions. Signed-off-by: Owen Leonard Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit 5187bd52b9b141426a22fc55bfbbe54ba77e6ce2 Author: Jake Deery Date: Wed Mar 25 14:24:30 2026 +0000 Bug 42175: Fix Mojo under k.t.d This patch fixes Mojo under k.t.d by providing CGI::Compile with an absolute rather than relative path. TO TEST: == APPLY PATCH == a) run reset_all b) run apachectl stop (if apache does not stop, may need to `sudo kill -9 apache2`) c) run /kohadevbox/koha/bin/opac prefork -m production -p -l http://*:8080 & c) run /kohadevbox/koha/bin/intranet prefork -m production -p -l http://*:8081 & d) confirm you can use k.t.d. as normal == SIGN OFF == Signed-off-by: Eric Phetteplace Signed-off-by: David Cook Signed-off-by: Lucas Gass commit 1b1c23bc074f5fec51db02218f0f7d5abd2ba6cf Author: Jonathan Druart Date: Fri Mar 27 09:37:40 2026 +0100 Bug 42200: Remove pl code The code in the controller is not longer used. We should also restore the default value (120) Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 38bf53404e31470112db8a829f78616acebc4f44 Author: Lucas Gass Date: Thu Mar 26 19:47:35 2026 +0000 Bug 42200: Convert milliseconds to seconds for SelfCheckInTimeout To test: 1. Set, or leave, the SelfCheckTimeout at 120 seconds 2. Log in to SCO module 3. You will be logged out in 120 milliseconds 4. APPLY PATCH, clear browser cache 5. SelfCheckTimeout should work in seconds again. Signed-off-by: David Nind Signed-off-by: David Cook Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit f6addef698ffb89dbfc4b04460faf2c552287496 Author: Lucas Gass Date: Wed Mar 25 17:19:40 2026 +0000 Bug 42182: Fix branch limitation on reports-home.tt 1- Create a StaffReportsHome HTML customization 2- Limit it by branch 3- Log into that branch and to to the reports home page 4- No HTML customization 5. APPLY PATCH 6. Try again, this time you should see the HTML customization. Signed-off-by: Juliet Heltibridle Signed-off-by: Brendan Lawlor Signed-off-by: Lucas Gass commit 61cffdc9f3deaa6a8df54bdbeafa51658f6264ae Author: Maryse Simard Date: Thu Feb 5 17:01:18 2026 -0500 Bug 41783: Encode query parameters for suggestions filtering When filtering by bibliographic information in the sidebar of the suggestions management page, the '%' contained in the query is not encoded. This can lead to errors if the search terms can be evaluated as an encoded character. Test plan: 1. Go to Acquisitions > Suggestions 2. Create a suggestion with a title like "200 recipes" 3. In "Filter by" > Bibliographic information, search for "200" 4. No results are shown in the table 5. Apply the patch 6. Search again (step 3). The suggestion should appear in the list. Signed-off-by: David Nind Signed-off-by: Brendan Lawlor Signed-off-by: Lucas Gass commit 75b7cc4a950489e00a79d8f8c62beeff8ae50684 Author: Andrew Fuerste-Henry Date: Tue Mar 10 20:26:19 2026 +0000 Bug 42062: correct permissions check in template file To test: 1 - have a biblio with circulation history 2 - confirm syspref intranetreadinghistory is enabled and you're logged in as a user with permissions view_checkout_history and circulate_remaining_permissions (or superlibrarian or top-level borrowers and circulation permissions) 3 - load the checkout history page on your biblio record 4 - confirm there is no Patron column and that column is not hidden via column config 5 - apply patch, restart services, reload page 6 - confirm Patron column is present Signed-off-by: Fridolin Somers Signed-off-by: Brendan Lawlor Signed-off-by: Lucas Gass commit 656da5cb4bbf998d0cfb4e05fdc3b0aa4075d144 Author: Roman Dolny Date: Wed Feb 25 18:48:26 2026 +0000 Bug 41938: Argument "" isn't numeric in numeric gt (>) ... warnings in circulation.tt The warnings: [WARN] Argument "" isn't numeric in numeric gt (>) at /kohadevbox/koha/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt line 1072. [WARN] Argument "" isn't numeric in numeric gt (>) at /kohadevbox/koha/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt line 1188. appears in the plack-intranet-error.log. Test plan: ========== 1. Use a fresh KTD, observe plack-intranet-error.log. 2. Find any patron and go to "Check out" tab. ==> Warnings should appear in plack-intranet-error.log 3. Apply the patch; restart_all. 4. Repeat 2. No warnings in plack-intranet-error.log Sponsored-by: Ignatianum University in Cracow Signed-off-by: David Nind Signed-off-by: Baptiste Wojtkowski Signed-off-by: Lucas Gass commit 2c253faf2d3b06b5b818a6b23890e0d790b500a5 Author: Nick Clemens Date: Tue Jan 20 14:32:01 2026 +0000 Bug 41267: (follow-up) Add more clarifying text Signed-off-by: Andrew Auld Signed-off-by: Emily Lamancusa Signed-off-by: Lucas Gass commit 876869544fa11a8bb91ddfc7c7c33283504e34d5 Author: Nick Clemens Date: Tue Nov 18 19:07:19 2025 +0000 Bug 41267: Add fill_other_biblio_holds_policy circulation rule This patch adds a new rule for itemtypes to allow/prevent filling other holds on a bibliographic record The rule will obey ReservesControlBranch for determining the rules To test: 1 - Apply patches 2 - Setup/choose 2 item types in Administration->Item types 3 - In Administration -> Circulation and fine rules scroll to the bottom 4 - Set one item type to "Fill other holds on record" = 'Yes' and the other to 'No' 5 - Place a next available hold on the record 6 - Checkout the 'Yes' item type to the patron 7 - Their hold should fill 8 - Check in the items 9 - Place a next available hold on the record 10 - Checkout the 'No' itemtype to the patron 11 - Their hold should not be filled 12 - Check in the item and confirm the hold 13 - Checkout the itme to the patron, the hold fills NOTE: While seemingly counter intuitive, the rule controls whether a hold NOT tied to this item will fill Confirming the hold adds an itemnumber to the hold. In most cases, these items will not be holdable, so won't trigger at checkin 14 - Set a rule for the patrons branch to No and set system preference ReservesControlBranch to 'Patrons library' 15 - repeat 5&6 16 - The hold should not fill 17 - Change reserves control branch to items home library 18 - checkin /checkout the yes item type 19 - The hold should fill Signed-off-by: Andrew Auld Signed-off-by: Emily Lamancusa Signed-off-by: Lucas Gass commit ea4600476e2b8c8a923a32288a020aecd3a20652 Author: Kevin Carnes Date: Tue Feb 24 13:22:01 2026 +0100 Bug 21941: Fix GROUP BY in circ/reserveratios.pl When using strict_sql_modes, the Hold ratios page causes an Incorrect GROUP BY error and returns an Error 500. This patch removes uncessary columns from the database query and adds the biblio columns to the GROUP BY statement, so they can be selected. Since it's already grouped by biblionumber, it should not cause any additional rows to be created. Test plan: 1. Make sure that strict_sql_modes is enabled in the koha-conf.xml file. 2. Place at least one hold on a book. 3. Go to Circulation and select Hold ratios. 4. Observe that you get an Error 500. 5. Apply patch. 6. Repeat step 3. 7. Observe that you can view the page. 8. If the table is empty, change the ratio to 1. 9. Sign off. Sponsored-by: Lund University Library Signed-off-by: Owen Leonard Signed-off-by: David Nind Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit 3a6a79a607ef87b08e71140a6acc68dbdfdf2e15 Author: Paul Derscheid Date: Tue Mar 3 10:08:05 2026 +0100 Bug 15792: Throttle patron renewal links to prevent double-clicks - Replace plain renewal links in patron_messages.inc with the reusable throttled-button component introduced in Bug 40896 - Covers all four renewal links: warndeparture and expired states, in both circulation and patron detail contexts - Include throttledButton.js in circulation.tt and moremember.tt - Add persist mode and done icon state to throttled-button component so the button stays disabled on bfcache restore with a check icon instead of a misleading spinner Test plan: 1) Create or update a patron category with an enrollment fee and an enrollment period in months (e.g. 24 months) 2) Create a patron of that type and write off any initial enrollment fee 3) Set the patron's dateexpiry to the past so the account is expired 4) Go to /cgi-bin/koha/circ/circulation.pl and scan the patron 5) Observe the "Renew" link in the expiration warning now shows as a small button with a rotate icon 6) Click "Renew" and confirm the button becomes disabled with a spinner, preventing a second click 7) Verify the patron is renewed correctly with only one enrollment fee charged and the correct expiry date 8) Press the browser back button to return via bfcache 9) Verify the button remains disabled and shows a check icon instead of the spinner, indicating the action was already completed 10) Repeat from the patron detail page (moremember.pl) to verify the same throttle and done-state behavior there 11) Test the warndeparture case by setting dateexpiry to a near-future date and confirming the same behavior Signed-off-by: David Nind Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit 96d2287a6a6db9dca0b3e8ccf7c8b06d864f8478 Author: Owen Leonard Date: Fri Mar 6 14:39:26 2026 -0500 Bug 42017: Fix content type of OPAC news RSS This patch updates opac-news-rss.pl so that it outputs data with the correct content type, text/xml. To reproduce you must have at least one news item in your system. From the OPAC main page, click the RSS feed link. - If you are using Firefox or Chrome you will see unstyled plain test on the screen. You may or may not be able to see the problem if your browser (e.g. Vivaldi) has a built-in RSS reader. To test, apply the patch and restart services. - In the OPAC, from the main page, click the RSS feed link at the bottom of the OPAC news list. - You should see the XML view of the feed. This confirms that the browser is receiving the correct content type. Sponsored-by: Athens County Public Libraries Signed-off-by: Roman Dolny Signed-off-by: Andrew Fuerste Henry Signed-off-by: Lucas Gass commit c513dee502a0a65819adc9c5df70f5fc8e2b6a4e Author: Martin Renvoize Date: Mon Mar 30 09:28:38 2026 +0100 Bug 41368: Fix ManageMarcImport Cypress test timing issue Replace the no-op `#job_callback` existence check with a recursive `cy.wait('@jobPoll')` that loops through each `/api/v1/jobs/*` poll response (arriving every ~1s) until it sees `status: finished`. This avoids any fixed timeout — the test proceeds as soon as the API signals completion, however long that takes on a given machine. Signed-off-by: Lucas Gass commit 92b1c11e3c5939d074db179950af60969fb6983a Author: Martin Renvoize Date: Fri Mar 27 16:16:19 2026 +0100 Bug 40383: (follow-up) Fix insertSampleEdifactMessages for new schema We moved host/username/password out of vendor_edi_accounts into a separate file_transports table between PQA and Pushed. Update the Cypress test fixture to insert a file_transports record first and reference it via file_transport_id, and clean it up in deleteSampleEdifactMessages. Signed-off-by: Martin Renvoize commit d35f76316d9be6fe03aa063fee8eb6290c0fabb1 Author: Martin Renvoize Date: Fri Mar 27 16:09:30 2026 +0100 Bug 41980: (follow-up) Fix Cypress test ambiguous field code search Typing "CE" in the allow_fields dropdown now matches both "CE - Unused" and "AY - Sequence number" (case-insensitive match on "ce" in "Sequence"), causing the wrong option to be selected. Use "CE - " to uniquely target the intended option. Signed-off-by: Martin Renvoize commit 35a1757c9739f27a51985ca917c46fb8fd26085f Author: Martin Renvoize Date: Fri Mar 27 11:14:11 2026 +0100 Bug 40383: (RM follow-up) Use csrf_token over csrfToken Signed-off-by: Martin Renvoize commit 679afb31ec8d830bcab0f68a4506a4a406046147 Author: Martin Renvoize Date: Fri Mar 27 11:03:06 2026 +0100 Bug 35380: (RM follow-up) Move TT to own script tag Adhere to JS19 Signed-off-by: Martin Renvoize commit 320e08a715b2b8bee9864506de659f212b8fc76e Author: Martin Renvoize Date: Fri Mar 27 10:37:20 2026 +0100 Bug 41462: (RM follow-up) Add koha_objects_class Add the missing plural class mapper to the OAI Sets schema file Signed-off-by: Martin Renvoize commit b3163a009b7e2ed1c14a44b00f0e72ecdb6063a6 Author: Brendan Lawlor Date: Fri Mar 20 17:30:11 2026 +0000 Bug 41638: (QA follow-up) Make label for alt contact city consistent with main and alt address city Signed-off-by: Martin Renvoize commit ecbaf3b4d5cbafa2731f622562eda00bb823b3ca Author: Owen Leonard Date: Thu Jan 22 13:36:36 2026 -0500 Bug 41638: (follow-up) Fix more instances, some markup errors I've added changes for member-alt-address-style.inc, member-alt-contact-style.inc, and member-main-address-style.inc. I've also made some related markup corrections: Missing ID on some inputs, incorrect "for" label on some labels. These fixes don't correct *all* validation errors but it's an improvement. Signed-off-by: Emmi Takkinen Signed-off-by: Martin Renvoize commit d8a24968880e5b50ac724909f528b03028c2f126 Author: Lisette Scheer Date: Thu Jan 15 17:00:43 2026 +0000 Bug 41638: Add IDs to labels on patron edit When targeting with jquery and css, labels on the patron edit screen can be fragile and complicated. This patch adds ids to all the labels that follow the following convention: