• v2026.9.26 72e4055f34

    v2026.9.26
    All checks were successful
    tag-release / release (push) Successful in 8s
    publish-and-stage / decide (push) Successful in 8s
    CI / release-scripts (push) Successful in 12s
    security-scan / SBOM (trivy) (push) Successful in 10s
    security-scan / Filesystem scan (trivy fs) (push) Successful in 14s
    publish-and-stage / build (backend) (push) Has been skipped
    publish-and-stage / build (frontend) (push) Has been skipped
    security-scan / JS SCA (npm audit) (push) Successful in 18s
    publish-and-stage / build (push) Successful in 0s
    publish-and-stage / deploy-staging (push) Has been skipped
    release-and-deploy / release-scripts (push) Successful in 11s
    security-scan / Python SAST (bandit) (push) Successful in 23s
    release-and-deploy / release (push) Successful in 21s
    security-scan / Python SCA (pip-audit) (push) Successful in 41s
    CI / frontend-test (push) Successful in 1m6s
    CI / pre-commit (push) Successful in 1m11s
    release-and-deploy / pre-commit (push) Successful in 1m10s
    release-and-deploy / frontend-test (push) Successful in 1m9s
    release-and-deploy / build (frontend) (push) Successful in 1m26s
    release-and-deploy / build (backend) (push) Successful in 1m30s
    release-and-deploy / build (push) Successful in 0s
    CI / backend-test (push) Successful in 3m58s
    release-and-deploy / backend-test (push) Successful in 3m56s
    CI / e2e (push) Successful in 6m11s
    release-and-deploy / e2e (push) Successful in 6m4s
    release-and-deploy / ci (push) Successful in 0s
    release-and-deploy / deploy (push) Successful in 1m31s
    Stable

    Ghost released this 2026-09-26 06:25:30 +00:00 | 34 commits to main since this release

    Notifications

    • Notifications are now NLDD's nldd-notification: top right, stacked as a
      deck, and 5 seconds for every message. Undo on sending and on throwing
      away a draft follows that, 5 seconds instead of 10. A failure stays until
      you close it.

    Postvak & Meelezen

    • Fixed on phones: no sideways scrolling, channel and author names stay
      readable, and the reply toolbar fits on one line with "Verzend".
    • Fixed: an @-mention stayed plain text. It now shows the person's name and
      opens their profile card, as on a card. The quoted message on a concept or a
      queued reply shows the name too.

    Profile card

    • "Stuur een bericht" on the profile card of an @-mention opens a new message
      to that person, with the cursor in the message.

    New message

    • Searching "Aan" puts the 1:1 conversation with someone first, then group
      conversations, then channels. A 1:1 is also found by its @username.

    Concepten, Uitgaande post, Notities

    • The empty state on these pages is NLDD's nldd-inline-dialog, the same one
      the reading list uses.

    Under the hood

    • NLDD design system 0.8.90 -> 0.8.92.
    • A failed login is audited once per reason and client address again, not once
      per reason for everyone: the address is now the router's, verified on
      staging and production. The per-window count of distinct addresses, which
      only served to spot a forged header, is gone.
    • All rendered markdown goes through one SafeMarkdown component, the app's
      only v-html; eslint now refuses v-html anywhere else.
    • A message can no longer draw a text field into Waggle: of <input>, only the
      task-list checkbox is kept, and it cannot be ticked.
    • The composer inserts at the caret and sets lists, tasks and headings with
      NLDD's own commands; "Takenlijst" now also works on a selection of lines.

    Container images