feat: update repository references from loft-sh to skevetter#264
feat: update repository references from loft-sh to skevetter#264
Conversation
Signed-off-by: Samuel K <skevetter@pm.me>
📝 WalkthroughWalkthroughThis 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
Estimated Code Review Effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
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. Comment |
There was a problem hiding this comment.
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
📒 Files selected for processing (8)
cmd/pro/login.gocmd/provider/update.godesktop/src-tauri/src/updates.rsdesktop/src/views/Providers/AddProvider/SetupProviderSourceForm.tsxdocs/pages/managing-providers/add-provider.mdxpkg/git/git_test.gopkg/upgrade/upgrade.gopkg/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—providerRepoupdate 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 toskevetter/devpodis properly scoped.pkg/upgrade/upgrade.go (1)
21-21: ThegithubSlugchange is correct and functional.The repository
skevetter/devpodexists, is publicly accessible, and has active releases (latest: v0.8.12 with multiple platform assets). The GitHub API endpoints respond successfully, andDetectLatest,DetectVersion, andUpdateSelfwill 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
| 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"; | ||
|
|
There was a problem hiding this comment.
🧩 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.rsRepository: 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 -nRepository: 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 -nRepository: 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" -nRepository: 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 200Repository: 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.
| // 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 | ||
| } |
There was a problem hiding this comment.
🧩 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 -20Repository: 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 -80Repository: skevetter/devpod
Length of output: 42
🏁 Script executed:
# List files in the repository to understand structure
git ls-files pkg/workspace/ | head -20Repository: 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 -10Repository: 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 -nRepository: 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 -20Repository: 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 -30Repository: skevetter/devpod
Length of output: 1681
🏁 Script executed:
# Check if the commit message provides context
git log 4796f8ee --format=fuller -1Repository: 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 -30Repository: 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.
There was a problem hiding this comment.
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-*toskevetter/devpod-provider-* - Changed upgrade and update mechanisms to fetch releases from
skevetter/devpodrepository - 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"; |
There was a problem hiding this comment.
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:
- Keeping different URLs for primary and fallback sources
- Removing one of these constants if they're meant to be identical
| const RELEASES_URL: &str = "https://api.github.com/repos/skevetter/devpod/releases"; | |
| const RELEASES_URL: &str = "https://update-server.devpod.sh/releases"; |
Signed-off-by: Samuel K skevetter@pm.me
Summary by CodeRabbit
Refactor
Documentation
Tests
✏️ Tip: You can customize this high-level summary in your review settings.