[v0.1/SSH Review] グローバル carrier と window retarget carrier の非対称 #39
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis#39
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
現状
--hostで carrier を決める:felis --host user@remote sessions list。conn::resolveがCarrier::Sshを作る。--hostで carrier を決める:felis window retarget --host user@remote/felis ssh user@remote。retarget()がresolve(None, ...)で自デーモンを決め、verb 引数の carrier はRetargetTargetとして push される。felis --host a ssh bはretarget() { if global_carrier { reject } }で exit 2 になる(main.rs:retarget)。control-surfaces.md"Deliberate asymmetries" として文書化されているが、ユーザからは同一概念("どこに繋ぐか")が二つの位置に現れる。--socketと--hostは排他(clapconflicts_with)。retarget 側は--host/--to-socket/ default の三択で、aliasfelis sshは--host固定(--to-socketは使えない)。問い(1.0 でしか変えられない)
carrier 指定の「グローバル vs verb-local」分離をこのまま凍結するか? CLI 全体で統一した carrier 記法に直すか?
破壊的変更案
reject_global_carrierの文面をfelis --hostは headless verb の宛先、felis ssh/window retarget --hostは window の行き先、と明確に区別して表記。cli.md"Re-point a window across daemons" の usage error 表を normative として凍結。felis --host X sessions listをfelis sessions --host X listまたはfelis -- sessions list --host Xのように verb 側に寄せる。グローバル--hostを廃止し、すべての carrier 指定を verb の引数に。--hostと--socketの排他は各 verb で再宣言。felis sshをトップレベル verb から外し、felis window retargetに一本化。 alias を deprecated にし、正規形をfelis window retarget --hostのみに。sshという語が felis サブコマンドに見える混同(#3 でも指摘)を解消。判定基準
felis --helpのトップレベル flags とfelis window retarget --help/felis ssh --helpの flags を並べたとき、ユーザが「どの--hostがどこに効くか」を推測できること。reference/control-surfaces.mdの placement criterion(window なし → CLI verb / window 自体 → window 名前空間)に照らして、carrier 指定の位置が一意に決まること。cli_completions.rsの carrier 解決が二重に持たずに済むこと(現行は__complete-sessionsが--host/--socket/--ssh-argを転送)。対象ファイル
crates/felis-cli/src/main.rs(Cli::host/ssh_argvsWindowOp::Retarget/Cmd::Ssh),crates/felis-cli/src/conn.rs,crates/felis-cli/src/cli_sessions.rs(RetargetCarrierFlags,RetargetArgs),docs/reference/cli.md,docs/reference/control-surfaces.md,docs/how-to/attach-over-ssh.mdcc @natsukium
Triaged as duplicate of #23. The global-carrier versus retarget-destination grammar must be decided together with the destination spelling and alias; #23 already owns that exact breaking CLI change and its generated-surface cascade. A separate issue would allow the two halves of one grammar to land inconsistently.