September 2026 Release
The September 2026 release extends the timeline with inline editing, so cultivations, fertilizer applications, harvests and soil analyses can be added, changed, moved and deleted from the timeline itself. It also adds attachments to the helpdesk, allows existing BodemConditieScore assessments to be edited, and makes the selected calendar year behave more consistently across the dashboards and the atlas. Under the hood, Microsoft sign-in has moved to the Better Auth social flow, which requires a configuration change for installations that use it. Gerrit now carries AI transparency disclosures, and the release includes a set of dependency migrations, among them TanStack Table 9 and Sentry 11.
Tijdlijn: Inline Editing
Until now the timeline was mainly a place to look at what happened on a field. Changing something meant leaving the timeline and navigating to the page of the field or the item. This release makes the timeline editable.
FDM Application (@nmi-agro/fdm-app)
- Inline editing: a left click on a cultivation, fertilizer application, harvest or soil analysis, or on an empty spot in a field row, opens a context menu with sections for details (with a link to the page of the item), adding and managing. On a cultivation you can add a fertilizer application, register a harvest or end the cultivation; on empty space you can add a cultivation, fertilizer application or soil analysis. Editing opens a pre-filled form in a side sheet. Deleting asks for confirmation, and soil analyses can be deleted from the timeline as well, except BodemConditieScore analyses. Hovering over a fertilizer or harvest marker and pressing Delete also removes it.
- Dragging in the Gantt view: the edges of a cultivation bar can be dragged to adjust the start or end date, the whole bar can be dragged to move it, and fertilizer and harvest markers can be dragged to change their date. The new date is shown while dragging, harvests of single-harvest crops can be dragged past the end of the cultivation, and each drop is saved immediately. While saving, the timeline is greyed out with an "Opslaan..." indicator, and afterwards an "Ongedaan maken" button next to the toolbar buttons reverts the move. Canceling an edit sheet reloads the chart from the latest data.
- On mobile, tapping an event card opens the same menu.
- The changes made in the timeline are processed by server-side actions in the timeline route. Related fixes: the start and end dates of cultivations are updated correctly on the Gantt chart, cultivations are no longer closed when a bar is dragged to the right, popovers stay aligned to their markers, and the cultivation events have been renamed to be less confusing.
BodemConditieScore
FDM Application (@nmi-agro/fdm-app)
- Existing BodemConditieScore assessments can now be edited. Users with write access see a "Bewerken" button on the detail page to change the date, scores, photos and notes. Photos can also be removed.
- Soil photo thumbnails adapt to portrait and landscape orientation, so vertical photos are no longer cropped to a thin strip. The gallery now indicates that actions are available on the images, and the loading state of the photo upload buttons has been fixed.
FDM Core (@nmi-agro/fdm-core)
updateSoilAnalysiscan now also update the sampling date (b_sampling_date) and the lower sampling depth (a_depth_lower) of the related soil sampling. Passingnullfor a nullable field, such as a BodemConditieScore indicator, clears its value.
Helpdesk Attachments
Tickets and messages in the helpdesk can now carry attachments, for example a screenshot or an exported file that shows the problem.
FDM Helpdesk (@nmi-agro/fdm-helpdesk)
fdm-helpdeskcan track attachments added to any message. Users can add and remove attachments on their own messages, for which they need write access to the message. Attachments can be viewed across the helpdesk as long as the message they belong to can be viewed. The package does not deal with the storage of attachment data or with email notifications.
FDM Application (@nmi-agro/fdm-app)
- Users can add attachments while creating a ticket or writing a new message, through a drop zone and a file preview. Files are uploaded as far as possible instead of reverting the whole submission, and empty files are skipped immediately.
- Accepted file types include XML and SVG files, which are detected on their content rather than on their file extension. Agents are exempt from the regular limit of 5 attachments.
- The email notification for a new message shows the attachments, including their file size, to ticket assignees and senders. The triage agent also receives the attachments of a ticket as context.
- Fixes: the object keys of attachments use the requested format, the correct file path is stored in the database, downloading attachments no longer uses a cache, and image previews are only shown when their width and height can be read. The image cropper used for previews now uses
getScreenCTMandDOMPointfor the coordinate transformation, andkonvaandreact-konvahave been removed as dependencies.
Selected Calendar Year
The calendar year selected in the application should be the year that is used on every page. A few places did not follow it yet.
FDM Application (@nmi-agro/fdm-app)
- The organization dashboard shows the summary information only for the selected calendar year.
- The farm dashboard preserves an explicit calendar year in the query string while the calendar store is synchronized, and only then resumes the redirects for calendar changes.
- The tabs of the sidebar atlas navigate to the atlas for the selected calendar year.
Microsoft Sign-In
FDM Core (@nmi-agro/fdm-core)
- Better Auth has been upgraded to version 1.7. Microsoft sign-in has moved from the generic OAuth plugin to the built-in Microsoft provider, keeping certificate based authentication and tenant support. Microsoft accounts are now identified by the
oidclaim, and a migration fills theaccount_idof existing Microsoft accounts from their storedid_token. Accounts for which this is not possible are skipped with a warning. @better-auth/corehas been added as a direct dependency, so that consumers of the package can resolve the types used in its public declarations.
FDM Application (@nmi-agro/fdm-app)
- Microsoft sign-in now uses the Better Auth social flow. Action required for installations that use Microsoft sign-in: the redirect URI in the Entra app registration must be changed to
<BETTER_AUTH_URL>/api/auth/callback/microsoft. - The Better Auth schema is now configured through the schema name option of Better Auth instead of a custom implementation.
RVO Import
FDM RVO (@nmi-agro/fdm-rvo)
- Fixed the case in which a Shapefile defines a start date for a field but no end date. If a matched FDM field had an end date before the start date in the Shapefile,
updateFieldfailed and with it the whole import. An emptyEINDDATis now converted tonullinstead ofundefined, andprocessRvoImportfollows the same logic.
FDM Application (@nmi-agro/fdm-app)
- PostHog events are captured before and after fields are fetched from the RVO (EDICrop) service, and when the user confirms the import of the fields. The events are named
fields_requested_rvo_successfulandfields_requested_rvo_failed.
Gerrit (Labs) and AI Transparency
Gerrit remains a research preview. This release makes explicit what kind of system it is.
FDM Agents (@nmi-agro/fdm-agents) and FDM Application (@nmi-agro/fdm-app)
- The default model for Gerrit is upgraded from Gemini 3.6 Flash to Gemini 3.7 Flash.
- The transparency requirements of Article 50 of the EU AI Act and the GPAI Code of Practice are reflected in the system prompts of the agents, in badges and disclaimers in the interface, and in the documentation. Gerrit is described as an AI agronomist and decision-support system, with reasoner-verifier safeguards.
- Fixed the resolution of fertilizer catalogue IDs and the handling of the farm context in the Gerrit planner.
Tables and Selection
FDM Application (@nmi-agro/fdm-app)
- Range selection with shift-click now also works on the selection checkboxes in the field, rotation and measures field summary tables. The selection follows the sorted order of the rows.
- The variety and field count columns of the rotation table now sort properly, as does the area column.
- When a farm has fields but no cultivations, a more specific message explains this instead of a generic empty state.
- The nutrient advice table uses column groups.
- The tables have been migrated to TanStack Table 9. The rotation table now uses the new functions of
fdm-coreand theFlexRendercomponent.
Smaller Improvements and Under the Hood
FDM Application (@nmi-agro/fdm-app)
- Fixed a recurring React hydration error on the overview of farms (
/farm). The time-based greeting in the title was computed during rendering on the server and again in the browser, which gave a different result whenever the clocks or timezones differed. The greeting is now resolved once in the loader, in the fixed timezoneEurope/Amsterdam. - The event for a submitted magic link is captured again.
- Dependencies were migrated to new major versions: TanStack Table 8 to 9, Sentry 10 to 11 and jotai 2 to 3, besides regular updates of patch and minor versions.
konvaandreact-konvawere removed.
Tooling
- The repository now uses pnpm 12 and the test suites use vitest 5. The tests in CI were made more stable by using a shared database pool and a limited number of workers.
Hotfixes since August 2026
Three patch releases of fdm-app were published between the August 2026 and September 2026 releases. They contained the following fixes.
FDM Application (@nmi-agro/fdm-app)
- Fixed all POST actions, including logout, returning
400 Bad Requestin production.fdm-appruns behind a TLS-terminating reverse proxy without Expresstrust proxy, so the server always saw requests as plainhttp://. Sincereact-router8.3.1 compares the full request origin in its single-fetch CSRF check, thehttps://origin of the browser did not match.@react-router/servehas been replaced by a small custom Express server that enablestrust proxyand removes any incomingX-Forwarded-Hostheader. Error handling was also hardened:getThrownStatusrecognises the error shape of Better Auth, and/logoutuses thesignOutendpoint of Better Auth with a manual cookie expiry as fallback. - The info popup on the fields atlas sometimes did not render properly on touch screens.
- The options for cut weight (snedezwaarte) in the grassland nutrient advice per cut are sorted from light to heavy.
- The gewaspercelen atlas no longer throws errors when no farm is selected, and its tooltip works in that case.
For a detailed list of changes, please refer to the package-specific changelogs for fdm-app, fdm-core, fdm-agents, fdm-rvo, and fdm-helpdesk. Feedback and contributions are welcome on our GitHub repository.
