Appearance
Go 广场窗口与配置
系统概览
模型广场的桌面窗口管理与配置持久化(plaza_window.go + plaza_config.go)。启动时预热隐藏 WebView2 窗口(ADR-075 单实例,消除冷启动),点击站点时 Show + SetURL 导航;导航完成按直连/代理模式注入 window.open 拦截桥。配置侧支持远程拉取 creators/sites 列表 + 本地缓存兜底。
核心职责
prewarmPlazaWindow()— App 启动预热隐藏窗口(ServiceStartup 前经 SetWailsApp)。NavigatePlazaWindow(targetURL, direct)— 导航 + 按plazaDirectMode注入桥。ClosePlazaWindow()/PlazaGoBack/Forward/Reload/ZoomIn/ZoomOut/ZoomReset— 窗口操作(统一plazaCall)。FetchPlazaConfig()/GetCachedPlazaConfig()/SavePlazaConfig()— 远程/缓存/持久化三态配置。fetchPlazaRemote+writePlazaCache/readPlazaCache— 远程拉取 + 缓存文件。
对外 API(节选)
NavigatePlazaWindow(targetURL string, direct bool) error— 绑定NavigatePlazaWindow。FetchPlazaConfig() (creators, sites string, err error)— 广场配置(含缓存兜底)。
与其他子系统关系
- 与
go-proxy.md配合:直连模式(direct)vs 代理模式决定导航注入逻辑。 - 被前端
plaza-browser.ts/plaza-sites.ts/plaza-state.ts调用。
前端接入入口
- 模型广场面板:
plaza-browser.ts(导航)、plaza-sites.ts(站点配置)、plaza-state.ts(状态)。
不变量
- plaza 窗口全局唯一;所有方法经 plazaWinMu 守卫 +
plazaCall判 nil。 - Shutdown 必须先卸
WindowClosinghook 再 Close(否则 Close 被 Cancel 只隐藏)。 - 配置读取顺序:内存/磁盘缓存 → 远程;远程失败回退缓存。
验证入口
- 无专项单测,手动验证:
go test ./internal/app/ -run "Plaza"。