Skip to content

feat(conversations): log in as customer directly from support ticket - #66053

Merged
luke-belton merged 2 commits into
masterfrom
posthog-code/login-as-customer-from-ticket
Jul 22, 2026
Merged

feat(conversations): log in as customer directly from support ticket#66053
luke-belton merged 2 commits into
masterfrom
posthog-code/login-as-customer-from-ticket

Conversation

@luke-belton

@luke-belton luke-belton commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Problem

When working a support ticket as PostHog staff, logging in as the customer meant leaving the ticket, opening the Django admin user search, finding the user, and impersonating from there. Slow, easy to lose the ticket's context, and there was no way back to the ticket afterwards.

This continues the work started in #48334, rebuilt on the current support layout, and builds on the identity_verified trust signal from #54628 (now merged).

Changes

The ticket "Staff actions" tile's Login as customer button now starts a read-only impersonation session directly, and the impersonation notice knows how to get you back to the ticket when you're done.

Direct login from the ticket

  • Backend – new /admin/impersonation/from-ticket/ endpoint (ee/admin/loginas_views.py) resolves the ticket's customer email to a user, auto-fills the reason (Support ticket #<n>), and starts a read-only session. If the ticket originated in another region it returns a redirect to that region's admin instead of failing.
  • Region inference – for PostHog's internal support project, the widget derives a region trait from the app URL (products/conversations/backend/api/widget.py), which drives the cross-region routing above.
  • FrontendAdminLoginButtons is a single direct-login button wired to a new initiateImpersonation flow (loginAsFromTicket reuses the existing admin OAuth2 handshake from adminLoginAs.ts). The old multi-region admin-redirect machinery was removed.

Verified identity, US region:

CleanShot.2026-07-03.at.11.36.11.mp4

Identity unknown:

CleanShot 2026-07-03 at 11 21 36

Unverified identity:

CleanShot 2026-07-03 at 11 23 28

Return to ticket

  • The originating ticket id is stored in the session, and /logout from a ticket-initiated impersonation lands staff back on the ticket rather than the admin user page.
  • The impersonation notice shows a Return to ticket #X button (with loading state) instead of the usual logout dropdown when the session was started from a ticket. A small {ticketNumber, email} context is persisted across the post-login reload and dropped whenever the stored ticket no longer matches the active impersonation (staff load, or a different customer impersonated via Django admin).
  • The session expired overlay offers the same "Return to ticket #X" action, and the re-impersonate / upgrade-to-read-write modals prefill the reason with Investigating ticket #X.

Identity verification gate

Uses the nullable identity_verified trust signal on tickets (#54628) to close the confused-deputy gap where a ticket's claimed email is attacker-controlled:

  • identity_verified = false (assessed, not attested) – login as is blocked: the button is disabled with an explanation, and the backend independently rejects with 400.
  • identity_verified = null (never assessed) – allowed, with a warning banner telling staff to confirm they have the right customer.
  • identity_verified = true – allowed, and the impersonation target is resolved from the ticket's HMAC-attested distinct_id (matching User.distinct_id or email against the attested value), never from the email trait – which stays customer-mutable on every widget message even after verification.

How did you test this code?

I'm an agent (PostHog Code), human-driven by @luke-belton. Automated tests only – I did not manually click through the UI (a screen recording is coming separately).

  • Frontend (impersonationNoticeLogic.test.ts, 43 pass): initiateImpersonation cases (cross-region opens the other region's admin, endpoint failure surfaces a toast, no-context guard is a no-op, success persists the return context), returnToTicket navigation + loading state, parameterized canReturnToTicket / expiredSessionFromTicket gating (catches the stale-context bug where an old ticket would attach to an unrelated impersonation), and stored-ticket clearing on staff load / mismatched customer.
  • Backend (TestLoginAsFromTicket in test_middleware.py, 13 pass locally): success path, logout returns to the ticket, non-staff → 404, unknown ticket → 404, no email → 400, no matching user → 404, cross-region redirect without impersonating, invalid ticket_id, and a parameterized identity_verified gate (true → 200, null → 200, false → 400 with no session started – guards against a naive falsy check that would wrongly block null), attested-identity resolution (a verified ticket claiming someone else's email impersonates the attested identity, and an unresolvable attested identity 404s with no email fallback), and an unknown customer-supplied region falling back to local login instead of a 500. Plus parameterized widget region-inference tests in test_widget.py.
  • Full typescript:check, oxlint, ruff, and ty check (via lint-staged) pass.

Note for reviewers: the red "Frontend Tests Pass" check is a draft-PR CI artifact, not a test failure – draft-PR jest selection packs the near-full reachable suite into a single 15-minute job that times out (reported to devex). Marking the PR ready runs the normal sharded fanout.

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

🤖 Agent context

Autonomy: Human-driven (agent-assisted) – DRI: @luke-belton

Built with PostHog Code (Claude). The starting point was #48334, ~6,700 commits behind with a closed conflicting PR; we branched fresh off master and re-implemented the intent onto the current StaffActionsPanel + AdminLoginButtons layout rather than replay six WIP commits.

Decisions along the way:

  • Login-only scope. The original PR also rendered the ticket conversation inside the impersonation notice. Deferred and likely unnecessary: AdminImpersonationMiddleware (feat(admin): keep admin panel usable while impersonating #56594) keeps /admin/* running as the staff user during impersonation, so staff can keep the ticket open in another tab.
  • Ticket-level trust, not person-level. The identity_verified gate deliberately lives on the ticket: the identity claim is only attested per submission (widget HMAC, SPF email, signed platform webhook), and a person-level flag would let a spoofed anonymous ticket inherit a real user's verification.
  • Known limitation: the return-to-ticket UI context is matched client-side by email, which can silently miss when the ticket's widget email differs from the account email. A server-surfaced is_impersonated_ticket_id on /api/users/@me/ would be strictly better – candidate follow-up. (The backend target resolution itself no longer trusts the email trait on verified tickets – see the gate section.)
  • The PR originally stacked on feat: add identity_verified boolean to Ticket #54628; after that merged it was rebased onto master, dropping the duplicated commits.

Skills invoked: /improving-drf-endpoints, /writing-tests, /writing-kea-logics conventions, /debugging-ci-failures.


Created with PostHog Code

@luke-belton
luke-belton requested a review from a team as a code owner June 25, 2026 12:43
@luke-belton luke-belton self-assigned this Jun 25, 2026
@pr-assigner-resolver-posthog
pr-assigner-resolver-posthog Bot requested a review from a team June 25, 2026 12:43
@luke-belton
luke-belton marked this pull request as draft June 25, 2026 12:44
@greptile-apps

greptile-apps Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Reviews (1): Last reviewed commit: "feat(conversations): log in as customer ..." | Re-trigger Greptile

Comment thread ee/admin/loginas_views.py Outdated
Comment thread posthog/api/authentication.py Outdated
Comment thread ee/admin/loginas_views.py Outdated
@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Size Change: -5.24 kB (-0.01%)

Total Size: 64.9 MB

📦 View Changed
Filename Size Change
frontend/dist-report/exporter/_parent/products/conversations/frontend/scenes/ticket/SupportTicketScene 44.8 kB +1.67 kB (+3.86%)
frontend/dist-report/posthog-app/_chunks/chunk 2.61 MB -6.91 kB (-0.26%)
ℹ️ View Unchanged
Filename Size Change
frontend/dist-report/decompression-worker/src/scenes/session-recordings/player/snapshot-processing/decompressionWorker 2.85 kB 0 B
frontend/dist-report/exporter/_chunks/chunk 2.62 MB 0 B
frontend/dist-report/exporter/_parent/products/actions/frontend/pages/Action 28 kB 0 B
frontend/dist-report/exporter/_parent/products/actions/frontend/pages/Actions 5.73 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_gateway/frontend/AIGatewayScene 13.2 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilityScene 120 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilitySessionScene 19.5 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilityTraceScene 132 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilityUsers 3.41 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/clusters/AIObservabilityClusterScene 21.8 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/clusters/AIObservabilityClustersScene 53.9 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetScene 20.6 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetsScene 4.03 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluation 60.7 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluationsScene 33 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/evaluations/EvaluationTemplates 671 B 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/LLMASessionFeedbackDisplay 4.81 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/playground/AIObservabilityPlaygroundScene 37.5 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/prompts/LLMPromptScene 32.9 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/prompts/LLMPromptsScene 5.18 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/tags/AIObservabilityTag 32 kB 0 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/tags/AIObservabilityTagsScene 11.8 kB 0 B
frontend/dist-report/exporter/_parent/products/business_knowledge/frontend/scenes/BusinessKnowledgeScene 24.8 kB 0 B
frontend/dist-report/exporter/_parent/products/conversations/frontend/components/Assignee/CyclotronJobInputAssignee 1.38 kB 0 B
frontend/dist-report/exporter/_parent/products/conversations/frontend/components/SlaBusinessHours/CyclotronJobInputBusinessHours 2.69 kB 0 B
frontend/dist-report/exporter/_parent/products/conversations/frontend/components/TicketTags/CyclotronJobInputTicketTags 783 B 0 B
frontend/dist-report/exporter/_parent/products/conversations/frontend/scenes/settings/SupportSettingsScene 5.76 kB 0 B
frontend/dist-report/exporter/_parent/products/conversations/frontend/scenes/tickets/SupportTicketsScene 1.65 kB 0 B
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/CustomerAnalyticsScene 101 kB 0 B
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/scenes/CustomerAnalyticsConfigurationScene/CustomerAnalyticsConfigurationScene 6.51 kB 0 B
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyBuilderScene/CustomerJourneyBuilderScene 6.39 kB 0 B
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyTemplatesScene/CustomerJourneyTemplatesScene 9.2 kB 0 B
frontend/dist-report/exporter/_parent/products/data_warehouse/DataWarehouseScene 32.3 kB 0 B
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/NewSourceScene/NewSourceScene 2.88 kB 0 B
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SchemaScene/SchemaScene 34 kB 0 B
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SourceConnectScene/SourceConnectScene 6.76 kB 0 B
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SourceScene/SourceScene 2.65 kB 0 B
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SourcesScene/SourcesScene 7.46 kB 0 B
frontend/dist-report/exporter/_parent/products/early_access_features/frontend/EarlyAccessFeature 5.61 kB 0 B
frontend/dist-report/exporter/_parent/products/early_access_features/frontend/EarlyAccessFeatures 3.69 kB 0 B
frontend/dist-report/exporter/_parent/products/endpoints/frontend/EndpointScene 47.7 kB 0 B
frontend/dist-report/exporter/_parent/products/endpoints/frontend/EndpointsScene 27.5 kB -6 B (-0.02%)
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsAuthorScene 4.97 kB 0 B
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsScene 23.9 kB 0 B
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/PullRequestDetailScene 20.4 kB 0 B
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunDetailScene 6.37 kB 0 B
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunsScene 19 kB 0 B
frontend/dist-report/exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingFingerprintsScene/ErrorTrackingIssueFingerprintsScene 7.62 kB 0 B
frontend/dist-report/exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingIssueScene/ErrorTrackingIssueScene 102 kB -6 B (-0.01%)
frontend/dist-report/exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingScene/ErrorTrackingScene 42.6 kB 0 B
frontend/dist-report/exporter/_parent/products/feature_flags/frontend/FeatureFlagTemplatesScene 6.91 kB 0 B
frontend/dist-report/exporter/_parent/products/games/368Hedgehogs/368Hedgehogs 5.24 kB 0 B
frontend/dist-report/exporter/_parent/products/games/FlappyHog/FlappyHog 5.7 kB 0 B
frontend/dist-report/exporter/_parent/products/growth/frontend/IdentityMatchingScene 35.9 kB 0 B
frontend/dist-report/exporter/_parent/products/legal_documents/frontend/scenes/LegalDocumentNewScene 60 kB 0 B
frontend/dist-report/exporter/_parent/products/legal_documents/frontend/scenes/LegalDocumentsScene 6.34 kB 0 B
frontend/dist-report/exporter/_parent/products/links/frontend/LinkScene 25.4 kB 0 B
frontend/dist-report/exporter/_parent/products/links/frontend/LinksScene 5.12 kB 0 B
frontend/dist-report/exporter/_parent/products/live_debugger/frontend/LiveDebugger 19.5 kB 0 B
frontend/dist-report/exporter/_parent/products/logs/frontend/LogsScene 22.6 kB 0 B
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsAlertDetailScene/LogsAlertDetailScene 18.5 kB 0 B
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsAlertNotificationDetailScene/LogsAlertNotificationDetailScene 8.96 kB 0 B
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsSamplingDetailScene/LogsSamplingDetailScene 6.08 kB 0 B
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsSamplingNewScene/LogsSamplingNewScene 3.09 kB 0 B
frontend/dist-report/exporter/_parent/products/managed_migrations/frontend/ManagedMigration 15.7 kB 0 B
frontend/dist-report/exporter/_parent/products/mcp_analytics/frontend/MCPAnalyticsScene 136 kB 0 B
frontend/dist-report/exporter/_parent/products/mcp_analytics/frontend/MCPAnalyticsToolDetail 16 kB 0 B
frontend/dist-report/exporter/_parent/products/metrics/frontend/MetricsScene 23.1 kB 0 B
frontend/dist-report/exporter/_parent/products/posthog_ai/frontend/components/QuestionRenderer 1.75 kB 0 B
frontend/dist-report/exporter/_parent/products/posthog_ai/frontend/components/tool/builtinToolRenderers 4.48 kB 0 B
frontend/dist-report/exporter/_parent/products/posthog_ai/frontend/components/tool/EditDiffRenderer 3.23 kB 0 B
frontend/dist-report/exporter/_parent/products/posthog_ai/frontend/scenes/TaskTracker/TaskTracker 34.2 kB 0 B
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/stickiness/StickinessBarChart/StickinessBarChart 4.42 kB 0 B
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/stickiness/StickinessLineChart/StickinessLineChart 4.31 kB 0 B
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsBarChart/TrendsBarChart 9.8 kB 0 B
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsLifecycleChart/TrendsLifecycleChart 5.94 kB 0 B
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsLineChart/TrendsLineChart 6.12 kB 0 B
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsPieChart/TrendsPieChart 5.02 kB 0 B
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsSlopeChart/TrendsSlopeChart 2.56 kB 0 B
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/observations/ReplayObservation 19.1 kB 0 B
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/replay_scanners/ReplayScanner 42.6 kB 0 B
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/replay_scanners/ReplayScannersScene 22.4 kB 0 B
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/replay_scanners/ScannerEditorScene 26.8 kB 0 B
frontend/dist-report/exporter/_parent/products/revenue_analytics/frontend/revenueAnalyticsLogic 1.46 kB 0 B
frontend/dist-report/exporter/_parent/products/revenue_analytics/frontend/RevenueAnalyticsScene 29.9 kB 0 B
frontend/dist-report/exporter/_parent/products/session_summaries/frontend/SessionGroupSummariesTable 5.37 kB 0 B
frontend/dist-report/exporter/_parent/products/session_summaries/frontend/SessionGroupSummaryScene 23.3 kB 0 B
frontend/dist-report/exporter/_parent/products/skills/frontend/LLMSkillScene 1.43 kB 0 B
frontend/dist-report/exporter/_parent/products/skills/frontend/LLMSkillsScene 1.45 kB 0 B
frontend/dist-report/exporter/_parent/products/tasks/frontend/SlackTaskContextScene 8.96 kB 0 B
frontend/dist-report/exporter/_parent/products/tracing/frontend/TracingScene 95.1 kB 0 B
frontend/dist-report/exporter/_parent/products/user_interviews/frontend/UserInterview 10.8 kB 0 B
frontend/dist-report/exporter/_parent/products/user_interviews/frontend/UserInterviewResponse 8.01 kB 0 B
frontend/dist-report/exporter/_parent/products/user_interviews/frontend/UserInterviews 6.43 kB 0 B
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewIndexScene 2.97 kB 0 B
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewRunScene 47.2 kB 0 B
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewRunsScene 8.2 kB 0 B
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSettingsScene 11.6 kB 0 B
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotHistoryScene 14.2 kB 0 B
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotOverviewScene 19.8 kB 0 B
frontend/dist-report/exporter/_parent/products/workflows/frontend/TemplateLibrary/MessageTemplate 17 kB 0 B
frontend/dist-report/exporter/_parent/products/workflows/frontend/Workflows/WorkflowScene 117 kB 0 B
frontend/dist-report/exporter/_parent/products/workflows/frontend/WorkflowsScene 61.3 kB 0 B
frontend/dist-report/exporter/src/exporter/exporter 25.9 kB 0 B
frontend/dist-report/exporter/src/exporter/scenes/ExporterDashboardScene 6.71 kB 0 B
frontend/dist-report/exporter/src/exporter/scenes/ExporterHeatmapScene 20.1 kB 0 B
frontend/dist-report/exporter/src/exporter/scenes/ExporterInsightScene 7.28 kB 0 B
frontend/dist-report/exporter/src/exporter/scenes/ExporterInterviewScene 310 kB 0 B
frontend/dist-report/exporter/src/exporter/scenes/ExporterNotebookScene 2.99 MB 0 B
frontend/dist-report/exporter/src/exporter/scenes/ExporterRecordingScene 5.63 kB 0 B
frontend/dist-report/exporter/src/exporterSharedChunkAnchors 1.26 kB 0 B
frontend/dist-report/exporter/src/lib/components/ActivityLog/describers 129 kB 0 B
frontend/dist-report/exporter/src/lib/components/Cards/TextCard/TextCardMarkdownEditor 10.6 kB 0 B
frontend/dist-report/exporter/src/lib/components/MonacoDiffEditor 533 B 0 B
frontend/dist-report/exporter/src/lib/lemon-ui/LemonMarkdown/MermaidDiagram 2 kB 0 B
frontend/dist-report/exporter/src/lib/lemon-ui/LemonTextArea/LemonTextAreaMarkdown 790 B 0 B
frontend/dist-report/exporter/src/lib/lemon-ui/Link/Link 415 B 0 B
frontend/dist-report/exporter/src/lib/monaco/CodeEditor 448 B 0 B
frontend/dist-report/exporter/src/lib/monaco/CodeEditorImpl 26.6 kB 0 B
frontend/dist-report/exporter/src/lib/monaco/CodeEditorInline 649 B 0 B
frontend/dist-report/exporter/src/lib/monaco/vimMode 211 kB 0 B
frontend/dist-report/exporter/src/lib/ui/Button/ButtonPrimitives 482 B 0 B
frontend/dist-report/exporter/src/queries/nodes/WebVitals/WebVitals 11.6 kB 0 B
frontend/dist-report/exporter/src/queries/nodes/WebVitals/WebVitalsPathBreakdown 4.72 kB 0 B
frontend/dist-report/exporter/src/queries/Query/Query 5.15 kB 0 B
frontend/dist-report/exporter/src/queries/schema 1 MB 0 B
frontend/dist-report/exporter/src/scenes/approvals/changeRequestsLogic 622 B 0 B
frontend/dist-report/exporter/src/scenes/authentication/login/loginLogic 569 B 0 B
frontend/dist-report/exporter/src/scenes/authentication/shared/passkeyLogic 602 B 0 B
frontend/dist-report/exporter/src/scenes/data-pipelines/event-filtering/EventFilterScene 22.7 kB 0 B
frontend/dist-report/exporter/src/scenes/data-pipelines/TransformationsScene 8.06 kB 0 B
frontend/dist-report/exporter/src/scenes/experiments/notebook/NotebookCompactTable 1.51 kB 0 B
frontend/dist-report/exporter/src/scenes/hog-functions/misc/Diff 1.35 kB 0 B
frontend/dist-report/exporter/src/scenes/insights/views/BoxPlot/BoxPlot 4.45 kB 0 B
frontend/dist-report/exporter/src/scenes/insights/views/CalendarHeatMap/CalendarHeatMap 8.85 kB 0 B
frontend/dist-report/exporter/src/scenes/insights/views/RegionMap/RegionMap 30.3 kB 0 B
frontend/dist-report/exporter/src/scenes/insights/views/WorldMap/WorldMap 1.04 MB 0 B
frontend/dist-report/exporter/src/scenes/models/ModelsScene 20 kB 0 B
frontend/dist-report/exporter/src/scenes/models/NodeDetailScene 18.9 kB 0 B
frontend/dist-report/monaco-editor-worker/src/lib/monaco/workers/monacoEditorWorker 288 kB 0 B
frontend/dist-report/monaco-json-worker/src/lib/monaco/workers/monacoJsonWorker 419 kB 0 B
frontend/dist-report/monaco-typescript-worker/src/lib/monaco/workers/monacoTsWorker 7.02 MB 0 B
frontend/dist-report/posthog-app/_parent/products/actions/frontend/pages/Action 29.5 kB 0 B
frontend/dist-report/posthog-app/_parent/products/actions/frontend/pages/Actions 7.12 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_gateway/frontend/AIGatewayScene 13.7 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilityScene 122 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilitySessionScene 20.2 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilityTraceScene 133 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilityUsers 4.26 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/clusters/AIObservabilityClusterScene 22.3 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/clusters/AIObservabilityClustersScene 54.4 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetScene 21.2 kB -6 B (-0.03%)
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetsScene 4.58 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluation 61.3 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluationsScene 34.4 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/evaluations/EvaluationTemplates 671 B 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/LLMASessionFeedbackDisplay 4.81 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/playground/AIObservabilityPlaygroundScene 38.1 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/prompts/LLMPromptScene 34.3 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/prompts/LLMPromptsScene 5.73 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/tags/AIObservabilityTag 33.4 kB 0 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/tags/AIObservabilityTagsScene 13.2 kB 0 B
frontend/dist-report/posthog-app/_parent/products/business_knowledge/frontend/scenes/BusinessKnowledgeScene 25.3 kB 0 B
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/components/Assignee/CyclotronJobInputAssignee 1.38 kB 0 B
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/components/SlaBusinessHours/CyclotronJobInputBusinessHours 2.7 kB 0 B
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/components/TicketTags/CyclotronJobInputTicketTags 783 B 0 B
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/scenes/settings/SupportSettingsScene 7.87 kB 0 B
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/scenes/ticket/SupportTicketScene 37.3 kB +225 B (+0.61%)
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/scenes/tickets/SupportTicketsScene 2.19 kB 0 B
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/CustomerAnalyticsScene 101 kB 0 B
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/scenes/CustomerAnalyticsConfigurationScene/CustomerAnalyticsConfigurationScene 8.62 kB 0 B
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyBuilderScene/CustomerJourneyBuilderScene 7.75 kB 0 B
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyTemplatesScene/CustomerJourneyTemplatesScene 10.1 kB 0 B
frontend/dist-report/posthog-app/_parent/products/data_warehouse/DataWarehouseScene 2.07 kB 0 B
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/NewSourceScene/NewSourceScene 3.73 kB 0 B
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SchemaScene/SchemaScene 34.7 kB 0 B
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SourceConnectScene/SourceConnectScene 7.54 kB 0 B
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SourceScene/SourceScene 3.4 kB 0 B
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SourcesScene/SourcesScene 8.14 kB 0 B
frontend/dist-report/posthog-app/_parent/products/early_access_features/frontend/EarlyAccessFeature 7.14 kB 0 B
frontend/dist-report/posthog-app/_parent/products/early_access_features/frontend/EarlyAccessFeatures 4.24 kB 0 B
frontend/dist-report/posthog-app/_parent/products/endpoints/frontend/EndpointScene 49.1 kB 0 B
frontend/dist-report/posthog-app/_parent/products/endpoints/frontend/EndpointsScene 26.9 kB 0 B
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsAuthorScene 5.52 kB 0 B
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsScene 24.4 kB 0 B
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/PullRequestDetailScene 21 kB 0 B
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunDetailScene 6.91 kB 0 B
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunsScene 19.5 kB 0 B
frontend/dist-report/posthog-app/_parent/products/error_tracking/frontend/scenes/ErrorTrackingFingerprintsScene/ErrorTrackingIssueFingerprintsScene 8.2 kB 0 B
frontend/dist-report/posthog-app/_parent/products/error_tracking/frontend/scenes/ErrorTrackingIssueScene/ErrorTrackingIssueScene 103 kB 0 B
frontend/dist-report/posthog-app/_parent/products/error_tracking/frontend/scenes/ErrorTrackingScene/ErrorTrackingScene 45.1 kB 0 B
frontend/dist-report/posthog-app/_parent/products/feature_flags/frontend/FeatureFlagTemplatesScene 6.92 kB 0 B
frontend/dist-report/posthog-app/_parent/products/games/368Hedgehogs/368Hedgehogs 5.24 kB 0 B
frontend/dist-report/posthog-app/_parent/products/games/FlappyHog/FlappyHog 5.7 kB 0 B
frontend/dist-report/posthog-app/_parent/products/growth/frontend/IdentityMatchingScene 36.4 kB 0 B
frontend/dist-report/posthog-app/_parent/products/legal_documents/frontend/scenes/LegalDocumentNewScene 60.6 kB 0 B
frontend/dist-report/posthog-app/_parent/products/legal_documents/frontend/scenes/LegalDocumentsScene 6.88 kB 0 B
frontend/dist-report/posthog-app/_parent/products/links/frontend/LinkScene 25.9 kB 0 B
frontend/dist-report/posthog-app/_parent/products/links/frontend/LinksScene 5.66 kB 0 B
frontend/dist-report/posthog-app/_parent/products/live_debugger/frontend/LiveDebugger 20.1 kB 0 B
frontend/dist-report/posthog-app/_parent/products/logs/frontend/components/LogsViewer/LogsViewerModal/LogsViewerModal 2.45 kB 0 B
frontend/dist-report/posthog-app/_parent/products/logs/frontend/LogsScene 24 kB 0 B
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsAlertDetailScene/LogsAlertDetailScene 19.2 kB 0 B
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsAlertNotificationDetailScene/LogsAlertNotificationDetailScene 9.58 kB 0 B
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsSamplingDetailScene/LogsSamplingDetailScene 6.63 kB 0 B
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsSamplingNewScene/LogsSamplingNewScene 3.63 kB 0 B
frontend/dist-report/posthog-app/_parent/products/managed_migrations/frontend/ManagedMigration 16.2 kB 0 B
frontend/dist-report/posthog-app/_parent/products/mcp_analytics/frontend/MCPAnalyticsScene 129 kB 0 B
frontend/dist-report/posthog-app/_parent/products/mcp_analytics/frontend/MCPAnalyticsToolDetail 16.5 kB 0 B
frontend/dist-report/posthog-app/_parent/products/metrics/frontend/MetricsScene 23.9 kB -6 B (-0.03%)
frontend/dist-report/posthog-app/_parent/products/posthog_ai/frontend/components/QuestionRenderer 1.75 kB 0 B
frontend/dist-report/posthog-app/_parent/products/posthog_ai/frontend/components/ReadonlyRunSurfaceImpl 1.68 kB 0 B
frontend/dist-report/posthog-app/_parent/products/posthog_ai/frontend/components/tool/builtinToolRenderers 4.48 kB 0 B
frontend/dist-report/posthog-app/_parent/products/posthog_ai/frontend/components/tool/EditDiffRenderer 3.23 kB 0 B
frontend/dist-report/posthog-app/_parent/products/posthog_ai/frontend/scenes/TaskTracker/TaskTracker 32 kB 0 B
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/stickiness/StickinessBarChart/StickinessBarChart 4.93 kB 0 B
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/stickiness/StickinessLineChart/StickinessLineChart 4.82 kB 0 B
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsBarChart/TrendsBarChart 10.3 kB 0 B
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsLifecycleChart/TrendsLifecycleChart 6.45 kB 0 B
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsLineChart/TrendsLineChart 6.63 kB 0 B
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsPieChart/TrendsPieChart 5.53 kB 0 B
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsSlopeChart/TrendsSlopeChart 3.04 kB 0 B
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/observations/ReplayObservation 21.2 kB 0 B
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ReplayScanner 44 kB 0 B
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ReplayScannersScene 23.8 kB 0 B
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ScannerEditorScene 27.4 kB 0 B
frontend/dist-report/posthog-app/_parent/products/revenue_analytics/frontend/revenueAnalyticsLogic 1.9 kB 0 B
frontend/dist-report/posthog-app/_parent/products/revenue_analytics/frontend/RevenueAnalyticsScene 31.4 kB 0 B
frontend/dist-report/posthog-app/_parent/products/session_summaries/frontend/SessionGroupSummariesTable 5.91 kB 0 B
frontend/dist-report/posthog-app/_parent/products/session_summaries/frontend/SessionGroupSummaryScene 25.4 kB 0 B
frontend/dist-report/posthog-app/_parent/products/skills/frontend/LLMSkillScene 1.98 kB 0 B
frontend/dist-report/posthog-app/_parent/products/skills/frontend/LLMSkillsScene 1.99 kB 0 B
frontend/dist-report/posthog-app/_parent/products/tasks/frontend/SlackTaskContextScene 9.51 kB 0 B
frontend/dist-report/posthog-app/_parent/products/tracing/frontend/TracingScene 95.7 kB 0 B
frontend/dist-report/posthog-app/_parent/products/user_interviews/frontend/UserInterview 10.8 kB 0 B
frontend/dist-report/posthog-app/_parent/products/user_interviews/frontend/UserInterviewResponse 8.55 kB 0 B
frontend/dist-report/posthog-app/_parent/products/user_interviews/frontend/UserInterviews 6.98 kB 0 B
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewIndexScene 3.52 kB 0 B
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewRunScene 47.7 kB 0 B
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewRunsScene 8.75 kB 0 B
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewSettingsScene 12.2 kB 0 B
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotHistoryScene 14.8 kB 0 B
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotOverviewScene 20.3 kB 0 B
frontend/dist-report/posthog-app/_parent/products/workflows/frontend/TemplateLibrary/MessageTemplate 17.6 kB 0 B
frontend/dist-report/posthog-app/_parent/products/workflows/frontend/Workflows/WorkflowScene 111 kB 0 B
frontend/dist-report/posthog-app/_parent/products/workflows/frontend/WorkflowsScene 62.5 kB 0 B
frontend/dist-report/posthog-app/src/index 62.6 kB 0 B
frontend/dist-report/posthog-app/src/layout/panel-layout/ai-first/tabs/NavTabChat 7.93 kB 0 B
frontend/dist-report/posthog-app/src/lib/components/ActivityLog/describers 130 kB 0 B
frontend/dist-report/posthog-app/src/lib/components/Cards/TextCard/TextCardMarkdownEditor 10.6 kB 0 B
frontend/dist-report/posthog-app/src/lib/components/MonacoDiffEditor 533 B 0 B
frontend/dist-report/posthog-app/src/lib/components/Shortcuts/utils/DebugCHQueriesImpl 20.1 kB 0 B
frontend/dist-report/posthog-app/src/lib/components/Support/supportRouterLogic 1.56 kB 0 B
frontend/dist-report/posthog-app/src/lib/lemon-ui/LemonMarkdown/MermaidDiagram 2 kB 0 B
frontend/dist-report/posthog-app/src/lib/lemon-ui/LemonTextArea/LemonTextAreaMarkdown 790 B 0 B
frontend/dist-report/posthog-app/src/lib/lemon-ui/Link/Link 415 B 0 B
frontend/dist-report/posthog-app/src/lib/monaco/CodeEditor 448 B 0 B
frontend/dist-report/posthog-app/src/lib/monaco/CodeEditorImpl 26.6 kB 0 B
frontend/dist-report/posthog-app/src/lib/monaco/CodeEditorInline 649 B 0 B
frontend/dist-report/posthog-app/src/lib/monaco/vimMode 211 kB 0 B
frontend/dist-report/posthog-app/src/lib/ui/Button/ButtonPrimitives 482 B 0 B
frontend/dist-report/posthog-app/src/queries/nodes/WebVitals/WebVitals 12.9 kB 0 B
frontend/dist-report/posthog-app/src/queries/nodes/WebVitals/WebVitalsPathBreakdown 5.17 kB 0 B
frontend/dist-report/posthog-app/src/queries/Query/Query 6.51 kB 0 B
frontend/dist-report/posthog-app/src/queries/schema 1 MB 0 B
frontend/dist-report/posthog-app/src/scenes/activity/explore/EventsScene 8.68 kB 0 B
frontend/dist-report/posthog-app/src/scenes/activity/explore/SessionsScene 10 kB 0 B
frontend/dist-report/posthog-app/src/scenes/activity/live/LiveEventsTable 6.61 kB 0 B
frontend/dist-report/posthog-app/src/scenes/agentic/AgenticAuthorize 5.51 kB 0 B
frontend/dist-report/posthog-app/src/scenes/approvals/ApprovalDetail 17.7 kB 0 B
frontend/dist-report/posthog-app/src/scenes/approvals/changeRequestsLogic 622 B 0 B
frontend/dist-report/posthog-app/src/scenes/audit-logs/AdvancedActivityLogsScene 43.1 kB 0 B
frontend/dist-report/posthog-app/src/scenes/AuthenticatedShell 208 kB +293 B (+0.14%)
frontend/dist-report/posthog-app/src/scenes/authentication/account/AccountConnected 3.32 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/account/AgenticAccountMismatch 2.43 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/account/credential-review/CredentialReview 5.04 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/cli/CLIAuthorize 12.1 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/cli/CLILive 4.05 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/email-mfa-verify/EmailMFAVerify 3.04 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/invite-signup/InviteSignup 1.44 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/login-2fa/Login2FA 4.74 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/login/Login 1.53 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/login/loginLogic 569 B 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/password-reset/PasswordReset 4.5 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/password-reset/PasswordResetComplete 3.06 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/shared/passkeyLogic 602 B 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/signup/SignupContainer 1.42 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/two-factor-reset/TwoFactorReset 4.04 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/vercel/VercelConnect 5.03 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/vercel/VercelLinkError 2.3 kB 0 B
frontend/dist-report/posthog-app/src/scenes/authentication/verify-email/VerifyEmail 1.44 kB 0 B
frontend/dist-report/posthog-app/src/scenes/billing/AuthorizationStatus 768 B 0 B
frontend/dist-report/posthog-app/src/scenes/billing/Billing 717 B 0 B
frontend/dist-report/posthog-app/src/scenes/billing/BillingSection 21.8 kB 0 B
frontend/dist-report/posthog-app/src/scenes/code-canvas/CodeCanvasLink 1.89 kB 0 B
frontend/dist-report/posthog-app/src/scenes/cohorts/Cohort 34.1 kB 0 B
frontend/dist-report/posthog-app/src/scenes/cohorts/CohortCalculationHistory 7.34 kB 0 B
frontend/dist-report/posthog-app/src/scenes/cohorts/Cohorts 11 kB 0 B
frontend/dist-report/posthog-app/src/scenes/coupons/Coupons 895 B 0 B
frontend/dist-report/posthog-app/src/scenes/dashboard/Dashboard 7.93 kB 0 B
frontend/dist-report/posthog-app/src/scenes/dashboard/dashboards/Dashboards 22.7 kB 0 B
frontend/dist-report/posthog-app/src/scenes/dashboard/dashboards/templates/DashboardTemplateCopyScene 7.06 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-management/DataManagementScene 6.82 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-management/definition/DefinitionEdit 23.4 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-management/definition/DefinitionView 31.6 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-management/MaterializedColumns/MaterializedColumns 12.8 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-management/variables/SqlVariableEditScene 8.53 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-pipelines/batch-exports/BatchExportScene 67.8 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-pipelines/DataPipelinesNewScene 5.32 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-pipelines/DestinationsScene 5.71 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-pipelines/event-filtering/EventFilterScene 23.3 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-pipelines/legacy-plugins/LegacyPluginScene 22 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-pipelines/TransformationsScene 4.92 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-pipelines/WebScriptsScene 5.57 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-warehouse/DataWarehouseScene 2.06 kB 0 B
frontend/dist-report/posthog-app/src/scenes/data-warehouse/editor/EditorScene 4.98 kB 0 B
frontend/dist-report/posthog-app/src/scenes/debug/DebugScene 25.5 kB 0 B
frontend/dist-report/posthog-app/src/scenes/debug/hog/HogRepl 8.98 kB 0 B
frontend/dist-report/posthog-app/src/scenes/experiments/Experiment 227 kB 0 B
frontend/dist-report/posthog-app/src/scenes/experiments/Experiments 23.3 kB 0 B
frontend/dist-report/posthog-app/src/scenes/experiments/notebook/NotebookCompactTable 2.01 kB 0 B
frontend/dist-report/posthog-app/src/scenes/experiments/SharedMetrics/SharedMetric 12.5 kB 0 B
frontend/dist-report/posthog-app/src/scenes/experiments/SharedMetrics/SharedMetrics 1.84 kB 0 B
frontend/dist-report/posthog-app/src/scenes/exports/ExportsScene 5.56 kB 0 B
frontend/dist-report/posthog-app/src/scenes/feature-flags/FeatureFlag 117 kB +6 B (+0.01%)
frontend/dist-report/posthog-app/src/scenes/feature-flags/FeatureFlags 3.94 kB 0 B
frontend/dist-report/posthog-app/src/scenes/groups/Group 23.8 kB 0 B
frontend/dist-report/posthog-app/src/scenes/groups/Groups 9.65 kB 0 B
frontend/dist-report/posthog-app/src/scenes/groups/GroupsNew 8.62 kB 0 B
frontend/dist-report/posthog-app/src/scenes/health-alerts/HealthAlertsScene 6.29 kB 0 B
frontend/dist-report/posthog-app/src/scenes/health/categoryDetail/HealthCategoryDetailScene 13.4 kB 0 B
frontend/dist-report/posthog-app/src/scenes/health/HealthScene 17.2 kB 0 B
frontend/dist-report/posthog-app/src/scenes/health/pipelineStatus/PipelineStatusScene 12.2 kB 0 B
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmap/HeatmapNewScene 5.18 kB 0 B
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmap/HeatmapRecordingScene 5.18 kB 0 B
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmap/HeatmapScene 7.9 kB 0 B
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmaps/HeatmapsScene 5.2 kB 0 B
frontend/dist-report/posthog-app/src/scenes/hog-functions/HogFunctionScene 60.7 kB 0 B
frontend/dist-report/posthog-app/src/scenes/hog-functions/misc/Diff 1.35 kB 0 B
frontend/dist-report/posthog-app/src/scenes/inbox/InboxScene 238 kB 0 B
frontend/dist-report/posthog-app/src/scenes/insights/InsightQuickStart/InsightQuickStart 8.19 kB 0 B
frontend/dist-report/posthog-app/src/scenes/insights/InsightScene 43.6 kB 0 B
frontend/dist-report/posthog-app/src/scenes/insights/views/BoxPlot/BoxPlot 4.96 kB 0 B
frontend/dist-report/posthog-app/src/scenes/insights/views/CalendarHeatMap/CalendarHeatMap 9.29 kB 0 B
frontend/dist-report/posthog-app/src/scenes/insights/views/RegionMap/RegionMap 30.8 kB 0 B
frontend/dist-report/posthog-app/src/scenes/insights/views/WorldMap/WorldMap 6.13 kB 0 B
frontend/dist-report/posthog-app/src/scenes/instance/AsyncMigrations/AsyncMigrations 14.3 kB 0 B
frontend/dist-report/posthog-app/src/scenes/instance/DeadLetterQueue/DeadLetterQueue 6.68 kB 0 B
frontend/dist-report/posthog-app/src/scenes/instance/QueryPerformance/QueryPerformance 12.5 kB 0 B
frontend/dist-report/posthog-app/src/scenes/instance/SystemStatus/SystemStatus 18.2 kB 0 B
frontend/dist-report/posthog-app/src/scenes/integrations/IntegrationsLandingScene 1.67 kB 0 B
frontend/dist-report/posthog-app/src/scenes/IntegrationsRedirect/IntegrationsRedirect 955 B 0 B
frontend/dist-report/posthog-app/src/scenes/marketing-analytics/MarketingAnalyticsScene 47 kB 0 B
frontend/dist-report/posthog-app/src/scenes/max/Max 20.9 kB 0 B
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/CreateInsightWidget 7.39 kB 0 B
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/CreateNotebookWidget 1.86 kB 0 B
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/ErrorTrackingWidget 7.83 kB 0 B
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/QueryWidget 7.34 kB 0 B
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/SearchSessionRecordingsWidget 7.85 kB 0 B
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/UpsertDashboardWidget 1.71 kB 0 B
frontend/dist-report/posthog-app/src/scenes/models/ModelsScene 20.6 kB 0 B
frontend/dist-report/posthog-app/src/scenes/models/NodeDetailScene 19.7 kB 0 B
frontend/dist-report/posthog-app/src/scenes/moveToPostHogCloud/MoveToPostHogCloud 4.5 kB 0 B
frontend/dist-report/posthog-app/src/scenes/new-tab/NewTabScene 2.79 kB 0 B
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebookCanvasScene 12.6 kB 0 B
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebookPanel/NotebookPanel 14.6 kB 0 B
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebookScene 21 kB 0 B
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebooksScene 8.73 kB 0 B
frontend/dist-report/posthog-app/src/scenes/oauth/OAuthAuthorize 810 B 0 B
frontend/dist-report/posthog-app/src/scenes/onboarding/legacy/coupon/OnboardingCouponRedemption 1.34 kB 0 B
frontend/dist-report/posthog-app/src/scenes/onboarding/Onboarding 781 kB 0 B
frontend/dist-report/posthog-app/src/scenes/onboarding/shared/sdkHealth/SdkHealthScene 9.07 kB 0 B
frontend/dist-report/posthog-app/src/scenes/organization/ConfirmOrganization/ConfirmOrganization 4.5 kB 0 B
frontend/dist-report/posthog-app/src/scenes/organization/Create/Create 704 B 0 B
frontend/dist-report/posthog-app/src/scenes/organization/Deactivated 1.17 kB 0 B
frontend/dist-report/posthog-app/src/scenes/organization/PendingDeletion 2.24 kB 0 B
frontend/dist-report/posthog-app/src/scenes/persons/PersonScene 28.7 kB 0 B
frontend/dist-report/posthog-app/src/scenes/persons/PersonsScene 11.9 kB 0 B
frontend/dist-report/posthog-app/src/scenes/PreflightCheck/PreflightCheck 5.57 kB 0 B
frontend/dist-report/posthog-app/src/scenes/product-tours/ProductTour 273 kB 0 B
frontend/dist-report/posthog-app/src/scenes/product-tours/ProductTours 6 kB 0 B
frontend/dist-report/posthog-app/src/scenes/project-homepage/ProjectHomepage 27.6 kB 0 B
frontend/dist-report/posthog-app/src/scenes/project/Create/Create 982 B 0 B
frontend/dist-report/posthog-app/src/scenes/project/PendingDeletion 2.6 kB 0 B
frontend/dist-report/posthog-app/src/scenes/resource-transfer/ResourceTransfer 10.5 kB 0 B
frontend/dist-report/posthog-app/src/scenes/saved-insights/SavedInsights 3.5 kB 0 B
frontend/dist-report/posthog-app/src/scenes/session-recordings/detail/SessionRecordingDetail 8.65 kB 0 B
frontend/dist-report/posthog-app/src/scenes/session-recordings/file-playback/SessionRecordingFilePlaybackScene 11.3 kB 0 B
frontend/dist-report/posthog-app/src/scenes/session-recordings/kiosk/SessionRecordingsKiosk 16.8 kB 0 B
frontend/dist-report/posthog-app/src/scenes/session-recordings/player/modal/SessionPlayerModal 8.36 kB 0 B
frontend/dist-report/posthog-app/src/scenes/session-recordings/player/snapshot-processing/DecompressionWorkerManager 323 B 0 B
frontend/dist-report/posthog-app/src/scenes/session-recordings/playlist/SessionRecordingsPlaylistScene 11.8 kB 0 B
frontend/dist-report/posthog-app/src/scenes/session-recordings/SessionRecordings 7.78 kB 0 B
frontend/dist-report/posthog-app/src/scenes/session-recordings/settings/SessionRecordingsSettingsScene 8.98 kB 0 B
frontend/dist-report/posthog-app/src/scenes/sessions/SessionProfileScene 21.9 kB 0 B
frontend/dist-report/posthog-app/src/scenes/settings/SettingsMap 6.76 kB 0 B
frontend/dist-report/posthog-app/src/scenes/settings/SettingsScene 10.1 kB 0 B
frontend/dist-report/posthog-app/src/scenes/sites/Site 1.57 kB 0 B
frontend/dist-report/posthog-app/src/scenes/startups/StartupProgram 21.1 kB 0 B
frontend/dist-report/posthog-app/src/scenes/StripeConfirmInstall/StripeConfirmInstall 3.7 kB 0 B
frontend/dist-report/posthog-app/src/scenes/subscriptions/SubscriptionScene 17 kB 0 B
frontend/dist-report/posthog-app/src/scenes/subscriptions/SubscriptionsScene 7.06 kB 0 B
frontend/dist-report/posthog-app/src/scenes/surveys/forms/SurveyFormBuilder 3.06 kB 0 B
frontend/dist-report/posthog-app/src/scenes/surveys/Survey 7.65 kB 0 B
frontend/dist-report/posthog-app/src/scenes/surveys/Surveys 27.8 kB 0 B
frontend/dist-report/posthog-app/src/scenes/surveys/wizard/SurveyWizard 69.8 kB 0 B
frontend/dist-report/posthog-app/src/scenes/themes/CustomCssScene 4.94 kB 0 B
frontend/dist-report/posthog-app/src/scenes/toolbar-launch/ToolbarLaunch 4.01 kB 0 B
frontend/dist-report/posthog-app/src/scenes/Unsubscribe/Unsubscribe 1.71 kB 0 B
frontend/dist-report/posthog-app/src/scenes/web-analytics/recap/WebAnalyticsRecapScene 17.5 kB 0 B
frontend/dist-report/posthog-app/src/scenes/web-analytics/SessionAttributionExplorer/SessionAttributionExplorerScene 12.5 kB 0 B
frontend/dist-report/posthog-app/src/scenes/web-analytics/WebAnalyticsScene 21.2 kB 0 B
frontend/dist-report/posthog-app/src/scenes/wizard/Wizard 4.45 kB 0 B
frontend/dist-report/posthog-app/src/sharedChunkAnchors 1.33 kB 0 B
frontend/dist-report/render-query/src/render-query/render-query 25 MB +78 B (0%)
frontend/dist-report/toolbar/src/toolbar/toolbar 11.3 MB +78 B (0%)

compressed-size-action

@luke-belton
luke-belton force-pushed the posthog-code/login-as-customer-from-ticket branch from af2d0e2 to ce47321 Compare June 25, 2026 16:12
@luke-belton
luke-belton changed the base branch from master to luke/add-identity-verified June 29, 2026 16:19
@luke-belton
luke-belton force-pushed the luke/add-identity-verified branch from 7ff302a to 1982a19 Compare June 29, 2026 16:57
@luke-belton
luke-belton force-pushed the posthog-code/login-as-customer-from-ticket branch from 6d842b4 to ae3e1a9 Compare June 29, 2026 17:06
@luke-belton
luke-belton force-pushed the luke/add-identity-verified branch from 1982a19 to 481ec72 Compare July 3, 2026 08:33
@luke-belton
luke-belton force-pushed the posthog-code/login-as-customer-from-ticket branch from ae3e1a9 to cb934a4 Compare July 3, 2026 08:34
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

⚠️ Bundle size — 🔺 +521 B (+0.0%)

Uncompressed size of every built .js bundle, compared against the base branch.

Total: 64.59 MiB · 🔺 +521 B (+0.0%)

No file changed by more than 1000 B.

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

Eager graph — within budget

How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.

Root Eager (shipped) Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
1.24 MiB · 22 files no change ███░░░░░░░ 27.5% of 4.51 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.20 MiB · 3,001 files 🔺 +2.3 KiB (+0.0%) ████████░░ 84.4% of 9.71 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx

Largest files eagerly shipped from src/index.tsx
Size File
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
6.3 KiB ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
4.5 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
3.9 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.4 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
789 B src/scenes/ChunkLoadErrorBoundary.tsx
762 B src/index.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
281.3 KiB ../node_modules/.pnpm/posthog-js@1.405.2/node_modules/posthog-js/dist/rrweb.js
267.7 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
236.0 KiB src/taxonomy/core-filter-definitions-by-group.json
224.4 KiB ../node_modules/.pnpm/posthog-js@1.405.2/node_modules/posthog-js/dist/module.js
167.1 KiB src/queries/validators.js
154.3 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
106.2 KiB src/lib/api.ts
94.0 KiB ../packages/quill/packages/quill/dist/index.js
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js

Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479

Toolbar bundle — eager 2.18 MiB within budget

What the toolbar ships to customer pages, measured from the esbuild output (minified, post-tree-shake). The eager set is the entry plus everything statically imported from it — fetched before any feature runs; deferred chunks load lazily. The eager guardrail is 5.72 MiB. Each output file must also stay below 10 MB, where CloudFront stops compressing it. The module boundary is enforced separately by check-toolbar-graph.

Metric Size Δ vs base Budget
Eager (shipped)
entry + static imports
2.18 MiB · 17 files no change ████░░░░░░ 38.1% of 5.72 MiB
Deferred (lazy) 2.07 MiB · 33 files no change n/a — loads on demand
Loader dist/toolbar.js 1.1 KiB no change █░░░░░░░░░ 5.8% of 19.5 KiB
Largest eagerly-shipped chunks
Size File
713.2 KiB dist/toolbar/toolbar-app-DW4OA6K5.css
543.1 KiB dist/toolbar/chunk-chunk-DZIY6ZHS.js
484.2 KiB dist/toolbar/chunk-chunk-OA2ZAIIW.js
133.7 KiB dist/toolbar/chunk-chunk-LCXEX372.js
131.8 KiB dist/toolbar/chunk-chunk-T5KY5WYR.js
71.0 KiB dist/toolbar/toolbar-app-X5CCAKF6.js
69.0 KiB dist/toolbar/chunk-chunk-27JL52RE.js
35.6 KiB dist/toolbar/chunk-chunk-FWYAUBW5.js
20.9 KiB dist/toolbar/chunk-chunk-KJSY6JVG.js
12.2 KiB dist/toolbar/chunk-chunk-PIK3PADE.js

Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile

Dist folder size — 🔺 +16.3 KiB (+0.0%)

Total size of the built frontend/dist folder (all assets), compared against the base branch.

Total: 1356.66 MiB · 🔺 +16.3 KiB (+0.0%)

Playwright — all passed

All tests passed.

View test results →

⚠️ Backend coverage — 96.0% of changed backend lines covered — 8 uncovered

🧪 Backend test coverage

Patch coverage — changed backend lines (products + core): ███████████████████░ 96.0% (231 / 239)

File Patch Uncovered changed lines
products/conversations/backend/api/widget.py 85.7% 65–66
ee/admin/loginas_views.py 92.9% 45, 63, 175–176, 189, 229

🤖 Agents: add a test covering the lines above, or note why under "How did you test this code?". Machine-readable gap list: the patch-coverage artifact on this run (gh run download 29923624437 -n patch-coverage), or the coverage-data block at the end of this comment.

Per-product line coverage (touched products)
Product Coverage Lines
platform_features ██░░░░░░░░░░░░░░░░░░ 12.1% 7 / 58
batch_exports ████████░░░░░░░░░░░░ 39.6% 8,414 / 21,250
demo ███████████░░░░░░░░░ 56.2% 1,497 / 2,663
warehouse_sources_queue ████████████░░░░░░░░ 59.2% 148 / 250
tasks ██████████████░░░░░░ 68.2% 29,946 / 43,927
data_tools ██████████████░░░░░░ 70.0% 63 / 90
ai_gateway ███████████████░░░░░ 75.0% 9 / 12
signals ████████████████░░░░ 78.9% 20,159 / 25,545
cdp ████████████████░░░░ 80.7% 3,117 / 3,863
data_modeling █████████████████░░░ 82.8% 5,529 / 6,675
wizard █████████████████░░░ 84.8% 935 / 1,102
notebooks █████████████████░░░ 85.3% 7,266 / 8,522
agent_platform █████████████████░░░ 86.4% 3,807 / 4,405
actions █████████████████░░░ 86.6% 717 / 828
cohorts █████████████████░░░ 87.4% 4,426 / 5,063
product_tours ██████████████████░░ 87.9% 1,303 / 1,482
exports ██████████████████░░ 88.4% 6,949 / 7,861
engineering_analytics ██████████████████░░ 88.9% 5,507 / 6,196
business_knowledge ██████████████████░░ 89.0% 4,391 / 4,936
conversations ██████████████████░░ 89.3% 16,630 / 18,630
dashboards ██████████████████░░ 89.4% 5,983 / 6,693
visual_review ██████████████████░░ 89.4% 5,818 / 6,505
mcp_analytics ██████████████████░░ 89.7% 2,663 / 2,969
error_tracking ██████████████████░░ 89.7% 10,174 / 11,342
alerts ██████████████████░░ 89.9% 4,054 / 4,508
early_access_features ██████████████████░░ 90.1% 1,031 / 1,144
streamlit_apps ██████████████████░░ 90.4% 2,501 / 2,767
links ██████████████████░░ 90.6% 183 / 202
slack_app ██████████████████░░ 90.7% 9,025 / 9,948
marketing_analytics ██████████████████░░ 91.0% 11,792 / 12,964
stamphog ██████████████████░░ 91.1% 4,056 / 4,450
product_analytics ██████████████████░░ 91.3% 5,800 / 6,351
mcp_store ██████████████████░░ 91.9% 4,257 / 4,634
notifications ███████████████████░ 92.6% 1,011 / 1,092
ai_observability ███████████████████░ 92.7% 14,845 / 16,018
data_warehouse ███████████████████░ 92.7% 20,300 / 21,896
surveys ███████████████████░ 93.0% 5,730 / 6,163
web_analytics ███████████████████░ 93.0% 14,099 / 15,159
posthog_ai ███████████████████░ 93.2% 1,325 / 1,421
approvals ███████████████████░ 93.3% 3,426 / 3,671
reminders ███████████████████░ 93.4% 468 / 501
workflows ███████████████████░ 93.5% 6,337 / 6,775
managed_migrations ███████████████████░ 93.8% 1,220 / 1,300
legal_documents ███████████████████░ 94.1% 1,568 / 1,667
endpoints ███████████████████░ 94.1% 8,640 / 9,177
messaging ███████████████████░ 94.3% 2,682 / 2,845
revenue_analytics ███████████████████░ 94.5% 3,598 / 3,809
tracing ███████████████████░ 94.5% 2,670 / 2,826
skills ███████████████████░ 94.5% 2,893 / 3,061
review_hog ███████████████████░ 94.6% 6,808 / 7,193
logs ███████████████████░ 95.4% 9,935 / 10,416
experiments ███████████████████░ 95.7% 24,882 / 25,996
replay_vision ███████████████████░ 96.1% 14,857 / 15,461
growth ███████████████████░ 96.1% 3,233 / 3,364
annotations ███████████████████░ 96.2% 732 / 761
feature_flags ███████████████████░ 96.5% 17,110 / 17,734
user_interviews ███████████████████░ 96.5% 2,638 / 2,734
access_control ███████████████████░ 96.8% 851 / 879
warehouse_sources ███████████████████░ 96.9% 316,978 / 327,229
customer_analytics ███████████████████░ 97.3% 7,779 / 7,998
data_catalog ███████████████████░ 97.4% 2,367 / 2,429
analytics_platform ████████████████████ 98.0% 2,112 / 2,155
metrics ████████████████████ 98.2% 2,491 / 2,536
pulse ████████████████████ 98.4% 2,017 / 2,049
live_debugger ████████████████████ 99.2% 613 / 618
field_notes ████████████████████ 99.4% 158 / 159

Report-only. Patch coverage = changed backend lines covered vs origin/master. Sorted lowest first.
Known gaps: lines covered only by Temporal tests show as uncovered; core line numbers may drift if master changed the same file.

Base automatically changed from luke/add-identity-verified to master July 3, 2026 08:51
@luke-belton
luke-belton force-pushed the posthog-code/login-as-customer-from-ticket branch from cb934a4 to 473fec8 Compare July 3, 2026 09:42
@luke-belton
luke-belton marked this pull request as ready for review July 3, 2026 10:15
Comment thread ee/admin/loginas_views.py Outdated
@greptile-apps

greptile-apps Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Reviews (2): Last reviewed commit: "add identity_verified checks before impe..." | Re-trigger Greptile

Comment thread ee/admin/loginas_views.py Outdated
Comment thread ee/admin/loginas_views.py Outdated
@veria-ai

veria-ai Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

PR overview

All previously flagged issues have been addressed. No open security concerns remain on this pull request.

Security review

No open security issues remain on this pull request.

Fixed/addressed: 1 · PR risk: 0/10

@luke-belton
luke-belton requested review from a team and removed request for a team July 3, 2026 12:07

Copy link
Copy Markdown
Contributor Author

@scheduled-actions-posthog

Copy link
Copy Markdown
Contributor

This PR hasn't seen activity in a week! Should it be merged, closed, or further worked on? If you want to keep it open, please remove the stale label – otherwise this will be closed in another week. If you want to permanently keep it open, use the waiting label.

@github-actions

github-actions Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ❌ build failed

The preview didn't come up for commit 238174b. See the build log for the failing step. It'll retry on the next push.

Previews are optional and never block merging. A failure here is often a hogland or tailnet hiccup rather than anything in your PR, so the check stays green and this comment is the status.

@luke-belton luke-belton added the reviewhog ($$$) Reviews pull requests before humans do label Jul 21, 2026
@posthog

posthog Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

🦔 ReviewHog reviewed this pull request

Found 2 must fix, 1 should fix, 1 consider.

Published 4 findings (view the review).

@posthog

posthog Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

ReviewHog Alpha 🦔 If you find any issues helpful - please reply "valid", "invalid", etc., for evaluation purposes 🙏

@posthog posthog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ReviewHog Report

Business logic

Issues: 2 issues

Files (6)
  • ee/admin/loginas_views.py
  • ee/urls.py
  • posthog/middleware.py
  • posthog/api/authentication.py
  • posthog/settings/base_variables.py
  • products/conversations/backend/api/widget.py
What were the main changes
  • New POST /admin/impersonation/from-ticket/ endpoint resolves a support ticket's customer to a User and starts a read-only impersonation session
  • identity_verified gate: explicit False blocks login-as (400), null/true allowed; on verified widget tickets the target is resolved from the HMAC-attested distinct_id rather than the mutable email trait
  • Cross-region handling: if the ticket's inferred region differs from the current deployment region, returns a redirect_url instead of impersonating locally (REGION_DOMAINS)
  • New IMPERSONATION_TICKET_ID_SESSION_KEY session key persists the originating ticket id; /logout now redirects staff back to that ticket instead of the admin user page
  • _configure_impersonation_session refactor consolidates session flag setting + analytics capture shared between loginas_user and the new ticket flow
  • New POSTHOG_INTERNAL_TEAM_ID setting scopes ticket-based impersonation to PostHog's internal support project (with DEBUG-mode fallback to the staff user's current team)
  • Widget API infers a region trait from the reporting app's URL for PostHog's internal support project, feeding the cross-region redirect logic

Frontend

Issues: 2 issues

Files (7)
  • frontend/src/layout/navigation/ImpersonationNotice/AdminLoginButtons.tsx
  • frontend/src/layout/navigation/ImpersonationNotice/adminLoginAs.ts
  • frontend/src/layout/navigation/ImpersonationNotice/impersonationNoticeLogic.ts
  • frontend/src/layout/navigation/ImpersonationNotice/ImpersonationNotice.tsx
  • frontend/src/layout/navigation/ImpersonationNotice/ImpersonationReasonModal.tsx
  • products/conversations/frontend/scenes/ticket/StaffActionsPanel.tsx
  • products/conversations/frontend/scenes/ticket/supportTicketSceneLogic.ts
What were the main changes
  • AdminLoginButtons collapsed into a single direct-login button wired to a new initiateImpersonation flow, replacing the old multi-region admin-redirect buttons
  • loginAsFromTicket (adminLoginAs.ts) calls the new backend endpoint via the existing admin OAuth2 handshake, handling cross-region redirect responses
  • impersonationNoticeLogic: initiateImpersonation action, ReturnToTicketContext persisted across the post-login reload (keyed by email), canReturnToTicket/expiredSessionFromTicket selectors, and clearing of stale ticket context on staff load or mismatched customer
  • ImpersonationNotice: 'Return to ticket #X' button replaces the logout dropdown for ticket-started sessions, same action offered on the session-expired overlay, and reason modals prefilled with 'Investigating ticket #X'
  • ImpersonationReasonModal gains a loading state on the cancel/return button
  • StaffActionsPanel shows a warning banner when the ticket's identity was never assessed and disables the login button with an explanation when verification failed
  • supportTicketSceneLogic now passes ticketNumber and identityVerified into the ticket context consumed by the impersonation logic

Comment thread ee/admin/loginas_views.py Outdated
Comment thread ee/admin/loginas_views.py Outdated
@luke-belton
luke-belton force-pushed the posthog-code/login-as-customer-from-ticket branch 2 times, most recently from 49ec14d to 01c5565 Compare July 22, 2026 09:12
Adds a direct in-app "log in as customer" flow from a support ticket: a
backend endpoint (loginas_user_from_ticket) resolves the ticket's customer,
enforces staff + identity_verified checks, handles cross-region redirects,
and starts a read-only impersonation session that can return to the ticket.

Rebased onto master and squashed. Direct in-app login supersedes the
per-region admin-link approach shipped separately in #64903; master's other
impersonation-tray reworks (change user, ordered members, session expiry)
are preserved.

Squashed commits:
- feat(conversations): log in as customer directly from support ticket
- chore(conversations): address review feedback on ticket impersonation
- return to ticket on ImpersonationNotice
- drop stored return-to-ticket on mismatched impersonation
- add identity_verified checks before impersonation
- fix(conversations): make ticket impersonation testable in local dev
- fix(conversations): guard cross-region redirect against unknown region values
- fix(conversations): resolve verified ticket login-as from attested identity
- fix(conversations): type _get_ticket return so mypy sees Ticket attributes

Generated-By: PostHog Code
Task-Id: c8c004e0-8c63-4a33-84e5-ff34688b8d18
Resolve every identity-verified ticket from the attested distinct_id —
widget verification attests a PostHog distinct_id, while Slack/Teams/email
attest an email into the same read-only field — so the mutable email trait
can never repoint a verified ticket at another account. Gate the
from-ticket session mutations on the login actually rebinding
request.user, so a rejected attempt during an active impersonation can't
report success or stamp the ticket onto an unrelated session. Return the
resolved account's email so the return-to-ticket context doesn't rely on
the mutable ticket trait, and handle a blocked cross-region popup with a
manual open action.

Generated-By: PostHog Code
Task-Id: 4df0bc15-bab3-4238-a27e-9e2ac7399042
@luke-belton
luke-belton force-pushed the posthog-code/login-as-customer-from-ticket branch from 01c5565 to 238174b Compare July 22, 2026 13:22
@luke-belton
luke-belton enabled auto-merge (squash) July 22, 2026 13:23
@luke-belton
luke-belton disabled auto-merge July 22, 2026 13:26
@luke-belton
luke-belton merged commit b3d350f into master Jul 22, 2026
305 of 309 checks passed
@luke-belton
luke-belton deleted the posthog-code/login-as-customer-from-ticket branch July 22, 2026 14:12
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 22, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-22 14:40 UTC Run
prod-us ✅ Deployed 2026-07-22 15:12 UTC Run
prod-eu ✅ Deployed 2026-07-22 15:13 UTC Run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

reviewhog ($$$) Reviews pull requests before humans do

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants