Skip to content

fix(calendar): stop writing blank participant names and empty descriptions - #748

Open
lucletoffe wants to merge 1 commit into
bulwarkmail:mainfrom
lucletoffe:fix/calendar-blank-cn-and-description
Open

fix(calendar): stop writing blank participant names and empty descriptions#748
lucletoffe wants to merge 1 commit into
bulwarkmail:mainfrom
lucletoffe:fix/calendar-blank-cn-and-description

Conversation

@lucletoffe

Copy link
Copy Markdown

Problem

When creating a calendar event, the composer writes name: "" for every participant that has no display name, and an empty description property. Both end up serialized by the JMAP server into iCalendar as empty parameters/properties (CN=, DESCRIPTION:), which then leak into everything downstream:

  • iMIP invitation emails render an orphan "- Organizer" line and invitees with nothing before their address (observed with Stalwart, but Gmail/Infomaniak render the blank CN= too — this is client-inflicted, not server-specific).
  • An empty DESCRIPTION produces a "Description" section heading over nothing in invitation mails.
  • On read-back, an ORGANIZER;CN= with an empty CN parameter defeats the RFC-style attendee/organizer merge in some iCalendar→JSCalendar converters, so the organizer is duplicated as a phantom third participant with no name and no email (renders as "Unknown" in clients).

Fix

Omit name when there is no display name, and omit description when it is empty, instead of sending empty strings. Properties that are absent cannot be mis-serialized.

Typechecked and running in a private deployment.

…tions

Both reach the recipient of an invitation. A participant sent with `name: ""`
is serialized as a bare `CN=`, so the invitation e-mail shows a dangling
"- Organizer" and lists guests with nothing before their address; omitting the
name lets clients fall back to the address. An event created with an empty
description writes `DESCRIPTION:` with nothing after it, which renders as a
"Description" heading over blank space — the empty string is still sent when
editing an existing event, since that is how a description gets cleared.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YS9FfeGXhm9HBwbRyvJ1db
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant