Skip to content

Align with vCard v4.0 spec to avoid data loss (don't allow multiple Birthday and Anniversary entries) #51

@wutr

Description

@wutr

The vCard v4.0 spec allows only 1 entry for "Birthday" and "Anniversary". Other event dates should be created using a custom event field.

6.2.5. BDAY

Purpose: To specify the birth date of the object the vCard
represents.

Value type: The default is a single date-and-or-time value. It can
also be reset to a single text value.

Cardinality: *1

'Cardinality: *1' means none or one may be present.

For example, adding two birthdays in a test contact:
'25 April 2025' and '24 April 2024'

When directly exported (shared) from the overflow menu in the app yields:

BEGIN:VCARD
VERSION:4.0
PRODID:ez-vcard 0.12.1
X-PRODID://com.goodwy.contacts//8.2.3
FN:Test Contact (Right Contacts)
N:Radicale (Right Contacts);Test;;;
TEL;TYPE=CELL:1234567890
BDAY:20250425
BDAY:20240424
END:VCARD

However, when stored on a vCard v4.0 supporting CardDAV server through DAVx5 it yields:

BEGIN:VCARD
VERSION:4.0
PRODID:+//IDN bitfire.at//DAVx5/4.5.10-ose ez-vcard/0.12.2 (ez-vcard/0.12.2
 )
UID:128afe74-90f8-4133-a82a-b6194ceb0c0f
BDAY:20240424
FN:Test Contact (Right Contacts)
N:Radicale (Right Contacts);Test;;;
REV:20260425T171411Z
TEL;TYPE=cell:1234567890
END:VCARD

Note how only one 'BDAY' field is stored, the other is silently dropped.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions