Glossaire
Le vocabulaire du projet, tel qu'il est employé dans le code et dans cette documentation.
| Terme | Sens |
|---|---|
| Basthon | Ensemble de noyaux d'exécution pédagogiques (Python, SQL, OCaml…) pour le navigateur, publiés sur npm (@basthon/kernel-*). CapyCode les utilise tels quels. |
| Capytale | Plateforme d'activités de programmation de l'Éducation nationale, qui intègre CapyCode dans un cadre : c'est la page hôte. |
| Commande | Action de l'IDE décrite une fois (Command, src/commands/catalog.ts) ; menus, palette et raccourcis en dérivent. À ne pas confondre avec une commande du terminal (ShellCommand). |
| Console | Un onglet du panneau inférieur : un terminal, un prompt ou une sortie graphique (store console). |
| Console Python, prompt | L'interpréteur interactif d'un langage (>>>), un par langage. C'est là que le bouton ▶ laisse l'état final du programme, et là que bascule python tapé seul dans le terminal. |
| Extension intégrée | Fonctionnalité optionnelle ou langage secondaire (linter, git, formatter, outline, sql, ocaml) déclarée dans src/services/extensions/, installable ou désactivable depuis le panneau Extensions (Ctrl+Maj+X). |
| Faux noyau | FakeKernel (tests/helpers/fake-kernel.ts) : imitation du contrat Basthon pour les tests Vitest. |
| Instantané (de projet) | ProjectSnapshot : fichiers texte et, au choix, une partie de l'historique Git, dans un format versionné. C'est le contenu d'un lien de partage. |
| Instantané Pyodide (snapshot) | Copie de la mémoire de Pyodide juste après son chargement, gardée par Basthon dans IndexedDB (basthon-python3) ; un noyau redémarre en ~1 s au lieu de ~4 s. Sans rapport avec l'instantané de projet. |
| KernelSession | Au plus un noyau démarré, plus le routage de ses événements vers une console (src/services/runtime.ts). Une par prompt et une par terminal. |
| Langage | LanguageSupport déclaré dans src/languages/ : extensions, coloration, exécution, analyse, formatage, plan. |
| LightningFS | Système de fichiers dans IndexedDB (@isomorphic-git/lightning-fs), celui qu'attend isomorphic-git. Base capycode-fs. |
| Lien de partage | URL dont le fragment #capycode=… contient un instantané compressé (fflate + Base64URL). Le fragment n'est jamais envoyé au serveur. |
| Lot (batch) | Série d'écritures dont les notifications sont regroupées en une seule à la fin (vfs.batch, gitService.batch, workspace.batch). |
| Noyau | Interpréteur d'un langage fourni par Basthon (python3, sql, ocaml), qui tourne dans un worker isolé. Un noyau neuf est démarré pour chaque exécution d'un programme. |
| Origine opaque | Origine d'un worker lancé depuis une URL data: : il ne partage rien (IndexedDB, localStorage, cookies) avec la page. C'est ce qui isole le code de l'élève. |
| Page hôte | Page qui affiche CapyCode dans une <iframe> et peut le régler par postMessage (store embedding). |
| Prélude | Code évalué avant un script Python pour reproduire python <script> <args> : répertoire courant, sys.argv, sys.path, __file__ (pythonScriptPrelude). |
| Projet de départ | main.py et un premier commit, créés à la toute première visite (src/services/project/defaults.ts). |
| Ruff | Analyseur et formateur Python, en WebAssembly (@astral-sh/ruff-wasm-web), chargé au premier fichier Python. |
| Service | Module de logique sans Vue ni store (src/services/), testable sous Node. |
| Service worker | src/sw.ts : rend l'application utilisable hors ligne et gère la mise à jour des fichiers en cache. |
| ShellCommand | Une commande du terminal (ls, git, python…) : exécution, aide et complétion au même endroit. |
| Store | État réactif Pinia (src/stores/), affiché par les composants ; s'abonne aux notifications des services. |
| TerminalContext | Ce que reçoit une commande du terminal : le projet, le répertoire courant, les E/S, le Python de la session. Jamais un store. |
| VFS | VirtualFileSystem (src/services/vfs.ts) : le système de fichiers du workspace et ses notifications (onChange). |
| Workspace | Le projet de l'élève sous /workspace : son système de fichiers et son dépôt Git (/workspace/.git), réunis par la classe Workspace. |