ClipSpacesClipSpaces Docs
Back to app

All releases

Sign-in gate uses the TopBar popover (one sign-in surface)

The AI + Integrations auth wall no longer pops its own centered modal. Gated actions now drop the same sign-in popover the TopBar "Sign in" pill opens, so there's a single sign-in surface across the app. The Ask AI panel is the exception the request called for: it opens for everyone and, when signed out, shows an in-panel Sign in CTA that drops the TopBar popover and reopens the panel once you're in.

Added

  • lib/sign-in-prompt.tsxSignInPromptProvider / useSignInPrompt(). Holds the TopBar popover's open state plus a pending-action callback; requestSignIn(action) opens the popover and runs action after a successful verify (fireSuccess). Mounted under AuthProvider in app/layout.tsx.

Changed

  • components/AuthButton.tsx — the popover's open state now lives in the shared context instead of local useState, so other components can drop it. Successful sign-in calls fireSuccess() (closes + runs any pending action).
  • app/page.tsxrequireAuth(action) now calls requestSignIn(action) instead of a SignInModal. AI entry points (FAB, ⌘K, empty-state) open the panel directly; the panel self-gates. Integrations still gate via requireAuth.
  • components/AIPanel.tsx — reads auth; when a backend is configured and the user is signed out it renders a SignInGate (sign-in CTA) in place of the chat and skips the briefing/credentials calls. New onRequestSignIn prop closes the panel and drops the TopBar popover; signing in re-runs the briefing.

Removed

  • components/SignInModal.tsx — the centered wall, replaced by the TopBar popover.