44 Commits
Author SHA1 Message Date
Ange-Marie MAURIN - A2M Systèmes 693285703f docs(adr): ADR 0011 acceptee 2026-11-07 21:31:16 +01:00
Ange-Marie MAURIN - A2M Systèmes 0c0c4bbf4d docs(tutoriels): tutoriel 02, construire une brique graphique (panneau Simulation)
Six parties a faire soi-meme, du contrat session/step au composant Studio. Tutoriel 01 : version 0.2.0 du protocole de rendu.
2026-11-07 20:50:17 +01:00
Ange-Marie MAURIN - A2M Systèmes 98c778aa28 feat(input): entrees du joueur captees par l'adaptateur (ADR 0011)
L'adaptateur traduit clavier et manette en actions SEQUA (PlayerInput) ;
le Core ne recoit et n'enregistre que ces actions, le rejeu reste exact.

- SEQUA 3D : PlayerInput, poll_input(), capacite player_input
  (interface des adaptateurs en version 2)
- protocole Core - rendu 0.2 : render/input, envoye quand les actions
  changent ; entree remise au neutre si le rendu disparait
- Godot : InputMap du projet (ZQSD, fleches, espace, manette) ou script
  SequaInput.sequa_player_input() pour une correspondance avancee ;
  entree neutre sans focus ; exemple examples/sequa_input.gd
- adaptateur debug : entrees scriptees par numero d'image
- Studio : ligne "Entrees du joueur" du panneau Rendu
2026-11-07 20:48:26 +01:00
Ange-Marie MAURIN - A2M Systèmes f9e41298a3 fix(engines/godot): fenetre Godot marquee Ne repond pas (regression Godot 4.7.2)
Contournement de godotengine/godot#124276 : apres chaque image, lecture non filtree de la file de messages (PM_NOREMOVE). Verifie par IsHungAppWindow avec mouvements de souris reels : 0 detection au lieu d'une detection permanente. A retirer quand Godot sera corrige (docs/avant-premiere-version.md).
2026-11-07 17:00:37 +01:00
Ange-Marie MAURIN - A2M Systèmes f039fabdd0 feat(render): journal du rendu lance par Studio et images lentes signalees
Studio host passe --render-log (run\render-<port>.log) au Core ; sequa-render journalise toute image de plus de 250 ms avec la repartition du temps, pour diagnostiquer les fenetres Godot qui ne repondent plus.
2026-11-07 16:46:29 +01:00
Ange-Marie MAURIN - A2M Systèmes 815192918d fix(studio/host): arret net si l'interface ne peut pas etre servie
Port 9180 pris par un autre logiciel (Logitech G HUB) : message et --ui-port au lieu d'une adresse qui mene ailleurs. Points a regler avant la premiere version : docs/avant-premiere-version.md.
2026-11-07 16:28:29 +01:00
Ange-Marie MAURIN - A2M Systèmes da0d31385b build: arborescence bin/<plateforme>/<type> et build unifié (ADR 0010)
- platform/layout : racine sequa-root.json, chemins des composants, arguments et chemins en UTF-8.
- Règles install() : bin/windows-x64/{debug,release,asan}/ (core, render, studio + ui, engines).
- Le Core trouve sequa-render et les adaptateurs depuis la racine (--sequa-root, passé par
  Studio host à sa copie fantôme) : plus de render-unavailable depuis le panneau Rendu.
- L'adaptateur Godot cherche Godot et son projet à côté de lui (surcharge par --adapter-options) ;
  template_release pour le type release. Godot hébergé dans les presets debug et release.
- scripts/build-all.ps1 : Godot, C++, interface, arrêt des processus du dossier visé, install ;
  check.ps1 l'appelle (modification de l'ADR 0004).
- docs/installation/ : compiler, lancer, installer et désinstaller par plateforme.
2026-11-07 15:50:37 +01:00
Ange-Marie MAURIN - A2M Systèmes 28b1b44294 docs(adr): ADR 0009 acceptee, ADR 0010 arborescence des binaires et build unifie
ADR 0004 modifiee (check.ps1 lance build-all). README : etat et dossiers a jour.
2026-11-07 15:25:41 +01:00
Ange-Marie MAURIN - A2M Systèmes 1d18b71c0b docs(tutoriels): panneau Studio de bout en bout
Carte des processus, échanges WebSocket du panneau Rendu, méthode « le contrat d'abord », fichiers C++ et TypeScript concernés, tests, essai avec le faux Core puis le vrai Core et Godot, liste de contrôle. L'exemple est déjà implémenté : à transformer plus tard en exercices guidés.
2026-11-07 14:42:22 +01:00
Ange-Marie MAURIN - A2M Systèmes 80445c1c11 feat(studio/ui): panneau Rendu et protocole Studio - Core 0.3
Studio demande au Core de démarrer ou d'arrêter le rendu (Godot ou débogage) et affiche son état une fois par seconde : moteur et capacités déclarées, taille, images/s, latence de transport (critère ADR 0009 < 4 ms), délai d'affichage, relances, échecs. Requêtes avec id dans WebSocketCoreConnection, tranche render de l'état et de reduce, connexion simulée et faux Core (SIMULÉ) à jour. Composant render-panel en deux parties : modèle pur testé sous Node, montage DOM testé sous happy-dom (MIT, dépendance de développement). npm run check : 140 tests.
2026-11-07 14:42:22 +01:00
Ange-Marie MAURIN - A2M Systèmes eb4db9e01f feat(render): processus de rendu lancé par le Core, scène simulée affichée dans Godot
ADR 0009 (Proposée) et spécification du protocole Core - rendu 0.1. Le Core projette le monde simulé (micro-mode 2D, SIMULÉ) en deltas SEQUA 3D (sequa::core_render) et les pousse après chaque tick qui change la scène (RenderHub, observateur de LiveSession) ; il lance et supervise sequa-render (RenderSupervisor : lié au Core, relance après plantage). sequa-render charge une bibliothèque d'adaptateur par un point d'entrée C versionné (3d/adapter_library.hpp), applique les deltas et rend les images ; codec JSON provisoire partagé dans 3d/wire. Adaptateur Godot en DLL et nouvel adaptateur de débogage (engines/debug/adapter : vue de côté en images PPM ou vidéo via ffmpeg externe). Protocole Studio - Core 0.3 : render/start, render/stop, render/status (Core et Studio host). Mesuré avec Godot : transport tick -> delta reçu p95 ≈ 0,3 ms (critère 4 ms).
2026-11-07 14:42:09 +01:00
Ange-Marie MAURIN - A2M Systèmes 464ff6ce88 refactor(platform): lanceur de processus commun, enfant lié au parent
Le lancement de processus de Studio host (CoreProcess) devient sequa::platform::ChildProcess dans platform/process, pour être partagé par Studio host et le Core (qui lancera le rendu, ADR 0009). Nouvelle option kill_with_parent : l'enfant meurt avec le parent, même brutalement (job object KILL_ON_JOB_CLOSE sous Windows, fork + PR_SET_PDEATHSIG sous Linux, ignorée sous macOS). Les tests de copie fantôme restent dans studio/host/supervisor (test_shadow.cpp) avec l'enfant de test de platform/process.
2026-11-07 14:41:56 +01:00
Ange-Marie MAURIN - A2M Systèmes c6aa05680e feat(engines/godot): Godot hébergé par l'adaptateur, scène SEQUA poussée dans Godot
Option SEQUA_BUILD_GODOT_RUNTIME (preset windows-msvc-prototypes, Windows seulement) : godot-cpp compilé avec l'API du fork si elle a été extraite, même bibliothèque d'exécution MSVC que SEQUA. GodotHost charge la DLL LibGodot, initialise godot-cpp en extension hôte et pilote iteration() ; GodotScene crée, déplace et détruit les nœuds sous SequaScene à partir des deltas validés par SceneState ; conversions pures (rotation, couleur sRGB, formes) testées sans moteur. Démo sequa_godot_demo (scène SIMULÉE) : 300 images, arrêt propre. La DLL de Godot n'est déchargée qu'après les globaux de godot-cpp (init_seg), sinon la sortie du processus plante. Frontière binaire de l'ADR 0008 reportée à l'étape 4 (README de l'adaptateur).
2026-11-07 09:19:53 +01:00
Ange-Marie MAURIN - A2M Systèmes 9358bd404e build(godot): extraction de l'API du fork pour godot-cpp
scripts/build-godot.ps1 -Target editor construit l'éditeur du fork (exécutable, pas LibGodot), seul à savoir faire --dump-extension-api, et écrit build/godot/extension_api.json. godot-cpp s'appuie ainsi sur l'API réelle du fork plutôt que sur la liste officielle 4.7 (identiques tant que le fork ne touche pas à l'API : 1036 classes).
2026-11-07 09:19:53 +01:00
Ange-Marie MAURIN - A2M Systèmes 203e9ed9b6 fix(studio/host): corrections signalées par clangd
Initialiseurs désignés pour ParsedOptions, RequestResult et Error ; candidate non const dans find_ui_dir pour permettre le déplacement au retour ; ErrorCode sur std::uint8_t.
2026-11-07 04:37:59 +01:00
Ange-Marie MAURIN - A2M Systèmes 83fe5666ff chore: configuration clangd, base de compilation des prototypes
Les fichiers de prototypes/ utilisent build/windows-msvc-prototypes, seul preset qui les construit.
2026-11-07 04:37:39 +01:00
Ange-Marie MAURIN - A2M Systèmes e7ddd690ce feat(prototypes): libgodot_host, Godot hébergé par LibGodot et script de construction
scripts/build-godot.ps1 construit Godot en bibliothèque partagée depuis le fork (SCons dans un venv, Vulkan seul, --path autorisé). Le prototype charge la DLL, démarre Godot par l'interface C de GDExtension et pilote iteration() : démarrage 1,5 s, arrêt propre à condition de décharger la DLL juste après la destruction de l'instance.
2026-11-07 04:37:38 +01:00
Ange-Marie MAURIN - A2M Systèmes 4ffcd11734 feat(engines/godot): adaptateur Godot, fork 4.7.2 et godot-cpp en sous-modules
GodotEngineAdapter déclare ses capacités Forward+ (start() pas encore écrit). Sous-modules engines/godot/vendor/godot-src (fork Gitea, branche sequa/4.7.2 depuis 4.7.2-stable) et godot-cpp (10.0.0-stable). ADR 0007 : LibGodot, fork, Vulkan, vrai headless, seconde vue pour albedo et identifiants. ADR 0008 : processus de rendu séparé du Core, moteur et inférence en bibliothèques chargées.
2026-11-07 04:37:18 +01:00
Ange-Marie MAURIN - A2M Systèmes 3f36b98c71 feat(3d): contrat SEQUA 3D, I3DEngineAdapter et négociation des capacités
Bibliothèque sequa::3d (espace de noms sequa::three_d), sans dépendance à un moteur : interface I3DEngineAdapter, tampons et négociation des capacités, synchronisation de la scène par deltas versionnés tout ou rien (SceneState, snapshot), demandes d'image et mesures communes. NullEngineAdapter (SIMULÉ) pour les tests. Types provisoires en attendant le format du schéma.
2026-11-07 04:37:15 +01:00
Ange-Marie MAURIN - A2M Systèmes d9f1b0c24e feat(studio/host): sequa-studio, démarrage/rattachement du Core et rechargement par rejeu
StudioHost : rattachement via le fichier d'exécution validé par instanceId, sinon lancement depuis une copie fantôme (jeton aléatoire, origines autorisées, --linked) ; reload = export (enregistrement + empreintes), arrêt, nouvel exécutable, import par rejeu, comparaison tick par tick ; restart ; detach/attach réversibles ; arrêt propre. sequa-studio : options §7.1, interface servie ou --dev, navigateur, commandes console, --watch. Tests de bout en bout contre le vrai Core (rechargement identique, rattachement d'un Core détaché, pas d'orphelin). Interface passée au protocole 0.2, jeton masqué dans le libellé. 111 tests verts en Debug et ASan.
2026-11-06 23:15:23 +01:00
Ange-Marie MAURIN - A2M Systèmes 832bd52fc9 feat(studio/host): brique supervisor, cycle de vie du Core
En-têtes repris d'un subagent interrompu, implémentation et tests écrits ensuite : CoreProcess (CreateProcessW avec héritage limité au journal, citation compatible CommandLineToArgvW, journal en ajout ; posix_spawn sous POSIX, non testé), is_process_alive, fichier d'exécution atomique, copies fantômes et nettoyage, read_last_lines, FileWatcher. 15 cas (Debug, ASan) avec un processus enfant de test.
2026-11-06 23:06:34 +01:00
Ange-Marie MAURIN - A2M Systèmes a185b3414a feat(core): protocole Studio - Core 0.2, session en direct, bail et sécurité
CoreServices / CoreRuntime / LiveSession (conception reprise d'un subagent interrompu, implémentation complétée) : session à 60 Hz avec entrée maintenue, export de l'enregistrement et des empreintes par tick, import par rejeu (sim::rebuild_session) puis poursuite dans le même enregistrement ; bail réversible (--linked, core/attach, core/detach, délai de grâce, code de sortie 3) ; core/shutdown ; jeton en temps constant et contrôle de l'Origin (origines ws:// des clients natifs acceptées, spec mise à jour). Base64 strict corrigé (rejetait des entrées valides). 56 cas de test, ASan vert sur les tests serveur. build.ps1 : -Target accepte a,b.
2026-11-06 23:00:53 +01:00
Ange-Marie MAURIN - A2M Systèmes ea9f5709fa feat(studio/host): brique client, protocole 0.2 côté host
CoreClient (IXWebSocket) : connexion + hello sequa-studio-host, requêtes corrélées par id avec délais, requêtes concurrentes, erreur immédiate à la déconnexion, rappel on_disconnect. wire : hex64, base64 RFC 4648 strict, décodage des empreintes, first_divergence. 15 cas (Debug, ASan) contre un faux serveur conforme à la spec. Écrit par un subagent (DeepSeek V4.1 Flash), relu.
2026-11-06 22:43:30 +01:00
Ange-Marie MAURIN - A2M Systèmes 99b0a0f008 feat(studio/host): brique web, service de l'interface et ouverture du navigateur
UiServer (ix::HttpServer) : GET/HEAD, / -> index.html, MIME, en-têtes no-store/nosniff, vérification exclusive du port sous Windows. Chemins : décodage unique, refus de .., ., fichiers cachés, antislash, octet nul, : (lecteur ou flux NTFS), puis confinement vérifié par weakly_canonical. build_ui_url, build_core_ws_url, open_browser (http/https uniquement). 14 cas de test dont 12 tentatives d'évasion. Écrit par un subagent (DeepSeek V4.1 Flash), relu ; refus de : étendu aux flux NTFS.
2026-11-06 22:41:21 +01:00
Ange-Marie MAURIN - A2M Systèmes e703c217f7 build: options -Target et -TestRegex de build.ps1 2026-11-06 22:29:49 +01:00
Ange-Marie MAURIN - A2M Systèmes 1720da44a4 build: option -BuildDir de build.ps1 pour des builds en parallèle 2026-11-06 22:28:22 +01:00
Ange-Marie MAURIN - A2M Systèmes 7a1da8ef26 docs: ADR 0006 et spécification du protocole 0.2 ; squelette studio/host
Studio = host (C++) + ui. Core processus séparé lancé depuis une copie fantôme, lié par un bail réversible porté par le protocole, identifié par instanceId, rechargé par rejeu de la session avec comparaison des empreintes. Sécurité : jeton et vérification de l'Origin.
2026-11-06 22:27:00 +01:00
Ange-Marie MAURIN - A2M Systèmes e231e643cd refactor(studio): l'interface passe dans studio/ui, studio/ devient l'ensemble host + ui
Studio regroupe l'exécutable hôte (C++, à venir dans studio/host) et l'interface web (TypeScript, studio/ui). Chemins mis à jour dans les scripts, .gitignore et la documentation ; paquet renommé @sequa/studio-ui.
2026-11-06 22:24:27 +01:00
Ange-Marie MAURIN - A2M Systèmes 15c0b0abd0 feat(studio): faux Core de développement (SIMULÉ) et lancement -MockCore
studio/tools/mock-core.mjs : serveur WebSocket RFC 6455 sans dépendance, 6 scénarios (ok, incompatible, error, silent, garbage, close) reproduisant les codes du vrai Core, port 9101 pour coexister avec sequa-core (9100). 7 tests d'intégration contre la vraie WebSocketCoreConnection, dont trames découpées et fusionnées (51 tests au total). scripts/studio.ps1 -MockCore -Scenario <nom> et MOCK_CORE=<nom> pour studio.sh. Écrit par un subagent (GLM 5.3), relu ; port et message du scénario error ajustés.
2026-11-06 22:09:01 +01:00
Ange-Marie MAURIN - A2M Systèmes 522ea04eb4 build: script d'installation de cuDNN, fonctions de téléchargement communes
install-cudnn.ps1 : version la plus récente lue dans l'index NVIDIA, archive cuda13 téléchargée avec reprise et vérifiée par SHA256, licence NVIDIA affichée et acceptée par l'utilisateur, installation sans droits admin dans %LOCALAPPDATA%\SEQUA\sdk\cudnn, variable utilisateur CUDNN_PATH. Refuse de remplacer un dossier de destination non vide qui n'est pas une installation cuDNN. Fonctions de téléchargement et d'empreinte factorisées dans scripts/lib/SequaDownload.ps1 (install-cuda.ps1 inchangé fonctionnellement). Écrit par un subagent (DeepSeek V4.1 Flash), relu et corrigé.
2026-11-06 21:47:25 +01:00
Ange-Marie MAURIN - A2M Systèmes 545b8fd369 fix(scripts): install-cuda ne se fie plus au code de retour de l'installateur NVIDIA
Code 8 observé alors que l'installation manuelle fonctionne : le script vérifie désormais la présence de CUDA après coup et, en cas d'échec, indique le chemin de l'installateur vérifié pour un lancement manuel.
2026-11-06 21:35:50 +01:00
Ange-Marie MAURIN - A2M Systèmes 142e563fcc feat(core): serveur WebSocket du protocole Studio - Core
sequa::core_server : ProtocolSession (poignée de main hello -> welcome/error, JSON provisoire identique à Studio, même règle de compatibilité) séparée du transport CoreServer (IXWebSocket 12.1.0, écoute 127.0.0.1:9100). Exécutable sequa-core. Vérification exclusive du port sous Windows (IXWebSocket active SO_REUSEADDR). Sanitizers appliqués à tout le build (ASan MSVC exige des dépendances instrumentées). ADR 0005. 30 tests (Debug, Release, ASan), dont 4 sur vrais sockets.
2026-11-06 21:23:37 +01:00
Ange-Marie MAURIN - A2M Systèmes 6cf0c54e3b feat(prototypes): étape 2 gpu_interop exécutée et mesurée
CUDA 13.5 : import 0,07 ms, mappage 0,05-0,08 ms, copie GPU->GPU 0,06 ms (100-140 Go/s) contre ~32 ms par le CPU, vérification octet à octet OK. Corrige aussi un nom de test contenant ';' que ctest découpait en deux.
2026-11-06 21:07:10 +01:00
Ange-Marie MAURIN - A2M Systèmes 32d052cb45 feat(prototypes): étape 2 gpu_interop, import Vulkan vers CUDA (non exécutée)
Code Vulkan commun factorisé dans vk_common (étape 1 inchangée et verte). Nouvel exécutable gpu_interop_vk_cuda : sélection du device CUDA par deviceUUID, cudaImportExternalMemory OPAQUE_WIN32 dédié, mappage en mipmapped array, copie GPU->GPU mesurée, vérification octet à octet. Construit seulement si le CUDA Toolkit est présent ; pas encore compilé contre les vrais en-têtes ni exécuté.
2026-11-06 20:00:41 +01:00
Ange-Marie MAURIN - A2M Systèmes 65f9b2fab0 docs: lancement de Studio et aide des scripts dans le README 2026-11-06 19:58:03 +01:00
Ange-Marie MAURIN - A2M Systèmes 5b0b1dbe81 build: script de lancement de Studio, aide -Help, CUDA sans winget
scripts/studio.ps1 et studio.sh lancent Vite (npm ci automatique, Core simule ou -Core ws://...). install-cuda.ps1 lit le nom de l'installateur et son MD5 dans la liste officielle NVIDIA (md5sum.txt) au lieu du manifeste winget. Aide integree (-Help, Get-Help) pour tous les scripts PowerShell.
2026-11-06 19:57:49 +01:00
Ange-Marie MAURIN - A2M Systèmes 872fb8c1d6 docs(adr): modèle, index et ADR 0001 à 0004
Consigne les décisions déjà prises : licence MPL 2.0 et politique de dépendances, deux langages de produit (C++ et TypeScript), Studio web à conteneur remplaçable, multiplateforme par conception avec vérification locale (pas de runners CI).
2026-11-06 19:51:20 +01:00
Ange-Marie MAURIN - A2M Systèmes ab219ad611 feat(core): simulation déterministe, enregistrement et rejeu
Virgule fixe Q16.16, générateur PCG32 à graine explicite, horloge à pas fixe exacte, simulation d'un micro-mode de démonstration (marqué SIMULÉ), empreinte FNV-1a de l'état, enregistrement binaire versionné des entrées, rejeu avec d'autres réglages de ressenti et détection du premier tick divergent. Empreinte de référence multiplateforme figée. 22 tests (Debug, Release, ASan).
2026-11-06 19:50:56 +01:00
Ange-Marie MAURIN - A2M Systèmes a03accb388 feat(studio): connexion WebSocket native au Core
Client WebSocket sans bibliothèque derrière CoreConnection, messages JSON provisoires hello/welcome/error validés (en attendant l'ADR du schéma), délai de poignée de main, compatibilité semver stricte en 0.x, choix du Core par ?core=ws://..., Core simulé par défaut et affiché comme tel. 44 tests.
2026-11-06 19:38:58 +01:00
Ange-Marie MAURIN - A2M Systèmes 1ec6443f14 build: téléchargement CUDA avec reprise et vérification SHA256
L'installateur (~2,7 Go) est téléchargé par curl -C - dans un cache local et reprend après interruption ou relance du script ; URL et SHA256 lus dans le manifeste winget ; options -DryRun et -DownloadOnly ; SHA256 calculé via .NET.
2026-11-06 19:36:18 +01:00
Ange-Marie MAURIN - A2M Systèmes 9678c27888 build: script d'installation du CUDA Toolkit via winget
Vérifie la version CUDA acceptée par le pilote et les installations existantes, mode -DryRun, licence NVIDIA acceptée par l'utilisateur (--interactive).
2026-11-06 19:33:46 +01:00
Ange-Marie MAURIN - A2M Systèmes 923ddd387a feat: squelettes Studio et prototype d'échange GPU Vulkan
Studio : Vite + TypeScript strict sans framework, état sérialisable et réduction pure, connexion au Core simulée et marquée comme telle, tests vitest. Prototype jetable gpu_interop étape 1 : export/import mémoire Vulkan OPAQUE_WIN32 entre deux VkDevice, vérification octet à octet et mesures.
2026-11-06 19:32:11 +01:00
Ange-Marie MAURIN - A2M Systèmes d080da0ee3 build: base CMake, presets et vérification locale
CMake 3.25+, C++20, avertissements stricts, règles de déterminisme (pas de fast-math ni de contraction FMA), sanitizers et clang-tidy optionnels, doctest. Presets Windows/Linux/macOS, scripts build.ps1, build.sh et check.ps1 (pas de CI serveur). README de core, 3d et schema.
2026-11-06 19:32:10 +01:00
Ange-Marie MAURIN - A2M SystèmesandClaude Sonnet 5.5 c91bebccba chore: initial repository structure
Monorepo skeleton (core, 3d, studio, schema, docs, artwork), MPL 2.0 licence,
and the SEQUA Engine v2 reference document.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 16:51:38 +01:00