# Release Notes - Technical Details Internal companion to `RELEASE_NOTES.md`. Not for customers. - **Range:** `b07f74751f82f5d8f47b5d3e26f485eb207eb5d6` → `dad0c28f81797be4b0d7ca3a6e8e4cd80ad82c55` - **Generated:** 2026-09-14 12:45 UTC - **Merge requests:** 43 - **Commits:** 79 (0 without a merge request) ## Merge requests ### !1734 feat(horse): force delete in case the horse is hidden - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/1734 - Author: Rein de Vries - Commits: - `b1835151` feat(horse): force delete in case the horse is hidden ### !2199 feat(signup): support a module selection based on the type of stable - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2199 - Author: Rein de Vries - Closes: [#1332](https://gitlab.equinem.com/equinem/equiapp/-/work_items/1332) Change signup module selection - Commits: - `4d28a36a` refactor(timezone): use the filterInput select - `18067802` feat(signup): support a module selection based on the type of stable ### !2282 feat: manual expense - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2282 - Author: Rein de Vries - Commits: - `71fc369b` chore(bi): show unknown subject - `76c79347` feat: support manual expense - `1f879de8` chore: move vatPercentage list with defaults to a helper function ### !2289 Chore/update open api generator - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2289 - Author: Rein de Vries - Closes: [#1676](https://gitlab.equinem.com/equinem/equiapp/-/work_items/1676) Move to the new Hey-api Open Api Parser and use internal ZOD parser - Commits: - `fa0d8c41` fix(planning): treat null and undefined alike in activityHasFinalizedReport - `89914249` chore(deployment): do not trigger refresh modal in development on an empty git has - `a45cd5d0` refactor: use IS\_DEVELOPMENT as a const variable for checking node\_env - `6ac88885` refactor(webshopOrders): split loadApi data into 2 promises, one for the orders and one for meta data - `e0fa6fd2` fix(horseDetail): error 'cannot appear as a descendant of...' - `8cf33afe` fix(planning): guard canFetchMore with isUsingPagination in ActionList - `cf2a34f5` refactor: remove obsolete apiClient - `8a9702dc` fix(session): send a validated token via validAuthToken fn to the toPdf endpoint - `80519925` chore(pushNotification): send DeviceId - `7cd3fcfb` refactor(OpenApi): Adapt to new OpenApi Generator - `3c9aa430` chore: added ApiError Error object - `6f7453e8` refactor(ApiPromise): use promise based and support abort signal in callback - `835dae29` chore(claude): update the specs for claude - `526aeadc` chore: added AI rule for creating issues based on wrong schema - `b73c6ff2` refactor(openApi): move to the new OpenApi generator and use the native ZOD schema's ### !2306 Updated mare cycle check page - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2306 - Author: Michel - Commits: - `4a899393` Fix mare cycle check back navigation from action list - `f490cf79` Update mare cycle check dialog so cysts and notes can be copied in - `081eabb3` cleanup: Remove 'showHorseOwner' from calendars - `202a17b4` cleanup: Remove 'showBreedingBoxNumber' from calendars - `5d7a7440` Updated mare cycle check page ### !2325 feat(clientInvoicing): multiple enhancements - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2325 - Author: Rein de Vries - Commits: - `5c75cc3b` fix(clientInvoicing): collapse status tabs into filter dropdown on mobile - `993ecf32` chore(clientInvoice): added sort for the date column - `1723688a` feat(clientInvoicing): add type filter to client invoicing list ### !2326 fix(invoiceItems): map indexed field errors to their row/field instead of a generic banner - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2326 - Author: Rein de Vries - Closes: [#1679](https://gitlab.equinem.com/equinem/equiapp/-/work_items/1679) Items: dit veld mag niet leeg zijn, [#1688](https://gitlab.equinem.com/equinem/equiapp/-/work_items/1688) Change of error for list (many=True) from list to dict - Commits: - `73b3b21a` fix(invoiceItems): map indexed field errors to their row/field instead of a generic banner - `6b9a6b42` chore(apiParser): support dict keyed by string array-index ### !2328 fix(invoice): keep invoice fields when only manual items remain - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2328 - Author: Rein de Vries - Closes: [#1694](https://gitlab.equinem.com/equinem/equiapp/-/work_items/1694) (invoice): add a manual invoice item trigger the following error - Customer uid: This field is required - Commits: - `11c27e99` fix(invoice): keep invoice fields when only manual items remain ### !2330 fix(invoice): horse select disappearing after adding and removing invoice items - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2330 - Author: Rein de Vries - Closes: [#1678](https://gitlab.equinem.com/equinem/equiapp/-/work_items/1678) Adding extra invoice item does not give horse selector - Commits: - `eb0d3ec2` fix: reset all item fields on append to prevent stale data after delete-all-then-add - `1f1ca4c0` fix(invoice): horse select disappearing after adding and removing invoice items ### !2335 chore: update OpenApi - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2335 - Author: Rein de Vries - Commits: - `f93388f1` chore: adapt to OpenApi changes - `936dbef0` chore: update Open Api ### !2336 fix(horses): stop search input from dropping keystrokes typed during URL commit - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2336 - Author: Rein de Vries - Commits: - `90a806b6` fix(horses): stop search input from dropping keystrokes typed during URL commit ### !2337 Automatically create release notes - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2337 - Author: Michel - Commits: - `f4b02822` Show release notes button when they are available - `1b6f16ed` Automatically create release notes ### !2338 chore(bugsink): increase normalizeDepth to preserve nested error context - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2338 - Author: Rein de Vries - Commits: - `c5142311` chore(bugsink): increase normalizeDepth to preserve nested error context ### !2339 chore: added the correct billing name - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2339 - Author: Rein de Vries - Commits: - `6f2d5b55` fix(saveContact): when saving a contact that is marked as primary\_for\_invoicing we should refresh the ME object to reflect that change - `3ce12aa2` chore(subscriptionDetail): added back link when you edit the billable contact - `e552e529` chore(subscriptionDetail): added the correct billing name - `903d9814` chore: Adapt to OpenApi changes - `4bce8c1a` chore: Update OpenApi ### !2340 fix(horses): replace deprecated get\_horsetelex\_detail with search\_horse - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2340 - Author: Rein de Vries - Closes: [#1683](https://gitlab.equinem.com/equinem/equiapp/-/work_items/1683) Deprecate get\_horsetelex\_detail - Commits: - `d34c172c` fix(horses): replace deprecated get\_horsetelex\_detail with search\_horse ### !2341 Multi Invoice PDF - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2341 - Author: Michel - Commits: - `478c2770` Make invoices downloadable in concept state from invoice details page - `1411df6e` Add bulk download invoices button ### !2342 fix(listFilter): default filter storage to localStorage so it survives between closed sessions - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2342 - Author: Rein de Vries - Commits: - `91c2366d` fix(listFilter): default filter storage to localStorage so it survives between closed sessions ### !2343 fix(order): show the incomplete message only for existing orders, not new orders - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2343 - Author: Rein de Vries - Commits: - `2e1be744` fix(order): show the incomplete message only for existing orders, not new orders ### !2344 fix(planning): compare last used activity against sorted list, not raw API order - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2344 - Author: Rein de Vries - Commits: - `77674add` fix(planning): compare last used activity against sorted list, not raw API order ### !2345 fix(breeding): show mare cycle checks table instead of empty-state when any filter is active - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2345 - Author: Rein de Vries - Commits: - `e22ca628` fix(breeding): show mare cycle checks table instead of empty-state when any filter is active ### !2346 chore: added claude project instruction file - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2346 - Author: Rein de Vries - Commits: - `c55f2556` chore: added claude project instruction file ### !2347 fix(inseminationRoute): illegal dom nesting - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2347 - Author: Rein de Vries - Commits: - `de27b598` fix(inseminationRoute): illegal dom nesting ### !2348 fix(sentry): ignore benign cache-dir rmdir errors - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2348 - Author: Rein de Vries - Closes: [#1702](https://gitlab.equinem.com/equinem/equiapp/-/work_items/1702) Failed to remove cache directory:: 'rmdir' failed because file at '/data/user/10/com.equinem.equinem/cache/equinem\_cache/' does not exist. - Commits: - `af042a7e` fix(sentry): ignore benign cache-dir rmdir errors ### !2349 Chore/update open api 0909 - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2349 - Author: Rein de Vries - Commits: - `035b4b19` chore: Adapt to OpenApi changes - `a29eb233` chore: update OpenApi ### !2350 refactor(signup): use correct 'modules' property from schema - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2350 - Author: Rein de Vries - Closes: [#1703](https://gitlab.equinem.com/equinem/equiapp/-/work_items/1703) Modules field in Signup OpenApi is wrong - Commits: - `119ce396` refactor(signup): use correct 'modules' property from schema ### !2351 fix(invoice): don't translate invoice preview to invoice language in admin views - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2351 - Author: Rein de Vries - Closes: [#1681](https://gitlab.equinem.com/equinem/equiapp/-/work_items/1681) Factuurtaal van contact naar Duits veranderd, Conceptfactuur is ineens in Engels (was Nederlands) - Commits: - `61bc4d0c` fix(invoice): don't translate invoice preview to invoice language in admin views ### !2352 fix(table): apply tableThead class to <thead> instead of tr/td - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2352 - Author: Rein de Vries - Closes: [#171](https://gitlab.equinem.com/equinem/equiapp/-/work_items/171) Use styling classes for tables correctly - Commits: - `cb305c09` fix(table): apply tableThead class to <thead> instead of tr/td ### !2353 refactor(invoice): extract MetaItem helper for repeated dt/dd markup in InvoiceMeta - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2353 - Author: Rein de Vries - Closes: [#165](https://gitlab.equinem.com/equinem/equiapp/-/work_items/165) Make component from Invoice Meta items - Commits: - `938fcd9f` refactor(invoice): extract MetaItem helper for repeated dt/dd markup in InvoiceMeta ### !2354 fix(vat): show error when deleting a VAT percentage fails - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2354 - Author: Rein de Vries - Closes: [#268](https://gitlab.equinem.com/equinem/equiapp/-/work_items/268) 404 on removal of vatpercentages is not caught (should show error message) - Commits: - `4dd6c28f` fix(vat): show error when deleting a VAT percentage fails ### !2355 chore: format the claude MD - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2355 - Author: Rein de Vries - Commits: - `df8df22b` chore: format the claude MD ### !2356 chore(vite): remove redundant vite-plugin-eslint - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2356 - Author: Rein de Vries - Commits: - `26b6e181` chore(vite): remove redundant vite-plugin-eslint ### !2357 chore: remove manual jwt injection for all\_auth as the specs are fixed - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2357 - Author: Rein de Vries - Commits: - `67fc21d9` chore: remove manual jwt injection for all\_auth as the specs are fixed ### !2358 Fix markdown release notes - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2358 - Author: Michel - Commits: - `0e4da141` Fix markdown release notes ### !2359 chore(vite): upgrade to Vite 8 (Rolldown bundler) - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2359 - Author: Rein de Vries - Commits: - `d3ed31b3` fix(vite): stop commit-hash.json losing the real git hash on build - `2c763c3e` chore(vite): upgrade to Vite 8 (Rolldown bundler) ### !2360 fix: classify breeding order items via product\_type - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2360 - Author: Rein de Vries - Closes: [#199](https://gitlab.equinem.com/equinem/equiapp/-/work_items/199) Breeding order items should include the shipping method - Commits: - `1882d1a3` fix: classify breeding order items via product\_type ### !2361 Fix the release notes link and label it "What's new" - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2361 - Author: Michel - Commits: - `9d073372` refactor(releaseNotes): label the release notes links "What's new" - `3d1f7e99` fix(releaseNotes): tie the release notes url to the commit it was checked for ### !2363 chore: update OpenApi - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2363 - Author: Rein de Vries - Labels: Prio:High - Commits: - `767eea95` chore: update OpenApi ### !2365 fix(printPdf): set a correct name when printing via usePrintPage hook - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2365 - Author: Rein de Vries - Labels: Prio:High - Commits: - `abeeb180` fix(printPdf): set a correct name when printing via usePrintPage hook ### !2366 fix: raise topdf edge-function timeouts for large print jobs - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2366 - Author: Rein de Vries - Commits: - `96f801bb` fix: raise topdf edge-function timeouts for large print jobs ### !2371 Chore/update open api 1409 - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2371 - Author: Rein de Vries - Commits: - `def2ad17` chore: Adapt to OpenApi changes - `fa9b12db` chore: update OpenApi ### !2372 chore(toInvoice): added financial note if needed - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2372 - Author: Rein de Vries - Commits: - `76de5f2b` chore(toInvoice): added financial note if needed ### !2373 fix(toInvoice): persist description changes in invoice items to billable items on save - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2373 - Author: Rein de Vries - Commits: - `f850b115` fix(toInvoice): persist description changes in invoice items to billable items on save ### !2374 fix(invoice): remove line-type sort overriding saved invoice item order - Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2374 - Author: Rein de Vries - Commits: - `ff82dd52` fix(invoice): remove line-type sort overriding saved invoice item order ## Left out of the customer release notes OpenAPI schema refreshes and other changes with no customer-visible effect. - !2335 chore: update OpenApi (https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2335) - !2349 Chore/update open api 0909 (https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2349) - !2363 chore: update OpenApi (https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2363) - !2371 Chore/update open api 1409 (https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2371)