Skip to content
3.57.022 October 2026 (ef67932)App ef67932Technical details

Release Notes - Technical Details ​

Internal companion to RELEASE_NOTES.md. Not for customers.

  • Range: 13aa73dddd386e098879b1c27d9fd49381da982e → ef679328ebcb228854e885ed6b026b36930ee853
  • Generated: 2026-10-22 10:17 UTC
  • Merge requests: 67
  • Commits: 156 (0 without a merge request)

Merge requests ​

!1177 feat: Added calendar feed ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/1177
  • Author: Rein de Vries
  • Closes: #213 Feature Request: sync EquineM agenda with external calendar (e.g. Google/outlook), #896 Add function for users to signup to iCal (calendar) stream
  • Commits:
    • 0c7ff0b3 feat(planning): add calendar feeds settings tile
    • 8083b7ef refactor(planning): load activity types on the planning settings page

!1229 (daypart): use the correct error function to get the error ​

!1701 (contact): Always allow editing contact initials and show profile initials in sidebar ​

!2193 chore(order): use the last order as base for the repeat order ​

!2215 Refactor/use country select as filterinput ​

!2331 fix(horses): show actual search sources in multiple-results message ​

!2333 chore(android): support R8 ​

!2417 Fix/security open redirect token leak ​

!2437 fix(invoice): multiple fixes for finalized invoice ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2437
  • Author: Rein de Vries
  • Closes: #1074 Change in invoice item description not visible in invoice pdf after invoice is finalized
  • Commits:
    • c4578186 fix(invoice): disable currency field when editing a finalized invoice
    • 9944b73f fix(invoice): refresh historic_customer when customer changes on a finalized invoice

!2439 fix(invoice): poll send status and warn when sending is not confirmed ​

!2457 fix(invoice): show a not found page for an unknown public invoice ​

!2464 feat(contacts): enhanced contact/user list ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2464
  • Author: Rein de Vries
  • Closes: #760 Contact list overview should provide more information
  • Commits:
    • e7292146 feat(contacts): show the duplicate count and put the primary action on the right
    • 8203a422 feat(contacts): show role badges under the name and combine contact details in the contact and user lists
    • 75e116cb feat(contacts): add roles column and filter to the contact list
    • f92ae4b1 fix(contacts): apply every list filter instead of only the first
    • 54cde894 refactor(roles): extract shared roleOptions helper

!2478 fix(picklist): hide stock collected after the order shipping date ​

!2489 feat: TransPas facility reservation frontend ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2489
  • Author: Michel
  • Closes: #1725 TransPas integration (Gelissen): facility reservation frontend
  • Commits:
    • d4f8a0f5 fix(planning): count all day reservations when finding free boxes
    • d32bf08a fix(planning): hide same day gaps in the unassigned TransPas facility
    • 906f9f7d feat(planning): only show the Gantt menu item for SSD organisations
    • 890c64cb feat(planning): color TransPas reservations by leg number
    • 3e39380e fix(planning): show the boxes as a grid when moving a TransPas reservation
    • 30e42514 feat(planning): name barn slots "Box" in the Gantt
    • 2415359d fix(planning): fix type and lint errors after rebasing onto master
    • e0fb869d refactor(planning): move the TransPas Gantt to its own page
    • 6ce1d2fe fix(planning): collapse the slots of a facility in the Gantt
    • 0c75580d feat(horses): default the horse list to external horses for TransPas organisations
    • ce708d8b feat(planning): move TransPas reservations to another facility
    • eb1b050a feat(planning): add a change modal for TransPas reservations
    • ac49830c feat(planning): hide deleting and cancelling TransPas reservations
    • 0fc8e21b feat(planning): hide creating facility reservations for TransPas organisations
    • 8fa4e3e7 feat(planning): show TransPas dossier details on facility reservations
    • 6094df13 feat(facilities): hide removing and slot capacity of the unassigned facility

!2492 chore(ts): switch the tsconfig module from CommonJS to ESNext ​

!2495 fix(planning): mobile full day column header and day header actions menu ​

!2498 feat(breedingPlans): filter on plans without agent / insemination station ​

!2500 fix(edge): don't throw on disallowed CORS origins and allow shop domains ​

!2502 chore: shrinks app file size ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2502
  • Author: Rein de Vries
  • Commits:
    • e6c6e7ae build: skip PWA startup images when generating store favicons
    • f64a9567 build: strip PWA startup images from native builds
    • 941e48f7 ci(shops): list largest files and icons per apk/aab in android build
    • c26dbbc6 ci(shops): list generated icons per ipa in ios build
    • a75a5130 ci(shops): print shop artifact sizes in android build
    • b7e12e31 ci(shops): avoid SIGPIPE failure when listing ipa contents
    • efa1e91c build: delete sourcemaps after uploading them to Bugsink
    • cfc34443 ci(shops): list largest files per ipa in ios build
    • 5a5d5340 ci(shops): only collect the shop's apk/aab as android artifact

!2503 perf(breeding): load horse summaries instead of all full horses ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2503
  • Author: Gerben Morsink
  • Closes: #1740 Load horse summaries instead of every full horse on breeding and horse screens
  • Commits:
    • e58c95e1 refactor(breeding): name the horse summaries promise after its cache key
    • d53747b0 perf(breeding): load horse summaries instead of all full horses

!2504 chore(bugsink): ignore benign ResizeObserver loop errors ​

!2505 Fix/ensure safe storage object ​

!2506 Chore/update open api ​

!2507 fix(android): lock phones to portrait, allow landscape on tablets ​

!2508 perf(breeding): load contact summaries instead of all full contacts ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2508
  • Author: Gerben Morsink
  • Closes: #1744 Load contact summaries instead of every full contact on breeding and horse screens
  • Commits:
    • f671bee2 fix(breeding): leave hidden insemination stations without plans out of the requester filter
    • 5abb0d6f test(breeding): leave hidden insemination stations without plans out of the requester filter
    • 6f071184 perf(breeding): load contact summaries in the mare cycle check modal
    • ea924c75 revert(horses): keep full contacts in the create horse modal
    • 7864bd1f refactor(breeding): name the contact summaries promise after its cache key
    • 67cb4bd2 perf(breeding): load contact summaries instead of all full contacts

!2510 Resolve "Network failure in min version check is reported as error in Bugsink" ​

!2511 fix(audio): don't report failed sound playback as error ​

!2512 fix(image): fall back to original file when EXIF parsing fails ​

!2513 fix(activities): show form validation errors instead of reporting them to Bugsink ​

!2514 feat: boarders add their own horses and co-riders ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2514
  • Author: Gerben Morsink
  • Closes: #1751 Boarders add their own horses and co-riders
  • Commits:
    • 6d0b088f fix(useFormError): don't repeat a field's API error above the form
    • cb6d6de7 feat(horse): link a co-rider to their contact page #1751
    • 1d1b52ff fix(horse): require a name for a co-rider invite, show who is invited #1751
    • 4f0cf66b feat: boarders add their own horses and co-riders #1751

!2515 fix(profile): skip fetching stables when there are too many organisations ​

!2516 fix(layout): keep sticky content below the impersonation banner ​

!2517 Chore/update open api 1210 ​

!2518 fix(ApiCache): close connection on versionchange and time out stuck db open ​

!2519 Resolve "Update Expenses menu" ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2519
  • Author: Rein de Vries
  • Labels: Financial module
  • Closes: #1647 Update Expenses menu, #1731 Several horses or customers on a transaction item or manual entry
  • Commits:
    • f299557d feat(transaction): show a "not invoiced" badge that creates an invoice item
    • e99067a7 fix(financial): rename expense detail page title to "View expense"
    • 7b457c12 feat(financial): filter and link billable items from expenses via has_transaction
    • 73abcabb refactor(financial): remove sorting of expense items
    • aae12b24 feat(financial): redesign the expense items list
    • 54a9480c feat(horses): mark expenses shared with other horses
    • bc4efb71 feat(financial): create invoice items from expense items
    • eb0e6d60 feat(ui): add ConfirmationMessage
    • 71b4562c refactor(financial): remove horse activity selection from expense items
    • 77a520b2 feat(financial): allocate expense items to general costs, customers or horses
    • c5746344 feat(financial): link customers and horses on manual entry detail
    • 85978c9d feat(financial): allocate manual entries to several horses or customers

!2521 fix(horses): add KMAR to the horse phase list ​

!2522 feat(activities): translate recurrence descriptions ​

!2523 fix(horse): parse box number as number in edit form ​

!2524 feat(invitation): ask an invitee with an account to log in instead of signing up ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2524
  • Author: Gerben Morsink
  • Labels: API changes
  • Closes: #759 Being invited to use EquineM on an existing account leads to confusion
  • Commits:
    • 9fe4d294 feat(invitation): title and prefill the login when accepting an invitation
    • f426ab4d feat(invitation): ask an invitee with an account to log in instead of signing up

!2525 fix(planning): keep the slots of a facility event saved without a horse ​

!2529 feat(invoice): personalize WhatsApp invoice message in the invoice language ​

!2530 fix(manure): host RVO manure calculation brochure ourselves ​

!2531 fix(feed): show translated quantity measure in feed reports ​

!2532 Resolve "Chore: update tsconfig target and module to ES2022 once we not using vercel" ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2532
  • Author: Rein de Vries
  • Closes: #1030 Chore: update tsconfig target and module to ES2022 once we not using vercel
  • Commits:
    • 98530c77 chore: remove leftover Vercel hosting flag
    • 94bcbd5d chore(pdf): load pdf worker from pdfjs-dist instead of public assets
    • 105f3f86 chore: set tsconfig target to ES2022

!2533 chore: update OpenApi ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2533
  • Author: Rein de Vries
  • Closes: #1768 API changes in the GAT release of 2026-10-15 (295019055)
  • Commits:
    • 41e7a3b4 feat(financial): mention the deleted charge in the expense delete confirmation
    • 5156bb3f fix(contacts): allow inviting a user without stables
    • d5565e9d chore: update OpenApi
    • f5b0c22d docs(claude): add update open API task

!2534 fix(pwa): set manifest description to a string ​

!2536 feat(horse-files): folders and a SharePoint style file browser ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2536
  • Author: Michel
  • Closes: #360 Add Youtube option for the Horse files in both the horse detail and the horse public share page, #979 Add date to each document/image in the media overview of horse profile
  • Commits:
    • 6db066df fix(horse-files): hide the preparing state when an upload fails
    • d8b94464 fix(files): bypass the cache when fetching a file to download or share
    • d152ad9f fix(horse-files): address review comments
    • 9818dd46 feat(horse-files): drag and drop into folders, upload progress and preview fixes
    • 9ef6f82d feat(horse-files): folders and a SharePoint style file browser
    • 4ee68eba feat(files): edit the name and description of a file
    • 2a25bb85 feat(files): share the file itself via the share menu of the device
    • dff1307f feat(files): file preview with a details sidebar
    • 1d0fd369 feat(files): rich file type icons
    • f79317e8 feat(files): recognise YouTube links
    • f35727c6 feat(files): helpers for folders in file names

!2537 feat(reports): show feed quantities, totals and xlsx export in monthly feed report ​

!2538 feat(planning): allow assigning a task to a staff member ​

!2539 fix(horse): auto complete on button press instead of on every keystroke ​

!2540 fix(planning): only show riders of the selected stable in the calendar filter ​

!2541 Horse list improvements for mobile ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2541
  • Author: Rein de Vries
  • Closes: #1761 Horselist improvements mobile
  • Commits:
    • 1cd282f6 feat(ui): pick and step through a period in the mobile date filter
    • cfb2aa76 fix(ui): show the shadow of the selection bar when it is stuck
    • a6f4167f feat(ui): restore the scroll position when navigating back to a list
    • 79a8bc30 fix(horses): show the horse list from cache when navigating back
    • 3fca54ab fix(ui): reduce top spacing of the selection bar on mobile
    • b13c2fc3 fix(horses): only start selection via the select button on mobile
    • c6fe06b6 fix(horses): avoid double tap on mobile horse list

!2542 fix(integrations): require the accounting module to connect a bookkeeping integration ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2542
  • Author: Rein de Vries
  • Closes: #506 Integration of accounting systems needs to be connected with subscription
  • Commits:
    • 327bfd70 fix(subscription): require an accounting service contract, also for paid organizations
    • 61075e91 fix(integrations): require the accounting module to connect a bookkeeping integration

!2544 fix(signup): show password mismatch error on the repeat field ​

!2545 chore: update OpenApi ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2545
  • Author: Rein de Vries
  • Closes: #1772 API changes in the GAT release of 2026-10-15 (3caf2b75c)
  • Commits:
    • 0bd613f1 docs(claude): find unlabelled API changes issues and link everything in the summary
    • 556afa44 chore: update OpenApi
    • 964aa16e chore(openapi): send the X-Schema-Key header when pulling the schema

!2546 Resolve "Add invoice email to contact forms" ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2546
  • Author: Rein de Vries
  • Labels: API changes
  • Closes: #1114 Contacts need a separate (second) email address for invoices, #1779 Add invoice email to contact forms
  • Commits:
    • 14061857 refactor(contacts): group the invoice fields behind the financial module
    • 8fc2b637 feat(contacts): add invoice email to the contact form

!2547 feat(employment): add employment start date input ​

!2548 feat(financial): filter recurring services by customer #1073 ​

!2549 chore: update OpenApi ​

!2552 feat(version): expose previous release commit hash in /api/version ​

!2553 feat(release-notes): support multiple Ollama API keys with fallback ​

!2555 fix: fail translate job on extraction errors and fix folder-file-count key ​

!2557 Resolve "Client invoicing: Update UI of 'to invoice' on mobile" ​

  • Merge request: https://gitlab.equinem.com/equinem/equiapp/-/merge_requests/2557
  • Author: Rein de Vries
  • Closes: #1108 Client invoicing: Update UI of 'to invoice' on mobile
  • Commits:
    • ab0fcd57 fix(client-invoicing): show more info in compact mobile row of to-invoice list
    • 21efdd61 fix(financial): align invoice and payment list headers with the md mobile breakpoint

!2558 feat(breeding): allow destroying a custom amount of semen stock ​

!2560 feat(release-notes): release notes in English, German and Dutch ​

!2564 fix(breeding): keep the fresh portions row visible when stock is 0 ​

Left out of the customer release notes ​

OpenAPI schema refreshes and other changes with no customer-visible effect.

EquineM documentation