docs(m7): backfill changelog + testing-m7 for the two post-merge UX fixes
User feedback flagged that the doc didn't reflect the two hotfixes shipped after the M7 PR: - evidence whitelist surfaced in the dropzone + OS picker pre-filter - executed_at override fixed in non-UTC timezones (no more time-snap) Added a CHANGELOG entry per fix and a §3.5 in tasks/testing-m7.md walking through the timezone semantics of the datetime-local input. spec.md is left untouched — these are UX/implementation fixes, not contract changes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -75,11 +75,29 @@ Rapport HTML : `e2e/playwright-report/`.
|
||||
- Bouton **Save blue fields** (analogue à la zone red).
|
||||
- **Evidence dropzone** :
|
||||
- Drag & drop ou bouton **Pick files** (multi-fichiers).
|
||||
- Limite côté client à 25 MB/file (garde-fou UX), refus serveur stricte
|
||||
à 25 MB.
|
||||
- Sous la dropzone, la liste des extensions acceptées est affichée :
|
||||
`Accepted: .png · .jpg · .jpeg · .pdf · .txt · .log · .json · .csv · .evtx · .zip · max 25 MB / file`
|
||||
(testid `evidence-allowed-formats`).
|
||||
- Le sélecteur OS est pré-filtré via l'attribut `accept` — pas de "All files".
|
||||
- Un drag&drop d'une extension hors-liste est rejeté côté client avec
|
||||
le message d'erreur en rouge ; le serveur re-vérifie quoi qu'il
|
||||
arrive (`unsupported_extension` / `too_large`).
|
||||
- Limite : **25 MB / fichier** (côté client = garde-fou UX, côté serveur =
|
||||
stricte avec stream cap chunk-par-chunk).
|
||||
- Table récap : nom · taille · uploader · `sha256[:12]…` · link download +
|
||||
bouton soft-delete.
|
||||
|
||||
### 3.5 Override executed-at — pièges timezone
|
||||
- Le toggle **Override executed-at timestamp** affiche un input
|
||||
`datetime-local` qui parle en **heure locale du navigateur** (ex.
|
||||
Europe/Paris UTC+2). L'état local du composant garde la valeur sous
|
||||
forme `YYYY-MM-DDTHH:MM` ; la conversion en UTC ISO n'a lieu qu'au
|
||||
submit. Donc si tu tapes `10:30` à Paris, le serveur reçoit
|
||||
`08:30:00+00:00` — c'est attendu.
|
||||
- Le polling activity (15 s) ne re-sync l'état local **que** sur changement
|
||||
d'identité du test (`useEffect([test.id])`) — une frappe en cours n'est
|
||||
jamais écrasée par un refetch.
|
||||
|
||||
### 3.4 Indicateur d'activité
|
||||
|
||||
- À l'arrivée sur la page, le polling `GET /missions/<id>/activity` démarre
|
||||
|
||||
Reference in New Issue
Block a user