• v2026.6.16 d209132fee

    v2026.6.16
    All checks were successful
    security-scan / Python SCA (pip-audit) (push) Successful in 54s
    security-scan / JS SCA (npm audit) (push) Successful in 32s
    security-scan / SBOM (trivy) (push) Successful in 14s
    CI / release-scripts (push) Successful in 8s
    security-scan / Python SAST (bandit) (push) Successful in 31s
    security-scan / Filesystem scan (trivy fs) (push) Successful in 19s
    CI / backend-test (push) Successful in 4m5s
    CI / frontend-test (push) Successful in 2m29s
    build-containers / build (backend) (push) Successful in 1m45s
    build-containers / build (frontend) (push) Successful in 1m48s
    release / release (push) Successful in 24s
    CI / e2e (push) Successful in 4m7s
    CI / backend-test-postgres (push) Successful in 7m14s
    CI / pre-commit (pull_request) Successful in 41s
    build-containers / build (backend) (pull_request) Successful in 1m38s
    build-containers / build (frontend) (pull_request) Successful in 1m51s
    CI / release-scripts (pull_request) Successful in 9s
    security-scan / Python SCA (pip-audit) (pull_request) Successful in 51s
    security-scan / Python SAST (bandit) (pull_request) Successful in 30s
    CI / frontend-test (pull_request) Successful in 2m53s
    CI / e2e (pull_request) Successful in 3m28s
    security-scan / JS SCA (npm audit) (pull_request) Successful in 36s
    security-scan / SBOM (trivy) (pull_request) Successful in 15s
    CI / backend-test (pull_request) Successful in 4m39s
    CI / backend-test-postgres (pull_request) Successful in 6m47s
    security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 16s
    CI / pre-commit (push) Successful in 42s
    Stable

    robbertbos released this 2026-06-16 21:37:45 +00:00 | 164 commits to main since this release

    Meerdere Mattermost-servers koppelen

    • Veel overheidsorganisaties draaien hun eigen Mattermost-instantie; je kunt
      nu meerdere servers tegelijk koppelen, zodat berichten uit verschillende
      organisaties samen in één Waggle-overzicht komen. Een community-server
      ernaast werkt ook prima. Elke server heeft een eigen token, basis-URL en
      status; de instellingen tonen ze als een lijst met per server token
      vervangen, synchroniseren en loskoppelen.
    • Geef een server een eigen label; laat je het leeg, dan toont Waggle de host
      van de basis-URL als naam.
    • Bij twee of meer gekoppelde servers krijgt de breadcrumb op een kaart de
      server-naam voorop, zodat je ziet uit welke omgeving een bewaard bericht komt.
    • Synchronisatie is per server gescheiden: een verlopen token op de ene server
      houdt het synchroniseren van een gezonde server niet langer tegen, en de
      waarschuwingsbalk benoemt welke server opnieuw gekoppeld moet worden.

    @-vermeldingen

    • Een @naam in een bewaard bericht of thread-reactie toont nu de echte
      weergavenaam. Klik (of Enter) opent een kaartje met foto, functie en
      een knop om de persoon in Mattermost te openen. Werkt met muis,
      toetsenbord en schermlezer. Een onbekende of verwijderde gebruiker
      blijft gewoon als @naam staan.
    • Herkenning blijft binnen het kanaal van de kaart; namen worden alleen
      kort lokaal onthouden en bij uitloggen gewist.

    Onder de motorkap

    Security & CI-hardening:

    • De image-build-gate (trivy image op het gebouwde artefact) draait nu op
      elke PR i.p.v. pas na merge: build + scan zonder push, zodat OS-package-CVE's
      al vóór merge geblokkeerd worden. De frontend-runtime draait daarbij
      apk upgrade (net als de backend al apt-get upgrade deed), zodat
      gefixte base-OS-CVE's bij build-time meekomen i.p.v. te wachten op een
      upstream-rebuild.
    • trivy fs scant nu ook misconfiguraties (Containerfile/compose) naast vuln
      en secret, en de SBOM-generatie is van syft naar trivy verhuisd - één
      CI-dependency minder.
    • CI authentiseert tegen ghcr.io (geen anonymous-pull rate-limit-flakes meer
      op trivy/uv-pulls). Renovate draait via een nachtelijke Forgejo-runner met
      OSV-alerts en een eigen snelle image-digest-lane, zodat base-image-CVE's
      binnen een dag als PR verschijnen. Geen automerge.
    • nginx-base bijgewerkt naar de gepatchte digest met openssl 3.5.7-r0
      (CVE-2026-45447, heap use-after-free in PKCS7_verify, HIGH); de trivy
      image-scan-gate is daarmee weer groen.

    Releases & CI-infra:

    • Releases worden nu automatisch aangemaakt bij een CalVer-tag: de
      release-notes komen uit de bijbehorende CHANGELOG-sectie, en de build faalt
      bewust als die sectie ontbreekt of leeg is.
    • CI-actions grote versie-bumps: actions/checkout v4 -> v6.0.3,
      actions/cache v3 -> v5, actions/setup-node v4 -> v6.4.0 en de frontend
      build-image van node:20 naar node:24.16.0-alpine.
    • CI hergebruikt uv-, npm-, pre-commit- en Playwright-caches tussen runs;
      ~1-2 min sneller per build en minder netwerk-afhankelijk.

    Afhankelijkheden:

    • Backend Python 3.13 -> 3.14 (container, CI-tests en lockfile); dev-Postgres
      16 -> 17, gelijk aan de engine op ZAD en op digest vastgezet.
    • Security-bumps tegen gepubliceerde CVE's: cryptography 46.0.7 -> 49.0.0
      (GHSA-537c-gmf6-5ccf), python-multipart 0.0.28 -> 0.0.32
      (CVE-2026-53537/53538/53539/53540), starlette 1.0.0 -> 1.3.1
      (PYSEC-2026-161, CVE-2026-48817/48818, incl. de bijbehorende
      deprecation-fix), idna 3.11 -> 3.15 (CVE-2026-45409) en cachetools 5.x ->
      7.1.4. pip (dev-tooling) 26.1.1 -> 26.1.2 tegen PYSEC-2026-196, zodat de
      fail-closed pip-audit-stap groen blijft.
    • Frontend: NLDD design-system 0.8.44 -> 0.8.56 - import-, export- en
      account-verwijderen-knoppen tonen tijdens uitvoering een laad-indicator en
      negeren een tweede klik (geen dubbele actie meer). eslint 9 -> 10
      (no-useless-assignment ruimde drie overbodige initialisaties op), TipTap
      3.22.5 -> 3.26.0 plus kleinere bumps. @types/dompurify verwijderd -
      DOMPurify levert sinds 3.0 eigen TypeScript-types.
    • Dev-tooling- en CI-bumps: uv 0.11.14 -> 0.11.19 (incl. UV_SHA256), trivy
      0.70 -> 0.71, @axe-core/cli 4.11.2 -> 4.11.3 en Keycloak (dev) 26.0 ->
      26.6; resterende CI-images vastgepind op digest.
    • Frontend-coverage zichtbaar via @vitest/coverage-v8 (just coverage +
      CI-artefact; baseline 51%, geen drempel).