# Ardoise+ 3.2.5

Ardoise+ transforme votre tablette en tableau interactif projeté. Écrivez naturellement au stylet sur votre tablette pendant que votre PC diffuse instantanément vos annotations sur le vidéoprojecteur. Grâce à la synchronisation en temps réel entre les deux appareils, vous gardez la liberté d'écrire où que vous soyez dans la classe.

https://ardoiseplus.forge.apps.education.fr

## Fonctionnalités

### Écriture et manipulation

- stylo sensible à la pression, surligneur et gomme ;
- lignes, rectangles, ellipses et flèches ;
- textes multilignes saisis au clavier, modifiables et supprimables ;
- mise en forme du texte avec couleur, taille, gras, italique, souligné, exposant, indice et alignement ;
- palette Maths légère intégrée au texte avec symboles Unicode, fractions verticales, racines et vecteurs, sans moteur LaTeX ;
- fonction **Lecture facilitée** applicable au bloc texte existant : syllabes colorées, espacement renforcé, lignes alternées et mise en évidence locale de graphèmes fréquents (`ou`, `on`, `an`, `in`, `ch`, `ph`, `oi`…) ;
- activation indépendante de chaque adaptation de lecture et bouton de réinitialisation immédiate, avec conservation de l’édition, du déplacement, du redimensionnement, des exports et de la synchronisation PC/tablette ;
- sélection, déplacement, redimensionnement, rotation, duplication, recoloration et suppression d’un trait, d’une forme ou d’un texte ;
- verrouillage des objets et placement au premier plan ou à l’arrière-plan ;
- réglage de l’épaisseur d’un trait ou d’une forme après sa sélection ;
- affichage réversible d’un objet sélectionné sur toutes les pages ;
- déplacement de la vue et zoom tactile, à la molette ou avec les boutons ;
- prise en charge de la souris, du tactile et de l’Apple Pencil ;
- option de dessin au doigt mémorisée sur chaque appareil ;
- annulation et rétablissement des actions.

### Pages et fenêtres de ressources

- création et suppression de pages ;
- renommage, duplication et réorganisation des pages depuis leur liste complète ;
- effacement des annotations de la page active ou de toute l’ardoise ;
- navigation adaptée à un grand nombre de pages ;
- import d’une image dans une nouvelle page portant le nom du fichier ;
- ajout d’une image libre, déplaçable, redimensionnable, rotative, duplicable et exportable ;
- ouverture simultanée de plusieurs PDF, images, fichiers texte, médias et autres documents dans des fenêtres indépendantes ;
- ouverture simultanée de plusieurs sites web et vidéos, chacun dans sa propre fenêtre et aux côtés des documents ;
- commandes de lecture, position et volume indépendantes pour chaque vidéo YouTube, Vimeo ou MP4/WebM ;
- position, dimensions, état réduit, zoom et page PDF mémorisés indépendamment pour chaque fenêtre ;
- navigation, recherche, zoom, ajustement, rotation, déplacement, impression, enregistrement, plein écran et mode diaporama dans le lecteur PDF ;
- rattachement de chaque PDF à la page d’ardoise où il est ouvert, avec affichage facultatif sur toutes les pages ;
- poignées de redimensionnement harmonisées avec les objets de l’ardoise, verrouillage et suppression ;
- mémorisation locale de toutes les fenêtres de ressources, de leur page et de leur état ;
- sauvegarde JSON légère de la liste commune des fenêtres, avec option portable intégrant les fichiers locaux ;
- restauration prioritaire depuis la copie locale, puis depuis la pièce jointe portable si elle est indisponible ;
- déduplication par empreinte SHA-256 lorsqu’un même fichier est ouvert dans plusieurs fenêtres ;
- import historique d’un PDF comme pages d’ardoise, proposé en complément du lecteur dans la version web et utilisé dans la version Windows ;
- centrage des PDF en portrait comme en paysage dans les deux modes ;
- fonds quadrillé, Seyès, ligné, musical, avec repère, couleur unie ou image personnalisée ;
- retour au fond par défaut sans supprimer les annotations de la page ;
- surface qui adapte sa largeur à la zone d’écriture pour prolonger les fonds sans les déformer ;
- marge Seyès décalée à gauche et largeur visible reprise dans les exports ;
- annotations indépendantes sur chaque page interne d’un PDF importé comme pages d’ardoise.

### Interfaces classique et moderne

- choix du mode d’interface depuis le panneau **Fond de la page** ;
- mode classique avec les barres et les contours de l’ardoise ;
- mode moderne bord à bord, avec des commandes flottantes autour de la surface de travail ;
- adaptation des outils, des onglets de pages et des modules aux petits écrans et à l’affichage en paysage ;
- image `img/chameleon_fond.jpg` utilisée comme fond par défaut du mode moderne, sans remplacer les fonds de page sélectionnés par l’utilisateur.

### Présentation

- mode diaporama depuis le bouton de présentation ou la touche `F5` ;
- navigation entre les pages de l’ardoise et, dans le lecteur PDF, entre les pages du document ;
- plein écran bord à bord, sans déformation, avec recadrage centré ;
- commandes tactiles ;
- interface de dessin masquée pendant la projection.

### Modules facultatifs

- modules communs directement accessibles : **Graphiques**, **Carte mentale**, **Accessibilité / Lisibilité** et **Activités interactives** ;
- familles repliables pour alléger le menu : **Sciences physiques**, **Mathématiques**, **Géographie** et **Musique**, avec ouverture automatique d’une famille contenant un module actif ;
- sciences physiques : Circuits électriques, Molécules, Laboratoire, Énergie, Audio et Lune ;
- mathématiques : Géométrie ;
- géographie : Latitude / Longitude, Terre & Soleil ;
- musique : partition monodique et lecture audio ;
- module **Accessibilité / Lisibilité** : focus rectangulaire avec atténuation réglable, cache opaque ou semi-transparent, guide de lecture horizontal et zone de consigne contrastée ;
- déplacement et redimensionnement tactiles des aides de lisibilité, réglage de leur opacité ou de la taille du texte, consignes en étapes ① ② ③ et suppression directe de la zone sélectionnée ;
- état indépendant sur chaque page, sauvegarde, export PDF et synchronisation structurée des aides entre le PC et la tablette ;
- module transversal **Activités interactives** : étiquettes déplaçables, remise en ordre, classement dans 2 à 4 zones, textes à trous cliquables et caches à révéler, avec modification, mélange, réinitialisation et suppression sans score ni compte élève ;
- module **Latitude / Longitude** : planisphère local, globe réaliste rotatif ou grille seule, équateur et méridien de Greenwich, aides géométriques facultatives pour visualiser les angles de latitude et longitude, exercices de lecture, placement avec tolérance et association de lieux, correction immédiate ou différée et synchronisation des réponses entre professeur et tablette ;
- module **Terre & Soleil** : simulation locale et tactile de l’alternance jour/nuit, rotation manuelle ou automatique, observateur déplaçable avec animation facultative sur un parallèle du globe, choix entre schéma et globe réaliste ; mode Saisons avec orbite presque circulaire, axe parallèle à lui-même, quatre positions remarquables, révolution automatique, Terres vectorielles Natural Earth légères, rendu réaliste désactivable dans la vue de côté, ombre jour/nuit, panneau d’incidence solaire avec surface éclairée facultative, comparaison visuelle et estimation de la durée jour/nuit selon la latitude ;
- Lune : phases lunaires, aspect observé depuis la Terre, éclipses, ombre et pénombre, ainsi qu’un mode avancé avec plan de l’écliptique, orbite inclinée et nœuds lunaires.

### Outils pour la classe

- compte à rebours réglable en minutes et secondes ;
- modification du temps restant sans redémarrer le minuteur ;
- pause, reprise, remise à zéro, répétitions et signal sonore final ;
- minuteur déplaçable, redimensionnable, supprimable et synchronisé ;
- symboles de travail « silence », « chuchoter » et « voix basse » ;
- symboles déplaçables, redimensionnables, supprimables et synchronisés.

### Vidéo et site web

- lecture de vidéos YouTube, Vimeo ou de fichiers directs MP4/WebM ;
- adresse et commandes envoyées depuis la tablette, chargement effectué uniquement par le PC ;
- commandes de lecture, pause, déplacement de dix secondes et volume ;
- affichage de plusieurs sites `https://` dans des fenêtres isolées indépendantes ;
- accès direct à LireCouleur depuis la barre d’outils, avec les permissions nécessaires limitées à son origine officielle ;
- accès direct à Roucoule depuis la barre d’outils, dans une nouvelle fenêtre ;
- lien d’ouverture dans un nouvel onglet lorsque le site refuse l’intégration ;
- fenêtres de documents, d’images, de PDF, de vidéos et de sites mutualisées : sélection, huit poignées de redimensionnement, réduction, verrouillage, duplication, placement dessus/dessous et affichage limité à une page ou étendu à toutes les pages ;
- restauration locale des adresses vidéo et web ainsi que de la position, de la taille, du calque, du verrouillage et de la page de leurs fenêtres ;
- mémorisation de la disposition de la fenêtre caméra et du choix du microphone ; le flux caméra lui-même est toujours redemandé après un redémarrage pour des raisons de sécurité ;

### Caméra en direct

- utilisation de la caméra du téléphone ou de la tablette depuis le menu d’import ;
- transmission en direct vers le PC par WebRTC, sans enregistrement ;
- choix de transmettre l’image seule ou l’image avec le son ;
- aperçu local muet sur la tablette pour éviter l’écho ;
- activation ou coupure du son sur le PC ;
- fenêtre caméra déplaçable, redimensionnable et supprimable.

### Connexion et sauvegarde

- choix entre le mode connecté, actif par défaut, et un mode local utilisable immédiatement sans tablette ;
- arrêt propre de la session en attente lors du passage en local et création d’une nouvelle session sans recharger la page ;
- connexion PC/tablette avec PeerJS, STUN et configuration TURN facultative ;
- présélection automatique du rôle Tablette sur les téléphones et tablettes tactiles ;
- fermeture automatique du panneau de connexion une fois les appareils connectés ;
- reconnexion et resynchronisation du document ;
- sauvegarde locale automatique avec IndexedDB ;
- export et restauration d’une sauvegarde JSON ;
- export PNG de la page active ;
- export de toute l’ardoise en un PDF multipage, y compris les pages internes des PDF importés dans la version Windows ;
- choix entre la page seule et la page avec ses débordements pour les exports PNG et PDF ;
- roue de tirage au sort synchronisée, alimentée par une liste de noms, avec retrait optionnel de la personne tirée ;
- filtrage et limitation des messages reçus.

## Limites connues sur iOS et iPadOS

- Safari peut suspendre les connexions WebRTC quand l’écran se verrouille, quand l’onglet passe longtemps en arrière-plan ou en mode économie d’énergie. La tablette tente de se reconnecter et redemande ensuite le document au PC.
- Le bouton **Doigt** autorise le dessin tactile. Il est activé par défaut sur les téléphones et désactivé sur les tablettes afin d’éviter les marques accidentelles avec un Apple Pencil. Quand il est désactivé, un doigt déplace la feuille. Le zoom à deux doigts reste disponible dans les deux modes.
- Le plein écran est plus limité dans Safari iOS que sur ordinateur.
- Le serveur public PeerJS facilite le prototype mais n’offre pas de garantie de service. La configuration TURN optionnelle améliore la compatibilité avec les réseaux restrictifs, sans garantir le passage de tous les pare-feu.
- IndexedDB peut être purgé par iOS en cas de manque d’espace ou dans un contexte privé. Exporter un fichier JSON pour les documents importants.
- Une seule tablette contrôleur est prévue par session dans cette première version.
- Certains sites refusent leur intégration dans une autre page. Ardoise propose alors un lien pour les ouvrir dans un nouvel onglet sur le PC.
- Le lecteur PDF web nécessite une connexion Internet lors de son premier chargement de PDF.js. Les fichiers sont limités à 25 Mo et l’import comme pages à 20 pages. La version Windows embarque PDF.js et reste utilisable hors connexion.

## Application Windows (Tauri)

La version Windows embarque le frontend HTML/CSS/JavaScript existant, PeerJS et PDF.js. Elle conserve l’import des pages PDF dans l’ardoise et utilise les dialogues Windows natifs pour sélectionner et enregistrer les fichiers.

Prérequis de compilation : Node.js LTS, Rust stable MSVC, Microsoft Visual Studio Build Tools avec la charge **Développement Desktop en C++**, et WebView2.

```powershell
npm install
npm run tauri dev
npm run tauri build
```

Pour un build lancé depuis un tag `vX.Y.Z`, `npm run tauri build` produit et copie dans `desktop-artifacts/` :

- `ArdoisePlus_X.Y.Z_x64-portable.exe`, exécutable autonome sans installation ;
- `ArdoisePlus_X.Y.Z_x64-setup.exe`, installateur NSIS Windows.

Les documents, états des modules et préférences de la version Tauri sont enregistrés dans `%APPDATA%\fr.education.ardoiseplus\ardoise-plus-state.json`, avec une copie de secours `ardoise-plus-state.backup.json`. Cet emplacement reste le même quand l’EXE portable est déplacé, remplacé ou reconstruit. Les données utilisateur ne sont jamais écrites dans `dist/`, `src-tauri/target/`, `desktop-artifacts/` ni dans le cache de compilation.

L’export et l’import JSON utilisent le sélecteur de fichiers Windows dans la version Tauri, tout en conservant le mécanisme web d’origine dans le navigateur. Pour une configuration TURN privée au moment du build, les variables `WEBRTC_TURN_URLS`, `WEBRTC_TURN_USERNAME` et `WEBRTC_TURN_CREDENTIAL` restent prises en charge.

## Sécurité et données

Les codes de session sont aléatoires et ne constituent pas une authentification forte. Les messages entrants sont filtrés par type et limités en taille et en nombre de points. Aucun contenu reçu n’est inséré comme HTML. Pour un usage avec des données sensibles, ajouter une authentification, un serveur de signalisation maîtrisé et une politique de conservation adaptée.

## Structure

```text
index.html          interface
app-config.js       configuration PeerJS, STUN et TURN
css/app.css         styles responsives
css/modern.css      interface moderne bord à bord
js/app.js           orchestration de l’application
js/board.js         modèle, dessin et interactions canvas
js/reading-aid.js   analyse locale pour la lecture facilitée
js/network.js       PeerJS, reconnexion et validation
js/storage.js       IndexedDB et fichiers
js/media-import.js  préparation des images et des PDF
js/floating-window.js interactions communes des fenêtres flottantes
js/pdf-viewer.js     lecteur PDF intégré
js/resource-window-model.js validation et sauvegarde des fenêtres de ressources
js/resource-windows.js gestion des documents, médias, vidéos et sites ouverts
js/video-tools.js   validation des sources vidéo
js/website-tools.js validation des adresses de sites
js/ui.js            interface et outils de classe
modules/            modules facultatifs chargés à la demande
tests/              tests automatisés
.gitlab-ci.yml      publication GitLab Pages
```

## Auteur

Philippe Mancini

## Licence

Ardoise+ est distribué sous la licence **GNU Affero General Public License version 3 ou ultérieure** (`AGPL-3.0-or-later`).

### Crédit de l’image du mode moderne

L’image [`img/chameleon_fond.jpg`](img/chameleon_fond.jpg) est une œuvre de **Charles J. Sharp**, distribuée sous licence [Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0), via [Wikimedia Commons](https://commons.wikimedia.org/).
