commit 5c5bd6d9cbde17fb8027adc319981b0dd64685bc Author: Andrew Nugged Date: Mon Jun 15 08:25:32 2026 +0300 Bug 42845: Add ILL config endpoint for Vue app The ILL Vue app currently reads ILLModule and ILLPartnerCode through the system preferences service. That service requires parameters/manage_sysprefs, so a staff user with ILL permissions but without system preference administration permissions cannot load the ILL module. Add an ILL-specific /ill/config REST endpoint protected by the ill permission, and switch the ILL Vue app to load its configuration from that endpoint. This follows the module-specific configuration endpoint pattern introduced by bug 33606 for the same manage_sysprefs problem in the ERM Vue app. Security/compatibility considerations: the endpoint returns only allow-listed, non-secret ILL configuration values needed by the ILL Vue app. It does not expose the generic system preferences API, and /api/v1/sysprefs remains restricted to parameters/manage_sysprefs. Regression test coverage: the new API test verifies that a staff user with the ill permission can read /ill/config, that a staff user without the ill permission cannot read it, and that the same ILL-only user still cannot access /api/v1/sysprefs. Test plan: 1. prove -I. -It/lib t/db_dependent/api/v1/ill_config.t 2. prove -I. -It/lib t/db_dependent/api/v1/ill_users.t commit 38474d7611cf8c7039efb180f5c709e6db5781c6 Author: Jonathan Druart Date: Mon Jun 15 13:46:34 2026 +0200 Bug 42781: Do not modify window.name https://developer.mozilla.org/en-US/docs/Web/API/Window/name Test plan: 0. Do not apply this patch (you can apply the first one) 1. Go to /cgi-bin/koha/members/members-home.pl 2. Open the console 3. type "window.name", it's "" 4. Run a patron search, "d" 5. window.name is now "Duffy, Joann name" 6. Apply this patch, try again 7. window.name is still an empty string Signed-off-by: Jan Kissig Signed-off-by: Pedro Amorim commit 98459bab8c57c6d21f7a573abdda7fdee6465850 Author: Magnus Enger Date: Mon Jun 8 10:28:49 2026 +0200 Bug 42781: Declare 'name' before using it in patron-format.js The code in koha-tmpl/intranet-tmpl/prog/js/patron-format.js uses a variable called 'name' without declaring it first. The declaration was removed in bug 32176. No deterioration of functionality has been discovered in connection with this, but the declaration should be restored. To test: - Apply the patch. - HidePatronName = Show - Look at the staff detail view for a record that has at least one item on loan. - Verify the name of the patron is displayed as expected. Signed-off-by: Jonathan Druart Signed-off-by: Jan Kissig Signed-off-by: Pedro Amorim commit 4979f23cb1c26d7345c11e6b1b1ea9f5866b5c21 Author: Jan Kissig Date: Mon Jun 15 06:24:57 2026 +0000 Bug 42844: Fix broken subscription search when using additional fields as seach criteria This fixes an error when searching for a subscription with an additional field when no result is found by changing the call of SearchSubscriptions to expect an array instead of an hash ref. Serials.pm, when using filter_by_additional_fields may return an empty array, but the calling function only checked for an hash ref which lead to an error when no result was found. Testplan: a) create an additional field for subscriptions: More -> Serials -> Manage subscription fields f.e. use an AV CCODE as additional field make sure "searchable" is checked No subscription should use this additional field by now. b) go to More -> Serials c1) if bug 40201 is pushed you can search for that additional field on serials-home -> An error stack trace will appear. c2) otherwise perform an empty search on serials home to end on serials-search. In the search form on the left select that additional field as search criteria. -> An error stack trace will appear. d) add a subscription using that additional field -> More -> Serials -> New subscription. On step two there is a section for Additional fields. Select f.e. CCODE Fiction e) redo c1 or c2 using that additonal field value as search criteria. f) Check that the search result shows your subscription. g) apply patch and redo c1 or c2 for an additional field value that is not used (f.e. Non-fiction) h) The search should work now, returning 0 results instead of an error i) check that searching for a used additional field (f.e. Fiction) still works Signed-off-by: Michaela Sieber Signed-off-by: Jonathan Druart Signed-off-by: Pedro Amorim commit 2bb3865e7e00eefea0d9c1710789680ed709db44 Author: Pedro Amorim Date: Mon Jun 15 15:20:31 2026 +0000 Bug 28915: DBIC Schema Build Signed-off-by: Pedro Amorim commit 566ea8876b75df2e6301a6c9c332e3210638f816 Author: Pedro Amorim Date: Mon Jun 15 15:16:07 2026 +0000 Bug 28915: DBRev 26.06.00.002 Signed-off-by: Pedro Amorim commit f099cb0d622bbe86a27670ad4eef2076e884513b Author: Pedro Amorim Date: Mon Jun 15 15:10:09 2026 +0000 Bug 28915: (RM follow-up): Remove dead code + typo fix Signed-off-by: Pedro Amorim commit e0fb33c3a7d73d276943a1e83d5a980c4d37dee8 Author: Lari Taskula Date: Wed Apr 29 14:53:40 2026 +0300 Bug 28915: Adjust input maxlength when subfield is used as charpos To test MARC modification with the new feature: 1. Add a new record and make sure it has the following fields 1.1 Field 008 character position 35-37 contains "|||" 1.2 Field 041$a contains "eng" 2. Navigate to Cataloging > MARC modification templates > + New template (name "Change 008 lang") 3. Click + New action 4. Add "008" after "field(s)" 5. From dropdown "Delete", select "Update existing or add new" 6. To the input field on the right of "starting from character position", enter value 35 7. To the input field on the right of "with value", enter eng 8. From the empty dropdown below, select "if" 9. To the input field on the right of "field", enter 041, and to the right, enter a 10. From the dropdown on the right, select "matches" 11. Check "RegEx" 12. To the empty input field on the right, enter ^eng$ (the line should now say: [if] field [041] [a] [matches] m/[^eng$]/ RegEx [X]) 13. Give any description you want (ex. Change 008 35-37 to eng) 14. Navigate to the record details you added in step 1 15. Click Edit > Modify record using template 16. Click "Show MARC" 17. Double check field 008 character position 35-37 is currently ||| 18. Click "Close" 19. From dropdown "Select a template", select your new modification template from step 2 20. Click "Show MARC" 21. Observe field 008 character position 35-37 is now eng 22. Click "Modify selected records" 23. After job is completed, observe field 008 character positions 35-37 is now eng Also test MARC modification templates for non-control fields in case of regression. Signed-off-by: Andrew Fuerste Henry Signed-off-by: Pedro Amorim commit 3a672758c88ec64ca9ce78efe2ad394dec798289 Author: Lari Taskula Date: Wed Apr 29 14:49:45 2026 +0300 Bug 28915: Fix field_exists call in C4::MarcModificationTemplates Control fields (generally, just tags below 010) do not have subfields, use data() at /home/koha/Koha/Koha/SimpleMARC.pm line 460. To test: 1. prove t/db_dependent/MarcModificationTemplates.t 2. Observe success Signed-off-by: Anneli Österman Signed-off-by: Andrew Fuerste Henry Signed-off-by: Pedro Amorim commit fed20335a49cdd1138562c371d16c0130fbcabbe Author: Lari Taskula Date: Wed Apr 29 13:54:36 2026 +0300 Bug 28915: Add test for AddModificationTemplateAction To test: 1. prove t/db_dependent/MarcModificationTemplates.t Observe test failing with the following error t/db_dependent/MarcModificationTemplates.t .. 1/135 Control fields (generally, just tags below 010) do not have subfields, use data() at /home/koha/Koha/Koha/SimpleMARC.pm line 490. Signed-off-by: Anneli Österman Signed-off-by: Andrew Fuerste Henry Signed-off-by: Pedro Amorim commit bc54c59423f449b62bd37cb2e1503a9820a75c5d Author: Lucas Gass Date: Mon May 4 16:40:09 2026 +0000 Bug 28915: (follow-up) Update kohatructure.sql Signed-off-by: Andrew Fuerste Henry Signed-off-by: Anneli Österman Signed-off-by: Andrew Fuerste Henry Signed-off-by: Pedro Amorim commit c19f99daa1954e7bf0c30e6526a88c7a1a3343e4 Author: Andrew Fuerste-Henry Date: Mon May 4 15:51:35 2026 +0000 Bug 28915: (follow-up) Increase field size and maxlength in template Signed-off-by: Andrew Fuerste Henry Signed-off-by: Anneli Österman Signed-off-by: Andrew Fuerste Henry Signed-off-by: Pedro Amorim commit 694227943527015fa3ff27f69147894d42a77619 Author: Andrew Fuerste-Henry Date: Mon May 4 15:44:32 2026 +0000 Bug 28915: (follow-up) atomicupdate to increase from_subfield size Signed-off-by: Andrew Fuerste Henry Signed-off-by: Anneli Österman Signed-off-by: Andrew Fuerste Henry Signed-off-by: Pedro Amorim commit 433fa34c117c8036825b3835bd9e1065ae2dcc29 Author: Andrew Fuerste-Henry Date: Mon May 4 15:31:54 2026 +0000 Bug 28915: (follow-up) Add POD Signed-off-by: Andrew Fuerste Henry Signed-off-by: Anneli Österman Signed-off-by: Andrew Fuerste Henry Signed-off-by: Pedro Amorim commit 6db0d42427f396b4da15bfa384f02822e7478cb3 Author: Lari Taskula Date: Thu Apr 23 20:34:24 2026 +0300 Bug 28915: Add character position to MARC modification templates view To test new form events: 1. Navigate to Cataloging > MARC modification templates > + New template (and provide any name) 2. Click + New action 3. Add "008" after "field(s)" and click tabulator or your mouse anywhere on the screen 4. Observe the second (sub)field input field disappearing 5. From dropdown "Delete", select "Update existing or add new" 6. Observe new text "starting from character position" 7. Select any other action from the dropdown from step 5 8. Observe the text "starting from character position" disappearing (unless action is to update or add new field) 9. Observe subfield input field missing (unless action is to update or add new field) To test MARC modification with the new feature: 1. Add a new record 2. Modify record's 008 field character position 2-3 to "06" (indicating month June) 3. Navigate to Cataloging > MARC modification templates > + New template (name "Change June to September") 4. Click + New action 5. Add "008" after "field(s)" 6. From dropdown "Delete", select "Update existing or add new" 7. To the input field on the right of "starting from character position", enter value 2 8. To the input field on the right of "with value", enter 09 9. From the empty dropdown below, select "if" 10. To the input field on the right of "field", enter 008 11. From the dropdown on the right, select "matches" 12. Check "RegEx" 13. To the empty input field on the right, enter ^[0-9][0-9]06 14. Give any description you want (ex. Change 008 June to September) 15. Navigate to the record details you added in step 1 16. Click Edit > Modify record using template 17. Click "Show MARC" 18. Double check field 008 character position 2-3 is currently 06 19. Click "Close" 20. From dropdown "Select a template", select your new modification template from step 3 21. Click "Show MARC" 22. Observe field 008 character position 2-3 is now 09 23. Click "Modify selected records" 24. After job is completed, observe field 008 character positions 2-3 are now 09 Signed-off-by: David Nind Signed-off-by: Andrew Fuerste Henry Signed-off-by: Anneli Österman Signed-off-by: Andrew Fuerste Henry Signed-off-by: Pedro Amorim commit 534c54f7306004e1a86945f67b4183f5eca458b5 Author: Lari Taskula Date: Thu Apr 23 10:40:24 2026 +0300 Bug 28915: Add control field support to Koha::SimpleMARC::update_field() Before this patch, control fields were not modifiable using this subroutine. Control fields use character positions instead of subfields. When modifying control fields, this patch makes the subroutine's parameter "subfield" to indicate a character position. An example Koha::SimpleMARC::update_field({ record => $record, field => '008', subfield => '2', values => [09], }); changes field 008 starting from character position 2 to contain values "09". This replaces char pos 2 with "0", and char pos 3 with "9". To test: 1. prove t/SimpleMARC.t Signed-off-by: David Nind Signed-off-by: Andrew Fuerste Henry Signed-off-by: Anneli Österman Signed-off-by: Andrew Fuerste Henry Signed-off-by: Pedro Amorim commit 4c255bdde8698973a87895c26c0c3f7f6d43d8dd Author: Saiful Amin Date: Mon Nov 24 09:22:47 2025 +0000 Bug 29587: Test mail option in SMTP servers Edit: Added CSRF protection. This patch adds a "Send test email" action to the SMTP servers administration page. It sends a test message to the address in the KohaAdminEmailAddress system preference and reports success or failure to the user. Test plan: 1. Add a valid SMTP server in Administration → SMTP servers. 2. Set KohaAdminEmailAddress to a valid email address. 3. Apply the patch. 4. Click "Send test email" in the Actions column. 5. Confirm that Koha reports "Test email sent successfully". 6. Edit the SMTP server and change the domain to an invalid one. 7. Click "Send test email" again. 8. Confirm that Koha reports failure. 9. Sign off. Signed-off-by: Baptiste Wojtkowski Signed-off-by: David Nind Signed-off-by: Pedro Amorim commit 94a6a93b64b53efbcb0d6067f7f57e6cdc5baa8f Author: Emmi Takkinen Date: Thu Feb 12 09:37:15 2026 +0200 Bug 41829: Set correct id to copied Tag editor button When one copies MARC field, Tag editor button on fields containing value builder plugin have same id as original MARC field. This patch sets correct id to these buttons. To reproduce: 1. Find MARC framework which has value builder plugin attached to one of its fields. 2. Navigate to Cataloging -> New record. 3. Navigate to MARC field with plugin attached to it. 4. Inspect fields Tag editor button with browsers developer tools. -> Check the id of Tag editor button. 5. Copy the field and check id of copied Tag editor button. -> Notice that it has the same id as in original field. 6. Apply this patch. 7. Referesh the page, navigate back to field and copy it. 8. Inspect Tag editors id. -> Id should now be same as in other copied fields. Sponsored-by: Koha-Suomi Oy Signed-off-by: Owen Leonard Signed-off-by: Laura_Escamilla Signed-off-by: Pedro Amorim commit 456fa3809a59a810370af0e366c8e54f8e5a1c44 Author: Matt Blenkinsop Date: Tue Jan 13 16:44:00 2026 +0000 Bug 41605: Fix incorrect default key Test plan: No behavioural change but it is an inconsistency in the code 1) Look in base-resource.js at the newResource computed method 2) Confirm that the code in the first conditional block is looking for 'hasOwnProperty("defaultValue")' 3) Check the new patch and confirm that the code has been changed from 'value: false' to 'defaultValue: false' to match this There is no behaviour change as boolean fields default to false within the framework but we should remove this inconsistency Signed-off-by: David Nind Signed-off-by: Laura_Escamilla Signed-off-by: Pedro Amorim commit 0767f26643c0439f036e83aea43979680068e183 Author: Nick Clemens Date: Wed Apr 1 18:56:02 2026 +0000 Bug 42245: Prevent preselecting sort values for guarantor search av-build-dropbox.inc takes a 'default' param When building the patron we are setting this to the value of sort1, then sort2 This seems to remain cached, and when we build the guarantor search the sort2 value is used as the default This patch ensures we pass a blank default to the modal To recreate: 1 - Define 2 values for 'BSort1' in Administration -> Authorised values 2 - Define 2 values for 'BSort2' in Administration -> Authorised values 3 - Find a borrower who is eligible to have a guarantor 4 - Edit patron and assign values to sort 1 and 2 for this borrower and save 5 - Edit patron again and click 'Add guarantor' 6 - Note that sort 2 is populated 7 - Apply patch 8 - Reload borrower 9 - Confirm sort1 and 2 are empty Signed-off-by: David Nind Signed-off-by: Lucas Gass Signed-off-by: Pedro Amorim commit b2780e6136ff354d2be7f3bd182cc549470929c3 Author: Laura Escamilla Date: Thu Apr 2 19:01:53 2026 +0000 Bug 42233: Add accessible text to empty purchase suggestions table header The first header cell in the OPAC purchase suggestions table contains only an icon, leaving the without accessible text. This causes the column header to be announced unclearly by assistive technology and can be flagged by accessibility testing as an empty table header. Add visually hidden text to the header so the column has a meaningful accessible name while preserving the current visual display. Test plan: 1. Log in to the OPAC 2. Make a purchase suggestion 3. In the suggestions table, the first contains no text 4. Apply the patch 5. Repeat steps 1-2 6. Inspect the suggestions table header 7. Confirm the first now contains visually hidden text describing the checkbox selection column 8. Confirm the info icon still appears and its tooltip still works 9. Run an accessibility checker or inspect the DOM and confirm the empty table header issue is resolved Signed-off-by: David Nind Signed-off-by: Lucas Gass Signed-off-by: Pedro Amorim commit fee16fa179cea24addcf563cd91647fb0b4392c4 Author: Laura Escamilla Date: Thu Apr 9 17:56:13 2026 +0000 Bug 42299: Add accessible label to star rating select in OPAC To test: 1. Set OpacStarRatings so it shows on the OPAC detail page 2. Notice star ratings has no associated label element 3. Apply the patch and refresh the OPAC detail page you were viewing. 4. Notice that the star ratings now have an accessible label. 5. Sign off and have a great day. :D Signed-off-by: David Nind Signed-off-by: Lucas Gass Signed-off-by: Pedro Amorim commit d7f59e7adce355550e4721e111c73841f02f5f4d Author: Laura Escamilla Date: Thu Apr 9 18:03:57 2026 +0000 Bug 42232: Add missing legend to action fieldset in OPAC To test: 1. Log on to the OPAC and go to "Messaging" page. 2. The fieldset that contains the Save/Cancel button is missing a legend. 3. Apply the patch and refresh the "Messaging" page. 4. Notice that the fieldset now contains an accessible legend. 5. Sign off and have a great day! Signed-off-by: David Nind Signed-off-by: Lucas Gass Signed-off-by: Pedro Amorim commit 6a22a2a0fed72494653487a665b86adc23f292f7 Author: Jonathan Druart Date: Mon Mar 9 14:09:09 2026 +0100 Bug 41992: Do not restore pagination offset When "Save configuration state on page change" is enabled, the page number is kept in localStorage and restored. To prevent that we can set the attribute "start" of the state to 0. Test plan: Go on a page with several pages, go to another page than the first one Go the another view and get back Without this patch the last visited page was preserved when returning to the previous view With this patch applied the view now defaults to the first page Note that this does not affect shareable links. Signed-off-by: Laura_Escamilla Signed-off-by: Lucas Gass Signed-off-by: Pedro Amorim commit a7591ea3c66c17dee3d52fff18a73f2a0b62feff Author: Owen Leonard Date: Fri Jun 5 08:00:17 2026 -0400 Bug 42229: (follow-up) Restore card number