jim800121chen
9c9e005d33
feat(local-tool): Stage 3 sub-step 進度 + 啟動完成後面板可收合
回應使用者三項需求:
1. healthCheckTimeout 60s → 180s(涵蓋 Defender + EDR 串行延遲最壞情境)
2. Stage 3「啟動本機伺服器」期間顯示細步在做什麼,並在 15 秒後改為「首次
啟動較久屬正常」slow hint,避免使用者看著 spinner 不動以為 app 掛了
3. 啟動完成後 6 階段面板自動收合成一行 summary,使用者點擊可展開檢視歷
史紀錄;Restart / Retry 會重置並展開新一輪
實作:
Go 端
- healthCheckTimeout 60s → 180s(理由註解寫清楚 Defender + EDR 各自延遲)
- waitHealthy() 加 progress callback,每 5 秒呼叫一次傳入 elapsedSeconds
- StartupPipeline 加 StartupStageDetailEvent + EmitStageDetail() API
- startServerV2 在 spawn 前 emit detail.spawn,等 health check 期間 callback
emit detail.waitHealth(< 15s)或 detail.waitHealthSlow(>= 15s)
前端
- 新訂 startup:stage-detail event → updateStageDetail() 把 i18n key 解析為
文案存到 stages[n].detail,paintStageRow 優先顯示 detail(蓋過 slow hint)
- collapseStartupPanel() / expandStartupPanel() / resetStartupPanel() 三個新
API 取代 hideStartupPanel;startup:ready 觸發 collapse、Retry/Restart 觸
發 reset+expand
- collapsed CSS:保留 panel 但縮成一行 summary(標題改「啟動完成」+ ✓ +
「點此展開檢視」hint),整個 panel 可點擊;hover 加亮
- i18n 加 6 個 keys(zh-TW + en)
驗證:
- visiona-local 套件 go build / vet / test -race 全綠
- macOS dmg 重 build 163MB OK
- 乾淨 dataDir 啟動 wails app:startup 1 秒內完成(macOS 已 cache binary
+ Python venv),server listen 3721,Chrome 自動連上 — 整條 cold start
正常
Windows 首次安裝預期行為(修復後):
- Stage 1 → Stage 2(首次 bootstrap pause hard timeout,跑 1-3 分鐘)→ Stage
3 spawn → 等 health check 30-90 秒(Defender 掃 binary)期間有「已等 N
秒」即時更新 → ready → 自動 collapse → 瀏覽器自動開啟
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 00:17:37 +08:00
..
2026-04-15 20:23:37 +08:00
2026-04-16 00:17:37 +08:00
2026-04-15 17:57:54 +08:00
2026-04-16 00:17:37 +08:00
2026-04-12 04:42:41 +08:00
2026-04-15 17:57:54 +08:00
2026-04-15 17:57:54 +08:00
2026-04-15 17:57:54 +08:00
2026-04-16 00:17:37 +08:00
2026-04-16 00:17:37 +08:00