Skip to content

feat: update repository references from loft-sh to skevetter#264

Merged
skevetter merged 1 commit intomainfrom
replace-repo-references
Jan 11, 2026
Merged

feat: update repository references from loft-sh to skevetter#264
skevetter merged 1 commit intomainfrom
replace-repo-references

Conversation

@skevetter
Copy link
Owner

@skevetter skevetter commented Jan 11, 2026

Signed-off-by: Samuel K skevetter@pm.me

Summary by CodeRabbit

  • Refactor

    • Updated repository and provider references across the application and CLI
    • Updated application configuration for update endpoints
  • Documentation

    • Updated provider setup examples and guides
  • Tests

    • Updated test data to reflect repository changes

✏️ Tip: You can customize this high-level summary in your review settings.

Signed-off-by: Samuel K <skevetter@pm.me>
Copilot AI review requested due to automatic review settings January 11, 2026 01:37
@coderabbitai
Copy link

coderabbitai bot commented Jan 11, 2026

📝 Walkthrough

Walkthrough

This PR updates repository namespace references from "loft-sh" to "skevetter" across the codebase, affecting provider paths, update endpoints, example strings, and test data. No control flow or logic modifications are introduced—only string value updates across multiple layers.

Changes

Cohort / File(s) Summary
Provider Repository References
cmd/pro/login.go, cmd/provider/update.go, pkg/workspace/provider.go
Updated provider repository namespace from "loft-sh" to "skevetter" in login provider constant, provider update error message example, and default provider path prefix logic.
Update & Release Endpoints
desktop/src-tauri/src/updates.rs
Updated RELEASES_URL endpoint, FALLBACK_RELEASES_URL, and HTTP user-agent strings to reference "skevetter/devpod" instead of "loft-sh/devpod".
User Interface
desktop/src/views/Providers/AddProvider/SetupProviderSourceForm.tsx
Updated UI placeholder text example for custom provider input from "loft-sh/devpod-provider-terraform" to "skevetter/devpod-provider-terraform".
Upgrade Logic
pkg/upgrade/upgrade.go
Updated githubSlug for self-update checks from "loft-sh/devpod" to "skevetter/devpod".
Test Data
pkg/git/git_test.go
Updated test expectations in TestNormalizeRepository to reflect namespace change from "loft-sh" to "skevetter" across multiple test cases.
Documentation
docs/pages/managing-providers/add-provider.mdx
Updated GitHub provider example path in "From Github" section from "loft-sh/devpod-provider-terraform" to "skevetter/devpod-provider-terraform".

Estimated Code Review Effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 From loft-sh to skevetter we hop,
New paths and endpoints, never to stop!
References updated with care so fine,
Now all our providers in sync align! 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: updating repository references from loft-sh to skevetter across multiple files and components.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In @desktop/src-tauri/src/updates.rs:
- Around line 18-20: The fallback URL is identical to RELEASES_URL, so update
FALLBACK_RELEASES_URL (constant name) to a real alternative endpoint or remove
the fallback logic that uses it; locate the constants RELEASES_URL and
FALLBACK_RELEASES_URL and either set FALLBACK_RELEASES_URL to the intended
mirror (e.g., "https://update-server.devpod.sh/releases") or delete the fallback
usage in the code path that attempts the second fetch (the retry logic that
references FALLBACK_RELEASES_URL) so the code no longer retries the same URL.
🧹 Nitpick comments (1)
desktop/src-tauri/src/updates.rs (1)

269-271: User-Agent update is fine; consider conditional requests to reduce rate-limit pressure.
Using ETag/If-None-Match (or If-Modified-Since) would cut bandwidth and lower the chance of hitting GitHub API rate limits.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 731271d and 4796f8e.

📒 Files selected for processing (8)
  • cmd/pro/login.go
  • cmd/provider/update.go
  • desktop/src-tauri/src/updates.rs
  • desktop/src/views/Providers/AddProvider/SetupProviderSourceForm.tsx
  • docs/pages/managing-providers/add-provider.mdx
  • pkg/git/git_test.go
  • pkg/upgrade/upgrade.go
  • pkg/workspace/provider.go
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: CodeQL analysis (go)
  • GitHub Check: Agent
  • GitHub Check: Build CLI Binary on ubuntu-latest
  • GitHub Check: Build CLI Binary on windows-latest
  • GitHub Check: Build CLI Binary on macos-latest
  • GitHub Check: Lint
🔇 Additional comments (6)
cmd/provider/update.go (1)

48-50: Example path updated consistently.

desktop/src/views/Providers/AddProvider/SetupProviderSourceForm.tsx (1)

497-504: UI placeholder updated consistently with the new namespace.

docs/pages/managing-providers/add-provider.mdx (1)

71-73: Docs example updated consistently.

cmd/pro/login.go (1)

25-25: No action needed—providerRepo update is correct and isolated.

Verification confirmed no leftover provider source references. The loft-sh/ matches found are legitimate Loft infrastructure dependencies (API packages, Docker images, test data), not provider repository pointers. The constant update to skevetter/devpod is properly scoped.

pkg/upgrade/upgrade.go (1)

21-21: The githubSlug change is correct and functional.

The repository skevetter/devpod exists, is publicly accessible, and has active releases (latest: v0.8.12 with multiple platform assets). The GitHub API endpoints respond successfully, and DetectLatest, DetectVersion, and UpdateSelf will work as expected with this slug.

pkg/git/git_test.go (1)

43-44: Test fixture updates look consistent with the namespace move.

Also applies to: 75-76, 83-84, 91-92, 107-108, 123-124, 139-140

Comment on lines +18 to 20
const RELEASES_URL: &str = "https://api.github.com/repos/skevetter/devpod/releases";
const FALLBACK_RELEASES_URL: &str = "https://api.github.com/repos/skevetter/devpod/releases";

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, let's examine the updates.rs file to see the actual content at the specified lines
wc -l desktop/src-tauri/src/updates.rs

Repository: skevetter/devpod

Length of output: 96


🏁 Script executed:

# Read the file around lines 18-20
head -n 30 desktop/src-tauri/src/updates.rs | cat -n

Repository: skevetter/devpod

Length of output: 1369


🏁 Script executed:

# Also check around lines 296-309
sed -n '290,315p' desktop/src-tauri/src/updates.rs | cat -n

Repository: skevetter/devpod

Length of output: 1289


🏁 Script executed:

# Search for all occurrences of FALLBACK_RELEASES_URL and RELEASES_URL in the codebase
rg "FALLBACK_RELEASES_URL|RELEASES_URL" -n

Repository: skevetter/devpod

Length of output: 813


🏁 Script executed:

# Check the git history to see what the original URLs were
git log -p --all -- desktop/src-tauri/src/updates.rs | head -n 200

Repository: skevetter/devpod

Length of output: 42


Remove redundant fallback URL or point it to a real alternative.

Both RELEASES_URL and FALLBACK_RELEASES_URL (lines 18–19) are set to the same endpoint (https://api.github.com/repos/skevetter/devpod/releases). The fallback logic at lines 297–302 will always fail when the primary fails because it retries the identical URL. Either remove the fallback code path or update FALLBACK_RELEASES_URL to point to an alternative endpoint (e.g., the original https://update-server.devpod.sh/releases or another mirror).

🤖 Prompt for AI Agents
In @desktop/src-tauri/src/updates.rs around lines 18 - 20, The fallback URL is
identical to RELEASES_URL, so update FALLBACK_RELEASES_URL (constant name) to a
real alternative endpoint or remove the fallback logic that uses it; locate the
constants RELEASES_URL and FALLBACK_RELEASES_URL and either set
FALLBACK_RELEASES_URL to the intended mirror (e.g.,
"https://update-server.devpod.sh/releases") or delete the fallback usage in the
code path that attempts the second fetch (the retry logic that references
FALLBACK_RELEASES_URL) so the code no longer retries the same URL.

Comment on lines 207 to 213
// split by separator
splitted := strings.Split(strings.TrimSuffix(path, "/"), "/")
if len(splitted) == 1 {
path = "loft-sh/devpod-provider-" + path
path = "skevetter/devpod-provider-" + path
} else if len(splitted) != 2 {
return nil, nil, nil
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

skevetter devpod-provider GitHub repositories

💡 Result:

I couldn't find any GitHub repositories named devpod-provider under the user/organization "skevetter." The only related repo I can locate for that owner is the main devpod project (github.com/skevetter/devpod). [1][2]

Sources:
[1] pkg.go.dev listing for github.com/skevetter/devpod.
[2] DevPod docs (how providers are added from GitHub).


🌐 Web query:

loft-sh devpod-provider GitHub repositories organization transfer

💡 Result:

I searched GitHub and DevPod docs. Summary:

  • loft-sh currently hosts multiple DevPod provider repos (examples: loft-sh/devpod-provider-kubernetes, loft-sh/devpod-provider-aws) on GitHub. [1][2].
  • DevPod docs show providers are installed from GitHub repo names (e.g. loft-sh/devpod-provider-terraform) and reference using GitHub releases; there’s no public documentation showing an organization transfer of these provider repos. [3].

If you meant a specific repository (or a planned transfer to another GitHub org), tell me which repo and I’ll check its repo activity, issues/PRs, and any transfer notices.

Sources:
[1] loft-sh/devpod (GitHub).
[2] loft-sh/devpod-provider-kubernetes (GitHub).
[3] DevPod docs — Adding a Provider.


🌐 Web query:

skevetter/devpod-provider-ubuntu GitHub releases provider.yaml

💡 Result:

I can't find a GitHub repository named skevetter/devpod-provider-ubuntu or any releases for it. Do you mean a different repo (example: loft-sh/devpod-provider-ubuntu or your own fork)? Or do you want instructions for how to download a provider.yaml from a GitHub release URL?


🏁 Script executed:

cd /tmp && git clone --depth 1 https://github.com/skevetter/devpod 2>/dev/null || true
cd devpod && git log --oneline --all -- pkg/workspace/provider.go 2>/dev/null | head -20

Repository: skevetter/devpod

Length of output: 146


🏁 Script executed:

# Check the file content and look for git diff or context about the change
cd devpod && git show HEAD:pkg/workspace/provider.go 2>/dev/null | sed -n '200,220p'

Repository: skevetter/devpod

Length of output: 116


🏁 Script executed:

# Check recent changes to this specific area
cd devpod && git log -p --all -S "skevetter/devpod-provider" -- pkg/workspace/provider.go 2>/dev/null | head -80

Repository: skevetter/devpod

Length of output: 42


🏁 Script executed:

# List files in the repository to understand structure
git ls-files pkg/workspace/ | head -20

Repository: skevetter/devpod

Length of output: 272


🏁 Script executed:

# Examine the provider.go file directly
cat -n pkg/workspace/provider.go | sed -n '200,230p'

Repository: skevetter/devpod

Length of output: 1070


🏁 Script executed:

# Check git history for this specific change
git log --oneline --all -- pkg/workspace/provider.go | head -10

Repository: skevetter/devpod

Length of output: 618


🏁 Script executed:

# Look for any references to loft-sh in the file
rg "loft-sh" pkg/workspace/provider.go -n

Repository: skevetter/devpod

Length of output: 42


🏁 Script executed:

# Check if there are any other references to skevetter or provider org changes
rg "skevetter|loft-sh" --type go -l | head -20

Repository: skevetter/devpod

Length of output: 499


🏁 Script executed:

# Show the specific commit that changed loft-sh to skevetter
git show 4796f8ee:pkg/workspace/provider.go | sed -n '200,220p'

Repository: skevetter/devpod

Length of output: 669


🏁 Script executed:

# Get more details on that commit
git show 4796f8ee --stat | head -30

Repository: skevetter/devpod

Length of output: 1681


🏁 Script executed:

# Check if the commit message provides context
git log 4796f8ee --format=fuller -1

Repository: skevetter/devpod

Length of output: 388


🏁 Script executed:

# Let's check what the old code was before the change
git show 4796f8ee^:pkg/workspace/provider.go | sed -n '200,220p'

Repository: skevetter/devpod

Length of output: 99


🏁 Script executed:

# Also check if there are any other references to provider repos in docs or code
rg "devpod-provider" --type go --type md --type yaml -i | head -30

Repository: skevetter/devpod

Length of output: 1376


Shorthand provider resolution breaks with non-existent skevetter/devpod-provider-* repositories.

The code change replaces loft-sh/devpod-provider-<name> with skevetter/devpod-provider-<name>. However, the skevetter/devpod-provider-* repositories do not exist on GitHub, while the original loft-sh/devpod-provider-* repositories are active and maintained. This breaks shorthand installation for existing users without providing an upgrade path.

Implement a fallback mechanism: attempt skevetter/devpod-provider-<name> first, then fall back to loft-sh/devpod-provider-<name> if the download returns a 404. This preserves backward compatibility while supporting the new provider organization.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates repository references throughout the codebase from loft-sh to skevetter, effectively transitioning the project to use a forked repository infrastructure. This includes updating provider download paths, upgrade mechanisms, update URLs, error messages, test data, documentation examples, and UI placeholders.

Changes:

  • Updated default provider repository from loft-sh/devpod-provider-* to skevetter/devpod-provider-*
  • Changed upgrade and update mechanisms to fetch releases from skevetter/devpod repository
  • Updated documentation and UI examples to reflect new repository ownership

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
pkg/workspace/provider.go Updates default provider prefix for shorthand provider names
pkg/upgrade/upgrade.go Changes GitHub slug for version checking and upgrades
desktop/src-tauri/src/updates.rs Updates release URLs and user agent for desktop app updates
cmd/provider/update.go Updates example in error message
cmd/pro/login.go Changes provider repository constant
pkg/git/git_test.go Updates test data to use new repository references
docs/pages/managing-providers/add-provider.mdx Updates documentation example command
desktop/src/views/Providers/AddProvider/SetupProviderSourceForm.tsx Updates UI placeholder text

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

const UPDATE_POLL_INTERVAL: std::time::Duration = std::time::Duration::from_secs(60 * 10);
const RELEASES_URL: &str = "https://update-server.devpod.sh/releases";
const FALLBACK_RELEASES_URL: &str = "https://api.github.com/repos/loft-sh/devpod/releases";
const RELEASES_URL: &str = "https://api.github.com/repos/skevetter/devpod/releases";
Copy link

Copilot AI Jan 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The RELEASES_URL and FALLBACK_RELEASES_URL are now set to the same value. This removes the fallback mechanism that was previously in place. The original code used a custom update server (update-server.devpod.sh/releases) as the primary source and GitHub API as fallback. Now both URLs point to the GitHub API, which defeats the purpose of having a fallback URL. Consider either:

  1. Keeping different URLs for primary and fallback sources
  2. Removing one of these constants if they're meant to be identical
Suggested change
const RELEASES_URL: &str = "https://api.github.com/repos/skevetter/devpod/releases";
const RELEASES_URL: &str = "https://update-server.devpod.sh/releases";

Copilot uses AI. Check for mistakes.
@skevetter skevetter merged commit d97fe59 into main Jan 11, 2026
44 checks passed
@skevetter skevetter deleted the replace-repo-references branch January 11, 2026 02:21
@coderabbitai coderabbitai bot mentioned this pull request Feb 18, 2026
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.

2 participants