Skip to content

4.0.0

Choose a tag to compare

@sleidig sleidig released this 23 Oct 12:14
· 19 commits to master since this release
12fba04

4.0.0 (2026-10-23)

Bug Fixes

Aam Digital is moving forward as a powerful, customizable platform. With this version we are switching some of our building blocks as well as technological foundations like the database adapter to their latest upgrades by default. This may cause your app to migrate your local data once, that can take some time. All of this gives you and our development team an even better basis to extend the platform further.

  • filter: filters for properties of embedded fields supported now (#4421) (2b72106), closes #4380
  • import: keep CSV cells as exact strings to avoid mismatches (#4520) (7e2e3aa), closes #4510
  • import: match existing records by value, ignoring surrounding whitespace (#4490) (2dc119e)
  • import: show the import status column again (#4465) (448ea1d)
  • import: write large imports in several requests to avoid 413 errors (#4468) (cbf1d7a)
  • export: don't export "not_found" for transient load errors, load references more reliably (#4487) (8368879)
  • offer Any / All mode in every conditions editor (#4479) (b2fb638)
  • reporting: avoid duplicate SQL report calculations, show backend errors, validate report definitions (#4512) (a73bcdc)
  • permissions: allow $or, $and, $nor and $not in rule conditions (#4442) (a09be69)
  • .permissions: show "no access" / "not permitted" feedback instead of reporting to Sentry (#4523) (dc20536)
  • .notification click error, global menu width, FAB label, attendance colors and small fixes (#4530) (ac01790)
  • .notifications: avoid errors on broken rules for users without a linked profile (#4488) (a274a20)
  • .setup: stop the wizard switching users away from their own language (#4554) (b103272), closes #4503
  • .sync two-way bound tab index when restoring it from the URL (#4552) (8401be3)
  • .sync: handle documents the server refuses in a bulk write (#4471) (71a389e), closes Aam-Digital/replication-backend#274
  • .logging: drop translation / injected-script / report-refresh noise, tell users about evicted local data (#4525) (5c61d87)
  • .logging: report each failure once and group Sentry issues by root cause (#4514) (98094c7)
  • .logging: report why Keycloak rejected a sign-in (#4453) (a76c466)
  • .logging: stop reporting missing files, unknown icons, locale and clipboard problems to Sentry (#4521) (e13aa3b)
  • .don't crash on non-string config values used as text (#4527) (f0eb1d7)
  • .admin: keep the widget settings "Apply" button in sync with validity (#4477) (e29694a)
  • .cache all app icons in the service worker (#4474) (2dca232)
  • .config: warn admins about config problems instead of reporting them to Sentry (#4524) (c9f16eb)

Features

i18n: multi-lingual system functionality

You can now use multiple languages within one system. Translate field names and options in the Admin UI. Each team member can then choose their preferred language individually, for example some of you using the app in English and others in German. (#4283) (a62bc61)

Advanced automations for inherited values

  • automatically update values into related records across multiple hierarchy levels (for example, from a sub-task into the main task and onwards into the parent project) (#4526) (12fba04)
  • inherit the common value of several linked records, when there is more than one sub-item linked to your record (#4475) (7255591)
  • automatically aggregate values from multiple related records into the parent record, combining all the linked options instead of replacing values (#4469) (1ac1c3d)

Other new & improved functionalities

  • send-email dialog is now available directly from edit field and list view (#4476) (b64309c), closes #3273
  • conditional display of whole field groups (in addition to the skip logic for individual fields) (#4445) (98623b4)
  • datatype: date range datatype (combined start + end date as one field with validations) (#4538) (0556deb)
  • admin: self-service API access for external systems (#4497) (d19e6f2)
  • admin: let admins express negated conditions ("is not") in the conditions editor (#4460) (f442b58)

Performance Improvements

  • database: use the indexeddb adapter by default (#4569) (d6f39fe)
  • inherited-field: only load referenced records of the rule's target type (#4519) (f21d49f)
  • de-duplication: reduce reloading of data, group duplicates once and keep the result up to date (#4473) (9629815), closes #4134

⚠️ BREAKING CHANGES

This release requires some manual migrations by server administrators before deployment. Please carefully go through the following checklist and use the available migration scripts.

  • .legacy config formats are no longer migrated; before deploying, run cli migrate for latest-config-formats from a 3.x checkout, then the one-offs v4-upgrade-todo-route-links and v4-upgrade-public-form-legacy-formats. (#4565) (66c1493)
  • .production builds no longer report errors to Aam Digital's Sentry by default; set SENTRY_DSN on the container (or remoteLoggingDsn in config.json) to keep error reporting. (see Aam-Digital/ndb-setup#142) (#4562) (801ec48)
  • .Note no longer defines the children, schools and childrenAttendance fields in code; run the CLI migration v4-note-legacy-child-school-fields before deploying. (#4446) (c64e2d9)
  • .the "HistoricalDataService" loaderMethod is removed; run the CLI migration v4-historical-data-loader before deploying. (#4563) (bac720e)
  • .ReportConfig only uses reportDefinition (and transformations for SQL); run the CLI migration v4-report-definition-legacy-cleanup before deploying. (#4564) (e59e092)
  • .the Docker image ignores QUERY_URL and no longer proxies /query (call /api/... directly). Make sure you set API_URL instead. (#4561) (c98ef9a)