diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index fd1cca7..88b55f4 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: - name: Report a security vulnerability - url: https://github.com/zongqichen/cfs/security/advisories/new + url: https://github.com/zongqichen/cloud-foundry-cli-contexts/security/advisories/new about: Report security issues privately. Never include credentials in a public issue. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e374f68..9f2dd63 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ permissions: jobs: release: - if: github.repository == 'zongqichen/cfs' + if: github.repository == 'zongqichen/cloud-foundry-cli-contexts' runs-on: ubuntu-latest timeout-minutes: 30 environment: release diff --git a/CHANGELOG.md b/CHANGELOG.md index f83aa05..58413b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ contract may still change while cfs is pre-1.0. ## [Unreleased] +### Changed + +- Renamed the canonical repository to `cloud-foundry-cli-contexts` for clearer + discovery while preserving the `cfs` command and original Go module path. + ## [0.3.0] - 2026-09-23 ### Added @@ -93,8 +98,8 @@ contract may still change while cfs is pre-1.0. - Linux and macOS release builds, checksums, provenance, CI, smoke tests, and an Apache-2.0 license. -[Unreleased]: https://github.com/zongqichen/cfs/compare/v0.3.0...HEAD -[0.3.0]: https://github.com/zongqichen/cfs/compare/v0.2.0...v0.3.0 -[0.2.0]: https://github.com/zongqichen/cfs/compare/v0.1.1...v0.2.0 -[0.1.1]: https://github.com/zongqichen/cfs/compare/v0.1.0...v0.1.1 -[0.1.0]: https://github.com/zongqichen/cfs/releases/tag/v0.1.0 +[Unreleased]: https://github.com/zongqichen/cloud-foundry-cli-contexts/compare/v0.3.0...HEAD +[0.3.0]: https://github.com/zongqichen/cloud-foundry-cli-contexts/compare/v0.2.0...v0.3.0 +[0.2.0]: https://github.com/zongqichen/cloud-foundry-cli-contexts/compare/v0.1.1...v0.2.0 +[0.1.1]: https://github.com/zongqichen/cloud-foundry-cli-contexts/compare/v0.1.0...v0.1.1 +[0.1.0]: https://github.com/zongqichen/cloud-foundry-cli-contexts/releases/tag/v0.1.0 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index ec6263b..b79321f 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -48,7 +48,7 @@ officially representing the community in public spaces. ## Enforcement Report unacceptable behavior privately through the repository's -[private report form](https://github.com/zongqichen/cfs/security/advisories/new) +[private report form](https://github.com/zongqichen/cloud-foundry-cli-contexts/security/advisories/new) and prefix the title with `Conduct:`. Reports will be reviewed promptly and fairly, and the privacy and security of reporters will be respected. diff --git a/README.md b/README.md index 244dafb..2de886e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # cfs: isolated Cloud Foundry CLI contexts -[![CI](https://github.com/zongqichen/cfs/actions/workflows/ci.yml/badge.svg)](https://github.com/zongqichen/cfs/actions/workflows/ci.yml) -[![Release](https://img.shields.io/github/v/release/zongqichen/cfs?include_prereleases&sort=semver)](https://github.com/zongqichen/cfs/releases) +[![CI](https://github.com/zongqichen/cloud-foundry-cli-contexts/actions/workflows/ci.yml/badge.svg)](https://github.com/zongqichen/cloud-foundry-cli-contexts/actions/workflows/ci.yml) +[![Release](https://img.shields.io/github/v/release/zongqichen/cloud-foundry-cli-contexts?include_prereleases&sort=semver)](https://github.com/zongqichen/cloud-foundry-cli-contexts/releases) [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) Run independent Cloud Foundry CLI targets in parallel. @@ -19,7 +19,7 @@ targets. ## Quick start Install the [official CF CLI](https://github.com/cloudfoundry/cli), then download -`cfs` from [GitHub Releases](https://github.com/zongqichen/cfs/releases) or build +`cfs` from [GitHub Releases](https://github.com/zongqichen/cloud-foundry-cli-contexts/releases) or build it with Go 1.26.8+: ```sh @@ -27,6 +27,9 @@ go install github.com/zongqichen/cfs/cmd/cfs@latest cfs setup ``` +The Go module keeps its original `github.com/zongqichen/cfs` path for +compatibility. + Prebuilt binaries support Linux and macOS on x86-64 and arm64. Put the shim directory printed by `cfs setup` first on `PATH`, open a new shell, and run `cfs doctor`. @@ -122,7 +125,7 @@ discover existing contexts, fail closed on ambiguity, and preserve user authorization. Install it for Codex, Claude Code, or another supported agent: ```sh -npx skills add zongqichen/cfs --skill cfs +npx skills add zongqichen/cloud-foundry-cli-contexts --skill cfs ``` To make invocation explicit, add `Use $cfs for Cloud Foundry context diff --git a/SECURITY.md b/SECURITY.md index 4fed872..9b8bb3f 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -8,7 +8,7 @@ fixes are not routinely backported to earlier releases. ## Reporting a vulnerability Please do not open a public issue for a suspected vulnerability. Use the -[private vulnerability reporting form](https://github.com/zongqichen/cfs/security/advisories/new). +[private vulnerability reporting form](https://github.com/zongqichen/cloud-foundry-cli-contexts/security/advisories/new). Include the affected version, operating system, reproduction steps, and the expected security impact. Do not include live Cloud Foundry credentials, access diff --git a/docs/releasing.md b/docs/releasing.md index 23c8f89..655f103 100644 --- a/docs/releasing.md +++ b/docs/releasing.md @@ -86,6 +86,10 @@ but does not publish GitHub archives on its own: $ go install github.com/zongqichen/cfs/cmd/cfs@v0.1.0 ``` +The Go module intentionally keeps its original `github.com/zongqichen/cfs` +path after the repository rename. Changing it would break existing installation +and update paths. + After pushing the immutable tag and manually running the Release workflow, request it through the public Go proxy: diff --git a/internal/app/command_update_test.go b/internal/app/command_update_test.go index 0a0db6c..e8b638e 100644 --- a/internal/app/command_update_test.go +++ b/internal/app/command_update_test.go @@ -24,7 +24,7 @@ func TestUpdateReportsAvailableRelease(t *testing.T) { } for _, expected := range []string{ "Update available: 0.2.0 -> 0.3.0", - "https://github.com/zongqichen/cfs/releases/tag/v0.3.0", + "https://github.com/zongqichen/cloud-foundry-cli-contexts/releases/tag/v0.3.0", "go install github.com/zongqichen/cfs/cmd/cfs@v0.3.0", "cfs setup", "cfs doctor", @@ -226,7 +226,7 @@ func availableUpdate() updatecheck.Result { LatestVersion: "0.3.0", UpdateAvailable: true, Status: updatecheck.StatusUpdateAvailable, - ReleaseURL: "https://github.com/zongqichen/cfs/releases/tag/v0.3.0", + ReleaseURL: "https://github.com/zongqichen/cloud-foundry-cli-contexts/releases/tag/v0.3.0", Commands: []string{ "go install github.com/zongqichen/cfs/cmd/cfs@v0.3.0", "cfs setup", diff --git a/internal/updatecheck/updatecheck.go b/internal/updatecheck/updatecheck.go index 17bf1b2..d267483 100644 --- a/internal/updatecheck/updatecheck.go +++ b/internal/updatecheck/updatecheck.go @@ -19,7 +19,7 @@ import ( ) const ( - DefaultEndpoint = "https://api.github.com/repos/zongqichen/cfs/releases?per_page=100" + DefaultEndpoint = "https://api.github.com/repos/zongqichen/cloud-foundry-cli-contexts/releases?per_page=100" DefaultCheckInterval = 24 * time.Hour DefaultHTTPTimeout = 3 * time.Second @@ -27,7 +27,8 @@ const ( cacheFileName = "update-check.json" cacheReadLimit = 64 * 1024 responseReadLimit = 1024 * 1024 - repositoryReleaseURL = "https://github.com/zongqichen/cfs/releases/tag/" + repositoryReleaseURL = "https://github.com/zongqichen/cloud-foundry-cli-contexts/releases/tag/" + goInstallPackage = "github.com/zongqichen/cfs/cmd/cfs" ) type Status string @@ -225,7 +226,7 @@ func compare(currentVersion, latestVersion string) Result { result.Status = StatusUpdateAvailable result.UpdateAvailable = true result.Commands = []string{ - "go install github.com/zongqichen/cfs/cmd/cfs@" + latest, + "go install " + goInstallPackage + "@" + latest, "cfs setup", "cfs doctor", } diff --git a/internal/updatecheck/updatecheck_test.go b/internal/updatecheck/updatecheck_test.go index 055c31b..092a853 100644 --- a/internal/updatecheck/updatecheck_test.go +++ b/internal/updatecheck/updatecheck_test.go @@ -59,6 +59,21 @@ func TestCheckSelectsHighestPublishedSemanticVersion(t *testing.T) { } } +func TestRepositoryLocationsKeepGoInstallCompatibility(t *testing.T) { + const canonicalRepository = "zongqichen/cloud-foundry-cli-contexts" + if !strings.Contains(DefaultEndpoint, canonicalRepository) { + t.Fatalf("default endpoint = %q, want canonical repository", DefaultEndpoint) + } + + result := compare("0.2.0", "v0.3.0") + if !strings.Contains(result.ReleaseURL, canonicalRepository) { + t.Fatalf("release URL = %q, want canonical repository", result.ReleaseURL) + } + if got, want := result.Commands[0], "go install github.com/zongqichen/cfs/cmd/cfs@v0.3.0"; got != want { + t.Fatalf("install command = %q, want %q", got, want) + } +} + func TestCompareVersionStates(t *testing.T) { tests := []struct { name string