Skip to content

Releases

Sapphire 3 Beta 0.1.0-beta.9

Pre-release

Choose a tag to compare

@lalBi94 lalBi94 released this 11 Nov 20:37

Sapphire 3 — 0.1.0-beta.9

Bêta centrée sur le Plugin SDK, la configuration des entrées natives et l’organisation du menu de création. Le format workspace reste en version 3 ; aucune migration supplémentaire n’est introduite.

Nouveautés

  • Plugin SDK local : package @sapphire3/plugin-sdk, manifeste déclaratif .sp3plugin, validation, permissions, dépendances, conflits et cycle de vie. Gestionnaire Settings → Plugins avec import local, activation, désactivation et désinstallation.
  • Widgets de plugin : renderer déclaratif, propriétés, état persistant, entrées liées à une variable, sorties liées à une fonction (T) -> void, slider et bouton. La carte bascule entre le widget et sa définition JSON en lecture seule ; les liaisons produisent des flèches de dépendance depuis les modules fournisseurs.
  • Opérations natives de plugin : opérations typées, validation, pureté/effets, implémentation par expression sûre et émetteurs JavaScript/Python optionnels. Refus explicite si un backend manque.
  • Composites de niveau A : insertion atomique d’un brouillon natif avec des trous à remplir. Les nœuds sémantiques de niveau B restent hors périmètre.
  • Dashboard exporté : widgets de plugin, définitions, manifestes actifs et opérations natives embarqués ; variables et callbacks résolus dans le run borné et le live. Un plugin absent produit un panneau de diagnostic sans retirer les données.
  • Configuration des entrées natives : les sélecteurs de fonction des boutons toggle/hold, des entrées int/float/string et des sélecteurs RGB/RGBA sont regroupés dans un volet Configuration pliable, replié par défaut.
  • Menu de création : quatrième colonne Plugins à droite lorsque des widgets de plugin sont disponibles. Les sous-catégories de Widgets sont repliées par défaut ; Entrées est divisée en Boutons, Nombres, Texte et Couleurs.
  • Menu contextuel : positionnement au curseur et ouverture vers le haut près du bord inférieur, au lieu d’être ramené en haut du canvas.
  • Documentation : docs/sdk/plugin-sdk.md, docs/PLUGIN_CAPABILITIES.md, pages du wiki et site public mis à jour.

Cibles de transpilation

  • JavaScript et Python : cibles stables, avec classes, tableaux, pointeurs, lambdas, ForEach et opérations natives prises en charge.
  • C expérimental : cible C11 volontairement restreinte aux primitives numériques, booléens, chaînes, fonctions, contrôle, pointeurs, pointeurs de fonction nommés, lambdas sans capture et Print. Tableaux, classes, lambdas capturantes, ForEach, opérations natives, conversions explicites, char et variables non initialisées sont refusés avec TRANSPILE_C_UNSUPPORTED.
  • C++ et Java : indisponibles.

Installation

  • Windows : Sapphire3-0.1.0-beta.9-windows-setup.exe ou Sapphire3-0.1.0-beta.9-windows.zip.
  • Linux x64 : Sapphire3-0.1.0-beta.9-linux-x64.tar.gz, puis ./Sapphire3. WebKitGTK 4.1 requis.
  • Linux ARM64 : Sapphire3-0.1.0-beta.9-linux-arm64.tar.gz.
  • macOS : Sapphire3-0.1.0-beta.9-macos-universal.zip, puis Sapphire 3.app. macOS 11 ou ultérieur requis.

Compatibilité et limites

  • Workspace version 3 inchangé ; les fichiers versions 1 et 2 sont toujours migrés à la lecture.
  • Les plugins restent déclaratifs : pas de composant React ou JavaScript tiers, pas de HTML, pas de marketplace, pas de backend distant.
  • Les permissions fichiers, réseau et API native sont déclarées mais refusées (PLUGIN_PERMISSION_UNSUPPORTED).
  • Les paquets Linux et macOS sont construits mais n’ont pas été exécutés sur leur système cible. Leur prise en charge réelle doit être vérifiée avant d’être annoncée comme validée.
  • Windows n’est pas signé et macOS n’est pas notarié : des avertissements système peuvent apparaître. Aucun certificat n’est configuré.
  • L’installateur Windows est construit ; l’installation et la désinstallation n’ont pas été rejouées pour cette bêta. Le lancement vérifié concerne le ZIP portable extrait.
  • C++ et Java restent indisponibles ; la cible C est expérimentale et volontairement restreinte. Les classes sont transpilées en JavaScript/Python, pas en C ; les cartes graphiques ne sont pas transpilées.

Vérifications de cette bêta

  • 770 tests Node/Python réussis, dont 26 tests Plugin SDK ; 3 tests du site public réussis.
  • Build Vite de production réussi, quatre archives contrôlées et installateur Windows compilé avec Inno Setup 6.7.3.
  • Windows ZIP : 7 162 256 octets, SHA-256 13c14159a18f2edba6c9f3e2fa4a31819889190a2b04ae544a19f92d21398046.
  • Windows Setup : 8 630 884 octets, SHA-256 10f204574b4e972476a147e49d2e018ff3ff377efdca61f0e817b2ed8830a318.
  • Linux x64 : 10 624 010 octets, SHA-256 e6914b15034e1a0859a8c1af3dd873618db32522118bf243e277af31c87459a4.
  • Linux ARM64 : 10 657 436 octets, SHA-256 927c068d7cc42527db5da86497b1185a8441704509f8da7a41faf0e32483fb9d.
  • macOS Universal : 10 539 137 octets, SHA-256 0009f66637e5036587836207fee9f01bd27250e1eae7df571a49abf942af727d.
  • Contrôles navigateur : vue définition et liens de dépendance des widgets de plugin, menu à quatre colonnes, sous-catégories repliées, configuration des entrées natives, dashboard avec widget de plugin.
  • Archives auditées : VERSION.txt = 0.1.0-beta.9, licences et notices présentes, permissions Unix conservées, absence de sources maps et de fixtures dans dist/.

Cette version est une préversion bêta.

Sapphire 3 Beta 0.1.0-beta.8

Pre-release

Choose a tag to compare

@lalBi94 lalBi94 released this 09 Nov 03:11

Sapphire 3 — 0.1.0-beta.8

Bêta centrée sur l'exécution continue, le dashboard exporté et la vitrine publique multilingue. Le format workspace reste en version 3 ; aucune migration supplémentaire n'est introduite.

Nouveautés

  • Run live par défaut : un interpréteur coopératif exécute le programme par tranches, sans budget total, avec Pause/Reprise/Stop et un curseur de vitesse de 1 à 100. Les entrées des boutons sont appliquées entre deux frames, sans relancer le programme. Le Run borné reste disponible pour précalculer une trace finie.
  • Boutons d'entrée interactifs : les boutons sont liés à une fonction onClick(bool), avec l'exemple Simple → Input (deux boutons et une LED) et les callbacks dans le dashboard.
  • Dashboard exporté enrichi : disposition bento à deux colonnes, panneaux déplaçables, redimensionnables, masquables et restaurables, thèmes sombre/clair de l'application, mini-carte des modules et classes avec leurs dépendances, contrats regroupés par module, commentaires avec formules KaTeX, XY plot Mafs, oscilloscope uPlot, Run live, Run borné et Run autonomous, Pause/Stop et vitesse réglable.
  • Exemples supplémentaires : système solaire képlérien, deux boutons avec LED et cinq créations de vitrine (Neon rose, Harmonic studio, Chirp ribbon, Wave packet, Orbital trails), avec modules Math dédiés.
  • Corrections ciblées des classes : lectures non initialisées refusées, méthodes liées utilisables comme callbacks ou attributs fonction, récepteur évalué avant les arguments et propre type remappé lors de la duplication.
  • Vitrine publique : accueil traduit dans les huit langues de l'application, anglais par défaut, préférence mémorisée localement et direction RTL pour l'arabe ; sélecteur de langue, GitHub et recherche regroupés dans l'en-tête ; bouton de recherche présent dès le chargement pour éviter tout décalage de la navbar ; téléchargements alignés sur cette bêta.

Installation

  • Windows : Sapphire3-0.1.0-beta.8-windows-setup.exe ou Sapphire3-0.1.0-beta.8-windows.zip.
  • Linux x64 : Sapphire3-0.1.0-beta.8-linux-x64.tar.gz, puis ./Sapphire3. WebKitGTK 4.1 requis.
  • Linux ARM64 : Sapphire3-0.1.0-beta.8-linux-arm64.tar.gz.
  • macOS : Sapphire3-0.1.0-beta.8-macos-universal.zip, puis Sapphire 3.app. macOS 11 ou ultérieur requis.

Compatibilité et limites

  • Workspace version 3 inchangé ; les fichiers versions 1 et 2 sont toujours migrés à la lecture.
  • Les paquets Linux et macOS sont construits mais n'ont pas été exécutés sur leur système cible. Leur prise en charge réelle doit être vérifiée avant d'être annoncée comme validée.
  • Windows n'est pas signé et macOS n'est pas notarié : des avertissements système peuvent apparaître. Aucun certificat n'est configuré.
  • L'installateur Windows est construit ; l'installation et la désinstallation n'ont pas été rejouées pour cette bêta. Le lancement vérifié concerne le ZIP portable extrait.
  • Pas de nouvelle campagne exhaustive des dialogues natifs ni de l'accessibilité.
  • C, C++ et Java restent indisponibles ; les cartes graphiques et les classes ne sont pas transpilées.

Vérifications de cette bêta

  • 624 tests Node/Python réussis, 3 tests du site public réussis.
  • Tests C++ du sidecar, faux serveur IPC Discord (handshake, READY, SET_ACTIVITY, déduplication, clear, reconnexion) et fonctionnement sans Discord réussis.
  • Build Vite de production réussi, quatre archives contrôlées et installateur Windows compilé avec Inno Setup 6.7.3.
  • Windows ZIP : 7 057 332 octets, SHA-256 87ccb62ac2ed1b0a118eee28c96a369c36c9a88e317a1d3d98f8ef045e62529e.
  • Windows Setup : 8 576 757 octets, SHA-256 8bac285dcc35d9b6aeface39e90130b3437aa16a6f4817abbe981bd697dcd9b6.
  • Linux x64 : 10 518 344 octets, SHA-256 98acb39402af026f866a7388ee073ccc7bc1c81cd174eb1a84efe68f4ca44d27.
  • Linux ARM64 : 10 553 342 octets, SHA-256 d95b6484be63903c251f3aadccbb105f3670300e5605dd3e380e6314976b6b3f.
  • macOS Universal : 10 438 169 octets, SHA-256 27009bc277ae28ad21bc4363f1d5dfdaec6e0c182ebd1ce0275b6cf339cfdca5.
  • ZIP Windows extrait et lancé : fenêtre Sapphire 3 répondante, sidecar discord-presence démarré depuis le paquet.
  • Archives auditées : VERSION.txt = 0.1.0-beta.8, licences et notices présentes, permissions Unix conservées, absence de sources maps et de fixtures dans dist/.

Cette version est une préversion bêta.

Sapphire 3 Beta 0.1.0-beta.7

Pre-release

Choose a tag to compare

@lalBi94 lalBi94 released this 08 Nov 12:18

Sapphire 3 — 0.1.0-beta.7

Nouveautés

  • Export Web Dashboard : fichier HTML autonome, moteur réel, sept widgets, Run/Pause/Stop, sortie et exécution courante.
  • Navigation dans la trace par clic sur la progression (pause immédiate) et vitesse réglable par curseur ×1–×100.
  • Interface traduisible dans les huit langues de l'application, thèmes clair/sombre, panneaux déplaçables, redimensionnables et masquables ; préférences conservées dans le navigateur.
  • Écran agrandi automatiquement avec recadrage, cartes sans halo, icônes et confirmations visuelles ; pied de page avec logo, version, Threadlock Systems et lien GitHub.
  • Spirograph et Pendulum wave produisent désormais plusieurs images animées.
  • Sidecar Discord Rich Presence migré de Go vers C++20, sans runtime supplémentaire chez l'utilisateur.

Compatibilité et limites

  • Workspace version 3 inchangé ; aucune migration supplémentaire.
  • Les noms saisis et les sorties ne sont pas traduits ; le genre du nœud courant dans le dashboard reste dans la langue d'export.
  • Linux x64/ARM64 et macOS universel : paquets construits, non testés à l'exécution sur leurs systèmes cibles. Installation des mises à jour manuelle sur ces plateformes.
  • Sans certificat configuré, les binaires Windows ne sont pas signés et macOS n'est pas notarié. Des avertissements système peuvent apparaître.
  • Installateur Windows fourni ; installation/désinstallation non rejouées pour cette bêta. Le lancement Windows vérifié concerne le ZIP portable extrait.

Vérifications de cette bêta

  • 585 tests Node/Python réussis ; tests C++ du sidecar, faux IPC Discord et fonctionnement sans Discord réussis.
  • Build de production et quatre archives contrôlés : ressources sans sources ni fixtures, licences présentes, permissions Unix et architectures Linux vérifiées.
  • Application Windows extraite du ZIP lancée : chaîne application → sidecar → IPC validée.
  • Pas de nouvelle campagne exhaustive des dialogues natifs, de l'accessibilité ni des systèmes Linux/macOS.

Cette version est une préversion bêta.

Sapphire 3 Beta 0.1.0-beta.6

Pre-release

Choose a tag to compare

@lalBi94 lalBi94 released this 07 Nov 01:56

Sapphire 3 Beta 0.1.0-beta.6

Bêta de préparation multiplateforme : détection commune des mises à jour, archives Linux et macOS, et téléchargement vérifié sur les plateformes qui n’ont pas encore d’installation automatique. Le format workspace reste en version 2 ; aucune migration supplémentaire n’est introduite.

Nouveautés

  • Détection de plateforme et d’architecture : l’updater lit NL_OS et NL_ARCH, normalise windows/linux/macos et x64/arm64, puis sélectionne uniquement l’archive compatible.
  • Sélection d’asset commune : windows.zip, linux-<arch>.tar.gz, macos-universal.zip ou macos-<arch>.zip. Une release sans asset compatible ne propose aucune installation.
  • Windows inchangé : confirmation native, updater.ps1, vérification taille/SHA-256, remplacement des fichiers distribués et redémarrage.
  • Linux et macOS : le bouton de mise à jour télécharge l’archive vérifiée depuis GitHub dans le navigateur système. L’installation reste manuelle dans cette phase ; aucun helper natif ne remplace encore l’application.
  • Archives Linux : linux-x64.tar.gz et linux-arm64.tar.gz, avec binaire exécutable, resources.neu, licences, notices et VERSION.txt.
  • Bundle macOS : macos-universal.zip contenant Sapphire 3.app avec Info.plist, binaire universel et resources.neu.
  • Outillage : scripts/build-linux.mjs, scripts/build-macos.mjs et scripts/archive.py créent les archives en conservant les permissions Unix. Nouvelles commandes dist:linux, dist:mac et dist:all.
  • Interface : bouton « Download update » et aide associée lorsque l’installation est manuelle ; état explicite si la plateforme n’est pas prise en charge.

Installation

  • Windows : Sapphire3-0.1.0-beta.6-windows.zip ou Sapphire3-0.1.0-beta.6-windows-setup.exe.
  • Linux x64 : Sapphire3-0.1.0-beta.6-linux-x64.tar.gz, puis ./Sapphire3. WebKitGTK 4.1 requis.
  • Linux ARM64 : Sapphire3-0.1.0-beta.6-linux-arm64.tar.gz.
  • macOS : Sapphire3-0.1.0-beta.6-macos-universal.zip, puis Sapphire 3.app. macOS 11 ou ultérieur requis.

Limites connues

  • Les paquets Linux et macOS sont compilés mais n’ont pas été exécutés sur leur système cible dans cet environnement. Leur prise en charge réelle doit être vérifiée avant d’être annoncée comme validée.
  • Linux dépend de WebKitGTK 4.1 et des bibliothèques système de la distribution ; aucune intégration .deb, .rpm, AppImage ou Flatpak n’est fournie.
  • macOS : bundle non signé et non notarié. Gatekeeper peut demander une confirmation au premier lancement. Ne pas désactiver Gatekeeper ni SIP.
  • L’installation automatique des mises à jour reste limitée à Windows. Linux et macOS téléchargent l’archive vérifiée mais l’installation est manuelle.
  • Pas encore de helper updater-linux.sh ni updater-macos.sh, ni de rollback multiplateforme.
  • Les archives Linux/macOS sont produites depuis l'environnement Windows ; le workflow Package utilise windows-latest. Une CI native par plateforme reste à ajouter.
  • Les cartes graphiques ne sont pas transpilables ; C, C++ et Java restent indisponibles.
  • Bundle JavaScript principal supérieur à 500 ko.

Vérifications de cette version

  • 543 tests réussis, exécutions JavaScript et Python comprises.
  • Build Vite de production réussi.
  • Archives générées par pnpm dist:all puis installateur Windows par node scripts/build-installer.mjs avec Inno Setup 7.1.1.
  • Windows ZIP : 5 541 832 octets, SHA-256 6c39e74241a13551c8a206964f5545cb8956c151c2bafef289e79ddbd90556c3.
  • Linux x64 : 5 424 521 octets, SHA-256 1b2deb842fc7e39df6ca93349d4dbfbc60fd0f672c6ccc2f967491278b7023de.
  • Linux ARM64 : 5 459 026 octets, SHA-256 17cce9ececdbafeb5b842d5e8dca87b5738e7e4baabcd8943f4caea5c3f805c2.
  • macOS Universal : 6 308 732 octets, SHA-256 9591f7f29a58a2cfe1b920a9050369dec1be3f61fd9076a8b369746442dbe9f5.
  • Installateur Windows : 7 106 571 octets, SHA-256 5b5f1a4f7e79082efa3cb31b35173b02cef6a2dbf1f10cdc561d812860e33bfb.
  • Structure auditée : 15 entrées Windows, binaire Linux en mode 755, exécutable macOS en mode 755, binaires ELF x86-64/AArch64 et Mach-O universel.
  • Build natif Windows extrait du ZIP lancé : interface affichée, titre Sapphire 3.

La signature Authenticode et la notarisation Apple ne sont pas appliquées : aucun certificat n’est configuré. Les paquets Linux et macOS ne sont pas testés à l’exécution.

Sapphire 3 Beta 0.1.0-beta.5

Pre-release

Choose a tag to compare

@lalBi94 lalBi94 released this 07 Nov 01:37

Sapphire 3 Beta 0.1.0-beta.5

Mise à jour corrective de la bêta Windows, regroupant les améliorations d’accessibilité et le nouveau menu de création depuis 0.1.0-beta.4. Le format workspace reste en version 2 ; aucune migration supplémentaire n’est introduite.

Nouveautés

  • Menu de création réorganisé : les cartes sont regroupées en trois colonnes — Programmation, Widgets et Annotations — avec un champ de recherche en tête. Le filtrage ignore casse et accents et porte sur le libellé, le type ou la catégorie. Le menu reste utilisable au clavier : focus dans la recherche, flèches vers les cartes, Entrée pour activer le premier résultat, Échap pour fermer. Repli en une colonne sur une fenêtre étroite.
  • Accessibilité : lien d’évitement vers le canvas, tableaux masqués pour les valeurs des BarChart et Heatmap, role="img" sur l’écran, retour de focus après les confirmations, cibles de 24×24 pour les contrôles compacts, zone défilante des paramètres focalisable, suppression des régions dupliquées de l’arbre logique et annonces de simulation limitées aux changements d’état.
  • Documentation : docs/ACCESSIBILITY.md devient le référentiel WCAG 2.2 A/AA avec matrice, preuves, limites et procédure de rejeu.

Installation et mise à jour

  1. Télécharger Sapphire3-0.1.0-beta.5-windows.zip ou Sapphire3-0.1.0-beta.5-windows-setup.exe.
  2. Pour le ZIP : extraire dans un dossier accessible en écriture, puis lancer Sapphire3.exe.
  3. Pour l’installateur : installation par utilisateur, sans droit administrateur.

Windows 10/11 avec WebView2 est requis ; Node.js n’est pas nécessaire. La mise à jour intégrée propose cette préversion après publication, avec confirmation et vérification de la taille et du SHA-256.

Le paquet est non signé : SmartScreen peut afficher un avertissement. Ne pas le présenter comme une version signée.

Limites connues

  • Version bêta.
  • Bordures de composants encore sous le rapport de contraste 3:1 ; identité visuelle conservée.
  • Pas encore d’alternative au clic seul pour déplacer ou redimensionner spatialement les modules, annotations et panneaux.
  • Erreurs de formulaire non reliées au champ précis.
  • Tests NVDA/Narrator et fenêtre WebView2 non exécutés dans cet audit.
  • Les cartes graphiques ne sont pas transpilables.
  • C, C++ et Java restent indisponibles ; le modèle objet n’est pas défini.
  • Bundle JavaScript principal supérieur à 500 ko.

Vérifications de cette version

  • 539 tests réussis, exécutions JavaScript et Python comprises.
  • Build Vite de production réussi.
  • Contrôles axe-core : 0 violation sur le canvas vide, le workspace Weather station avec BarChart/Heatmap, les propriétés, la recherche, les menus, la simulation, le debug, l’exercice, les notifications et les sept onglets Paramètres, y compris en arabe RTL.
  • Menu de création : 0 violation axe-core, filtrage et navigation clavier vérifiés.
  • ZIP audité : 15 entrées, LICENSE.txt présent, aucune source map ni fixture .sp3.
  • Lancement natif du build extrait du ZIP : interface affichée, titre Sapphire 3 ; version 0.1.0-beta.5 confirmée par VERSION.txt et package.json.
  • Taille du ZIP : 5 540 680 octets.
  • SHA-256 du ZIP : ebe937f3efab8d9ee779310287698bb194e5dd045e343b10ea5ef6952afbdc3c.
  • Taille de l’installateur : 7 162 327 octets.
  • SHA-256 de l’installateur : 0deb6ff66bbb49aa20c17a28b8b36597a04a9140fb6fac30a3b59a8d5d7f0f3a.
  • Installateur construit avec Inno Setup 7.1.1.

La signature Authenticode n’a pas été appliquée : aucun certificat n’est configuré. Les contrôles natifs ne constituent pas une campagne exhaustive de toutes les interactions.

Sapphire 3 Beta 0.1.0-beta.4

Pre-release

Choose a tag to compare

@lalBi94 lalBi94 released this 07 Nov 00:41

Sapphire 3 Beta 0.1.0-beta.4

Nouvelle bêta Windows, centrée sur le mode exercice, l’enrichissement du catalogue et la préparation d’une distribution institutionnelle. Le format workspace reste en version 2 ; aucune migration supplémentaire n’est introduite.

Nouveautés

  • Mode exercice local : un .sp3 peut contenir un manifeste exercise avec consignes, snapshot de départ, tests d’entrée ou de fonction. Check exécute les tests dans le Web Worker, affiche l’attendu et l’obtenu, et Reset to starter restaure le squelette. Le robot réagit au résultat.
  • Protection d’exercice : mot de passe optionnel stocké sous forme d’empreinte PBKDF2-SHA256 (sel, 150 000 itérations). Verrou d’interface uniquement : le .sp3 n’est pas chiffré.
  • Solutions : quand tous les tests passent, Save solution enregistre une copie <titre>-solution.sp3, sans changer le fichier courant. Le dossier de ces fichiers sert de banque de corrections.
  • Dix nouveaux exemples avec widgets : Euclide, recherche dichotomique, crible des nombres premiers, tri par insertion, histogramme de dés, file de caisse, thermostat, ressort amorti, remplissage par propagation et triangle de Pascal.
  • Catalogue de 46 exemples : difficultés revues, répartition Simple 6 / Medium 23 / Hard 17.
  • Distribution : licence MIT, installateur Windows par utilisateur, métadonnées de l’exécutable et chaîne de signature Authenticode prête. Aucun certificat n’est fourni ; le paquet publié est non signé.
  • Accessibilité : audit axe-core sur le canvas, les menus, les propriétés, la simulation, les exercices et les paramètres ; corrections de contraste, de titres, de libellés et de zones défilables.
  • Documentation : wiki du projet et pages abstract/ actualisées.

Installation et mise à jour

  1. Télécharger Sapphire3-0.1.0-beta.4-windows.zip ou Sapphire3-0.1.0-beta.4-windows-setup.exe.
  2. Pour le ZIP : extraire dans un dossier accessible en écriture, puis lancer Sapphire3.exe.
  3. Pour l’installateur : installation par utilisateur, sans droit administrateur.

Windows 10/11 avec WebView2 est requis ; Node.js n’est pas nécessaire. La mise à jour intégrée propose cette préversion après publication, avec confirmation et vérification de la taille et du SHA-256.

Le paquet est non signé : SmartScreen peut afficher un avertissement. Ne pas le présenter comme une version signée.

Limites connues

  • Version bêta.
  • Les tests d’exercice restent lisibles et modifiables dans le JSON ; pas d’anti-triche, de verrouillage des cartes, d’indices, de notation partielle ni de soumission.
  • Le mot de passe protège l’interface, pas le fichier.
  • Les cartes graphiques ne sont pas transpilables.
  • C, C++ et Java restent indisponibles ; le modèle objet n’est pas défini.
  • Bundle JavaScript principal supérieur à 500 ko.

Vérifications de cette version

  • 536 tests réussis, exécutions JavaScript et Python comprises.
  • Build Vite de production, ZIP et installateur générés par pnpm dist:installer.
  • ZIP audité : 15 entrées, LICENSE.txt présent, aucune source map ni fixture .sp3.
  • Lancement natif du build : interface affichée, version v0.1.0-beta.4, mode exercice présent.
  • Taille du ZIP : 5 539 349 octets.
  • SHA-256 du ZIP : be6975681b6c8954a4bd62b99ce710819258924b8b4a91aaaf0293e03ffe7ce6.
  • Taille de l’installateur : 7 104 079 octets.
  • SHA-256 de l’installateur : d79074cf97669ec8e5681878c12e2c15202c6aac3043be10ed97559b5bba08fe.

La signature Authenticode n’a pas été appliquée : aucun certificat n’est configuré. Les contrôles natifs ne constituent pas une campagne exhaustive de toutes les interactions.

Sapphire 3 Beta 0.1.0-beta.3

Pre-release

Choose a tag to compare

@lalBi94 lalBi94 released this 06 Nov 13:18

Sapphire 3 Beta 0.1.0-beta.3

Mise à jour corrective de la bêta Windows, regroupant les corrections et améliorations réalisées depuis 0.1.0-beta.2. Le format workspace reste en version 2 ; aucune migration supplémentaire n'est introduite.

Nouveautés et corrections

  • Cartes ProgressBar, BarChart et Heatmap : barre de progression, histogramme signé et grille thermique, avec aperçu/code du module caché et liens de dépendance. Heatmap suit les pas Run/Debug sans lecture à 24 fps.
  • Corrections des widgets : cohérence des états de simulation/debug et restauration des cartes après import/export.
  • Dix exemples graphiques supplémentaires : Traffic control, DNA analyzer, Signal processing, Mandelbrot escape, Collatz atlas, Sort race, Heat diffusion, Image convolution, Weather station et Network monitor. Le catalogue compte trente exemples.
  • Recherche dans les exemples par nom, difficulté ou thème, insensible à la casse et aux accents, avec ouverture automatique des catégories correspondantes.
  • Notifications par mascotte : robot à seize expressions, bulles d'état, actions et historique récent ; placé au-dessus de la mini-carte, il lévite et peut être déplacé au pointeur. Les dialogues de confirmation restent bloquants.
  • Modules magnétiques : alignement des bords et des centres pendant le déplacement, avec guides visuels et option pour désactiver l'aimantation.
  • Vitesse de simulation : ×1, ×2, ×3 et ×N de 1 à 100, modifiable pendant l'exécution ou la pause ; progression calculée sur le temps écoulé, sans modifier le résultat du programme.
  • Fenêtres flottantes : actualisation de leur titre sans réinscription répétée dans le gestionnaire, notamment pendant la simulation.
  • Site de présentation modernisé et disponible séparément sur GitHub Pages. Il n'est pas embarqué dans le paquet Windows.

Installation et mise à jour

  1. Télécharger Sapphire3-0.1.0-beta.3-windows.zip.
  2. Extraire l'archive dans un dossier accessible en écriture.
  3. Lancer Sapphire3.exe.

Windows 10/11 avec WebView2 est requis ; Node.js n'est pas nécessaire. La mise à jour intégrée peut également proposer cette préversion après publication, avec confirmation et vérification de la taille et du SHA-256. Les données et préférences restent dans leur répertoire utilisateur.

Limites connues

  • Cette version reste une préversion bêta.
  • Les cartes graphiques ne sont pas transpilables et restent exclues de l'export SVG.
  • BarChart affiche au plus 64 valeurs ; Heatmap conserve ses dimensions fixes.
  • La vitesse de simulation ne change pas l'horloge de lecture des écrans à 24 fps.
  • La position de la mascotte, l'aimantation et la vitesse choisie restent locales à la session.
  • C, C++ et Java restent indisponibles ; le modèle objet n'est pas défini.
  • Les limites existantes des lambdas, de l'historique de debug et des sauvegardes de secours restent inchangées.

Vérifications de cette version

  • 508 tests réussis, couvrant aussi les exécutions JavaScript et Python.
  • Build Vite de production et paquet Windows générés par pnpm dist:win.
  • Audit des 14 entrées du ZIP et des 89 fichiers de resources.neu : licences présentes, inspecteur désactivé, aucune source map, fixture .sp3 ni donnée utilisateur.
  • Exécutable extrait du ZIP lancé dans Neutralinojs avec un profil de contrôle isolé ; interface affichant 0.1.0-beta.3.
  • Dialogue natif de première sauvegarde, puis Ctrl+S : workspace version 2 valide, horodatage modifié, sauvegarde de secours créée et aucun fichier temporaire résiduel.
  • Taille de l'archive : 5 510 581 octets.
  • SHA-256 : bb366af302e11a159726ad53a7e55894758951ff88640790d396d051a3a3f723.

Les contrôles natifs ne constituent pas une nouvelle campagne exhaustive de toutes les interactions. Le build signale toujours un bundle JavaScript principal supérieur à 500 ko.

Sapphire 3 Beta 0.1.0-beta.2

Pre-release

Choose a tag to compare

@lalBi94 lalBi94 released this 05 Nov 20:46

Sapphire 3 Beta 0.1.0-beta.2

Deuxième bêta Windows de Sapphire 3. Elle regroupe les évolutions depuis la bêta 0.1.0-beta.1 : généricité avancée, lambdas et fermetures, cartes spéciales Screen/Gauge/LED, contrats vérifiables enrichis, nouveaux exemples, récupération des documents non enregistrés, moteur hors du fil React, gestionnaire de fenêtres et optimisations de rendu.

Cette version reste une bêta : le format des workspaces et le moteur peuvent encore évoluer. Les mises à jour sont recherchées dans les releases publiées du dépôt GitHub et installées après confirmation.

Nouveau depuis la bêta 0.1.0-beta.1

Langage

  • Lambdas et fermetures : une expression anonyme peut déclarer des paramètres typés et une expression de résultat, capturer les variables visibles par référence et être stockée, passée en argument, utilisée dans ForEach ou appelée immédiatement. Une fonction peut désormais retourner un type fonction, ce qui permet de renvoyer une fermeture qui survit à la sortie de sa fonction. JavaScript émet une fonction fléchée, Python une lambda.
  • Généricité avancée : une fonction peut déclarer plusieurs paramètres de type T, U, etc., chacun avec une contrainte exacte optionnelle, et les utiliser directement ou comme tableaux génériques (T[]). L'inférence confronte chaque argument à son motif, exige le même type pour toutes les occurrences, vérifie la contrainte et substitue le retour. Aucune spécialisation : la simulation et les backends JavaScript/Python utilisent la même fonction ordinaire.
  • Initialisation globale ordonnée : les modules sont initialisés dans un ordre topologique stable selon leurs références importées ; un module consommateur passe après ses fournisseurs, l'ordre source départage les modules indépendants et sert de repli en cas de cycle. La simulation et les backends JavaScript/Python partagent cet ordre.
  • Pointeurs transpilés : &, *p, *p = valeur, les paramètres pointeurs et l'égalité d'adresses sont émis en JavaScript et Python par émulation portable (cellules et objets d'adresse). La constance, les cases de tableau et les échanges par pointeur restent protégés. C, C++ et Java restent indisponibles.

Cartes spéciales Screen, Gauge et LED

  • Screen : carte pixel reliée à un module caché normal, API SCREEN_SP3_* (SET_PIXEL, GET_PIXEL, SET_WIDTH, SET_HEIGHT, BLIT, PRESENT), lecture des images à 24 fps et vue code du module.
  • Gauge : anneau gradué avec dégradé du thème, API GAUGE_SP3_* (SET_VALUE, ADD_VALUE, GET_VALUE, SET_RANGE, RESET, etc.), vue aperçu / code et valeurs synchronisées avec les images d'écran.
  • LED : voyant booléen avec halo, API LED_SP3_* (SET_VALUE, GET_VALUE, TOGGLE) et vue aperçu / code.
  • Les trois cartes participent aux flèches de dépendance vers les modules qui utilisent leurs fonctions exportées, avec le détail des exportations dans l'infobulle.
  • Les vues d'écran, de jauge et de LED sont des préférences de présentation conservées dans le .sp3 (screenView, gaugeView, ledView) et refusées à l'import si leur valeur est inconnue.

Contrats vérifiables

  • Catalogue de 20 contrats pour les nombres (signe, parité, seuils, intervalle), les chaînes (blancs, ligne unique, préfixe/suffixe, contenu, longueur), les tableaux (unicité, tri) et les booléens.
  • Les contrats à paramètre demandent une valeur numérique ou un texte ; une borne inversée ou un argument vide est refusé.
  • Le sélecteur ne propose que les contrats applicables au type déclaré : entiers, flottants, chaînes, tableaux et booléens ; aucun contrat pour les pointeurs et les fonctions.
  • Pendant Run, les violations sont signalées avec le nom, la règle, ses paramètres, le pas et la valeur observée, sans interrompre le programme.

Exemples

  • Le catalogue compte désormais 20 exemples classés Simple, Medium et Hard, dont Car dashboard, Bouncing logos, Matrix rain, Game of life, Knapsack, Calculus, Quick sort, Coin change, Rover survey et Signal lab.
  • Rover survey : carte 48×18 avec rochers, batterie, pointeurs, contrats, jauge et LED. La cible de l'artefact est tirée aléatoirement dans une bande haute ou basse ; le rover avance de deux cases par image et change de destination à chaque Run comme à chaque boucle de lecture.
  • Signal lab : statistiques, texte, tableaux et natives mathématiques sur une courbe animée.
  • Les animations d'écran sans cycle relancent désormais la simulation à la fin de leur lecture pour renouveler les images ; les animations cycliques (pluie, jeu de la vie, logos) continuent de boucler.

Données

  • Récupération après crash : un document neuf non vierge reste protégé par une copie sapphire3-recovery.sp3 et restauré au prochain lancement.
  • Sauvegardes de secours : chaque enregistrement direct d'un .sp3 existant conserve jusqu'à trois versions précédentes (<base>.backup-1.sp3 à 3) avant l'écriture atomique. Une copie impossible n'annule pas la sauvegarde ; elle est affichée comme message de statut, sans bloquer le canvas. L'absence d'une génération est normale et ne produit plus d'erreur.
  • Format versionné : le workspace passe en version 2. Les fichiers version 1 sont migrés à la lecture (generic → typeParameters, retrait de screenScale) ; les versions futures ou malformées sont refusées sans remplacer le document courant.

Interface et rendu

  • Zoom sémantique : les instructions restent détaillées au-dessus de 21 % ; de 10 à 21 %, chaque module affiche seulement ses fonctions racines avec leur signature ; à 10 % et moins, seules les cartes de modules et leurs relations subsistent. Un badge indique le niveau courant et une recherche de bloc force le détail.
  • Moteur hors du fil React : simulation, préparation du debug, transpilation et vérifications de cibles s'exécutent dans un Web Worker. Un panneau compact affiche l'avancement (phases d'analyse, pas de simulation, génération) avec un bouton Cancel qui termine immédiatement le worker et invalide les résultats en attente. Les relances d'écran ne transfèrent que les images utiles, et les panneaux de propriétés limitent les rendus pendant l'animation.
  • Debug compact : les états d'écran sont enregistrés en image de base + pixels modifiés, les liaisons inchangées sont partagées et la sortie est réutilisée. Le debug de Rover survey conserve ainsi 1 583 arrêts au lieu de s'arrêter à 63, sans changer la navigation ni la mémoire affichée.
  • Gestionnaire de fenêtres : volet Windows listant les fenêtres ouvertes, avec focus, pliage, fermeture, cascade, tout plier et tout fermer.
  • Écrans pixel : zoom manuel supprimé, taille déterminée par la carte avec un facteur entier sans flou ; lecture synchronisée à 24 fps.
  • Optimisation des grands projets : arbres et nœuds mémoïsés, contenu logique monté seulement pour les cartes proches de la vue, index de nœuds par module.
  • Corrections de rendu : focus de sélection dans un même module, pliage des nœuds profonds, validité du dépôt, recherche Ctrl+F sans agrandir la carte, flèches et vues de la LED.

Distribution

  • Version applicative 0.1.0-beta.2, paquet portable Windows et helper de mise à jour inchangé.
  • La recherche de mise à jour ignore les brouillons et ne retient que les releases publiées avec un asset et un digest SHA-256.
  • CI GitHub Actions sur chaque pull request : installation verrouillée, contrôles de qualité, tests Node/Python et build Vite.

Contenu existant

  • Canvas navigable, modules, annotations Comment et cartes Image, formules KaTeX.
  • Généricité avancée : fonction à paramètres multiples, tableaux génériques et contraintes exactes.
  • Lambdas et fermetures : fonctions anonymes à corps expression, captures lexicales, retours de type fonction et signatures construites depuis l'interface.
  • Création et édition contextuelles des nœuds, typage statique strict, tableaux, pointeurs, fonctions et ForEach.
  • Moteur AST indépendant, portées, références intermodules, diagnostics et transpilation JavaScript/Python.
  • Simulation locale bornée, debug réversible, points d'arrêt, espace mémoire, graphe des pointeurs, exécution d'une fonction choisie.
  • Thèmes personnalisés, huit langues, raccourcis configurables, favoris, panneaux déplaçables/redimensionnables.
  • Import/export .sp3 et JSON, export SVG, sauvegarde directe, autosauvegarde et mise à jour intégrée.

Installation

  1. Télécharger Sapphire3-0.1.0-beta.2-windows.zip.
  2. Extraire l'archive dans un dossier accessible en écriture.
  3. Lancer Sapphire3.exe.

Aucune installation de Node.js n'est nécessaire. Windows 10/11 avec WebView2 est requis.

Fichiers

Le ZIP contient Sapphire3.exe, resources.neu, updater.ps1, VERSION.txt, les notices d'utilisation et le dossier licenses/ avec les licences des composants distribués (React, Lucide, KaTeX, Neutralinojs, libtrashcan).

Limites connues

  • Les sauvegardes .backup-1.sp3 à .backup-3.sp3 ne sont créées que lors d'un enregistrement direct d'un fichier déjà existant ; l'autosauvegarde et « Enregistrer sous » ne les font pas tourner.
  • Le moteur déporté couvre la simulation, le debug, la transpilation et les vérifications ; les mutations structurelles du document gardent une analyse synchrone pour renvoyer immédiatement leurs diagnostics.
  • Les lambdas ont un corps expression unique : pas d'affectation, de boucle ou de return interne ; elles ne sont pas génériques et l'adresse de leurs paramètres n'est pas prise. Les captures sont en lecture et suivent les règles de fermeture de chaque backend dans les boucles.
  • L'export SVG n'inclut pas les cartes écran, jauge et LED.
  • Les positions des fenêtres flottantes et l'ordre de rangement ne sont pas persistés.
  • Le debug d'un projet très long atteint la limite mémoire de l'hi...
Read more

Sapphire 3 Beta 0.1.0-beta.1

Pre-release

Choose a tag to compare

@lalBi94 lalBi94 released this 02 Nov 14:44

Sapphire 3 Beta 0.1.0‑beta.1

Première bêta Windows de Sapphire 3 : elle regroupe toutes les évolutions depuis Alpha 0.1.0‑alpha.3 et remplace le brouillon alpha.4. Références de fonction, ForEach, pointeurs, notes KaTeX, opérations natives transpilées, généricité V1, débogage enrichi, simulation graphique, raccourcis configurables et conforts d'interface.

Cette version est une bêta : le format des workspaces et le moteur peuvent encore évoluer, mais les fonctionnalités ci-dessous sont opérationnelles. Les mises à jour sont recherchées dans les releases publiées du dépôt GitHub et installées après confirmation.

Nouveau depuis Alpha 0.1.0‑alpha.3

Langage

  • Références de fonction — une fonction est une valeur de première classe : son adresse peut être stockée dans une variable, une constante ou un paramètre de type fonction {kind:'function', parameters, returnType}, transmise en argument, puis appelée via la variable (le callee d'un appel est évalué comme une valeur). Aucune lambda ni fermeture. La simulation et la transpilation JavaScript/Python la prennent en charge nativement.
  • Instruction native ForEach — parcourt un tableau en appelant une fonction de rappel (E) -> void, choisie par sélecteurs dans le formulaire. Le tableau est copié au démarrage ; la transpilation JavaScript/Python émet un helper sapphireForEach lisible et vérifiable.
  • Généricité V1 — une fonction peut porter l'unique paramètre de type T (Generic T), utilisé sur ses paramètres et son retour. T est inféré à chaque appel direct avec un primitif non void : identity<T>(T) -> T, first<T>(T, T) -> T, choose<T>(boolean, T, T) -> T. Aucune spécialisation ni duplication : même fonction à l'exécution, une seule fonction ordinaire en JavaScript/Python. Une case, des sélecteurs T, un badge <T> et le type inféré T = int sur l'appel sont ajoutés à l'interface.
  • Écriture à travers un pointeur — le déréférencement *p devient une cible d'affectation : int b; int* a = &b; *a = 5; modifie la valeur réelle de la variable ou de la case visée, y compris quand l'adresse a été passée à une fonction qui écrit *param. La constance reste protégée (refus statique de *(&const), erreur runtime SIMULATION_CONST_IMMUTABLE pour une constante atteinte par un pointeur recopié).
  • Opérations natives SP3 — registre pur indépendant des cibles, exécuté par la simulation locale et réparti en sous-catégories du menu SP3 native operations : Maths (abs, min, max, clamp, sign, gcd, pow, lerp, log, sqrt, trigonométrie et arrondis), Texte (length, charAt, substring, contains, en scalaires Unicode) et Tableaux (arrayLength sur tout T[]). Elles sont transpilées vers JavaScript et Python avec l'équivalent natif le plus direct et des helpers ciblés pour les entiers BigInt, les arrondis, l'interpolation et les bornes Unicode.

Notes et documentation visuelle

  • Formules mathématiques (KaTeX) dans les cartes Comment : le texte encadré par $$ … $$ est rendu hors ligne (KaTeX embarqué, polices locales, trust:false). Le reste de la note demeure littéral ; la lecture se rouvre en édition au clic. L'export SVG et les aperçus gardent le texte brut.

Exécution

  • Arrêt, pause et reprise d'une simulation : boutons dans le panneau d'information (qui affiche la sortie) et à côté de Run dans la barre du haut. La pause fige l'index courant ; la reprise le poursuit ; l'arrêt termine en conservant la sortie déjà produite. Le statut affiche Running / Paused / Stopped / Completed.
  • Points d'arrêt visuels — un petit panneau stop discret à gauche de chaque nœud pose ou retire un point d'arrêt d'un clic, sans sélectionner le nœud ; il s'allume lorsqu'il est actif. Le debug se lit normalement dès le premier arrêt, et la navigation manuelle reste libre. Les points d'arrêt n'interrompent que les sauts qui les franchissent : Finish scope s'arrête au premier point rencontré avant la sortie de portée, Continue reprend jusqu'au point suivant ou à la fin, et Restart revient au début. Ils restent en mémoire de session et ne sont pas enregistrés dans le .sp3.
  • Espace mémoire abstrait — le bouton Memory space du panneau de debug ouvre une fenêtre flottante (déplaçable, redimensionnable, pliable, fermable et rouverte depuis le même bouton) : Code · fonctions avec adresses illustratives, module, signature et statut, Données globales et Pile d'appels avec les valeurs de l'arrêt courant. Vue purement pédagogique, sans allocation réelle ni persistance.
  • Valeurs au survol — pendant le debug, survoler ou focaliser une variable, un paramètre ou une référence affiche son nom, son type et sa valeur à l'arrêt courant ; une valeur non initialisée est signalée.
  • Tableaux en cases — dans le panneau de debug et l'espace mémoire, chaque tableau apparaît sous forme de cases indexées (jusqu'à 24 visibles, puis le nombre restant), mises à jour à chaque arrêt et jamais exposées comme tableau mutable.
  • Simulation graphique simplifiée — Run → Graphical execution → Run simplified graphical simulation ouvre une fenêtre flottante animée du code atteignable : cartes des fonctions avec module et signature, appels directs en arêtes animées et impulsion sur l'appel courant, pile de fonctions, variables globales/locales et sortie. Les fonctions inatteignables sont ignorées ; Pause / Resume / Stop contrôlent l'animation.
  • Mise en évidence de Run — pendant l'exécution, le bouton Run reprend en fond le dégradé de sa bordure, avec un libellé adapté.
  • Retrait de la carte de chaleur d'exécution : le focus d'exécution reste seul (nœud courant mis en avant, parents dépliés temporairement).

Interface

  • Fenêtre de paramètres de l'application (Settings → Open settings window) : fenêtre flottante à deux colonnes, catégories et sous-catégories à gauche, contenu à droite. Pages fournies par un registre extensible : Projet (Espace de travail, Informations), Apparence (Thème, Langue), Keybinds, Favoris (Bibliothèque), À propos (Application — version, mise à jour et dépôt).
  • Raccourcis configurables — Settings → Open settings window → Keybinds liste les actions par catégorie, capture directement une combinaison, refuse les conflits et permet supprimer, réinitialiser ou restaurer tous les défauts. Les personnalisations sont enregistrées comme préférences locales (sapphire-keybinds), jamais dans le .sp3 ; aucune indication n'est ajoutée aux menus ou au canvas.
  • Espace de travail — actions de fichier, disposition (grille courbée, mini-carte, barre de navigation, cartes masquées), vue (zoom, cadrage) et chemins récents.
  • Informations projet — données brutes (modules, nœuds, fonctions, références, déclarations inutilisées, point d'entrée, fichier), diagnostics courants (erreurs et avertissements) et graphiques de répartition (nœuds par module, familles de nœuds).
  • Thème — galerie de cartes avec aperçu miniature, badge sombre/clair, thèmes personnalisés (édition/suppression) et éditeur de couleurs ; le menu de la barre garde sa liste compacte.
  • Langue — les huit langues sont proposées en boutons radio, sans sélecteur déroulant.
  • Quitter l'application — bouton rouge en bas de la navigation des paramètres et du menu Settings de la barre, fermant l'application.
  • Barre responsive — la navigation passe automatiquement sur plusieurs lignes quand la fenêtre est étroite, sans superposer ni masquer de contrôle ; les menus déroulants sont bornés et défilables, et le repli fonctionne quelle que soit la hauteur.
  • Plein écran et quadrillage — View → Display propose de passer la fenêtre en plein écran et de masquer le quadrillage (affiché par défaut, le repère d'origine reste).
  • Auto-layout des modules — View → Layout → Arrange modules range les modules visibles en colonnes selon leurs dépendances (un exportateur avant ses utilisateurs), sans toucher au programme, aux cartes verrouillées ni aux cartes masquées.
  • Export d'un nœud — depuis le panneau de propriétés, une image PNG focalisée et le sous-arbre en JSON, même si le nœud n'est pas pur.
  • Sous-catégories des menus de la barre : Workspace/Exports (Settings), History/Selection (Edit), Zoom/Display/Hidden cards (View), Actions/Saved bookmarks (Bookmarks), etc.
  • Chip de transpilabilité dans le menu Transpile : vert « Transpilable » quand le code courant génère effectivement du code, rouge « Not transpilable » sinon (diagnostics, point d'entrée manquant, construction non prise en charge), gris « Not available » pour les cibles absentes (C, C++, Java).
  • Version et lien GitHub affichés à droite de la barre ; le lien ouvre le dépôt dans le navigateur système.
  • Repli de la barre de navigation par un petit chevron vertical à droite ; le chevron reste visible pour la rouvrir.
  • Masquage de la mini-carte depuis View → Display.
  • Japonais, hindi et russe rejoignent l'anglais, le français, le chinois, l'espagnol et l'arabe — huit langues au total.

Mise à jour

  • Mise à jour intégrée : au lancement, l'application consulte les releases publiées du dépôt configuré. Quand une version plus récente est disponible, un bouton Mettre à jour apparaît dans la barre et la fenêtre de paramètres (Settings → Open settings window → About → Application) permet de vérifier et d'installer.
  • Installation sûre : après confirmation, un helper updater.ps1 embarqué dans le ZIP télécharge l'archive, vérifie la taille et l'empreinte SHA‑256 fournies par l'API GitHub, remplace uniquement les fichiers distribués après la fermeture de l'application, puis la relance. Les données et préférences utilisateur ne sont pas touchées. Un échec de vérificatio...
Read more

Sapphire 3 Alpha 0.1.0-alpha.3

Pre-release

Choose a tag to compare

@lalBi94 lalBi94 released this 01 Nov 22:26

Sapphire 3 Alpha 0.1.0‑alpha.3

Troisième préversion Windows : favoris personnels, pointeurs, emojis de module, et un ensemble d'outils d'analyse, de confort et d'internationalisation.

Nouveau depuis Alpha 0.1.0‑alpha.2

Favoris et réutilisation

  • Favoris personnels — enregistrer une fonction ou un module pur (aucun effet de bord, aucune dépendance externe) puis le réinsérer dans n'importe quel projet. Volet Bookmarks dans la barre du haut, action Save selection dans le menu d'interaction d'un nœud ou d'un module, choix de la destination à l'insertion (nouveau module ou module existant, avec suffixe en cas de nom déjà pris) et fenêtre flottante détaillée (genre, nom, signature, volumes, date, contenu, insertion, suppression). Instantané portable conservé hors du workspace.
  • Pastille de pureté — une fonction ou un module sans effet de bord ni dépendance extérieure porte un indicateur pure.

Langage

  • Pointeurs — type int* (pointeur vers un primitif non void) annotable sur une variable, une constante ou un paramètre ; opérateur & (adresse d'une valeur stockable) et opérateur unaire * (déréférencement). Types et opérateurs proposés directement dans les formulaires. Exécutables et déboguables dans SP3 : & produit une adresse (&nom ou &[i]), *p relit la valeur courante de l'emplacement, y compris après une mutation, et la mémoire de debug affiche l'adresse. La transpilation les refuse, faute d'équivalent cible.

Exécution et analyse

  • Contrats logiques — contraintes positive / nonNegative / nonEmpty attachées à une déclaration et vérifiées pendant Run, violations signalées sans interrompre le programme.
  • Carte de chaleur d'exécution — intensité par nœud d'après la trace, compteur d'exécutions.
  • Run / Debug this function — exécuter ou déboguer une fonction choisie avec des entrées typées : valeur de retour, sortie imprimée et variables observées.
  • Logic Pulse — impulsion brève du module à chaque pas exécuté.
  • Aperçu de suppression sûre — la confirmation annonce les appels, références et imports qui casseraient.
  • Aperçu d'un bloc replié — bulle au survol listant ses premières instructions.
  • Code mort signalé — imports, variables, fonctions et paramètres jamais référencés portent une pastille discrète.

Interface

  • Thèmes personnalisés — créer, nommer, éditer (14 couleurs), basculer clair/sombre, supprimer.
  • Chinois, espagnol et arabe ajoutés aux côtés de l'anglais et du français ; direction rtl pour l'arabe.
  • Réordonnancement ↑/↓ des instructions d'une liste.
  • Fenêtres volantes — aimantation aux bords, pliage sur l'en-tête, mise au premier plan de la fenêtre active.
  • Emoji de module — pastille en haut à gauche d'une carte Module (20 choix rapides ou saisie libre, retrait).
  • Mini-carte navigable du workspace.
  • Fil d'Ariane logique discret du nœud sélectionné.
  • Rapport de bug copiable — version, langue, date, sélection, diagnostics et résumé du projet.
  • Verrouillage de carte contre les déplacements et redimensionnements.
  • Menu d'interaction entièrement contenu dans la surface, colonnes défilantes.
  • Export SVG déplié du workspace, avec disposition en couches sans chevauchement.

Fichiers

  • Enregistrer sous un fichier .sp3 sans écraser le courant.
  • Nouveau document vierge depuis Settings.
  • Bibliothèque d'exemples locaux : Fibonacci, Sorting, Arrays, Recursion, Imports.

Correctifs

  • Défilement du focus d'exécution limité à la carte concernée.
  • Repli manuel d'un nœud prioritaire sur le dépli automatique de la simulation.

Contenu existant (inchangé)

  • Canvas navigable avec déplacement libre, zoom jusqu'à 400 %, quadrillage adaptatif et repères.
  • Cartes Module, annotations Comment et cartes Image.
  • Création et édition contextuelles des nœuds logiques, avec typage statique strict (dont tableaux et pointeurs).
  • Moteur AST indépendant des langages, portées, références intermodules et diagnostics.
  • Fonction point d'entrée unique, sans module Main.
  • Simulation locale bornée avec panneau mémoire et debug réversible.
  • Transpilation JavaScript/Python et inspection des graphes de nœuds.
  • Thèmes, interface multilingue et préférences locales.
  • Ouverture, import, export et sauvegarde directe de workspaces .sp3 ou JSON, avec autosauvegarde.
  • Undo/redo structurel et panneaux déplaçables/redimensionnables.

Installation

  1. Télécharger Sapphire3‑0.1.0‑alpha.3‑windows.zip.
  2. Extraire l'archive dans un dossier accessible en écriture.
  3. Lancer Sapphire3.exe.

Aucune installation de Node.js n'est nécessaire. Windows 10/11 avec WebView2 est requis.

Fichiers

Le ZIP contient Sapphire3.exe, resources.neu, VERSION.txt, les notices d'utilisation et le dossier licenses/ avec les licences des composants distribués.

Limites connues

  • Aucun système de mise à jour automatique ni vérification de version distante ; remplacer manuellement l'ancien dossier.
  • Les pointeurs s'exécutent et se déboguent dans SP3, mais la transpilation les refuse (SP3 uniquement) ; le déréférencement n'est pas une cible d'affectation.
  • Les favoris personnels reposent sur les préférences locales (cache localStorage + copie durable Neutralinojs).
  • Taille maximale d'un workspace : 20 Mio, images intégrées comprises.
  • La vue graphique compacte de simulation reste désactivée.
  • Les fonctions natives de fichiers nécessitent la fenêtre Neutralinojs, pas le mode navigateur.
  • Contrôles natifs à refaire dans la fenêtre Neutralinojs : autosauvegarde, import d'un .sp3 contenant hidden/locked/contracts, et écriture native du .svg.

Vérifications

  • Suite de tests Node réussie (309 tests).
  • Build frontend et paquet Windows construits par pnpm dist:win.
  • Archive auditée : contenu attendu, sans dossier parent, aucune source map ni fixture de développement.
  • resources.neu audité : frontend compilé et configuration de production uniquement.
  • Contrôles navigateur du frontend sur les fonctionnalités de cet incrément ; la fenêtre Neutralinojs n'a pas été relancée dans cet audit.