Finish the local browser import experience - #233
Conversation
f4ef2d1 to
caa683d
Compare
Reuse dashboard-created imports with fresh scoped helper grants, report profile and Managed Auth results, and wait for dashboard acknowledgement. Close only the exact connector-created Terminal tab after a successful handoff while leaving failures visible.
Return from the kernel URL handler immediately and delegate bounded success monitoring to a detached process, so an interrupted import cannot prevent later deep links from opening Terminal.
Explicit non-interactive Managed Auth selection can fail on a locked or ambiguous vault. Complete that local selection before creating the remote browser import so retry guidance cannot strand an already-created profile.
caa683d to
a2326b4
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit a2326b4. Configure here.
| otherProfiles, err = finder.ExistingProfiles(ctx, profileName, candidates) | ||
| if err != nil { | ||
| return pendingManagedAuth{}, fmt.Errorf("check Managed Auth connections on other profiles: %w", err) | ||
| } |
There was a problem hiding this comment.
Other-profile check is fatal
Medium Severity
A failed ExistingProfiles lookup returns a hard error, unlike Existing, which warns and continues when Managed Auth is optional. Because this runs after the profile job has started, a problem listing other profiles aborts selection and can fail an import that could still refresh this profile’s connections.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit a2326b4. Configure here.


What
This is the CLI finished-experience layer for KERNEL-1975.
Why
The customer must understand how many Managed Auth connections their plan permits and must see that a multi-minute server apply is progressing. Once the API owns durable post-import authentication, the local CLI should not remain open while that background queue runs. Repeat imports should refresh the existing profile and its attached Managed Auth connections instead of silently creating
helium-you-2and consuming duplicate connection slots.How
max_auth_connectionsandauth_connections_usedorganization-limit fields exposed by the current API/SDKfinishing_managed_authas a successful dashboard handoff phaseThe latest published Go SDK does not yet expose
connections_usedon/org/entitlements; using the generated/org/limitsfields avoids a hand-written HTTP path while preserving the merged entitlement values.Deployment
Stacked on #229. Merge only after kernel/kernel#3453 and the explicit profile-update API in kernel/kernel#3477 are deployed, then publish and verify the Homebrew CLI before enabling the dashboard consumer. Old APIs reject
target_profile_id, so this order is required.Verification
go test -race ./cmdfor repeat-profile selection, cross-profile Managed Auth choices, quota handling, and label behaviorgo test ./cmd ./internal/browserimport -count=1go vet ./cmd ./internal/browserimportfinishing_managed_authgit diff --check origin/browser-import/05-finished-experience...HEADThe full unfiltered CLI race suite still reports an unrelated pre-existing pterm spinner race in template-creation tests; every changed path passes under
-race.Note
Medium Risk
Orchestrates dashboard-started imports, helper grants, and Managed Auth provisioning (credentials and connection quota). Failure/cancel reporting and profile-update targeting are new client-side control paths that need the matching API deployed.
Overview
Completes the local Chromium import flow so dashboard-started jobs can resume with a scoped helper grant, report client completion/cancel/failure, and return once the server reaches
finishing_managed_authinstead of blocking on background auth.Profile upload/apply now runs in the background with a four-stage progress bar while the user picks Managed Auth websites and accounts. Capacity UI shows used/max/remaining (including unlimited), and only net-new connections consume slots. Repeat imports default to updating the existing Kernel profile; creating a separate profile is explicit, and accounts already managed elsewhere default to keep-existing.
Oversized local-storage keys are skipped instead of failing the export, with imported vs skipped counts from the apply result. Bitwarden approved-item reads are parallelized (capped). The macOS connector deep link accepts
import_idand auto-closes the Terminal tab after a successful run.Reviewed by Cursor Bugbot for commit f68d104. Bugbot is set up for automated code reviews on this repo. Configure here.