chore: update install.sh URL to vellum.ai and clean up old user-hosted onboarding logic#16798
Conversation
…d onboarding logic - Update all install.sh references from assistant.vellum.ai to vellum.ai - Update production VELLUM_PLATFORM_URL fallback to vellum.ai - Remove CloudCredentialsStepView.swift (replaced by inline cloud fields in APIKeyStepView) - Remove dead code ModelSelectionStepView.swift (unused in onboarding flow) - Show inline cloud credential fields for all paths, not just managed sign-in - Simplify onboarding flow to always be 3 steps (WakeUp -> APIKey -> ImproveExperience) - Remove needsCloudCredentials property and related branching - Update primaryButtonDisabled to validate cloud fields inline - Simplify saveAndContinue to use showHostingSelector for cloud provider selection Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
⚙️ Control Options:
|
- Bump currentFlowVersion to 10 so users upgrading from old step layout get their persisted step reset instead of landing on a stale index - Add primaryButtonDisabled guard to onSubmit handler to prevent Enter from bypassing cloud credential field validation Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f2d25ab94b
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| saveModelToConfig("claude-opus-4-6") | ||
| state.advance() |
There was a problem hiding this comment.
Validate cloud credentials before advancing on submit
After moving cloud credentials inline, primaryButtonDisabled enforces those fields, but saveAndContinue() now advances as long as the API key is non-empty. The API-key SecureField still calls saveAndContinue() on submit, so pressing Enter in GCP/AWS/custom modes can skip required cloud credential input and continue to hatching with incomplete config. Add equivalent credential validation inside saveAndContinue() (or gate the submit path) so keyboard submit cannot bypass the disabled-button checks.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Already addressed in 1373863 — the onSubmit handler now has guard !primaryButtonDisabled else { return } before calling saveAndContinue(), preventing Enter from bypassing cloud credential validation.
| case 2: | ||
| if state.needsCloudCredentials { | ||
| CloudCredentialsStepView(state: state) | ||
| } else { | ||
| ImproveExperienceStepView(state: state) | ||
| } | ||
| case 3: | ||
| ImproveExperienceStepView(state: state) |
There was a problem hiding this comment.
Bump flow version when reassigning step 2 content
Step 2 now goes straight to ImproveExperienceStepView, but persisted onboarding state is only reset when onboarding.flowVersion changes in OnboardingState.init. Because this commit changes the meaning of step 2 without bumping the flow version, users resumed from the old user-hosted flow at step 2 (previously CloudCredentials) will skip the new inline credential step and can finish onboarding with missing cloud settings. Increment the flow version (or remap legacy saved steps) to avoid restoring users into the wrong stage.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Already addressed in 1373863 — currentFlowVersion was bumped from 9 to 10, so users with persisted state from the old layout will get reset to step 0.
There was a problem hiding this comment.
🚩 QR code auto-detection from XDG path was not ported from deleted CloudCredentialsStepView
The deleted CloudCredentialsStepView.swift had auto-detection logic (lines 76-86) that checked for a QR code PNG at $XDG_DATA_HOME/vellum/pairing-qr/initial.png and pre-populated state.customQRCodeImageData. This logic was NOT ported to the new inline APIKeyStepView or its cloud fields extension. The onAppear in APIKeyStepView.swift:130-158 only restores file names from existing state but doesn't auto-detect from the filesystem path.
This means users who ran fetch-qr-code.sh before opening the app will no longer have the QR code auto-populated — they'll need to manually select it via the file picker. This may be intentional (simplification) or an oversight.
(Refers to lines 130-158)
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
Acknowledged — the QR code auto-detection from the XDG path was intentionally not ported. This is called out in the PR description under Notes. If the feature is desired in the inline flow, it can be added separately.
…OnboardingState These properties are no longer referenced — each view reads the flags directly from MacOSClientFeatureFlagManager.shared via local computed properties. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
📦 macOS DMG artifact for this PR is ready for download: Download vellum-assistant-pr-16798.dmg |
Summary
Two changes following the merge of #16668:
1. Update install.sh domain from
assistant.vellum.ai→vellum.aiAll references to the install script URL and the production
VELLUM_PLATFORM_URLfallback now usevellum.ai. Thedev-assistant.vellum.aidev URLs are intentionally unchanged. Affected files:install.sh,hatch.ts,gcp.ts,AssistantCli.swift,APIKeyStepView+CloudFields.swift,fetch-qr-code.sh.2. Remove old user-hosted onboarding flow in favor of the new inline approach
PR #16668 introduced inline cloud credential fields within
APIKeyStepViewfor themanaged_sign_in_enabledpath. This PR promotes that inline approach to be the only path, removing the old separate-stepCloudCredentialsStepView:CloudCredentialsStepView.swift— replaced by inline fields inAPIKeyStepView+CloudFields.swiftModelSelectionStepView.swift— dead code, not referenced in any onboarding flowOnboardingFlowView— removed step 2/3 branching for cloud credentials; flow is now always WakeUp → APIKey → ImproveExperience (3 steps) or WakeUp → APIKey+Hatch (2 steps for managed)APIKeyStepView—showInlineCloudFieldsno longer gated behindmanagedSignInEnabled;primaryButtonDisablednow validates cloud fields inline;saveAndContinuesimplifiedneedsCloudCredentialsfromOnboardingStateand all consumersuserHostedEnabledandmanagedSignInEnabledonOnboardingState(each view reads the flag directly fromMacOSClientFeatureFlagManager.shared)currentFlowVersionto 10 — users upgrading from the old 4-step layout get their persisted step reset to 0 instead of landing on a stale index with empty credentialsprimaryButtonDisabledguard toonSubmit— pressing Enter on the API key field in the non-managed path now checks cloud credential validationThe
user_hosted_enabledflag itself is preserved — it still controls which hosting modes appear in the selector viaAPIKeyStepView.availableHostingModes.Review & Testing Checklist for Human
CloudCredentialsStepView.swift,ModelSelectionStepView.swift) and the removal ofneedsCloudCredentials,userHostedEnabled,managedSignInEnabledfromOnboardingState.user_hosted_enabledON — select GCP/AWS/Custom hosting mode on the APIKey screen and confirm inline cloud fields appear and validate correctly before "Continue" is enabled. Previously this was a separate step; now it's inline. Also try pressing Enter with empty cloud fields to verify theonSubmitguard works.user_hosted_enabledOFF — confirm the flow is unchanged: just an API key field with no hosting selector, 3 steps total.vellum.ai/install.shserves the install script — the productionVELLUM_PLATFORM_URLfallback changed fromassistant.vellum.aitovellum.ai. This URL is also used byhatch.tsfor remote startup scripts andgcp.tsfor curl failure recovery.Notes
CloudCredentialsStepViewhad QR code auto-detection from the XDG data path (~/.local/share/vellum/pairing-qr/initial.png). The new inline fields inAPIKeyStepView+CloudFields.swiftdo not have this auto-detection. If this feature is desired, it would need to be ported separately.Link to Devin session: https://app.devin.ai/sessions/cbf1fb8ff4af492f8ee8f872304beea3
Requested by: @dvargas92495