Skip to content

fix(ui): a launched session reads as 未起動 until it joins the room #89

Description

@smileygames

目的

起動したセッションの行が「未起動」と言う窓を消す。

前提

実機で観測した(2026-08-25、Master が ▶️ を押し AI が画面を確認)。

Claude Lay を起動すると、CLI は --dangerously-load-development-channels の確認プロンプト(Enter to confirm)で止まる。この間、画面はこうなっている——

ライフサイクル 実際
Claude Lay 未起動 走っている(プロンプト待ち)
Claude Lin 未起動 ▶️ 本当に未起動

語が情報を運んでいない。 走っているセッションと、起動していないアカウントが、同じ語を出している。区別できるのはボタンだけである。

同じ画面の右にある状態パネルは、同じ瞬間に正しく言っている——

セッション   Claude Lay 起動中
開始時刻     18:39

なぜそうなるか

一つの画面に「走っている」の定義が二つある。

どこ 判定基準 実装
状態パネル プロセスが終了していない view.ended === nullrenderSessionFacts
名簿の行 部屋の名簿に居る row.participantmemberRow

memberRow の note の優先順位は上から own → launching → row.participant → failure → view.ended → row.account。この窓では launching は false(ptyId は既に付いている)、row.participant は null(CLI がまだ部屋の websocket に繋いでいない)。したがって最後の row.account まで落ちて「未起動」になる。

パネルは既に「起動中 ↔ 終了」の対でこの語を使っており、この語彙では 起動中 = 走っている であって「起動しかけ」ではない。行がパネルと違う定義を持っていることが欠陥である。

いつからあるか

#82 が入る前からある。あの PR は空だった row.participant の枝を埋めただけで、この経路は触っていない。ただし #82 で行が様子を語り始めた分、矛盾は見えやすくなっている。

窓の長さは CLI の起動時間そのもの。開発用の旗を積んだこの環境では確認プロンプトで止まるため数分続く。旗の無い起動なら数秒で抜ける。窓の長さは環境依存だが、語が二つの状態を同一視すること自体は長さに依らない。

決定

  • 語は新設しない。行がパネルの定義に合わせる。 プロセスが終了していない間、行は「起動中」と言う。パネルが既にこの語をこの意味で使っているため、二つ目の語彙を持ち込む理由がない。
  • は出したままにする。 プロセスは実在し、終了できるべきである。
  • launching の定義は変えない。 あれは ▶️ の無効化判断にも使われている。note 側に一段足す。

note の優先順位(変更後)

own → launching → row.participant → failure → view が終了していない → view.ended → row.account
                                                    ↑ ここを足す

row.participant の枝を前に置いたままにするのが要点。在室中の行が何も言わない形(#82)はこれで壊れない。部屋に居ない間だけこの新しい枝に落ちるため、起動直後の窓と、一度入った CLI が接続を失った場合の両方を正しく読める。

制約

対象ファイル

  • src/main.tsmemberRow の note の優先順位
  • docs/0-requirements.md

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug動いていない、壊れているready本文が実装開始できる形まで収束している状態。ただし更新は継続可能

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions