Aide & fonctionnalités

Documentation complète de tout ce que fait LightNote — la même aide qui s'ouvre dans l'app avec la touche F1. Utilisez le sommaire ci-dessous pour aller à n'importe quelle fonctionnalité.

✍️ Éditeur de code 🧠 Notes & second cerveau 🤖 Vibe coding (IA + MCP)

Aide de LightNote

Éditeur léger de code et de notes pour Windows. La barre latérale liste les sections et suit ce que vous êtes en train de lire ; les boutons Accueil et Retour en haut de la fenêtre ramènent au début, et le champ Rechercher recherche dans le texte de cette aide (Entrée avance ; F3 / Shift+F3 naviguent). Appuyez sur F1 à tout moment pour ouvrir cette aide directement à la section de l'écran actuel.

Index

Édition

Outils

Automatisation (IA / scripts)

Référence


Vue d'ensemble

LightNote ouvre un dossier comme un Espace de travail et affiche l'arborescence des fichiers à gauche, les onglets d'édition à droite et la barre d'état en bas. Le petit ruban en haut de la barre latérale bascule entre les sections Explorateur (arborescence), Recherche, Suivi de version (Git), Historique du fichier et Éléments en attente (TODO/FIXME et tâches des notes).

Au-delà du code et des notes, il ouvre et modifie de nombreux formats au bon endroit : tables (Parquet/CSV/JSON via DuckDB et Excel .xlsx), PDF, images (y compris GIF animé), .zip comme un dossier, carnets Blocs (.lnb), tableaux de Tâches (.lnt), tables personnalisées (.lnd), connexions à des bases de données (.lnc) et connexions SSH (.lns). Il y a un terminal intégré, une recherche globale (ripgrep), un suivi de version Git simplifié, l'intégration avec des CLI d'IA, un serveur MCP et une ligne de commande (lnote) pour l'automatisation.

Nouveau ici ? Le matériel de présentation (l'espace de travail de bienvenue) reste accessible à tout moment via Aide → Rouvrir la visite de bienvenue.

Espace de travail et fenêtres

Le dossier racine et la fenêtre

Le dossier racine ouvert est votre espace de travail. Le seul fait de l'ouvrir ne crée rien ; à sa fermeture, LightNote n'écrit qu'un petit fichier de session (onglets ouverts et position). L'espace de travail ne devient un « projet » — avec sa propre configuration persistée — que lorsque vous activez le Suivi de version (Git) ou le MCP dans Outils → Configuration de l'espace de travail.

Les Paramètres généraux s'appliquent à toute l'application ; la Configuration de l'espace de travail ne s'applique qu'au dossier ouvert. La configuration et l'état vivent dans une base de données centrale, et non éparpillés dans le dossier.

LightNote s'exécute en instance unique : ouvrir un second dossier réutilise le processus (multi-fenêtre, moins de mémoire). Il y a une icône dans la zone de notification et un lanceur avec un champ de recherche listant les espaces de travail (épinglez vos favoris en haut via le menu contextuel) — voir Notes quotidiennes et zone de notification. Chaque onglet peut recevoir une étiquette de couleur via le menu contextuel de la barre d'onglets. Pour des notes répétitives, créez un dossier Modelos (ou Templates) à la racine de l'espace de travail, avec des fichiers .md et utilisez Fichier → Nouvelle note à partir d'un modèle… Quatre modèles académiques sont déjà prêts dans la même liste — Article académique, Fiche de lecture, Cahier de laboratoire et Protocole d'expérience : en choisir un écrit le .md dans ce dossier, et il est ensuite à vous.

Organiser et écrire des modèles. Les sous-dossiers de Templates deviennent des catégories : Travail/Réunion.md apparaît comme Travail/Réunion, et c’est ce nom qu’un dossier enregistre lorsqu’il adopte le modèle. Les champs {{title}}, {{date}}, {{time}} et {{date:dd/MM/yyyy}} sont remplis à la création — le titre est le nom de la note, et la renommer juste après sa création, avant d’y écrire, refait le titre — et rien n’est remplacé dans le code (entre accents graves ou dans un bloc), pour qu’un modèle puisse enseigner sa propre syntaxe. Dans un modèle, ils sont marqués comme les champs à remplir, avec le même fond — dans l’éditeur formaté, avec la bordure pleine de la syntaxe —, et dans une note ordinaire ils ne prennent aucune couleur, car ils n’y font rien. Le frontmatter du modèle passe dans la note, sauf description:, qui décrit le modèle, et citation-style:, qui appartient au dossier. Les modèles et les prompts (le dossier Prompts/) sont des outils, pas du contenu : ils restent hors de la recherche par sens et du contexte du Chat IA, et les étiquettes et aliases: qu’ils déclarent ne comptent pas — la recherche de texte trouve toujours les deux. Quand un modèle est ouvert, un bandeau en haut de l’éditeur indique que c’en est un et propose Insérer un champ, Voir la syntaxe et l’Aperçu — la note telle qu’elle naît maintenant. La Bibliothèque de modèles (dans Outils, la même qu’ouvre Fichier → Nouvelle note à partir d’un modèle…) les liste tous avec une recherche par nom et description, les groupe par sous-dossier et montre l’aperçu ; c’est aussi là qu’on crée un modèle — y compris à partir de la note ouverte, dont le titre et la date du jour deviennent des champs. La bibliothèque apporte aussi un groupe Du site : des modèles que nous publions, dans la langue de l’interface, récupérés seulement quand vous l’ouvrez. Importer est une copie — le modèle devient un fichier à vous dans Templates, et plus rien ne les relie ensuite : un modèle corrigé sur le site ne poursuit pas ce que vous avez déjà importé, et un modèle à vous portant le même nom l’emporte toujours. Sans connexion, la bibliothèque dit qu’elle n’a pas pu les récupérer et continue d’afficher ce qui est déjà sur cette machine.

Des champs à remplir. Un modèle peut laisser des trous : {{ask:Sujet de la réunion}} est un champ libre et {{choice:brouillon|relecture|final}} une liste. Ils ne sont pas remplacés à la création — la note naît avec eux marqués dans le texte, et c’est ce qui les fait valoir aussi dans la Note du jour, dans lnote et dans le MCP, où aucun écran ne peut rien demander. Dans une note, l’éditeur formaté affiche chaque champ comme une étiquette à bordure pointillée autour de son libellé (la question, ou la première option) ; cliquer dessus sélectionne le champ entier, et la touche suivante le remplace. Sur un champ de choix, le clic ouvre aussi la liste : choisir une option échange le champ contre elle, et fermer la liste sans choisir laisse le champ sélectionné, prêt pour autre chose. À la création de la note, le curseur se pose déjà sur le premier champ ; de là, Tab et Shift+Tab passent de champ en champ — la barre d’état indique lequel est actif —, Alt+↓ ouvre la liste d’un choix au clavier, et Échap (ou quitter la ligne du champ) rend au Tab son rôle habituel. Dans le modèle lui-même, Voir la syntaxe est activé : les champs apparaissent sous la forme {{…}} avec une bordure pleine, et le clic place le curseur à l’intérieur, pour corriger la question ou les options ; désactivé, le modèle ressemble à la note qui en naîtra. Les six champs sont aussi dans le menu / et dans Insérer → Champs du modèle — uniquement dans les fichiers de modèle. Dans l’éditeur de texte, le champ apparaît tel qu’il est dans le fichier, avec les accolades en couleur, et le correcteur n’y entre pas.

Créer des fichiers

Créer un fichier en choisissant son type. Le menu Nouveau (☰ Fichier, le bouton Nouveau de la barre d'activités ou Créer dans le menu contextuel d'un dossier) propose Nouvelle note (.md), Nouveau fichier texte (.txt) et le sous-menu Nouveau fichier de code avec les langages les plus courants. Dans tous les cas le fichier est créé sur le disque immédiatement avec un nom par défaut, et l'arborescence ouvre l'édition du nom : seul le nom est présélectionné, donc taper un titre n'efface pas l'extension. Pour accepter le nom proposé, il suffit de cliquer dans l'éditeur et de commencer à écrire. Pour une extension absente du sous-menu, créez un fichier et renommez-le (F2) : changer l'extension change la vue — renommer .txt en .md rouvre le même onglet en note, avec la vue de lecture et le sommaire, et l'inverse ramène l'éditeur de code. Les extensions propres à LightNote (.lnc, .lne, .lnq, .lnh, .lns et les bundles) font exception : l'extension y déclare le format du contenu, donc renommer demande confirmation et est refusé tant que l'onglet est ouvert.

Un fichier neuf que vous n'avez pas utilisé. Si vous fermez l'onglet d'un fichier tout juste créé sans le nommer, sans l'enregistrer et sans rien saisir, il part à la Corbeille et la barre d'état propose Annuler — ainsi un Nouveau déclenché par erreur ne laisse rien dans le dossier. Tout signe que le fichier est le vôtre le rend permanent : le renommer, l'enregistrer (Ctrl+S) ou y taper quoi que ce soit.

Le brouillon est un éditeur Markdown. L'onglet Brouillon (qui n'est pas un fichier sur le disque) utilise le même éditeur de texte que vos notes : coloration du balisage, correcteur orthographique, complétion de [[ et Ctrl+clic sur les wikilinks et les étiquettes. Ce qu'il n'a pas ne change pas : il n'y a pas de fichier, donc pas d'enregistrement automatique ni de modes d'affichage ; le contenu survit à la fermeture de l'application et disparaît si vous fermez l'onglet.

Où le nouveau fichier est créé. Nouveau crée toujours dans le dossier marqué de l'Explorateur, et il y en a toujours exactement un de marqué. En haut de l'arborescence se trouve la ligne du dossier racine, portant le nom de l'espace de travail : c'est un élément comme les autres — cliquez dessus pour ramener la destination à la racine. Sélectionner un dossier y déplace la marque ; sélectionner un fichier marque le dossier qui le contient. En mode Liste, qui n'affiche pas de dossiers, la marque reste sur la ligne racine et cette ligne affiche la destination effective. Le menu contextuel de la ligne racine propose Créer et Créer un dossier.

Fichiers isolés et favoris

Pour ouvrir un fichier isolé sans en faire un espace de travail, utilisez Ouvrir un fichier isolé… (menu de la zone de notification) : la fenêtre autonome affiche l'arborescence des fichiers, mais sans Git, MCP ni remplacement de thème. Si activé dans Paramètres → Général → Fonctionnalités, LightNote s'intègre au menu de l'Explorateur Windows (par utilisateur, sans droits d'administrateur) : en plus de la liste « Ouvrir avec », le menu contextuel gagne « Ouvrir avec LightNote » sur tout fichier et « Ouvrir comme espace de travail LightNote » sur les dossiers (sous Windows 11, dans Afficher plus d'options). Les fichiers s'ouvrent dans cette fenêtre autonome ; les dossiers, comme espace de travail.

Si vous sélectionnez plusieurs fichiers à la fois dans l'Explorateur Windows — même dans des dossiers différents — ils s'ouvrent tous dans la même fenêtre autonome, onglet après onglet (au lieu d'une fenêtre par fichier). Les onglets de cette fenêtre sont mémorisés : fermez-la puis rouvrez-la, et les mêmes fichiers reviennent. Comme l'essentiel ici, ce sont les onglets, l'arborescence des fichiers démarre repliée — utilisez Ctrl+B (ou le bouton en haut de la barre d'activité) pour l'afficher.

Revenir à une session. La fenêtre des fichiers isolés s'appelle Fichiers isolés partout — y compris dans la barre de titre, là où les autres fenêtres affichent le nom de l'espace de travail, pour les distinguer dans Alt+Tab. Dans le menu de la zone de notification, sous Ouvrir, l'élément reçoit le suffixe (N onglets) lorsqu'il y a des onglets enregistrés — un clic les ramène tous. C'est aussi la première ligne du launcher, à côté des espaces de travail. Et à la réouverture, LightNote revient avec tout ce qui était ouvert quand vous avez quitté : chaque fenêtre dans son dossier, plus la fenêtre isolée. Pour n'ouvrir que le dernier dossier utilisé, changez cela dans Paramètres → Général → Interface → Au démarrage, ouvrir. Une fenêtre fermée avant de quitter est laissée de côté : la fermer, c'est dire « j'en ai fini avec cet espace ».

Favoris : la barre latérale a une section Favoris avec ce que vous avez épinglé (menu contextuel de l'arborescence ou d'un onglet → Ajouter aux favoris) ainsi que les fichiers récemment ouverts. Les éléments épinglés sont par dossier et enregistrés en chemins relatifs, ils survivent donc au déplacement de l'espace de travail.

Ouvrir un onglet dans sa propre fenêtre : dans le menu contextuel de l'onglet, Ouvrir dans une nouvelle fenêtre rouvre ce fichier dans une fenêtre indépendante (pratique pour garder une note à côté du code). Les types qui dépendent de l'espace de travail (.lnc, .lne, .lns et les bundles) ne peuvent pas être détachés.

L'Explorateur

Déplacer un fichier dont l’onglet est ouvert. Faire glisser le fichier vers un autre dossier dans l’arborescence emmène l’onglet avec lui — il reste ouvert, pointé sur le nouvel emplacement —, et il en va de même pour couper-coller et pour le déplacement d’un dossier entier, auquel cas les onglets des fichiers qu’il contient le suivent. En maintenant Ctrl, le glisser copie au lieu de déplacer. Hors de LightNote, le glisser COPIE toujours : emmenez un fichier de l’arborescence — ou faites glisser l’onglet lui-même depuis la barre d’onglets — vers un dossier de Windows, un e-mail ou une conversation Teams, et l’original reste dans votre espace de travail. Dans le programme, un onglet reste un simple onglet : le faire glisser vers un autre panneau déplace l’onglet, et passer avec lui au-dessus de l’éditeur ou de l’arborescence n’écrit ni ne déplace quoi que ce soit.

Sélection multiple. L'arborescence accepte Ctrl+clic (individuel) et Shift+clic (plage) dans les trois modes d'affichage. Avec plusieurs éléments sélectionnés, le menu contextuel agit sur toute la sélection : Couper et Copier (en interopérant avec l'Explorateur Windows), Supprimer (une seule confirmation pour tous), Dupliquer, Copier l'empreinte, Compresser en .zip (une seule archive, chaque élément sous son propre nom à la racine), Appliquer une couleur, Favoris, Git (add/restore) et Copier les chemins (une ligne par élément). Les actions qui n'ont de sens que pour un élément — renommer sur place, Propriétés, Ouvrir comme, Convertir — sont désactivées, avec la raison dans l'infobulle. Un clic droit dans la sélection la conserve ; un clic en dehors ne sélectionne que l'élément cliqué. Sélectionner un dossier et quelque chose à l'intérieur n'exécute pas l'opération deux fois : l'élément intérieur est écarté.

Jeter un œil sans ouvrir. Un simple clic sur un fichier ouvre déjà un onglet d'aperçu (réutilisé, en italique dans la barre d'onglets). En parcourant l'arborescence avec les flèches, la touche Espace fait de même et redonne le focus à l'arborescence, pour continuer à descendre la liste.

Outils de fichier. Le menu contextuel de l'Explorateur propose un sous-menu Outils de fichier : Renommage par lot (filtre par extension/joker/regex + un pipeline de règles avec aperçu en direct et détection de collisions), Diviser le fichier (par lignes, taille ou séparateur regex), Fusionner des fichiers (en ne gardant que le 1er en-tête CSV, en option), Dupliquer, Copier le hachage (MD5/SHA-256) et Compresser en .zip / Extraire ici. Avec plusieurs éléments sélectionnés, Renommer par lot et Fusionner des fichiers reçoivent exactement les éléments choisis (au lieu de parcourir le dossier) — et Fusionner respecte l'ordre de la sélection.

Navigation de la fenêtre isolée. Au-dessus de l'arborescence, des boutons précédent (Alt+←), suivant (Alt+→) et dossier parent, ainsi qu'un chemin cliquable — chaque segment mène à ce niveau. Les boutons latéraux de la souris reculent et avancent aussi. Pour saisir un chemin, cliquez dans le vide de la bande ou utilisez Ctrl+L ; Échap annule et rétablit le chemin. Changer d'onglet déplace aussi le dossier affiché : comme la fenêtre autonome rassemble des onglets de dossiers différents, cliquer sur un onglet navigue vers son dossier.

Menus et zoom

Menus. Le bouton ☰ (en haut de la barre d'activités) regroupe les menus Fichier, Édition, Affichage, Fenêtre, Outils, IA et Aide. Les actions d'IA ont leur propre menu (également sur le bouton baguette de la barre d'activités). Dans Outils, les groupes sont en sous-menus : Exécuter (F5/F6/F8, lint, envoyer au terminal, macros), Capturer (note du jour, capture rapide, tâche rapide, enregistrer l'audio, notes autocollantes) et Espace de travail (configuration, instantané, exporter une copie, déplacer le dossier) — ce dernier aussi dans le menu de l'engrenage. Le menu Nouveau est identique aux trois endroits où il apparaît : ☰ Fichier, le bouton Nouveau et Créer dans le menu contextuel d'un dossier.

Zoom, dans toutes les vues. Le niveau de zoom tient en un seul endroit : le groupe − 100% + à droite de la barre d'état. Le bouton du milieu ouvre la liste standard — Ajuster à la largeur et Ajuster à la fenêtre (seulement là où le contenu a une taille propre, comme le PDF et les images), les niveaux 200%, 150%, 120%, 100%, 75% et 50%, et Personnalisé… —, avec une marque sur l'élément actif. Les raccourcis sont les mêmes dans toutes les vues qui ont un zoom (code, notes, PDF, images, HTML et feuilles de calcul) : Ctrl++, Ctrl+−, Ctrl+0 pour revenir à 100% et Ctrl+molette. Dans une vue sans zoom, le groupe n'apparaît tout simplement pas ; sous un ajustement, l'étiquette affiche Largeur ou Fenêtre au lieu d'un pourcentage. Le zoom appartient à l'onglet, pas au fichier : un onglet resté inactif dont la mémoire a été libérée — ou qui est revenu à la réouverture de LightNote — retrouve le zoom que vous aviez laissé ; rouvrir le fichier depuis zéro repart à 100%.

Éditeur de code

Ouvrir, colorer et formater

Les fichiers texte/code s'ouvrent dans l'éditeur (Scintilla) avec coloration syntaxique. Il y a commenter/décommenter (Ctrl+/), déplacer et dupliquer une ligne, des signets (Ctrl+F2), une liste de symboles/fonctions, l'autocomplétion par les mots, des guides d'indentation, le retour à la ligne, le zoom et la détection des changements du fichier sur le disque. Avec le suivi de version activé, la marge signale les lignes ajoutées/modifiées depuis la dernière version.

Il y a aussi des macros (enregistrer/rejouer une séquence de modifications avec Ctrl+Shift+R / F4, dans Outils → Macros), formater/beautify (Shift+Alt+F), une table ASCII dans la barre d'outils de l'onglet (pour insérer des caractères/traits de cadre) et un correcteur orthographique (Hunspell). Le pt-BR et l'en-US sont intégrés ; les autres langues se téléchargent à la demande depuis le tableau de Paramètres → Notes et écriture → Orthographe (une ligne par langue, avec un bouton Télécharger/Supprimer). Pour suivre un fichier journal en cours d'écriture, utilisez le bouton Surveiller (tail -f) dans la barre d'outils de l'onglet. Les très gros fichiers (au-delà d'environ 1 Mo) s'ouvrent dans un éditeur léger virtualisé qui ne charge que les portions visibles ; vous pouvez le forcer via Fichier → Ouvrir dans l'éditeur léger…

Formater et vérifier (linters) : Shift+Alt+F formate le document avec le formateur externe du langage (black, prettier, clang-format, gofmt, rustfmt…) lorsqu'il est installé, en se repliant sur le formateur interne (JSON/XML) hors ligne ; F7 exécute le linter du langage (ruff, eslint, shellcheck, luacheck…) et marque les problèmes d'un soulignement dans l'éditeur et dans le panneau Problèmes (volet inférieur, navigable). Les deux disposent d'un catalogue avec Ajouter dans Paramètres → Formatage et → Linters, ainsi que des options formater à l'enregistrement / vérifier à l'enregistrement. Exécutez le fichier dans le panneau de sortie avec F6 (capture le code de sortie et la durée, avec arrêt/redémarrage) ou juste un extrait avec F8.

Un .md ouvert comme code redevient une note en un clic. La barre de l'éditeur affiche Ouvrir comme note quand le fichier ouvert est une note — l'inverse de Ouvrir comme → Code du menu de l'arborescence. L'onglet revient à la vue note, avec édition formatée, lecture, sommaire et propriétés. Le bouton n'apparaît que si le changement est possible : une note trop grande reste dans l'éditeur de code.

Multi-curseur, historique et définition

Autres fonctions d'édition : multicurseur par occurrence (Ctrl+D, toutes avec Alt+F3), dupliquer la ligne (Ctrl+Shift+D), joindre les lignes (Ctrl+Shift+J), étendre/réduire la sélection par portée (Ctrl+Shift+Espace / Ctrl+Alt+Espace), sélection rectangulaire (Alt+glisser), plier/déplier tout, extraits/snippets (Ctrl+J, modifiables dans Paramètres → Éditeur), Aller au symbole dans le fichier (# dans la palette) et dans le projet (Ctrl+T ou ##), historique de navigation (Alt+←/→), un fil d'Ariane (breadcrumbs) en haut de l'éditeur, des règles de colonne, la coloration des paires de parenthèses, la fermeture/entourage automatique des paires et le nettoyage à l'enregistrement (rogner les espaces, saut de ligne final) — le tout dans Paramètres → Éditeur.

Historique local et presse-papiers : à chaque enregistrement, LightNote conserve une version du fichier (Fichier → Historique local…, restaurable), indépendamment de Git. Ctrl+Alt+V ouvre l'historique du presse-papiers pour coller un élément copié précédemment. Ctrl+Shift+T rouvre le dernier onglet fermé ; les onglets peuvent être épinglés (menu contextuel), ce qui les protège de la libération en cas d'inactivité.

Aller à la définition : F12 ou Ctrl+clic sur un identifiant saute à l'endroit où il est défini dans le projet ; Shift+F12 localise ses utilisations.

Minimap et opérations de texte

Minimap. Une miniature du document entier occupe le bord droit de l’éditeur : elle montre la « forme » du code (les couleurs de la coloration syntaxique en réduction) et marque la zone visible. Cliquez ou faites glisser dessus pour aller n’importe où dans le fichier. Activez-la dans Affichage → Minimap ou dans Paramètres → Éditeur. Le bouton Minimap de la barre de l’onglet de code (à côté d’ASCII) l’active ou la désactive sans quitter l’éditeur. Une bande de repères longe le bord gauche de la miniature : en bleu les lignes marquées d’un signet (le même point que dans la marge) et en ambre les occurrences de la recherche rapide — vous voyez d’un coup d’œil comment elles se répartissent dans tout le fichier, y compris hors écran.

Opérations sur le texte. Le menu Édition — et le menu contextuel de l'éditeur — contiennent les sous-menus Lignes (déplacer, dupliquer, supprimer, trier, joindre, inverser, numéroter) et Nettoyage (rogner les espaces, supprimer les lignes vides/dupliquées, tabulations ↔ espaces). Avec une sélection, le menu contextuel propose aussi Enregistrer la sélection dans un nouveau fichier… : l'extrait est écrit dans un fichier à côté de l'actuel et ouvert dans un onglet (l'original n'est pas modifié).

Markdown et wikilinks

Modes d'affichage

Les notes .md s'ouvrent avec l'éditeur et la lecture côte à côte (configurable). Le balisage est atténué en dehors du paragraphe du curseur pour que la page ressemble à un document fini.

Raccourcis : Ctrl+B/Ctrl+I appliquent gras/italique et Ctrl+E fait défiler le mode d'affichage (édition → partagé → mise en forme → lecture).

Le menu / : dans l'éditeur formaté, tapez / en début de ligne (l'indentation est admise) ou après une espace : la liste d'insertion s'ouvre au curseur. Tapez pour filtrer (/table, /encadré, /h1), choisissez avec ↑/↓ et insérez avec Entrée ; Échap ou Espace ferment la liste et ce que vous avez tapé reste sous forme de texte. La colonne de droite montre le balisage écrit par chaque entrée, pour que vous puissiez le taper directement la prochaine fois. Le menu ne s'ouvre pas dans un bloc de code, une formule ou une cellule de tableau.

Mode lecture : le dernier mode de Ctrl+E est le même écran que l'édition mise en forme, mais en lecture seule — c'est pourquoi il peut afficher ce que le fichier ne contient pas : le sommaire du jeton [TOC]. La liste du dossier du jeton [files] et le corps des notes transcluses avec ![[note]] apparaissent aussi dans l'édition mise en forme. Rien de tout cela n'est écrit dans le .md : le fichier conserve le jeton, et le texte généré n'accepte pas la modification. Dans ce mode, un simple clic suit les liens, les wikiliens et les étiquettes (sans Ctrl), et les boutons d'édition sont désactivés — y compris annuler, couper et coller, qui agissaient auparavant sur l'éditeur de texte hors écran. Copier reste actif et copie ce que vous voyez. Ctrl+F cherche dans ce qui est à l'écran ; la ligne remplacer est désactivée, avec le motif dans l'infobulle, car un remplacement ici n'arriverait jamais au fichier.

Des calculs avec unité, en lecture. Une ligne finissant par = reçoit le résultat : 3,5 km / 2 s = apparaît comme 3,5 km / 2 s = 1,75 km/s. Le fichier ne change pas — même idée que le [TOC] et la citation mise en forme. Elle fait l'analyse dimensionnelle, et c'est ce qui la justifie : 1 km + 1 s = est refusé en nommant les deux, car une calculatrice qui répondrait 2 là ne serait pas pire : elle mentirait, et dans un cahier de laboratoire l'erreur survivrait jusqu'à l'article. Additionner la même grandeur en unités différentes fonctionne et convertit (2 h + 30 min =), et le résultat sort dans l'unité que vous avez écrite. Elle connaît les préfixes du SI, les constantes physiques (c, h, k_B, N_A, g…), la conversion explicite (3 km in m, aussi to et ->) et l'incertitude : (2,00 ± 0,05) m / (1,0 ± 0,1) s = propage l'erreur et n'écrit que les chiffres que la mesure permet. Le code et les formules restent dehors — dans une clôture ```, entre accents graves ou dans un $…$, le = de fin de ligne est la syntaxe d'autre chose. Et une ligne qui n'est pas un calcul (Total =) reste telle quelle, en silence. Elle est désactivée : activez-la dans Paramètres → Fonctions → Académique → Calculatrice avec unités.

Cartes en répétition espacée. Une note qui reçoit l'étiquette #flashcards devient un paquet : à l'intérieur, chaque ligne Question::Réponse est une carte, ::: crée aussi la carte inverse, un ? seul entre deux lignes fait la carte multiligne, et ==comme ça== devient un trou. Sans l'étiquette, aucune note n'a de cartes — c'est ce qui empêche un std::vector d'une note de programmation de devenir une carte que vous n'avez pas écrite. Outils → Cartes → Réviser les cartes ouvre la session : la réponse reste cachée jusqu'à ce que vous la demandiez (c'est tout le principe — voir les deux ensemble, c'est relire, et relire ne fixe rien), et les quatre notes portent écrit dessus combien de temps chacune achète. La planification est le FSRS, l'algorithme d'Anki. L'identité d'une carte est sa QUESTION : corriger la réponse ne touche pas à la planification, et réécrire la question met cette carte à la retraite et en commence une autre — ce qui est juste, car la question est ce que vous apprenez. L'historique vit dans un fichier ouvert à côté de la note (note.md.cards.ndjson) : versionnable avec Git et lisible dans n'importe quel éditeur, au prix d'un fichier de plus dans le dossier. Exporter vers Anki écrit le fichier texte qu'il importe — la planification ne suit pas, car l'importateur de texte d'Anki ne l'accepte pas ; elle reste dans les .ndjson.

Blocs de code

Le bloc de code ressort en couleur. Une clôture avec le langage déclaré (```python) voit son contenu coloré jeton par jeton, avec les mêmes couleurs que l'éditeur de code — y compris le thème de code choisi pour cette fenêtre. Cela vaut dans l'édition formatée, le mode lecture, le fichier exporté et les réponses de Interroger les notes. Une clôture sans langage déclaré reste monochrome, et un langage sans coloration disponible aussi : le texte ne disparaît jamais.

Replier, épingler et exporter

Replier des sections et épingler le titre valent aussi en mode formaté et en lecture. Ctrl+Shift+[ replie la section du curseur et Ctrl+Shift+] la déplie ; cliquer sur la petite flèche à gauche du titre fait la même chose, et Affichage → Replier/Déplier tous les titres agit sur la surface au premier plan. Pendant le défilement, les titres sortis par le haut restent épinglés dans un bandeau — cliquez sur l'un d'eux pour sauter à sa section. Replier est un état d'écran : le .md ne change pas et le texte replié reste dans le fichier.

Exporter : le PDF et le HTML sont générés à partir du même document que le mode lecture — le fichier obtenu est ce que vous venez de lire, avec le sommaire, la liste du dossier et les transclusions. Le HTML est autonome (les images locales y sont intégrées) et le PDF contient du texte vectoriel, donc restant consultable. Le HTML sort avec un balisage sémantique — titre avec ancre, encadré en <aside>, tableau avec en-tête, note de bas de page avec retour — et les formules en MathML : du vrai texte, qui se copie, se lit à voix haute et ne pixellise pas au zoom. Le thème suit chaque format : le HTML conserve les couleurs que vous voyez à l'écran, thème sombre compris (le fichier porte son propre fond) ; le PDF part toujours sur papier clair, car il est fait pour être imprimé et envoyé — si votre thème de contenu est sombre, il est imprimé avec le thème clair par défaut, et un thème clair que vous utilisez déjà est conservé. Word, OpenDocument, LaTeX, Typst et EPUB sont produits par LightNote lui-même, sans rien installer. Le .docx et le .odt sortent avec titres, listes, tableaux, notes de bas de page, images et les formules en équations modifiables — équations Word dans l'un, objets LibreOffice Math dans l'autre ; le .tex contient un préambule complet et compile avec pdfLaTeX, XeLaTeX et LuaLaTeX. Si le dossier a une bibliographie et que la section Académique est activée, le .tex sort avec la citation vivante : [@clé] devient \autocite, le jeton [bibliography] devient \printbibliography, et un refs.bib avec les ouvrages cités est écrit à côté — l'application vous le dit. Compilez avec biber. Le .typ est la même idée en Typst, qui compile en quelques secondes sans distribution LaTeX installée : les formules voyagent en LaTeX via le paquet mitex (téléchargé à la première compilation) et la citation sort en @clé avec #bibliography. Le .epub est le livre numérique : un chapitre par titre de niveau 1, sommaire de navigation, images en fichiers du paquet et le même balisage sémantique que le HTML. Le .ipynb est le notebook Jupyter : le texte devient une cellule de texte et le bloc dans le langage du noyau devient une cellule de code — celui-là seulement, car une cellule de code est envoyée au noyau, et un diagramme Mermaid transformé en cellule s'exécuterait comme du Python la première fois qu'on le lancerait. Le noyau vient de la clé kernel dans les propriétés de la note, ou du bloc le plus fréquent. La sortie n'est pas inventée : les cellules sortent sans résultat, parce qu'un résultat vient d'une exécution — la même règle que l'import de notebook suit déjà en écartant les sorties enregistrées. Et il y a Markdown pour… : la même note dans le dialecte de la destination — alerte > [!NOTE] sur GitHub, !!! note sur MkDocs, :::note sur Docusaurus, ::: {.note} sur Pandoc, l'écriture d'Obsidian ou CommonMark strict. Le wikilien devient un lien relatif (hors Obsidian) et le commentaire %%…%% n'est pas publié, parce qu'il est privé. Avec Typst installé (winget install --id Typst.Typst), l'export propose Compiler le PDF sur place ; sans lui, le bouton devient Installer Typst..., qui ouvre le guide. Si le cours ou le client fournit un modèle Word, indiquez son .docx dans Paramètres de l'espace de travail → Citations et références → Modèle Word : le fichier exporté sort avec les styles, le format de papier, les marges et l'en-tête du modèle. Une note peut en utiliser un autre en déclarant reference-docx: modele.docx dans ses propriétés. Les trois partent du Markdown de la lecture — citations déjà mises en forme, figures numérotées — et ce qui ne passe pas est signalé à la fin de l'export. Le diagramme Mermaid et la structure chimique entrent en image — dessinés sur papier clair dans le .docx, l'.odt et l'EPUB, aux couleurs de l'écran dans le HTML — ; seul lnote, qui n'a pas de fenêtre pour les dessiner, les sort en bloc de code. Et il y a Texte balisé pour… : reStructuredText, AsciiDoc, Org mode, MediaWiki et texte brut, écrits eux aussi par LightNote. Chacun reçoit sa construction native, et non une imitation : l'encadré devient .. note:: dans Sphinx, [NOTE] dans AsciiDoc et #+begin_note dans Org ; la formule devient .. math::, latexmath:[], du LaTeX pur et <math> ; la note de bas de page devient footnote:[] et <ref>. Le texte brut ne porte aucun balisage — le tableau sort aligné en colonnes, pour tenir dans un courriel ou un message de commit. Ce que la destination n'a pas est signalé à la fin : MediaWiki n'a pas d'encadré d'avertissement dans son cœur (il devient une citation avec l'étiquette en gras) et reStructuredText n'a pas de texte barré. Pour emporter un extrait sans écrire de fichier, le menu contextuel de l'éditeur propose Copier la sélection en (ou Copier la note en, sans sélection) : texte mis en forme à coller dans Word, Google Docs ou un e-mail, Markdown de GitHub, LaTeX et Typst. LaTeX et Typst ne portent que le corps — ni préambule ni titre —, car la destination est un document qui les a déjà ; le paquet dont l'extrait a besoin et la citation qui dépend de la bibliographie de la destination sont signalés dans la barre d'état, et le commentaire %%…%% reste lui aussi de côté. Le RTF se trouve dans Autres formats (pandoc) et passe par pandoc, un programme séparé (winget install --id JohnMacFarlane.Pandoc) : sans lui, cette destination apparaît désactivée, avec la raison, et Installer pandoc... dans le même sous-menu ouvre le guide et fait l'installation. Si pandoc est déjà installé ailleurs, indiquez le fichier avec Je l'ai déjà : localiser sur le disque... dans le guide, ou dans Paramètres → Outils de code → Programmes externes.

Exporter avec options... est le premier élément du menu d'export — celui de l'onglet et celui de Fichier → Exporter la note sont le même menu. Il liste toutes les destinations, avec une recherche qui trouve le nom, l'usage et l'extension (wiki trouve MediaWiki, sphinx trouve reStructuredText), et n'affiche que les options valables pour la destination choisie : Table des matières au début, quand la note n'a pas encore de [TOC] ; Langue du document, qui décide la césure et les libellés que le document génère lui-même ; Citations vivantes ou résolues dans le texte, pour LaTeX et Typst ; le Modèle Word, avec la case qui en fait le modèle par défaut du dossier ; les Formules du HTML et de l'EPUB en MathML ou en image, pour les liseuses anciennes ou le HTML collé dans un e-mail ; le Papier du PDF, A4 ou Lettre ; et Compiler le PDF avec Typst juste après. Une option valable mais inutilisable reste désactivée avec la raison — citations vivantes sans bibliographie dans le dossier —, et une destination qui dépend d'un programme absent propose de l'installer sur place. Le dernier choix est mémorisé par dossier et la boîte de dialogue se rouvre comme vous l'avez laissée ; les éléments directs du menu continuent d'exporter avec les valeurs d'usine, pour qu'un choix fait des semaines plus tôt ne change pas le fichier d'un raccourci. Le [TOC] écrit dans la note vaut pour toutes les destinations : il devient la table des matières de Word et de LibreOffice (Word la met à jour à l'ouverture), \tableofcontents en LaTeX, #outline() en Typst et la liste de liens en HTML et en Markdown. Dans le texte mis en forme de Copier la sélection en, la formule et le diagramme partent en image, avec la source LaTeX en texte alternatif : on ne sait pas où le texte sera collé, et seule une image s'affiche pareil dans Word, Google Docs et un e-mail — pour l'équation modifiable, exportez le .docx ou l'.odt.

Le dossier entier sort aussi : Fichier → Exporter le dossier... (ou le clic droit sur un dossier de l'arbre) transforme ses notes en un site HTML — une page par note, avec un index quand aucune note n'est déjà devenue index.html —, en un ensemble de .docx ou .odt, ou en une arborescence de Markdown dans le dialecte de la destination. La structure de sous-dossiers est préservée, les liens et wikiliens entre les notes pointent désormais vers les fichiers sortis (dans Word et LibreOffice aussi, d'un document à l'autre) et les images et pièces jointes qui vivent dans le dossier partent avec, au même endroit. Ce qui est en dehors n'est pas copié : cela reste tel que vous l'avez écrit, et le rapport de fin liste chaque cas, avec les liens sans cible. Le dossier de destination doit être vide — ou vous cochez Remplacer les fichiers portant le même nom — et ne peut pas contenir le dossier exporté. Sans fenêtre : lnote folder-export --path . --format html --out site, et l'outil folder_export via MCP ; là, la transclusion, le [files] et la numérotation des figures ne sont pas résolus, car c'est la fenêtre qui les résout.

Édition formatée

Édition mise en forme (WYSIWYG) : le quatrième mode montre la note telle qu'elle rend — titre au corps d'un titre, liste avec sa puce, tableau en grille et image au fil du texte — au lieu du balisage. Le fichier reste le même .md : c'est LightNote qui l'écrit, pas Qt, et c'est pourquoi gras, italique, wikiliens, transclusion et encadrés survivent à l'aller-retour. Entrer dans le mode et en sortir sans éditer ne change pas un octet du fichier. La barre n'offre que ce que Markdown représente — titre, gras, italique, barré, code, listes (avec case de tâche), citation, lien, tableau et filet horizontal ; l'alignement, le retrait et la taille de police restent dehors car ils seraient perdus à l'enregistrement.

Dans un tableau, Tab passe de cellule et crée la ligne suivante sur la dernière. Entrée dans le vide à côté du tableau — là où le curseur tombe quand on clique à droite d'une ligne — ajoute une ligne à la fin, avec le curseur dans la première cellule. Dans une cellule, Entrée coupe la ligne sur place (elle va au fichier sous la forme <br>, la seule que le tableau Markdown accepte) et Ctrl+Entrée crée la ligne du dessous, curseur dans la même colonne. En survolant le tableau apparaissent des poignées discrètes : à gauche de la ligne, une paire de flèches qui la monte ou la descend — et qu'on peut aussi faire glisser pour la porter ailleurs ; au-dessus de la colonne, la paire qui la déplace latéralement ; et un + sur le bord du bas et un autre sur celui de droite, qui ajoutent une ligne et une colonne. La première ligne est l'en-tête et ne bouge pas. Tout cela est aussi dans le menu contextuel, sous Tableau — qui contient aussi Supprimer le tableau, la façon sûre de l'enlever en entier.

Dans un encadré (<details> ou :::), la dernière ligne ferme l'encadré et ne s'efface pas : c'est elle qui empêche le contenu du dessous d'y être avalé. Pour le défaire en gardant le texte, utilisez Supprimer l'encadré dans le menu contextuel. Entrée crée toujours une ligne. Dans un élément de liste vide, elle sort de la liste sans ajouter de ligne — comme dans Word — et dans un paragraphe vide, elle crée la ligne vide. Une ligne vide du fichier est la séparation normale entre paragraphes et n'apparaît pas comme ligne vide ; à partir de la deuxième, si, et elle revient dans le fichier telle que vous l'avez écrite.

Faire glisser le bord droit d'une image la redimensionne, et la largeur part dans le fichier sous la forme ![alt|300](photo.png). La barre compte douze commandes : gras, italique et titre directement, plus deux menus qui répartissent le reste selon ce qu’ils font — Formater agit sur ce qui est déjà écrit (marques, listes, citation, aligner le tableau et les opérations de Texte) et Insérer crée du nouveau (lien, image, tableau, bloc, diagramme, formule, encadré). Formater le tableau et le menu Texte restent propres à l’éditeur de texte : ici ils apparaissent désactivés, avec la raison. Atténuer le balisage est passé au bouton Affichage, à côté de la colonne de lecture et du défilement machine à écrire, qui valent dans les quatre modes. Et le menu Insérer propose ici la même chose que dans l’éditeur de texte — surlignage, exposant, indice, wikilien, note de bas de page, encadré (callout), bloc repliable, sommaire et liste de définitions —, tout ce que ce mode savait déjà montrer et ne savait pas créer.

Ce que le mode lecture affiche, l'édition mise en forme l'affiche aussi. L'émoji :fire: apparaît comme 🔥, ==surligné== comme une marque jaune, ^2^ et ~2~ comme exposant et indice, #étiquette comme une pastille et une adresse web nue comme un lien. Le fichier garde la forme écrite : ouvrir la note ne réécrit rien. Modifier à l'intérieur d'un fragment rendu conserve le balisage — taper au milieu d'un surlignage continue de surligner — et ce qui est tapé juste après reste dehors. Le commentaire %%…%% reste visible, atténué : le cacher le rendrait invisible et non modifiable.

Les callouts deviennent une boîte aussi en édition mise en forme. Une citation commençant par > [!NOTE] — ou [!TIP], [!IMPORTANT], [!WARNING], [!CAUTION] — s'affiche avec une barre et un titre colorés, comme en mode lecture : le marqueur cède la place au libellé du type, ou à votre propre titre si vous écrivez > [!TIP] Mon titre. Le fichier conserve le marqueur écrit, et modifier le titre préserve le type du callout. Les noms d'encadré d'Obsidian et de MkDocs sont compris eux aussi : [!SUCCESS], [!ABSTRACT], [!FAILURE], [!QUESTION] et leurs alias (tldr, missing, faq) tombent dans l'encadré le plus proche, si bien qu'une note venue de là s'affiche déjà en couleur — et, à l'exportation, chaque destination reçoit le nom qu'elle connaît.

C’est le mode par défaut d’une nouvelle installation. Si vous utilisiez déjà LightNote, votre mode précédent est conservé ; pour le changer, allez dans Paramètres → Markdown → Vue par défaut à l’ouverture d’une note. Cliquer sur un titre dans le Plan effectue le saut dans le mode courant, sans vous sortir de l’édition mise en forme ni de la lecture.

Aligner la colonne d'un tableau. Le curseur dans le tableau, le menu contextuel propose Table → Aligner la colonne : À gauche, Centré, À droite ou Par défaut. L'alignement concerne la colonne entière — c'est ainsi que Markdown le représente — et part dans le fichier sur la ligne de séparation (:--, :-:, --:) ; Par défaut revient à ---. La coche du menu indique celui qui s'applique : à l'écran, une colonne --- et une :-- se ressemblent.

Le Plan montre ce qui est à l'écran. La liste des titres vient de la surface que vous regardez : en édition mise en forme, un titre à peine tapé apparaît aussitôt, sans attendre que le texte parvienne à l'éditeur de texte ; en mode lecture, elle inclut aussi les titres des notes transclues avec ![[note]], qui font partie de ce que vous lisez. Cliquer sur un élément mène au bon titre dans les deux cas. Et en mode divisé le défilement est désormais à double sens : faire défiler la lecture entraîne l'éditeur de texte, comme c'était déjà le cas dans l'autre sens.

Le balisage devient de la mise en forme à la frappe. Écrire **test** applique le gras et supprime les astérisques ; il en va de même pour *italique*, ~~barré~~, `code` et les formes avec tiret bas. En début de ligne, #  à ######  deviennent des titres, -  et 1.  des listes (le numéro tapé est le départ), - [ ]  une tâche à cocher, >  une citation, et --- seul devient un filet horizontal avec Entrée. Les marqueurs qui dessinent quelque chose agissent dès l'espace ; seul le titre attend la première lettre, parce qu'un titre vide ne montrerait rien. Ctrl+Z n'annule que la conversion et rétablit le balisage littéral — la porte de sortie pour qui voulait vraiment les astérisques. Coller convertit aussi : un texte avec balisage collé arrive mis en forme, sans les marqueurs. La règle est ici plus prudente qu'à la frappe — seul un balisage sans ambiguïté déclenche — car en collant on ne voit pas le résultat se former : ainsi un extrait de code, plein de * et de _, reste du code. Rien n'est converti dans un bloc de code, car le balisage y est le sujet. Pour tout désactiver : Paramètres → Général → Convertir le balisage à la frappe. De Word, de Google Docs ou d'une page, ce qui arrive est le texte avec sa structure : titre, liste (y compris celle de Word, qui en dessous n'est pas une liste), tableau, lien, code dans la ligne et bloc de code avec le langage. La police, la taille et la couleur de l'origine restent dehors : le Markdown ne les représente pas, et les garder laisserait un passage en Arial bleu qui disparaît à l'enregistrement. L'image qui vient avec devient une pièce jointe de la note quand Word ou le navigateur l'a laissée dans le dossier temporaire, qui se vide tout seul ; celle qui pointe vers Internet continue d'y pointer, et son menu contextuel propose Télécharger l’image dans l’espace de travail.

Images, liens et wikiliens

Image et lien. Trois chemins pour insérer une image : Insérer → Image… dans la barre, taper ![](photo.png), ou faire glisser le fichier dans la note — une image insère l'image, une note .md insère un [[wikilien]], et tout autre fichier devient un lien cliquable dont le libellé est le nom du fichier — et si vous en déposez plusieurs d'un coup, chacun va sur sa propre ligne. Le chemin enregistré est relatif au dossier de la note dès que possible, pour que la note continue de fonctionner après un déplacement du vault. L'adresse d'un lien n'apparaît pas dans le texte (on voit le libellé) : elle s'affiche donc dans la barre d'état au survol, et Ctrl+clic l'ouvre — une adresse web dans le navigateur, un chemin local dans LightNote.

Modifier un lien existant : placez-y le curseur et utilisez le bouton Lien (ou Modifier le lien… dans le menu contextuel) — la fenêtre s'ouvre avec le texte et l'adresse remplis. Le menu contextuel sur un lien propose aussi Copier l'adresse du lien et Supprimer le lien, qui défait le lien en gardant le texte. Sur un [[wikilien]] il propose Ouvrir la note et Copier la cible ; sur une #étiquette, Rechercher l'étiquette et Copier l'étiquette. Sur une image il y a Texte alternatif… — invisible en mode formaté, mais il part dans le fichier et dans la recherche — et, une fois la poignée tirée, Taille d'origine, qui rend à l'image sa propre taille. Sur une image ayant une adresse web apparaît Télécharger l'image dans l'espace de travail : le fichier va dans Pièces jointes/ à côté de la note, et la note pointe dessus — sinon elle dépendrait de la survie de cette URL. Et il y a le chemin le plus court de tous : sélectionnez un texte et collez une adresse — elle devient [texte](adresse) au lieu de remplacer la sélection. Cela vaut dans les deux surfaces d'édition. Tant qu'elle n'est pas téléchargée, l'image du web apparaît comme une carte avec l'adresse et le chemin du menu — LightNote ne va pas sur le réseau pour rendre une note, et l'endroit portait auparavant le cadre vide d'image cassée, sans rien dire de ce qu'il faut faire.

Et le balisage peut être défait. Dans le menu Format, les entrées Surlignage, Exposant et Indice apparaissent cochées quand le curseur se trouve à l'intérieur de l'une d'elles, et cliquer là retire le balisage au lieu de l'appliquer à nouveau. Au clavier, il y a le chemin rapide : avec le curseur à la fin d'un fragment mis en forme, Ctrl+Shift+Retour arrière rend le balisage littéral moins un caractère — gras devient **gras* en texte ordinaire — et compléter le délimiteur manquant le reforme. Cela vaut pour gras, italique, barré, code, surlignage, exposant et indice. La touche Retour arrière seule efface une lettre, là comme partout ailleurs.

Modifier le diagramme sans quitter la note. Un diagramme Mermaid ou une formule $$…$$ apparaissent dessinés dans l'éditeur mis en forme ; pour atteindre la source, placez le curseur dessus et appuyez sur Ctrl+Entrée — ou passez par Modifier ce bloc… dans le menu contextuel. La barre du bas montre le texte, la note reste verrouillée tant qu'elle est ouverte, et la fermer (✕, Esc, Ctrl+Entrée, un clic dans la note) applique : le chemin de retour est Ctrl+Z. Dans le même menu, Extraire vers une nouvelle note… écrit le passage sélectionné dans une note à côté de celle-ci et laisse un [[wikilink]] à sa place — le balisage suit, donc titre, liste et tableau arrivent entiers dans la nouvelle note. Le champ ne montre que le contenu : les lignes ```mermaid et ``` (ou les $$) sont devenues le sélecteur de type dans l’en-tête de la barre, qui bascule aussi entre diagramme, formule et bloc de code. La touche Entrée conserve l’indentation de la ligne, ce qui dans un langage indenté comme Mermaid est le geste de chaque ligne. Et le menu contextuel du bloc propose Copier le code Markdown et Copier l’image — le code se colle dans n’importe quel éditeur Markdown et se redessine ; l’image se colle dans un courriel ou un chat. Les deux valent aussi en lecture seule.

Demander la modification à l'IA. La barre du bloc ouverte, le bouton IA de l'en-tête ouvre une ligne où vous écrivez ce qu'il faut changer — « ajoute un chemin d'erreur qui revient au début », « remplace la somme par une intégrale » — et Entrée l'envoie. À côté du champ, un bouton indique quelle IA va répondre : son menu change d'assistant pour ce bloc seulement, sans toucher à votre IA par défaut, et contient Voir ce qui sera envoyé. Cela vaut le coup d'œil, car l'IA reçoit le bloc, le titre et la section de la note et le texte alentour — c'est ce qui permet de demander que le diagramme reflète ce qui est écrit là. La réponse arrive dans le champ et le dessin est refait aussitôt : Ctrl+Z ramène ce que vous aviez écrit. LightNote vérifie la réponse avec son propre moteur de rendu et, quand elle ne dessine pas, demande une correction en indiquant au modèle la ligne et la commande refusées — si cela échoue aussi, il écrit la réponse quand même et laisse la raison dans la barre, pour que vous corrigiez les deux lignes à la main. Le bouton n'apparaît que sur un diagramme, une formule et une structure chimique.

Pointer vers une section, et étiqueter depuis les propriétés. [[Note#Section]] ouvre la note à cette section — l'ancre nomme le texte du titre — et ![[Note#Section]] n'inclut qu'elle (jusqu'au titre suivant de même niveau ou supérieur, sous-titres compris). Une ancre qui ne correspond à aucun titre le dit dans la barre d'état, et l'inclusion reste telle quelle : y amener la note entière reviendrait à livrer autre chose en silence. Et les tags: du frontmatter comptent désormais comme étiquettes de la note, dans les deux écritures (tags: [a, b] et la liste sur ses propres lignes) — elles arrivent aux Bases, à la recherche par étiquette et à ce que voit l'assistant, avec les #étiquettes du corps. Sans nom de note, l'ancre pointe vers la note elle-même : [[#Conclusion]] saute à cette section sans ouvrir d'onglet, et ![[#Conclusion]] amène la section là où vous êtes. Et les ancres s'imbriquent : [[Thèse#Méthode#Échantillon]] est l'Échantillon situé dans Méthode, et non le premier de ce nom dans la note. La troisième forme pointe vers un bloc : une ligne qui se termine par ^id (ou un ^id seul juste sous le bloc) est la cible de [[Note#^id]]. LightNote ne crée pas ces identifiants — il vous emmène vers ce que vous avez écrit. Et l'ancre d'une cible qui n'est pas une note est l'adresse à l'intérieur de celle-ci : [[article.pdf#page=3]] ouvre le PDF à cette page.

Le panneau Étiquettes. La bande de la barre latérale a une section Étiquettes : l'arbre de toutes les #étiquettes de vos notes, imbriquées par / (#projet/alpha et #projet/beta deviennent des branches de projet), avec le nombre de notes à côté — comptées par note, pas par occurrence. Sélectionner une étiquette liste en dessous les notes qui la portent (un parent montre aussi celles de ses branches) ; un double-clic ouvre la note. Le panneau lit l'index : il voit donc les deux sources, les #étiquettes du corps et les tags: du frontmatter. Ctrl+clic sur une étiquette dans une note ouvre ce panneau avec elle sélectionnée — avant, cela ouvrait la recherche textuelle de #étiquette, qui ne trouve pas la note qui la déclare dans le frontmatter. Pour l'occurrence littérale dans le texte, utilisez la recherche globale.

Wikilinks : tapez [[ pour autocompléter avec les notes de l'espace de travail ; le lien se ferme tout seul avec ]]. Maintenez Ctrl et cliquez sur un [[note]] pour ouvrir la note correspondante. Le panneau Connexions montre les liens entre les notes. La figure intégrée d'Obsidian s'affiche aussi : ![[photo.png]] est dessinée comme une image, et ![[photo.png|300]] respecte la largeur. Le fichier garde ce que vous avez écrit — le chemin de l'image n'est jamais écrit à la place du jeton. Et la pièce jointe qui n’est pas une image devient une carte : ![[article.pdf#page=3]], ![[cours.ogg]] et ![[carte.canvas]] apparaissent comme un cadre portant le nom du fichier, cliquable — et le PDF s’ouvre à la page que vous avez indiquée. Les .canvas et .base d’Obsidian ont une ligne de plus, qui dit que le fichier reste dans le dossier et que LightNote ne le dessine pas. Une cible qui n’existe pas reste telle que vous l’avez écrite : une carte y promettrait un fichier disparu. Au milieu d’une phrase, l’image s’affiche de la même façon et la pièce jointe devient seulement le nom du fichier, que Ctrl+clic ouvre : une carte à cet endroit couperait le paragraphe. La même note sous un autre nom : écrivez aliases: [Échantillonnage, Méthode d’échantillon] dans les propriétés de la note et [[Échantillonnage]] l’ouvre — l’alias entre aussi dans l’autocomplétion de [[. Un fichier portant ce nom l’emporte toujours sur un alias. Les alias viennent de l’index du dossier, que l’application reconstruit en arrière-plan à l’ouverture de l’espace de travail : un aliases: fraîchement écrit se résout au balayage suivant, et non dans la même seconde.

Encadrés, notes de bas de page et balisage enrichi

Lecture enrichie : les blocs de code entre clôtures apparaissent dans un cadre avec l'étiquette du langage et un lien copier ; ~~barré~~ et ==surligné== sont rendus ; et les callouts de style GitHub (> [!NOTE], [!TIP], [!WARNING], [!IMPORTANT], [!CAUTION]) deviennent des cadres colorés. Les étiquettes #hashtag sont mises en évidence et, avec Ctrl+clic, ouvrent la recherche de cette étiquette ; le bloc de frontmatter YAML en haut (---) est mis en évidence. Dans la barre d'outils de l'onglet, un bouton permet d'exporter la note en PDF/HTML, une colonne de lecture centrée basculable et les modes d'affichage de la note. Le mode Zen (F11) et le défilement machine à écrire aident à écrire sans distractions.

Les notes de bas de page sautent dans les deux sens. La référence [^1] apparaît comme un chiffre en exposant, et Ctrl+clic dessus mène à la définition ; dans la définition, le marqueur [^1]: reste visible — c'est la cible du saut, et vous devez le voir pour savoir quelle note vous modifiez — et Ctrl+clic dessus revient à la référence. Contrairement à beaucoup de visionneuses Markdown, l'éditeur ne renumérote pas les notes et ne déplace pas les définitions à la fin : l'ordre du fichier est le vôtre. L'écriture en ligne d'Obsidian et de Pandoc — ^[le texte de la note] — est dessinée aussi : vous écrivez le texte à l'endroit où la note est appelée, et en mode lecture il apparaît numéroté à la fin. Le fichier garde ce que vous avez écrit, et à l'export elle devient une vraie note de bas de page dans Word, LaTeX, Typst et EPUB.

L'admonition MkDocs (!!! note avec le corps indenté de 4 espaces) est conservée telle qu'elle est écrite en édition mise en forme : l'indentation est ce qui fait appartenir le corps à l'admonition, donc son texte ne reçoit pas de mise en forme riche — en échange, ouvrir la note et l'enregistrer ne défait pas la construction.

Les boîtes avec marqueur de fermeture s'affichent aussi comme une boîte. :::tip … ::: (Docusaurus) et <details> … </details> reçoivent une barre et un titre colorés, dans les deux écritures : la compacte et celle avec des lignes vides. Le marqueur d'ouverture cède la place au libellé du type, au titre que vous avez écrit ou au texte du <summary> ; celui de fermeture quitte l'écran et reste dans le fichier, car le balisage que l'application écrit elle-même ne doit pas rester littéral sur la page. Ce qui demeure est la dernière ligne de l'encadré : c'est elle qui le délimite, c'est là qu'on met le curseur pour continuer à écrire dedans, et elle ne s'efface pas — sans elle, le contenu du dessous y serait avalé. Pour le défaire en gardant le texte, utilisez Supprimer l'encadré dans le menu contextuel. Le : de la liste de définition reste atténué. Le <summary> doit être sur la même ligne que le <details> pour devenir le titre : sur une ligne à lui, il s'affiche tel quel et la boîte garde le libellé par défaut.

HTML en ligne et bloc de code. <kbd>, <mark>, <sub> et <sup> sont également rendus en édition mise en forme : les balises disparaissent et il ne reste que le contenu, comme en mode lecture. Le bloc de code clôturé reçoit une boîte, avec le nom du langage et un lien copier dans le coin — le même lien en édition mise en forme et en mode lecture, là où l'on copie le plus de code. Il ne prend que le corps du bloc (sans les marqueurs) et affiche copié un instant ; les deux étiquettes n'apparaissent que lorsqu'elles tiennent sans écrire par-dessus le code.

Plus dans la lecture : le bloc de frontmatter YAML en tête n’apparaît pas dans la note rendue — il se modifie dans le panneau Propriétés. Les tags #hashtag deviennent des pastilles cliquables qui ouvrent la recherche de ce tag (comme Ctrl+clic dans l’éditeur). Les commentaires façon Obsidian (%%ceci reste caché%%, ou un bloc entre des lignes contenant %%) restent uniquement dans le fichier. Outre les callouts de GitHub, les encadrés des dialectes Docusaurus (:::tip Titre … :::) et MkDocs (!!! note "Titre" avec le corps indenté, et ??? note) sont également rendus — pratique pour lire des dépôts de documentation.

Nouveautés de la lecture : en plus de ~~barré~~ et ==surligné==, vous avez l'exposant ^x^, l'indice ~x~, les emoji abrégés (:rocket:), l'auto-lien des URL, les notes de bas de page [^1], les blocs repliables <details>, les listes de définitions, les tâches - [ ]/- [x] (⬜/✅) et le marqueur [TOC] (sommaire cliquable dans la lecture) ; ainsi que les images locales et le HTML en ligne (<kbd>, <mark>…). Le panneau Plan (barre de l'onglet) parcourt les titres en suivant le curseur, et le bouton Insérer (ou le menu contextuel → Format/Insérer) applique n'importe quelle mise en forme.

Titres, dossier et texte

En-têtes épinglés (sticky scroll) : lors du défilement, les en-têtes qui contiennent la ligne du haut restent épinglés dans un bandeau en haut de l'éditeur ; cliquer sur l'un d'eux saute à la section (à activer dans Paramètres → Markdown). Le menu contextuel d'un dossier dans l'arborescence crée/ouvre la Note du dossier (index.md avec frontmatter), utile comme index.

Note de dossier et liste de fichiers : un double-clic sur un dossier ouvre son index.md, s'il existe. Dans n'importe quelle note, le jeton [files] (ou [arquivos]) seul sur une ligne est remplacé dans l'édition mise en forme et dans la lecture par la liste des fichiers du dossier de la note, sous forme de liens cliquables — générée à la volée, sans rien écrire dans le fichier (comme [TOC]).

Opérations de texte et de ligne. Les opérations de l'éditeur de code s'appliquent aussi à la note — via le sous-menu Texte du bouton Formater de la barre de l'onglet, le menu contextuel et les sous-menus Lignes et Nettoyage du menu Édition : déplacer la ligne (ou les lignes sélectionnées) vers le haut/bas (Ctrl+Shift+↑/↓), dupliquer (Ctrl+Shift+D), supprimer (Ctrl+Shift+L), trier (A→Z / Z→A), inverser l'ordre, joindre les lignes, supprimer les lignes en double ou vides, supprimer les espaces et casse (MAJUSCULES/minuscules/inverser). Numéroter les lignes… ouvre une boîte de dialogue avec début, pas, zéros initiaux et séparateur — avec la valeur par défaut (". "), le résultat est une liste numérotée Markdown valide. Avec une sélection, l'opération ne s'applique qu'à elle (étendue aux lignes entières) ; sans sélection, à tout le document — toujours une seule étape d'annulation. La barre de l'onglet propose aussi le bouton IA : Demander / Modifier avec l'IA — les mêmes Ctrl+K / Ctrl+I que dans le code — et Interroger les notes, le chat qui répond à partir des notes de l'espace de travail.

Titres repliables : cliquez sur la petite flèche à gauche d'un titre (ou utilisez Ctrl+Shift+[ / Ctrl+Shift+]) pour replier et déplier la section ; dans Affichage se trouvent Replier/Déplier tous les titres. Le pliage est purement visuel — il n'est jamais écrit dans le fichier — et LightNote s'en souvient d'une session à l'autre. Sauter depuis le Sommaire ou depuis une recherche dans une section repliée la déplie.

Classeur : le dossier comme une œuvre

Ce que c’est : un dossier dont les notes sont des chapitres, dans un ordre que vous déclarez. Cela vaut pour un livre, un mémoire, un cours, un manuel, un runbook ou un journal de bord — le mécanisme est le même. Dans le menu contextuel du dossier, Transformer en classeur ouvre un écran avec les notes dans l’ordre actuel : faites glisser pour réorganiser puis confirmez. L’ordre est enregistré dans la clé chapters: du index.md du dossier — un fichier texte à vous, qui voyage avec les notes et reste valable sur n’importe quelle machine. Un sous-dossier peut aussi être nommé dans l’ordre : ses chapitres entrent à la position où il apparaît, et il déclare son propre ordre dans son index.md — c’est ainsi qu’un livre gagne des parties. La couverture d’un sous-dossier ne devient pas une page du document ; elle sert à déclarer l’ordre de ce niveau et à naviguer.

Naviguer : avec un ordre déclaré, la barre de la note affiche Chapitre 3 sur 12, avec une flèche de chaque côté (Alt+PgUp et Alt+PgDn) ; le bouton du milieu liste tous les chapitres. Le panneau Sommaire affiche alors deux niveaux : les chapitres de l’œuvre et, sous celui qui est ouvert, ses titres. Aux extrémités de l’œuvre la flèche est grisée. Dans un dossier sans ordre déclaré, rien de tout cela n’apparaît et tout reste comme avant.

Le modèle des notes : un classeur peut déclarer de quel modèle partent les notes créées à l’intérieur (la clé template:). Il y a cinq modèles prêts — chapitre de livre, chapitre de mémoire, cours, étape de procédure et entrée de journal — et en choisir un l’enregistre comme fichier dans le dossier Templates, où il reste modifiable. Une note créée dans le classeur entre seule dans l’ordre ; un fichier déposé là depuis l’extérieur reste sous Hors de l’ordre jusqu’à ce que vous l’adoptiez. Renommer un chapitre corrige la clé et conserve sa position. Pour partir d’une œuvre toute faite, Structurer à partir d’un modèle… (dans le menu contextuel du dossier) écrit les deux clés d’un coup — l’ordre et le modèle des chapitres — en conservant la couverture que vous avez déjà écrite ; et tant qu’un chapitre déclaré n’existe pas encore, le Sommaire affiche un bouton qui les crée tous d’un coup, chacun déjà à partir du modèle du dossier. Rien n’est écrasé : un chapitre déjà présent reste tel quel.

Réunir en un seul document : à l’exportation du dossier, la case Réunir les chapitres en un seul document produit un fichier avec les chapitres dans l’ordre déclaré. Comme le texte est réuni avant d’être rendu, les notes de bas de page, les figures, les tableaux et les citations sont ensuite numérotés sur tout le document — et un renvoi d’un chapitre vers une figure d’un autre se met à fonctionner. Ce qui n’est pas dans l’ordre déclaré reste dehors, et le rapport dit quoi.

Propriétés, thème et zoom

Propriétés de la note : le panneau latéral Propriétés affiche le frontmatter YAML sous forme de champs typés (texte, nombre, date, case à cocher), avec la case Type en haut. Définir le type et les propriétés est ce qui permet de réunir les notes dans une Base.

Thème de la note : la case Thème du panneau Propriétés définit l'apparence de cette note — les couleurs et la police du texte — sans toucher au thème du reste de l'application. Le choix va dans le frontmatter (la clé theme), il voyage donc avec le fichier : la note s'affiche à l'identique sur n'importe quelle machine. Le bouton voisin écrit les couleurs dans la note elle-même, pour qu'elle soit identique même chez quelqu'un qui n'a pas ce thème. Sans la clé, la note suit le thème de l'espace de travail. Si vous préférez que les notes venues d'ailleurs ne changent pas votre apparence, désactivez Respecter le thème déclaré dans la note dans Paramètres → Markdown.

Un thème que LightNote ne connaît pas encore : la liste des thèmes est un unique fichier téléchargé depuis le site ; une note citant un thème publié après votre dernière mise à jour ne le trouve donc tout simplement pas. La note s'ouvre alors avec le thème de l'espace de travail et le panneau Propriétés le signale, avec un raccourci vers les thèmes disponibles. LightNote cherche la liste à jour de lui-même — une fois par session, en arrière-plan et sans bloquer la note. Si vous préférez qu'il ne télécharge jamais rien, désactivez Récupérer le catalogue d'outils en ligne dans Paramètres → Fonctions.

Ctrl++ et Ctrl+− (ou Ctrl+molette) changent la taille de la note, et Ctrl+0 revient à 100% — pratique pour lire une note longue sans toucher à la police de toutes. L'éditeur et la lecture sont mis à l'échelle ensemble : en mode divisé, les deux côtés restent de la même taille. Un <svg> écrit directement dans la note est aussi dessiné dans la lecture : vous pouvez coller un graphique généré par l'IA sans en faire un fichier à part.

Combien de mots, et où. La barre d'état compte les mots de la note et estime le temps de lecture ; à côté, section N est le compte de la section où se trouve le curseur — la même que le Sommaire met en évidence, de son titre jusqu'au suivant de niveau égal ou supérieur. En déclarant un objectif quotidien dans Paramètres → Notes et écriture, aujourd'hui N/M apparaît aussi : ce qui a augmenté dans les notes ouvertes aujourd'hui. Supprimer ne retire rien — réviser son propre texte ne peut pas devenir une punition —, une note non ouverte ne compte pas, et à minuit le compteur repart à zéro.

Diagrammes (Mermaid)

Comment ça marche

Diagrammes Mermaid. Une clôture ```mermaid contenant un organigramme (flowchart/graph, dans les quatre directions), un diagramme de séquence (sequenceDiagram) ou un camembert (pie) est dessinée comme diagramme en mode lecture, dans le fichier exporté et dans les réponses d’Interroger les notes — d’où viennent la plupart des diagrammes. Le dessin suit le thème de la note (encre, papier et accent) : il s’accorde donc au texte autour dans les deux thèmes. En édition formatée — le mode par défaut — le diagramme est lui aussi dessiné, avec la barre du bloc par-dessus (copier, modifier, supprimer). Modifier ouvre en bas une barre contenant la source : la note est verrouillée tant qu’elle est ouverte et le dessin se refait pendant la frappe ; fermer applique (il n’y a ni enregistrer ni annuler), Ctrl+Z défait toute la modification en une étape et vider le champ supprime le bloc. En mode divisé, cliquer sur le diagramme amène le curseur jusqu’à la clôture dans le texte brut. Dans l’éditeur de texte tout reste du texte : Ctrl+E affiche le diagramme. Dans un élément de liste, le diagramme — ainsi que la structure SMILES, la formule en bloc, [files] et ![[note]] — reste du texte en édition formatée et apparaît dessiné en mode lecture : là, la puce de l’élément n’aurait aucun moyen de revenir dans le fichier.

Les sous-graphes (subgraph … end, imbriqués compris) deviennent des cadres avec titre, et les arêtes traversent la bordure en partant du vrai nœud ; l’id d’un sous-graphe peut aussi être une extrémité d’arête (sub --> X). Les couleurs déclarées par l’auteur s’appliquent : classDef, class, :::classe et style (remplissage, contour, épaisseur, pointillés et couleur du texte). Pour en commencer un, utilisez Insérer → Diagramme (Mermaid) dans la barre de la note : il pose un squelette prêt du type choisi. Le menu propose directement les six les plus utilisés ; Tous les diagrammes… ouvre un sélecteur avec les 33, groupés par usage, avec une recherche (par nom ou par ce que le diagramme montre) et l'aperçu dessiné de chacun — ce sont 33 dessins, et voir le dessin décide plus vite que lire le nom. Le frontmatter du diagramme — le bloc entre --- avant la première ligne — est lu lui aussi : le title devient le titre dessiné au-dessus du dessin (un title dans le corps l’emporte) et les clés de config que LightNote connaît parviennent au diagramme (gitGraph.mainBranchName, gantt.displayMode, et celles de packet : bitsPerRow, bitOrder: descending — qui met la rangée en miroir — et showBits: false) ; ce qu’il ne connaît pas est ignoré, sans refuser la note.

Séquence, entités, classes et états

Dans le diagramme de séquence on a participant/actor (avec as), les formes de flèche (->>, -->>, -x, -)), l’activation (+/- et activate/deactivate), les notes (Note left of/right of/over), les blocs loop/alt/else/opt/par et autonumber. Ce qui n’est pas encore dessiné — les autres types de diagramme — continue d’apparaître comme bloc de code ; direction à l’intérieur d’un sous-graphe et linkStyle sont ignorés. La syntaxe de nœud de Mermaid v11 (A@{ shape: rounded, label: "texte" }) est lue, et le catalogue de formes de la v11 est dessiné : doc, lin-doc, docs, tag-rect, win-pane, hourglass, bolt, flag, das… — chacune est le symbole que son nom annonce, et aucune ne devient un rectangle, car un rectangle à la place d’un document serait un autre diagramme. Un nom que Mermaid n’a pas fait redevenir le diagramme un bloc de code, avec la ligne indiquée. L’identifiant d’arête (A e1@--> B) et e1@{ animate: true } sont acceptés et ignorés : l’animation n’est pas dessinée. Un participant typé (participant DB@{ "type": "database" }) dessine le symbole UML au-dessus de la ligne de vie — boundary, control, entity, database, queue et collections —, et l’"alias" déclaré là vaut comme as.

Le erDiagram est également dessiné : chaque entité devient une boîte avec ses attributs et la cardinalité apparaît aux deux extrémités de la relation (||--o{, }o--||, |o, |{) ; -- est une relation identifiante et .. non identifiante. L'alias p[Personne] nomme la boîte sans changer l'id que les relations citent. Le subgraph … end vaut ici aussi : les entités à l’intérieur obtiennent un cadre avec titre, les sous-graphes s’imbriquent et l’identifiant du cadre peut être une extrémité de relation (CLIENT ||--o{ Ventes : passe), rejoignant la frontière plutôt qu’une entité de ce nom.

Le classDiagram de même : une boîte à trois compartiments (nom, attributs et méthodes, séparés par les parenthèses de la méthode), <<interface>> sur sa propre ligne, namespace comme boîte et les six relations (<|--, *--, o--, -->, ..>, ..|>). Attention au sens : dans A <|-- B le triangle est sur A — celui qui hérite est B. La cardinalité entre guillemets apparaît aux deux extrémités ("1" --> "*"). Les génériques Liste~T~ s'affichent comme Liste<T>, dans les membres aussi. L’interface sucette (bar ()-- foo) dessine le cercle en haut du cadre du côté où se trouve le () — et de ce côté seulement —, la relation venant toucher le cercle ; les namespace s’imbriquent aussi, et après le } interne une classe revient au namespace extérieur.

Le stateDiagram-v2 dessine la machine à états : [*] est le début (disque plein) et la fin (disque avec anneau), state X { … } devient une boîte, <<fork>>/<<join>> une barre et <<choice>> un losange. Un -- à l'intérieur d'un état composite sépare les régions concurrentes, marquées par un trait pointillé.

Frise, parcours, quadrants et Gantt

La timeline est également dessinée : chaque période devient une colonne de la frise, avec ses événements empilés en dessous, et section regroupe les époques en bandes colorées. Les deux écritures pour plusieurs événements fonctionnent — deux-points sur la même ligne (2004 : Facebook : Google) et continuation à la ligne suivante (: autre événement) —, et ici toute ligne qui n’est pas title, section ou direction est du texte libre. direction TD (frise verticale) n’est pas encore dessiné et conserve le bloc de code.

Le journey (parcours utilisateur) est dessiné lui aussi : chaque tâche devient une boîte sur l’axe du parcours, et la note de 1 à 5 déplace son visage vers le haut ou vers le bas — c’est le profil qu’ils forment que le diagramme existe pour montrer. section regroupe les phases, et les acteurs deviennent des marqueurs colorés sur la tâche, avec une légende à gauche. Ici la grammaire est stricte (Tâche : note : Acteur, Acteur), contrairement à celle du timeline : sans le couple nom/note il n’y a nulle part où poser le visage, donc une ligne mal formée — ou une note hors de 1 à 5 — refuse le diagramme en indiquant la ligne.

Et le quadrantChart dessine le plan des quatre quadrants : x-axis et y-axis nomment les extrémités de chaque axe (le côté droit du --> est facultatif), quadrant-1 à quadrant-4 étiquettent les régions, et chaque point s’écrit Nom : [x, y], avec x et y de 0 à 1. Attention à la numérotation : c’est celle du plan cartésien, pas celle de la lecture — quadrant-1 est celui d’en haut à droite, puis on tourne dans le sens antihoraire ; y = 1 est en haut. La couleur et le rayon d’un point peuvent venir directement (P: [0.5, 0.5] radius: 10, color: #109060) ou d’une classe (P:::classe plus classDef), et le style direct l’emporte sur la classe. Une coordonnée hors de 0 à 1 refuse le diagramme en indiquant la ligne au lieu d’être rognée — c’est la position dans le plan, et la rogner placerait le point dans un quadrant que vous n’avez pas écrit.

Le gantt dessine le planning : dateFormat indique le format des dates que vous écrivez (par défaut YYYY-MM-DD) et axisFormat celui des étiquettes de l’axe (%d/%m) ; section regroupe les tâches en bandes. Chaque tâche s’écrit Texte : marqueurs, id, début, fin — les marqueurs done, active, crit et milestone viennent en premier et se combinent, le début est une date ou after autreId, et la fin est une date, une durée (5d, 2w, 3h, 45m) ou until autreId. Avec un seul champ, la tâche commence là où la précédente s’est terminée. after peut citer une tâche déclarée plus bas dans la note ; en revanche un id qui n’existe nulle part — ou une dépendance circulaire — refuse le diagramme en indiquant la ligne, au lieu de poser la barre au jour d’aujourd’hui. excludes weekends (ou excludes monday, ou une date) repousse la fin de chaque tâche des jours exclus, et change donc la longueur des barres ; includes 2026-03-07 l’emporte sur le week-end, pour dire que ce samedi-là on travaille. Le jalon (milestone) apparaît sous forme de losange, et todayMarker off retire la ligne du jour. Le displayMode compact empile plusieurs tâches sur la même ligne, et ici une tâche ne partage la ligne que si rien de ce qu’elle occupe ne touche ce qui s’y trouve déjà — l’étiquette comprise. Le marqueur vert (Ouverture : vert, v1, 20:15, 0m) dessine l’instant comme une ligne verticale qui traverse tout le graphique, sans occuper de ligne, et son étiquette passe sous l’axe. Le dateFormat X (ou x) lit la date comme un temps Unix en secondes (ou millisecondes), et sur l’axe %s/%Q la réécrit. Un tickInterval que Mermaid ne connaît pas (1decade) est ignoré en silence, comme là-bas, et l’axe revient à l’automatique.

Carte mentale, exigences, Git et C4

Dans la mindmap la hiérarchie vient de l’indentation : le niveau d’un élément est la colonne où son texte commence, sans accolades ni flèches (une tabulation compte jusqu’au prochain arrêt de 4, comme dans un éditeur). Le premier élément est la racine — un second élément dans sa colonne serait une seconde racine, et le diagramme est alors refusé en indiquant la ligne. Chaque élément peut déclarer sa forme : [carré], (arrondi), ((cercle)), {{hexagone}}, ))explosion(( et )nuage( ; sans délimiteur il sort arrondi. ::icon(...) et :::classe sont reconnus et ignorés (nous n’embarquons pas la police d’icônes, et la classe renvoie à un CSS externe qui n’existe pas ici). Le dessin est à deux côtés — la racine au centre, les branches réparties à gauche et à droite —, chaque branche avec sa propre couleur dont héritent les descendants, et le rameau s’affine avec la profondeur. C’est un arbre, et non une simulation de forces comme dans mermaid : dans une carte mentale la hiérarchie est le contenu, elle doit donc se lire à la position — et, le dessin étant refait au changement de thème, une disposition convergeant depuis des positions aléatoires réorganiserait toute la carte à chaque fois.

Le treeView (treeView-beta) dessine l’arborescence de dossiers d’un projet, et accepte les deux graphies : l’indentation (ce qu’on tape) et les caractères mêmes de la commande tree (├──, │, └──), ce qui permet de coller la sortie du terminal directement dans la note — là, l’indentation ne suffit pas, car │ et une espace occupent la même colonne et seul le premier dit que la branche continue. La barre finale marque le dossier (src/), un nom avec espaces se met entre guillemets, ## texte accroche un commentaire en fin de ligne et :::highlight met le nom en valeur. icon(...) est reconnu et ignoré, comme l’::icon() de la carte mentale : les paquets d’icônes viennent d’Iconify par JavaScript, et Mermaid lui-même ne les dessine pas par défaut.

L’ishikawa (ishikawa-beta) dessine le diagramme en arêtes de poisson d’une analyse de causes : le premier élément est l’EFFET (la tête, à droite), le niveau suivant les catégories (les arêtes) et les deux du dedans les causes et sous-causes. Trois niveaux — un quatrième refuse le diagramme en indiquant la ligne, car il n’existe pas dans Mermaid. Les arêtes alternent au-dessus et au-dessous de l’axe, ce qui permet à deux catégories voisines de tenir sans que le texte de l’une tombe sur celui de l’autre, et l’ordre dans lequel vous écrivez les causes se lit de haut en bas des deux côtés.

Le venn (venn-beta) dessine des ensembles qui se croisent : set A["Souhaitable"] en déclare un, union A,B["Réalisable"] nomme la région commune (une union se nomme par les ensembles qu’elle croise) et text A1["React"], juste en dessous de l’un d’eux, place un élément dans cette région. Ce sont jusqu’à trois ensembles, et le quatrième refuse le diagramme en indiquant la ligne : avec quatre cercles, aucune disposition ne produit toutes les régions, et en dessiner un "presque juste" cacherait une région que vous avez déclarée. Le :nombre après l’étiquette (set A["Alpha"]:20) met le cercle à l’échelle — l’aire suit le nombre — et non les intersections : un Venn à intersections proportionnelles est un autre diagramme (Euler), qui demande une optimisation numérique. style A fill:#ff6b6b peint un ensemble, et avec une virgule (style A,B color:#333) cela vaut pour l’union de ces ensembles.

Le cynefin (cynefin-beta) dessine le cadre de Snowden pour classer les décisions : les cinq domaines ont un nom fixe — complex, complicated, chaotic, clear et confusion — et une position fixe (les quatre quadrants, la confusion au milieu) ; ce que vous choisissez, c’est ce qui va dedans. Chaque élément va entre guillemets, un par ligne, et complex --> complicated : "Motif identifié" dessine la transition entre deux domaines. Un nom hors des cinq refuse le diagramme en indiquant la ligne et en donnant la liste. La frontière entre clear et chaotic sort ondulée : dans le modèle c’est une falaise, et la forme le dit — ici l’onde est toujours la même, pour que la note ne change pas de dessin à chaque ouverture.

Le swimlane (swimlane-beta) dessine un processus en couloirs, un par responsable : la syntaxe est celle de l’organigramme (mêmes formes, flèches, étiquettes et classDef), et chaque subgraph cesse d’être un cadre pour devenir un couloir. Chaque nœud doit se trouver dans l’un d’eux — un nœud isolé refuse le diagramme, car rien ne dirait à qui appartient la tâche — et un couloir dans un couloir refuse aussi. Avec LR les couloirs sont des lignes et le flux va vers la droite ; avec TB ce sont des colonnes et le flux descend. La position le long du flux vient du plus long chemin jusqu’à chaque tâche, et la bande est celle du propriétaire : une tâche ne quitte jamais son couloir, même si cela rendait le dessin plus compact.

L’agentflow (agentflow-beta) dessine un flux avec des agents d’IA, et c’est un autre vocabulaire pour l’organigramme : les flèches sont les mêmes, flow id["Nom"] … end joue le rôle de subgraph (et s’imbrique), global … end contient ce que tous les agents consultent, et connector id["Nom"] déclare un système extérieur. Ce qui change vraiment, c’est la forme, qui dit le rôle de chaque étape : @{ shape: input }, task, tool (appel d’outil), decision, refdoc (document de référence) et action (action finale). Reliez le document avec -.-, sans flèche : il est consulté, ce n’est pas une étape. Les clés qui décrivent l’agent par écrit (instruction, params, returns, connectorRef, protocol, endpoint) sont lues et ignorées au dessin. Ces noms de forme ne valent qu’ici — dans un flowchart ils refusent, car Mermaid ne les a pas non plus là-bas.

L’usecase (usecase-beta) dessine le diagramme de cas d’utilisation UML : ce qui est déclaré par actor devient le bonhomme, et tout le reste est un cas d’utilisation, dessiné en ellipse — c’est la distinction que ce type existe pour montrer. Le cas d’utilisation s’écrit Id("Libellé"), Id[Libellé], juste Id ou juste le texte entre guillemets ; systemBoundary "Nom" … end est la frontière du système et note for X "texte" accroche une note. Les relations sont celles d’UML : --> associe, --|> est la généralisation (le triangle creux est du côté du général) et A ..> : include B — avec la cible après les deux-points — dessine l’« include » pointillé, de même pour extend. Ce qui décrit l’acteur sans changer le dessin (type, business, icon) est lu puis ignoré, et le <<Stéréotype>> passe dans le libellé. Le nœud json n’est pas encore dessiné et conserve le bloc de code : c’est un bloc de plusieurs lignes contenant l’arbre de la donnée, et là le JSON reste lisible comme texte.

Le wardley (wardley-beta) dessine une carte de Wardley : un plan dont l’axe vertical est la visibilité pour l’utilisateur (le haut, c’est ce qu’il voit) et l’axe horizontal l’évolution, de Genesis à Commodity. Attention à l’ordre de la paire : component Thé [0.63, 0.81] vaut [visibilité, évolution] — le premier nombre est l’axe vertical, et lu à l’envers la carte se dessine quand même et se met à raconter une autre stratégie. L’anchor est l’utilisateur en haut, A -> B relie la chaîne (un nom peut contenir des espaces, avec ou sans guillemets), A +> B est un flux (plus épais ; +<> dans les deux sens et +'texte'> avec libellé) et evolve Bouilloire 0.62 dessine la flèche pointillée jusqu’où la pièce doit aller. Valent aussi evolution (renomme les étapes de l’axe), size, (build)/(buy)/(outsource)/(market), (inertia) (la barre de résistance), label [dx, dy], pipeline X { … }, note, accelerator/deaccelerator et les annotation numérotées avec la légende annotations.

L’eventmodeling dessine un event modeling : une frise en trois couloirs — l’écran en haut, la commande (et le modèle de lecture) au milieu, l’événement en bas. Chaque ligne s’écrit tf 02 cmd AjouterArticle : le nombre est l’instant (la colonne) et le mot du milieu le type, qui choisit le couloir — ui, cmd/command, pcr/processor, rmo/readmodel, view et evt/event (les formes longues valent pareil). Le couloir ne se déclare pas : c’est la méthode. Le rf (resetframe) ouvre une nouvelle tranche, avec un séparateur pointillé — c’est là que l’histoire recommence. Le schéma du cadre va entre accolades ({ description: string }) ou par référence ([[Donnees]]) à un bloc data Donnees { … }, qui peut venir après ; et ->> 02 ->> 03 relie le cadre aux instants qui l’alimentent, par numéro.

Le railroad (railroad-ebnf-beta, -abnf-beta, -peg-beta ou railroad-beta) dessine une grammaire en rails de chemin de fer : chaque règle devient un chemin que l’on suit du doigt, et ce qu’on peut écrire est ce qu’on peut parcourir. La règle s’écrit nom = expression ; (ou nom <- … ; en PEG) et peut tenir sur plusieurs lignes : elle se ferme au ;. Le texte entre guillemets est un terminal (dessiné en capsule) et un nom seul est une autre règle (rectangle) ; | (ou /) est un choix, ? optionnel, + une fois ou plus, * zéro fois ou plus, et ( ), [ ] et { } groupent, rendent optionnel et répètent. L’ABNF met la répétition avant (1*( ALPHA / "-" ), *DIGIT), le PEG accepte les prédicats !x et &x — qui passent dans le libellé, car ils ne consomment rien — et railroad-beta accepte l’écriture par fonctions (sequence(choice(terminal("+"), …))). Les quatre aboutissent au même dessin : le contournement par le haut est l’optionnel et la boucle par le bas, flèche vers l’arrière, la répétition.

Le requirementDiagram dessine exigences et éléments comme des boîtes à compartiments : le type déclaré (requirement, functionalRequirement, performanceRequirement, interfaceRequirement, physicalRequirement, designConstraint) apparaît entre guillemets au-dessus du nom, et les champs id, text, risk et verifymethod deviennent des lignes — dans un element, type et docref. Les relations (satisfies, traces, derives, verifies, refines, copies, contains) s'écrivent a - satisfies -> b ou en forme miroir b <- satisfies - a, et dans celle-ci le premier nom est la destination. Seul contains est un trait plein, avec le symbole du côté de celui qui contient ; les autres sont en pointillé avec la flèche à la destination. Un nom avec espace se met entre guillemets droits.

Le gitGraph dessine l'historique d'un dépôt : chaque commit avance dans le temps, branch nom ouvre une nouvelle voie et y travaille aussitôt (comme git switch -c), checkout revient à une autre et merge réunit les deux. Les attributs prennent deux-points : commit id: "texte" tag: "v1" type: HIGHLIGHT (aussi REVERSE), et branch nom order: 2 change l'ordre des voies ; cherry-pick id: "…" exige l'id d'un commit qui existe. La forme dit le type — disque plein pour le commit ordinaire, carré pour celui mis en avant, cercle barré d'un X pour le commit annulé, double anneau pour la fusion et cercle coupé pour le cherry-pick —, car dans un thème où deux tons de la palette se ressemblent, seule la forme les sépare. LR: (par défaut), TB: et BT: tournent l'axe du temps. Un checkout/merge vers une branche qui n'existe pas refuse le diagramme en indiquant la ligne, au lieu de créer une voie que vous n'avez pas demandée.

La famille C4 (C4Context, C4Container, C4Component, C4Dynamic et C4Deployment) est dessinée elle aussi, et là tout est macro : il n'y a aucune flèche dans la syntaxe. Chaque élément devient une boîte avec le type entre guillemets, le nom en gras et la description en dessous : Person(alias, "Nom", "Description"), System, Container, Component et les variantes Db, Queue et _Ext. Dans Container et Component le troisième argument est la TECHNOLOGIE (Container(app, "App", "C++/Qt", "ce qu'il fait")) ; dans les autres c'est déjà la description. Les frontières (Boundary, Enterprise_Boundary, System_Boundary, Container_Boundary et le Node de C4Deployment) ouvrent une accolade et deviennent une boîte à titre, imbriquées comprises. Le lien est Rel(a, b, "libellé", "technologie") ; BiRel met une flèche aux deux bouts et Rel_Back pointe en arrière. Le C4Dynamic numérote les relations dans l'ordre où elles apparaissent. Les indications de position (Rel_U, Rel_D, Rel_L, Rel_R) et les Update…Style sont acceptés et ignorés : l'agencement vient du même layout que les autres diagrammes, et la couleur vient du thème de la note. Une relation citant un alias jamais déclaré refuse le diagramme en indiquant la ligne, au lieu d'inventer une boîte que vous n'avez pas écrite.

Tableau, graphiques et paquet

Dans le kanban l'indentation est la syntaxe, sur deux niveaux : celui du dehors est la voie et celui du dedans la carte (id[Libellé], ou juste le texte). Le @{ ticket: LN-9, assigned: 'ana', priority: 'High' } après une carte n'entre pas dans son texte : le ticket et le responsable vont dans un pied de page à eux, et la priorité (Very High, High, Low, Very Low) devient la couleur du bandeau du bord gauche, sur une échelle du chaud au froid. Toutes les voies se terminent sur la même ligne, et une voie sans carte reste affichée — c'est elle qui montre la colonne vide. C'est un tableau dessiné, pour expliquer un flux dans une note ; le tableau sur lequel on travaille, avec des cartes que l'on déplace, c'est le panneau Tâches de l'application.

Le xychart (xychart-beta) dessine des barres et des lignes sur deux axes : x-axis "Titre" [jan, fév, mar] donne les catégories — un nom avec espace ou virgule se met entre guillemets droits —, y-axis "Titre" 0 --> 100 fixe l'échelle et chaque bar [10, 40, 90] ou line [20, 30, 80] ajoute une série, avec une valeur par catégorie, dans l'ordre où elles ont été déclarées. Une série avec plus ou moins de valeurs refuse le diagramme en indiquant la ligne : les barres glisseraient sur d'autres catégories et le graphique affirmerait autre chose. Sans y-axis, l'échelle vient des données et commence à zéro tant qu'elles ne descendent pas plus bas — commencer à la plus petite valeur exagère l'écart entre les barres, et personne ne l'a demandé ; avec une plage déclarée, une valeur hors plage est refusée plutôt que de déborder du cadre. x-axis accepte aussi une plage continue (0 --> 100), et sans lui les catégories sont les indices. Deux séries de barres apparaissent côte à côte, et non superposées comme dans mermaid — superposées, celle du fond disparaît. xychart-beta horizontal n'est pas encore dessiné et garde le bloc de code, car le dessiner à la verticale livrerait le graphique transposé. Une série peut avoir un nom (bar "Ouverts" [10, 40], line "Fermés" [20, 30]) : les noms forment une légende au-dessus du plan, chacun avec la forme de sa série — barre pleine, ligne avec point —, car la couleur seule ne les distingue pas. Et dans une série en ligne une valeur peut porter une étiquette ([540 "PaLM", 65]), dessinée au-dessus du point ; sur les barres l’étiquette est ignorée, comme dans Mermaid.

Le radar (radar-beta) dessine le profil d'une ou plusieurs courbes sur des axes partant du centre : axis a["Libellé"], b, c déclare les axes — la ligne peut se répéter — et curve x["Nom"]{80, 60, 90} donne une valeur par axe, dans l'ordre où ils ont été déclarés ; la forme nommée ({a: 80, c: 90, b: 60}) vaut aussi. Attention au sens : le premier axe pointe vers le haut et le tour se fait dans le sens horaire. max et min fixent l'échelle — sans max, elle vient de la plus grande valeur lue — et une valeur hors échelle refuse le diagramme en indiquant la ligne, plutôt que d'être rognée ; ticks change le nombre d'anneaux, graticule circle les rend ronds et showLegend false retire la légende. Une courbe avec plus ou moins de valeurs que d'axes est refusée elle aussi : ce ne serait pas un dessin incomplet, mais un autre dessin.

Le packet (packet-beta) dessine la carte des bits d'un paquet : chaque champ s'écrit 0-15: "Libellé", et la plage est fermée aux deux bouts — 0-15 font seize bits. Un bit seul s'écrit 4: "Libellé", et la forme relative +16: "Libellé" prend les seize suivants, pour ne pas avoir à tout recompter en insérant un champ au milieu. Les champs doivent être contigus : un trou ou un chevauchement refuse le diagramme en indiquant la ligne, car l'un comme l'autre décalerait en silence tout ce qui suit. Une rangée contient 32 bits, et un champ qui franchit le passage à la ligne apparaît sur les deux, avec le libellé dans la partie la plus large ; les nombres au-dessus de la grille marquent où commence chaque champ, plus le dernier bit de chaque rangée.

Grille, aires, architecture, flux et ZenUML

Le block (block-beta) dessine une grille de cases, et la position y est l'ordre dans lequel vous les avez écrites : columns 3 fixe le nombre de colonnes — sans lui, tout tient sur une seule rangée —, chaque case accepte les formes de l'organigramme (a["Libellé"], b(("cercle")), c{"losange"}), a:2 fait occuper deux colonnes à la case et space (ou space:2) laisse un trou. block:id … end imbrique une grille dans une autre, avec son propre columns, et devient une case autour. Les flèches sont celles de l'organigramme (a --> b, libellée en a -- "texte" --> b), mais ici elles ne font que citer des blocs déjà déclarés : une flèche vers un nom qui n'existe pas refuse le diagramme en indiquant la ligne, plutôt que d'inventer une case dans une cellule que vous n'avez pas écrite. L'écart entre les colonnes s'agrandit jusqu'à ce que le libellé de la flèche tienne, pour qu'il ne touche pas la case voisine. La flèche de bloc (a<["Aller"]>(right)) est un cadre en forme de flèche : les directions vont entre parenthèses (right, left, up, down, ou x pour les deux horizontales et y pour les deux verticales) et se combinent ((x, down)) ; une direction inventée refuse le diagramme en indiquant la ligne, plutôt que de devenir une flèche quelconque.

Le treemap (treemap-beta) dessine une carte de surfaces : chaque rectangle a une aire proportionnelle à sa valeur, et l'indentation imbrique, à profondeur libre. La feuille déclare la valeur ("Nom" : 12) et la section ne déclare rien — la sienne est la somme des enfants, et un total propre permettrait un rectangle qui ment sur ses propres parties ; c'est donc refusé, avec la ligne indiquée. Un nom avec espace ou deux-points se met entre guillemets droits ; classDef et :::classe donnent la couleur. La disposition est le squarified, qui garde les rectangles proches du carré : découper toujours sur le même axe produirait des bandes qu'on ne compare pas à l'œil, et comparer des aires est la seule chose que fait ce type. Le libellé et la valeur n'apparaissent que s'ils tiennent entiers dans le rectangle : coupés par le bord, ils n'apprendraient rien.

L'architecture (architecture-beta) dessine des services et les liens entre eux : service api(server)[API] déclare un composant, group nuage(cloud)[Nuage] ouvre une frontière, le suffixe in nuage place le service dedans (les groupes s'imbriquent) et junction j crée un coin pour plier un lien. C'est le côté du lien qui décide de la position : a:R -- L:b pose la droite de a contre la gauche de b, donc met b à droite de a ; L, R, T et B sont acceptés, et la pointe apparaît du côté du < ou du > (-->, <-->, ou -- sans pointe). Le suffixe {group} sur une extrémité envoie la ligne vers la frontière du groupe plutôt que vers la case à l'intérieur. Les icônes sont les cinq que Mermaid intègre — cloud, database, disk, internet et server — et tout autre nom refuse le diagramme en indiquant la ligne et en nommant celles qui existent. Les autres (logos:aws-lambda et compagnie) viennent d'Iconify et n'apparaissent que là où celui qui publie la page enregistre le paquet en JavaScript, ce que GitHub lui-même ne fait pas : les accepter ici livrerait un dessin qui ne se reproduit nulle part ailleurs. L’align row a b c (ou align column) place les membres cités sur la même rangée — ou dans la même colonne —, et un nom qui n’existe pas refuse le diagramme en indiquant la ligne, plutôt que de laisser la disposition telle quelle sans dire pourquoi.

Le sankey (sankey-beta) dessine un diagramme de flux où l'épaisseur du ruban est la valeur : le corps ne contient aucune flèche — c'est un CSV à trois colonnes (source,cible,valeur), un lien par ligne, et c'est la répétition d'un nom aux deux bouts qui enchaîne le flux. Une étiquette contenant une virgule va entre guillemets droits, et un guillemet à l'intérieur s'écrit doublé ("Coût ""fixe""") ; la même paire source/cible répétée s'additionne. La barre d'un nœud a la hauteur du plus grand des deux totaux, entrant et sortant, pour que les rubans sortants d'un nœud qui distribue plus qu'il ne reçoit ne débordent pas. Les colonnes viennent du plus long chemin jusqu'à chaque nœud, et ce qui n'a pas de sortie va dans la dernière colonne. Une valeur inférieure ou égale à zéro, un lien d'un nœud vers lui-même et un cycle refusent le diagramme en indiquant la ligne — dans un cycle il n'y a pas de plus long chemin, et couper un lien pour pouvoir dessiner montrerait un flux que vous n'avez pas écrit. Il n'y a pas de title ici : le corps est du CSV pur, et l'accepter dessinerait bien dans LightNote et serait une erreur de syntaxe dans Mermaid.

Le zenuml est une autre syntaxe pour le même dessin — un diagramme de séquence —, écrite comme du code plutôt qu'avec des flèches. L'appel synchrone ne nomme que la cible (Magasin.enregistrer(article)) et l'expéditeur est le bloc qui l'entoure : dans Magasin.enregistrer() { Stock.reserver() }, c'est le Magasin qui appelle le Stock. Au niveau extérieur, l'appelant est le démarreur — @Starter(Ana) le nomme, et sans lui un User en bonhomme-bâton est utilisé, qui n'apparaît que si un appel en a besoin. Le message asynchrone s'écrit A->B : texte (pointe ouverte, personne n'attend) et A->B.methode() est l'appel synchrone avec l'expéditeur écrit à la main. {} imbrique, return x revient à celui qui a fait l'appel englobant (un if au milieu n'y change rien), x = A.m() est l'autre écriture de la même réponse, new A(args) crée et // commentaire devient une note au-dessus du message suivant. Les blocs sont if/else if/else, while/for/forEach/loop, opt, par et try/catch/finally — et } else { poursuit le même cadre, avec un séparateur, au lieu d'en ouvrir un autre. @Actor dessine le bonhomme ; les autres annotateurs (@Database, @Boundary…) deviennent un stéréotype dans l'étiquette («Database» Stock), car leurs icônes ne sont pas dessinées ici — le nom reste visible, et c'est ce qui compte. Un nom avec espace va entre guillemets droits. Attention à l'endroit où ce bloc atterrit : dans Mermaid, zenuml est un diagramme externe que la page doit enregistrer en JavaScript — GitHub ne le fait pas, donc la même note qui se dessine ici y apparaît comme un bloc de code.

Et lorsque LightNote ne parvient pas à lire un diagramme, il dit pourquoi et à quelle ligne, juste sous le bloc — un type que nous ne dessinons pas encore ne déclenche aucun avertissement, car rien n'y est faux.

Mathématiques et chimie (LaTeX)

Formules (LaTeX)

Mathématiques (LaTeX). $E = mc^2$ au milieu de la phrase et $$…$$ en bloc deviennent une formule dessinée en mode lecture, dans le fichier exporté et dans les réponses d'Interroger les notes. Le dessin suit le thème de la note. Dans l'édition formatée, la formule en bloc est également dessinée, avec la barre du bloc par-dessus (modifier, copier, supprimer) ; et la formule au milieu d'une phrase aussi, posée sur la ligne de texte. Pour la modifier, double-cliquez dessus ou appuyez sur Ctrl+Entrée : elle s'ouvre dans la même barre. Et Retour arrière juste après elle la redonne sous forme de $…$, pour la modifier sur place. Dans l'éditeur de texte tout reste du texte : utilisez Ctrl+E pour voir la formule. Pour commencer, utilisez Insérer → Formule (LaTeX) dans la barre de la note. La formule est dessinée avec la police mathématique du système — sous Windows, Cambria Math — et non avec la police du corps de la note : c'est d'elle que viennent l'italique mathématique, les symboles qu'une police de texte n'a pas, et les parenthèses et racines qui grandissent avec leur contenu. Sans police mathématique installée, LightNote revient à la police de la note et dessine ces signes lui-même.

Le sous-ensemble couvre les lettres grecques, les opérateurs et relations, l'exposant ^ et l'indice _, \frac, \sqrt (avec indice), \left…\right avec des délimiteurs qui grandissent, \sum/\prod/\int avec limites, les fonctions romaines (\sin, \log…), \text/\mathrm/\mathbf/\mathbb les alphabets \mathcal/\mathfrak/\mathsf/\mathtt/\boldsymbol, \binom, \overset/\underset, \bmod/\pmod, la famille \big…\Bigg les espaces \,/\quad/\hspace, les environnements cases, matrix/pmatrix/bmatrix/vmatrix, aligned, gathered et array (avec | et \hline), \overbrace/\underbrace, \begin{CD} et \begin{tikzcd} (diagramme commutatif), \xrightarrow, \boxed/\cancel, \not, \substack, \|/\middle, \smash, \textcolor/\color (votre teinte ; la clarté s'ajuste au thème de la note), \colorbox/\fcolorbox (le fond sort dans la couleur que vous avez écrite, et le texte s'y adapte), \tag (l'étiquette de l'équation, collée à la fin ; dans un align, une par ligne, alignées en colonne), \phantom, \displaystyle et les formes infixes \over/\atop/\choose. La couverture dépasse cette liste : les variantes de comparaison (\leqslant), la logique (\land, \vDash), les opérateurs de statistique (\argmax), les flèches doubles étirables (\xRightarrow) et les crochets doubles (\llbracket) en font aussi partie. Les commutateurs de police du TeX ancien fonctionnent aussi — {\rm d}x, {\bf A}, {\cal L} — ainsi que la notation de Dirac (\braket{\phi|\psi}). Les macros définies dans la formule même (\newcommand, \def) valent jusqu'à sa fin, les symboles Unicode tapés directement (x ∈ ℝ) valent comme leurs commandes, \text{…} accepte des mathématiques entre $…$, et une formule isolée peut avoir plusieurs lignes avec \\. \label{eq:nom} dans un bloc $$ numérote l'équation en mode lecture, avec le même compteur que {#eq:nom}, et \eqref{eq:nom} dans le texte devient le numéro entre parenthèses. L'écriture LaTeX fonctionne aussi : \(…\) dans la phrase et \[…\] en bloc sont dessinés de la même façon — c'est la forme que ChatGPT émet le plus souvent. Ce qu'il ne sait pas dessiner continue d'apparaître comme le texte que vous avez écrit.

Diagramme commutatif avec flèche diagonale (\begin{tikzcd}). \begin{CD} ne dessine que des flèches horizontales et verticales ; le triangle commutatif — le diagramme le plus courant qui soit — demande la diagonale. Chaque objet est une cellule (& les sépare, \\ change de ligne) et la flèche s’écrit dans la cellule : A \arrow[r, "f"] \arrow[rd, "g"'] & B. La direction est une suite de r/l/u/d (rd est la diagonale, rr fait deux colonnes), et \ar et les raccourcis (\rar, \dar, \drar) sont la même flèche. L’étiquette entre guillemets se place au-dessus d’une flèche qui va à droite ; ' (ou swap) la met de l’autre côté, ce qui dit si le nom tombe dedans ou dehors. Fonctionnent aussi hook (inclusion), two heads (surjection), dashed, Rightarrow et equal. La courbure (bend left) et toute option que ce sous-ensemble ne dessine pas sont refusées en la nommant : dessiner deux flèches courbes en droites les superposerait, affirmant qu’il n’y en a qu’une.

Un $ de prose ne devient pas une formule : dans coûte $5 et $10 le prix reste un prix, car l'ouverture ne peut pas être suivie d'une espace ni la fermeture précédée d'une ni suivie d'une lettre (c'est ce qui empêche PATH=$dir1:$dir2 de devenir une formule) — et $x$ entre accents graves reste du code. Quand la formule n'apparaît pas, LightNote dit pourquoi : une ligne sous le bloc $$, et une seule fois par message distinct lorsque la formule est au milieu du texte, en nommant la commande ou le délimiteur qu'il n'a pas su lire. Si la formule a été collée dans l'écriture \(…\) et que vous préférez $…$, Formater → Normaliser les formules en $ réécrit la sélection (ou la note entière) — dans l'éditeur de texte, où les caractères de la note sont à l'écran.

Chimie : mhchem et SMILES

Chimie. La notation mhchem est dessinée elle aussi : \ce{2 H2 + O2 -> 2 H2O} place les indices tout seul, -> et <=> deviennent des flèches (avec une étiquette dans ->[\Delta]), Na+ et SO4^2- deviennent une charge, (aq) et (l) sortent droits et collés, ^{227}_{90}Th aligne l’isotope, et v/^ marquent un précipité et un gaz dégagé. \pu{123 kJ//mol} écrit la grandeur avec son unité : la double barre devient une fraction. L’équilibre déplacé (<=>> et <<=>) dessine la flèche longue dans le sens que la réaction favorise, les liaisons écrites en toutes lettres (\bond{~}, \bond{~-}, \bond{...}) superposent leurs traits comme dans les manuels, et la notation de Kröger-Vink (O''_{i,x}, Li^x_{Li}) place la charge effective en exposant. La variable sort en italique et l’élément en romain : dans NO_x le x est une variable, dans Fe^{II} le II est le degré d’oxydation.

Structures en LaTeX (\chemfig). \ce écrit la formule ; \chemfig{...} dessine le squelette dans la formule elle-même — \chemfig{H_3C-[:30]CH_2-[:-30]OH} est l’éthanol et \chemfig{*6(-=-=-=)} le benzène. L’angle vous appartient : [:30] est absolu, [::45] est relatif à la liaison précédente et [3] compte les huitièmes de tour. Les liaisons sont -, = et ~, et les coins de la stéréochimie sont >, <, >:, <:, >| et <| — la pointe fine reste sur le stéréocentre. Les parenthèses accrochent une branche et *6(...) ferme un cycle régulier (**6(...) dessine le cercle aromatique) ; depuis un sommet de cycle, une liaison sans angle écrit pointe vers l’extérieur. Le symbole de l’élément sort droit et le trait s’arrête avant la lettre. Les nœuds de départ et d’arrivée de chemfig ([,,1,2]) sont refusés avec le motif : ils choisissent à quelle partie de l’étiquette la liaison se rattache, et les ignorer dessinerait une autre structure. Le cycle fusionné s'écrit à l'intérieur du premier, juste après la liaison qu'ils partagent, et le cycle interne écrit une liaison de moins : ce côté est déjà tracé. Le naphtalène s'écrit \chemfig{*6(-=-*6(-=-=-)=-=)}.

Structure chimique (SMILES). Un bloc ```smiles avec une ligne en SMILES (CC(=O)Oc1ccccc1C(=O)O) est dessiné en formule topologique en mode lecture, en édition formatée, dans le fichier exporté et dans les réponses de Demander aux notes. C'est le pendant de \ce : celui-là écrit la formule, celui-ci dessine la molécule. La convention du squelette s'applique : le carbone ne s'écrit pas (c'est le sommet), l'hétéroatome sort avec son symbole dans la couleur d'accent du thème, et le cycle aromatique (c1ccccc1) reçoit le cercle en pointillés à l'intérieur. La stéréochimie est dessinée : [C@H] et [C@@H] deviennent un coin — plein quand la liaison vient vers l’avant, hachuré quand elle part vers l’arrière, la pointe étroite sur le stéréocentre —, et F/C=C/F et F/C=C\F sortent trans et cis comme ils sont écrits. Ce qui n’a pas de représentation sur le papier (les formes nommées non tétraédriques, comme @SP1) est accepté, et une légende dans l’image indique qu’il a été déclaré et non dessiné. Un bloc dessine une structure : un espace au milieu de la ligne est refusé, car en SMILES il termine la structure. Quand la lecture échoue, LightNote dit ce qui ne va pas (la parenthèse, le numéro de cycle, l'élément) et le bloc de code reste tel que vous l'avez écrit. Pour commencer, utilisez Insérer → Structure (SMILES) dans la barre de la note.

Calendrier dans la note

Un bloc ```calendar dessine un calendrier dans la note, en mode lecture, en édition formatée et à l’impression. C’est un vrai tableau, pas une image : on peut le sélectionner, le copier (collé dans Word ou Excel, il garde les cellules) et trouver un événement avec Ctrl+F. La première ligne dit quel calendrier : un mois (2026-09) affiche le mois ; une date (2026-09-24) affiche la semaine qui la contient, avec les jours en colonnes et les heures en lignes ; et week affiche une semaine sans dates — l’emploi du temps, la routine, les gardes. Chaque ligne suivante est un événement ou une option, et les lignes qui commencent par %% sont des commentaires. Pour commencer, utilisez Insérer → Calendrier dans la barre de la note (mensuel, hebdomadaire ou hebdomadaire sans dates, déjà remplis d’exemples) ou tapez /calendar.

Mois. Un événement commence par le numéro du jour : 15: Soutenance marque un jour, 22-26: Congrès marque une période, et 24: sans texte met seulement le jour en évidence. Le texte d’une période apparaît à son premier jour et, quand elle déborde sur la semaine suivante, aussi au début de la ligne suivante.

```calendar
2026-10
15: Soutenance
22-26: Congrès
```

Semaine. Un événement commence par le nom du jour — mon, tue,thu ou mon-fri — suivi de l’heure : mon 09:00-10:30: Réunion. L’heure s’écrit 09:00, 9h30 ou simplement 9 ; sans elle, l’événement va dans la ligne du haut, celle de toute la journée (fri: Remise). Comme le jour est un nom, copier le bloc vers la semaine suivante ne change que la première ligne. days: mon-fri choisit les colonnes, dans l’ordre de la liste ; hours: 8-18 fixe la plage (sans elle, de 8 à 18, élargie pour contenir les événements ; avec elle, un événement hors de la plage est refusé) ; et step: 30 donne les minutes de chaque ligne. Un événement long écrit son texte, avec l’heure, seulement dans sa première ligne et colore les suivantes.

```calendar
2026-10-14
days: mon-fri
mon,wed 09:00-10:30: Réunion d’équipe
tue 14-16: Étude
tue 16-17: Révision
fri: Remise du projet
```

Dans les trois formes, title: remplace le titre de la barre (dans la semaine sans dates, la barre n’apparaît qu’avec lui), week: monday fait commencer la semaine le lundi (par défaut, celui de la langue de la note ; avec days:, c’est l’ordre de la liste qui compte) et today: no retire la marque du jour — dans la semaine sans dates, la marque est le jour de la semaine. Les événements qui se touchent reçoivent des couleurs différentes, pour ne pas se lire comme un seul. La langue des mois et des jours est celle de la note (la clé lang du frontmatter), et le week-end suit l’usage de cette langue. Le jour même n’est marqué qu’à l’écran : ni sur papier ni en PDF, car qui lit le fait un autre jour. Pour modifier le calendrier, appuyez sur Ctrl+Enter dessus et modifiez la source dans la barre — taper dans une cellule ne change rien, car le tableau est généré à partir de la source. Barre ouverte, le tableau se refait pendant la saisie ; fermer la barre applique la modification, et Ctrl+Z annule toute la modification en une seule fois. À l’export (Word, OpenDocument, HTML, LaTeX, Markdown de GitHub), le calendrier devient un tableau ordinaire avec le titre. Quand la source ne se lit pas comme un calendrier, LightNote indique la ligne et le passage, et le bloc de code reste tel que vous l’avez écrit. Dans une citation ou une liste, le calendrier apparaît en mode lecture et reste du code en édition formatée.

Numérotation et renvois

Donnez une étiquette à une figure et elle reçoit une légende numérotée en mode lecture : ![Cycle de l'eau](cycle.png){#fig:cycle} devient l'image suivie de Figure 1 — Cycle de l'eau. Le tableau porte son étiquette sur une ligne commençant par deux-points, juste en dessous : : Échantillons prélevés {#tbl:echantillons}. Et une équation en bloc reçoit son numéro dans la marge droite quand le $$ de fermeture porte {#eq:masse}. Cette fonction est désactivée : activez-la dans Paramètres → Fonctions → Académique → Numérotation et renvois. LightNote est un éditeur simple qui gère aussi un mémoire, et celui qui n'écrit pas de travaux académiques ne doit pas le payer avec des menus et des options qu'il n'utilise pas.-numeracao

Ensuite, il suffit de pointer : @fig:cycle devient Figure 1, [@fig:cycle] devient (Figure 1) et -@fig:cycle devient le numéro seul. C'est la même grammaire que la citation, à dessein. Insérer une figure au milieu renumérote tout tout seul — le compte appartient au document, dans l'ordre de lecture.

Numéroter est facultatif, par l'étiquette : une image sans {#fig:…} reste exactement comme aujourd'hui. Et une étiquette qui n'existe pas reste telle que vous l'avez écrite, comme la citation : c'est l'indice d'un renvoi cassé.

Sections numérotées (ABNT NBR 6024) : déclarez section-numbers: true dans les propriétés de la note et les titres reçoivent leur indicatif — 1, 1.1, 1.1.1 —, aligné à gauche, séparé par une espace et sans point final. Un titre avec {#sec:methode} peut être visé par @sec:methode ; sans numérotation, le renvoi devient le titre de la section.

Seuls sur une ligne, [list of figures] et [list of tables] construisent les listes exigées par la norme, comme [TOC] construit le sommaire. Tout cela relève du mode lecture (et du PDF/HTML exportés) : dans l'éditeur, le fichier conserve ce que vous avez écrit, et c'est ce qui permet de renuméroter sans toucher à la note.

Citations et références

Écrivez la citation dans le texte avec [@clé] : la clé est celle que l'œuvre porte dans votre bibliographie. En tapant @, LightNote propose les œuvres qu'il connaît, avec auteur, année et titre ; seule la clé entre dans la note. Existent aussi [@clé, p. 45] (avec la page), [-@clé] (quand le nom de l'auteur est déjà dans la phrase) et [@a; @b] (plusieurs œuvres à la fois). Cette fonction est désactivée : activez-la dans Paramètres → Fonctions → Académique → Citations et bibliographie. LightNote est un éditeur simple qui gère aussi un mémoire, et celui qui n'écrit pas de travaux académiques ne doit pas le payer avec des menus et des options qu'il n'utilise pas.-citacoes

En mode lecture, la citation devient du texte mis en forme — (Silva, 2020, p. 45) — et le jeton [bibliography] seul sur une ligne devient la liste des œuvres citées, dans l'ordre exigé par le style. Dans l'éditeur, la clé reste visible, car c'est elle que vous modifiez.

La bibliographie est un fichier de votre espace de travail : tout .bib, .ris ou .csl.json du dossier compte. C'est ce qui lui permet de voyager avec les notes via Git ou une clé USB et de continuer à fonctionner sur un autre ordinateur. Ouvrir un de ces fichiers montre la liste des œuvres avec la clé de chacune, prête à copier.

Pour ajouter des œuvres : Outils → Bibliographie → Ajouter une œuvre par DOI accepte un DOI ou un identifiant arXiv et va chercher le reste tout seul ; et Importer depuis Zotero lit la bibliothèque du Zotero 7 ouvert sur cet ordinateur (cochez d'abord Préférences → Avancé → Autoriser les autres applications de cet ordinateur à communiquer avec Zotero).

Le style appartient au dossier, et une note peut s'en écarter. Choisissez celui par défaut dans Outils → Configuration de l'espace de travail → Citations (ABNT, APA 7 ou Vancouver) ; une note destinée ailleurs déclare citation-style: apa dans ses propriétés. Une clé absente de la bibliographie reste telle que vous l'avez écrite, pour que vous voyiez laquelle corriger.

Graphe de connexions

Outils › Graphe de connexions (Ctrl+Alt+G) montre chaque note de l'espace de travail sous forme de graphe interactif : chaque nœud est une note .md, chaque ligne un wikilink. Les nœuds se placent tout seuls (physique animée) et peuvent être déplacés ; le survol met en évidence les voisins et atténue le reste ; un clic ouvre la note. Faites défiler pour zoomer (les noms apparaissent à mesure que vous approchez) et faites glisser le fond pour vous déplacer.

Dans la barre d'outils de l'onglet : filtre par nom (atténue les notes non correspondantes), une bascule pour les notes orphelines (sans aucun lien — affichées en gris), des curseurs de force (répulsion, distance et gravité), ajuster le graphe à la fenêtre et réanalyser les notes. Plus une note a de connexions, plus son nœud est grand ; chaque dossier de premier niveau reçoit sa propre couleur.

Notes similaires. La mini-barre Connexions, dans la note elle-même, liste les liens entrants, les liens sortants et les mentions par nom. À sa fin se trouve la section Notes similaires : des notes qui parlent de sujets proches même sans lien ni mot commun. Elle est calculée à la demande (cliquez sur Calculer), et non à chaque changement de note, car parcourir l'index coûte des lectures de disque. Chaque ligne montre le nom, le degré de proximité et l'extrait à l'origine de la suggestion — sans cette preuve, impossible de la juger. Cela ne consomme aucun appel d'IA : c'est l'index de sens déjà existant qui sert, donc la section n'apparaît qu'avec le renfort sémantique (embeddings) activé dans Paramètres → Général → Fonctionnalités.

Tables (Parquet, CSV, JSON, Excel)

Ouvrir et interroger

Les fichiers .parquet s'ouvrent comme une table ; .csv, .tsv et .json s'ouvrent comme du texte, et le menu contextuel de l'arborescence propose Ouvrir en tant que table. La lecture est paginée (à la demande) via DuckDB, avec le tri (cliquez sur l'en-tête) et le filtrage poussés jusqu'au moteur. Le bouton Structure montre les colonnes, les types, le nombre de lignes et, pour Parquet, les row-groups et la compression. La vue est en lecture seule.

La barre SQL libre en haut de la table accepte n'importe quelle requête DuckDB — la vue t représente le fichier ouvert. Depuis le menu contextuel d'un dossier dans l'arborescence, Ouvrir le dossier en tant que table lit tous les fichiers du même format comme une seule table ; depuis le menu de la table, vous pouvez exporter la vue actuelle (CSV/Parquet/JSON), et depuis le menu de l'arborescence, convertir un fichier tabulaire vers un autre format. Le SQL libre est aussi disponible dans la commande query de la ligne de commande et dans le MCP.

Les feuilles de calcul Excel (.xlsx) s'ouvrent comme une table en lecture seule avec un sélecteur de feuille — un lecteur léger, sans installation d'Excel.

Feuilles Excel

Fidèle au fichier. La feuille s'affiche avec la mise en forme du fichier lui-même : nombre, monnaie, pourcentage et date suivent le format défini dans Excel — une valeur enregistrée comme 3750.5 avec un format monétaire s'affiche 3 750,50 €, et un pourcentage sort en 15% au lieu de 0,15. Viennent aussi du fichier la police (nom, taille, gras, italique, souligné), la couleur du texte, la couleur de remplissage, les bordures de chaque cellule, l'alignement, le retour à la ligne, le retrait, le texte pivoté et la largeur des colonnes. Les nombres vont à droite et le texte à gauche, comme dans Excel.

Quand la feuille apporte ses propres couleurs, la grille est dessinée sur fond blanc : les couleurs d'Excel ont été choisies pour du papier blanc et seraient illisibles sur le thème sombre. Un fichier sans aucune mise en forme continue de suivre le thème de LightNote. La feuille s'ouvre dans l'ordre où elle a été écrite — un clic sur un en-tête trie, comme pour les autres tables.

Mise en page d'origine et zoom. Quand la feuille utilise des cellules fusionnées, des hauteurs de ligne propres ou masque le quadrillage, l'onglet s'ouvre en mode Mise en page d'origine (bouton de la barre), qui reproduit cette géométrie comme dans Excel. Le mode ne régit que la géométrie — couleur, police, bordures et format numérique valent dans les deux — et, tant qu'il est actif, trier et filtrer sont indisponibles, car réordonner laisserait la bande fusionnée sur la mauvaise ligne ; désactivez le bouton pour trier à nouveau. Une feuille sans rien de tout cela s'ouvre en mode normal. Le zoom est le même que dans toutes les vues et se trouve dans la barre d'état (voir Espace de travail et fenêtres) ; Ctrl+molette fonctionne aussi sur la grille. Une feuille mise en forme en tableau Excel apparaît aussi en couleur : son style est intégré à Excel et ne voyage pas dans le fichier, donc l'en-tête et les bandes sont reconstruits à partir du thème.

Copier, filtrer et graphique

Copier comme. Dans le menu contextuel de n'importe quel tableau de LightNote (Parquet/CSV/JSON, Excel, résultats SQL, Tâches, Bases), l'élément Copier comme place la sélection dans le presse-papiers déjà mise en forme. Tableau mis en forme (Teams, Outlook…) se colle comme un vrai tableau, avec bordures et en-tête, dans les programmes qui comprennent le texte enrichi — Teams, Outlook, Word, Excel (sans texte enrichi, il bascule automatiquement sur TSV). Les autres se collent en texte : tableau Markdown (prêt pour une note), CSV (guillemets selon la RFC 4180), TSV (séparé par tabulations), HTML (le balisage <table>), JSON, JSONL (un enregistrement par ligne), YAML et le sous-menu Code, qui génère un littéral prêt à coller dans un fichier source : Python (liste de dictionnaires) ou JavaScript / TypeScript (tableau d'objets). En JSON, YAML et code, les cellules qui sont des nombres sortent sans guillemets — mais le texte d'origine est préservé, donc les identifiants comme 007 restent du texte. Ctrl+C copie toujours en TSV, comme avant.

Tous les tableaux se comportent de la même façon : Ctrl+F place le focus sur le filtre rapide (« contient dans n'importe quelle colonne »), un compteur indique le nombre de lignes restantes et il y a Exporter en CSV — y compris dans les feuilles .xlsx, dans les Tâches et dans les Bases. Le menu contextuel de la grille propose toujours Copier comme.

Graphique du résultat. La barre latérale de la table comporte un bouton Graphique (barres, ligne ou nuage de points) : l'agrégation s'exécute dans DuckDB (aucune ligne brute n'est chargée), et un bouton Ajouter à la note du jour enregistre le graphique en image. Le panneau Structure inclut aussi un profil par colonne — un mini-histogramme des colonnes numériques et les valeurs les plus fréquentes des autres.

Plusieurs graphiques et tableau croisé dynamique. Pour croiser deux champs et en agréger un troisième — et pour conserver plus d'un graphique par tableau —, voyez Espace d'analyse.

Espace d'analyse : tableau croisé dynamique et plusieurs graphiques

Le graphique et les statistiques

L'onglet d'un tableau a deux modes, sur les boutons Données et Analyse de la barre. Données, c'est le tableau habituel ; Analyse, c'est un tableau de bord où cohabitent autant de graphiques et de tableaux croisés dynamiques que vous voulez sur la même source — chacun sur une carte, avec un titre modifiable, un bouton d'engrenage qui dévoile les sélecteurs et un menu ⋮ (déplacer, dupliquer, retirer).

De la vraie statistique. Outre les barres, la ligne et le nuage de points, le graphique fait une boîte à moustaches : une boîte par catégorie avec les quartiles, la médiane en trait épais et les moustaches à la limite de Tukey (1,5 × IQR) — et non au minimum et au maximum. Sur la moyenne d'une colonne, le sélecteur Erreur ajoute la moustache de dispersion : ± écart type (qui décrit les données), ± erreur type ou ± IC 95 % (qui décrivent la précision de la moyenne elle-même). Les trois n'apparaissent qu'avec la moyenne choisie, car « somme ± écart » ne veut rien dire. La case Axe Y log met l'échelle logarithmique, pour des données couvrant plusieurs ordres de grandeur ; s'il y a une valeur nulle ou négative, elle est ignorée avec un avis, car le logarithme n'y existe pas et écarter le point en silence ferait mentir le graphique. Sur le nuage, Tendance trace la droite de régression avec le R², ajustée dans la base sur toutes les lignes — et non sur les points échantillonnés affichés à l'écran. Sous le dessin figure une ligne de statistique descriptive de la colonne choisie (n, moyenne, écart, IC 95 %, minimum, quartiles, médiane et maximum), qui est une requête à part : la déduire des barres donnerait la moyenne des moyennes, qui ne coïncide avec la vraie moyenne que si tous les groupes ont la même taille.

Tableau croisé et totaux

Tableau croisé dynamique. Choisissez les champs qui vont en Lignes et en Colonnes (on peut en imbriquer plusieurs sur chaque axe ; le glisser-déposer réordonne les niveaux), le champ en Valeur et comment le réduire : Somme, Nombre, Nombre de valeurs distinctes, Moyenne, Minimum ou Maximum. Sans champ en Valeur, ce sont les lignes qui sont comptées. Il est aussi dans la mini-barre latérale du tableau, à côté du Graphique, pour un coup d'œil rapide sans quitter les données.

L'agrégation s'exécute dans la base et revient déjà réduite — aucune ligne brute ne remonte, si bien qu'un Parquet de dizaines de millions de lignes reste exploitable. Comme la requête est du SQL standard, le tableau croisé dynamique fonctionne sur toutes les bases du client SQL (SQLite, DuckDB, PostgreSQL, MySQL, SQL Server et Oracle), et pas seulement sur DuckDB comme le graphique.

Totaux. Les cases Totaux de ligne et Totaux de colonne ajoutent la ligne et la colonne de clôture. Pour la Moyenne, le total est pondéré, et non la moyenne des moyennes — qui serait fausse dès que les groupes n'ont pas la même taille. Un Nombre de valeurs distinctes ne peut pas être totalisé (l'union d'ensembles distincts ne découle pas de la somme des parties) : les cases y sont donc désactivées, avec la raison dans l'infobulle, plutôt que d'afficher un chiffre faux.

Où c'est enregistré, CSV et regrouper

Où l'analyse est enregistrée. Dans un JSON à côté du fichier de données (ventes.parquet → ventes.parquet.analysis.json) : un format ouvert, qui part dans Git avec la donnée et voyage avec elle vers un collègue. Le bouton Fichier de l'analyse ouvre ce JSON dans un onglet, et vider l'analyse supprime le fichier. Un dossier entier ouvert comme tableau n'a pas de chemin propre : cette analyse n'est donc pas enregistrée — le bouton le dit. Chaque carte a aussi Ajouter à la note du jour : le graphique part en image et le tableau croisé dynamique en tableau Markdown, qui reste dans la note du texte à copier et à modifier.

Pour un CSV, un seul geste — et une sortie quand le séparateur trompe. Ouvrir comme table ouvre via DuckDB, avec SQL libre, graphique, tableau croisé dynamique et espace d'analyse. Parfois le séparateur n'est pas reconnu (des lignes au nombre de colonnes différent en sont la cause habituelle) et la table arrive avec une seule colonne, la ligne entière dedans. Dans ce cas, un bandeau apparaît au-dessus de la table : il indique combien de colonnes le fichier semble avoir et propose la lecture tolérante, qui lit ligne à ligne sans exiger des colonnes égales — c'est la lecture qu'utilisent la recherche et l'IA — et qui filtre et trie, mais n'a ni SQL libre, ni graphique, ni tableau croisé dynamique. Pour un texte non encore enregistré, ou avec un délimiteur choisi à la main, utilisez Affichage → Afficher comme fichier délimité….

Grouper par motif. Dans une colonne de dates ou de codes, les valeurs distinctes sont presque aussi nombreuses que les lignes, et grouper par elles ne dit rien. Le masque de motif remplace chaque lettre par A et chaque chiffre par N, en laissant le reste : 2027/10/10 devient NNNN/NN/NN. Des millions de lignes se réduisent alors à deux ou trois formes — et ce qui leur échappe, c'est exactement la donnée sale (la date arrivée en 10-10-2027, le code sans son préfixe). Dans le graphique, c'est la case Motif à côté de l'axe X ; dans le tableau croisé dynamique, un clic droit sur la pastille d'un champ (c'est par champ, pour croiser la forme d'un code avec une dimension normale) ; et dans le panneau Structure, les motifs les plus fréquents apparaissent sous les valeurs les plus fréquentes de chaque colonne. Le calcul s'exécute dans la base. Sur SQLite et l'ODBC générique, l'option est désactivée avec la raison : la fonction de texte utilisée par le masque n'existe pas.

PDF et images

Les fichiers .pdf s'ouvrent dans un lecteur natif (Qt6::Pdf, sans dépendances lourdes), rendu sur le processeur et sans WebEngine. Les images s'ouvrent dans la vue image ; les GIF animés sont lus dans la vue animée.

La barre de l'onglet propose six panneaux latéraux, un à la fois : Sommaire (la table des matières enregistrée dans le fichier lui-même — si le PDF n'en a pas, le bouton est désactivé et l'explique), Miniatures (les pages d'un coup d'œil, rendues au fil du défilement), Rechercher, Liens, Propriétés (titre, auteur, dates, taille de la page et du fichier) et Surlignages (les passages que vous avez surlignés, dans l'ordre de lecture).

Rechercher (Ctrl+F) parcourt tout le document : les occurrences sont surlignées sur les pages et listées avec le texte qui les entoure, et F3 / Shift+F3 passent de l'une à l'autre. Le balayage est progressif, la liste grandit donc pendant le parcours.

Le champ de page accepte le numéro ou l'étiquette imprimée : dans un document dont les pages liminaires sont numérotées en chiffres romains, taper 1 mène à la page imprimée « 1 », pas au premier feuillet. Le bouton mode de page bascule entre défilement continu et une page à la fois.

Un PDF protégé par mot de passe demande le mot de passe à l'ouverture (jusqu'à trois essais) ; annuler laisse simplement l'onglet fermé. Au sein d'une même exécution de LightNote, le mot de passe n'est plus redemandé : l'application rouvre l'onglet d'elle-même lorsqu'elle le libère pour inactivité, et ce serait elle qui créerait la gêne. En cochant « Mémoriser le mot de passe de ce fichier » dans la demande, il vaut aussi pour les exécutions suivantes : il est protégé par Windows (pour vous seul, sur cette machine seulement), ne va jamais dans Git ni dans le cloud, et n'est pas emporté par l'export de configuration. Pour tous les effacer : Configuration → Fonctionnalités → Mots de passe PDF. Un PDF protégé n'est pas rouvert au démarrage — au lieu d'enchaîner des demandes de mot de passe avant d'afficher la fenêtre, il attend que vous l'ouvriez.

Dans le menu d'actions de la barre : copier le texte de la page, exporter le texte du document entier, copier ou enregistrer la page comme image et envoyer la page à la note du jour. Le panneau Liens existe parce que le composant PDF de Qt suit tout seul les liens internes mais ignore les externes — c'est là qu'une adresse web s'ouvre, avec confirmation.

Surligner. Le bouton Surligner active le marqueur : glissez sur le texte de la page et le passage est surligné ; la flèche à côté choisit la couleur. Le surlignage s'accroche au texte, pas à un rectangle — c'est pourquoi il suit le zoom et le mode de page sans se décaler, et pourquoi il ne fonctionne pas sur un PDF numérisé, qui n'a pas de couche de texte (l'application le dit au lieu de ne rien faire). Dans le panneau Surlignages, un clic saute à la page et le menu contextuel annote, copie le passage ou le supprime. Dans le menu d'actions de la barre, Copier les surlignages et Enregistrer les surlignages comme note… écrivent la fiche de lecture en Markdown : chaque passage en citation et, par page, un lien qui ouvre le PDF à cet endroit (article.pdf#page=12). Le prix : les surlignages sont enregistrés dans un fichier à côté du PDF (article.pdf.highlights.json, texte lisible et versionnable avec Git) et non à l'intérieur — ils apparaissent donc dans LightNote et pas dans un autre lecteur de PDF. Si le fichier est remplacé par une autre version, un surlignage qui a perdu sa place est signalé comme tel au lieu d'être peint sur la mauvaise phrase.

Limite : en dehors du marqueur, il n'y a pas de sélection de texte à la souris, car le composant PDF de Qt ne la propose pas. Pour emporter le contenu, utilisez « copier le texte de cette page », l'export du document ou le surlignage lui-même.

Images : annoter une capture

Les outils

Une image s'ouvre dans un onglet doté de sa propre barre : outre pivoter, retourner et zoomer, elle apporte les outils d'annotation — le chemin qui va de la capture d'écran à la mise en évidence de l'essentiel, puis à la documentation. Et il n'est pas nécessaire d'avoir une capture pour commencer : Nouveau → Nouvelle image vierge crée une feuille blanche .png dans le dossier marqué et l'ouvre avec le Stylo déjà en main — Déplacer, le mode par défaut à l'ouverture d'une image, n'aurait rien à faire glisser ici.

L'outil de départ est Déplacer : faire glisser déplace toujours l'image, comme auparavant. Sélectionner choisit une partie — glissez pour la créer, glissez depuis l'intérieur pour la déplacer et utilisez les poignées des coins et des bords pour la redimensionner ; Échap désélectionne et Suppr efface le contenu de la zone. En mode Déplacer, Shift+glisser sélectionne aussi. Dans n'importe quel outil, le bouton du milieu de la souris déplace l'image.

La Pipette prélève une couleur dans l'image elle-même : le bouton gauche l'envoie vers la couleur de bordure, le droit vers le remplissage. Elle lit l'image déjà annotée, ce qui permet aussi de reprendre la couleur d'une annotation que vous venez de faire.

Les autres dessinent : Rectangle, Ellipse, Flèche, Ligne, Surlignage (translucide, comme un marqueur), Stylo (tracé libre), Pinceau, Étape numérotée (qui se numérote seule — 1, 2, 3...), Texte, Flouter et Projecteur (assombrit tout sauf la zone choisie). Pendant le tracé, Shift verrouille les carrés/cercles et les angles de 45°.

Couleurs, épaisseur et flou

Il y a deux couleurs, dans deux boutons : celle de la bordure (qui est aussi celle du trait et de l'étiquette) et celle de remplissage, qui peut être aucune. Sans remplissage, le rectangle et l'ellipse ne sont que des contours, et l'étape numérotée comme le texte utilisent la couleur de bordure en fond, avec l'étiquette en blanc ou en noir — selon ce qui contraste. Si vous choisissez un remplissage, il devient l'intérieur de la forme et le fond de l'étiquette, et la bordure devient la couleur du texte.

Le Pinceau peint avec le remplissage, par une touche de la taille de l'épaisseur — ronde ou carrée, via le bouton voisin de l'épaisseur. Un simple clic laisse déjà la marque. Avec un remplissage blanc, c'est la gomme : il recouvre ce qui se trouve dessous.

L'épaisseur vaut pour le trait, pour la taille de l'étiquette et pour la taille du bloc du floutage ; elle est grisée dans les outils qui l'ignorent. La couleur et l'épaisseur sont mémorisées d'une session à l'autre. Ctrl+Z et Ctrl+Y annulent et rétablissent les annotations, et Effacer les annotations les supprime toutes d'un coup (annulable également).

Flouter sert à masquer (un jeton, une adresse e-mail, un chemin). Tant que l'onglet est ouvert l'annotation est réversible, mais à l'enregistrement ou à la copie les pixels de cette zone sont réellement détruits : le fichier qui sort ne conserve l'original nulle part.

Couper, coller, pivoter et capturer

Trois opérations portent des noms voisins et font des choses différentes. Couper (Ctrl+X) copie la sélection dans le presse-papiers et efface la zone, en la peignant avec la couleur de remplissage (blanc s'il n'y en a pas) — et la sélection reste en place, si bien que Coller juste après ramène le morceau exactement là d'où il venait, flottant : c'est ainsi qu'on déplace un morceau de l'image. Suppr, c'est couper sans copier. En revanche Ne garder que la sélection, dans le menu Image, fait l'inverse : elle garde la zone et jette le reste, ce qui change la taille de l'image.

Le reste de la famille : Copier emporte l'image annotée ou seulement la sélection ; Coller apporte l'image du presse-papiers sous forme de collage flottant — déplacez-la et redimensionnez-la avec les mêmes poignées, puis cliquez à côté (ou appuyez sur Entrée) pour la conserver, Échap l'abandonne ; et Ctrl+A (ou Ctrl+T) sélectionne toute l'image. S'y ajoutent Enregistrer (inscrit les annotations dans le fichier lui-même), Enregistrer sous... et Envoyer vers la note du jour, qui écrit le PNG dans Anexos/ et insère le ![]() dans la note. Tant qu'il reste des annotations non enregistrées, l'onglet garde l'astérisque, et le fermer demande si vous voulez enregistrer.

Le bouton Image rassemble tout ce qui agit sur l'image entière : pivoter, retourner, redimensionner en pourcentage, réduire à 1600 / 1200 / 800 px de large (une capture d'écran naît bien trop grande pour la documentation), rogner les bordures de couleur uniforme, ajouter une marge, ombre portée et graver les annotations dans l'image — ce dernier transforme les annotations en pixels sur-le-champ, ce qui permet de flouter par-dessus une annotation. Le redimensionnement emporte les annotations et l'épaisseur du trait.

Pour capturer l'écran sans quitter LightNote : Capturer l'écran... dans le menu de la zone de notification (ou Ctrl+Alt+P) fige le bureau, vous faites glisser pour choisir la zone (Échap annule) et le découpage s'ouvre dans un nouvel onglet, prêt à être annoté.

Limites : une annotation déjà tracée ne se déplace ni ne se modifie — annulez-la avec Ctrl+Z et refaites-la ; les GIF et WebP animés s'ouvrent dans la vue d'animation, qui n'a pas d'annotation ; et un .svg est rastérisé à la lecture, donc l'enregistrement demande une destination PNG.

Pages HTML (.html)

Un .html ouvert depuis l'arborescence devient un onglet d'aperçu doté d'un vrai moteur de mise en page : flexbox, blocs flottants, positionnement, media queries, dégradés, variables CSS et sélecteurs CSS3. C'est ce qui fait qu'un rapport moderne — celui qu'une IA produit avec des cartes d'indicateurs, un tableau et un graphique — s'affiche comme dans le navigateur au lieu de se réduire à un mur de texte.

Le texte est sélectionnable : faites glisser pour sélectionner, double-cliquez pour prendre un mot, Ctrl+A sélectionne toute la page et Ctrl+C copie (le menu contextuel propose Copier et Tout sélectionner).

La barre du haut propose le Sommaire (les titres de la page ; cliquez pour y sauter) et Rechercher (Ctrl+F — met en évidence toutes les occurrences, F3 et Shift+F3 se déplacent entre elles, Échap ferme). Le zoom a quitté la barre de l'onglet : il tient en un seul endroit, la barre d'état, comme dans toutes les vues (voir Espace de travail et fenêtres).

Exporter en PDF pagine la page en A4 avec le texte vectoriel — le PDF reste consultable et le texte sélectionnable. L'onglet suit aussi le fichier sur le disque : régénérez le rapport et il se met à jour tout seul sans perdre la position de lecture. Et une page qui n'a pas choisi ses propres couleurs suit le thème de l'application ; celle qui définit les siennes s'affiche telle qu'elle a été conçue.

Les liens fonctionnent : un lien vers un autre fichier du même dossier s'ouvre ici même, #ancre défile jusqu'à la section, et une adresse web s'ouvre dans votre navigateur.

Ce qu'il ne fait pas, c'est le JavaScript et le réseau — rien n'est téléchargé. Quand la page en dépend (script, <canvas>, <iframe> ou une ressource distante), un bandeau propose Ouvrir dans le navigateur. Conseil pour les rapports : demandez à l'IA un HTML sans JavaScript et sans CDN, avec le graphique en SVG intégré — il s'ouvre alors complet ici.

Malgré cela, certaines choses réagissent au clic, sans exécuter le moindre script : une boîte <details> s'ouvre et se referme depuis son en-tête (et la barre gagne Tout développer quand la page en contient une), un ensemble d'onglets change le panneau visible, et cliquer sur l'en-tête d'un tableau trie les lignes — recliquer sur la même colonne inverse l'ordre, et une colonne de nombres se trie par valeur, pas comme du texte. Quand le couple onglet→panneau n'est pas sans ambiguïté, rien n'est modifié : la page reste telle qu'elle est arrivée.

respondem ao clique

Deux ajustements se font tout seuls, car le moteur ne les a pas : display:grid et gap deviennent le flexbox équivalent, et le <svg> intégré est dessiné. box-shadow est ignoré. Pour revenir à l'ancien afficheur, décochez Afficheur HTML avec mise en page complète dans Paramètres → Général → Fonctionnalités.

Imprimer

Fichier → Imprimer… (Ctrl+P) ouvre un aperçu paginé : la feuille apparaît telle qu’elle sortira, avec les marges, le saut de page et la numérotation. Le bouton d’impression se trouve dedans, à côté du zoom, de la navigation entre les pages et de la configuration du papier. La note, le code, la page HTML, l’image et le PDF ouvert s’impriment ; sur les autres écrans l’élément reste grisé en indiquant pourquoi. Le même bouton se trouve dans la barre de chaque écran : dans la note, à côté de celui d'exporter ; et dans le code, le PDF, l'image et la page HTML, dans leur propre barre.

Ce qui arrive sur le papier est ce que montre le mode lecture : transclusion résolue, numérotation des figures en place et le commentaire privé (%%…%%) en dehors. Avec un thème de contenu sombre la feuille sort sur papier blanc — une page noire gaspillerait de l’encre et jurerait avec tout document remis à quelqu’un. Les marges sont de 20 mm sur les côtés et de 15 mm en haut et en bas, et le pied de page porte Page X sur Y. Dans l'aperçu, le bouton Marges bascule entre les marges du document et le minimum que l'imprimante atteint ; pour un PDF et pour une image, il démarre au minimum, car le fichier porte déjà sa propre marge. À côté, Thème change les couleurs de l'impression : la valeur par défaut est automatique (c'est elle qui transforme un thème sombre en papier blanc), et la liste propose les thèmes clairs du catalogue et les vôtres — qui lit en Dracula Dark peut imprimer en Dracula Light, le même langage de couleur conçu pour le papier. Les sombres sont exclus car sur papier ils coloreraient la feuille entière. Le thème déjà utilisé est marqué (actuel) dans la liste : le choisir ne change pas la feuille.

Dans le code, la syntaxe sort colorée sur papier blanc, avec les numéros de ligne dans la marge, et la ligne longue est renvoyée au lieu d’être coupée : sur le papier il n’y a pas de défilement horizontal pour atteindre ce qui dépasse la marge. L’image sort avec les annotations que vous avez dessinées, et une petite image n’est pas agrandie — elle sort à sa taille, centrée sur la feuille. Un GIF imprime l’image actuellement affichée.

Imprimer un PDF depuis LightNote rastérise les pages, et vos surlignages suivent ; pour la meilleure qualité typographique, imprimez le PDF depuis le lecteur du système, où le texte reste vectoriel. L’export en PDF (Fichier → Exporter la note) est autre chose et reste comme il a toujours été : qui veut le numéro de page ou les marges de document aussi dans le fichier coche les deux cases dans Exporter avec options… — elles sont décochées pour ne pas changer le PDF de ceux qui exportent déjà. Dans un document très long, l'aperçu est ignoré, car il conserve toutes les pages en mémoire en même temps ; l'application passe directement à la boîte de dialogue d'impression, qui n'a pas cette limite.

Zip comme un dossier (.zip)

Un .zip s'ouvre dans son propre onglet : l'arborescence des membres à gauche (nom, taille, date) et le contenu du membre sélectionné à droite — texte/code, Markdown (rendu), image ou PDF — ouvert en mémoire, sans rien extraire sur le disque. Le texte et le Markdown peuvent être modifiés : Ctrl+S réécrit le membre à l'intérieur même du .zip.

Le même onglet ouvre .7z, .rar, .tar (y compris .tar.gz, .tar.bz2 et .tar.xz), .cab et .iso — ceux-ci en lecture seule : on peut parcourir, visualiser et extraire des membres, mais pas éditer. Seul le .zip est modifiable, car c'est le seul format que nous savons réécrire sans risque (le .rar est propriétaire et même les bibliothèques libres ne le compressent pas).

Les images et les PDF sont en lecture seule ; les très gros membres (et les .parquet) ne proposent que Extraire vers…. La création, le renommage ou la suppression de membres ne sont pas pris en charge.

Les membres protégés par mot de passe se lisent normalement : à l'ouverture de l'un d'eux, LightNote demande le mot de passe (jusqu'à trois essais) et, en cochant « Mémoriser le mot de passe de ce fichier », ne redemande plus — dans la même exécution par défaut, et aussi lors des suivantes si la case est cochée (protégé par Windows, pour vous seul sur cette machine ; effacez-les tous dans Configuration → Fonctionnalités). Notez une différence du format par rapport au PDF : dans un .zip, le chiffrement est par membre et l'index reste en clair, donc la liste des fichiers s'affiche entièrement même sans le mot de passe — seul le contenu est protégé. Un .zip contenant des membres chiffrés n'est pas rouvert au démarrage.

Blocs (.lnb)

Un bundle Blocs est un dossier dont le nom se termine par .lnb, traité comme un seul élément dans l'arborescence (double-clic pour l'ouvrir). Chaque bloc est un vrai fichier sur le disque ; l'ordre vit dans un blocks.json à la racine du bundle. Cela fonctionne comme un notebook : des cellules empilées de code ou de texte. Un notebook Jupyter entre par ici : clic droit sur un .ipynb dans l'arborescence, puis Importer comme Blocs (.lnb). Chaque cellule devient un vrai fichier — versionnable et lu par la recherche — et le .ipynb reste où il était, car importer n'est pas convertir. Les sorties enregistrées dans le notebook ne suivent pas : exécuter la cellule ici produit le vrai résultat, avec son instant et sa commande.

Chaque cellule a un nom, un bouton de type (définit l'interpréteur/le lexer) et des boutons pour copier, insérer, supprimer et exécuter. Exécuter jusqu'ici exécute en séquence toutes les cellules de code jusqu'à la cellule actuelle ; la sortie (stdout+stderr) apparaît dans un panneau juste sous la cellule. Créez-en un depuis l'arborescence (Nouveau) ou via Fichier → Nouveau.

Ctrl+Entrée exécute la cellule qui a le focus — le même geste que l'éditeur SQL.

Le résultat est enregistré (comme dans un cahier de laboratoire) : à la fin, chaque exécution devient un fichier .md dans saida/<cellule>/, au sein du bundle — avec l'instant, le code de sortie, la durée, la commande et la sortie elle-même. Étant du Markdown, il se lit dans n'importe quel éditeur, se versionne dans Git avec le notebook et est retrouvé par Chat IA. Rouvrir le bundle fait revenir le bandeau Dernière exécution au-dessus du panneau : cliquez dessus pour voir le résultat sans relancer.

Historique : le bouton Historique à côté de ce bandeau liste les exécutions précédentes de cette cellule (instant et code de sortie) — pratique pour comparer ce que la même cellule a renvoyé au fil du temps. Nous conservons les 10 plus récentes par cellule ; pour changer cela, modifiez la clé historyLimit dans le blocks.json du bundle (0 désactive l'enregistrement). Une sortie très volumineuse est coupée (le fichier indique truncated: true). Renommer la cellule ou changer son type emporte l'historique ; supprimer la cellule envoie son historique à la Corbeille.

Cellule SQL sur une vraie base : pointez le notebook vers une connexion .lnc depuis le bandeau du haut (Choisir une connexion…) et les cellules de type sql s'exécutent alors dans la base, et non via un interpréteur. Le résultat d'un SELECT devient un tableau dans le fichier de sortie (du vrai Markdown, que n'importe quel visualiseur affiche formaté) ; INSERT/UPDATE et consorts indiquent combien de lignes ont changé, et une erreur de la base arrête le script en consignant l'instruction fautive. Nous ramenons jusqu'à 100 lignes par requête (le fichier le signale s'il y en avait plus) — le résultat est une note, pas une copie de la table.

La connexion vit dans blocks.json sous forme de chemin relatif : le notebook continue de fonctionner si vous déplacez ou synchronisez le dossier. Pour un notebook autonome, rangez le .lnc lui-même dans le bundle : il compte comme configuration et ne devient pas une cellule. C'est la même connexion que l'onglet Base de données — se connecter d'un côté vaut de l'autre, et le mot de passe suit les règles de la Phrase Sécurisée. Sans connexion définie, une cellule sql s'exécute toujours via l'interpréteur configuré, comme avant.

Tâches (Kanban / Gantt)

Un bundle Tâches (.lnt) ouvre un tableau de tâches avec les vues Kanban (colonnes de statut, glissez les cartes), Gantt (planning basé sur l'effort) et calendrier. Chaque tâche peut avoir un titre, une colonne (statut), un effort en heures et une note .md associée. Les tâches sont aussi accessibles par l'IA, via le MCP et la CLI (créer, déplacer, mettre à jour, lire/écrire la note).

La note de la tâche est une note comme les autres. Le panneau intégré affiche désormais le même écran que les notes .md : Ctrl+E alterne éditeur de texte, lecture et édition formatée, et le thème de la note, le sommaire et les propriétés s'appliquent. Elle continue de s'enregistrer seule — y compris ce que vous venez de taper en mode formaté, au changement de tâche ou à la fermeture de l'onglet. Ouvrir la note dans son propre onglet suit aussi votre préférence d'affichage au lieu d'imposer l'éditeur de texte.

Champs par tâche : outre le statut et l'effort, chaque tâche a une priorité (colore la bordure de la carte et trie la Table), une date d'échéance (pastille rouge en cas de retard), plusieurs étiquettes, une liste de contrôle de sous-tâches (badge de progression sur la carte) et une récurrence (terminer une tâche récurrente génère l'occurrence suivante). Modifiez-les depuis le menu contextuel (Table/Kanban) et dans le panneau Propriétés.

Capture et listes : la Tâche rapide de la zone de notification comprend le langage naturel (p. ex. Pay bill tomorrow 5pm #home !high ; les mots de date, d'heure et de priorité sont reconnus en anglais et en portugais). Le bouton Modèles enregistre/applique des modèles de tâche ; les Listes par échéance filtrent Aujourd'hui/7 prochains jours/En retard ; les Vues enregistrées conservent filtre+tri ; et la zone de notification/le Lanceur affichent des rappels pour les tâches dues aujourd'hui ou en retard.

Tableau Kanban : vous pouvez grouper les colonnes par statut, priorité ou étiquette, créer des couloirs (swimlanes), définir des limites de WIP par colonne (l'en-tête devient rouge en cas de dépassement) et trier les cartes. Navigation au clavier de style Linear : ←/→ déplacent le focus, Ctrl+←/→ déplacent la carte, N crée, Espace termine/rouvre et Suppr supprime. Il y a aussi la vue Calendrier (par date d'échéance).

Note intégrée : sélectionner une tâche affiche sa note .md à côté des vues (enregistrée automatiquement au changement de tâche) ; le bouton Note active/désactive l'éditeur et Ouvrir la note dans un onglet l'ouvre dans son propre onglet. Archiver une tâche la masque de toutes les vues ; le commutateur Afficher les archivées révèle les tâches archivées (atténuées).

Dans Réglages des tâches, vous définissez Archiver les tâches terminées après N jours : à l'ouverture du tableau, les tâches restées dans la dernière colonne plus longtemps que cela sont archivées automatiquement (0 = désactivé).

La note s'ouvre intégrée par défaut (double-clic sur la tâche) et s'enregistre toute seule pendant la saisie — les Tâches ne demandent jamais « enregistrer ? » à la fermeture. Les actions d'IA (Ctrl+K / Ctrl+I) fonctionnent dans la note.

Barre de l'onglet. Les actions qui dépendent de la tâche sélectionnée (Supprimer, Dépendances, Historique (Git)) et Exporter en CSV sont dans le bouton ⋮. Le bouton Vues regroupe les listes par échéance, les vues enregistrées et afficher les archivées — tous agissent sur le Tableau. Ctrl+F place le focus sur le filtre rapide et le compteur à droite indique combien de tâches le filtre a laissées.

Table personnalisée (.lnd)

Une Table personnalisée (.lnd, dans Fichier → Nouveau) est votre mini base de données : vous définissez les colonnes à l'exécution — texte, nombre, date, liste fixe avec couleurs, chemin, étiquettes et mot de passe — et remplissez les lignes comme une feuille de calcul, avec tri et filtrage. Un champ chemin regroupe les lignes dans une arborescence (ex. Maison/Bureau).

Les cellules mot de passe sont chiffrées individuellement avec la Phrase-Sécurité et révélées à la demande. Comme les Tâches, le bundle persiste sous forme de texte compatible Git (NDJSON) — il peut être versionné et fusionné entre machines.

Dans les colonnes texte, ouvrir une cellule affiche un éditeur multi-ligne flottant : Entrée insère un saut de ligne et Ctrl+Entrée confirme ; la grille affiche le texte sur une seule ligne (avec …) et le contenu complet dans l'info-bulle. Pour changer le type d'une colonne, utilisez le menu de l'en-tête : convertir texte → mot de passe chiffre les valeurs avec la Phrase-Sécurité ; convertir mot de passe → texte demande une confirmation et le PIN/la Phrase-Sécurité et écrit le contenu en texte clair (irréversible). Les autres conversions conservent les valeurs.


Bases (requêtes enregistrées sur vos notes)

Une Base (.lnq, dans Fichier → Nouveau → Nouvelle Base) est une requête enregistrée sur vos notes : filtrez par type et par propriétés et affichez le résultat sous forme de tableau ou de tableau de bord. Une Base ne stocke aucune donnée — les lignes sont vos notes .md et la source de vérité de chaque cellule est le frontmatter de la note. Supprimer un .lnq ne perd aucune note.

Modifier une cellule écrit dans la note. Dans le tableau, changer une propriété ne réécrit que cette ligne du frontmatter du fichier. Dans le tableau de bord, faire glisser une carte d'une colonne à une autre écrit la nouvelle valeur de la propriété de regroupement (par exemple passer de en cours à lu).

Chaque note déclare ses propriétés dans le frontmatter (type, status, auteur…). Utilisez le panneau latéral Propriétés de la note pour les modifier comme des champs typés (texte, nombre, date, case à cocher) plutôt qu'en YAML brut — voir Notes en Markdown.

Le fichier .lnq est du NDJSON (un enregistrement par ligne), conçu pour Git : deux machines peuvent modifier la même Base en parallèle — l'une ajoute une colonne, l'autre ajuste un filtre — et la fusion conserve les deux changements sans conflit.

Schéma déclaré (facultatif). Par défaut, LightNote déduit les champs de chaque type de ce que les notes utilisent déjà — vous n’avez rien à déclarer. Pour figer le schéma, ouvrez Outils → Types de note... (ou le bouton d’engrenage de la mini-barre Propriétés de la note) : déclarez les champs de chaque type, leur type de donnée (texte, nombre, date, case à cocher, liste d’options) et un modèle par défaut. Avec un schéma, un champ liste d’options devient une liste déroulante des valeurs autorisées, les champs déclarés apparaissent dans les sélecteurs de colonne et de filtre de la Base même avant qu’une note ne les utilise, et le bouton Appliquer le modèle du type insère le squelette de la note. Le schéma vit dans .lightnote/types.ndjson — du NDJSON fusionnable, versionné dans Git avec les notes ; le supprimer ne modifie aucune note, cela revient simplement à la déduction.

Dates relatives dans le filtre. Dans la valeur d'une condition, des termes comme today, yesterday, tomorrow, 7 days ago et in 2 weeks fonctionnent (également 3 months ago, in 1 week). Ainsi, échéance = today et échéance < today (en retard) valent encore demain — avant, il fallait écrire la date du jour à la main et la requête enregistrée vieillissait en 24 h. La valeur est toujours un point dans le temps ; la plage vient de sa composition avec l'opérateur : modifié > 7 days ago veut dire « touché cette semaine ». Une note sans date lisible dans ce champ n'entre dans aucune comparaison de date, pas même la négative. Une date ISO écrite à la main (2026-09-01) reste du texte.

L'index tourne en arrière-plan. La Base et Outils → Interroger les notes (SQL) parcourent les notes avant d'afficher le résultat — un stat par fichier et la lecture de celles qui ont changé depuis la dernière fois. Cela se passe désormais hors de la fenêtre : la Base s'ouvre tout de suite en affichant Indexation des notes… dans sa barre, puis se remplit à la fin ; le bouton Réindexer reste désactivé entre-temps, car un second parcours du même dossier n'apporterait rien.


Recherche dans les fichiers et éléments en attente

Chercher dans les fichiers et les documents

Utilisez Ctrl+Shift+F pour la recherche globale dans l'onglet Recherche de la barre latérale, propulsée par ripgrep : elle prend en charge les regex, la sensibilité à la casse, le mot entier et le remplacement en masse. Dans le fichier actuel, Ctrl+F recherche et Ctrl+H remplace.

La recherche atteint aussi les documents. Au-delà des notes .md, elle lit le texte des PDF, des feuilles de calcul (.xlsx/.ods), des documents Word (.docx), du texte LibreOffice (.odt), des présentations (.pptx) et des livres (.epub). Il en va de même pour le Chat IA et pour la recherche par sens. Un résultat dans un PDF ouvre le fichier à la page de l'extrait. Le texte extrait vit dans un cache hors de l'espace de travail, se met à jour tout seul quand le fichier change, et est supprimé dès que le fichier n'existe plus. La première fois coûte : ouvrir un espace de travail avec beaucoup de PDF lance une extraction qui prend des minutes, et tant qu'elle n'est pas finie les documents ne sont pas encore dans la recherche. L'onglet Rechercher le dit pendant ce temps — préparation des documents (12 sur 80) — et prévient quand relancer la recherche. Dès la deuxième fois, seul ce qui a changé est refait.

Sont aussi couverts : .rtf, .xps/.oxps, les présentations LibreOffice (.odp), les sous-titres vidéo (.srt/.vtt), les tableaux en texte (.csv/.tsv), les pages enregistrées (.html/.mhtml), les courriels archivés (.eml), les carnets Jupyter (.ipynb), les bibliographies (.bib/.ris) et les fichiers en texte brut (.txt). Les langages de balisage de texte ont leur propre lecteur : reStructuredText (.rst), AsciiDoc (.adoc), Org (.org) et Typst (.typ). La section devient un titre, la liste et le tableau deviennent les nôtres, la formule est dessinée, et le préambule reste dehors : sans cela, #set page(...) et :stem: latexmath deviendraient des extraits indexés, et le nom de la section ne voyagerait pas avec son texte. Un résultat dans un sous-titre ouvre à l'instant où la phrase a été prononcée. Un PDF numérisé ne disparaît pas en silence. Un document qui a des pages et aucun texte (une photo de chaque page, sans OCR) entre dans l'index avec une ligne qui le dit, et l'onglet Rechercher indique combien il y en a — sans cette phrase vous chercheriez quelque chose qui est dans le livre, ne le trouveriez pas et concluriez que la recherche est cassée. Et vous pouvez le rendre lisible : avec Tesseract installé (LightNote propose de l'installer en un clic), le menu ⋯ du PDF propose Reconnaître le texte (OCR)…. Il tourne une fois, par document et peut prendre plusieurs minutes — ensuite le texte est dans l'index comme celui de n'importe quel PDF. L'avertissement de l'onglet Rechercher mène au premier document dans ce cas. Le cache conserve le texte en clair. Il se trouve dans votre dossier utilisateur, hors de l'espace de travail : qui y a accès y lit le contenu de vos documents, même si l'original est sur un disque chiffré. Un fichier .lne (la note chiffrée) n'entre jamais dans le cache — il existe précisément pour ne pas être lisible sur le disque.

Le LaTeX passe par un lecteur qui lui est propre. Un fichier .tex n'est pas lu comme du texte brut : le préambule reste dehors, \section devient un titre, \cite devient [@key] et la formule passe entière — c'est le moteur qui dessine les mathématiques de vos notes qui la dessine. Un résultat ouvre le fichier à la ligne d'où il vient. Le menu contextuel du fichier — ou la barre de l'onglet, quand il est ouvert — propose Importer comme note (.md) : la note naît à côté, le .tex reste où il est et importer deux fois n'écrase rien. Le chemin inverse est Exporter en LaTeX (.tex)..., dans la barre de la note.

Aperçu du document et code source

Ouvrir un document affiche un aperçu du texte. Un .docx, .odt, .epub ou .pptx s'ouvre en lecture seule, avec le texte extrait et les images du document — sans les styles Word, le positionnement des images, les tableaux complexes ni le suivi des modifications. L'onglet reste le document : son nom, son dossier et la session pointent vers lui, pas vers le cache. Une feuille .xlsx continue de s'ouvrir dans la vue tableau, qui montre bien plus.

Transformer le document en note. Depuis Fichier → Importer un document comme note... (plusieurs à la fois), le menu contextuel de l'arborescence ou le bouton Importer comme note (.md) de l'aperçu lui-même, un fichier .docx, .odt, .epub, .rtf, .pptx, .html, .eml, PDF ou LaTeX devient une note modifiable à côté du fichier. Viennent avec lui le texte avec titres, listes, liens et tableaux, les notes de bas de page, les équations Word en formules LaTeX et les images, enregistrées dans le dossier Pièces jointes à côté de la note. Le titre, l'auteur et la date du document deviennent des propriétés, et source indique de quel fichier vient la note. L'original reste où il était — importer n'est pas convertir — et importer à nouveau crée nom 02.md au lieu d'écraser ce que vous avez modifié. Ce n'est pas proposé pour le notebook Jupyter (qui devient des Blocs), le .csv (qui s'ouvre en tableau), la bibliographie .bib/.ris (que les citations lisent directement) ni le code source. La structure vient des styles du document : un titre Word est reconnu même quand le nom du style est traduit, les styles de caractère donnent le gras, l'italique et le code, les paragraphes de citation et de code deviennent nos blocs, et la table des matières automatique devient un [TOC] que la note tient à jour ; du .rtf viennent les listes, les tableaux et les liens, et du HTML — y compris celui qu'enregistrent Word et Google Docs — et de l'EPUB viennent les titres, les listes imbriquées et les tableaux.

Voir ce que le dossier utilise d'un autre éditeur. Dans Outils → Vérifier la compatibilité du dossier..., LightNote lit les notes du dossier ouvert et répartit ce qu'il a trouvé en trois groupes : ce qu'il affiche (wikilink, transclusion, encadré, étiquette, surlignage, formule, note de bas de page, tâche, marqueur de bloc), ce qui reste dans le fichier sans être affiché (la requête de plugin dataview, tasks ou query, le canevas .canvas, la base .base et la transclusion de bloc) et ce qui peut être converti vers l'écriture d'ici. Convertir est votre choix, jamais un effet de l'enregistrement : cochez les constructions, regardez l'aperçu côte à côte et confirmez — chaque fichier modifié reçoit un point dans l'Historique du fichier avant d'être écrit, et ce qui est ouvert avec des modifications non enregistrées est laissé de côté. Il y a deux conversions aujourd'hui, et aucune ne coûte quoi que ce soit du côté d'Obsidian, qui lit les deux écritures : le lien obsidian:// de ce dossier devient [[note]] — celui qui vise un autre coffre n'est pas converti, car la destination changerait — et la note de bas de page en ligne ^[texte] devient [^n], avec la définition à la fin.

Faire venir tout un fonds Notion. Dans Notion, utilisez Export → HTML (ou Markdown & CSV) avec Include subpages, placez le .zip téléchargé — ou le dossier — dans votre espace de travail, créez le dossier de destination et lancez lnote vault-import --path <export> --out <destination> (ou l’outil vault_import, depuis l’assistant IA). Inutile de décompresser, même l’export de l’espace entier, qui contient un autre .zip. Chaque page devient une note : les propriétés de la page deviennent des propriétés de la note, l’encadré coloré de Notion devient notre boîte (en HTML, c’est la couleur qui décide du type ; le Markdown ne garde pas la couleur, et la boîte arrive comme note), une tâche arrive avec sa case cochée ou non, une équation devient une formule LaTeX, un bloc dépliable devient une boîte <details> (et un titre dépliable devient un titre), la table des matières de la page devient [TOC], et les liens entre les pages sont réécrits vers les nouvelles notes — deux pages de même titre coexistent, car la seconde devient nom 02.md et les liens pointent toujours vers la bonne. Les bases de données sont copiées en .csv dans Anexos, et un #sujet écrit dans Notion reste du texte : ce n’était pas une étiquette là-bas, et il n’en devient pas une ici. Rien n’est écrasé, et une note de rapport est écrite à côté : elle dit combien de notes et de pièces jointes sont entrées et liste les liens qui n’ont trouvé aucune cible — ceux-là restent exactement tels qu’ils étaient écrits.

Le geste est dans le menu. Fichier → Importer depuis une autre application... ouvre l'assistant : choisissez le dossier ou le .zip que vous avez exporté (un .enex d'Evernote convient aussi) et l'application d'origine est reconnue à la forme des noms de fichiers — sinon, choisissez-la dans la liste à côté. Le dossier est lu en entier, sous-pages comprises. La destination est déjà remplie avec un nouveau dossier dans l'espace de travail, au nom de l'application, pour que l'archive ne se mélange pas à vos notes. La lecture et l'écriture se font hors de la fenêtre, et à la fin l'écran indique combien de notes et de pièces jointes sont entrées et combien de liens ont été réécrits.

Cinq applications. De Notion, le dossier ou le .zip exporté en HTML ou en Markdown ; d'Evernote, le .enex ; de Joplin, le .jex (ou le dossier MD + Front Matter) ; de Logseq, le dossier du graphe — celui qui contient logseq/config.edn ; et de Roam Research, le .json de l'export. Partout, le carnet et l'espace de noms deviennent des dossiers, le journal va dans le dossier des notes quotidiennes sous le nom aaaa-MM-jj, une tâche devient - [ ], un surlignage devient ==comme ceci== et une référence de bloc devient le texte de ce bloc entre guillemets avec le lien vers sa page : aucune syntaxe d'une autre application n'entre dans votre espace. Ce qui n'a pas d'équivalent ici, comme une requête Logseq ou un tableau Roam, reste en code dans la ligne, et le rapport indique combien de fois.

Le code source peut lui aussi entrer dans la recherche par sens. Dans Espace de travail → Paramètres de ce dossier se trouve Inclure le code source dans la recherche par sens : les fichiers de code sont indexés avec les notes, un extrait par fonction ou classe — c'est ce qui permet à une question comme « où est-ce que je traite le timeout ? » de retrouver la fonction entière plutôt qu'un morceau coupé au milieu d'un if. Le .gitignore est respecté. C'est désactivé par défaut, et par dossier : les notes changent lentement, le code change toute la journée, et un dépôt de travail produit des dizaines de milliers d'extraits — chacun étant un appel facturé par votre fournisseur d'embeddings.

Surlignage, repères et Éléments en attente

La surbrillance et les marques sont deux choses différentes. La recherche rapide (Ctrl+F) ne fait que mettre en surbrillance les occurrences en ambre : c’est temporaire et cela disparaît dès que vous fermez la barre ou videz le champ. Tout marquer dans Édition → Recherche avancée… est au contraire votre décision : les occurrences passent en rouge et le signet (le point bleu dans la marge) est ajouté sur les lignes concernées, où il reste jusqu’à ce que vous utilisiez Effacer les marques. Les deux sont indépendants : fermer la recherche rapide n’efface pas ce que vous avez marqué, et effacer les marques n’efface pas la surbrillance de la recherche. Tous deux apparaissent dans la bande du minimap, chacun dans sa couleur. Effacer les marques ne retire que les pastilles créées par Tout marquer : un signet que vous avez posé à la main (Ctrl+F2) sur une ligne correspondant à la recherche reste en place.

La section Éléments en attente de la barre latérale réunit au même endroit les marqueurs TODO/FIXME du code et les tâches (- [ ]) des notes Markdown de l'espace de travail — cliquez pour sauter directement à la ligne.

Suivi de version (Git facile)

Cloner un dépôt

Pour travailler sur un dépôt qui existe déjà, utilisez Fichier → Cloner un dépôt Git... — l'élément se trouve aussi sur l'écran d'accueil et dans le panneau de suivi de version d'un dossier qui n'est pas encore un dépôt. Collez l'adresse HTTPS ou SSH affichée sur la page du dépôt ; l'URL de la page elle-même convient, et une commande git clone ... copiée entière aussi. Choisissez le dossier de base et le nom du dossier : l'assistant montre où il sera créé et prévient quand il y a déjà quelque chose. Les Options avancées contiennent la branche, le clone superficiel (seulement le dernier commit) et les sous-modules.

Quand le serveur demande une connexion, LightNote pose la question dans une fenêtre : utilisateur et jeton, la phrase de passe de la clé SSH, ou la confirmation de la clé d'un serveur que cet ordinateur n'a jamais vu — la fenêtre affiche alors l'empreinte et le lien vers la liste publiée par le service, et le choix par défaut est ne pas faire confiance. La réponse va directement à Git et LightNote ne la conserve pas ; c'est le gestionnaire d'identifiants de Git qui la conserve, lorsqu'il est installé (Git for Windows fournit le Git Credential Manager). Faire confiance à la clé l'écrit dans ~/.ssh/known_hosts, comme le ferait ssh lui-même.

Si le clonage échoue, l'écran dit ce qui s'est passé et propose la sortie : essayer en HTTPS quand la clé SSH a été refusée, utiliser les certificats de Windows quand le proxy de l'entreprise inspecte HTTPS, ne télécharger que le dernier commit quand la connexion tombe en route, ou utiliser les chemins longs quand Windows refuse de créer le fichier. Les Détails techniques contiennent le message de Git, et ce qui n'est pas reconnu peut partir vers l'IA. À la fin, l'assistant ouvre le dossier cloné dans cette fenêtre ou dans une nouvelle.

Versionner le dossier ouvert

Le suivi de version est facultatif par espace de travail. Activez-le dans Outils → Configuration de l'espace de travail : LightNote crée le dépôt Git (s'il n'en existe pas encore) et affiche la barre latérale de suivi de version (Ctrl+Shift+G).

En mode automatique, LightNote enregistre des versions (commits) tout seul aux moments choisis dans les Paramètres généraux (à l'enregistrement, à la fermeture de l'onglet ou à la fermeture de la fenêtre). En mode manuel, vous écrivez le message et enregistrez la version dans le panneau. L'indicateur de la barre d'état montre l'état (aucune modification, X modifiés…) et, lorsqu'on clique dessus, ouvre la configuration de l'espace de travail. Vous pouvez voir le diff de chaque fichier et restaurer (annuler) les modifications non enregistrées.

L'automatisation a 3 niveaux par dossier (dans Configuration de l'espace de travail) : Manuel (rien d'automatique), Commit automatique (enregistre des versions tout seul, mais ne synchronise pas) et Tout automatique (commit et synchronisation — push après le commit + pull périodique ; nécessite des identifiants Git sans invite). Le panneau affiche une ligne d'état avec ↑ à envoyer / ↓ à recevoir par rapport au distant, et le bouton principal passe de commit à Synchroniser lorsqu'il y a des versions à envoyer — ainsi il est clair qu'après l'enregistrement, il reste à synchroniser.

Le panneau Git et le menu Git de l'arborescence proposent Ajouter (git add) et Restaurer (git restore) par fichier, ainsi qu'un unique Voir ce qui a changé, qui ouvre l'écran de comparaison.

L'écran de comparaison montre les deux versions côte à côte, alignées : les passages identiques se font toujours face et chaque côté affiche le numéro de ligne de son fichier. Une ligne modifiée apparaît en ambre, avec la partie changée surlignée à l'intérieur. Le bouton Mode unifié bascule vers le format de correctif, Inverser les côtés change la base de la comparaison, et F8 / Shift+F8 sautent d'une modification à l'autre.

Historique et bande de modifications

Le bouton Historique de la barre de l'éditeur de code et de la note ouvre la liste des versions du fichier ouvert (la même section de la barre latérale). Elle réunit les commits et les enregistrements locaux que LightNote consigne à chaque Ctrl+S : elle fonctionne donc aussi dans un dossier qui n'est pas un dépôt. Chaque ligne indique le sujet, l'auteur, la date et le nombre de lignes ajoutées et retirées ; la pastille distingue un commit à vous, un enregistrement de LightNote lui-même et un commit venu d'une session d'IA. S'il y a des modifications non validées, elles occupent la première ligne. Cliquer sur une version montre ce qui y a changé ; ouvrir la version entière, comparer avec l'actuelle et comparer deux versions sélectionnées sont dans le menu contextuel.

Avec le suivi de version actif, une bande colorée dans la marge signale les lignes modifiées depuis le dernier commit — dans l'éditeur de code et dans la note, et elle suit ce que vous tapez : elle disparaît dès que vous annulez jusqu'à l'original, sans attendre un enregistrement. Pour la désactiver, Affichage → Bande de modifications ; désactivée, elle n'est pas seulement masquée — plus rien n'est calculé. Cliquer sur la bande montre l'état antérieur du passage, avec Rétablir ce passage (Ctrl+Z annule), Copier l'original et Voir dans le diff, qui ouvre la comparaison complète déjà positionnée sur cette ligne. Une réserve sur l'historique local : il est conservé par chemin, donc renommer le fichier perd ses enregistrements locaux — pas les commits Git.

Instantanés et sauvegarde

Dans le menu ⋯ du panneau de suivi de version (ou sous Outils) :

  • Créer un instantané : marque l'état actuel avec un libellé date/heure pour pouvoir y revenir plus tard.
  • Restaurer un instantané : choisissez un instantané et ce que vous voulez faire — récupérer les fichiers en conservant l'historique (recommandé), ramener l'historique à ce point, ou l'ouvrir comme une copie séparée.
  • Exporter une copie (.zip) : compresse tout l'espace de travail dans un fichier autonome (avec le marqueur de projet intégré) pour l'envoyer ou le stocker ailleurs.
  • Déplacer le dossier de l'espace de travail… : déplace la racine sur le disque et ajuste les chemins de la session et du registre.

Réviser les modifications (points de contrôle)

Outils → Réviser les modifications… montre, dans un seul onglet, le diff agrégé de tout ce qui a changé dans l'espace de travail depuis une base : la liste des fichiers ajoutés/modifiés/supprimés à gauche et le diff du fichier sélectionné à droite. Il a été conçu pour réviser ce qu'une session de CLI d'IA a modifié avant d'accepter le travail.

La base peut être la dernière version (HEAD) ou un point de contrôle : créez-en un avant de commencer une tâche (bouton dans l'onglet lui-même) et comparez par rapport à lui plus tard. Les points de contrôle ne créent aucun commit et ne touchent jamais à votre historique. Nécessite le suivi de version activé pour le dossier.

Commentaires par lot. Lors de la revue d'une session d'IA, le bouton Commenter (aussi dans le menu contextuel de la liste des fichiers) note un commentaire sur le fichier sélectionné — ancré à l'extrait que vous choisissez. Les commentaires s'accumulent dans une liste et n'atteignent le terminal de la CLI que lorsque vous cliquez sur Envoyer à la session, tous dans un seul message. C'est délibéré : les envoyer un par un amène l'agent à corriger un problème et à en casser un autre, car chaque tour ne voit pas les autres remarques. Après sa révision, les commentaires restent dans la liste pour que vous vérifiiez s'ils ont été traités ; cochez les résolus et ce qui reste part dans l'envoi suivant. Si l'agent réécrit la zone commentée, le commentaire est estompé au lieu de disparaître. L'envoi est confirmé dans la barre d'état, et une session en veille est reprise automatiquement pour recevoir le lot.

Comparer des fichiers (diff)

Outils → Comparer deux fichiers… ouvre les deux côte à côte (deux éditeurs) et marque les différences ligne par ligne. La comparaison est en lecture seule.

Les boutons ◀ / ▶ (ou F8 / Shift+F8) sautent à la modification précédente/suivante. Depuis le panneau Git, vous pouvez aussi comparer un fichier côte à côte avec la version enregistrée (HEAD contre disque).

Exécuter du code (F5)

Outils → Exécuter le fichier (F5) enregistre le fichier actuel et l'exécute dans le terminal, selon l'interpréteur enregistré pour l'extension. Les valeurs par défaut couvrent .py, .sh, .bat, .cmd et .sql ; vous pouvez modifier/ajouter des interpréteurs dans Paramètres → Exécution.

La commande est un modèle avec {file} (fichier), {folder} (dossier) et {name} (nom) — par exemple, pour Python : python {file}. Vous pouvez aussi envoyer uniquement la sélection/ligne actuelle au terminal avec Ctrl+Shift+Entrée. Dans les Blocs, chaque cellule s'exécute par le même mécanisme.

Le bouton Exécuter dispose d'une flèche pour choisir et mémoriser le terminal cible lorsque plusieurs terminaux sont ouverts.

Erreurs cliquables. Dans le panneau de sortie (F6), les références à fichier:ligne deviennent des liens : Ctrl+clic ou double-clic ouvre le fichier à l’endroit exact. Cela fonctionne avec les traceback Python, les piles Node, les erreurs de compilateur (gcc/clang/MSVC) et la sortie des linters. Seul ce qui existe réellement sur le disque devient un lien ; le reste reste du texte.

Parcourir les erreurs. Dans le panneau de sortie, F8 passe à l’erreur suivante et Shift+F8 à la précédente (des boutons existent aussi dans la barre du panneau). Le saut est circulaire : il fait défiler la sortie jusqu’à la référence, la met en évidence et ouvre le fichier à l’endroit exact.

Terminal et CLI d'IA

Pastille d'état par commande. Une pastille apparaît à côté de chaque commande exécutée : bleue en cas de succès, rouge en cas d'échec (l'infobulle indique l'heure, la durée et le code de sortie). LightNote l'active automatiquement dans PowerShell et Git Bash, sans modifier votre configuration — activez/désactivez-la dans Paramètres → Terminal → Intégration du shell. Les autres shells (cmd, WSL) ou les commandes personnalisées n'affichent pas la pastille.

Ouvrez un terminal intégré (émulateur VT complet, via ConPTY) avec Ctrl+' (sur la disposition de clavier US, aussi Ctrl+`). Il devient un onglet et peut être déplacé entre les zones de la fenêtre. Les shells disponibles et les CLI d'IA détectées dans le PATH (ex. claude) sont configurables dans Paramètres → Terminal et Paramètres → Assistants IA. Dans le menu Nouveau terminal, choisir une CLI d'IA ouvre cette CLI en tant que terminal — la TUI/les couleurs s'affichent normalement, et quitter la CLI ferme l'onglet.

Planifier un envoi. Dans le menu contextuel du terminal (clic droit), Planifier un envoi… permet d'envoyer une Entrée (ou du texte) plus tard — pratique pour reprendre une CLI d'IA quand la limite d'usage est réinitialisée, sans la surveiller. Choisissez le déclencheur : à une heure, après quelques minutes, toutes les intervalle (récurrent) ou quand le terminal devient inactif. L'ordinateur reste éveillé jusqu'au déclenchement. La planification dure tant que l'onglet du terminal reste ouvert.

Vous pouvez avoir plusieurs planifications à la fois. Lorsqu'il y en a une, l'élément de menu affiche Envois planifiés (N)… et ouvre un gestionnaire : un tableau avec le terminal, ce qui sera envoyé, quand, et un compte à rebours en direct jusqu'au prochain déclenchement, avec les boutons Nouveau, Modifier et Supprimer. Tant qu'il y a des planifications, un indicateur d'horloge avec le compte apparaît dans la barre d'état (cliquez dessus pour ouvrir le gestionnaire) et une petite horloge marque l'onglet du terminal armé.

Avis de fin de tour de l'IA. Quand un terminal de CLI d'IA se tait — signe que l'agent a fini son tour — LightNote vous prévient : un toast apparaît (cliquez dessus pour activer ce terminal) et l'onglet clignote quelques fois puis conserve une mise en évidence jusqu'à ce que vous l'ouvriez. Si la fenêtre est en arrière-plan, son bouton clignote aussi dans la barre des tâches. L'avis ne concerne que les terminaux de CLI d'IA, et seulement quand l'onglet n'a pas le focus. Activez/désactivez-le et réglez le délai de silence dans Paramètres → Terminal → Avis de fin de tour de l'IA.

Les terminaux reviennent avec la fenêtre. À la fermeture puis réouverture de l'espace de travail, les terminaux de shell ordinaire (Invite de commandes, PowerShell, Bash) sont rouverts — et dans le dossier où vous étiez, pas celui où le terminal a démarré. Le contenu de l'écran ne revient pas, mais l'historique des commandes appartient au shell lui-même et reste disponible : la flèche ↑ fonctionne normalement. Les sessions d'assistant d'IA sont exclues et continuent d'être proposées à part, car un nouveau terminal n'est pas la même conversation. Les variables d'environnement et les environnements activés à la main dans cette session (un venv, par exemple) ne reviennent pas non plus : le terminal rouvre dans le bon dossier, mais c'est un shell neuf.

Assistant IA sur la sélection (Ctrl+K / Ctrl+I)

Demander et modifier avec l'IA

IA par défaut. En haut de Paramètres → Assistants IA, l'IA par défaut choisit l'assistant utilisé par Ctrl+K/Ctrl+I, par le chat Interroger vos notes (modifiable par session) et par les tâches automatiques (reformuler la question, résumer, résumé audio, générer le contexte). Elle liste à la fois les CLI et les fournisseurs d'API. La transcription audio et les embeddings ont leur propre fournisseur, et LightNote suggère un modèle selon le fournisseur choisi.

Appuyez sur Ctrl+K (Demander à l'IA) ou Ctrl+I (Modifier avec l'IA) dans l'éditeur — avec ou sans sélection — pour ouvrir un popup flottant de style chat en ligne : le champ de prompt est pré-rempli avec la sélection sous une ligne vide ; tapez l'instruction au-dessus et envoyez avec Ctrl+Entrée. Dans le popup, vous choisissez l'IA (celle par défaut est présélectionnée) et le mode de résultat : remplacer la sélection via un diff (Original × Suggestion, avec Accepter / Copier / Rejeter) ou simplement afficher la réponse en texte.

LightNote exécute la CLI d'IA en mode « one-shot » (sans ouvrir de terminal). Les CLI et l'IA par défaut se trouvent dans Paramètres → Assistants IA.

Connecter un modèle

Modèles via API. En plus des CLI locales, vous pouvez enregistrer des modèles de LLM via une API compatible OpenAI (OpenAI, Groq, DeepSeek, OpenRouter, Gemini, Anthropic, instances locales comme Ollama/LM Studio…) dans Paramètres → Assistants d'IA. Choisissez un fournisseur dans le catalogue (URL de base prête), collez la clé (stockée encodée uniquement sur cette machine), utilisez Rechercher les modèles… et Tester. Les modèles enregistrés apparaissent dans le même sélecteur Ctrl+K, à côté des CLI.

Connecter en une étape. Le chemin normal n'est pas de remplir le tableau : dans Paramètres → Assistants d'IA, cliquez sur Connecter une IA…, choisissez le fournisseur (la liste signale ceux qui offrent un forfait gratuit et ceux qui tournent sur votre ordinateur, sans clé), suivez les trois étapes, ouvrez la page des clés avec le bouton et collez la clé. LightNote remplit l'adresse et le modèle tout seul et teste la connexion avant d'enregistrer — une clé erronée apparaît là, et non au milieu d'une conversation. La liste du haut montre ce qui est déjà connecté et, pour ce qui est incomplet, ce qui manque (« clé pas encore collée », « modèle pas encore choisi ») ; un double-clic rouvre l'assistant sur ce fournisseur.

Réglages fins. Adresse, modèle, autorisation MCP, commandes des CLI, transcription audio et embeddings restent tous disponibles dans Avancé, en bas de la page — et dans l'assistant lui-même, sous Options avancées, vous pouvez changer l'URL de base et le modèle avant de connecter. Rien n'a été supprimé : cela a seulement été écarté du chemin de celui qui débute. Les embeddings ont aussi un champ Dimensions facultatif : certains modèles acceptent de renvoyer un vecteur plus petit (512 au lieu de 1536), ce qui divise le cache par deux avec peu de perte. Laissez (par défaut du modèle) en cas de doute — tous les fournisseurs n'acceptent pas ce paramètre. Changer la valeur invalide le cache : des vecteurs de dimensions différentes ne se comparent pas, il est donc supprimé et reconstruit à la recherche suivante, ce qui coûte de nouveaux appels.

Toutes les pannes ne se valent pas. LightNote distingue les classes parce qu'elles appellent des gestes opposés. La surcharge du fournisseur et la limite de débit passent d'elles-mêmes : l'application répète l'appel d'elle-même, en respectant le délai demandé par le fournisseur, et vous ne voyez l'erreur que si cela ne suffit pas. Le solde ou le plafond de dépenses ne passe avec aucune répétition — le message le dit, pour que vous cessiez d'essayer. Une conversation devenue trop longue appelle une nouvelle session, pas un autre modèle. Et la panne du modèle — retiré, hors de votre compte, hors de votre offre, ou il a pris l'appel sans jamais répondre — est la seule que changer de modèle résout. Quand le délai demandé est trop long pour être attendu, le message indique combien de secondes il a demandées, au lieu de laisser la fenêtre figée.

Changer de modèle tout seul. Cochez Changer de modèle automatiquement quand l'actuel échoue et LightNote essaie, dans l'ordre affiché juste là, les modèles recommandés pour ce fournisseur. C'est décoché exprès : chaque tentative est un appel facturé sur votre compte. L'autre modèle ne coûte jamais plus que celui que vous avez choisi — la liste est publiée du plus cher au moins cher et l'application ne fait que la descendre ; un modèle personnalisé, absent de la liste, tombe directement sur le moins cher. Seule une panne définitive est enregistrée chez le fournisseur ; quand c'est le réseau qui a lâché, le changement ne vaut que pour cet appel et votre choix reste en vigueur. Le changement n'est jamais silencieux : une notification dit quel modèle a répondu et si la modification a été enregistrée.

Et l'avis qui arrive avant la panne. Le changement automatique n'agit qu'après l'échec de l'appel — mais le catalogue de modèles, que LightNote consulte tout seul, connaît généralement le retrait avant cela. Quand le modèle que LightNote lui-même a configuré pour un fournisseur sort du catalogue, un avis le dit, et dans Paramètres → Assistants IA un bouton apparaît pour passer au remplaçant — qui, par la même règle, n'est jamais plus cher. L'avis ne vaut que pour le modèle choisi par l'application et que vous n'avez jamais touché : un modèle que vous avez saisi est votre choix, et LightNote ne s'en mêle pas.

Quand rien ne répond. LightNote dit ce qui s'est passé et propose de changer de modèle, d'utiliser un autre assistant ou de désactiver ce fournisseur le temps de régler cela. Un fournisseur désactivé (colonne Actif du tableau, sous Avancé) disparaît des listes sans perdre la clé ni le reste de la configuration. Dans la liste des assistants, chacun indique s'il est local ou dans le cloud — en choisir un dans le cloud fait sortir de votre machine le texte envoyé.

Sans clé : LLM local

Aucune IA pour l'instant ? Si vous utilisez Ctrl+K sans aucun assistant connecté, LightNote l'explique et propose d'en connecter un sur-le-champ — et dès que c'est fait, l'action demandée se poursuit, sans avoir à refaire le raccourci.

LLM local (sans clé). Les fournisseurs locaux — Ollama, LM Studio, llama.cpp — n'ont pas besoin de clé d'API : choisissez-en un dans Ajouter (le sélecteur indique si le serveur tourne) et utilisez Rechercher les modèles… pour choisir parmi les modèles que vous avez téléchargés. Si Ollama n'est pas installé, LightNote propose de l'installer. Il est déjà enregistré au premier lancement — il ne reste qu'à choisir le modèle. Comme un modèle local peut mettre bien plus de temps à répondre (surtout à la première génération, le temps de charger le modèle), LightNote l'attend bien plus longtemps qu'un service en ligne. Aucun de vos textes ne quitte la machine.

Accepter, prompts et où vivent les actions

Accepter bloc par bloc. Quand le résultat arrive sous forme de diff, vous n'êtes pas obligé de tout accepter : chaque bloc modifié a une case pour l'inclure ou non, et le texte final est reconstruit uniquement à partir des blocs conservés. Le prompt emporte aussi un contexte automatique du fichier (chemin, langage et les lignes autour de la sélection), pour que l'IA réponde plus précisément sans que vous colliez quoi que ce soit.

Bibliothèque de prompts. IA → Bibliothèque de prompts… conserve des prompts réutilisables sous forme de fichiers .md dans un dossier Prompts/ de votre espace de travail — format ouvert, versionnable dans Git et partie intégrante de votre second cerveau. Le sélecteur offre une recherche, un aperçu et un bouton pour créer un nouveau prompt. Quand vous en choisissez un, les champs {selection}, {file}, {folder}, {name} et {language} sont remplis avec le contexte de l'éditeur courant (vos propres variables sont préservées), et le texte est injecté dans le champ de Ctrl+K ou envoyé au terminal d'IA actif, sans le soumettre.

Pas seulement dans l'éditeur de code. Les actions d'IA (Ctrl+K / Ctrl+I et le menu contextuel) fonctionnent aussi dans l'éditeur Markdown, dans la note intégrée des Tâches et dans l'éditeur de requêtes SQL de la base de données — dans chacun, la fenêtre s'ouvre au-dessus du curseur et applique le résultat sur place.

Toutes les actions d'IA se trouvent dans le menu IA (bouton ☰ et bouton baguette de la barre d'activités) : Demander à l'IA (Ctrl+K), Modifier avec l'IA (Ctrl+I), Sessions d'IA, Chat IA, Bibliothèque de prompts, Générer le fichier de contexte du projet, Activer l'IA dans ce dossier et Configurer les assistants d'IA.

La fenêtre reste ouverte pendant que vous écrivez. Elle ne se ferme pas quand vous cliquez dans l'éditeur : vous pouvez relire le code ou sélectionner un autre passage sans perdre l'instruction déjà saisie. Ce qui la ferme : Échap, le ✕ de la fenêtre et les actions de résultat (Accepter/Rejeter). En changeant d'onglet elle se range en gardant ce qui était écrit : revenez au même fichier, appuyez sur Ctrl+K et l'instruction réapparaît là où vous l'aviez laissée.

Sessions IA

Sessions et copie isolée

IA → Sessions IA… ouvre un cockpit qui liste, avec une carte par session, chaque terminal de CLI d'IA ouvert dans n'importe quelle fenêtre de LightNote — avec une pastille de couleur pour l'état, le nom de la CLI, la fenêtre et des badges pour ce qui demande de l'attention (envois programmés, copie isolée). Le double-clic met le terminal au premier plan ; le menu ⋯ de la carte (ou le clic droit) propose passer en revue les modifications de cette session (ouvre l'écran de revue avec la base sur le point de contrôle créé au début de la session — voir Passer en revue les modifications) et programmer un envoi. C'est la façon de suivre plusieurs sessions de "vibe coding" à la fois sans vous perdre entre les fenêtres.

Quand vous ouvrez une CLI d'IA comme terminal dans un dépôt Git, LightNote enregistre automatiquement un point de contrôle (libellé "Session …"), pour que vous puissiez ensuite voir et annuler exactement ce que cette session a modifié. La fonction peut être désactivée dans Paramètres → Général → Fonctionnalités.

Copie isolée (worktree) : dans les dossiers Git, LightNote peut exécuter l'assistant IA dans une copie isolée du dossier (une branche dédiée), sans toucher aux fichiers que vous modifiez à la main. La première fois, il demande ; ensuite c'est automatique (activable/désactivable par dossier dans Configuration de l'espace de travail → Intégrations). Un badge copie isolée marque la session (la branche et le chemin sont dans l'infobulle), et les entrées Fusionner… (apporte les changements dans votre dossier — s'il y a des changements en attente, il demande d'abord) et Abandonner… (jette la copie et la branche) terminent le cycle.

Inactivité, contexte et veille

Avis de session inactive. Quand une CLI d'IA devient inactive (elle a terminé ou vous attend), LightNote affiche une notification ; cliquer dessus ouvre la revue des modifications de cette session. Vous pouvez ainsi lancer la tâche et vous éloigner. Désactivable dans Paramètres → Terminal.

Fichier de contexte du projet. Lorsque vous ouvrez une CLI d'IA dans un dossier sans fichier de contexte (CLAUDE.md ou AGENTS.md), LightNote propose d'en générer un — et vous pouvez le faire à tout moment via Outils → Générer le fichier de contexte du projet…. Un bon fichier de contexte décrit la structure et les conventions du projet et aide l'IA à faire moins d'erreurs, sans que vous réexpliquiez tout à chaque session. Si un fournisseur d'IA est configuré, il génère le contenu ; sinon, vous obtenez un squelette à compléter.

Mettre en veille les sessions inactives. Une CLI d'IA à l'arrêt continue d'occuper de la mémoire (la conversation et le client du modèle). Dans Paramètres → Terminal vous pouvez définir une durée de silence après laquelle LightNote termine le processus et le reprend tout seul quand vous revenez sur cet onglet — l'historique du terminal reste à l'écran. Livré activé, à 30 minutes — trois sessions Claude Code à l'arrêt occupaient plus d'1 Go lors de la mesure —, et valable uniquement pour les sessions en copie isolée dont les CLI savent reprendre la conversation du dossier (aujourd'hui Claude Code et Antigravity), sinon la reprise ramènerait la conversation d'une autre session. Une session avec un envoi programmé ne se met jamais en veille. Et ce qui revient, c'est la conversation, pas l'écran de l'outil : un texte saisi mais non envoyé est perdu.

Activité et recherche par sens

Onglet Activité. Le tableau montre ce qui tourne maintenant ; l'onglet Activité conserve l'historique : chaque fois qu'un agent a terminé son tour, a démarré dans une copie isolée ou s'est mis en veille, avec la date et un extrait de la dernière réponse. Les entrées non lues apparaissent en gras et le compte figure aussi dans le menu de la zone de notification — ainsi celui qui s'est éloigné de l'ordinateur voit ce qu'il a manqué, puisque les notifications sont éphémères. Ouvrir l'onglet marque tout comme lu ; un double clic ramène à la session. La fin d'une session est également enregistrée — y compris lorsque la CLI se termine d'elle-même —, ainsi une session morte pendant votre absence laisse une trace au lieu de disparaître. Si la session de l'événement n'est plus ouverte, le double-clic le dit au lieu de ne rien faire.

Rechercher par sens. Quand la recherche ne trouve aucune occurrence littérale, l'option Rechercher par sens apparaît à côté du résultat : au lieu de faire correspondre des mots, LightNote cherche les notes qui parlent du même sujet — utile quand vous vous souvenez de l'idée mais pas du terme employé. Un bouton ~ à côté des autres permet d'y aller directement. Dans ce mode, regex, mot entier, casse, filtre de fichiers et Remplacer disparaissent : rien de tout cela ne s'applique à une recherche par similarité. La fonction dépend du renfort sémantique (embeddings) dans Paramètres → Général → Fonctionnalités ; sans lui, le bouton mène à l'écran qui l'active. La première fois dans chaque dossier, LightNote indique combien de fragments il devra indexer et demande confirmation — cette indexation est facturée par votre fournisseur et n'a lieu qu'une fois ; ensuite, chaque recherche ne coûte que la requête.

Chat IA

Comment ça marche

IA → Chat IA… ouvre un chat qui répond en utilisant vos propres notes comme contexte. Au lieu de tout envoyer dans le cloud, LightNote récupère localement les extraits les plus pertinents de votre vault (via ripgrep, sans embeddings ni service externe), construit la question avec ces extraits et l'envoie à un fournisseur d'IA par API que vous avez enregistré. La réponse arrive avec les notes sources sous forme de citations cliquables — cliquez pour ouvrir la note. Parfait pour "dialoguer avec votre second cerveau" et retrouver ce que vous avez déjà noté. L'historique de la conversation reste seulement en mémoire (il n'est pas enregistré) ; la fonction peut être désactivée dans Paramètres → Général → Fonctionnalités.

La fenêtre. Les sélecteurs sont réunis dans une seule barre en haut : l'IA, le dossier de notes et — quand un éditeur de texte est actif — le contexte ; à droite se trouvent les deux autorisations (Outils et Autoriser les modifications) et le bouton +, qui démarre une nouvelle conversation. Avant la première question, l'écran indique sur quoi la fenêtre va répondre et propose des raccourcis en un clic, comme Résumer ce dossier. Dans le champ de question, Entrée envoie et Shift+Entrée insère un saut de ligne ; pendant que la réponse arrive, le bouton d'envoi devient Arrêter.

Outils et autorisations

Laisser l'IA utiliser des outils. La case Autoriser les modifications change le fonctionnement : au lieu de répondre uniquement avec les extraits trouvés par la recherche par termes, le modèle peut chercher lui-même — lire un fichier, chercher des notes, lister des tâches — et répondre ensuite. À l'activation, LightNote vérifie sur-le-champ si le modèle choisi sait appeler des outils : beaucoup de fournisseurs acceptent la requête et ignorent simplement les outils, ce qui, sans cette vérification, donnerait une réponse inventée aux airs de recherche. Le verdict est mémorisé sept jours par couple fournisseur+modèle. Exige un fournisseur par API (une CLI locale ne peut pas recevoir d'outils). La réponse se termine par la liste de ce qui a réellement servi, pour que vous la jugiez au lieu de lui faire confiance. Si le verdict est négatif — le fournisseur peut simplement avoir été indisponible à ce moment-là —, un bouton Vérifier à nouveau apparaît à côté du message et refait le test en ignorant ce qui a été mémorisé.

Laisser l'IA modifier vos données. La seconde case, Autoriser les modifications, est une étape à part et est désactivée. Avec elle, l'IA peut aussi créer des notes et des tâches, modifier des propriétés et écrire dans la note du jour — mais rien ne se produit sans votre confirmation : la modification apparaît dans la conversation en clair (« créer la tâche Acheter du pain »), avec Autoriser et Refuser. Refuser ne met pas fin à la conversation ; le modèle est prévenu et poursuit, en expliquant ou en proposant autre chose. Lire ne demande jamais — seul modifier le fait. Écraser des fichiers quelconques et accéder au réseau restent volontairement exclus : tant que l'IA ne fait que lire, un texte malveillant arrivé par une note synchronisée depuis l'extérieur ne peut pas devenir une modification sur votre disque. Quand la modification est une note ajoutée à la note du jour, la demande indique aussi dans quel dossier elle atterrira : c’est la seule écriture dont le fichier de destination ne figure pas dans ce que l’IA a demandé.

Sur quoi il répond

Les notes ou le fichier ouvert. La liste Contexte :, en haut de la fenêtre, choisit le sujet de la conversation : Notes du vault (par défaut, décrit ci-dessous) ou Éditeur actuel — qui répond sur le fichier ouvert dans l’éditeur plutôt que sur le vault, à partir de la sélection et des lignes environnantes (ou du fichier entier, avec la case Fichier entier). Ainsi la même fenêtre sert à parler de vos notes et du code que vous éditez, sur plusieurs tours. La portée Éditeur actuel n’apparaît que lorsqu’un éditeur de texte est actif. Et dans l’assistant rapide (Ctrl+K), le résultat comporte un bouton Continuer dans le chat → qui rouvre cette fenêtre déjà dans la portée Éditeur actuel, avec la question et la réponse de ce tour — pour approfondir sans tout recommencer.

Quelles notes ? La fenêtre est unique et répond sur un dossier à la fois — la liste Notes de :, à côté du sélecteur d'IA dans la barre du haut, indique et choisit lequel. Elle s'ouvre déjà pointée sur le dossier de la fenêtre depuis laquelle vous avez ouvert le chat et liste les dossiers ouverts, puis les récents ; Choisir un dossier… pointe vers n'importe quel autre. Changer de dossier vaut pour les questions suivantes — y compris pour interroger les notes d'un projet pendant que vous travaillez dans un autre. Choisi à la main, le dossier reste jusqu'à ce que vous en changiez de nouveau (rouvrir la fenêtre ne ramène pas la portée). Tant qu’une question est en cours — y compris en attente de votre confirmation —, les sélecteurs d’IA, de contexte et de dossier sont verrouillés : la réponse en route appartient au modèle et au dossier d’au moment où vous avez posé la question.

Comment demander. La recherche se fait par sujet, non par instruction : LightNote prend les mots de votre question et cherche les notes qui les contiennent. Citez un thème qui figure dans les notes (« qu'ai-je noté sur Postgres ? ») plutôt qu'une demande générique (« fais un résumé ») — cette dernière n'a aucun mot de contenu à chercher, donc rien n'est récupéré et le chat prévient que la réponse n'a pas utilisé vos notes. Seules les notes .md/.markdown sont lues ; dans un dossier sans aucune, le chat le signale et ne consomme pas d'appel d'IA.

Meilleure recherche, résumé et réécriture. La recherche utilise un index local avec classement BM25 qui ignore les accents (« configuração » trouve « configuracao ») et fonctionne aussi dans les langues sans espaces entre les mots (japonais, chinois, coréen) — ripgrep sert de secours pendant la construction de l’index. Le bouton Résumer ce dossier — et Résumer avec l'IA… dans le menu contextuel de n'importe quel dossier de l'explorateur — lit les notes par lots et renvoie un document. Et dans Paramètres → Général → Fonctionnalités, l’option Réécrire la question avec l’IA développe votre question en mots-clés avant la recherche (coûte un appel d’API par question).

Clé et conversations

Une seule clé suffit. Au premier lancement, LightNote enregistre déjà OpenAI, Google Gemini et Anthropic (Claude) dans Paramètres → Assistants IA — il ne reste qu'à coller votre clé d'API chez le fournisseur que vous utilisez. Si aucun fournisseur n'a de clé, la fenêtre affiche un bouton Configurer maintenant qui ouvre cet écran directement.

Les conversations sont conservées. Le bouton horloge en haut ouvre la liste des conversations précédentes de ce dossier : cliquez sur l'une d'elles pour y revenir. Nouvelle conversation archive la conversation en cours au lieu de la supprimer, et le clic droit dans la liste en supprime une définitivement (avec confirmation). Les conversations sont conservées par dossier : changer de dossier de notes change la liste.

Que faire de la réponse

Que faire d'une réponse. Sous chaque réponse se trouvent Copier (met le texte Markdown dans le presse-papiers, mise en forme intacte) et Capturer dans la note (envoie la réponse dans la note du jour, avec des liens vers les notes citées). Le menu Actions de la conversation contient Copier la conversation, Enregistrer la conversation comme note… (écrit un .md dans le dossier interrogé), Refaire la dernière réponse et Modifier la dernière question.

Joindre un fichier. Quand la recherche ne trouve pas ce que vous aviez en tête, utilisez le bouton + pour joindre un fichier : il entre toujours dans la question, hors du classement de la recherche. Note, code, texte et PDF conviennent (le texte du PDF est extrait) ; un binaire est refusé tout de suite au lieu de devenir du bruit dans le contexte. La pièce jointe apparaît sous forme de pastille (cliquez pour la détacher) et disparaît quand vous démarrez une nouvelle conversation. Chez les fournisseurs qui le prennent en charge, la réponse s'affiche aussi au fur et à mesure que le modèle écrit.

Mémoire de l'assistant. Dans le menu Actions de la conversation (le bouton ☰ en haut), Mémoire de l'assistant… ouvre — en la créant la première fois — la note Mémoire.md à la racine du dossier sélectionné. Tout ce qu'elle contient entre dans chaque question posée sur ce dossier, avant les extraits trouvés : vos préférences, les décisions que vous avez déjà prises, ce que vous avez écarté et pourquoi. C'est un .md ordinaire — modifiez-le quand vous voulez, versionnez-le avec Git, supprimez-le pour désactiver la mémoire. Avec les outils d'écriture activés, l'assistant peut aussi proposer d'y enregistrer un fait, et comme toute écriture il attend votre autorisation.

Résumer un dossier. Cela vaut pour l'espace de travail entier ou pour n'importe quel sous-dossier : clic droit dessus dans l'explorateur, puis Résumer avec l'IA…. Avant toute dépense, LightNote indique combien de notes seront lues et combien d'appels d'IA cela fera — chacun facturé par votre fournisseur — et vous laisse choisir la forme : Panorama, un texte suivi, ou Consolider les connaissances, avec des sections fixes (décisions, en cours, idées, contradictions et questions ouvertes ; une section vide est omise plutôt que remplie d'inventions). Si le dossier contient plus de notes que le plafond de coût ne permet, la réponse dit combien sont restées dehors. À la fin, Enregistrer comme note écrit le résumé dans le dossier résumé, avec la date et le nombre de notes en en-tête, et n'écrase jamais un résumé antérieur.

Tester des API HTTP (.lnh)

Outils → Nouveau test d'API (.lnh)… ouvre un client HTTP enregistré dans un fichier .lnh. Un fichier représente un endpoint (méthode, URL, en-têtes et corps) et garde plusieurs tests dans la liste à gauche — chaque test avec ses valeurs pour les variables {nom} utilisées dans l'URL, les en-têtes et le corps, plus le résultat de la dernière exécution (statut, temps, date, en-têtes et corps de la réponse). Il affiche aussi la commande curl équivalente. La même opération ponctuelle est disponible via la CLI (http) et le MCP (http_request).

Ctrl+Entrée envoie la requête.

Importer et exporter OpenAPI. Le bouton à flèches en haut de la liste des tests ouvre Importer OpenAPI… et Exporter OpenAPI…. L'import lit une spécification en YAML ou JSON dans les trois générations en usage — Swagger 2.0, OpenAPI 3.0 et 3.1 — et construit le test tout seul : les {paramètres} du chemin utilisent déjà la même syntaxe que les variables {nom} du fichier .lnh, les exemples déclarés deviennent les valeurs du test, le schéma de sécurité devient l'en-tête Authorization, et chaque serveur déclaré devient un test à part entière (recette et production côte à côte). Comme un .lnh contient un point de terminaison, une spécification comportant plusieurs opérations demande laquelle importer — ou écrit toutes d'un coup, un fichier .lnh par opération.

L'export fait le chemin inverse et produit une spécification OpenAPI 3.0.3 à partir du fichier : serveurs, paramètres et corps proviennent du modèle, et les réponses d'exemple proviennent des exécutions enregistrées. C'est un squelette, pas un contrat complet — le .lnh décrit des appels, donc les types, descriptions et schémas ne sont pas reconstruits. Vos tests voyagent dans le champ x-lightnote-tests, et reviennent donc intacts lors d'un réimport du fichier.

Importer une commande curl. Dans le même bouton, Importer une commande curl… ouvre une zone de collage — c'est de là que vient la commande, pas du disque, et le champ est prérempli lorsqu'un curl se trouve dans le presse-papiers. Il comprend les trois dialectes dans lesquels circule la même commande : Copier comme cURL de Chrome/Firefox (guillemets simples), Copy as cURL (cmd) sous Windows (avec ^) et l'exemple de documentation coupé par \. La méthode provient de -X — ou est déduite : POST s'il y a un corps, GET sinon.

L'import est littéral : aucune valeur ne devient d'elle-même une variable {nom}, car deviner quel jeton est un secret se tromperait. Certains cas avertissent plutôt que de mentir — un corps provenant d'un fichier (-d @fichier) ne peut pas être lu, et un envoi multipart (-F) n'est pas reproduit fidèlement ; les champs sont donc placés en texte dans le corps pour que vous les ajustiez.

Bases de données (.lnc)

La connexion

Une connexion est un fichier .lnc (LightNote Connection) dans l'espace de travail lui-même — versionnable dans Git et portable entre machines. Créez-en une via Nouveau → Nouvelle connexion (ou ouvrez un .lnc existant) : cela ouvre la vue Base de données, avec la barre d'état de la connexion (Se connecter / Se déconnecter / Se reconnecter / Modifier), l'arborescence Schéma (schémas → tables → colonnes, chargés à la demande) et des onglets .sql internes. Les fichiers .sql ouverts et les récents sont stockés dans le .lnc, si bien que la vue rouvre dans son état précédent. Si rien n'était ouvert, elle démarre avec une requête vide (sans titre) où vous pouvez taper du SQL aussitôt ; à l'enregistrement (Ctrl+S) LightNote ne demande qu'un nom et écrit le fichier dans le dossier du projet (pas de boîte de dialogue « enregistrer n'importe où »). Le bouton + Onglet ouvre une nouvelle requête vide, vous laisse ouvrir un fichier (le sélecteur s'ouvre dans le dossier du projet) ou choisir un récent / n'importe quel .sql du dossier du projet.

Un .sql ouvert directement depuis l'arborescence est du code uniquement (coloration SQL, sans connexion).

Pilotes : SQLite et DuckDB (fichier) natifs ; PostgreSQL, MySQL/MariaDB, SQL Server et générique via ODBC ; Oracle natif (sans ODBC). SQL Server utilise le pilote msodbcsql de Microsoft (installez-le sur la machine) et propose l'Authentification Windows ou utilisateur/mot de passe, ainsi que les options de chiffrement du canal (Encrypt / faire confiance au certificat). Pour Oracle, indiquez le dossier de l'Oracle Instant Client dans Paramètres généraux → Base de données — il est chargé à l'exécution, sans rien à installer. La connexion Oracle a quatre modes : Service Name (hôte/port/service), SID (hôte/port/SID), Nom TNS (alias du tnsnames.ora dans le dossier du client) et Descripteur TNS complet (collé dans un champ de texte).

Mot de passe : cochez Enregistrer le mot de passe pour le chiffrer dans le .lnc lui-même (crypto portable, s'ouvre sur une autre machine) ; décoché, le mot de passe n'est pas enregistré et est demandé à chaque connexion. Le chiffrement utilise une Phrase-Sécurité par espace de travail, définie dans Aide → Configurer la Phrase-Sécurité ; gardez-la en sécurité — sans elle, le mot de passe ne peut être ouvert nulle part ailleurs. La Phrase-Sécurité n'est mise en cache que sur la machine locale (elle ne va jamais dans Git).

Cochez Se connecter à l'ouverture pour que la connexion s'ouvre automatiquement à l'ouverture du .lnc. La connexion automatique est silencieuse : si le mot de passe doit être saisi (mode demander, ou chiffré sans la Phrase-Sécurité en cache sur la machine), le fichier s'ouvre déconnecté, sans interruption.

Exécuter et lire le résultat

Exécuter : Ctrl+Entrée exécute l'instruction sous le curseur et Alt+X exécute tout le script ; les résultats apparaissent paginés, chacun dans un onglet Résultat avec une barre d'actions en bas : Charger le bloc suivant, Figer le résultat, Total, changer la Limite de lignes, Actualiser (réexécute), Voir/Copier le SQL, Exporter... et Générer du SQL à partir de la ligne sélectionnée.

Figer le résultat : lit le résultat entier de la base en une seule passe et le conserve dans une table locale (sur disque, s'il ne tient pas en mémoire). Ensuite la grille défile sans interroger la base, le nombre de lignes devient exact (sans passer par Total), cliquer sur un en-tête trie (un nouveau clic inverse ; un troisième revient à l'ordre livré par la base), et l'export lit lui aussi la copie locale. Le tri par l'en-tête vaut jusqu'à 100 000 lignes ; au-delà il est refusé, avec le motif dans l'infobulle de l'en-tête, car chaque page devrait retrier la copie entière et parcourir la grille reprendrait des minutes. Un résultat déjà arrivé entier dans la première page se trie sans figer : les lignes sont déjà en mémoire. Ce qui ne se trie pas, c'est la première partie d'un résultat encore paginé — l'en-tête affirmerait un ordre qui ne vaut que pour ce qui est à l'écran. Le graphique et le tableau croisé dynamique portent alors sur le résultat entier — y compris sur les bases où le graphique n'existait pas. Si le figeage s'arrête avant la fin (vous avez cliqué sur Arrêter ou la limite a été atteinte), les lignes restent locales mais le graphique et le tableau croisé dynamique restent sur le serveur : sommer une partie du résultat donnerait un nombre faux — et trier la grille ne trie que les lignes récupérées, pas le résultat entier. Actualiser défige et réexécute la requête. Indépendamment du figeage, les pages déjà passées par la grille sont conservées localement : revenir en arrière sur l'une d'elles n'interroge pas la base à nouveau. Un seul figeage tourne à la fois : avec deux résultats ouverts, cliquer sur Figer le résultat dans l’autre est refusé avec le motif, au lieu d’interrompre celui en cours — pour l’arrêter, utilisez Arrêter dans son propre onglet.

Grille de résultats : un NULL s'affiche en italique atténué, distinct d'un texte vide, et les nombres sont alignés à droite ; en sélectionnant plusieurs cellules, le pied de page affiche le nombre de la sélection et, lorsqu'elles sont numériques, leur somme et leur moyenne. Le bouton Panneau de valeur de la barre du bas (ou Voir la valeur dans le panneau du menu contextuel) ouvre un panneau latéral avec la valeur complète de la cellule sélectionnée, non tronquée, avec un bouton Formater qui embellit le JSON/XML à l'affichage seulement. Dans le menu contextuel d'une cellule, Filtrer par cette valeur / Exclure cette valeur réexécutent la requête avec un WHERE sur la cellule, et Aller à l'enregistrement référencé suit la clé étrangère de la colonne et interroge la table parente par la valeur de la cellule.

Graphique et tableau croisé dynamique : où le calcul est fait. Le pied de la grille propose un sélecteur entre Données locales et Table entière (sur le serveur), et le bouton indique lequel s'applique. Quand le résultat tient entièrement dans la première page, la valeur par défaut est locale : LightNote agrège sur le résultat déjà affiché, sans retourner à la base à chaque changement d'axe, d'agrégat ou d'intervalle — et, comme le moteur local est DuckDB, le graphique existe désormais aussi sur Oracle, SQL Server, PostgreSQL et MySQL, où son SQL ne s'exécute pas sur le serveur. Quand le résultat est arrivé tronqué, l'option locale est indisponible avec le motif : agréger sur un échantillon donnerait un nombre erroné, et signaler la coupe ne protégerait personne, car ce qu'on lit dans un graphique, c'est la hauteur de la barre. L'option serveur agrège sur la requête entière, avec une requête par ajustement. Les colonnes numériques que la base livre sous forme de texte — le cas du NUMBER d'Oracle — sont reconnues comme des nombres ; les identifiants commençant par zéro, comme 01310, restent du texte.

Plan d'exécution : le bouton Plan d'exécution de la barre d'outils affiche le EXPLAIN de l'instruction sous le curseur (SQLite, DuckDB, PostgreSQL et MySQL) ; sur les bases qui n'exposent pas le plan en une seule instruction (SQL Server, Oracle), le bouton est désactivé, avec la raison dans l'infobulle.

Le schéma

Propriétés de l'objet : double-cliquez sur une table dans l'arbre du schéma (ou F4, ou Propriétés dans le menu contextuel) pour ouvrir un onglet avec la structure de l'objet, en quatre sous-onglets : Colonnes (n°, nom, type, nullité, valeur par défaut et une icône de clé sur les colonnes de la clé primaire), Clés (contraintes de clé primaire, étrangère, unique et check ; un double-clic sur une clé étrangère ouvre la table référencée), Index et DDL — le CREATE TABLE de l'objet, prêt à copier, enregistrer comme .sql ou ouvrir dans un onglet modifiable. Lorsque la base ne fournit pas le DDL tout fait (PostgreSQL et SQL Server n'ont pas cette commande), LightNote le reconstruit à partir des métadonnées — de même lorsque la commande de DDL est refusée faute de permission — et l'indique clairement dans l'onglet. Si même le catalogue des colonnes ne peut être lu (pas de permission ou catalogue indisponible), il n'y a rien à reconstruire : l'onglet le signale au lieu de rester silencieusement vide. Le menu contextuel de la table propose aussi Copier le DDL sans ouvrir l'onglet.

Arbre du schéma : l'arbre Schéma sépare les Tables des Vues (chacune avec son icône) et marque d'une icône de clé les colonnes de la clé primaire. La zone de filtre ne tamise que les objets déjà chargés (le chargement à la demande n'est pas forcé juste pour filtrer).

Explorer le schéma : Faites un clic droit sur une table pour Insérer un SELECT dans l'éditeur, Afficher les données, Compter les lignes, Copier le nom qualifié ou ouvrir le sous-menu Générer du SQL → INSERT/UPDATE/MERGE : un écran liste les colonnes de la table pour que vous puissiez cocher Inclure et Clé, affiche un aperçu en direct et dépose la commande dans l'éditeur (MERGE sort en ANSI ; si le pilote ne le prend pas en charge, un avertissement apparaît). Directement sur la grille de résultats, le bouton Générer du SQL de la barre du bas construit un INSERT/UPDATE/DELETE pré-rempli avec les valeurs de la ligne sélectionnée (disponible quand la requête est un SELECT de table unique). Les noms de table et de colonne que vous parcourez dans l'arborescence commencent aussi à apparaître dans l'autocomplétion (Ctrl+Espace) des éditeurs .sql de la connexion, sans requêtes supplémentaires à la base.

Export, variables et transactions

Exporter les résultats : faites un clic droit sur la grille de résultats et choisissez Exporter le résultat... pour écrire en CSV (délimiteur, caractère de quote, toujours mettre entre quotes, ligne d'en-tête, texte NULL), JSON Lines ou SQL (instructions INSERT avec un nom de table), avec une limite de lignes facultative. L'export parcourt la requête entière en mode streaming (re-fetch paginé), pas seulement ce qui est visible à l'écran.

Variables de script : utilisez @set nom = valeur sur une ligne de script pour définir une variable — le préfixe @ l'éloigne de la base (il n'entre pas en collision avec le vrai SET de Postgres/DuckDB/SQL Server). Les références comme :nom sont substituées avant l'exécution (hors chaînes et commentaires ; le cast ::type et les binds comme :1 restent intacts) ; un :nom sans valeur ouvre un prompt avant l'exécution. Le bouton Variables de la barre d'outils ouvre l'écran avec les variables définies (modifier/ajouter/supprimer).

Historique des requêtes : le bouton Historique ouvre une fenêtre avec les dernières instructions exécutées avec succès sur cette connexion, dans les colonnes SQL / Quand / Durée / Lignes. Sélectionnez-en une pour Réexécuter, Insérer dans l'éditeur ou Copier (le double-clic insère), ou utilisez Effacer l'historique. Il est stocké uniquement sur la machine locale (il ne va ni dans Git ni dans le .lnc).

Transactions : le bouton Autocommit (activé par défaut) et les boutons Commit/Rollback se trouvent dans la barre d'outils. Avec l'autocommit désactivé, les modifications restent en attente jusqu'à ce que vous validiez (Commit) ou annuliez (Rollback) ; se déconnecter avec une transaction ouverte demande quoi faire.

Connexion SSH (.lns)

Une connexion SSH est un fichier .lns dans l'espace de travail — versionnable et portable, comme le .lnc. Créez-en une via Nouveau → Nouvelle connexion SSH : l'onglet ouvre un terminal SSH intégré (via le ssh.exe de Windows) et une mini-barre de fichiers distants (SFTP).

Le navigateur de fichiers affiche un dossier à la fois (style MobaXterm/WinSCP) : la première ligne est toujours .. pour remonter d'un niveau, et un double-clic sur un dossier y entre. La barre de chemin en haut vous laisse taper un chemin distant et appuyer sur Entrée pour y aller. Le bouton Synchroniser avec le terminal fait suivre au dossier affiché le répertoire courant de la session SSH (là où vous avez fait cd dans le terminal). Le menu contextuel propose Ouvrir dans l'éditeur (télécharge le fichier, l'ouvre dans un onglet et le renvoie à l'enregistrement), Télécharger, Envoyer, Nouveau dossier, Renommer, Supprimer et Permissions (chmod). Vous pouvez aussi glisser des fichiers depuis l'Explorateur sur le panneau pour les envoyer vers le dossier actuel.

Le mot de passe peut être chiffré dans le .lns avec la Phrase-Sécurité de l'espace de travail ou demandé à chaque connexion. Les clés SSH de l'agent/profil Windows fonctionnent normalement, puisque la connexion utilise le client OpenSSH du système.

L'option Se connecter à l'ouverture (dans la boîte de dialogue de connexion) démarre la session SSH automatiquement à l'ouverture du .lns. Si le mot de passe n'est pas stocké, le terminal lui-même le demande à la connexion.

Sécurité : Phrase-Sécurité, PIN et Markdown sécurisé

La Phrase-Sécurité se définit par espace de travail dans Aide → Configurer la Phrase-Sécurité… et est la clé de tout ce que LightNote chiffre : mots de passe des connexions (.lnc/.lns), cellules mot de passe de la Table personnalisée et fichiers .lne. Le chiffrement est fort et portable (Argon2id + XChaCha20-Poly1305) : un fichier chiffré s'ouvre sur une autre machine une fois que vous y ressaisissez la même Phrase-Sécurité. Gardez-la en sécurité : sans elle, les données chiffrées sont irrécupérables. La Phrase-Sécurité n'est mise en cache que sur la machine locale (elle ne va jamais dans Git).

Pour changer la Phrase-Sécurité, ouvrez le même écran et modifiez le champ Phrase-Sécurité (il vient rempli avec l'actuelle). À la confirmation, LightNote rechiffre automatiquement toutes les données sécurisées de l'espace de travail — mots de passe dans .lnc/.lns, le contenu des fichiers .lne et les cellules mot de passe des Tables personnalisées (.lnd) — de l'ancienne Phrase vers la nouvelle. Le déchiffrement est tout ou rien : si un seul élément échoue à se déchiffrer, rien n'est modifié et LightNote vous indique lequel. Pendant l'écriture, chaque fichier est copié dans une sauvegarde avant d'être réécrit ; si l'un échoue à l'écriture, LightNote demande s'il faut tout annuler (restaurer les sauvegardes) ou ignorer ce fichier et continuer (il conserve l'ancienne Phrase, avec un avertissement à la fin). (Les mots de passe en mode « demander » n'ont rien à rechiffrer.)

Le PIN (4–8 chiffres) est un verrou local facultatif : il protège des actions sensibles de l'interface (révéler des mots de passe, ouvrir des notes sécurisées) sans taper la Phrase-Sécurité à chaque fois. Il ne chiffre rien et ne s'applique qu'à cette machine.

Le fichier Markdown sécurisé (.lne, dans Nouveau → Fichier Markdown sécurisé) est une note chiffrée sur le disque : à l'ouverture, LightNote demande le PIN (s'il est défini) et la Phrase-Sécurité, déchiffre en mémoire uniquement et rechiffre à l'enregistrement (Ctrl+S). Par sécurité, il ne se rouvre jamais tout seul à la restauration de la session. À part cela, c'est une note comme les autres : elle a l'assistant IA (Ctrl+K/Ctrl+I et le bouton IA de la barre), le Ctrl+clic sur les wikiliens et les étiquettes, ouvre les liens et affiche l'adresse dans la barre d'état. À retenir sur l'IA : l'extrait envoyé quitte la machine si l'assistant choisi est un service en ligne ; avec un modèle local (Ollama, LM Studio), non. Et les notes sécurisées restent hors d'Interroger les notes — celui-ci lit les .md de l'espace, et sur le disque un .lne est du texte chiffré.

Notes quotidiennes, capture rapide et zone de notification

La note du jour est un .md par jour dans le dossier Notes quotidiennes — un seul dossier, valable pour tout LightNote, défini dans Paramètres → Notes et écriture. Depuis le menu de la zone de notification : Note du jour ouvre la note du jour ; Capture rapide… (Ctrl+Alt+N, un raccourci Windows global — ou un clic du milieu sur l'icône) ouvre une petite fenêtre où vous tapez et appuyez sur Ctrl+Entrée : le texte devient une puce horodatée dans la note du jour, écrite directement sur le disque, sans ouvrir de fenêtre d'éditeur.

Le menu de la zone de notification liste aussi les fenêtres ouvertes et les espaces de travail récents, et porte les bascules d'énergie : Garder l'ordinateur éveillé et Garder l'écran allumé (pratique pour les longues tâches ; LightNote maintient déjà l'énergie tout seul pendant l'exécution d'une IA one-shot, des cellules de Blocs ou des scripts SQL). Le lanceur (fenêtre de démarrage) a une recherche, le double-clic pour ouvrir et un menu contextuel pour épingler en haut, ouvrir dans l'Explorateur ou retirer de la liste.

Les actions qui valent pour tout LightNote — et pas seulement pour la fenêtre où vous êtes — vivent dans le menu Général (☰ Général, ou le bouton avec l'icône de l'app dans la barre d'activités), qui a exactement la même forme que le menu de la zone de notification : à la racine Note du jour, Capture rapide et Calendrier ; puis les sous-menus Capturer (tâche rapide, enregistrer l'audio, retrouver d'anciennes notes, notes autocollantes), Ouvrir (launcher, ouvrir un espace de travail, ouvrir un fichier isolé, fichiers isolés) et Énergie ; à la fin, Configuration générale. La règle est simple : ce qui est dans le menu de la zone de notification est dans le menu Général — et seulement là. Survoler un élément affiche l'avis « fonction générale : vaut pour tout LightNote, dans n'importe quelle fenêtre ».

Où va une capture. Les notes quotidiennes et les tâches rapides ont une destination unique et prévisible : le dossier défini dans Paramètres → Notes et écriture et le tableau défini dans Paramètres → Général, valables dans n'importe quelle fenêtre. À la première capture, si rien n'est défini, LightNote demande où la ranger et enregistre le choix — au lieu de vous envoyer chercher le réglage. Un projet qui a besoin de son propre journal (un client sous confidentialité, un registre qui doit vivre dans le dépôt) peut revendiquer les captures faites dans cette fenêtre via Configuration de l'espace de travail → Captures ; la zone de notification et les raccourcis globaux continuent d'écrire dans la destination générale. La confirmation indique toujours où le texte est allé.

Le menu de la zone de notification est volontairement court : à la racine restent les fenêtres ouvertes et les trois actions quotidiennes — Note du jour, Capture rapide et Calendrier. Tout le reste vit dans les mêmes sous-menus que le menu Général : Capturer, Ouvrir (qui, dans la zone de notification, porte aussi la liste des espaces récents), IA (sessions d'IA et interroger les notes — dans une fenêtre, c'est le menu IA complet) et Énergie. À la fin, configuration et quitter.

Retrouver d'anciennes notes

Ce qui fait le plus échouer un « second cerveau », ce n'est pas une fonction manquante, c'est la note qui n'est jamais relue. Depuis le menu de la zone de notification (section Capturer), LightNote ramène d'anciennes notes : Note aléatoire ouvre une note .md au hasard de l'espace de travail (en évitant celles vues ces deux dernières semaines), et Ce jour-là liste les notes dont l'anniversaire de création est aujourd'hui (même jour et mois, les années précédentes). Les deux actions sont aussi dans le menu Général → Capturer de la fenêtre.

La date de création provient du champ created/date du frontmatter, s'il existe ; sinon de la date du fichier. La fonction n'écrit jamais dans vos notes — elle ne fait que les ouvrir. Elle peut être désactivée dans Paramètres → Fonctionnalités (« Retrouver d'anciennes notes »).

Vos notes sur votre téléphone

Votre espace de travail est du Markdown pur dans un dossier — des formats ouverts, sans base de données propriétaire ni cloud obligatoire. C'est pourquoi n'importe quelle application mobile lit et modifie vos notes, sans que LightNote ait besoin d'une application dédiée pour le téléphone : il suffit de synchroniser le dossier avec un service de fichiers et de l'ouvrir dans un éditeur Markdown sur le téléphone.

Étape par étape : synchronisez le dossier de l'espace de travail avec OneDrive, Google Drive, Dropbox ou Syncthing et, sur le téléphone, ouvrez ce dossier dans un éditeur Markdown (par exemple Obsidian Mobile, iA Writer, GitJournal ou Markor). Comme tout est en .md texte, les deux côtés voient et écrivent les mêmes notes.

Recommandations : sur le téléphone, modifiez uniquement les fichiers .md — les types propres à LightNote (.lne sécurisé, .lnc, .lnt, .lnb, .lnd…) ne s'ouvrent pas en dehors de l'application, et le .lne en particulier est chiffré. Si les deux côtés modifient hors ligne et qu'un conflit survient, résolvez-le via le dossier Inbox : déposez-y la capture (texte, audio ou photo) et laissez LightNote l'intégrer à la note du jour, au lieu d'écraser. Le positionnement est délibéré — la synchronisation se fait par fichiers/Git, pas par plugins : vous êtes propriétaire de vos données et vous choisissez le transport. Pour écrire directement dans la note du jour, modifiez le fichier Notes quotidiennes/yyyy-mm-dd.md — le nom du dossier change selon la langue.

Enregistrer l'audio (voix, réunion) avec transcription par IA

Depuis le menu de la zone de notification, Enregistrer l'audio… ouvre une fenêtre flottante et déplaçable (faites-la glisser par la barre de titre) pour enregistrer depuis le microphone, l'audio du système (ce qui est joué sur l'ordinateur) ou les deux à la fois — la source choisie est mémorisée pour la prochaine fois. Utilisez ● Enregistrer, ‖ Pause et ■ Arrêter ; le fichier va dans le dossier Enregistrements de l'espace de travail, compressé en .m4a à l'arrêt.

Deux façons de transcrire. Dans Paramètres → Assistants IA → Transcription audio, le sélecteur Comment transcrire choisit entre le modèle de transcription dédié (style Whisper : OpenAI whisper-1, Groq whisper-large-v3 — gratuit — ou un Whisper local) et le modèle général avec l'audio dans le chat — l'audio va dans la conversation d'un modèle multimodal ; c'est ainsi que transcrit Google Gemini (gemini-2.0-flash, bon plan gratuit). Changer de fournisseur présélectionne le bon mode et suggère le modèle ; les audios longs sont découpés automatiquement dans les deux modes. Le modèle suggéré peut être remplacé à la main — LightNote respecte l'id que vous saisissez, même pour un fournisseur qu'il ne reconnaît pas encore.

Dès que l'enregistrement démarre, la fenêtre se réduit d'elle-même en une pilule compacte (un point rouge clignotant, un chronomètre, Pause/Arrêter) — facile à glisser dans un coin et à presque cacher pendant une longue réunion ; le bouton réduire/agrandir dans le titre bascule manuellement, et arrêter l'enregistrement la ré-agrandit. Ctrl+Alt+R (raccourci global) est la note vocale rapide : appuyez pour démarrer l'enregistrement du microphone immédiatement, appuyez à nouveau pour arrêter, sans ouvrir la fenêtre à la souris.

Si un fournisseur d'IA par API est configuré (dans Paramètres → Assistants IA → Transcription audio), les boutons Transcrire et Transcrire + Résumer apparaissent à l'arrêt (désactivés tant que l'audio est encore en cours de compression) ; la liste À l'arrêt peut déclencher la transcription toute seule dès que l'enregistrement se termine. LightNote envoie l'audio pour transcription (modèle de type Whisper) et écrit une note .md à côté de l'audio avec le texte et, éventuellement, un résumé. Activez/désactivez la fonction dans Paramètres → Général → Fonctionnalités.

La même fenêtre est un mini-lecteur : sous les commandes, une liste des enregistrements du dossier affiche chaque fichier avec des boutons T (ouvrir la transcription) et R (ouvrir le résumé) lorsqu'ils existent, ainsi qu'un ▶ pour lire sur place (barre de progression avec avance) ; le menu ⋮ de chaque ligne lit, (re)transcrit ou ouvre la note. Régénérer une transcription n'écrase pas la précédente — une nouvelle version est créée à côté (note.md, note (2).md…), préservant l'historique. La source de capture est un bouton-menu (Microphone / Audio du système / Les deux), avec Les deux par défaut. Le lien Ouvrir le dossier des enregistrements ouvre le dossier dans la fenêtre principale.

Notes autocollantes

Les notes autocollantes sont de petites boîtes colorées en texte brut qui flottent sur le bureau, dans le style de l'application Pense-bête de Windows. Depuis le menu de la zone de notification : Nouvelle note autocollante (Ctrl+Alt+S, un raccourci global) crée une boîte ; Afficher les notes autocollantes (Ctrl+Alt+H) les affiche ou les masque toutes en même temps. Chaque note a un + pour en créer une autre et un menu ☰ pour changer la couleur, Envoyer vers la note du jour (écrit le texte comme une puce dans la note du jour et supprime la boîte) ou Supprimer. Faites glisser l'en-tête pour déplacer et la poignée d'angle pour redimensionner. Les notes sont enregistrées automatiquement et réapparaissent quand vous rouvrez LightNote.

Liste de contrôle. Le bouton de liste de l’en-tête (à côté du +) transforme la ligne du curseur — ou les lignes sélectionnées — en éléments à case à cocher, et annule au second clic. Vous pouvez aussi taper [ ] suivi d’une espace en début de ligne ([x] crée l’élément déjà coché). Cliquez sur la case, ou utilisez Ctrl+Shift+Entrée, pour cocher et décocher : l’élément terminé est barré. Entrée crée l’élément suivant ; Entrée sur un élément vide, ou Retour arrière à son début, revient au texte normal. Supprimer les éléments terminés, dans le menu de la note, efface d’un coup ceux qui sont cochés (Ctrl+Z annule). Les éléments sont enregistrés comme des tâches Markdown (- [ ] élément) : Envoyer vers la note du jour emporte donc chacun comme tâche.

Calendrier

Général → Calendrier… ouvre une fenêtre unique avec un calendrier qui marque les jours contenant des tâches de tous les tableaux .lnt enregistrés. À côté, la liste Du jour (tâches du jour sélectionné) et la liste En attente ; le bouton Note du jour ouvre la note quotidienne de cette date. Cliquer sur une tâche ouvre le tableau correspondant.

Dans la grille, chaque jour comportant des tâches reçoit des points colorés à la couleur du statut Kanban (jusqu’à trois), le jour même est marqué d’un anneau et le jour sélectionné d’un cercle plein ; Aujourd’hui revient au mois courant et le nom du mois ouvre un menu pour changer de mois ou d’année. Les tâches En attente sont regroupées par situation — En retard, Aujourd’hui, 7 prochains jours, Plus tard et Sans date —, avec l’échéance sous forme de badge relatif (« hier », « aujourd’hui », « il y a 3 jours »). Un double-clic sur un jour ouvre la tâche rapide déjà datée.

Les tâches écrites dans les notes arrivent ici. Une case - [ ] dans une note est une tâche comme une autre, et elle apparaît désormais dans En cours à côté des cartes des tableaux, dans les mêmes groupes. Si la ligne dit quand (demain, vendredi, 12/08), elle tombe dans le bon groupe et le bon jour. Un double clic ouvre la note à la ligne de la case — c'est toujours dans la note qu'on modifie la tâche. Le balayage tourne en arrière-plan : la fenêtre s'ouvre aussitôt avec les tableaux, et les tâches des notes arrivent juste après. Dans la grille, le numéro du jour est souligné quand ce jour a déjà une note quotidienne, et la liste du jour affiche aussi Ce jour-là : vos notes des années précédentes écrites à cette date.

Palette de commandes

Ctrl+Shift+P ouvre la palette de commandes (chaque action avec son raccourci, filtrable en tapant). Ctrl+R ouvre le sélecteur rapide de fichiers et Ctrl+Shift+K ouvre le sélecteur de tâches.


Serveur MCP (agents IA)

LightNote inclut un serveur MCP (Model Context Protocol) headless qui transforme votre espace de travail en un outil pour agents IA (Claude Desktop, Claude Code, Cursor, et tout client parlant MCP). L'agent peut lire et écrire des fichiers, rechercher, interroger des données tabulaires et des bases de données, travailler avec les tâches, utiliser Git et lancer des requêtes HTTP — le tout confiné au dossier (directory jail : les chemins avec .. ou hors de la racine sont refusés). Le transport est JSON-RPC 2.0 sur stdin/stdout ; chaque session lance un processus lnote.exe léger, séparé de la fenêtre de l'éditeur.

Raccourci en un clic : via IA → Activer l'IA dans ce dossier, LightNote active le MCP et écrit le .mcp.json d'un coup (le clic vaut consentement). Si l'IA est déjà active dans le dossier, l'élément devient Configurer l'IA de ce dossier… et ouvre la Configuration de l'espace de travail.

Sécurité à deux niveaux : (1) le serveur ne démarre que si vous avez donné l'opt-in pour ce dossier ; (2) chaque outil est verrouillé à la racine de l'espace. En plus, chaque outil est annoncé avec des annotations (lecture seule, destructif, idempotent, « touche le monde extérieur ») pour que le client IA évalue le risque avant de l'appeler.

Configuration pas à pas

  1. Activez le MCP pour le dossier. Dans Outils → Configuration de l'espace de travail, cochez Activer le MCP pour cet espace. Sans cet opt-in, le serveur refuse de démarrer (c'est le verrou principal). Sinon, en ligne de commande : lnote --mcp-enable "C:\Chemin\vers\espace-de-travail" (et --mcp-disable pour le désactiver).
  2. Trouvez le chemin de lnote.exe. Il se trouve dans le même dossier que lightnote.exe (le dossier d'installation de l'application). C'est l'exécutable console « slim », sans interface — c'est ce que l'agent lance.
  3. Enregistrez le serveur dans votre client IA, en pointant la commande vers lnote.exe et en passant --mcp suivi du dossier de l'espace. Au format utilisé par Claude Desktop / Cursor et similaires :
{
  "mcpServers": {
    "lightnote": {
      "command": "C:\\Chemin\\vers\\lnote.exe",
      "args": ["--mcp", "C:\\Chemin\\vers\\espace-de-travail"]
    }
  }
}

Conseils de configuration :

  • Les barres obliques inverses en JSON doivent être doublées (C:\\Users\\...\\lnote.exe), comme dans l'exemple.
  • Pour exposer plusieurs espaces de travail, ajoutez une entrée par dossier, avec des noms distincts ("lightnote-projetA", "lightnote-projetB"), chacune pointant vers sa racine.
  • Après avoir enregistré la configuration, redémarrez le client IA pour qu'il lance le serveur. Une fois connecté, l'agent devrait lister les outils lightnote_* ; demandez-lui « liste les fichiers de l'espace » pour confirmer que ça marche.
  • Pour Claude Code (CLI), le même serveur s'enregistre avec claude mcp add lightnote -- "C:\Chemin\vers\lnote.exe" --mcp "C:\Chemin\vers\espace-de-travail".

Mot de passe de base de données (facultatif). L'outil db_query ouvre une connexion .lnc. Si le mot de passe est chiffré avec la Phrase-Sécurisée, passez la phrase via la variable d'environnement LNOTE_PASSPHRASE dans le bloc du serveur (jamais en arguments de ligne de commande) — les connexions dont le mot de passe est en mode « demander » ne peuvent pas être utilisées sans surveillance.

Les requêtes de l'IA sont facultatives par connexion. Activer MCP dans le dossier n'expose pas les connexions : chaque .lnc ne répond à db_query que si l'option « Autoriser les requêtes de l'IA (MCP) » est cochée dans la boîte de dialogue de la connexion. L'accès est en lecture seule (SELECT).

Exporter depuis la base de données via l'agent. Outre les requêtes, l'agent peut matérialiser un SELECT dans un fichier avec db_export (Parquet, CSV, JSON ou .xlsx) — utile pour des résultats trop volumineux pour tenir dans une réponse. Les trois mêmes précautions s'appliquent, dans cet ordre : la requête doit être en lecture seule, la connexion exige l'option « Autoriser les requêtes IA (MCP) » (vérifiée avant le déchiffrement du mot de passe), et la destination doit rester dans l'espace de travail. Les gros exports utilisent le dossier temporaire du système comme espace de travail, environ la taille du résultat — gardez de l'espace disque libre.

Outils disponibles

L'agent voit les outils sous le préfixe du client (p. ex. lightnote_read_file). Par catégorie :

  • Fichiers : read_file (avec plage de lignes facultative), write_file, edit_file (remplace un extrait exact, sans réécrire tout le fichier), append_file, list_files, move_file, make_dir et delete_file (va dans la Corbeille, pas de suppression définitive).
  • Recherche et navigation : search_files (ripgrep, avec filtre sous-dossier/glob et limite), list_symbols (plan des fonctions/classes d'un fichier) et open_in_editor (ouvre/met au premier plan un fichier dans la fenêtre de LightNote, si elle est ouverte).
  • Données et SQL : query (SQL DuckDB sur Parquet/CSV/JSON, sortie tsv/json/markdown), describe_table (schéma + statistiques, sans déverser de lignes), export_query (matérialise un SELECT dans un fichier via COPY), sqlite_query (SQL sur un .sqlite/.db), db_list_connections (liste les .lnc de l'espace) et db_query (SQL en lecture seule sur une connexion .lnc). Pour envoyer le résultat vers un fichier plutôt que dans la réponse : db_export (Parquet/CSV/JSON/.xlsx).
  • Aussi : search_notes (récupère les extraits de notes les plus pertinents pour une question — le même moteur que Interroger vos notes), list_links (les liens sortants d'une note, résolus ou cassés), audit_vault_links (liens cassés et notes orphelines de tout le coffre), list_note_templates et le paramètre template de create_note, list_due_tasks (tâches dues aujourd'hui ou en retard dans tous les projets), xlsx_read (lit une feuille .xlsx en TSV), data_diff (compare deux fichiers tabulaires) et le catalogue de base de données db_list_objects/db_describe (tables/vues et les colonnes, clés et DDL d'une table — mêmes exigences que db_query). Et note_export (exporte une note en docx, odt, epub, LaTeX, Typst, HTML, reStructuredText, AsciiDoc, Org, MediaWiki, Notebook ou dans un autre dialecte Markdown — sans aucune fenêtre, et aussi depuis lnote note-export). Et note_import (le chemin inverse : un docx, odt, epub, rtf, HTML ou tex devient une note à côté de l’original, avec titres, listes, tableaux, emphase, liens, formules et images — aussi depuis lnote note-import). Et folder_export (un dossier entier devient un site HTML, un ensemble de documents ou du Markdown, avec les liens réécrits — aussi depuis lnote folder-export).
  • Archives : zip_list (liste les membres d'un .zip/.isx) et zip_read (lit un membre comme texte) — sans extraire l'archive sur le disque.
  • Tâches : list_task_projects (liste les projets de tâches .lnt de l'espace), list_tasks, list_task_statuses (colonnes du tableau), create_task, update_task, update_task_status (changer de colonne), delete_task et task_note (lire/écrire la note .md de la tâche). Un espace peut contenir plusieurs projets .lnt : choisissez lequel avec le paramètre project (le name renvoyé par list_task_projects ; facultatif s'il n'y en a qu'un). Les id/status_id sont des identifiants de session — ne lisez pas les fichiers internes du .lnt pour les obtenir ; utilisez les outils de tâches.
  • Notes (PKM) : create_note (crée une note .md), append_daily_note (ajoute une capture à la note du jour), remember (enregistre un fait durable vous concernant dans la note de mémoire), list_backlinks (notes pointant vers une note), list_note_tags et search_by_tag (les #hashtags du vault et les notes qui les utilisent) et add_task (crée une tâche avec échéance/étiquettes, en acceptant le langage naturel dans le titre).
  • Git : git_status, git_log, git_diff et git_restore.
  • Web et alertes : http_request (lance une requête HTTP et renvoie statut/en-têtes/corps) et notify (affiche une notification dans la barre d'état système de la fenêtre ouverte — pratique pour que l'agent signale qu'il a terminé).
  • Proxy d'IA : list_ai_models et ask_ai (ci-dessous).

Le serveur expose aussi les fichiers de l'espace comme ressources MCP (resources/list et resources/read), pour les clients qui préfèrent « joindre » des fichiers plutôt qu'appeler read_file.

Votre Bibliothèque de prompts (le dossier Prompts/ de l'espace) est exposée en tant que prompts MCP (prompts/list et prompts/get). Dans Claude Code, chaque prompt devient une commande slash — /mcp__lightnote__<nom> — prête à l'emploi dans la CLI d'IA.

Filet de sécurité des écritures. Avant d'écraser (write_file/edit_file) ou de supprimer (delete_file) un fichier, le serveur enregistre la version précédente dans l'Historique local — le filet de sécurité de l'éditeur — afin que vous puissiez annuler une modification faite par un agent, même hors d'un dépôt Git.

Chaque outil indique s'il lit ou écrit : outre les annotations MCP (readOnlyHint/destructiveHint), la description commence par une étiquette [read-only], [writes] ou [destructive] — pratique pour bâtir des listes d'autorisation en toute sécurité.

Proxy d'IA (déléguer à un autre modèle)

Les fournisseurs d'API que vous avez enregistrés avec la colonne MCP cochée sont exposés à l'agent via deux outils : list_ai_models (liste les modèles autorisés, avec id, nom et modèle) et ask_ai ({model, prompt}). Ainsi l'agent principal peut déléguer une sous-tâche à un modèle moins cher ou spécialisé. L'appel est relayé par le LightNote ouvert (le lnote.exe du MCP transmet la demande à la fenêtre de l'application par le pont interne) : la clé d'API ne quitte jamais votre machine et n'atteint jamais l'agent. Si LightNote n'est pas ouvert, l'outil renvoie une erreur vous demandant de l'ouvrir.

Ligne de commande (lnote)

Les mêmes opérations MCP vivent dans un exécutable console, lnote, pour les scripts et l'automatisation (aussi accessible via lightnote cli <commande>). Chaque action est confinée au dossier racine, défini par --root (par défaut : le dossier actuel).

Exemples :

lnote list --recursive
lnote read --path src/main.cpp --start-line 1 --end-line 40
lnote write --path note.md --content "Bonjour"
echo content | lnote write --path note.md --content -
lnote search --query TODO --regex
lnote query --sql "SELECT * FROM read_parquet('data.parquet') LIMIT 10"
lnote describe --path data.parquet
lnote search-notes --query "où ai-je écrit sur le budget"
lnote audit-links
lnote xlsx-read --path feuille.xlsx --sheet 0
lnote data-diff --a avant.parquet --b apres.parquet --mode changed --keys id
lnote db-describe --connection donnees.lnc --table clients
lnote db-export --connection dados.lnc --sql "SELECT * FROM clientes" --out clientes.parquet
lnote due-tasks
lnote export --sql "SELECT * FROM read_csv_auto('e.csv') WHERE state='NY'" --out ny.parquet
lnote zip-list --path export.isx
lnote zip-read --path export.isx --entry job/definition.xml
lnote task-projects
lnote tasks --project Backlog
lnote create-task --project Backlog --title "Réviser le texte" --effort 2
lnote move-task --project Backlog --task-id 5 --status-id 2
lnote git-status
lnote http --url https://api.exemple.com --method GET
lnote notify --message "Traitement terminé"

Options globales : --root <dossier>, --json (sortie structurée {ok,data,error}), --help (ou lnote <commande> --help) et --version. Les commandes inconnues reçoivent une suggestion (« vouliez-vous dire… ? »).

Mettre à jour d'anciennes données par lot : lnote upgrade <dossier> modernise d'un coup les fichiers écrits par des versions antérieures de LightNote — pour l'instant les extensions héritées .lnsh et .lnsm, devenues .lns et .lne. L'application le fait déjà d'elle-même à l'ouverture de chaque fichier ; la commande sert quand on en a des dizaines. Utilisez --dry-run pour voir ce qui changerait sans rien toucher. C'est un confort, pas une obligation : vos anciens fichiers s'ouvrent très bien sans elle.

Paramètres et thèmes

Où sont les options

Dans Outils → Paramètres généraux vous ajustez, par sections : les options Général (langue, enregistrement automatique, libérer les onglets inactifs, palette de couleurs d'onglets, titre de la fenêtre, notes quotidiennes, correcteur orthographique), le Thème de l'application, la police et les couleurs de l'Éditeur, le style Markdown, l'Exécution (interpréteurs), le Terminal (shells), les Assistants IA (CLI et IA par défaut), le Suivi de version et la Base de données (pagination, Oracle Instant Client).

Un champ de recherche en haut de la liste des sections filtre selon les options de chaque page ; et la section Fonctionnalités regroupe les interrupteurs des fonctionnalités optionnelles — graphe de connexions, notes autocollantes, sessions d'IA, Chat IA, enregistrement audio, retrouver d'anciennes notes, garder l'ordinateur éveillé et l'intégration au menu de l'Explorateur Windows. Désactiver une fonction la retire de l'interface, de la zone de notification et des raccourcis, et arrête de consommer des ressources — mais conserve les données déjà créées ; le changement prend effet au redémarrage.

Thèmes

Le thème de l'application change l'apparence du programme (menus, onglets, panneaux, barre d'état). Il existe plusieurs thèmes prêts à l'emploi — clairs (Clair, Solarized Light, Catppuccin Latte, Gruvbox Light, One Light, Rosé Pine Dawn, Everforest Light, Tokyo Night Day) et sombres (Sombre, Tokyo Night, Dracula, Ayu Mirage, Nord, Gruvbox Dark, Everforest Dark, Kanagawa Wave) — ainsi que le mode Personnalisé avec une couleur d'accentuation. De nouveaux thèmes arrivent via le catalogue en ligne, sans avoir à mettre à jour l'application.

Les couleurs de l'Éditeur de code et du Markdown se choisissent à part, dans leurs propres sections, indépendamment du thème de l'application. Chacune dispose d'une liste Thème : avec des jeux de couleurs prêts (Padrão, Dracula, One, Nord, Gruvbox et Tokyo Night, en variantes claire et sombre), un aperçu en direct et le bouton Enregistrer sous… pour conserver vos propres couleurs comme un préréglage réutilisable.

Thème par fenêtre. Chaque dossier (espace de travail) peut avoir son propre thème : vous pouvez ainsi garder deux fenêtres ouvertes avec des apparences différentes en même temps. Dans Configuration de l'espace de travail → Apparence de ce dossier, des listes déroulantes permettent de choisir le thème de cette fenêtre (l'apparence du programme), le thème du code et le thème Markdown — chacun avec l'option Suivre le thème général/Conserver par défaut pour ne rien remplacer. Remplacer les thèmes de code et de Markdown est pratique pour accorder les couleurs de l'éditeur à un thème sombre dans ce dossier seulement, sans toucher aux Réglages généraux. Ces choix restent sur votre machine (ils ne sont pas envoyés vers Git).

Outils, titre et disposition

Guide d'installation. Lorsque vous choisissez un outil du catalogue (assistant IA, interpréteur, formateur, linter ou pilote de base de données) qui n'est pas encore sur l'ordinateur — ou que vous essayez d'exécuter/formater/vérifier un fichier dont l'interpréteur manque —, LightNote ouvre un guide d'installation. Lorsqu'une commande sûre existe (via winget), le guide affiche la commande exacte et l'exécute dans une console intégrée, en un clic ; si l'outil dépend d'un autre (par exemple, une CLI qui nécessite Node.js), il propose d'installer d'abord le prérequis. Sans installateur automatique, le guide ouvre la page de téléchargement officielle avec un pas à pas. À la fin, il vérifie l'installation et rend l'outil prêt à l'emploi, sans redémarrer le programme.

Formatage et Linters ont leurs propres sections (formateur/linter externe par langage, avec Ajouter depuis un catalogue). Pour emporter vos préférences sur une autre machine, le groupe Migration des paramètres (section Général) propose Exporter/Importer les paramètres (un fichier .lnconf) : les options générales et les thèmes de contenu sont inclus, mais pas les clés d'API ni les chemins locaux (ressaisissez-les sur la machine cible).

Le titre de la fenêtre est un modèle libre : le nom de l'application apparaît toujours à la fin et vous composez le reste avec les variables {workspace} (dossier racine de l'espace de travail), {file} (nom du fichier ouvert) et {path} (chemin complet). Les décorations autour d'une variable vide (ex. les crochets dans [ {workspace} ]) disparaissent d'elles-mêmes ; laissez le champ vide pour la valeur par défaut [ {workspace} ] {file} — .

Disposition de la fenêtre. Dans Affichage → Disposition de la fenêtre (ou dans Paramètres généraux → Général → Disposition de la fenêtre), vous choisissez parmi trois préréglages — Moderne (par défaut), Classique et Confortable — ou réglez chaque option séparément : afficher la barre de menus en haut (quand elle est active, le bouton ☰ disparaît, car les deux ouvrent les mêmes menus), afficher des libellés à côté des icônes, placer la barre d’outils et la barre latérale à gauche ou à droite, et la taille des icônes. Choisir un préréglage ne fait que remplir les options : en modifier une ensuite n’annule rien, la liste affiche simplement « (personnalisé) ». Le changement s’applique immédiatement, dans toutes les fenêtres ouvertes.

Mode portable : les données à côté du programme

Dans la version .zip, LightNote range les réglages, les sessions, l'historique local et les index dans un dossier Windows (%LOCALAPPDATA%), hors du dossier du programme. Le mode portable amène tout cela à côté de l'exécutable, et le dossier entier peut alors vivre sur une clé USB, un disque externe ou un dossier synchronisé.

Pour l'activer : extrayez le .zip là où la copie doit rester, ouvrez Paramètres → Général → Mode portable et cliquez sur Rendre cette copie portable…. La fenêtre indique d'où et vers où vont les données, ce qu'elles pèsent et ce qui change ; à la confirmation, LightNote copie (ne déplace jamais) et vous demande de fermer puis rouvrir le programme. L'ancienne copie reste où elle était, intacte : si quelque chose se passe mal, rien n'est perdu.

Ensuite le dossier du programme gagne deux nouveaux dossiers : profile, avec ce qui est à vous (réglages, sessions, historique, dictionnaires téléchargés), et profile-cache, uniquement des index que le programme reconstruit tout seul. Vous pouvez supprimer profile-cache à tout moment pour récupérer de la place.

Pour changer de version : téléchargez le nouveau .zip, extrayez-le dans un nouveau dossier et copiez-y le dossier profile de l'ancienne version. C'est tout. profile-cache n'a pas besoin d'être copié (il se refait) ; le copier fonctionne aussi, c'est seulement inutile. Ne faites pas l'inverse : un profil écrit par une version plus récente fait démarrer le programme en lecture seule, pour ne pas abîmer ce qu'il ne sait pas encore lire.

Pour le désactiver : revenez à Paramètres → Général → Mode portable et cliquez sur Désactiver le mode portable…. Rien n'est supprimé : les deux dossiers sont seulement renommés (en profile.desativado et profile-cache.desativado), et LightNote réutilise le dossier Windows au démarrage suivant. Vous déciderez plus tard de les supprimer, de les restaurer ou d'en copier ce que vous voulez.

Ce qui n'accompagne PAS le dossier en changeant d'ordinateur. Trois secrets sont protégés par Windows par utilisateur et par machine, et ne se déchiffrent donc pas sur un autre PC : les clés d'IA, les mots de passe de fichiers que vous avez fait mémoriser et la Phrase-Sécurité enregistrée. Il suffit de les saisir à nouveau là-bas : rien n'est perdu, et vos fichiers sécurisés s'ouvrent toujours normalement avec la Phrase-Sécurité que vous tapez. Par ailleurs : les onglets et dossiers ouverts conservent le chemin complet, ils changent donc de place si la lettre du lecteur change ; l'intégration à l'Explorateur est désactivée quand vous activez le mode (elle écrit dans le Windows de la machine, l'inverse de ce que promet le mode portable) et peut être réactivée dans les Paramètres ; et le .mcp.json écrit dans vos dépôts pointe vers le chemin complet de lnote.exe, il faut donc le refaire sur la nouvelle machine.

Emporter les clés d'IA (facultatif). Dans Paramètres → Général → Mode portable se trouve Protéger les clés avec une phrase…. Activé, les clés d'IA et les mots de passe de fichier mémorisés cessent de dépendre de Windows et voyagent avec le dossier. Réfléchissez-y à deux fois : aujourd'hui, perdre la clé USB ne coûte rien — les secrets ne s'ouvrent pas hors de votre machine ; avec la phrase, celui qui obtient le dossier peut tenter de la deviner à son aise. Utilisez une phrase longue. La Phrase-Sécurité de l'espace de travail n'entre pas dans ce trousseau, à dessein : elle ouvre vos notes sécurisées, et une seule phrase ne doit pas tout déverrouiller. Cochez Retenir sur cette machine pour ne pas être interrogé sur votre ordinateur — ailleurs, la question revient.

chaveiro-do-perfil

Le mode portable concerne la version .zip. Une copie installée par l'installeur et l'édition du Microsoft Store ne peuvent pas être converties — leur dossier est en lecture seule ou géré par le désinstalleur — et la fenêtre le dit au lieu de laisser le bouton sans effet. En ligne de commande, LightNote fermé : lnote portable --status, lnote portable --on (accepte --dry-run) et lnote portable --off.

Raccourcis clavier

  • F1 — cette aide (à la section de l'écran actuel)
  • Ctrl+N / Ctrl+O — nouveau fichier / ouvrir un fichier
  • Ctrl+S / Ctrl+W — enregistrer / fermer l'onglet
  • Ctrl+Alt+Shift+S — tout enregistrer (chaque onglet modifié)
  • Ctrl+F / Ctrl+H — rechercher / remplacer dans le fichier
  • Ctrl+Shift+F — recherche globale (ripgrep)
  • Ctrl+Shift+G — panneau de suivi de version (Git)
  • Ctrl+Shift+E / Ctrl+Shift+M — panneau Explorateur / panneau des Éléments en attente
  • Ctrl+B — afficher/masquer la barre latérale
  • Ctrl+' — terminal (sur la disposition US, aussi Ctrl+`)
  • Ctrl+/ — commenter/décommenter ; Ctrl+Shift+D — dupliquer la ligne
  • F5 — exécuter le fichier ; Ctrl+Shift+Entrée — envoyer la sélection au terminal
  • Ctrl+K / Ctrl+I — demander à l'IA / modifier avec l'IA
  • Ctrl+B / Ctrl+I / Ctrl+E — dans la note Markdown : gras / italique / changer le mode d'affichage
  • Ctrl+Shift+X / Ctrl+Shift+C / Ctrl+Shift+H — dans la note : barré / code en ligne / surlignage
  • Ctrl+1…Ctrl+6 — dans la note : niveau de titre (le même niveau à nouveau revient au paragraphe)
  • Ctrl+Shift+V — dans la note : coller sans mise en forme
  • Ctrl+Entrée — « exécuter ici » : instruction SQL, cellule de Blocs, requête d'API, source du diagramme ou de la formule dans la note
  • Ctrl+Shift+R / F4 — macro : enregistrer / rejouer
  • Ctrl+R — aller au fichier ; Ctrl+Shift+P — palette de commandes
  • Ctrl+Shift+K — aller à la tâche ; Ctrl+Shift+T — rouvrir l'onglet fermé
  • Ctrl+Alt+G — graphe de connexions
  • Ctrl+Alt+N — capture rapide (globale, même en dehors de LightNote)
  • Ctrl+Alt+D / Ctrl+Alt+T — note du jour / tâche rapide
  • Ctrl+Alt+R — enregistrer/arrêter l'audio (global, note vocale rapide)
  • F11 — mode Zen (l'onglet occupe toute la fenêtre)
  • Ctrl++ / Ctrl+- / Ctrl+0 — zoom

La même touche peut faire des choses différentes selon l’écran qui a le focus : la vue au premier plan gagne, et en dehors d’elle c’est le raccourci de la fenêtre qui s’applique. Avec un onglet Base de données au focus, F4 ouvre les propriétés de l’objet au lieu d’exécuter la macro ; dans le Diff et dans le panneau de sortie, F8/Shift+F8 sautent d’une modification à l’autre ; et dans la fenêtre Fichiers isolés, Alt+←/Alt+→ reculent et avancent entre les dossiers. La liste complète et filtrable se trouve dans Aide → Raccourcis clavier.

Licence, éditions et communauté

LightNote est proposé en éditions aux mêmes fonctions, différant uniquement par la licence et la distribution :

  • LightNote (gratuit, depuis le site) : pour un usage personnel et non commercial.
  • LightNote Core (Microsoft Store) : acquis comme une contribution au projet ; accorde une licence d'usage commercial et reçoit des mises à jour automatiques via le Store.
  • LightNote Business (futur) : licence en volume/entreprise, réservée à une disponibilité future.

L'édition de votre copie — et donc les clauses qui s'appliquent — est affichée dans Aide → À propos. Les conditions complètes sont dans Aide → À propos → Conditions de licence….

Participez et contribuez :

  • Suggestions et questions : GitHub Discussions — github.com/nglczr/LightNote-Community/discussions
  • Vous avez trouvé un bug ? Signalez-le sur GitHub Issues — github.com/nglczr/LightNote-Community/issues
  • Soutenez le développement sur Ko-fi — ko-fi.com/lightnote (ou obtenez LightNote Core sur le Store)
  • Contact : contato@lightnote.com.br · Site web : lightnote.com.br