Skip to content

feat(vercel): add connectable account flow for linking existing orgs#49112

Merged
MattBro merged 9 commits intomasterfrom
matt/vercel-connectable-account
Mar 2, 2026
Merged

feat(vercel): add connectable account flow for linking existing orgs#49112
MattBro merged 9 commits intomasterfrom
matt/vercel-connectable-account

Conversation

@MattBro
Copy link
Contributor

@MattBro MattBro commented Feb 25, 2026

Problem

Vercel Marketplace integrations support a "Link Existing Account" (connectable account) flow where users can connect their existing PostHog organization to Vercel without going through the full installation flow. This enables billing to stay with PostHog rather than migrating to Vercel's billing.

Currently there is no support for this flow.

Changes

Backend

  • OAuth callback (/connect/vercel/callback): Exchanges Vercel OAuth code for access token, caches session data, redirects to login if needed
  • Session info API (/api/vercel/connect/session): Returns user's admin+ orgs with linked status for the frontend dropdown
  • Complete linking API (/api/vercel/connect/complete): Creates OrganizationIntegration with type=connectable config
  • Deauthorize webhook: Handles integration.configuration-removed events, distinguishing connectable (direct delete) from native (billing cleanup via VercelIntegration.delete_installation)
  • OAuth client: Added oauth_token_exchange() for the /v2/oauth/access_token endpoint with response field validation

Frontend

  • VercelConnect page (/connect/vercel/link): Org selector UI with loading, error, and success states

Security

  • Open redirect prevention: next_url validated against allowed Vercel domains
  • Error messages sanitized (no Vercel internals leaked to clients)
  • capture_exception on error paths for monitoring
  • CSRF token included in POST requests

How did you test this code?

Automated tests

  • 19 tests for connectable account flow (callback, session info, complete)
  • 3 tests for deauthorize webhook (native, connectable, unknown config)
  • All 30 Vercel tests passing
pytest ee/api/vercel/test/test_vercel_connect.py ee/api/vercel/test/test_vercel_webhooks.py -v

Manual testing

  • Tested full end-to-end flow with ngrok + local dev:
    1. Clicked "Link Existing Account" in Vercel Marketplace
    2. Popup opened to /connect/vercel/callback with OAuth code
    3. Redirected to login, then to org selector
    4. Selected org, clicked "Connect organization"
    5. Success message shown, returned to Vercel

Changelog

Yes - adds Vercel "Link Existing Account" support for connecting existing PostHog orgs.

🤖 Generated with Claude Code

MattBro and others added 3 commits February 25, 2026 12:02
Implements the "Link Existing Account" flow for the Vercel Marketplace
integration. When a user installs PostHog from Vercel and already has
an existing PostHog account, they can now link their org instead of
being forced to create a new one. Billing stays with PostHog for
connected accounts.

Backend:
- OAuth code exchange via POST /v2/oauth/access_token
- Cache-based session flow with 10min TTL
- Org selection API with admin permission checks
- Creates OrganizationIntegration with type=connectable

Frontend:
- VercelConnect scene (popup) for org selection
- Handles login redirect, org picker, success/error states

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add 18 tests for connectable account flow (callback, session, complete)
- Handle integration.configuration-removed webhook to clean up
  OrganizationIntegration records on uninstall
- Remove VERCEL_EXTERNAL_REDIRECT_URI env var, use SITE_URL instead
- Update webhook tests to cover deauthorization

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Include X-CSRFToken header in the POST to /api/vercel/connect/complete
- Add Scenario 5 (Link Existing Account) to manual testing checklist
- Update README architecture section for connectable account flow

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Contributor

github-actions bot commented Feb 25, 2026

Size Change: +704 B (0%)

Total Size: 106 MB

ℹ️ View Unchanged
Filename Size Change
frontend/dist/1c 160 kB 0 B
frontend/dist/368Hedgehogs 5.98 kB 0 B
frontend/dist/abap 145 B 0 B
frontend/dist/abnf 145 B 0 B
frontend/dist/accesslog 1.04 kB 0 B
frontend/dist/Action 21.1 kB 0 B
frontend/dist/Actions 1.75 kB 0 B
frontend/dist/actionscript 153 B 0 B
frontend/dist/ada 144 B 0 B
frontend/dist/AdvancedActivityLogsScene 34.5 kB 0 B
frontend/dist/agda 145 B 0 B
frontend/dist/al 143 B 0 B
frontend/dist/angelscript 1.73 kB 0 B
frontend/dist/antlr4 147 B 0 B
frontend/dist/apache 1.05 kB 0 B
frontend/dist/apacheconf 151 B 0 B
frontend/dist/apex 179 B 0 B
frontend/dist/apl 144 B 0 B
frontend/dist/applescript 152 B 0 B
frontend/dist/ApprovalDetail 16.9 kB 0 B
frontend/dist/aql 144 B 0 B
frontend/dist/arcade 2.94 kB 0 B
frontend/dist/arduino 8.88 kB 0 B
frontend/dist/arff 145 B 0 B
frontend/dist/armasm 3.27 kB 0 B
frontend/dist/array.full.es5.js 323 kB 0 B
frontend/dist/array.full.js 423 kB 0 B
frontend/dist/array.js 178 kB 0 B
frontend/dist/asciidoc 149 B 0 B
frontend/dist/asm6502 148 B 0 B
frontend/dist/asmatmel 149 B 0 B
frontend/dist/aspectj 2.69 kB 0 B
frontend/dist/aspnet 181 B 0 B
frontend/dist/AsyncMigrations 13.9 kB 0 B
frontend/dist/AuthorizationStatus 1.43 kB 0 B
frontend/dist/autohotkey 1.04 kB 0 B
frontend/dist/autoit 6.74 kB 0 B
frontend/dist/avisynth 149 B 0 B
frontend/dist/avrasm 2.1 kB 0 B
frontend/dist/avro-idl 149 B 0 B
frontend/dist/awk 804 B 0 B
frontend/dist/axapta 1.76 kB 0 B
frontend/dist/azcli 852 B 0 B
frontend/dist/bash 2.18 kB 0 B
frontend/dist/basic 146 B 0 B
frontend/dist/bat 1.85 kB 0 B
frontend/dist/batch 146 B 0 B
frontend/dist/BatchExportScene 50.6 kB 0 B
frontend/dist/bbcode 147 B 0 B
frontend/dist/bicep 2.56 kB 0 B
frontend/dist/Billing 1.21 kB 0 B
frontend/dist/BillingSection 21.4 kB 0 B
frontend/dist/birb 145 B 0 B
frontend/dist/bison 180 B 0 B
frontend/dist/bnf 144 B 0 B
frontend/dist/brainfuck 150 B 0 B
frontend/dist/brightscript 153 B 0 B
frontend/dist/bro 144 B 0 B
frontend/dist/browserAll-0QZMN1W2 37.3 kB 0 B
frontend/dist/bsl 144 B 0 B
frontend/dist/ButtonPrimitives 1.28 kB 0 B
frontend/dist/c-like 5.27 kB 0 B
frontend/dist/c 142 B 0 B
frontend/dist/cal 1.12 kB 0 B
frontend/dist/CalendarHeatMap 5.53 kB 0 B
frontend/dist/cameligo 2.2 kB 0 B
frontend/dist/capnproto 974 B 0 B
frontend/dist/ceylon 1.24 kB 0 B
frontend/dist/cfscript 149 B 0 B
frontend/dist/chaiscript 219 B 0 B
frontend/dist/changeRequestsLogic 1.26 kB 0 B
frontend/dist/cil 144 B 0 B
frontend/dist/clean 671 B 0 B
frontend/dist/CLIAuthorize 12 kB 0 B
frontend/dist/clike 146 B 0 B
frontend/dist/CLILive 4.71 kB 0 B
frontend/dist/clojure 3.76 kB 0 B
frontend/dist/clojure-repl 326 B 0 B
frontend/dist/cmake 146 B 0 B
frontend/dist/cobol 146 B 0 B
frontend/dist/coffee 3.6 kB 0 B
frontend/dist/coffeescript 153 B 0 B
frontend/dist/Cohort 23.6 kB 0 B
frontend/dist/CohortCalculationHistory 6.95 kB 0 B
frontend/dist/Cohorts 10.1 kB 0 B
frontend/dist/concurnas 150 B 0 B
frontend/dist/ConfirmOrganization 5.21 kB 0 B
frontend/dist/conversations.js 64.5 kB 0 B
frontend/dist/coq 3.61 kB 0 B
frontend/dist/core 315 B 0 B
frontend/dist/cos 1.46 kB 0 B
frontend/dist/Coupons 1.45 kB 0 B
frontend/dist/cpp 5.31 kB 0 B
frontend/dist/Create 1.55 kB 0 B
frontend/dist/crisp-chat-integration.js 2.11 kB 0 B
frontend/dist/crmsh 1.53 kB 0 B
frontend/dist/crystal 182 B 0 B
frontend/dist/csharp 147 B 0 B
frontend/dist/cshtml 181 B 0 B
frontend/dist/csp 571 B 0 B
frontend/dist/css 4.51 kB 0 B
frontend/dist/css-extras 151 B 0 B
frontend/dist/cssMode 4.14 kB 0 B
frontend/dist/csv 144 B 0 B
frontend/dist/CustomCssScene 4.27 kB 0 B
frontend/dist/CustomerAnalyticsConfigurationScene 2.71 kB 0 B
frontend/dist/CustomerAnalyticsScene 31.6 kB 0 B
frontend/dist/customizations.full.js 18 kB 0 B
frontend/dist/cypher 3.4 kB 0 B
frontend/dist/d 142 B 0 B
frontend/dist/dart 4.26 kB 0 B
frontend/dist/Dashboard 1.65 kB 0 B
frontend/dist/Dashboards 14 kB 0 B
frontend/dist/DataManagementScene 1.36 kB 0 B
frontend/dist/DataPipelinesNewScene 3 kB 0 B
frontend/dist/DataWarehouseScene 1.37 kB 0 B
frontend/dist/DataWarehouseSourceScene 1.35 kB 0 B
frontend/dist/dataweave 150 B 0 B
frontend/dist/dax 144 B 0 B
frontend/dist/Deactivated 1.85 kB 0 B
frontend/dist/dead-clicks-autocapture.js 13.1 kB 0 B
frontend/dist/DeadLetterQueue 6.11 kB 0 B
frontend/dist/DebugScene 19.2 kB 0 B
frontend/dist/decompressionWorker 2.85 kB 0 B
frontend/dist/decompressionWorker.js 2.85 kB 0 B
frontend/dist/DefinitionEdit 7.84 kB 0 B
frontend/dist/DefinitionView 23 kB 0 B
frontend/dist/delphi 2.1 kB 0 B
frontend/dist/DestinationsScene 3.4 kB 0 B
frontend/dist/dhall 146 B 0 B
frontend/dist/diff 145 B 0 B
frontend/dist/dist 541 B 0 B
frontend/dist/django 181 B 0 B
frontend/dist/dns 1.88 kB 0 B
frontend/dist/dns-zone-file 154 B 0 B
frontend/dist/docker 147 B 0 B
frontend/dist/dockerfile 1.88 kB 0 B
frontend/dist/dos 1.3 kB 0 B
frontend/dist/dot 144 B 0 B
frontend/dist/dsconfig 724 B 0 B
frontend/dist/dts 1.47 kB 0 B
frontend/dist/dust 585 B 0 B
frontend/dist/EarlyAccessFeature 1.43 kB 0 B
frontend/dist/EarlyAccessFeatures 3.56 kB 0 B
frontend/dist/ebnf 145 B 0 B
frontend/dist/ecl 5.35 kB 0 B
frontend/dist/editorconfig 153 B 0 B
frontend/dist/EditorScene 1.45 kB 0 B
frontend/dist/eiffel 147 B 0 B
frontend/dist/ejs 178 B 0 B
frontend/dist/elixir 10.3 kB 0 B
frontend/dist/elm 144 B 0 B
frontend/dist/EmailMFAVerify 3.7 kB 0 B
frontend/dist/EndpointScene 30.7 kB 0 B
frontend/dist/EndpointsScene 21.8 kB 0 B
frontend/dist/erb 344 B 0 B
frontend/dist/erlang 2.09 kB 0 B
frontend/dist/erlang-repl 1.01 kB 0 B
frontend/dist/ErrorTrackingConfigurationScene 2.76 kB 0 B
frontend/dist/ErrorTrackingIssueFingerprintsScene 6.05 kB 0 B
frontend/dist/ErrorTrackingIssueScene 83.9 kB 0 B
frontend/dist/ErrorTrackingScene 12.1 kB 0 B
frontend/dist/etlua 214 B 0 B
frontend/dist/EvaluationTemplates 1.32 kB 0 B
frontend/dist/EventsScene 3.16 kB 0 B
frontend/dist/excel-formula 154 B 0 B
frontend/dist/excel 4.45 kB 0 B
frontend/dist/exception-autocapture.js 11.9 kB 0 B
frontend/dist/Experiment 283 kB 0 B
frontend/dist/Experiments 17.9 kB 0 B
frontend/dist/exporter 20.9 MB 0 B
frontend/dist/exporter.js 20.9 MB +161 B (0%)
frontend/dist/ExportsScene 4.59 kB 0 B
frontend/dist/factor 147 B 0 B
frontend/dist/false 146 B 0 B
frontend/dist/FeatureFlag 98.9 kB 0 B
frontend/dist/FeatureFlags 1.29 kB 0 B
frontend/dist/FeatureFlagTemplatesScene 4.93 kB 0 B
frontend/dist/firestore-security-rules 165 B 0 B
frontend/dist/fix 529 B 0 B
frontend/dist/FlappyHog 6.51 kB 0 B
frontend/dist/flix 756 B 0 B
frontend/dist/flow 145 B 0 B
frontend/dist/flow9 1.81 kB 0 B
frontend/dist/fortran 148 B 0 B
frontend/dist/freemarker2 16.7 kB 0 B
frontend/dist/fsharp 2.99 kB 0 B
frontend/dist/ftl 178 B 0 B
frontend/dist/gams 3.17 kB 0 B
frontend/dist/gap 144 B 0 B
frontend/dist/gauss 13.1 kB 0 B
frontend/dist/gcode 146 B 0 B
frontend/dist/gdscript 149 B 0 B
frontend/dist/gedcom 147 B 0 B
frontend/dist/gherkin 670 B 0 B
frontend/dist/git 144 B 0 B
frontend/dist/glsl 179 B 0 B
frontend/dist/gml 144 B 0 B
frontend/dist/gn 143 B 0 B
frontend/dist/go 143 B 0 B
frontend/dist/go-module 150 B 0 B
frontend/dist/golo 677 B 0 B
frontend/dist/gradle 1.68 kB 0 B
frontend/dist/graphql 2.27 kB 0 B
frontend/dist/groovy 1.73 kB 0 B
frontend/dist/Group 15 kB 0 B
frontend/dist/Groups 6.34 kB 0 B
frontend/dist/GroupsNew 8.07 kB 0 B
frontend/dist/haml 179 B 0 B
frontend/dist/handlebars 2.51 kB 0 B
frontend/dist/haskell 1.82 kB 0 B
frontend/dist/haxe 2.01 kB 0 B
frontend/dist/hcl 3.6 kB 0 B
frontend/dist/HealthScene 11.7 kB 0 B
frontend/dist/HeatmapNewScene 4.89 kB 0 B
frontend/dist/HeatmapRecordingScene 4.65 kB 0 B
frontend/dist/HeatmapScene 6.7 kB 0 B
frontend/dist/HeatmapsScene 4.6 kB 0 B
frontend/dist/hlsl 179 B 0 B
frontend/dist/HogFunctionScene 59.6 kB 0 B
frontend/dist/HogRepl 8.09 kB 0 B
frontend/dist/hoon 145 B 0 B
frontend/dist/hpkp 145 B 0 B
frontend/dist/hsp 3.51 kB 0 B
frontend/dist/hsts 145 B 0 B
frontend/dist/html 5.56 kB 0 B
frontend/dist/htmlbars 2.62 kB 0 B
frontend/dist/htmlMode 4.6 kB 0 B
frontend/dist/http 1.04 kB 0 B
frontend/dist/hy 3.08 kB 0 B
frontend/dist/ichigojam 150 B 0 B
frontend/dist/icon 145 B 0 B
frontend/dist/icu-message-format 159 B 0 B
frontend/dist/idris 180 B 0 B
frontend/dist/iecst 146 B 0 B
frontend/dist/ignore 147 B 0 B
frontend/dist/image-blob-reduce.esm 49.4 kB 0 B
frontend/dist/InboxScene 22.1 kB 0 B
frontend/dist/index 308 kB 0 B
frontend/dist/index.js 308 kB +62 B (+0.02%)
frontend/dist/inform7 802 B 0 B
frontend/dist/ini 1.11 kB 0 B
frontend/dist/InsightOptions 5.48 kB 0 B
frontend/dist/InsightScene 26.3 kB 0 B
frontend/dist/IntegrationsRedirect 1.45 kB 0 B
frontend/dist/intercom-integration.js 2.16 kB 0 B
frontend/dist/InviteSignup 14 kB 0 B
frontend/dist/io 143 B 0 B
frontend/dist/irpf90 4.94 kB 0 B
frontend/dist/isbl 83.8 kB 0 B
frontend/dist/j 142 B 0 B
frontend/dist/java 2.69 kB 0 B
frontend/dist/javadoc 216 B 0 B
frontend/dist/javadoclike 152 B 0 B
frontend/dist/javascript 962 B 0 B
frontend/dist/javastacktrace 155 B 0 B
frontend/dist/jboss-cli 1.02 kB 0 B
frontend/dist/jexl 145 B 0 B
frontend/dist/jolie 146 B 0 B
frontend/dist/jq 143 B 0 B
frontend/dist/js-extras 150 B 0 B
frontend/dist/js-templates 153 B 0 B
frontend/dist/jsdoc 214 B 0 B
frontend/dist/json 714 B 0 B
frontend/dist/json5 180 B 0 B
frontend/dist/jsonMode 13.9 kB 0 B
frontend/dist/jsonp 180 B 0 B
frontend/dist/jsstacktrace 153 B 0 B
frontend/dist/jsx 144 B 0 B
frontend/dist/julia-repl 353 B 0 B
frontend/dist/julia 7.24 kB 0 B
frontend/dist/keepalived 151 B 0 B
frontend/dist/keyman 147 B 0 B
frontend/dist/kotlin 147 B 0 B
frontend/dist/kumir 146 B 0 B
frontend/dist/kusto 146 B 0 B
frontend/dist/lasso 3.07 kB 0 B
frontend/dist/latex 3.68 kB 0 B
frontend/dist/latte 214 B 0 B
frontend/dist/lazy 152 kB 0 B
frontend/dist/ldif 475 B 0 B
frontend/dist/leaf 564 B 0 B
frontend/dist/LegacyPluginScene 21.8 kB 0 B
frontend/dist/LemonDialog 1.2 kB 0 B
frontend/dist/less 7.7 kB 0 B
frontend/dist/lexon 2.45 kB 0 B
frontend/dist/lib 2.23 kB 0 B
frontend/dist/lilypond 183 B 0 B
frontend/dist/LinkScene 25.6 kB 0 B
frontend/dist/LinksScene 4.92 kB 0 B
frontend/dist/liquid 4.51 kB 0 B
frontend/dist/lisp 1.27 kB 0 B
frontend/dist/livecodeserver 8.34 kB 0 B
frontend/dist/LiveDebugger 19.7 kB 0 B
frontend/dist/LiveEventsTable 5.13 kB 0 B
frontend/dist/livescript 3.54 kB 0 B
frontend/dist/LLMAnalyticsClusterScene 16.4 kB 0 B
frontend/dist/LLMAnalyticsClustersScene 38.5 kB 0 B
frontend/dist/LLMAnalyticsDatasetScene 20.4 kB 0 B
frontend/dist/LLMAnalyticsDatasetsScene 4 kB 0 B
frontend/dist/LLMAnalyticsEvaluation 39.6 kB 0 B
frontend/dist/LLMAnalyticsEvaluationsScene 8.16 kB 0 B
frontend/dist/LLMAnalyticsPlaygroundScene 1.3 kB 0 B
frontend/dist/LLMAnalyticsScene 43.8 kB 0 B
frontend/dist/LLMAnalyticsSessionScene 13.5 kB 0 B
frontend/dist/LLMAnalyticsTraceScene 97.9 kB 0 B
frontend/dist/LLMAnalyticsUsers 1.24 kB 0 B
frontend/dist/LLMASessionFeedbackDisplay 5.56 kB 0 B
frontend/dist/LLMPromptScene 13.9 kB 0 B
frontend/dist/LLMPromptsScene 4.02 kB 0 B
frontend/dist/llvm 145 B 0 B
frontend/dist/log 144 B 0 B
frontend/dist/Login 9.09 kB 0 B
frontend/dist/Login2FA 4.93 kB 0 B
frontend/dist/logs.js 39 kB 0 B
frontend/dist/LogsScene 109 kB 0 B
frontend/dist/lolcode 148 B 0 B
frontend/dist/lsl 12 kB 0 B
frontend/dist/lua 2 kB 0 B
frontend/dist/m3 2.82 kB 0 B
frontend/dist/magma 146 B 0 B
frontend/dist/makefile 1.2 kB 0 B
frontend/dist/ManagedMigration 14.8 kB 0 B
frontend/dist/markdown 3.79 kB 0 B
frontend/dist/MarketingAnalyticsScene 24.2 kB 0 B
frontend/dist/markup-templating 158 B 0 B
frontend/dist/markup 147 B 0 B
frontend/dist/MaterializedColumns 10.9 kB 0 B
frontend/dist/mathematica 113 kB 0 B
frontend/dist/matlab 147 B 0 B
frontend/dist/Max 1.41 kB 0 B
frontend/dist/maxima 28.8 kB 0 B
frontend/dist/maxscript 150 B 0 B
frontend/dist/mdx 5.36 kB 0 B
frontend/dist/mel 16.7 kB 0 B
frontend/dist/mercury 2.19 kB 0 B
frontend/dist/mermaid 148 B 0 B
frontend/dist/MessageTemplate 16.9 kB 0 B
frontend/dist/mips 2.59 kB 0 B
frontend/dist/mipsasm 2.58 kB 0 B
frontend/dist/mizar 856 B 0 B
frontend/dist/ModelsScene 2.42 kB 0 B
frontend/dist/mojolicious 443 B 0 B
frontend/dist/mongodb 148 B 0 B
frontend/dist/monkey 1.46 kB 0 B
frontend/dist/moonscript 151 B 0 B
frontend/dist/MoveToPostHogCloud 5.17 kB 0 B
frontend/dist/msdax 4.92 kB 0 B
frontend/dist/mysql 11.3 kB 0 B
frontend/dist/n1ql 3.12 kB 0 B
frontend/dist/n4js 145 B 0 B
frontend/dist/nand2tetris-hdl 156 B 0 B
frontend/dist/naniscript 151 B 0 B
frontend/dist/nasm 145 B 0 B
frontend/dist/neon 145 B 0 B
frontend/dist/nevod 146 B 0 B
frontend/dist/NewSourceWizard 1.44 kB 0 B
frontend/dist/NewTabScene 1.33 kB 0 B
frontend/dist/nginx 1.51 kB 0 B
frontend/dist/nim 144 B 0 B
frontend/dist/nix 770 B 0 B
frontend/dist/node-repl 369 B 0 B
frontend/dist/NotebookCanvasScene 3.68 kB 0 B
frontend/dist/NotebookScene 8.72 kB 0 B
frontend/dist/NotebooksScene 8.24 kB 0 B
frontend/dist/nsis 145 B 0 B
frontend/dist/OAuthAuthorize 10.4 kB 0 B
frontend/dist/objective-c 2.42 kB 0 B
frontend/dist/objectivec 2.67 kB 0 B
frontend/dist/ocaml 146 B 0 B
frontend/dist/Onboarding 642 kB 0 B
frontend/dist/OnboardingCouponRedemption 1.91 kB 0 B
frontend/dist/opencl 181 B 0 B
frontend/dist/openqasm 149 B 0 B
frontend/dist/openscad 1.43 kB 0 B
frontend/dist/oxygene 2.06 kB 0 B
frontend/dist/oz 143 B 0 B
frontend/dist/parigp 147 B 0 B
frontend/dist/parser 147 B 0 B
frontend/dist/parser3 689 B 0 B
frontend/dist/pascal 3 kB 0 B
frontend/dist/pascaligo 150 B 0 B
frontend/dist/passkeyLogic 1.2 kB 0 B
frontend/dist/PasswordReset 5.04 kB 0 B
frontend/dist/PasswordResetComplete 3.65 kB 0 B
frontend/dist/pcaxis 147 B 0 B
frontend/dist/peoplecode 151 B 0 B
frontend/dist/perl 8.26 kB 0 B
frontend/dist/PersonScene 16.4 kB 0 B
frontend/dist/PersonsScene 5.18 kB 0 B
frontend/dist/pf 1.41 kB 0 B
frontend/dist/pgsql 19 kB 0 B
frontend/dist/php 8.03 kB 0 B
frontend/dist/php-extras 219 B 0 B
frontend/dist/php-template 576 B 0 B
frontend/dist/phpdoc 249 B 0 B
frontend/dist/PipelineStatusScene 6.95 kB 0 B
frontend/dist/pla 1.69 kB 0 B
frontend/dist/plaintext 268 B 0 B
frontend/dist/plsql 180 B 0 B
frontend/dist/pony 1.11 kB 0 B
frontend/dist/posthog 251 kB 0 B
frontend/dist/postiats 7.86 kB 0 B
frontend/dist/powerquery 151 B 0 B
frontend/dist/powershell 3.28 kB 0 B
frontend/dist/PreflightCheck 6.27 kB 0 B
frontend/dist/processing 151 B 0 B
frontend/dist/product-tours.js 116 kB 0 B
frontend/dist/ProductTour 480 kB 0 B
frontend/dist/ProductTours 5.43 kB 0 B
frontend/dist/profile 632 B 0 B
frontend/dist/ProjectHomepage 6.54 kB 0 B
frontend/dist/prolog 147 B 0 B
frontend/dist/promql 147 B 0 B
frontend/dist/properties 859 B 0 B
frontend/dist/protobuf 824 B 0 B
frontend/dist/psl 144 B 0 B
frontend/dist/pug 144 B 0 B
frontend/dist/puppet 147 B 0 B
frontend/dist/pure 145 B 0 B
frontend/dist/purebasic 1.74 kB 0 B
frontend/dist/purescript 185 B 0 B
frontend/dist/python 4.75 kB 0 B
frontend/dist/python-repl 375 B 0 B
frontend/dist/q 1.28 kB 0 B
frontend/dist/qml 144 B 0 B
frontend/dist/qore 145 B 0 B
frontend/dist/qsharp 147 B 0 B
frontend/dist/r 3.24 kB 0 B
frontend/dist/racket 181 B 0 B
frontend/dist/razor 9.31 kB 0 B
frontend/dist/reason 147 B 0 B
frontend/dist/reasonml 3.41 kB 0 B
frontend/dist/recorder-v2.js 113 kB 0 B
frontend/dist/recorder.js 113 kB 0 B
frontend/dist/redis 3.56 kB 0 B
frontend/dist/redshift 11.8 kB 0 B
frontend/dist/refractor 17.8 kB 0 B
frontend/dist/regex 146 B 0 B
frontend/dist/RegionMap 135 kB 0 B
frontend/dist/rego 145 B 0 B
frontend/dist/render-query 20.7 MB 0 B
frontend/dist/render-query.js 20.7 MB +161 B (0%)
frontend/dist/renpy 146 B 0 B
frontend/dist/ResourceTransfer 9.87 kB 0 B
frontend/dist/rest 145 B 0 B
frontend/dist/restructuredtext 3.91 kB 0 B
frontend/dist/RevenueAnalyticsScene 26.3 kB 0 B
frontend/dist/rib 1.44 kB 0 B
frontend/dist/rip 144 B 0 B
frontend/dist/roboconf 149 B 0 B
frontend/dist/robotframework 155 B 0 B
frontend/dist/routeros 2.66 kB 0 B
frontend/dist/rsl 1.2 kB 0 B
frontend/dist/ruby 8.51 kB 0 B
frontend/dist/ruleslanguage 3.98 kB 0 B
frontend/dist/rust 4.17 kB 0 B
frontend/dist/sas 144 B 0 B
frontend/dist/sass 145 B 0 B
frontend/dist/SavedInsights 1.38 kB 0 B
frontend/dist/sb 1.83 kB 0 B
frontend/dist/scala 1.68 kB 0 B
frontend/dist/scheme 147 B 0 B
frontend/dist/scilab 1.33 kB 0 B
frontend/dist/scss 145 B 0 B
frontend/dist/SdkDoctorScene 4.76 kB 0 B
frontend/dist/SessionAttributionExplorerScene 7.29 kB 0 B
frontend/dist/SessionGroupSummariesTable 5.35 kB 0 B
frontend/dist/SessionGroupSummaryScene 17.8 kB 0 B
frontend/dist/SessionProfileScene 16.6 kB 0 B
frontend/dist/SessionRecordingDetail 2.45 kB 0 B
frontend/dist/SessionRecordingFilePlaybackScene 5.19 kB 0 B
frontend/dist/SessionRecordings 1.49 kB 0 B
frontend/dist/SessionRecordingsKiosk 9.58 kB 0 B
frontend/dist/SessionRecordingsPlaylistScene 4.86 kB 0 B
frontend/dist/SessionRecordingsSettingsScene 2.65 kB 0 B
frontend/dist/SessionsScene 4.59 kB 0 B
frontend/dist/SettingsScene 3.71 kB 0 B
frontend/dist/SharedMetric 16 kB 0 B
frontend/dist/SharedMetrics 1.23 kB 0 B
frontend/dist/shell-session 188 B 0 B
frontend/dist/shell 3.08 kB 0 B
frontend/dist/SignalsDebug 28.8 kB 0 B
frontend/dist/SignupContainer 23.6 kB 0 B
frontend/dist/Site 1.91 kB 0 B
frontend/dist/smali 1.23 kB 0 B
frontend/dist/smalltalk 150 B 0 B
frontend/dist/smarty 181 B 0 B
frontend/dist/sml 1.27 kB 0 B
frontend/dist/solidity 149 B 0 B
frontend/dist/solution-file 154 B 0 B
frontend/dist/sophia 2.77 kB 0 B
frontend/dist/SourcesScene 3.87 kB 0 B
frontend/dist/sourceWizardLogic 1.38 kB 0 B
frontend/dist/soy 178 B 0 B
frontend/dist/sparql 181 B 0 B
frontend/dist/splunk-spl 151 B 0 B
frontend/dist/sqf 32.3 kB 0 B
frontend/dist/sql_more 12.4 kB 0 B
frontend/dist/sql 6.73 kB 0 B
frontend/dist/SqlVariableEditScene 7.97 kB 0 B
frontend/dist/squirrel 149 B 0 B
frontend/dist/st 7.41 kB 0 B
frontend/dist/stan 145 B 0 B
frontend/dist/StartupProgram 21.9 kB 0 B
frontend/dist/stata 16.8 kB 0 B
frontend/dist/step21 753 B 0 B
frontend/dist/stylus 147 B 0 B
frontend/dist/subunit 642 B 0 B
frontend/dist/SupportSettingsScene 26.2 kB 0 B
frontend/dist/SupportTicketScene 20 kB 0 B
frontend/dist/SupportTicketsScene 7.3 kB 0 B
frontend/dist/Survey 1.46 kB 0 B
frontend/dist/SurveyFormBuilder 2.26 kB 0 B
frontend/dist/Surveys 14.2 kB 0 B
frontend/dist/surveys.js 90 kB 0 B
frontend/dist/SurveyTemplates 1.28 kB 0 B
frontend/dist/SurveyWizard 174 kB 0 B
frontend/dist/swift 7.62 kB 0 B
frontend/dist/systemd 148 B 0 B
frontend/dist/SystemStatus 17.7 kB 0 B
frontend/dist/systemverilog 7.62 kB 0 B
frontend/dist/t4-cs 214 B 0 B
frontend/dist/t4-templating 154 B 0 B
frontend/dist/t4-vb 248 B 0 B
frontend/dist/taggerscript 535 B 0 B
frontend/dist/tap 533 B 0 B
frontend/dist/TaskDetailScene 20.9 kB 0 B
frontend/dist/TaskTracker 17.1 kB 0 B
frontend/dist/tcl 3.57 kB 0 B
frontend/dist/textile 148 B 0 B
frontend/dist/thrift 744 B 0 B
frontend/dist/toml 145 B 0 B
frontend/dist/toolbar 7.66 MB +160 B (0%)
frontend/dist/toolbar.js 7.66 MB +160 B (0%)
frontend/dist/ToolbarLaunch 3.24 kB 0 B
frontend/dist/tp 1.6 kB 0 B
frontend/dist/tracing-headers.js 1.93 kB 0 B
frontend/dist/TransformationsScene 2.64 kB 0 B
frontend/dist/tremor 147 B 0 B
frontend/dist/tsMode 24 kB 0 B
frontend/dist/tsx 212 B 0 B
frontend/dist/tt2 178 B 0 B
frontend/dist/turtle 147 B 0 B
frontend/dist/twig 1.3 kB 0 B
frontend/dist/TwoFactorReset 4.71 kB 0 B
frontend/dist/typescript 151 B 0 B
frontend/dist/typespec 2.83 kB 0 B
frontend/dist/typoscript 151 B 0 B
frontend/dist/unrealscript 153 B 0 B
frontend/dist/Unsubscribe 2.34 kB 0 B
frontend/dist/uorazor 148 B 0 B
frontend/dist/uri 144 B 0 B
frontend/dist/UserInterview 5.25 kB 0 B
frontend/dist/UserInterviews 2.74 kB 0 B
frontend/dist/v 142 B 0 B
frontend/dist/vala 145 B 0 B
frontend/dist/vb 5.8 kB 0 B
frontend/dist/vbnet 180 B 0 B
frontend/dist/vbscript 1.83 kB 0 B
frontend/dist/vbscript-html 308 B 0 B
frontend/dist/velocity 149 B 0 B
frontend/dist/VercelConnect 4.71 kB 0 B
frontend/dist/VercelLinkError 2.63 kB 0 B
frontend/dist/VerifyEmail 5.2 kB 0 B
frontend/dist/verilog 148 B 0 B
frontend/dist/vhdl 1.81 kB 0 B
frontend/dist/vim 144 B 0 B
frontend/dist/visual-basic 153 B 0 B
frontend/dist/warpscript 151 B 0 B
frontend/dist/wasm 145 B 0 B
frontend/dist/web-idl 148 B 0 B
frontend/dist/web-vitals.js 6.6 kB 0 B
frontend/dist/WebAnalyticsScene 6.08 kB 0 B
frontend/dist/WebGLRenderer-DYjOwNoG 60.3 kB 0 B
frontend/dist/WebGPURenderer-B_wkl_Ja 36.2 kB 0 B
frontend/dist/WebScriptsScene 3.26 kB 0 B
frontend/dist/webworkerAll-puPV1rBA 296 B 0 B
frontend/dist/wgsl 7.35 kB 0 B
frontend/dist/wiki 145 B 0 B
frontend/dist/Wizard 5.18 kB 0 B
frontend/dist/wolfram 148 B 0 B
frontend/dist/WorkflowScene 89.5 kB 0 B
frontend/dist/WorkflowsScene 46.4 kB 0 B
frontend/dist/WorldMap 5.4 kB 0 B
frontend/dist/wren 145 B 0 B
frontend/dist/x86asm 19.2 kB 0 B
frontend/dist/xeora 146 B 0 B
frontend/dist/xl 1.77 kB 0 B
frontend/dist/xml-doc 148 B 0 B
frontend/dist/xml 2.14 kB 0 B
frontend/dist/xojo 145 B 0 B
frontend/dist/xquery 147 B 0 B
frontend/dist/yaml 145 B 0 B
frontend/dist/yang 145 B 0 B
frontend/dist/zephir 1.71 kB 0 B
frontend/dist/zig 144 B 0 B

compressed-size-action

- Validate next_url against allowed Vercel domains to prevent open redirects
- Add capture_exception on error paths for monitoring
- Sanitize error messages to avoid leaking Vercel internals to clients
- Fix N+1 query in session_info (batch lookup for linked orgs)
- Add OAuth response field validation with proper error handling
- Distinguish connectable vs native integrations in deauthorize webhook
  (native uses VercelIntegration.delete_installation for billing cleanup)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@MattBro MattBro marked this pull request as ready for review February 25, 2026 19:54
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

12 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

@tests-posthog
Copy link
Contributor

tests-posthog bot commented Feb 25, 2026

⏭️ Skipped snapshot commit because branch advanced to ebe7bdf while workflow was testing 5652eca.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@tests-posthog
Copy link
Contributor

tests-posthog bot commented Feb 25, 2026

Visual regression: Storybook UI snapshots updated

Changes: 1 snapshots (1 modified, 0 added, 0 deleted)

What this means:

  • Snapshots have been automatically updated to match current rendering
  • Next CI run will switch to CHECK mode to verify stability
  • If snapshots change again, CHECK mode will fail (indicates flapping)

Next steps:

  • Review the changes to ensure they're intentional
  • Approve if changes match your expectations
  • If unexpected, investigate component rendering

Review snapshot changes →

@tests-posthog
Copy link
Contributor

tests-posthog bot commented Feb 25, 2026

⏭️ Skipped snapshot commit because branch advanced to 7b56334 while workflow was testing ebe7bdf.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

MattBro and others added 2 commits February 25, 2026 17:23
Cast request.user to User in authenticated views to satisfy mypy's
User | AnonymousUser type check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@tests-posthog
Copy link
Contributor

tests-posthog bot commented Feb 25, 2026

Query snapshots: Backend query snapshots updated

Changes: 1 snapshots (1 modified, 0 added, 0 deleted)

What this means:

  • Query snapshots have been automatically updated to match current output
  • These changes reflect modifications to database queries or schema

Next steps:

  • Review the query changes to ensure they're intentional
  • If unexpected, investigate what caused the query to change

Review snapshot changes →

MattBro and others added 2 commits February 26, 2026 10:36
…able-account

# Conflicts:
#	frontend/__snapshots__/replay-tabs-home-success--recordings-play-list-with-pinned-recordings--light.png
@tests-posthog
Copy link
Contributor

tests-posthog bot commented Feb 26, 2026

Query snapshots: Backend query snapshots updated

Changes: 1 snapshots (1 modified, 0 added, 0 deleted)

What this means:

  • Query snapshots have been automatically updated to match current output
  • These changes reflect modifications to database queries or schema

Next steps:

  • Review the query changes to ensure they're intentional
  • If unexpected, investigate what caused the query to change

Review snapshot changes →

@github-actions
Copy link
Contributor

🎭 Playwright report · View test results →

⚠️ 1 flaky test:

  • Can submit the signup form multiple times if there is a generic email set (chromium)

These issues are not necessarily caused by your changes.
Annoyed by this comment? Help fix flakies and failures and it'll disappear!

@MattBro MattBro requested review from a team, fercgomes and rafaeelaudibert and removed request for a team February 26, 2026 22:17
Copy link
Contributor

@fercgomes fercgomes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left some comments

@MattBro MattBro requested a review from fercgomes February 27, 2026 21:03
Copy link
Member

@rafaeelaudibert rafaeelaudibert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense! Left some nits

@MattBro MattBro merged commit 6d09986 into master Mar 2, 2026
330 of 333 checks passed
@MattBro MattBro deleted the matt/vercel-connectable-account branch March 2, 2026 21:43
tomasfarias pushed a commit that referenced this pull request Mar 6, 2026
…49112)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants