refactor(web): share one setup wizard and finish Antigravity setup from model pickers - #479
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
Welcome, Add provider, Publish repository, Pylon Connect and SnapShot setup now share WizardPopup, WizardHeader, WizardSteps, WizardPanel and WizardFooter. The duplicate ui/wizard-steps stepper from window capture is removed. Pylon adaptations kept: the Pylon mark and "Set up Pylon" title in the welcome wizard, Pylon Connect copy, Add provider's multiple-instance blocking and Prime guidance, Pylon SnapShots copy, useThreadShell and the repository open-link error toast in GitActionsControl. Adopted from 3faeee49ac67dfd9534369f1e1c627c0356b75ac (#10832)
…nner A provider that needs setup (Antigravity, or any provider whose server reports it can install or sign in) now offers "Open provider setup" in the model picker, the provider status banner, and the composer's no-provider button. The link opens Settings -> Providers on that device with the instance selected, and says so when the device or instance is gone. Pickers wired: composer, Settings -> Projects machine and project default model, text generation model and source control writer model. Pylon keeps its composer instance selection (it now reports the unavailable requested instance), Prime's single-model message, locked continuation checks and the explicit-unavailability banner. Adopted from 06336460c9988f29c71e839c4c9c840c4552e077 (#9348) (provider setup link, route target and status messages only) Adopted from 9f40b2f563c662b43887b11ff99c466fe871c1af (#9754) (project defaults picker hook-up)
…ind provider setup Review follow-ups for the provider-setup link: - The status banner stays hidden while Antigravity is installed but its saved Google sign-in is not checked yet (warning, auth unknown after a server restart), so it no longer invites a needless re-sign-in. Sends are allowed in that state; session startup checks the saved credentials. - The model picker, trigger and composer model state resolve the internal antigravity-default marker to the account catalog's default model, never borrow another account's or a static model, and keep an unavailable saved Antigravity model visible. The composer blocks sends with the reason when Antigravity is not installed, signed out, has no model chosen, has not loaded its catalog, or the saved model left a ready catalog. - Settings -> Providers refresh and the mobile model refresh ask the server to reload account model catalogs (refreshModels). - A thread bound to a disabled instance now reports that instance and shows Open provider settings in place of the picker. Explicit unavailability keeps the picker so another provider can be chosen. - A cold-opened provider setup link waits for the device list before saying the device is unavailable. Adopted from 06336460c9988f29c71e839c4c9c840c4552e077 (#9348) (remaining web and mobile client pieces) Adopted from d487dfbf46be344e818725be70ee04be2436bfb4 (#9647)
rynfar
force-pushed
the
upstream/2026-09-11-wizards-docs
branch
from
September 11, 2026 09:03
6e5465b to
48bcc07
Compare
rynfar
added a commit
that referenced
this pull request
Sep 11, 2026
Keep #481's quit shortcut modes, thread-menu project settings, and the environment-ID recovery file in the rewritten pages. Document the RPC session's shared server-config stream against the new base, restore the staged Electron package name, sidebar order and filter rules, POSIX path case sensitivity, and the migrate-dev-db source flag, and describe #479's Antigravity restart, refresh, and send-block behavior. Point AGENTS.md at Pylon's hosted origin and correct the ledger row.
…r for continuation peers Review follow-ups for the Antigravity client completion: - A thread bound to a disabled instance keeps the model picker when an enabled, available continuation peer can take it; Open provider settings replaces the picker only when no such peer exists. - When every listed model on an instance is hidden, model resolution stays on that instance's own default instead of letting a driver-level fallback pick another instance's model or provider. Antigravity still resolves to nothing outside its account catalog. - Continue on another account falls back to the target account's default model and explains itself when the account reports no model. - Antigravity instances no longer list or offer custom models in settings. - With no Antigravity model chosen and no catalog loaded (for example after a restart), the composer asks for a model refresh instead of a choice the user cannot make. - A cold-opened provider setup link resolves its target device through one tested helper that stays on loading until the device list is ready. Adopted from 06336460c9988f29c71e839c4c9c840c4552e077 (#9348) (ProviderModelsSection and ProviderInstanceCard Antigravity guards)
…le send-block decisions
This was referenced Sep 12, 2026
rynfar
added a commit
that referenced
this pull request
Sep 12, 2026
Resolve the default marker and model aliases only against the selected account, retain unavailable saved choices for remediation, and keep concrete saved models usable while restart authentication is unchecked. Discover an unresolved catalog once for a queued user request, then re-read live authority before dispatch. Reopens the mobile exception recorded in #479 for #526. Upstream-source: 06336460c9988f29c71e839c4c9c840c4552e077 Upstream-source: d487dfbf46be344e818725be70ee04be2436bfb4 Related-upstream-source: 3faeee49ac67dfd9534369f1e1c627c0356b75ac
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Setup flows used three different stepper implementations with repeated dialog chrome, and window capture brought back a second copy (
ui/wizard-steps) beside the shared wizard from the welcome wizard port. Separately, #455 left out upstream's provider-setup link, and Pylon's Antigravity UI port (#440) left out the client pieces that make Antigravity usable from the picker: a provider that still needs setup could not be set up from the model picker, the internal default model marker could show up raw, the Settings refresh never reloaded account models, and every server restart showed a sign-in banner for an account that was still signed in.What changed
Shared wizard components (#10832). Welcome, Add provider, Publish repository, Pylon Connect and SnapShot setup now use
WizardPopup,WizardHeader,WizardSteps,WizardPanelandWizardFooter. The duplicateui/wizard-steps.tsxis deleted; the Connect dialog's switch toWizardStepsfrom #8103 is carried into the shared stepper. Publish repository keeps its completed-step summaries.Provider-setup link (#9348 client hunks, #9754 project defaults hook-up). When an enabled provider with integrated setup (Antigravity, or any provider whose server reports
setup.canInstall/canAuthenticate) is not installed, signed out, or has no usable model:Each opens Settings → Providers on the owning device with that instance selected, via
/settings/providers?environmentId=…&instanceId=…. A cold-opened link waits for the device list; a device that is not in the loaded list shows "Device unavailable", while a saved device that is disconnected keeps its usual "Could not connect to this device" state. A removed instance says so instead of opening another account. Pickers wired: composer, Settings → Projects machine default and project default model, text generation model, source control writer model.Status messages keep the environment's own error (for example a subscription error) and point integrated-setup providers to setup instead of "Sign in via the CLI".
Antigravity client completion (#9348, #9647).
antigravity-defaultmarker resolves to the account catalog's default model in the picker, the trigger label ("Choose model" until a catalog exists) and the composer's model state. Antigravity never borrows another account's model or a static default, keeps an unavailable saved model visible, and no longer lists or offers custom models in Settings → Providers (they were never sent).refreshModels, so the server reloads account model catalogs.Sources
3faeee49ac67dfd9534369f1e1c627c0356b75acd487dfbf46be344e818725be70ee04be2436bfb406336460c9988f29c71e839c4c9c840c4552e077refreshModels); server and earlier UI pieces came through the Antigravity ports9f40b2f563c662b43887b11ff99c466fe871c1afonOpenProviderSetuphunk excluded from #455Pylon adaptations
WizardHeaderidentity), Pylon Connect copy, Pylon SnapShots/capture helper copy and GNOME window-picker guidance.useThreadShelland the "Unable to open repository" toast.resolveComposerProviderSelection; Pylon's routing lives inresolveComposerInstanceSelection(sessions, drains, continuation transitions). It now reportsunavailableInstanceId(the locked instance first, a disabled session-bound instance, never the empty draft placeholder), andresolveComposerProviderSettingsActiondecides when the settings button replaces the picker. Explicit unavailability (for example Prime on native Windows) keeps the picker so another provider can be chosen.isModelSelectionUnavailablealerts in the thread composer and restores in the outbox drain) are not ported. Pylon mobile already holds disabled, uninstalled, signed-out, errored and unavailable providers through the shared provider admission check on new tasks and queued sends, and the server rejects a vanished model at turn start. Upstream's extra catalog-membership test would hold every Antigravity send while the catalog is empty after a restart, and everyantigravity-defaultselection (the marker is only an alias), which contradicts #9647. Revisit when upstream fixes those cases or mobile gains marker resolution and catalog reload on its send path.Verification
vp test run: 818 web tests in 32 files and 2 mobile tests pass. Web files: AddProviderInstanceDialog (environment, logic), AddProviderInstanceWizardSteps, SnapShotSettings, SnapShotSetupDialog.logic, providerMultipleInstances, GitActionsControl.logic, ChatView.logic, ModelPickerContent (ts, tsx), ProviderModelPicker, ProviderStatusBanner, ProviderSettingsPanel (environment, logic), ProviderInstanceCard, ProviderModelsSection, settingsSearch, composerInstanceSelection, ProjectSettingsPanel.logic, SettingsPanels.logic, modelSelection, composerDraftStore, providerInstances, ThreadHandoff.logic, ExpandedImagePreview, composerAttachmentFiles, SnapShotCoordinator, PreviewView, useHandleNewThread, attachmentUploadQueue, composerProviderState, composer-logic. Mobile: provider-catalog-refresh.shouldOfferModelPickerSetup; the default-marker resolution and trigger label; Antigravity model state and custom-model isolation (selection and settings card); upstream's OpenCode and Antigravity catalog-gapdescribe.each; send-block reasons including the empty catalog; panel target, cold-open loading and removed-instance states;unavailableInstanceIdfor a disabled binding with and without a continuation peer; the settings action decision; all-hidden fallbacks for a custom Claude instance, a disabled default Claude instance and text generation; handoff with a hidden or empty target. The three all-hidden scenario tests fail without the fallback fix.vp run -F @t3tools/web typecheck,vp run -F @t3tools/mobile typecheckandvp run -F @t3tools/client-runtime typecheck: 0error TS.vp lintandvp fmt --checkon every changed file: 0 warnings, 0 errors, formatted.User docs for the setup link and model refresh land with the docs restructure PR (#482), which rewrites the Antigravity guide and merges after this PR.
Ported by Claude Opus 5 in Claude Code.