From 400eae2418b3c94fd6e5e2b59edc982789f8c0b9 Mon Sep 17 00:00:00 2001 From: Claude Lin & Lay Date: Mon, 24 Aug 2026 08:30:19 +0900 Subject: [PATCH 1/2] feat(ui): label the diagnostics toggle as the terminal it opens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit タイトルバーの `診断` ボタンの表示を `端末` に変えた。#57 と #62 で読む値が 参加者パネルへ移ったあと、このボタンが開く先は端末一枠だけになっている。 名前が面の中身の変化に追いついていなかった。 ボタンを名指ししている文も併せて直した。`src/main.ts` のセッション異常終了時の 状態メッセージと、`docs/0-requirements.md` の 2 箇所(文字サイズのピッカーの 位置、手順の節)である。表示だけを変えると、これらが画面上に無い名前を指す。 面の役割名としての `診断面` は仕様書にそのまま残している。要素の id (`toggle-diagnostics`) も、開閉の対象も自動で開く条件も変えていない。 #69 Co-Authored-By: Claude Opus 5 --- docs/0-requirements.md | 4 ++-- index.html | 2 +- src/main.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/0-requirements.md b/docs/0-requirements.md index f1a8bf2..bb0837e 100644 --- a/docs/0-requirements.md +++ b/docs/0-requirements.md @@ -372,7 +372,7 @@ armed の「本当に終了」は「終了」より広く、その幅は名前 梯子に無い値が保存されていた場合は既定へ戻す。落ちる先が黙っているためである——梯子の外の値からは段を進めず、キーもピッカーも理由を出さずに効かなくなる。 -**操作はキーボードとヘッダの両方に置く。** `Ctrl` + `=` / `-` / `0`(拡大 / 縮小 / 既定へ戻す)と、`診断` の隣の小さなピッカーである。キーボードだけにしないのは既定値の側の事情である。既定を現状維持と決めた以上、設定していない画面に出るのは「大きい」と言われたその状態であり、見つけられない操作の裏に直し方を置けば、知っている者だけが直せる。ピッカーの表示は既定に対する百分率である。選んでいるのは「今より大きいか小さいか」であって、内部で何 `rem` かではない。 +**操作はキーボードとヘッダの両方に置く。** `Ctrl` + `=` / `-` / `0`(拡大 / 縮小 / 既定へ戻す)と、`端末` の隣の小さなピッカーである。キーボードだけにしないのは既定値の側の事情である。既定を現状維持と決めた以上、設定していない画面に出るのは「大きい」と言われたその状態であり、見つけられない操作の裏に直し方を置けば、知っている者だけが直せる。ピッカーの表示は既定に対する百分率である。選んでいるのは「今より大きいか小さいか」であって、内部で何 `rem` かではない。 キー操作は既定動作を止める。webview 自身のズームが同じキーに割り当たっており、そちらは参加者パネル・診断面・端末・入力欄をまとめて巻き込む。この節が効かせないと決めた四つがそのまま動くため、止めなければ範囲の限定そのものが成立しない。 @@ -541,7 +541,7 @@ CI が実行するもの: 上流から順に確認する。各段は下流の前提であるため、順序を飛ばさない。 1. **部屋ソケットが待ち受けているか。** 右の参加者パネルの部屋ソケットの行を見る。`127.0.0.1:` が accent 色で出ていなければ以降はすべて不成立。 -2. **セッションが生きているか。** 同じパネルのセッション行を見る。`終了(終了コード N)` なら CLI が落ちている。この行は参加者のリストで選択されている端末のアカウントのものであるため、複数動かしている場合はまず対象の行を選ぶ。理由はタイトルバーの「診断」を開いた先の端末に残る。CLI が確認プロンプトで止まっている場合は、端末へ直接答える。 +2. **セッションが生きているか。** 同じパネルのセッション行を見る。`終了(終了コード N)` なら CLI が落ちている。この行は参加者のリストで選択されている端末のアカウントのものであるため、複数動かしている場合はまず対象の行を選ぶ。理由はタイトルバーの「端末」を開いた先に残る。CLI が確認プロンプトで止まっている場合は、端末へ直接答える。 3. **サイドカーが接続したか。** パネルの参加者のリストで、そのアカウントの行から「未起動」が消え、薄い表示が戻る。リストにはアカウントが起動していなくても並ぶため、名前が出ていること自体は接続の根拠にならない。自分(人間)も発言前から載っている。接続していない場合は端末に `room socket: connected as ""` があるかを見る。 4. **サイドカー単体が壊れていないか。** `npm run sidecar:test` を実行する。偽の部屋ソケットを立てて両面を駆動するため、通ればサイドカーではなくアプリ側の問題に絞れる。 5. **`.mcp.json` の登録が効いているか。** セッションの作業ディレクトリの `.mcp.json` に `pullcept-room--` が入っているかを見る。鍵はアカウント id から決まるため名前では引けない。どのアカウントのものかはエントリ内の `PULLCEPT_AGENT_NAME` で読む。固定の `pullcept-room` は前回起動の残りとして掃除される側である。`--mcp-config` によるファイル渡しでは channel 側が名前を解決できないため、正式登録以外の経路は成立しない。 diff --git a/index.html b/index.html index 1b4b837..9db9718 100644 --- a/index.html +++ b/index.html @@ -36,7 +36,7 @@ aria-label="会話の文字サイズ" title="会話の文字サイズ(Ctrl + = / - / 0)" > - +
diff --git a/src/main.ts b/src/main.ts index 7bf2f1f..f1cdfc9 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1371,7 +1371,7 @@ async function followSession(view: SessionView, started: StartedSession): Promis for (const off of view.unlisten) off(); view.unlisten = []; const name = viewName(view); - status(`${name} が終了しました(${detail})。診断を確認してください。`, "error"); + status(`${name} が終了しました(${detail})。端末を確認してください。`, "error"); // The seat this account held is free the moment its session ends, so the // panel says 未起動 again and the account can be started once more. void refreshSeats(); From 1e6a9a99d433e11ff42f95e07fd83b003e3c2a46 Mon Sep 17 00:00:00 2001 From: Claude Lin & Lay Date: Mon, 24 Aug 2026 08:41:49 +0900 Subject: [PATCH 2/2] docs(readme): name the titlebar button as the terminal it opens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `README.md` の「「診断」を開くと」も `端末` へ揃えた。ボタンの表示が変わった以上、 この文は画面に無い名前を指していた。 「タイトルバーの」を補って、ボタンの「端末」と、そこに出る CLI の端末とを 書き分けている。`docs/0-requirements.md` の手順の節が既に同じ呼び方をしている。 当初の本文は名指し箇所を三つと数え、`README.md` を対象に含めていなかった。 `docs/` と `src/` にしか grep を掛けていなかったためである。実装中の掃きで 見つかり、Master の go-sign を受けて対象へ追加した。 `README.md:71` の「その端末が診断面に出ます」は面の役割名であるため据え置く。 #69 Co-Authored-By: Claude Opus 5 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a91a5a0..c1c82d9 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ npm run tauri dev リストの下にセッションの裏の値(部屋ソケット、セッションの生死、接続方法、起動コマンド、作業ディレクトリ、開始時刻、ウィンドウ)が出ます。部屋ソケット以外は、選んでいる端末のアカウントのものです。宛先に選べるのは部屋に居る参加者だけで、未起動のアカウントは出ません。 -「診断」を開くと**起動した CLI の端末**が出ます。端末はそのまま操作できます。CLI はフォルダごとに初回の信頼確認を出すため、最初の一回はここから答えてください。 +タイトルバーの「端末」を開くと**起動した CLI の端末**が出ます。端末はそのまま操作できます。CLI はフォルダごとに初回の信頼確認を出すため、最初の一回はここから答えてください。 端末はアカウントごとに別です。複数のセッションを動かしても出力が混ざることはなく、キー入力とペーストは**今見えている端末**のセッションへ届きます。別のアカウントを見てから戻っても、それまでの出力は残っています。終了したアカウントの端末も、別のアカウントを選ぶまで残ります(なぜ落ちたかは、落ちる直前の出力にしか書かれていないためです)。