歷史記錄 · 2026-08-08¶
重大重構里程碑¶
2026-08-08 ─ 多身分封存與加密本機備份(issue 000221)¶
決策檔:D-20260808-06
首次公開前一次完成同 origin 多 profile 與全 origin 單一 active identity:切換先撤銷舊分頁/generation、
停止房間/賽事/P2P,清 key、TURN 與明文工作集。open4wd-keys 升 schema 2,per-PeerId identity
container 的各 domain 以 master seed HKDF-SHA256 派生 AES-GCM key,PIN 不參與 domain 派生;
blocklist、recent teammates、garage 與 Inbox 本機資料收斂到 revision CAS workspace。
設定維護頁新增單一 .open4wd-backup:多選 sealed 身分資料、設定分類與個別本機 GLB。外/內層均為
CAR v1,密碼 Argon2id、header 與 payload 分塊 AES-GCM,AAD 與有序 CID 防置換/重排/截斷;金鑰、
TURN secret、ledger、cache 與 Inbox snapshot 永不入包。匯入先完整驗證與 quota 預覽,再逐分段提交;
GLB 重新走 Sanitize Worker、Wave A 與 canonical rules。輸出優先 File System Access,其次 OPFS,最後
才是有硬上限的記憶體後援。此本機資料包不取代各身分的備份碼,也不與 exact-root UGC CAR 合併。
2026-08-08 ─ GLB 匯出為可編輯衍生檔(issue 000248)¶
決策檔:D-20260808-05
既有 Editor「匯出 GLB」改為先產生同一 canonical 成品,再展開 Draco、將 KTX2 轉為內嵌 PNG,
並移除 open4wd_version 與 auto_* 衍生快取後下載。hierarchy、material、authored transform、
Mount/Pivot/Axis 與 authored extras 保留;轉換失敗不下載部分檔,重新匯入重走 Stage 1–3。
本機 canonical 資產及鏈上詳情頁共用相同轉換;鏈上來源先依 exact CID 取得並驗完整 bytes。
本機測試與上鏈仍保存完全相同的 canonical GLB,CID/物理真相不變。CAR 保存包繼續承擔 exact-CID 備份與本機補回,不與 DCC 編輯格式合併,因此沒有新增第四個 Editor 出口。
2026-08-08 ─ 上鏈 UGC 一律接受 Fork(issue 000256)¶
決策檔:D-20260808-04
確認高階版權 canon 原已規定「上傳 = 接受 Fork」與永久不可撤銷授權;低階實作中的
allowFork 與 AllowForkChangeEvent 沒有人為裁決來源,且可導致單一作品拒絕衍生,因此從
UGCMetadata、ledger v1 event catalog、fork reducer、provider 與 Editor 提交面完整移除。未發布的舊形狀不建
相容層,exact schema 直接拒絕。parent 存在、類型、最低修改量、仲裁黑名單與 similarity-pending
守門不變;provider-local DMCA 仍只控制該 provider 的 bytes 供應。
2026-08-08 ─ 武器正式執行期物理拓撲(issue 000251)¶
決策檔:D-20260808-03
延續既有 multi-actuator、鏈條 joint 與 launch child-order 設計,Stage 3 新增 version 1
auto_weapon_physics:固定基座、rotor/chain segment 與逐發 projectile 都烘成具名、有界 convex
proxy,並以 descriptor hash、正式材質表、weapon_actuators[]、auto_launch_ammo[] 交叉驗證。
特殊角度、比例與搞怪造型照 authored transform/geometry 使用,不依 builtin 外觀或固定世界軸猜測。
descriptor wire 以正整數微克/微米保存質量與空間資料;公版 part 單檔上限只為此有界 metadata 由
100 KiB 調為 104 KiB,全套 4 MiB 上限不變,未刪減特殊造型所需的 support directions。
runtime 以真實 auxiliary body/joint 驅動 rotor 與 chain;torque impulse 對 payload/chassis 等量反向。 launch 彈體在載入時依各自 pose/形狀/材質/質量預配置並以 fixed joint 持彈,開火只依 child index 釋放,不再建立第一發材質的替代球體或增加質量。SavedState 升為 v5,保存 actuator phase/ammo, 並從 immutable VehicleSpec 推導完整 body/collider/joint 與 hold-joint 子集。具名武器節點姿態同時接到 本機 viewport 與有界 spectator wire;未知 node 不建立 scene object。
2026-08-08 ─ 首次公開 builtin 資產 v1 基線(issue 000255)¶
決策檔:D-20260808-02
專案尚未首次公開,provisional AI 公版資產內部重製曾把 builtin_assets_version 累增至 8,並與
參數表 6、生成 metadata 1 形成漂移。依首次公開邊界裁決,source、public/authoring manifest、
pinning vendor 與 version.json 統一回 v1;既有 2–8 歷史保留,但不視為 public compatibility era。
此同步未改動 27 個 GLB 的任何 bytes、SHA-256、CID 或 extras。
Service Worker 主快取改為同時包含 client/builtin 版本,activate 只刪 open4wd- namespace 的
舊 cache,保留同 origin foreign cache 與所有帳號/身分資料。首次公開前由 production Editor
手動完成的最終公版仍維持 v1;首次公開凍結 v1 provenance,公開後第一個玩法/物理變更才升 v2。
2026-08-08 ─ 可逆場地表面工具與拓樸修補(issue 000249)¶
場地 Editor 新增共用表面工具:raise/lower/smooth/flatten 都使用可調半徑、強度與硬度, 方向來自 authored surface frame,不使用重力或 world Y。一次筆劃同步更新 editable attributes、 derived geometry、surface BVH、RoutePoint/RespawnPoint anchors 與 marker transform,並以一筆有界 history 交易 undo/redo。
拓樸修補只處理作者明確選定的 exact boundary:cap 選一個閉環,bridge 選同 primitive 兩個閉環 並明示正/反 orientation。嚴格三角化、non-manifold/自交/退化/attribute 檢查全部 fail closed; 對稱洞口改以有向 boundary half-edge 決定 winding,不依賴可能互相抵消的側壁法線。沒有 boundary 時明示可能是遮擋、法線或材質問題。
編輯 overlay 於本機測試、匯出與上鏈前 materialize 到同一 canonical GLB,runtime collider 直接 讀取該 GLB 的修改後 POSITION/indices。現有 D-20260528-01、D-20260808-01、D-20260703-04 與 D-20260712-01 已涵蓋 surface frame、Worker 邊界及材質體積語意,因此未新增 ADR 或 schema。
2026-08-08 ─ 重疊表面明示選擇與 component lock(issue 000249)¶
場地編輯的 surface ray 由單一最近命中改為 primitive-sharded BVH 的有界多候選:道路、屋頂、
樓板、垂直面與倒掛路面均依相機射線與 authored normal 呈現,不以高度、重力或公版命名推測。
兩層以上先顯示 triangle/point/normal 預覽,作者可用按鈕或 viewport-scoped [/] 循環,
確認後才寫入 session;Tab 保留無障礙 focus,取消與預覽不產生 undo。
確認保存 {node, primitive, connected component} lock,後續命中不到同層時要求重新明示確認,
禁止靜默落回最近面。RoutePoint 與貼面 RespawnPoint 消費完整 surface frame,延續
D-20260528-01、D-20260808-01 與 D-20260703-04,未新增 schema 或 ADR。
2026-08-08 ─ route 與 respawn 完整 surface frame(issue 000253)¶
決策檔:D-20260808-01
正式 speed×雪地本機賽揭露起跑車輛倒置:RoutePoint Empty 的 world -Z 已進入
TrackConfig.forward,但 D-20260528-01 定義的 surface up 在 world-builder 後被丟失。當 forward
接近車輛 local -Z 的反向時,shortest-arc 四元數會由微小斜率選到錯誤 180° 旋轉軸,實測
upDotWorld=-0.998175,四輪持續轉動但車體倒扣停滯。
runtime 契約改為 RoutePoint/RespawnPoint 都傳遞完整 {forward, up} frame;Hermite sample 保留
正交化後的 interpolated up,起跑與所有 teleport 同時對齊車輛 local -Z/+Y。重力與相機不再
參與姿態補猜,因此 banked、垂直、倒掛及 360° 迴圈共用同一路徑。修正後同一正式雪地起跑
upDotWorld=0.999964 且輪地接觸成立;後續在既知障礙位置停滯另屬場地/輪組完賽驗收,未以
縮短終點或隱藏 teleport 掩蓋。