Repository navigation
feat(messaging): attach uploaded files to key sends by their hash - #131763
Conversation
🤖 CI report
|
| Root | Eager (shipped) | Δ vs base | Budget |
|---|---|---|---|
entry (logged-out pages, app bootstrap)src/index.tsx |
1.04 MiB · 25 files | no change | █████████░ 91.2% of 1.14 MiB |
🟡 logged-out boot: index + App + bootApp (preloaded by every page, including /login)src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts |
3.03 MiB · 627 files | no change | ██████████ 100.0% of 3.03 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
3.87 MiB · 1,237 files | no change | ██████████ 96.5% of 4.01 MiB |
dashboard scenesrc/scenes/dashboard/Dashboard.tsx |
7.80 MiB · 3,011 files | no change | ████████░░ 79.3% of 9.84 MiB |
today home pathsrc/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx |
4.85 MiB · 1,868 files | no change | ██████████ 98.4% of 4.93 MiB |
AI-first home pathsrc/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx |
6.07 MiB · 2,292 files | no change | ██████████ 96.8% of 6.27 MiB |
events scenesrc/scenes/activity/explore/EventsScene.tsx |
6.79 MiB · 2,558 files | no change | ███████░░░ 72.1% of 9.41 MiB |
web analytics scenesrc/scenes/web-analytics/WebAnalyticsScene.tsx |
7.87 MiB · 2,947 files | no change | ████████░░ 75.0% of 10.49 MiB |
replay detail scenesrc/scenes/session-recordings/detail/SessionRecordingDetail.tsx |
6.97 MiB · 2,613 files | no change | █████████░ 85.7% of 8.13 MiB |
🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 products/product_analytics/frontend/insights/activityDescriptions stays out of src/index.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/svg/ stays out of src/index.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/components/ stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/layout/navigation-3000/navigationLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/scenes/dashboard/dashboardLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/lemon-ui/LemonMarkdown/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/RichContentEditor/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/CodeSnippet/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/taxonomy/core-filter-definitions-by-group.json stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 node_modules/zod/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/logic/billing/billingLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/ProductEmptyState/productSetupPreloadLogic.ts stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 node_modules/kea-test-utils/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/product_analytics/frontend/insights/activityDescriptions stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/kea-test-utils/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/dashboards/frontend/widgets/previews/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/session-recordings/player/sessionRecordingPlayerLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/panel-layout/ProjectTree/menus/SessionReplayMenuItems.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/taxonomy/core-filter-definitions-by-group.json stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/navigation/projectNoticeLogic.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/navigation/ImpersonationNotice/ImpersonationNotice.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/cohorts/cohortSavedToast.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/wizard/frontend/runs/WizardRunDetailsDrawer.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodayShell.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodayContextPanelFloating.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodaySidePanel.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodayTopBar.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/todayRailItems.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/subscriptions/frontend/components/Subscriptions/exportNudge/exportNudgeLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/billing/paymentEntryLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/conversations/frontend/components/SidePanel/sidepanelTicketsLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/zod/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/authentication/auth/loginLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/authentication/shared/passkeyLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/cohorts/CohortFilters/constants.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/persons/frontend/logics/personsLogic.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/surveys/constants.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/@tiptap/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/prosemirror- stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/re2js/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/react-markdown/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/Command/Command.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 packages/quill/packages/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 zod/v4/locales/de.js stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/svg/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/components/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/@tiptap/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/prosemirror- stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/marked/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/frimousse/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/scenes/session-recordings/playlist/SessionRecordingsPlaylist.tsx stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/scenes/web-analytics/tiles/WebAnalyticsTile.tsx stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/queries/validators.js stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/queries/web-analytics-validators.js stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/re2js/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/kea-test-utils/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/scenes/debug/HogDebug.tsx stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/queries/QueryEditor/QueryEditor.tsx stays out of src/scenes/dashboard/Dashboard.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/scenes/project-homepage/today/TodayReportPage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/queries/Query/Query.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 packages/quill/packages/charts/ stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 products/posthog_ai/frontend/components/tool/widgets/VisualizationWidget.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 products/posthog_ai/frontend/components/tool/widgets/RecordingsWidget.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 src/queries/Query/Query.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 products/posthog_ai/frontend/api/primitives.ts stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 src/scenes/notebooks/Notebook/notebookLogic.ts stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/@tiptap/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/prosemirror- stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/marked/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/frimousse/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/scenes/session-recordings/playlist/SessionRecordingsPlaylist.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/scenes/web-analytics/tiles/WebAnalyticsTile.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/validators.js stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/web-analytics-validators.js stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/re2js/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/kea-test-utils/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/nodes/InsightViz/InsightViz.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/nodes/DataVisualization/DataVisualization.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/nodes/WebOverview/WebOverview.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/scenes/debug/HogDebug.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/QueryEditor/QueryEditor.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/@tiptap/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/prosemirror- stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/marked/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/frimousse/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 src/scenes/web-analytics/LiveMetricsDashboard/LiveWebAnalyticsMetrics.tsx stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 products/product_analytics/frontend/insights/trends/WorldMap/countryVectors.tsx stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 src/queries/validators.js stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/re2js/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/kea-test-utils/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 src/scenes/debug/HogDebug.tsx stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 src/queries/QueryEditor/QueryEditor.tsx stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/@tiptap/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/prosemirror- stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/marked/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 src/scenes/settings/SettingsMap.tsx stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 @jspm/core/nodelibs/browser/fs stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/re2js/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/kea-test-utils/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/d3/src/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.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.7 KiB | ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js |
| 4.0 KiB | ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js |
| 1.9 KiB | src/lib/utils/bootTiming.ts |
| 1.7 KiB | src/index.tsx |
| 1.7 KiB | ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js |
| 1.2 KiB | src/RootErrorBoundary.tsx |
| 1.1 KiB | src/lib/utils/deferredAppContext.ts |
Largest files eagerly shipped from src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
| Size | File |
|---|---|
| 362.7 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.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.4 KiB | src/products.tsx |
| 87.7 KiB | src/lib/api.ts |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 42.7 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.3.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js |
| 36.4 KiB | ../node_modules/.pnpm/kea@4.0.0-pre.6_patch_hash=139b8d1f1304f9d9da452a9a1244c94ea679dbcb85687d8999563146879fb6f5_react@18.3.1/node_modules/kea/lib/index.cjs.js |
| 29.1 KiB | src/lib/constants.tsx |
| 24.6 KiB | ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
| Size | File |
|---|---|
| 362.7 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.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.4 KiB | src/products.tsx |
| 87.7 KiB | src/lib/api.ts |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 42.7 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.3.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js |
| 36.4 KiB | ../node_modules/.pnpm/kea@4.0.0-pre.6_patch_hash=139b8d1f1304f9d9da452a9a1244c94ea679dbcb85687d8999563146879fb6f5_react@18.3.1/node_modules/kea/lib/index.cjs.js |
| 32.6 KiB | src/lib/utils/eventUsageLogic.ts |
| 29.1 KiB | src/lib/constants.tsx |
Largest files eagerly shipped from src/scenes/dashboard/Dashboard.tsx
| Size | File |
|---|---|
| 362.7 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.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 |
| 116.4 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/surveys-preview.js |
| 112.5 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.4 KiB | src/products.tsx |
| 98.2 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.7 KiB | src/lib/api.ts |
| 78.8 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
| Size | File |
|---|---|
| 362.7 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.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 |
| 112.5 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.4 KiB | src/products.tsx |
| 87.7 KiB | src/lib/api.ts |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.5 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
| 42.7 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.3.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js |
| 36.4 KiB | ../node_modules/.pnpm/kea@4.0.0-pre.6_patch_hash=139b8d1f1304f9d9da452a9a1244c94ea679dbcb85687d8999563146879fb6f5_react@18.3.1/node_modules/kea/lib/index.cjs.js |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
| Size | File |
|---|---|
| 362.7 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.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 |
| 112.5 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.4 KiB | src/products.tsx |
| 87.7 KiB | src/lib/api.ts |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.5 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
| 42.7 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.3.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js |
| 41.7 KiB | src/scenes/hog-functions/sub-templates/sub-templates.ts |
Largest files eagerly shipped from src/scenes/activity/explore/EventsScene.tsx
| Size | File |
|---|---|
| 362.7 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.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 |
| 112.5 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.4 KiB | src/products.tsx |
| 98.2 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.7 KiB | src/lib/api.ts |
| 78.8 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.5 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
Largest files eagerly shipped from src/scenes/web-analytics/WebAnalyticsScene.tsx
| Size | File |
|---|---|
| 362.7 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.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 |
| 116.4 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/surveys-preview.js |
| 112.5 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.4 KiB | src/products.tsx |
| 98.2 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.7 KiB | src/lib/api.ts |
| 78.8 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
Largest files eagerly shipped from src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
| Size | File |
|---|---|
| 362.7 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 329.1 KiB | ../node_modules/.pnpm/posthog-js@1.447.12_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/rrweb.js |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.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 |
| 112.5 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.4 KiB | src/products.tsx |
| 98.2 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.7 KiB | src/lib/api.ts |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.5 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479
✅ Frontend layers — no new upward imports, 0 removed
Static imports from a lower frontend layer into a higher one (layers, lowest first: kernel, shell, query, features). Compared with the base branch, so an import that a PR also adds to layer-baseline.txt still shows here. Sizes are the source bytes on the eager path of every logged-in page.
| Layer | Eager source bytes | Δ vs base |
|---|---|---|
| kernel | 3.00 MiB | no change |
| shell | 2.41 MiB | no change |
| query | 56.9 KiB | no change |
| features | 274.1 KiB | no change |
Download the interactive layer graph for this PR.
Posted automatically by check-layers
✅ Toolbar bundle — eager 2.45 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.45 MiB · 19 files | no change | ████░░░░░░ 42.7% of 5.72 MiB |
| Deferred (lazy) | 2.64 MiB · 43 files | no change | n/a — loads on demand |
Loader dist/toolbar.js |
1.2 KiB | no change | █░░░░░░░░░ 6.0% of 19.5 KiB |
Largest eagerly-shipped chunks
| Size | File |
|---|---|
| 980.7 KiB | dist/toolbar/toolbar-app-DQIZCCCT.css |
| 738.5 KiB | dist/toolbar/chunk-chunk-4VATDHUM.js |
| 290.5 KiB | dist/toolbar/chunk-chunk-T6UVYVTK.js |
| 137.6 KiB | dist/toolbar/chunk-chunk-5KE6ERMB.js |
| 131.8 KiB | dist/toolbar/chunk-chunk-FQJO25M6.js |
| 75.7 KiB | dist/toolbar/toolbar-app-DY4W6A5U.js |
| 69.0 KiB | dist/toolbar/chunk-chunk-BFAXZMC5.js |
| 33.8 KiB | dist/toolbar/chunk-chunk-2J4VD6DQ.js |
| 21.9 KiB | dist/toolbar/chunk-chunk-HEE6ERIE.js |
| 6.8 KiB | dist/toolbar/chunk-chunk-RVLGRPCH.js |
Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile
✅ Dist folder size — no change
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1007.48 MiB · no change
ℹ️ MCP UI apps size — 35 app(s), 36997.7 KB JS
Built size of each MCP UI app (main.js + styles.css).
| App | JS | CSS |
|---|---|---|
| debug | 1067.1 KB | 224.2 KB |
| explain-chart | 1349.4 KB | 224.2 KB |
| action | 994.3 KB | 224.2 KB |
| action-list | 1058.0 KB | 224.2 KB |
| cohort | 993.3 KB | 224.2 KB |
| cohort-list | 1057.0 KB | 224.2 KB |
| email-template | 993.1 KB | 224.2 KB |
| error-details | 998.2 KB | 224.2 KB |
| error-issue | 995.2 KB | 224.2 KB |
| error-issue-list | 1059.2 KB | 224.2 KB |
| experiment | 1055.2 KB | 224.2 KB |
| experiment-list | 1058.8 KB | 224.2 KB |
| experiment-results | 1057.2 KB | 224.2 KB |
| feature-flag | 1057.4 KB | 224.2 KB |
| feature-flag-list | 1061.2 KB | 224.2 KB |
| feature-flag-testing | 996.5 KB | 224.2 KB |
| inline-scan | 993.8 KB | 224.2 KB |
| insight-actors | 1056.5 KB | 224.2 KB |
| llm-costs | 1053.8 KB | 224.2 KB |
| session-recording | 995.5 KB | 224.2 KB |
| survey | 994.9 KB | 224.2 KB |
| survey-global-stats | 1053.8 KB | 224.2 KB |
| survey-list | 1058.7 KB | 224.2 KB |
| survey-stats | 1053.8 KB | 224.2 KB |
| trace-span | 993.7 KB | 224.2 KB |
| trace-span-list | 1057.9 KB | 224.2 KB |
| vision-observation-list | 1057.1 KB | 224.2 KB |
| workflow | 993.6 KB | 224.2 KB |
| workflow-list | 1057.4 KB | 224.2 KB |
| workflow-setup-status | 993.3 KB | 224.2 KB |
| query-results | 1318.8 KB | 224.2 KB |
| render-ui | 1425.3 KB | 224.2 KB |
| visual-review-snapshots | 998.2 KB | 224.2 KB |
| workflow-data-suggestions | 996.0 KB | 224.2 KB |
| workflow-sending-rules | 994.6 KB | 224.2 KB |
⚠️ Playwright — 1 flaky
🎭 Playwright report · View test results →
- Delete a person property (chromium)
These issues are not necessarily caused by your changes.
Annoyed by this section? Help fix flakies and failures and it will go green!
⚠️ Backend coverage — 97.0% of changed backend lines covered — 3 uncovered
🧪 Backend test coverage
Patch coverage — changed backend lines (products + core): ███████████████████░ 97.0% (124 / 127)
| File | Patch | Uncovered changed lines |
|---|---|---|
products/messaging/backend/facade/contracts.py |
92.3% | 181 |
products/messaging/backend/tests/api/test_transactional_email.py |
97.0% | 160 |
products/messaging/backend/services/transactional_email.py |
97.3% | 764 |
🤖 Agents: add a test only if an uncovered line exposes a realistic regression that existing tests miss. Otherwise explain why no new test is needed under "How did you test this code?". Gap list: the patch-coverage artifact on this run (gh run download 395072039676365 -n patch-coverage), or the coverage-data block at the end of this comment.
Per-product line coverage (touched products)
| Product | Coverage | Lines |
|---|---|---|
demo |
██████████████░░░░░░ 71.5% |
1,996 / 2,793 |
knowledge_writer |
████████████████░░░░ 77.8% |
1,474 / 1,895 |
batch_exports |
█████████████████░░░ 82.9% |
24,782 / 29,889 |
engineering_analytics |
█████████████████░░░ 85.6% |
12,515 / 14,615 |
commands |
█████████████████░░░ 86.7% |
1,674 / 1,930 |
mcp_analytics |
██████████████████░░ 87.8% |
6,827 / 7,777 |
posthog_ai |
██████████████████░░ 88.2% |
4,514 / 5,116 |
notebooks |
██████████████████░░ 88.6% |
15,594 / 17,599 |
dashboards |
██████████████████░░ 89.6% |
9,050 / 10,097 |
cohorts |
██████████████████░░ 90.7% |
9,868 / 10,885 |
warehouse_suggestions |
██████████████████░░ 90.7% |
4,264 / 4,700 |
actions |
██████████████████░░ 90.9% |
1,524 / 1,677 |
data_warehouse |
██████████████████░░ 91.1% |
15,984 / 17,546 |
cdp |
██████████████████░░ 91.1% |
11,738 / 12,880 |
signals |
██████████████████░░ 91.2% |
112,874 / 123,758 |
today |
██████████████████░░ 91.5% |
4,136 / 4,521 |
canvas |
██████████████████░░ 91.5% |
8,559 / 9,351 |
tasks |
██████████████████░░ 91.6% |
86,287 / 94,203 |
autoresearch |
██████████████████░░ 91.6% |
12,203 / 13,318 |
data_modeling |
██████████████████░░ 91.7% |
12,686 / 13,835 |
streamlit_apps |
██████████████████░░ 92.0% |
3,200 / 3,478 |
alerts_platform |
██████████████████░░ 92.0% |
10,653 / 11,576 |
release |
██████████████████░░ 92.1% |
453 / 492 |
business_knowledge |
██████████████████░░ 92.2% |
10,900 / 11,824 |
review_hog |
██████████████████░░ 92.4% |
18,498 / 20,025 |
metrics |
██████████████████░░ 92.4% |
12,950 / 14,019 |
conversations |
██████████████████░░ 92.4% |
31,728 / 34,335 |
wizard |
██████████████████░░ 92.4% |
7,323 / 7,922 |
error_tracking |
██████████████████░░ 92.5% |
20,979 / 22,680 |
slack_app |
███████████████████░ 92.5% |
25,572 / 27,631 |
notifications |
███████████████████░ 92.8% |
1,230 / 1,326 |
early_access_features |
███████████████████░ 92.8% |
1,400 / 1,509 |
managed_warehouse |
███████████████████░ 93.2% |
15,792 / 16,947 |
alerts |
███████████████████░ 93.2% |
13,753 / 14,756 |
authorization |
███████████████████░ 93.2% |
851 / 913 |
stamphog |
███████████████████░ 93.3% |
11,591 / 12,425 |
web_analytics |
███████████████████░ 93.5% |
27,059 / 28,934 |
surveys |
███████████████████░ 93.6% |
7,847 / 8,388 |
exports |
███████████████████░ 93.7% |
4,474 / 4,777 |
approvals |
███████████████████░ 93.7% |
5,026 / 5,366 |
cross_project_dashboards |
███████████████████░ 93.7% |
867 / 925 |
context_layer |
███████████████████░ 93.9% |
4,075 / 4,342 |
marketing_analytics |
███████████████████░ 93.9% |
22,429 / 23,882 |
ai_observability |
███████████████████░ 94.0% |
41,209 / 43,862 |
mcp_store |
███████████████████░ 94.0% |
9,391 / 9,991 |
messaging |
███████████████████░ 94.0% |
9,698 / 10,314 |
billing_alerts |
███████████████████░ 94.0% |
2,332 / 2,480 |
annotations |
███████████████████░ 94.1% |
1,460 / 1,552 |
workflows |
███████████████████░ 94.1% |
30,380 / 32,289 |
customer_analytics |
███████████████████░ 94.2% |
31,846 / 33,808 |
access_control |
███████████████████░ 94.3% |
8,606 / 9,122 |
replay_vision |
███████████████████░ 94.4% |
33,432 / 35,422 |
logs |
███████████████████░ 94.4% |
20,547 / 21,762 |
reminders |
███████████████████░ 94.5% |
837 / 886 |
experiments |
███████████████████░ 95.0% |
47,426 / 49,941 |
growth |
███████████████████░ 95.0% |
11,603 / 12,217 |
warehouse_sources |
███████████████████░ 95.0% |
142,450 / 149,982 |
endpoints |
███████████████████░ 95.0% |
9,725 / 10,239 |
product_tours |
███████████████████░ 95.1% |
1,271 / 1,337 |
skills |
███████████████████░ 95.1% |
7,658 / 8,053 |
data_catalog |
███████████████████░ 95.6% |
4,749 / 4,965 |
subscriptions |
███████████████████░ 95.7% |
14,272 / 14,921 |
ui_customization |
███████████████████░ 95.7% |
714 / 746 |
tracing |
███████████████████░ 95.8% |
5,107 / 5,333 |
product_analytics |
███████████████████░ 95.8% |
31,451 / 32,837 |
feature_flags |
███████████████████░ 95.8% |
30,979 / 32,334 |
revenue_analytics |
███████████████████░ 95.9% |
1,877 / 1,958 |
data_quality |
███████████████████░ 96.0% |
8,583 / 8,937 |
aeo |
███████████████████░ 96.3% |
4,666 / 4,845 |
groups |
███████████████████░ 96.4% |
2,068 / 2,145 |
account_audits |
███████████████████░ 96.5% |
823 / 853 |
pulse |
███████████████████░ 97.0% |
2,026 / 2,089 |
analytics_platform |
████████████████████ 98.0% |
2,962 / 3,022 |
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.
There was a problem hiding this comment.
PostHog Review · Standard · reviewed ce26055: 1 Should fix.
See this review and its findings in PostHog Review. Comment @posthog review --deep for a Deep review. A Deep review takes longer and looks deeper than a Standard review.
Adds POST /api/environments/{project_id}/messaging/attachments/uploads/.
A caller names each file by SHA-256 and size, and gets back per file
either `present` or a signed PUT. Refusals carry their own code, a
reason and a fix, and every outcome is captured as
`transactional email attachments upload`.
Ticket: PostHog/michaelr-context#78
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…load The upload route and the send route now call one require_workflow_editor. The file-list shape checks run as a database-free serializer test, and the endpoint keeps two wiring cases. Ticket: PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ticket: PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ticket: PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…orkflow Resource access control already admits a member with editor access to one workflow, as the send route does. The upload route's own stricter check refused them, so it goes, and the send route keeps its inline check. Ticket: PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ilable Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Also covers an unknown upload status from the pipeline. Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ply field The upload route no longer spends the send routes' rate limits, refuses a pipeline reply whose url or headers have the wrong type, and explains a body that is not an object. The length-first list field moves to posthog/api/fields.py for reuse. Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11d5692 to
1a7694c
Compare
A send names each file by the SHA-256 it was uploaded under, and the CDP service verifies presence and the message estimate. Each attachment refusal keeps its own code, with a reason and a fix, and the usage event records the byte total the CDP service verified. Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A send with files can fail on file storage, and every attachment refusal carries `why` and `fix`. Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ers with Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ce26055 to
8802a91
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Risk: No findings Since the last review this pull request only merged master and regenerated Sentinel reviewed |
The upload route lives under /api/projects/; /api/environments/ is only a compatibility alias, and SDKs and docs copy these texts. Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New commits were pushed — dismissing the stamphog approval from an earlier head. Re-add the trigger label to request a fresh review.
Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> # Conflicts: # posthog/plugins/test/test_plugin_server_api.py
Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…iles The email pipeline now refuses a send with files when a UTM value is too long or the template has too many Liquid tags. Each answer reaches the caller with its own code, the pipeline's reason and fix, and PostHog's copy as a fallback, instead of a generic invalid request. Ticket: PostHog/michaelr-context#78 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New commits were pushed — dismissing the stamphog approval from an earlier head. Re-add the trigger label to request a fresh review.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New commits were pushed — dismissing the stamphog approval from an earlier head. Re-add the trigger label to request a fresh review.
…indexes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
/trunk merge |
|
An error occurred while submitting your PR to the queue: |
The PR was retargeted to a different base branch, so the approved diff is no longer what was reviewed. Stamphog re-reviews automatically.
|
😎 Merged successfully - details. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Approved.
The risky changes have owning-team authorship and STRONG familiarity, with focused API and validation test coverage. No actionable unresolved review concerns or other policy refusal grounds were found; older reviews are not current-head assurance.
- Author wrote 96% of the modified lines and has 10 merged PRs in these paths (familiarity STRONG).
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✓ | 334L, 6F substantive, 833L/11F incl. docs/generated/snapshots — within ceiling |
| tier | ✓ | T1-agent / T1d-complex (833L, 11F, two-areas, feat) |
| stamphog 2.8.0 | .stamphog/policy.yml @ e7ff4d6 · reviewed head e7ff4d6 |
|
/trunk merge |
Deploy status
This table shows the |
Merge gate: node-store (PostHog/michaelr-context#77) live in both regions (reader before writer)
Problem
Note
🟡 Merge risk: medium · two-way door
Changes
template_keysend by SHA-256:{sha256, filename, content_type?, content_id?}.code, plusattr,whyandfix.attr.How did you test this code?
Test rationale: API tests catch a lost
codeorattr, and a wrong byte count.Evidence
code,attrand event, including a reference with all four fields and each workflow, render-limit, UTM-length and Liquid-tag refusal.field_not_acceptedonattachments.cc(nowfield_not_accepted) differ. Usage events match.facade/contracts.pyandrefusals.pyrun at import, before coverage starts; the rest are the log-and-continue around the usage event, the fallback for an answer that isn't JSON (the live run drives it), and the generic reason for a file sent as a bare string.jscpd(exit 137) on this branch, rerun included. Run locally on8b13f78,bin/lint_duplication.pyfinds no new duplication against master or against the upload route PR.Release status
Docs update
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Agent: Claude Code, Opus 5.5
Skills:
/full-stop,/improving-drf-endpoints,/writing-tests,/writing-user-facing-copy,/writing-code-comments,/writing-pr-descriptions,/qa-swarmMore context for AI agents
invalid_request; only the spec's attachment codes andfield_not_acceptedkeep their owncode.error_codestays the raw DRF code.fixtexts name the upload route by its canonical/api/projects/path;/api/environments/is only an alias.field_not_accepted.workflow_can_wait,workflow_shape_not_supported,email_render_limit_exceeded,utm_value_too_long,email_body_too_many_tagsand a barefield_not_acceptedeach keep their own code onattachments(PostHog/michaelr-context#78).content_type,content_id); the send test pins the forwarded body (PostHog/michaelr-context#78).refused_attachmentincode_send_fields.py, and_queueinservices/transactional_email.py.🤖 Generated with Claude Code