feat(registry): beta enablement + interactive wizards + active-profile fix#49
Merged
Conversation
…ve wizards Promote the registry command tree from env-gated pre-release to beta: - Remove the VERDA_REGISTRY_ENABLED gate; register unconditionally and mark "(beta)" in `verda --help` via the shared cmdutil.TagAnnotation. - Resolve the active profile (resolveProfile: explicit --profile > VERDA_PROFILE/auth.profile > "default") across all subcommands, so reads follow `verda auth use` like the rest of the CLI; --profile defaults to "". - configure: wizard profile picker + manual name/secret entry, wired --docker-config, overwrite-confirm guard, trimmed help. - ls: action-menu drill-down (Get pull URL / Delete) with a filterable tag picker; falls back to the Docker v2 tag list when Harbor's artifacts API is denied; graceful access-denied handling. - tags: interactive tag picker on a TTY (table when piped / -o json); bare `tags` points to `ls`. - copy: interactive wizard (source/access/scope/destination/confirm). - push: no-daemon fallback (source type -> path -> repo/tag) instead of erroring. - delete: exit cleanly on access_denied instead of looping. - Rename `login` -> `configure-docker` (alias `login`). Fixes: interactive pickers use cmd.Context() not the per-request timeout (no mid-prompt cancel); --src-auth basic validates --src-username before reading stdin (no lost one-shot secret). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The docker-config read is from the test's own temp dir; same //nolint:gosec pattern already used in s3/browse_test.go. Fixes the gosec CI job (golangci-lint --no-config --default=none -E gosec ./...). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Summary
Promotes the
verda registrycommand tree from an env-gated pre-release to beta, and brings every subcommand's TUI in line with thes3command's interactive design. Driven by hands-on testing against a live VCR project — including diagnosing the credential permission model (robot creds can list repos + Docker v2 tags but are often denied Harbor's artifacts API).What changed
Enablement & profiles
VERDA_REGISTRY_ENABLEDgate — registry registers unconditionally and showsregistry (beta)inverda --helpvia the sharedcmdutil.TagAnnotation.resolveProfile: explicit--profile>VERDA_PROFILE/auth.profile>default) across all subcommands, so reads followverda auth uselike the rest of the CLI. Fixes the reportedregistry_credential_expiredwhereconfigurewrote to the active profile but reads hardcodeddefault.--profilenow defaults to"".Interactive wizards (aligned with s3)
vcr-{project_id}+name) alongside the docker-login paste path; wires--docker-config; overwrite-confirm guard when a profile already holds creds; trimmed Long help.access_denied; graceful access-denied handling instead of an error loop.-o json); baretagsreturns a friendly error pointing totags <repo>/ls.s3 cp, running the same pipeline as the flag path on confirm.access_deniedinstead of looping.login→configure-docker(aliasloginretained) for clarity.Bug fixes
cmd.Context()rather than the short per-request--timeout, so prompts no longer get canceled mid-input.--src-auth basicvalidates--src-usernamebefore reading stdin, so a one-shot piped secret isn't drained on the error path.Testing
make test(go test + golangci-lint) green; pre-commit hooks (gofmt/goimports/golangci-lint/unit tests) pass./code-review,adversarial-branch-reviewer, Codex) — confirmed findings fixed.Notes
CLAUDE.mddoc updates are intentionally excluded from this commit (kept local); the user-facingregistry/README.mdis included.🤖 Generated with Claude Code