feat: chat — boutons discrets sous l'image, image en onglet d'app, point de non-lus, notification OS, suppression annulable BUG-110
CI / lint (push) Successful in 2m50s
CI / security (push) Successful in 1m36s
CI / test (push) Successful in 4m28s
CI / build (push) Successful in 1m31s
CI / e2e (push) Successful in 17m30s

This commit is contained in:
2026-10-09 11:53:26 -04:00
parent 54caa48d1f
commit 4fb7c43e06
17 changed files with 420 additions and 46 deletions
+31 -1
View File
@@ -6,7 +6,7 @@ Format basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/),
et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
> **En cours de développement** : les changements à venir sont listés dans la section
> [Unreleased](#unreleased). La dernière version livrée est **2.61.0**.
> [Unreleased](#unreleased). La dernière version livrée est **2.62.0**.
---
@@ -14,6 +14,36 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
---
## [2.62.0] — 2026-10-09
### Modifié
- **BUG-110 — Chat : refonte visuelle des posts et des indicateurs**
- **Pièces jointes image** : boutons **icônes seules** (24 px, `aria-label`)
rangés **sous l'image**, alignés à droite — télécharger, ouvrir.
- **Clic sur une image = onglet de l'app** : le clic (ou le bouton « ouvrir »)
affiche la pièce jointe dans un **onglet**, avec le même visualiseur que les
images de vault (zoom/pan/plein écran/lightbox) — plus d'ouverture dans un
onglet du navigateur. `TabManager.openChatImage()` + branche `chatImage` de
`activate()` ; `renderImageViewer()` accepte une `url` directe (une pièce
jointe de chat ne vit pas dans un vault).
- **Indicateur de non-lus** : point de couleur pulsant sur l'icône « Chat » de
la sidebar tant qu'il reste des messages non lus, en plus du badge chiffré.
- **Notification OS** : quand l'app n'est pas au premier plan (`document.hidden`
ou hors focus), un message entrant déclenche une notification navigateur
(titre « Nouveau message de {user} », aperçu du texte, clic → retour sur
l'app). Permission demandée au premier clic d'ouverture du chat.
- **Suppression réellement annulable** : le `DELETE` est **différé de 10 s** ;
la ligne passe à « Ce message a été supprimé » avec un bouton « Annuler » qui
réarme le message, et un échec réseau le rend. (L'ancien « Annuler »
restaurait une copie DOM d'un message déjà détruit côté serveur.)
- i18n FR/EN : `chat.deleted_message`, `chat.undo`, `chat.download_image`,
`chat.view_image` — clés mortes retirées (`chat.undo_success`,
`chat.undo_error`, `chat.new_messages_indicator`).
- Tests : `tests/frontend/filechat.test.mjs` 19 → **25** (6 tests #110).
---
## [2.61.0] — 2026-10-08
### Ajouté