Skip to content

first-run: 從專案選擇畫面建立第一個專案時,「先跑一個指令」畫面永遠不會出現 #249

Closed

Description

@guan4tou2

在 #226 的 v0.18.0 Windows smoke test 發現,main(b371833)也一樣。

現象

乾淨安裝後,在專案選擇畫面建立第一個專案:

  • 畫面直接進入完整的儀表板,沒有 Spec 037 的「先跑一個指令」首次畫面。
  • sidebar 從第一天就列出全部頁面,§22 的漸進揭露沒有作用。

當時 main 回傳的訊號其實是 evidenceSeen: false(window.redlog.visibility.signals())。照設計,這時應該顯示首次畫面。

連帶影響:「記我的 PowerShell/Zsh/Bash 終端」的 nonce 引導流程只在首次畫面上,所以也進不去。RELEASE-SMOKE-TEST 的 EXTERNAL SHELL 前三項因此無法執行。

原因

  1. src/renderer/src/hooks/useVisibility.ts:51-57:第一次抓訊號的 effect 只在元件掛載時跑一次(依賴陣列是 [])。
  2. app 掛載時還停在專案選擇畫面,沒有專案。這時 src/main/index.ts:1433 回傳 null。
  3. renderer 把 null 當成「main 沒有回應」,換成 ALL_DISCLOSED(useVisibility.ts:11),於是 firstRun 是 false。
  4. 從選擇畫面開專案不會重新載入 renderer,也不會重抓訊號。之後的重抓,又因為 visibility.complete 已經是 true 而被跳過。

為什麼測試沒抓到

e2e/helpers.ts 的 openTestProject 開完專案後會執行 page.reload()(第 93 行),所以 renderer 重新掛載時已經有專案。

建議方向

  • 專案改變時重抓訊號,讓 effect 依賴 project。
  • 把「沒有專案」回傳的 null 跟「讀取失敗」分開處理,只有讀取失敗才用 ALL_DISCLOSED。
  • e2e 不要靠 reload 來開專案,至少要有一條路徑是從選擇畫面直接建立。

🤖 Generated with Claude Code

Activity

  1. guan4tou2 commented on Oct 12, 2026

    @guan4tou2
    OwnerAuthor

    驗證過,已在 main 修好:a185b5d0(fix(first-run): a null visibility signal means 'not asked yet')是 origin/main 的祖先,改了 useVisibility.ts 並新增 test/use-visibility.test.tsx(3 個測試,變異檢查證實會在舊行為下失敗)。目前的 effect 在沒有專案時設 null、真的回 null 也保持 null,只有探測失敗才用 ALL_DISCLOSED,依賴是 [project?.id]。issue 提到的『側欄第一天就全列』已由 61e0d95 移除漸進式揭露,屬預期行為。

    仍開著的缺口:e2e 沒有『從選擇器直接建專案、不 reload、看到 first-run 畫面』的路徑(e2e/helpers.ts 的 openTestProject 仍 reload),那一項歸在 e2e 債(#262/#263)處理。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions