Update 2.218
2.8.2026
v2.218.0.0BETAMINOR
Seymour2. Aug. 2026
VIEWERHUB F1: universelle Vereinheitlichung der 3D-Viewer (1 Port, kein Python, kein Browser)
StudioWebServer(Modules/Common/ViewerHub/): IN-PROCESS statischer HTTP-Server (TcpListener loopback:8769) mit virtuellem Host-Routing*.loopback(RFC 6761 — WebView2 löst auf Loopback auf; jede App sieht ihre eigene „Domain"-Wurzel — löst absolute Pfade ohne HTML-Rewriting). Statische Dateien + MIME + transparente Junction + Path-Traversal-Guard +GET /health. Port-Rückgewinnung: wenn ein Legacy-Python (http.server) 8769 belegt, wird es viaGetExtendedTcpTablebeendet; sonst ehrlicher Status. Kein externer Prozess (nichts zu leaken).NoclipLocator: einzelne Discovery (envNOCLIP_ROOT→ nach oben gehen →Downloads/Compressed) mit Nested-Root-Fix (latenter Aurora-Bug).ServeDirBuilder: noclip serve-dir (inkrementelles dist + data-Junction).ViewerDescriptor+ViewerHubService: deklaratives Viewer-Register + einzelne APIBuildUrl/Find/StatusText; erste Descsmonster-studioundmagic-studio(Hostnoclip.loopback).ViewerShell(Modules/Common/ViewerShell/): das universelle Menü — feste Leiste (In-Process-Serverstatus, URL, Reload) + eingebettetes WebView2;WebView2HostnachCommonkopiert (Legacy-Viewer behalten die alte Kopie bis F2).- Verdrahtung:
Main_Window— Monster Studio öffnet jetzt das ViewerShell-Embed (kein Browser) + neuermagic-studio-web-Handler/Case;ModuleCatalogPolicy—magic-studio-web-Eintrag +monster-studio-web-Eintrag aktualisiert (Embedded 3D Viewer). - Gate: Release-Build 0 Fehler (445 vorbestehende Warnungen); StudioWebServer-Probe-Tests 7/7 PASS (health JSON, bekanntes/unbekanntes Host-Routing, js/bin-MIME, Path-Traversal via raw TCP, 404).
- Architektur-Doc:
docs/ai/VIEWERHUB_ARCHITECTURE_2026-08-02.md(genehmigter Plan F1–F6, Nutzerentscheidungen). - Ausstehend:
*.loopbackWebView2-Spike (manueller Smoke: Extras → Monster Studio im Editor); F2 (Magic/Model/Map-Viewer zum Hub migrieren); Ziel-Deploy (bin/Release war während des Builds vom offenen Editor gesperrt).
v2.217.1.0
v2.218.1.0BETAPATCH
Seymour2. Aug. 2026
i18n Wave 3b: 1,739 UNIQUE-Literale migriert — Editor 100% resx-getrieben
- Lane IFRT-2. \
- Objektive Klassifikation der 1,759 Uniques: 1,739 echte UI vs. 20 technischer Müll (Pfade/Hex/Zahlen/Symbole/IDs — absichtlich nicht migriert).
- 1,739
U_{slug}_{hash8}-Keys in allen 9 resx (angezeigter Text byte-für-byte in EN/PT erhalten — null visuelle Verhaltensänderung; echte Übersetzung bleibt zukünftige inkrementelle Arbeit). - 1,736 Ersetzungen über 94 .axaml-Dateien (
{x:Static res:Strings.U_...});MonsterAiEditor2*ausgeschlossen (harte Regel, 0 Diffs).Strings.cs+1,739 Properties. - Skripte:
_i18n_onda3b_classify.py,_i18n_onda3b_migrate.py,_i18n_onda3b_cs.py,_i18n_onda3b_check.py(0 Residuen; die 10 „verbleibenden" = Regex-False-Positives — XAML-Fragmente in Strings, keine UI). - Gate: Build 0 Fehler; Suite 381/381 PASS (die StudioWebServerTests.cs einer anderen lane wurde für den Test beiseitegelegt und intakt wiederhergestellt).
- MEILENSTEIN: Hardcoded-Literal-Schuld auf NULL — Waves 1+2+3a+3b = 2,294 migrierte Literale (2,414 → 0 echte UI). Ausstehend: manueller PT/EN-Smoke im Editor. ### PATCH
v2.218.0.0
v2.218.2.0BETAPATCH
Seymour2. Aug. 2026
ViewerHub F1-Fix: `*.loopback`-Spike FEHLGESCHLAGEN → Loopback-IP-URL
- Diagnose (methodisch): In-Process-Server 100% OK (health 200, index 200, bundle 200, wasm 200 application/wasm, 1d/0080 bins 200) — der SCHWARZE BILDSCHIRM war das WebView2, das zu
noclip.loopbacknavigierte, was diese Windows-Maschine NICHT auflöst (RFC 6761 nicht aktiv im OS-Resolver:Resolve-DnsName/GetHostAddressesschlagen fehl). - Fix:
ViewerHubService.BuildUrlgibt jetzthttp://loopback:8769/index.html#ffx/...zurück (direkte IP, kein DNS) — das noclip liegt an der serve-dir-Wurzel, absolute Pfade lösen ohne Rewriting auf. Virtual-Host-Routing bleibt inStudioWebServer(derloopback-Alias deckt den aktuellen Ablauf ab; virtuelle Hosts bleiben für zukünftige Apps). - Encoding-Fix:
ViewerHub.cs/ViewerShell_Control.axaml.cshatten MOJIBAKE (PowerShell 5.1Set-Contentbeschädigte UTF-8 in Kommentaren/Strings beim Anwenden derViewerHub→ViewerHubService-Umbenennung) — Dateien via Editor neu erstellt (korrektes UTF-8). Lektion: .cs-Dateien nie via PowerShellSet-Contentmit Akzenten neu schreiben. - Gate: Build 0 Fehler; Tests 8/8 PASS (neuer
LoopbackAlias_ServesForPlainIpHost— der echte Hub-Ablauf). - Doc aktualisiert:
docs/ai/VIEWERHUB_ARCHITECTURE_2026-08-02.md§5 (Spike-Ergebnis + dokumentierter Fallback).
v2.218.1.0
v2.218.3.0BETAPATCH
Seymour2. Aug. 2026
i18n: manueller Smoke AUTOMATISIERT + 4 escaped Run.Text-Literale migriert
- Lane IFRT-2. \
StringsIntegrityTests(neu, 3 Tests) — ersetzt den manuellen Smoke von ~96 Modulen: (1) jede{x:Static res:Strings.X}-Referenz in .axaml löst auf eine Strings.cs-Property UND einen neutralen resx-Key auf; (2) jede Strings.cs-Property hat einen neutralen Key; (3) null rohe UI-Literale in .axaml (mit dokumentierter Ausnahme für technischen Müll — Pfade/Hex/Zahlen — gleiche Kriterien wie der Wave-3b-Klassifikator).- 4 escaped Literale (
Run Text=-Attribute mit Leerzeichen vor=— die Migrations-Regex verpasste sie):· partner hex:,/ 112 non-empty,+ →(MixTableEditor),Payload SHA256:(SaveEditorHub) →U_*-Keys in allen 9 resx + Strings.cs + ersetzt. - Gate: Build 0 Fehler; Suite 384/384 PASS (381 + 3 neue). Der Test fand beim ersten Lauf echte Fehler (23 rohe Literale → Analyse → 20 legitimer technischer Müll + 4 echte migrierte) — Beweis, dass der automatisierte Smoke funktioniert.
- Übersetzungsablauf jetzt: neuer String = 1 Key in Strings.resx + 1 Property in Strings.cs (die 8 Satelliten erben EN via ResourceManager-Fallback); echte Übersetzung = nur die übersetzten Keys in den Satelliten füllen. ### PATCH
v2.218.2.0
v2.218.4.0BETAPATCH
Seymour2. Aug. 2026
ViewerShell UNIVERSAL-MENÜ v2 (Browser-Muster)
- Neue Toolbar: kompaktes
cardSoftmit 3 Zonen — (1) Titel + Server-Status-Pill (3 Zustände:iniciando…/servidor in-process/pillDangermit dem Fehler — echte StudioTheme-Klassen:pillReadonly/pillDanger); (2) Adressleiste (gekürzte URL mit ToolTip — der „Browser" in der Software); (3) universelle Aktionen (Reload). Die alte große Karte (die vertikalen Platz verschwendete) ist weg. - DataModel:
IsStarting/IsRunning/IsError+SetState(); Code-Behind aktualisiert den Zustand bei Erfolgs-/Fehlerabläufen (BuildUrl null → rote Pill mit dem Grund). - Gate: Build 0 Fehler; Editor-Smoke (Extras → Monster Studio/Magic Studio — neues Menü + Viewer lädt).
- Hinweis: das kontextabhängige Panel pro Modus (Desc-Tools — z. B. Encounter-Picker bei Aurora) landet als einklappbare Zeile in F3 (axaml-Kommentar).
v2.218.3.0
v2.218.5.0BETAPATCH
Seymour2. Aug. 2026
ViewerShell-SKIN: noclip-UI ausgeblendet (Logo/About/untere Leiste)
- \
WebView2HosthatInjectScriptOnDocumentCreated(script)erhalten — injiziert ein Skript in jedes erstellte Dokument (viaAddScriptToExecuteOnDocumentCreatedAsync, mit sicherer Warteschlange vor der Runtime-Init). Fundament für zukünftige Skins/Tools.- Noclip-Skin von der ViewerShell angewendet (
RequiresNoclip-Descs): CSS+MutationObserver blenden#BottomBar(noclip play/pause/fullscreen/share),#About(Credits-Panel mit ihrem Logo),#studioSidePanelHelpBtn,.SettingsButton— das funktionale Panel bleibt (Monster/Magic-Dropdown) und die 3D-Canvas. Ihr Standardmenü ist weg; das universelle Menü ist unseres (Shell-Toolbar). - Gate: Build 0 Fehler; Editor-Smoke (Extras → Monster Studio — noclip-UI ausgeblendet, Monster-Dropdown intakt).
- Als Nächstes: F2 (Magic/Model/Map-Viewer migrieren) + Skin-Evolution (eigene Shell-Tools ersetzen noclip-Dropdowns).
v2.218.4.0