Repository navigation
feat: edit a shared secret everywhere, repo links, agent dry runs - #387
Merged
Merged
Conversation
One shared matcher (the capy secrets search rule) and searchable single and multi-select prompts for the capy setup, org, Dokploy, Vercel, invite and users pickers. Existing hotkeys are unchanged; the invite checkbox starts search with /.
Removes the global --web option and every web-only path and screen. Browser pages opened without --web (deploy pages, login callback) stay. Passing --web now refuses with WEB_MODE_REMOVED (exit 1). capy add drops --reason, --help-url and --no-open.
feat!: remove the --web browser screens
feat: type-to-filter in every project picker
The searchable pickers import @inquirer/core directly. It was already installed as an inquirer dependency at the same version; check:screens only needs it listed.
Repo links (CLI side of capysc/capy#603): the CLI reports each project's origin repo and repo-relative keep.lock folder (also from capy run), warns on KEEP_LOCK_REPO_MISMATCH, and capy projects --json lists repos. REPO_LINKS_UNSUPPORTED when the server predates it. capy secrets multi edit: open a row (ctrl+e, or e in details) into an Old value / New value dialog (ctrl+r reveals both), pick locations and repos in tables (◉/◯), push every location and open one keep.lock PR per repo on its default branch. capy secrets --dry-run walks the same flow and changes nothing. Pushes run 6 at a time and PRs 4 at a time, with one key unlock per run, pacing on RateLimit-Remaining and 429 retries (RATE_LIMITED, GITHUB_RATE_LIMITED). Every GitHub and Capy call is time-bounded (GITHUB_TIMEOUT) and ctrl+c stops after the items in flight. capy secrets set NAME is the agent form: value on stdin only, --row/--all-rows/--exclude/--no-pr-for/--no-pr, --dry-run plan with a plan_id, and a required --confirm <plan_id> (PLAN_CONFIRM_REQUIRED, PLAN_CHANGED, SECRET_AMBIGUOUS). capy edit NAME, capy add NAME and capy remove honour --dry-run on their agent paths and refuse it (DRY_RUN_UNSUPPORTED) on the interactive screens; capy help --json marks supportsDryRun.
On CI's Linux runner an earlier batch file left process.stdout.isTTY unassignable, so terminalQr.test.ts failed with "readonly property". Run it in its own process, set the TTY fields with defineProperty, and make the dryRunInteractive and secretsCommand stubs writable and restored.
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.
feat: edit a shared secret everywhere, repo links, agent dry runs
Repo links (CLI side of capysc/capy#603): the CLI reports each
project's origin repo and repo-relative keep.lock folder (also from
capy run), warns on KEEP_LOCK_REPO_MISMATCH, and capy projects --json
lists repos. REPO_LINKS_UNSUPPORTED when the server predates it.
capy secrets multi edit: open a row (ctrl+e, or e in details) into an
Old value / New value dialog (ctrl+r reveals both), pick locations and
repos in tables (◉/◯), push every location and open one keep.lock PR
per repo on its default branch. capy secrets --dry-run walks the same
flow and changes nothing. Pushes run 6 at a time and PRs 4 at a time,
with one key unlock per run, pacing on RateLimit-Remaining and 429
retries (RATE_LIMITED, GITHUB_RATE_LIMITED). Every GitHub and Capy call
is time-bounded (GITHUB_TIMEOUT) and ctrl+c stops after the items in
flight.
capy secrets set NAME is the agent form: value on stdin only,
--row/--all-rows/--exclude/--no-pr-for/--no-pr, --dry-run plan with a
plan_id, and a required --confirm <plan_id> (PLAN_CONFIRM_REQUIRED,
PLAN_CHANGED, SECRET_AMBIGUOUS).
capy edit NAME, capy add NAME and capy remove honour --dry-run on their
agent paths and refuse it (DRY_RUN_UNSUPPORTED) on the interactive
screens; capy help --json marks supportsDryRun.