docs: record iCalendar parser decisions (T1)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Pierre Martin
2026-06-30 01:18:29 +02:00
co-authored by Claude Opus 4.8
parent 1878ba08ec
commit 2a25f1c34e
2 changed files with 31 additions and 0 deletions
+26
View File
@@ -39,6 +39,32 @@ navigateur). L'extension facilite le geste (affiche l'image à glisser) mais ne
l'automatise pas. L'affiche vient souvent de la newsletter Brevo, hors
calendrier.
## 2026-06-30 — Parseur iCalendar (T1) : contrat `Event` figé + ical.js vendoré
Le flux brut est transformé en `Event[]` par une fonction pure
`parserEvenements(flux, aujourdhui)` (`extension/evenements.js`), via **ical.js
v2.2.1 vendoré** (approche 3 du brainstorm : pas de build, dépendance en `.js`).
**Contrat `Event` figé** (ne pas rouvrir sans accord) :
`{ uid, titre, description, lieu, debut: Date, fin: Date, categories: string[],
journeeEntiere: boolean }`. Champs texte coercés en `""` si absents (l'aval
suppose des chaînes). Le défaut « café » du lieu est appliqué **en aval**, pas
ici.
**Décisions tranchées :**
- **`uid` seul, pas de `href`/`ETag`.** Le transport actuel (`?export`) renvoie
un ICS concaténé sans `href`/`ETag` par événement. L'`UID` est la clé stable ;
T2 résoudra l'adressage CalDAV par UID au moment du PUT. Le contrat n'est pas
alourdi.
- **`journeeEntiere` dès T1** (drapeau porté, comportement « heure exigée »
différé à T3).
- **Cas limites traités « au plus simple », différés à T3** : pas d'expansion
RRULE (récurrents pris au DTSTART maître + filtre futur → un récurrent au
maître **passé** disparaît, **trou assumé et documenté**), exceptions
d'occurrence (`RECURRENCE-ID`) ignorées, journées entières au minuit local.
- **Tri & message « 0 événement futur » hors parseur** : le parseur renvoie les
événements **dans l'ordre du flux**, non triés (responsabilité de la liste).
## 2026-06-29 — Pré-remplissage par content script, pas par URL
Gravity Forms n'accepte `?input_X=` que si chaque champ est configuré