Mise à jour 2.19
06/06/2026
v2.19.0BETA
Seymour
MODEL VIEWER INTÉGRÉ dans l'éditeur (pas de navigateur) : WebView2 natif dans un panneau
- Phase 2 du retournement : le MÊME visualiseur three.js des 816 modèles tourne désormais DANS la fenêtre de l'éditeur, dans un panneau — un nouveau bouton « Model Viewer (Embedded) 🐉 » dans la carte Extras →
SetModuleafficheModelViewerEmbedded_Control, qui héberge un Edge WebView2 viaNativeControlHost(interop win32 : HWND enfant +CoreWebView2Controller, bornes synchronisées dansArrangeOverride, HiDPI viaRenderScaling). Il utilise le runtime WebView2 Evergreen déjà installé (pas de bundle Chromium — nugetMicrosoft.Web.WebView21.0.2592.51, ~quelques Mo ; PAS le CEF lourd qui ajouterait ~100 Mo). Le panneau démarre le même serveur http (ModelViewerLauncher.EnsureServerAndGetUrl, port 8767, cache-busté) et navigue le WebView vers lui ; boutons « Reload » + « Open in Browser » (secours).Program.cs/AppBuilder intouchés. Build 0 erreurs. Prouvé dans un spike de worktree isolé (jugé : compile + 0 nouveau warning) avant de porter vers main. La phase 1 (navigateur, v2.18.0) reste en secours. Décision du propriétaire en parallèle : la galerie s'ouvre à la pose REST propre (animation opt-in) — nous avons arrêté le jeu de la taupe de l'animation hors ligne ; la vraie animation = mocap plus tard (en file). DocFFX_MODELVIEWER_EDITOR_2026-06-06.md
v2.18.1
v2.19.1BETA
Seymour
MAGIC VIEWER INTÉGRÉ dans l'éditeur (pas de navigateur) : réutilise le WebView2 de v2.19.0
- Réponse directe au propriétaire (« l'idée était TOUJOURS dans l'éditeur ; ouvrir un navigateur est stupide ») : « Magic Viewer (Web) » a cessé d'ouvrir un navigateur externe — la nav
SetModuledésormais leMagicViewerEmbedded_Control, un panneau WebView2 à l'intérieur de la fenêtre. Il réutilise le PARTAGÉWebView2Hostque le Model Viewer a déployé dans v2.19.0 (une seule infrastructure d'intégration pour les deux visualiseurs, pas de duplication). NouveauMagicViewerEmbedded_Control/DataModel+MagicViewerLauncher.EnsureServerAndGetUrl(démarre le serveur http local 8766 + cache-bust + navigue le WebView vers lui) ; boutons Reload + Open in Browser (secours). Coordination (2 chats sur une branche) : j'ai attendu que l'autre chat commiteWebView2Host(v2.19.0) pour pouvoir en dépendre proprement — pas d'arbre cassé ; les conclusions de l'audit de code de leur voie sont dansHANDOFF_CODE_AUDIT_HD_MODELS_2026-06-06.md. Build 0 erreurs, l'éditeur se relance sans crash.
v2.19.0
v2.19.2BETA
Seymour
fix d'intégration : le WebView2 REMPLIT le panneau et suit le redimensionnement (s'applique aux DEUX visualiseurs)
- À l'écran, le WebView2 intégré ne se rendait que dans un coin (~67 % sur un écran hiDPI) avec des marges noires, et ne suivait pas la taille de l'éditeur. Cause :
SyncControllerBoundsmultipliaitBounds × RenderScalingalors qu'Avalonia dimensionne AUSSI la fenêtre hôte → double comptage DPI (contenu à ~1/scale). Corrigé dans leWebView2Hostpartagé (donc corrige Model Viewer v2.19.0 ET Magic Viewer v2.19.1 d'un coup) : dimensionner le WebView depuis le rect client réel du parent (GetParent+GetClientRect, pas de calcul d'échelle) + re-sync à chaque redimensionnement (EffectiveViewportChanged+ un postArrangeOverridedifféré àDispatcherPriority.Backgroundpour qu'il s'exécute après qu'Avalonia repositionne l'hôte natif). Build 0 erreurs. Vérification à l'écran = l'œil du propriétaire
v2.19.1