feat(launcher): make the launch options editable and merge the room channel - #27
Merged
Conversation
…hannel 起動オプションを画面から編集できるようにし、アプリが付ける channel エントリを 利用者の指定へ統合するようにした。 従来は args を編集する UI が無く、channel の対象も SERVER_NAME 固定だった。 Master の希望する起動形(--dangerously-skip-permissions と、別の channel サーバの指定)を表現する手段が存在しなかった。 統合の形にしたのは、第二のフラグとして足すと同一フラグの二重指定になるため。 liplus-desktop #90 の実測では --channels 併記による二重登録で全体が不通になって おり、同じ形を自分で作ることになる。利用者が channel フラグを書いていればその 直後へ挿入し、書いていなければフラグごと足す。 上書きではなく統合なのは、部屋のエントリを利用者の指定で落とせないようにする ため。落ちれば部屋の入力路そのものが消える。 実際に起動する行を画面に表示する。書いた行と走る行が違う以上、結果を見せるほうが 説明より安い。 引数の分割は mcp-config 側に置いてテストで固定した。TypeScript 側に第二の実装を 書くとテスト済みの側からドリフトするため、フロントエンドはコマンド経由で呼ぶ。 二重引用符によるグループ化のみ解釈する。空白分割だけだと "C:\Program Files\..." のような指定が黙って二つに割れる。バックスラッシュはエスケープではなくそのまま。 未検証として docs に明記: 一つのフラグに server: エントリを複数並べられるかは 確認できていない。#90 が確定しているのは --channels 併記の失敗であり、同一 フラグへの複数エントリは扱っていない。--print での確認は channel の読み込み 自体が走らないため無意味。対話セッションでのみ確かめられる。 #26
smileygames
commented
Aug 21, 2026
smileygames
left a comment
Member
Author
There was a problem hiding this comment.
AI self-review (execution_mode = auto)
受け入れ条件の照合(issue #26 完了条件)
| 条件 | 結果 | 根拠 |
|---|---|---|
| 起動オプションを画面から編集でき、保存される | 実装済 / 実機未確認 | #launch-options 欄、起動成功時に tab.args として save_config |
| 利用者が channel フラグを書いた場合、部屋のエントリがそこへ統合される | pass | merges_the_room_into_a_channel_flag_the_person_already_wrote がフラグ 1 回であることまで assert |
| 部屋のエントリが常に含まれることがテストで固定されている | pass | 上記 + the_launch_flag_names_the_server_the_config_registers + does_not_add_the_room_twice |
| 引用符付きの引数が壊れない | pass | splits_launch_options_keeping_quoted_arguments_whole がスペース入り Windows パスと空引数を assert |
制約の照合
- 部屋のエントリを利用者の指定で落とせない: pass。
channel_launch_argsは上書き経路を持たない。 reject_incompatible_flagsは維持: pass。--channels/--print/--input-format/--output-formatは引き続きエラーで止まる。- 分割の実装を二重に持たない: pass。TypeScript 側は
parse_launch_optionsコマンド経由でmcp-configの実装を呼ぶ。#22 で「テストが実装と別の経路を通っていた」ことを踏まえた配置。
実機側の状況
本 PR 作業中に config.json が更新され、Master の希望する args が既に入っていた。
"args": ["--dangerously-skip-permissions",
"--dangerously-load-development-channels",
"server:github-webhook-mcp"]
現在の main(#27 前)ではこれが壊れる。channel_launch_args が無条件に追記するため、同一フラグが二回並ぶ。
... server:github-webhook-mcp --dangerously-load-development-channels server:liplus-chat-room
これは #90 が「不通になる」と記録している二重登録と同じ形。本 PR はまさにこの状態を防ぐもので、merge の時機として妥当。
未検証(docs に明記済み)
一つのフラグへ server: エントリを複数並べられるかは未確認。#90 が確定しているのは --channels 併記の失敗であり、同一フラグへの複数エントリは扱っていない。--print での確認は channel の読み込みが走らないため無意味であることを実測した。対話セッションでのみ確かめられる。
推測で「通る」と書かず、未検証のまま実装した。次の実行が検証になる。
検証
- CI 全ステップ pass(
cargo test11 pass) - ローカルで
cargo check --target x86_64-pc-windows-gnu/npm run build
scope deviation
なし。
次の期待
execution_mode = auto のため人間レビューゲートなし。CI green(CI pass / check pass 1m37s)。self-review pass により squash merge へ進む。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #26
変更前後
Master の希望:
これを起動オプション欄へそのまま書くと、実際の起動はこうなる。
なぜ統合なのか
第二のフラグとして足すと、同一フラグの二重指定になる。liplus-desktop #90 の実測では
--channels併記による二重登録で全体が不通になっており、同じ形を自分で作ることになる。上書きでもない。利用者の指定で部屋のエントリを落とせるようにすると、落ちた時点で部屋の入力路そのものが消える。
したがって、利用者が channel フラグを書いていればその直後へ挿入し、書いていなければフラグごと足す。既に部屋のエントリがあれば重複させない。
表示
実際に起動する行を入力欄の右に出す。書いた行と走る行が違う以上、結果を見せるほうが説明より安い。
引数の分割
mcp-config側に置いてテストで固定した。TypeScript 側に第二の実装を書くとテスト済みの側からドリフトするため、フロントエンドはparse_launch_optionsコマンド経由で呼ぶ。二重引用符によるグループ化のみ解釈する。空白分割だけだと
"C:\Program Files\..."のような指定が黙って二つに割れる。バックスラッシュはエスケープではなくそのまま。未検証(重要)
一つのフラグに
server:エントリを複数並べられるかは確認できていない。#90 の実測が確定しているのは「
--channelsを併記すると二重登録で不通になる」ことであり、同一フラグへの複数エントリは扱っていない。--printでの確認は無意味(channel の読み込み自体が走らないため。実測済み)。対話セッションでのみ確かめられる。したがって Master の次の実行がそのまま検証になる。通らなければ端末にエラーが出るので切り分けられる。docs にも未検証として明記した。
検証
cargo test(crates/mcp-config、8 → 11 pass)npm run build/cargo check --target x86_64-pc-windows-gnurelease type
minor — user/system observable な機能追加(起動オプションの編集と channel の統合)。