Repository navigation
feat(workflows): share one email sender row across email editors - #122109
Conversation
|
😎 Merged successfully - details. |
🤖 CI report✅ Trunk lane — non-backend laneThis PR is assigned to the non-backend lane. It does not run backend Python tests and may merge in parallel with PRs in other lanes.
|
| Function | Location | Complexity | Limit |
|---|---|---|---|
EmailSenderRow |
frontend/src/scenes/hog-functions/email-templater/EmailSenderRow.tsx:22 |
22 | 10 |
NativeEmailTemplaterForm |
frontend/src/scenes/hog-functions/email-templater/EmailTemplater.tsx:548 |
22 | 10 |
EmailSenderForm |
frontend/src/scenes/hog-functions/email-templater/EmailSenderForm.tsx:20 |
21 | 10 |
NativeEmailIntegrationChoice |
frontend/src/scenes/hog-functions/email-templater/EmailTemplater.tsx:263 |
17 | 10 |
senderAddressError |
frontend/src/scenes/hog-functions/email-templater/emailSenderFields.ts:101 |
12 | 10 |
<anonymous> |
frontend/src/scenes/hog-functions/email-templater/emailTemplaterLogic.tsx:1097 |
12 | 10 |
❌ Duplication (Python) — the duplication scan could not run
The duplication scan failed on this run (see the job log). Nothing here says whether this branch adds duplication.
❌ Duplication (TypeScript) — the duplication scan could not run
The duplication scan failed on this run (see the job log). Nothing here says whether this branch adds duplication.
⚠️ Comment density — 4% of added code lines are comments (33 of 844)
This section warns when comments are more than 3% of the code lines a PR adds, and alerts above 6%. Before agent-assisted PRs, the typical share was about 2%. Only full-line comments count. Docstrings, generated files, snapshots, migrations, and workflow files are left out.
Comments that restate the code, record how the change came about, or narrate the next line add noise for the next reader. Keep the comments that explain a reason the code cannot show, and remove the rest. See .agents/skills/writing-code-comments/SKILL.md for the house rules.
Files with the most added comment lines:
| File | Comment lines | Added lines |
|---|---|---|
frontend/src/scenes/hog-functions/email-templater/emailSenderFields.ts |
9 | 64 |
frontend/src/scenes/hog-functions/email-templater/EmailSenderRow.tsx |
5 | 145 |
frontend/src/scenes/hog-functions/email-templater/EmailSenderForm.tsx |
4 | 91 |
frontend/src/scenes/hog-functions/email-templater/EmailSenderPicker.tsx |
3 | 85 |
frontend/src/scenes/hog-functions/email-templater/EmailTemplater.tsx |
3 | 44 |
frontend/src/scenes/hog-functions/email-templater/AddHeaderFieldButton.tsx |
2 | 26 |
frontend/src/scenes/hog-functions/email-templater/EmailHeaderRow.tsx |
2 | 30 |
frontend/src/scenes/hog-functions/email-templater/emailTemplaterLogic.tsx |
2 | 16 |
This check does not block merging. It updates on every push and clears when the share drops.
⚠️ Bundle size — 🔺 +438 B (+0.0%)
Uncompressed size of every built .js bundle, compared against the base branch.
Total: 79.76 MiB · 🔺 +438 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 — 2 over 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.05 MiB · 26 files | 🔺 +37 B (+0.0%) | █████████░ 91.8% 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 |
2.87 MiB · 539 files | 🔺 +85 B (+0.0%) | ██████████ 99.3% of 2.89 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
3.90 MiB · 1,238 files | 🔺 +85 B (+0.0%) | ██████████ 99.9% of 3.91 MiB |
dashboard scenesrc/scenes/dashboard/Dashboard.tsx |
7.92 MiB · 3,056 files | 🔺 +126 B (+0.0%) | ██████████ 100.0% of 7.92 MiB |
🟡 today home pathsrc/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx |
4.90 MiB · 1,873 files | 🔺 +126 B (+0.0%) | ██████████ 100.4% of 4.88 MiB |
🟡 AI-first home pathsrc/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx |
6.13 MiB · 2,299 files | 🔺 +126 B (+0.0%) | ██████████ 100.1% of 6.13 MiB |
events scenesrc/scenes/activity/explore/EventsScene.tsx |
6.86 MiB · 2,573 files | 🔺 +126 B (+0.0%) | ██████████ 99.4% of 6.91 MiB |
web analytics scenesrc/scenes/web-analytics/WebAnalyticsScene.tsx |
7.92 MiB · 2,967 files | 🔺 +126 B (+0.0%) | ██████████ 99.5% of 7.96 MiB |
replay detail scenesrc/scenes/session-recordings/detail/SessionRecordingDetail.tsx |
7.05 MiB · 2,628 files | 🔺 +126 B (+0.0%) | ██████████ 99.4% of 7.09 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/lib/lemon-ui/LemonTable/LemonTable.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 node_modules/@dnd-kit/ 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.7 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 24.5 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.8 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.8 KiB | src/lib/utils/bootTiming.ts |
| 1.7 KiB | ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js |
| 1.7 KiB | src/index.tsx |
| 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 |
|---|---|
| 363.5 KiB | ../node_modules/.pnpm/posthog-js@1.447.13_@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.7 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 107.9 KiB | src/products.tsx |
| 92.6 KiB | src/lib/api.ts |
| 68.9 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 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.6 KiB | src/lib/constants.tsx |
| 24.7 KiB | ../node_modules/.pnpm/fuse.js@7.3.0/node_modules/fuse.js/dist/fuse.mjs |
| 24.5 KiB | ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
| Size | File |
|---|---|
| 363.5 KiB | ../node_modules/.pnpm/posthog-js@1.447.13_@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.7 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 107.9 KiB | src/products.tsx |
| 92.6 KiB | src/lib/api.ts |
| 68.9 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 40.3 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.6 KiB | src/lib/constants.tsx |
Largest files eagerly shipped from src/scenes/dashboard/Dashboard.tsx
| Size | File |
|---|---|
| 363.5 KiB | ../node_modules/.pnpm/posthog-js@1.447.13_@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.7 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.13_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/surveys-preview.js |
| 111.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 107.9 KiB | src/products.tsx |
| 98.3 KiB | ../packages/quill/packages/components/dist/index.js |
| 92.6 KiB | src/lib/api.ts |
| 82.5 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 68.9 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 |
|---|---|
| 363.5 KiB | ../node_modules/.pnpm/posthog-js@1.447.13_@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.7 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 111.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 107.9 KiB | src/products.tsx |
| 92.6 KiB | src/lib/api.ts |
| 68.9 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.2 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
| 40.3 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 |
|---|---|
| 363.5 KiB | ../node_modules/.pnpm/posthog-js@1.447.13_@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.7 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 111.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 107.9 KiB | src/products.tsx |
| 92.6 KiB | src/lib/api.ts |
| 68.9 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.2 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
| 41.7 KiB | src/scenes/hog-functions/sub-templates/sub-templates.ts |
| 40.3 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 |
Largest files eagerly shipped from src/scenes/activity/explore/EventsScene.tsx
| Size | File |
|---|---|
| 363.5 KiB | ../node_modules/.pnpm/posthog-js@1.447.13_@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.7 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 111.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 107.9 KiB | src/products.tsx |
| 98.3 KiB | ../packages/quill/packages/components/dist/index.js |
| 92.6 KiB | src/lib/api.ts |
| 82.5 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 68.9 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.2 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
Largest files eagerly shipped from src/scenes/web-analytics/WebAnalyticsScene.tsx
| Size | File |
|---|---|
| 363.5 KiB | ../node_modules/.pnpm/posthog-js@1.447.13_@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.7 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.13_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/surveys-preview.js |
| 111.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 107.9 KiB | src/products.tsx |
| 98.3 KiB | ../packages/quill/packages/components/dist/index.js |
| 92.6 KiB | src/lib/api.ts |
| 82.5 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 68.9 KiB | src/lib/lemon-ui/icons/icons.tsx |
Largest files eagerly shipped from src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
| Size | File |
|---|---|
| 363.5 KiB | ../node_modules/.pnpm/posthog-js@1.447.13_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 329.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.13_@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.7 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 111.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 107.9 KiB | src/products.tsx |
| 98.3 KiB | ../packages/quill/packages/components/dist/index.js |
| 92.6 KiB | src/lib/api.ts |
| 68.9 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.2 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.02 MiB | 🔺 +152 B (+0.0%) |
| shell | 2.42 MiB | no change |
| query | 56.9 KiB | no change |
| features | 274.7 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 | 🔺 +85 B (+0.0%) | ████░░░░░░ 42.9% 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 |
|---|---|
| 987.7 KiB | dist/toolbar/toolbar-app-OLDNPWAN.css |
| 739.5 KiB | dist/toolbar/chunk-chunk-EILLDGMR.js |
| 290.5 KiB | dist/toolbar/chunk-chunk-LYZDKK5A.js |
| 137.6 KiB | dist/toolbar/chunk-chunk-B7S3E3Y6.js |
| 131.8 KiB | dist/toolbar/chunk-chunk-FQJO25M6.js |
| 75.7 KiB | dist/toolbar/toolbar-app-A25QJX5G.js |
| 69.0 KiB | dist/toolbar/chunk-chunk-BFAXZMC5.js |
| 33.8 KiB | dist/toolbar/chunk-chunk-VKURV753.js |
| 21.9 KiB | dist/toolbar/chunk-chunk-HVFSCS5I.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 — 🔺 +93.9 KiB (+0.0%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1019.03 MiB · 🔺 +93.9 KiB (+0.0%)
0ea73bd to
e39cb61
Compare
There was a problem hiding this comment.
Not approved yet — waiting on the conditions below.
Re-add the stamphog label to request another review once you have addressed this.
The size gate refused this pull request. It has 953 substantive lines of change, which is over the 800-line ceiling for auto-review, and the full diff is 1004 lines across 17 files once docs, generated files and snapshots are counted. The other gates (prerequisites, deny-list and tier) passed, so size is the only blocker.
The author can ask a human reviewer to look at it. Or they can split it into smaller pull requests, for example one that adds the shared header row components and LiquidSupportedText, and a second that moves the sender picker and custom sender popover onto them. Each part then has a chance of fitting under the ceiling.
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✗ | too large for auto-review (953L substantive in global — ceiling is 800L; 953L, 15F total, 1004L/17F incl. docs/generated/snapshots) |
| tier | ✓ | T1-agent / T1d-complex (1004L, 17F, two-areas, feat) |
| stamphog 2.6.1 | .stamphog/policy.yml @ unknown · reviewed head e39cb61 |
|
Risk: No findings The increment since the last review adds a Sentinel reviewed |
|
✅ Visual changes approved by @mayteio — baseline updated in 2 new. Install the Visual Review Chrome extension to see visual review results at the top of your pull requests. |
ffa986a to
5193273
Compare
HostHog preview —
|
|
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 |
|
✅ Visual changes approved by @mayteio — baseline updated in 2 new. Install the Visual Review Chrome extension to see visual review results at the top of your pull requests. |
The workflow, broadcast and transactional template editors now show one From row with a sender picker and a custom sender dropdown, and Reply-To, Cc, Bcc and Preheader rows aligned under it. The sandbox sender stays a choice in the new row.
161b6ad to
532c29a
Compare
…on a templated sender local part
|
Note 🤖 Claude Opus 5.5 responding on behalf of Harley Live proof on the dev stackThe sender row looks and behaves the same in a broadcast email, a workflow email step and a transactional template. Each one saved the chosen sender, Reply-To and subject, and the API returned them. Run on Commands What each editor stored (GET from the API after the UI save) Screenshots Broadcast with no sender yet: the error sits under the From field. Broadcast after picking a sender and setting a custom address and Reply-To: Workflow email step after Save: Transactional template with the Custom sender dropdown open: Rebase note Master added the sandbox sender to the old From picker in #131916. The new row now offers it too: picking it saves any pending canvas edit first, and Custom sender hides while the sandbox sender is selected. |
|
Note 🤖 Claude Opus 5.5 responding on behalf of Harley CI report findings on
|
There was a problem hiding this comment.
Approved.
The sender configuration write path has current-head independent review, owning-team authorship, STRONG familiarity, and targeted regression tests. No concrete unresolved review concerns or other policy refusal grounds are present.
- Author wrote 77% of the modified lines and has 28 merged PRs in these paths (familiarity STRONG).
- PostHog Review (Standard) reviewed the current head: no findings.
- posthog[bot] reviewed the current head.
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✓ | 1049L, 17F substantive, 1174L/20F incl. docs/generated/snapshots — within ceiling |
| tier | ✓ | T1-agent / T1d-complex (1174L, 20F, two-areas, feat) |
| stamphog 2.8.0 | .stamphog/policy.yml @ c4c7452 · reviewed head c4c7452 |
|
/trunk merge |
Deploy status
This table shows the |




Problem
Warning
🟡 Merge risk: medium · two-way door (merge-risk rubric)
fromhandling could save a wrong sender or address, and later sends would go out from it.workflows-email-header.fromWithSenderstests cover rotation ids and the domain move. On master and on this branch, a sender switch saved the samefrom.git revertthe merge commit. Templates saved in between keep theirfrom, which matches what master would save.Changes
b1828534-6707-4ac2-9645-db2f5c4b4334.mp4
EmailHeaderRow,EmailSenderRow,EmailSenderPicker,AddHeaderFieldButtonandOptionalHeaderFieldRoware new files.LiquidSupportedTextmoved out ofEmailTemplater.tsxunchanged.data-attrvalues stay:workflow-email-sender-select,email-from-custom-senderand thetransactional-email-*ones.email sender editedfires when the popover closes with changes, andemail header field addedfires when Cc, Bcc or Preheader is revealed.Note
The new workflow and broadcast header sits behind
workflows-email-header. With the flag off, those surfaces keep today's layout. Transactional and library templates get the new rows without a flag. Templates already used the compact header on master.Demo
email-sender-demo
Before and after
Broadcast, nothing picked yet:
Broadcast with two senders and a custom address and reply-to:
Workflow email step:
Workflow email editor modal:
Transactional template:
Custom sender popover:
How did you test this code?
EmailHeaderstory in the workflow editor panel stories covers the flagged header with a connected sender.Test rationale: two cases extend the existing parameterized
senderAddressErrortest.Sender changes: transactional templates get the new picker without a flag, so seven
test.eachcases coverfromWithSenders, the logic behind the picker.integrationIds. The send path rotates throughintegrationIdswhenever it is set, so a stale list sends from the wrong sender.integrationIdskeeps the old list, the domain cases when the address does not move.After merging master: the email-templater Jest folder and the frontend typecheck pass locally. A scratch Storybook story of the inline transactional template rendered on master and on this branch. Switching from an example.com sender to an example.org sender saved the same
fromon both:{"integrationId":2,"name":"Team","email":"team@example.org"}. Not rerun: the manual flows above.Release status
Docs update
No existing doc under
docs/covers the email sender fields.🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Agent: Claude Code (PostHog Desktop), Claude Opus 5.5
EmailInSidePanelstory is gone andEmailHeaderuses the one panel layout. The sender-change logic moved out ofEmailSenderPickerintofromWithSendersso it can be tested directly.Created with PostHog Desktop
🤖 Generated with Claude Code