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.tsx—SignInPromptProvider/useSignInPrompt(). Holds the TopBar popover's open state plus a pending-action callback;requestSignIn(action)opens the popover and runsactionafter a successful verify (fireSuccess). Mounted underAuthProviderinapp/layout.tsx.
Changed
components/AuthButton.tsx— the popover's open state now lives in the shared context instead of localuseState, so other components can drop it. Successful sign-in callsfireSuccess()(closes + runs any pending action).app/page.tsx—requireAuth(action)now callsrequestSignIn(action)instead of aSignInModal. AI entry points (FAB,⌘K, empty-state) open the panel directly; the panel self-gates. Integrations still gate viarequireAuth.components/AIPanel.tsx— reads auth; when a backend is configured and the user is signed out it renders aSignInGate(sign-in CTA) in place of the chat and skips the briefing/credentials calls. NewonRequestSignInprop 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.