更新 2.218
2026/8/2
v2.218.0.0BETAMINOR
Seymour2026年8月2日
VIEWERHUB F1: 3D 檢視器的通用統一(1 個連接埠,零 Python,零瀏覽器)
StudioWebServer(Modules/Common/ViewerHub/): IN-PROCESS 靜態 HTTP 伺服器 (TcpListener loopback:8769) 搭配 虛擬主機路由*.loopback(RFC 6761 — WebView2 解析為回送;每個應用程式看到自己的「網域」根目錄 — 解決絕對路徑無需 HTML 重寫)。靜態檔案 + MIME + 透明接合 + 路徑遍歷防護 +GET /health。連接埠回收:若舊版 python (http.server) squats 8769, kills it viaGetExtendedTcpTable; otherwise honest status. Zero external process (nothing to leak).NoclipLocator: 單一探索(環境變數NOCLIP_ROOT→ walk-up →Downloads/Compressed)並附帶 nested-root 修正(潛在的 Aurora 錯誤)。ServeDirBuilder: 無碰撞 serve-dir(增量發行版 + 資料接合點)。ViewerDescriptor+ViewerHubService: 宣告式檢視器註冊表 + 單一 APIBuildUrl/Find/StatusText;初始描述monster-studio和magic-studio(主機noclip.loopback)。ViewerShell(Modules/Common/ViewerShell/): 通用選單 — 固定列(in-process 伺服器狀態、URL、重新載入)+ 嵌入的 WebView2;WebView2Host複製到Common(舊版檢視器保留舊副本直到 F2)。- 接線:
Main_Window— Monster Studio 現在開啟 ViewerShell 嵌入(無瀏覽器)+ 新的magic-studio-web處理器/案例;ModuleCatalogPolicy—magic-studio-web項目 +monster-studio-web項目已更新(嵌入式 3D 檢視器)。 - 閘門: 發行版建置 0 個錯誤(445 個 pre-existing 警告);StudioWebServer 探測測試 7/7 PASS(健康狀態 JSON、已知/未知主機路由、js/bin MIME、透過原始 TCP 的路徑遍歷、404)。
- 架構文件:
docs/ai/VIEWERHUB_ARCHITECTURE_2026-08-02.md(已覈准的計畫 F1–F6,使用者決策)。 - 待辦:
*.loopbackWebView2 衝刺(手動煙霧測試:編輯器中的 Extras → Monster Studio);F2(將 Magic/Model/Map 檢視器遷移至中樞);目標部署(bin/Release 在建置期間被開啟的編輯器鎖定)。
v2.217.1.0
v2.218.1.0BETAPATCH
Seymour2026年8月2日
i18n 第三波 b:已遷移 1,739 個 UNIQUE 字面值 — 編輯器 100% resx-driven
- 工作線 IFRT-2
- 1,759 個唯一項目的客觀分類: 1,739 個真實 UI 對比 20 個技術垃圾(路徑/十六進位/數字/符號/識別碼 — 故意不遷移)。
- 1,739 個
U_{slug}_{hash8}金鑰 在全部 9 個 resx 中(顯示的文字保留於 byte-for-byte 在 EN/PT — 零視覺行為變更;實際翻譯留待未來增量工作)。 - 跨 94 個 .axaml 檔案的 1,736 個取代(
{x:Static res:Strings.U_...});MonsterAiEditor2*已排除(硬性規則,0 差異)。Strings.cs+1,739 個屬性。 - 腳本:
_i18n_onda3b_classify.py、_i18n_onda3b_migrate.py、_i18n_onda3b_cs.py、_i18n_onda3b_check.py(0 殘留;那 10 個「剩餘」= 正則表達式誤判 — XAML 片段在字串內,非 UI)。 - 閘門: 建置 0 錯誤;套件 381/381 PASS(另一條工作線的 StudioWebServerTests.cs 為測試暫時移開並完整還原)。
- MILESTONE:硬編碼字面值債務 ZEROED — 第一波+第二波+第三波 a+第三波 b = 已遷移 2,294 個字面值(2,414 → 0 個真實 UI)。待辦:在編輯器中手動 PT/EN 冒煙測試。 ### PATCH
v2.218.0.0
v2.218.2.0BETAPATCH
Seymour2026年8月2日
ViewerHub F1 修復: `*.loopback` 技術預研 FAILED → loopback-IP URL
- 診斷(方法論): in-process 伺服器 100% OK(健康 200, 索引 200, 捆綁包 200, wasm 200 application/wasm, 1d/0080 二進位檔 200)— BLACK SCREEN 是 WebView2 導航到
noclip.loopback,而此 Windows 機器確實 NOT 解析(RFC 6761 在 OS 解析器中未啟用:Resolve-DnsName/GetHostAddresses失敗)。 - 修復:
ViewerHubService.BuildUrl現在回傳http://loopback:8769/index.html#ffx/...(直接 IP,無 DNS)— noclip 位於 serve-dir 根目錄,絕對路徑解析無需重寫。Virtual-host 路由保留在StudioWebServer中(loopback別名涵蓋當前流程;虛擬主機保留供未來應用程式使用)。 - 編碼修復:
ViewerHub.cs/ViewerShell_Control.axaml.cs曾出現 MOJIBAKE(PowerShell 5.1Set-Content在註解/字串中損壞 UTF-8,同時套用ViewerHub→ViewerHubService重新命名)— 透過編輯器重新建立檔案(正確 UTF-8)。教訓:絕不透過帶重音符號的 PowerShellSet-Content重寫 .cs 檔案。 - 閘門: 建置 0 個錯誤;測試 8/8 PASS(新
LoopbackAlias_ServesForPlainIpHost— 實際樞紐流程)。 - 文件已更新:
docs/ai/VIEWERHUB_ARCHITECTURE_2026-08-02.md§5(技術預研結果 + 驗證)。
v2.218.1.0
v2.218.3.0BETAPATCH
Seymour2026年8月2日
國際化:手動煙霧測試 AUTOMATED + 4 個跳脫的 Run.Text 字面值已遷移
- 工作線 IFRT-2
StringsIntegrityTests(新增,3 個測試) — 取代約 96 個模組的手動煙霧測試:(1) 每個 .axaml 中的{x:Static res:Strings.X}參考都解析為一個 Strings.cs 屬性 AND 一個中性 resx 索引鍵;(2) 每個 Strings.cs 屬性都有一個中性索引鍵;(3) .axaml 中零個原始 UI 字面值(已記錄的例外情況為技術垃圾 — 路徑/十六進位/數字 — 與 Wave 3b 分類器相同的條件)。- 4 個跳脫字面值(
Run Text=屬性在=前有一個空格 — 遷移正規表示式遺漏了它們):· partner hex:、/ 112 non-empty、+ →(MixTableEditor)、Payload SHA256:(SaveEditorHub)→ 所有 9 個 resx 中的U_*索引鍵 + Strings.cs + 已取代。 - 閘門: 建置 0 錯誤;測試套件 384/384 PASS(381 + 3 新增)。該測試在首次執行時確實捕捉到實際失敗(23 個原始字面值 → 分析 → 20 個合法的技術垃圾 + 4 個實際遷移)— 證明自動化煙霧測試有效。
- 翻譯流程現在:新字串 = 1 個索引鍵在 Strings.resx + 1 個屬性在 Strings.cs(8 個衛星透過 EN 後援繼承 ResourceManager);實際翻譯 = 僅在衛星中填入已翻譯的索引鍵。 ### PATCH
v2.218.2.0
v2.218.4.0BETAPATCH
Seymour2026年8月2日
ViewerShell UNIVERSAL MENU v2 (browser-like 模式)
- 新工具列:精簡的
cardSoft,包含 3 個區域 — (1) 標題 + 伺服器狀態膠囊(3 種狀態:iniciando…/servidor in-process/pillDanger加上錯誤 — 實際的 StudioTheme 類別:pillReadonly/pillDanger);(2) 網址列(帶有 URL 的截斷 ToolTip — 軟體內部的「瀏覽器」);(3) 通用動作(重新載入)。舊的大卡片(浪費垂直空間)已移除。 - DataModel:
IsStarting/IsRunning/IsError+SetState();code-behind 根據成功/錯誤流程更新狀態(BuildUrl 為 null → 紅色膠囊並顯示原因)。 - 閘門:建置 0 個錯誤;編輯器煙霧測試(額外 → 魔物工作室/魔法工作室 — 新選單 + 檢視器載入)。
- 注意:per-mode 內容面板(描述工具 — e.g。Aurora 上的遭遇選取器)以可摺疊行形式出現在 F3 中(axaml 註解)。
v2.218.3.0
v2.218.5.0BETAPATCH
Seymour2026年8月2日
ViewerShell SKIN: noclip UI 隱藏 (標誌/關於/底部列)
WebView2Host獲得InjectScriptOnDocumentCreated(script)— 將腳本注入每個已建立的文檔(通過AddScriptToExecuteOnDocumentCreatedAsync,並在運行時初始化之前使用安全隊列)。爲未來的皮膚/工具奠定基礎。- 由 ViewerShell 應用的 Noclip 皮膚 (
RequiresNoclip描述): CSS+MutationObserver 隱藏#BottomBar(noclip 播放/暫停/全螢幕/分享),#About(包含其標誌的致謝面板),#studioSidePanelHelpBtn,.SettingsButton— 功能面板保持不變 (怪物/魔法下拉選單) 以及 3D 畫布。他們的預設選單已消失;通用選單是我們的 (外殼工具欄)。 - 閘門: 構建 0 個錯誤;編輯器冒煙測試 (額外功能 → 怪物工作室 — noclip UI 隱藏, 怪物下拉選單完整)。
- 下一步: F2 (遷移 Magic/Model/Map 檢視器) + 皮膚演進 (自有外殼工具取代 noclip 下拉選單)。
v2.218.4.0