目的
アカウントを、起動していなくても存在する durable な同一性として導入する。作る、残る、起動する、止める。名簿は「今つながっている人」ではなく「誰が居るか」を示す面になる。
前提
現況
TabConfig(src-tauri/src/config.rs)が起動の設定を持つ。既定は 1 つ、名前は Claude Code。タブを追加する UI も、名前を編集する UI も無い。
#40 は「起動ごとに名前と色を選ぶ」形でこれを回避した。名前と色は参加の時点で宣言され、localStorage に残る。
アカウントは #40 の機構を置き換え、目的を保つ
#40 が直した欠陥は「タブが起動の手段でしかなく、同一性を持てなかった」ことである。一つのタブを二回起動すると同じ名前を名乗った。
アカウントは同一性そのものである。一意な id を構造的に持つ ため、名前は表示のための属性へ降りられる。#40 が守ろうとした「名指せること」はより強い形で満たされる。join 時宣言という機構は不要になるが、目的は不変であり、満たされていることを完了条件で確認する。
TabConfig は既にほぼアカウント
{ id, name, command, args, cwd, cli_kind }。足りないのは色と、「今は動いていない」という状態のみ。
cli_kind は未使用であり(#17 )、この移行で落とす。#17 はこの issue で閉じる。
部屋は変えない
アカウントは画面と config の側の概念である。部屋は接続で見たままとし、room-participants は稼働中の接続を返し続ける。
画面が「アカウント一覧 ⋈ 稼働中の名簿」を アカウント id で 突き合わせて描く。
protocol 変更は無い。 #39 の接続키ー設計にも #47 の床にも触れない。
.mcp.json の鍵が名前由来である
#45 は鍵を liplus-chat-room-<slug>-<hash> とし、申告された名前から導出している(crates/mcp-config/src/lib.rs)。
名前を編集可能にすると、改名のたびに鍵が変わり、稼働中の登録が別物になる。鍵はアカウント id から導出する形へ移す。 id は不変なので改名が安全になる。
制約
対象外
人間(画面の話者)をアカウントにするか。 現在は localStorage の名前と色で参加している。アカウントへ統合するかは別の判断であり、この issue では現状のままとする。統合しないことを選んだのではなく、この issue で決めない。
アカウントごとの端末表示と終了ボタン。別 issue とする。この issue はその土台(アカウント → 稼働セッションの対応)を作る。
複数部屋の実装。 部屋の識別子はまだどこにも通っていない。この issue では二重起動の拒否を部屋単位で記述 するだけで、機構は作らない。
あわせて宿題を記録する。部屋が複数になると .mcp.json の鍵は(アカウント, 部屋)で区別する必要が生じ、fix(session): let a participant declare who they are in the room #45 の刈り込み(現在の部屋と LIPLUS_ROOM_URL が異なる前置き一致エントリを落とす)は、同一作業ディレクトリの二部屋が互いの登録を消し合う形になる。
対象ファイル
src-tauri/src/config.rs — TabConfig → Account、cli_kind 除去、移行
src-tauri/src/session.rs — 起動時のアカウント解決、二重起動の拒否
crates/mcp-config/src/lib.rs — 鍵をアカウント id から導出
index.html, src/main.ts, src/styles.css — 作成・編集・削除の UI、オフライン表示、宛先の選択肢
docs/0-requirements.md
完了条件
アカウントを作成・編集・削除できる。名前、作業ディレクトリ、起動オプション、色を設定できる。
起動していないアカウントが名簿に並び、オフラインと分かる。
オフラインのアカウントが宛先の選択肢に出ない。
稼働中のアカウントが宛先の選択肢に出る。
同じアカウントを同じ部屋で二重に起動できない。理由が画面に出る。制約が部屋を単位として記述されている。
アカウントを改名しても、稼働中のセッションの .mcp.json 登録が迷子にならない。
既存の AppConfig から移行できる。
protocol が変わっていない。room-participants の意味も変わっていない。
cli_kind が消えている(chore(config): remove the unused cli_kind field #17 )。
関連
目的
アカウントを、起動していなくても存在する durable な同一性として導入する。作る、残る、起動する、止める。名簿は「今つながっている人」ではなく「誰が居るか」を示す面になる。
前提
現況
TabConfig(src-tauri/src/config.rs)が起動の設定を持つ。既定は 1 つ、名前はClaude Code。タブを追加する UI も、名前を編集する UI も無い。#40 は「起動ごとに名前と色を選ぶ」形でこれを回避した。名前と色は参加の時点で宣言され、
localStorageに残る。アカウントは #40 の機構を置き換え、目的を保つ
#40 が直した欠陥は「タブが起動の手段でしかなく、同一性を持てなかった」ことである。一つのタブを二回起動すると同じ名前を名乗った。
アカウントは同一性そのものである。一意な id を構造的に持つため、名前は表示のための属性へ降りられる。#40 が守ろうとした「名指せること」はより強い形で満たされる。join 時宣言という機構は不要になるが、目的は不変であり、満たされていることを完了条件で確認する。
TabConfigは既にほぼアカウント{ id, name, command, args, cwd, cli_kind }。足りないのは色と、「今は動いていない」という状態のみ。cli_kindは未使用であり(#17)、この移行で落とす。#17 はこの issue で閉じる。部屋は変えない
アカウントは画面と config の側の概念である。部屋は接続で見たままとし、
room-participantsは稼働中の接続を返し続ける。画面が「アカウント一覧 ⋈ 稼働中の名簿」を アカウント id で 突き合わせて描く。
protocol 変更は無い。 #39 の接続키ー設計にも #47 の床にも触れない。
.mcp.jsonの鍵が名前由来である#45 は鍵を
liplus-chat-room-<slug>-<hash>とし、申告された名前から導出している(crates/mcp-config/src/lib.rs)。名前を編集可能にすると、改名のたびに鍵が変わり、稼働中の登録が別物になる。鍵はアカウント id から導出する形へ移す。 id は不変なので改名が安全になる。
制約
部屋は将来複数になる(
design/Vision.dc.htmlのルーム一覧。chat_id/LIPLUS_ROOM_IDは現在liplus-chat固定であり暫定値)。同じアカウントが別々の部屋に居ることは意図された形であり、禁じない。 部屋が一つである現在は挙動として同じだが、「一アカウントは一度だけ起動できる」と記録すると理由が寿命を越えて残り、後で複数部屋を塞ぐ。命名・コメント・docs のいずれでも部屋を単位として書く。.mcp.jsonの鍵をアカウント id から導出する。既存内容は保持し、他のサーバ登録を壊さない(fix(session): let a participant declare who they are in the room #45 の刈り込み条件を維持)。AppConfigを読める形で移行する。手元の設定を壊さない。対象外
localStorageの名前と色で参加している。アカウントへ統合するかは別の判断であり、この issue では現状のままとする。統合しないことを選んだのではなく、この issue で決めない。あわせて宿題を記録する。部屋が複数になると
.mcp.jsonの鍵は(アカウント, 部屋)で区別する必要が生じ、fix(session): let a participant declare who they are in the room #45 の刈り込み(現在の部屋とLIPLUS_ROOM_URLが異なる前置き一致エントリを落とす)は、同一作業ディレクトリの二部屋が互いの登録を消し合う形になる。対象ファイル
src-tauri/src/config.rs—TabConfig→Account、cli_kind除去、移行src-tauri/src/session.rs— 起動時のアカウント解決、二重起動の拒否crates/mcp-config/src/lib.rs— 鍵をアカウント id から導出index.html,src/main.ts,src/styles.css— 作成・編集・削除の UI、オフライン表示、宛先の選択肢docs/0-requirements.md完了条件
.mcp.json登録が迷子にならない。AppConfigから移行できる。room-participantsの意味も変わっていない。cli_kindが消えている(chore(config): remove the unused cli_kind field #17)。関連
cli_kind未使用。この issue で閉じる。.mcp.jsonの鍵。