# Com'Together — Ma communication (application CAA)

Application de **Communication Alternative et Augmentée**, **linguistiquement robuste**,
qui fonctionne **entièrement sur l'appareil** (web + smartphone), **hors-ligne** et **sans aucune
donnée envoyée sur Internet** (RGPD par conception).

---

## Démarrer

- **Sur cet ordinateur** : double-cliquez sur **`Lancer Com'Together CAA.bat`**.
  L'appli s'ouvre dans le navigateur. Laissez la fenêtre noire ouverte pendant l'usage.
- **L'installer sur un smartphone / une tablette** : ouvrez l'adresse de l'appli dans
  Chrome/Safari puis « Ajouter à l'écran d'accueil ». Elle s'installe comme une vraie appli,
  fonctionne hors-ligne, et ouvre en plein écran.

> Pour une mise en ligne (accès par lien, installation à distance), les fichiers du dossier
> peuvent être déposés tels quels sur un hébergement statique (par ex. le sous-domaine
> `outils.comtogether-learning.fr`). Tout est en HTML/JS/CSS, sans serveur ni base de données.

---

## Ce que l'application sait faire

### Un système linguistiquement robuste (critères Zangari & Van Tatenhove)
- **Vocabulaire équilibré** : vocabulaire de **base** (mots les plus fréquents, toujours au même
  endroit → automatisation des trajets moteurs, d'après **Van Tatenhove** et **Bruce Baker**),
  vocabulaire **spécifique** (catégories), et **langage pré-enregistré** (phrases toutes prêtes).
- **Vocabulaire organisé + code couleur Fitzgerald** modifié (repérage rapide) :
  jaune = pronoms, vert = verbes, bleu = descriptifs, orange = noms, rose = social,
  violet = questions, blanc = petits mots, rouge = négation.
- **Ordre de phrase français** (Bled / Bescherelle) : pronoms → verbes → compléments.
- **Grammaticalisation automatique** : les verbes se conjuguent **selon ce qui a été écrit avant**
  (sujet + temps). **6 temps** : présent, imparfait, passé composé, futur proche, futur (simple),
  conditionnel — plus accords, élision (« j'aime »), et l'infinitif après un verbe (« je veux **manger** »).
  Le bouton **« 🕐 Temps »** se **déplie** pour choisir le temps. La barre de grammaire
  (temps · féminin · pluriel) apparaît **quand c'est utile** par défaut ; on peut la rendre
  **toujours visible** dans Réglages → *Barre grammaire*.
- **Accord au féminin automatique** : réglage **« Quand je parle de moi »** (féminin / masculin /
  neutre). Au féminin, tous les mots qui me décrivent s'accordent seuls : *« je suis **contente** »*,
  *« **fatiguée** »*, *« **fière** »*… L'accord suit **qui est décrit** : « elle » reste au féminin,
  « il / tu » au masculin, même réglage activé. Les paires de mots distincts (**copain / copine**,
  **ami / amie**) sont, elles, présentes comme cases séparées.
- **Accès clavier / alphabet** avec **prédiction de mots** et **aide phonique** (littératie —
  d'après **Erickson**, **Musselwhite**, **Jane Farrell**).
- **Niveaux de grille** : Confort (7 colonnes = 49 cases minimum), Standard, Dense.

### « Ma voix » — autodétermination & advocacy
Phrases en accès direct : *« C'est mon choix »*, *« Je décide »*, *« Je ne suis pas d'accord »*,
*« Laisse-moi le temps »*, *« Respecte mon avis »*, *« C'est mon droit »*… (personnalisables).

### Scènes visuelles (VSD)
Une **photo de la vraie vie** avec des **zones tactiles qui parlent** (approche Light & Drager),
efficace pour la littératie et les échanges. Ajoutez vos propres photos, placez les zones.

### Personnalisation & médias (100 % local)
- Modifier chaque case : **texte**, **texte lu**, **couleur**, **masquer**, **ajouter** des cases.
- **Ajouter un média** dans une case, **en plus du picto et du texte** (la personne choisit
  d'afficher l'un ou l'autre) : **photo ou GIF** de l'appareil, **lien YouTube**, **lien vidéo**,
  **lien web**. Les fichiers restent sur l'appareil (IndexedDB). Les vidéos YouTube utilisent
  l'**embed « sans cookie »**, chargé **seulement quand on l'ouvre**.

### Accessibilité
Taille des pictos et du texte réglables, afficher/masquer pictos ou texte, **contraste élevé**,
**mode sombre**, **synthèse vocale** française (voix et vitesse réglables), **balayage** à un
contacteur (barre Espace / Entrée), cibles tactiles larges, focus visible, `prefers-reduced-motion`.

### Vocabulaire fondé sur la recherche + recherche intégrée
- Le vocabulaire vient de la liste **« mots à enseigner »** (fréquences corpus, verbes
  MacArthur-Bates IFDC, listes Brunet) croisée avec la banque **Mulberry**.
- La grille d'accueil range le vocabulaire de base en **colonnes grammaticales**
  (Personnes · Actions · Descriptifs · Petits mots · Questions · Social), pour soutenir
  l'ordre de la phrase française.
- Les catégories latérales sont organisées par **fonctions de communication & compétences
  sociales** (Demander, Refuser, Saluer & politesse, Donner mon avis, Poser des questions,
  Raconter, Mes émotions, Relations & amitié, Régler un souci, Guider l'autre). Les **thèmes**
  (Animaux, Corps, Véhicules…) restent regroupés à part.
- **Gérer la conversation** (souvent oublié dans les outils CAA, qui se remplissent de noms et de
  demandes) : des catégories dédiées aux **régulateurs conversationnels** — *Réagir & relancer*
  (« ah bon ? », « et toi ? », « super ! »), *Prendre la parole* (« attends », « je n'ai pas fini »,
  « euh… »), *Vérifier & réparer* (« tu as compris ? », « ce n'est pas ça », « répète »),
  *Sujet & fin* (« à propos… », « c'est tout », « merci de m'avoir écouté ») et *Mes limites*
  (« laisse-moi », « ne parle pas à ma place », « pas maintenant »). La personne peut ainsi
  **tenir son tour de parole**, pas seulement réclamer un objet.
- Le bouton **🔍 Chercher** donne accès à **plus de 4600 mots** (tout le dictionnaire), avec
  pictogramme, en français.

### Voix naturelle « Piper » (hors-ligne) + tons fiables
- Réglages → **Moteur de voix → « Naturelle Piper »** : une vraie voix française neuronale qui
  tourne **100 % sur l'appareil** (aucun envoi réseau). Le modèle (~63 Mo) se télécharge **une
  seule fois** puis est mis en cache (hors-ligne ensuite).
- Les **tons** (joyeux, triste, fâché…) et le **type de voix** (enfant, adulte…) sont appliqués
  par **décalage de hauteur/vitesse du son** — fiable, contrairement à la voix du navigateur.
- Premier énoncé ~7 s (chargement), puis ~1 s. Le bouton « 🔊 Dire » utilise ce moteur ; l'écho
  case-par-case reste sur la voix rapide du navigateur.
- Fichiers dans `assets/tts/` (modèle, moteur ONNX, phonémiseur) — tout local.

> ⚖️ **Licences (à connaître pour la vente)** : le logiciel Piper / vits-web / ONNX Runtime sont
> **MIT** (vendable). La voix **fr_FR-siwis** vient de la base **SIWIS (CC BY 4.0)** → attribution.
> ⚠️ Le **phonémiseur** (espeak-ng, via piper-phonemize) est en **GPLv3** : on peut vendre, mais
> l'appli doit alors **fournir son code source** (copyleft). Si tu veux rester **propriétaire
> fermé**, il faudra remplacer ce phonémiseur — dis-le-moi. On peut aussi désactiver Piper et
> garder la voix navigateur (aucune contrainte).

### Clavier & haut contraste (accès direct)
- Bouton **⌨️** : afficher / masquer un clavier ancré, directement depuis l'accueil.
- Bouton **◐** : basculer tout l'outil en **haut contraste** en un geste (fond blanc, texte et
  bords noirs, couleur de famille conservée en liseré).

### Disposition des catégories & spirale
- **Catégories en colonne verticale** (par défaut, recommandé) ou en **bandeau horizontal**.
- **Disposition spirale** (option) qui place au centre les mots les plus **utilisés récemment**
  (fréquence + récence), en s'appuyant sur les repères d'accessibilité neurovisuelle (peu
  d'encombrement, saillance centrale). Trois modes : désactivée / **surface « ✷ Fréquents » en plus**
  (la grille garde ses positions fixes → repères moteurs préservés) / **accueil adaptatif**
  (les mots se réorganisent selon l'usage).

### Vos données (RGPD)
Tout est stocké **sur l'appareil uniquement**. Aucun compte, aucun traqueur, aucune publicité,
aucun envoi réseau. **Sauvegarde** et **restauration** par fichier ; **réinitialisation** possible.

---

## Pictogrammes (tous utilisables commercialement)
- **En priorité : Mulberry Symbols** (licence **CC BY-SA 2.0**, usage commercial autorisé avec
  attribution + partage à l'identique). Recherché par le nom français ET le nom anglais d'origine.
- **Trous : emoji Unicode** (le caractère, rendu par la police du système — aucun fichier
  redistribué) ou **picto-texte** (généré ici), pour qu'aucune case ne reste sans image.
- ⚠️ **ARASAAC n'est PAS utilisé** : sa licence CC BY-NC-SA interdit l'usage commercial. Un
  interrupteur `ARASAAC_ON` existe dans `build/build_vocab.py` mais reste sur `False`.

Attribution à conserver : « Pictogrammes : Mulberry Symbols (CC BY-SA). »

---

## Pour faire évoluer le vocabulaire (technique)
Le vocabulaire de base livré est généré par le script **`build/build_vocab.py`** à partir de la
banque Mulberry. Pour ajouter des mots au socle ou de nouvelles catégories : éditez les listes
`CORE`, `ADVOCACY`, `FRINGE` (et les conjugaisons dans `grammar.js`), puis relancez :

```bash
python build/build_vocab.py
```

Les personnalisations faites par l'utilisateur (dans le navigateur) ne sont **jamais** écrasées.

---

## Limites connues (pistes v2)
- La prédiction de mots utilise une liste fréquente intégrée (améliorable : n-grammes,
  apprentissage local des habitudes de la personne).
- Conjugaison couvrant les verbes de base les plus fréquents (extensible dans `grammar.js`).
- Édition des zones de scènes volontairement simple (placer / nommer / supprimer).
- Icône d'installation au format SVG (ajout de PNG possible si un appareil l'exige).
