client-core: resolve a bare felis in keymap commands to the running client's sibling CLI #225
Labels
No labels
Area/ci
Area/cli
Area/client
Area/client-core
Area/daemon
Area/deps
Area/docs
Area/grid
Area/manual
Area/nix
Area/protocol
Area/pty
Area/render
Area/shaping
Area/skills
Area/transport
Area/vt
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Security
Kind/Testing
perf-regression-accepted
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Blocked
Status
Need More Info
Status
Upstream
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
felis-terminal/felis#225
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?
Problem
Keymap commands that drive felis itself are expected to keep growing:
runpickers overfelis sessions …, window launches via backgroundrun(#224),felis attach "$FELIS_ORIGIN_SESSION_ID". Every such binding must name the felis CLI. A client launched from Dock/Finder has launchd's minimalPATH, so a barefelisis not found. The workarounds are an upgrade-fragile store path, or a profile path that names whichever felis the profile has, not necessarily the build that is running.Direction (needs its own design)
Have a bare
felisin a keymap argv name the CLI that belongs to the running client. The precedent exists: the client finds its daemon beside its own executable before consultingPATH(sibling_daemonincrates/felis-client-core/src/spawn.rs), "so it runs the matching build instead of whatever a stray PATH offers". The macOS bundle already shipsfelisnext tofelis-clientandfelis-daemoninContents/MacOS(nix/make-macos-app.sh--cli).This is deliberately narrower than general PATH resolution, which #224 rejected because it re-implements the OS executable lookup. Here there is no PATH walk: either the sibling binary exists, or the argv is passed through unchanged.
Open questions:
felis; or put the client's own directory on the command'sPATH(this exposesfelis-client/felis-daemontoo, and in a sharedbindirectory it reorders every tool); or export the path as a variable (sh -conly).felis sessions …) also reach the sibling?bin/, Windows, and acargo buildtree where no siblingfelisexists.felisthat also inherits the window's--socket/--config/--host.Run
principle-checkbefore any code.