feat(cli): add the --config launch option #87
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
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis!87
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/config-path-flag-27"
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?
Fixes #27.
A one-off launch could not name its own
config.toml. This adds oneroot flag,
felis --config PATH, that reaches window launches (theresolved absolute path is forwarded to the frontend, which watches it
for live reloads too), the
config path|check|show-effectiveverbs,and
doctor. A relative path is resolved in the front door and onlythere, because the window it launches runs elsewhere and cannot
recover what the user meant.
felis-client-corenow distinguishes a selected config from thedefault one: a file missing at the default location stays the
first-run "use the defaults" case, while a selection that is not
there is a
missing_fileerror. The verbs that read no config filerefuse the flag at exit
2rather than ignoring it, the same way theyalready refuse the carrier globals. There is no environment-variable
spelling: felis stamps the spawning environment into every session, so
one set for a launch would redirect the
felis configruns insidethat window too.
Doc cascade:
docs/reference/cli.md(global options, theconfigverb exit codes, the frontend exec contract),
docs/reference/config.md(discovery, themissing_filediagnostic,the absent/unreadable-file table),
docs/explanation/architecture/control-surfaces.md(why one flag andno env var),
docs/reference/control-surfaces.md,docs/reference/testing.md,docs/backlog.md,CHANGELOG.md, andthe product-shipped
skills/felis/SKILL.md.Rebased onto current
main; the stacked parent (#23) is already inmain, and thefelis versionverb that landed meanwhile was foldedinto the no-config verb list, its refusal test, and the docs.
Verified: just check green (fmt, clippy, nextest, deny); reviewed by
plan/correctness/docs lenses and pi sol
Deferred
describe_config_sourcehelper plus the "selected by --config"phrasing in doctor's config row and
config path's human output —no acceptance criterion needs the wording; the selected absolute
path is already reported by every consumer.
failure for the GUI client (it currently warns and falls back to
defaults, as
loadalways has) — no criterion covers GUI startupbehavior, and changing it would alter the stay-alive-on-a-typo
contract.
forwarded file — needs a real winit/wgpu session; the forwarding is
pinned at the argv level by
a_relative_config_selection_is_forwarded_absoluteinstead.implemented — already on the implementer's deferred list with the
same reasoning: no acceptance criterion requires the wording, and
the selected absolute path is already reported by every consumer.
sessions/notifications--helpstill advertisesshort_idfields the JSON no longer emits — traces to commit 5da5427d
("Refs #23"), stacked below issue #27's commits but not part of
them; out of scope for the
--configflag acceptance criteria.dropped, leaving the target pending forever — traces to commit
5b2f709e, an unrelated switch/queued-landing feature stacked below
issue #27's commits; not part of this issue's scope.
--helptext still advertisesshort_idfields removed fromthese replies — duplicate of the
short_idfinding; traces tocommit 5da5427d ("Refs #23"), out of scope for issue #27.
felis sshalias this same branchremoves — traces to commits 5da5427d/f1509a33 ("Refs #23"), stacked
below issue #27's commits; not part of the
--configflag work thisround is reviewing.
felis-clientaccepts or honors--config; onlythe sender side of the exec contract is pinned — no acceptance
criterion names a required GUI-side unit test by number, and the
implementer's own deferred list already excludes the stronger
end-to-end version of this same gap as needing a real winit/wgpu
session; a lighter parse-level test is the same class of extra
hardening, not a demonstrated wrong output.