client-core: resolve pipe file sinks against config.toml #337
No reviewers
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
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis!337
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-335"
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?
Closes #335.
A
pipebinding's{ file = "<path>" }sink was the one file-valued config key carried into the runtime action verbatim, so where it wrote depended on the window's working directory. It now resolves at config load likeshader.post.file: config-directory-relative,~/expanded, absolute paths untouched. A document parsed from text (no file behind it) keeps the documented working-directory rule.Decision: the last comment on #335 (six rounds of independent design review). Code review: pi luna (one blocker,
~/alone was not expanded; fixed with a test) then pi sol (PASS).Docs:
keybindings.md,config.md,control-surfaces.md(existing decision now names the pipe sink),CHANGELOG.md, regenerated config schema.A `pipe` binding's `target = { file = "..." }` was the one file-valued config key carried into the runtime action verbatim, so the same durable config wrote to a different place depending on which working directory the window was launched from: a launcher, a WM keybinding and a shell all give different answers, and none of them is the focused session's directory. The rule every other file-valued key already follows is the one recorded in control-surfaces.md, so the sink now resolves at config load like `shader.post.file`: `~/` expands, an absolute path is taken as written, and a relative one lands beside the config that names it. `resolve_path` runs in the config layer rather than in `into_target`, because `keymap` compiles without the `native` feature while the home directory lookup does not. `PipeSink::File` and `PipeTarget::File` therefore carry a `PathBuf`, which keeps a resolved path lossless for a config directory that is not UTF-8. Assisted-by: Claude Code