Skip to content

feat(account): make an account a thing that exists whether it is running #53

Description

@smileygames

目的

アカウントを、起動していなくても存在する durable な同一性として導入する。作る、残る、起動する、止める。名簿は「今つながっている人」ではなく「誰が居るか」を示す面になる。

前提

現況

TabConfigsrc-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.rsTabConfigAccountcli_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)。

関連

Metadata

Metadata

Assignees

Labels

enhancement新機能・改善要望ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions