Skip to content

Replace loft-sh with Curity in the module path, app identifier and provider downloads - #39

Merged
renatoathaydes merged 4 commits into
mainfrom
claude/curity-module-path
Nov 9, 2026
Merged

renatoathaydes merged 4 commits into
mainfrom
claude/curity-module-path

Conversation

@renatoathaydes

Copy link
Copy Markdown
Collaborator

Removes the remaining loft-sh identity from the CLI and the desktop app.

Go module path

  • Renames the module from github.com/loft-sh/devpod to github.com/curityio/devpod (and dockerless/ to github.com/curityio/devpod/dockerless). This changes every import, so stack traces now show the new path.
  • Updates the -ldflags -X .../pkg/version.version settings in hack/rebuild.sh, hack/build-e2e.sh and the release workflow, and the go-licenses workflows. The go-licenses step that rewrote links is gone because it no longer did anything.
  • Changes the go_package in tunnel.proto and regenerates tunnel.pb.go. Only the descriptor's package path changes, so the wire protocol stays the same.

Desktop app identifier

  • sh.loft.devpod becomes io.curity.devpod (Tauri config, Info.plist, custom_protocol.rs, the Flatpak manifest and FLATPAK_ID), and the Windows publisher becomes Curity.
  • New identifier_migration.rs: on first start, the app copies the old sh.loft.devpod data, local data, log and WebKit directories to the new ones, skipping cache directories. The old directories are kept, so a PATH that points at the old CLI shims still works.
  • New NSIS installer-hooks.nsh: the installer finds an install made under Software\loft\DevPod, then removes that registry key. Not tested: makensis isn't available locally, and CI only builds the Windows installer on release tags.

Providers given by name

  • devpod provider add <name> downloads from curityio/devpod-provider-<name>. The providers that only exist under loft-sh so far are allowlisted in workspace.LoftProviders and still come from there: aws, azure, civo, digitalocean, dockerless, ecs, gcloud, kubernetes, ssh and terraform.
  • devpod provider list-available lists those providers plus the devpod-provider-* repositories in curityio. Before, it listed only the first 30 repositories of loft-sh.
  • TODO.md tracks migrating those providers and then deleting the allowlist.

Testing

  • go build ./..., go vet ./... and go test ./pkg/... ./cmd/... pass. There are new unit tests for the provider repository resolution, the available-providers list and the directory migration (cargo test).
  • go list -deps . | grep '^k8s.io/client-go/kubernetes' prints nothing.

🤖 Generated with Claude Code

renatoathaydes and others added 4 commits November 6, 2026 21:13
The module path was still upstream's github.com/loft-sh/devpod, so stack
traces and -ldflags -X settings showed loft-sh. Rename it, and the
dockerless module, to github.com/curityio/devpod, and update the build
scripts, release and license workflows, and the gRPC go_package (the
generated code only changes in its embedded package path, so the wire
protocol is unchanged).

The desktop app identifier sh.loft.devpod stays, as it is tied to the
devpod:// deep links, the Flatpak id and existing installs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The desktop app still used upstream's sh.loft.devpod identifier. Use
io.curity.devpod instead (io.curity.devpod.for.devpod.devs for dev
builds), in the Tauri config, Info.plist, the deep link code, the
Flatpak manifest and metainfo, and the FLATPAK_ID passed to the CLI, and
make Curity the Windows publisher.

Tauri names the app's data directories after the identifier, so on its
first start the app copies the old directories (settings and provider
stores, logs, the Windows CLI shims and the webview's storage) to the
new ones. They are copied, not moved, so that a Windows PATH pointing at
the old CLI shims keeps working.

The Windows installer looks for the installed version's folder under
Software\<publisher>\DevPod, which used to be Software\loft\DevPod. An
installer hook copies that key to Software\Curity\DevPod before the
pages are shown, so that upgrading can still uninstall the old version,
and removes the old key after installing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A provider given by its name alone (devpod provider add <name>) was
always downloaded from loft-sh/devpod-provider-<name>, so a mistyped or
unknown name showed loft-sh in the error. Download it from
curityio/devpod-provider-<name> instead, except for the providers that
so far only exist under loft-sh (aws, azure, civo, digitalocean,
dockerless, ecs, gcloud, kubernetes, ssh and terraform), which are kept
in the LoftProviders whitelist until they're migrated (see TODO.md).

devpod provider list-available listed only the first 30 loft-sh
repositories, as "providers from loft". It now lists the whitelisted
providers and the devpod-provider-* repositories of curityio.

The provider update error and the desktop app's provider source
placeholder no longer use loft-sh examples.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Updating its imports to the new module path also ran a newer gofmt over it,
which reindented a return statement in a way that the goimports in
golangci-lint v1.60.1 rejects. Restore the formatting from main and keep only
the import path change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@renatoathaydes
renatoathaydes merged commit db64289 into main Nov 9, 2026
23 checks passed
@renatoathaydes
renatoathaydes deleted the claude/curity-module-path branch November 9, 2026 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant