Repository navigation
feat(workflows): add frequency cap hold hours setting - #127592
Conversation
Adds marketing_frequency_cap_hold_hours to the team workflows config, the project settings and sending rules serializers, and the generated types. Nothing reads it yet: the worker change that holds capped messages ships in the next layer, after this migration deploys. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Generated-By: PostHog Desktop Task-Id: 436ae568-8289-4257-b029-99ab5ab69aac
|
😎 This pull request was merged. |
🤖 CI report
|
| Function | Location | Complexity | Limit |
|---|---|---|---|
<anonymous> |
products/workflows/frontend/Workflows/workflowMetricsSummaryLogic.ts:1598 |
15 | 10 |
WorkflowsFrequencyCapSettings |
products/workflows/frontend/scenes/settings/WorkflowsFrequencyCapSettings.tsx:21 |
12 | 10 |
✅ Duplication (Python) — clean
New Python code duplication introduced by this branch. Fails at 70+ tokens in app code, or 150+ tokens when both copies live in test files. Advisory while the gate proves itself: extract a shared helper instead of copying.
✅ Duplication (TypeScript) — clean
New TypeScript code duplication introduced by this branch. Fails at 70+ tokens in app code, or 150+ tokens when both copies live in test files. Advisory while the gate proves itself: extract a shared helper instead of copying.
⚠️ Bundle size — 🔺 +563.7 KiB (+0.7%)
Uncompressed size of every built .js bundle, compared against the base branch.
Total: 76.69 MiB · 🔺 +563.7 KiB (+0.7%)
| File | Size | Δ vs base |
|---|---|---|
exporter/src/queries/nodes/InsightViz/InsightViz.js |
365.3 KiB | 🔺 +365.3 KiB (new) |
render-query/src/render-query/render-query.js |
21.12 MiB | 🟢 -169.1 KiB (-0.8%) |
exporter/_parent/products/metrics/frontend/nodes/nodes.js |
125.3 KiB | 🔺 +125.3 KiB (new) |
posthog-app/src/queries/nodes/DataVisualization/DataVisualization.js |
57.3 KiB | 🔺 +57.3 KiB (new) |
exporter/src/queries/nodes/DataVisualization/DataVisualization.js |
55.0 KiB | 🔺 +55.0 KiB (new) |
posthog-app/_parent/products/product_analytics/frontend/insights/explainChart/InsightExplainChart.js |
38.1 KiB | 🔺 +38.1 KiB (new) |
exporter/_parent/products/product_analytics/frontend/insights/explainChart/InsightExplainChart.js |
33.6 KiB | 🔺 +33.6 KiB (new) |
posthog-app/src/scenes/App.js |
9.8 KiB | 🟢 -20.0 KiB (-67.1%) |
posthog-app/_parent/products/metrics/frontend/nodes/nodes.js |
14.6 KiB | 🔺 +14.6 KiB (new) |
posthog-app/src/queries/nodes/InsightViz/InsightViz.js |
13.8 KiB | 🔺 +13.8 KiB (new) |
posthog-app/src/queries/nodes/SavedInsight/SavedInsight.js |
13.5 KiB | 🔺 +13.5 KiB (new) |
infrastructure-admin/_parent/products/tasks/frontend/infrastructure/infrastructure-admin.js |
916.3 KiB | 🟢 -11.0 KiB (-1.2%) |
posthog-app/_parent/products/endpoints/frontend/nodes/nodes.js |
9.9 KiB | 🔺 +9.9 KiB (new) |
exporter/src/queries/nodes/SavedInsight/SavedInsight.js |
9.1 KiB | 🔺 +9.1 KiB (new) |
posthog-app/_parent/products/product_analytics/frontend/insights/explainChart/ExplainChartButton.js |
8.9 KiB | 🔺 +8.9 KiB (new) |
posthog-app/_parent/products/product_analytics/frontend/insights/explainChart/ExplainChartAgentBridge.js |
8.5 KiB | 🔺 +8.5 KiB (new) |
exporter/_parent/products/endpoints/frontend/nodes/nodes.js |
8.5 KiB | 🔺 +8.5 KiB (new) |
posthog-app/_parent/products/product_analytics/frontend/insights/explainChart/ExplainChartAIAnalysisFallback.js |
8.3 KiB | 🔺 +8.3 KiB (new) |
posthog-app/_parent/products/data_catalog/frontend/DataCatalogScene.js |
45.3 KiB | 🔺 +8.0 KiB (+21.5%) |
exporter/_parent/products/product_analytics/frontend/insights/explainChart/ExplainChartButton.js |
6.4 KiB | 🔺 +6.4 KiB (new) |
posthog-app/src/queries/nodes/WebOverview/WebOverview.js |
6.2 KiB | 🔺 +6.2 KiB (new) |
exporter/_parent/products/product_analytics/frontend/insights/explainChart/ExplainChartAgentBridge.js |
6.1 KiB | 🔺 +6.1 KiB (new) |
exporter/src/scenes/debug/HogDebug.js |
5.9 KiB | 🔺 +5.9 KiB (new) |
exporter/_parent/products/product_analytics/frontend/insights/explainChart/ExplainChartAIAnalysisFallback.js |
5.9 KiB | 🔺 +5.9 KiB (new) |
posthog-app/_parent/products/metrics/frontend/MetricsScene.js |
99.4 KiB | 🔺 +4.6 KiB (+4.8%) |
exporter/src/queries/nodes/WebOverview/WebOverview.js |
4.4 KiB | 🔺 +4.4 KiB (new) |
exporter/src/exporter/scenes/ExporterNotebookScene.js |
3.93 MiB | 🔺 +4.0 KiB (+0.1%) |
posthog-app/src/scenes/debug/HogDebug.js |
3.7 KiB | 🔺 +3.7 KiB (new) |
exporter/src/queries/QueryEditor/QueryEditor.js |
3.5 KiB | 🔺 +3.5 KiB (new) |
posthog-app/_parent/products/signals/frontend/inbox/InboxScene.js |
503.0 KiB | 🟢 -3.0 KiB (-0.6%) |
posthog-app/src/queries/nodes/WebVitals/WebVitals.js |
19.7 KiB | 🟢 -2.6 KiB (-11.5%) |
posthog-app/src/queries/Query/Query.js |
12.6 KiB | 🟢 -2.6 KiB (-16.9%) |
posthog-app/src/scenes/web-analytics/SessionAttributionExplorer/SessionAttributionExplorerScene.js |
18.7 KiB | 🟢 -2.6 KiB (-12.0%) |
posthog-app/_parent/products/dashboards/frontend/widgets/metrics/MetricsTableWidget.js |
12.9 KiB | 🟢 -2.5 KiB (-16.2%) |
posthog-app/_parent/products/posthog_ai/frontend/components/tool/widgets/CreateInsightWidget.js |
13.5 KiB | 🟢 -2.5 KiB (-15.6%) |
posthog-app/_parent/products/posthog_ai/frontend/components/tool/widgets/QueryWidget.js |
13.5 KiB | 🟢 -2.5 KiB (-15.6%) |
posthog-app/_parent/products/autoresearch/frontend/AutoresearchPipelineScene.js |
129.7 KiB | 🟢 -2.5 KiB (-1.9%) |
posthog-app/_parent/products/persons/frontend/pages/PersonsScene.js |
17.1 KiB | 🟢 -2.5 KiB (-12.6%) |
posthog-app/src/scenes/activity/explore/EventsScene.js |
17.2 KiB | 🟢 -2.5 KiB (-12.5%) |
posthog-app/src/scenes/activity/explore/SessionsScene.js |
16.8 KiB | 🟢 -2.5 KiB (-12.7%) |
posthog-app/_parent/products/ai_observability/frontend/tags/AIObservabilityTagsScene.js |
21.0 KiB | 🟢 -2.4 KiB (-10.3%) |
posthog-app/_parent/products/endpoints/frontend/EndpointsScene.js |
43.3 KiB | 🟢 -2.4 KiB (-5.3%) |
posthog-app/_parent/products/early_access_features/frontend/EarlyAccessFeature.js |
14.2 KiB | 🟢 -2.4 KiB (-14.4%) |
posthog-app/src/scenes/web-analytics/WebAnalyticsInsight.js |
14.2 KiB | 🟢 -2.4 KiB (-14.4%) |
posthog-app/src/scenes/debug/DebugScene.js |
33.1 KiB | 🟢 -2.4 KiB (-6.7%) |
posthog-app/_parent/products/dashboards/frontend/widgets/AddWidgetModal.js |
34.3 KiB | 🟢 -2.4 KiB (-6.4%) |
posthog-app/src/scenes/authentication/shared/PasskeyLoginButton.js |
2.3 KiB | 🔺 +2.3 KiB (new) |
posthog-app/_parent/products/mcp_analytics/frontend/MCPAnalyticsScene.js |
205.1 KiB | 🟢 -2.3 KiB (-1.1%) |
posthog-app/_parent/products/ai_observability/frontend/tags/AIObservabilityTagScene.js |
41.1 KiB | 🟢 -2.2 KiB (-5.2%) |
posthog-app/_parent/products/ai_observability/frontend/prompts/LLMPromptScene.js |
59.5 KiB | 🟢 -2.0 KiB (-3.3%) |
posthog-app/_parent/products/groups/frontend/pages/Groups.js |
17.0 KiB | 🟢 -2.0 KiB (-10.5%) |
posthog-app/src/scenes/product-tours/ProductTour.js |
194.4 KiB | 🟢 -2.0 KiB (-1.0%) |
posthog-app/_parent/products/conversations/frontend/components/SidePanel/SidePanelSupportIcon.js |
2.0 KiB | 🔺 +2.0 KiB (new) |
posthog-app/_parent/products/replay_vision/frontend/replay_scanners/components/ScannerScoutsTab.js |
24.3 KiB | 🟢 -2.0 KiB (-7.5%) |
posthog-app/src/scenes/cohorts/Cohort.js |
52.7 KiB | 🟢 -1.9 KiB (-3.5%) |
posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ReplayScannersScene.js |
97.3 KiB | 🟢 -1.9 KiB (-1.9%) |
exporter/_parent/products/workflows/frontend/Workflows/Workflow.js |
234.7 KiB | 🔺 +1.8 KiB (+0.8%) |
posthog-app/_parent/products/actions/frontend/pages/Action.js |
15.6 KiB | 🟢 -1.8 KiB (-10.2%) |
posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ReplayScanner.js |
74.9 KiB | 🟢 -1.8 KiB (-2.3%) |
posthog-app/src/scenes/hog-functions/HogFunctionScene.js |
71.9 KiB | 🟢 -1.8 KiB (-2.4%) |
posthog-app/src/scenes/web-analytics/WebAnalyticsScene.js |
318.6 KiB | 🟢 -1.8 KiB (-0.5%) |
posthog-app/src/scenes/data-management/definition/DefinitionView.js |
41.6 KiB | 🟢 -1.7 KiB (-4.0%) |
exporter/src/scenes/authentication/shared/PasskeyLoginButton.js |
1.6 KiB | 🔺 +1.6 KiB (new) |
posthog-app/_parent/products/product_analytics/frontend/insights/insightScene/InsightScene.js |
70.0 KiB | 🟢 -1.6 KiB (-2.3%) |
posthog-app/src/scenes/surveys/Survey.js |
17.8 KiB | 🟢 -1.6 KiB (-8.4%) |
posthog-app/_parent/products/conversations/frontend/scenes/ticket/SupportTicketScene.js |
78.0 KiB | 🟢 -1.6 KiB (-2.0%) |
posthog-app/src/queries/QueryEditor/QueryEditor.js |
1.5 KiB | 🔺 +1.5 KiB (new) |
posthog-app/_parent/products/error_tracking/frontend/scenes/ErrorTrackingScene/ErrorTrackingScene.js |
78.1 KiB | 🟢 -1.2 KiB (-1.5%) |
posthog-app/_parent/products/cross_project_dashboards/frontend/CrossProjectDashboardScene.js |
47.8 KiB | 🟢 -1.2 KiB (-2.4%) |
exporter/src/queries/nodes/WebVitals/WebVitals.js |
14.9 KiB | 🟢 -1.2 KiB (-7.2%) |
exporter/src/queries/Query/Query.js |
8.2 KiB | 🟢 -1.2 KiB (-12.4%) |
exporter/_parent/products/dashboards/frontend/widgets/metrics/MetricsTableWidget.js |
8.5 KiB | 🟢 -1.1 KiB (-11.4%) |
exporter/_parent/products/posthog_ai/frontend/components/tool/widgets/CreateInsightWidget.js |
9.0 KiB | 🟢 -1.1 KiB (-10.8%) |
exporter/_parent/products/posthog_ai/frontend/components/tool/widgets/QueryWidget.js |
9.1 KiB | 🟢 -1.1 KiB (-10.8%) |
posthog-app/_parent/products/customer_analytics/frontend/CustomerAnalyticsScene.js |
16.9 KiB | 🟢 -1.1 KiB (-6.1%) |
posthog-app/_parent/products/customer_analytics/frontend/scenes/CustomerAnalyticsAccountScene/CustomerAnalyticsAccountScene.js |
69.3 KiB | 🟢 -1.1 KiB (-1.6%) |
posthog-app/src/scenes/experiments/Experiment.js |
425.3 KiB | 🟢 -1.1 KiB (-0.2%) |
posthog-app/src/scenes/project-homepage/today/TodayHome.js |
29.4 KiB | 🔺 +1.0 KiB (+3.7%) |
exporter/src/scenes/web-analytics/WebAnalyticsInsight.js |
56.0 KiB | 🟢 -1.0 KiB (-1.8%) |
posthog-app/src/scenes/max/Thread.js |
24.8 KiB | 🟢 -1.0 KiB (-4.0%) |
exporter/_parent/products/dashboards/frontend/widgets/AddWidgetModal.js |
29.0 KiB | 🟢 -1020 B (-3.3%) |
posthog-app/src/scenes/max/components/AiFirstMaxInstance.js |
25.5 KiB | 🟢 -1020 B (-3.8%) |
posthog-app/src/scenes/max/Max.js |
39.3 KiB | 🟢 -1020 B (-2.5%) |
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.01 MiB · 25 files | 🔺 +2.6 KiB (+0.2%) | █████████░ 88.4% 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.99 MiB · 622 files | 🔺 +3.3 KiB (+0.1%) | ██████████ 98.5% of 3.03 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
3.86 MiB · 1,238 files | 🟢 -140.1 KiB (-3.4%) | ██████████ 96.3% of 4.01 MiB |
dashboard scenesrc/scenes/dashboard/Dashboard.tsx |
8.32 MiB · 3,061 files | 🟢 -1.13 MiB (-11.9%) | ████████░░ 84.5% of 9.84 MiB |
today home pathsrc/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx |
4.71 MiB · 1,761 files | 🟢 -214.6 KiB (-4.3%) | ██████████ 95.5% 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 |
5.95 MiB · 2,258 files | 🟢 -231.4 KiB (-3.7%) | █████████░ 94.8% of 6.27 MiB |
events scenesrc/scenes/activity/explore/EventsScene.tsx |
7.34 MiB · 2,624 files | 🟢 -1.51 MiB (-17.1%) | ████████░░ 78.0% of 9.41 MiB |
web analytics scenesrc/scenes/web-analytics/WebAnalyticsScene.tsx |
8.25 MiB · 2,949 files | 🟢 -1.40 MiB (-14.5%) | ████████░░ 78.6% of 10.49 MiB |
replay detail scenesrc/scenes/session-recordings/detail/SessionRecordingDetail.tsx |
7.40 MiB · 2,653 files | 🔺 +26.8 KiB (+0.4%) | █████████░ 91.0% 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/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
🟢 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
🟢 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
🟢 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
🟢 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 |
|---|---|
| 355.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_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 |
| 104.2 KiB | src/products.tsx |
| 88.3 KiB | src/lib/api.ts |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 41.9 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.0.8_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 |
| 28.3 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 |
|---|---|
| 355.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_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 |
| 104.2 KiB | src/products.tsx |
| 88.3 KiB | src/lib/api.ts |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 41.9 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.0.8_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.7 KiB | src/lib/utils/eventUsageLogic.ts |
| 28.3 KiB | src/lib/constants.tsx |
Largest files eagerly shipped from src/scenes/dashboard/Dashboard.tsx
| Size | File |
|---|---|
| 355.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_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 |
| 114.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/surveys-preview.js |
| 108.9 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 104.2 KiB | src/products.tsx |
| 94.6 KiB | ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js |
| 92.6 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 90.4 KiB | ../packages/quill/packages/components/dist/index.js |
| 88.3 KiB | src/lib/api.ts |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
| Size | File |
|---|---|
| 355.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_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 |
| 108.9 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 104.2 KiB | src/products.tsx |
| 88.3 KiB | src/lib/api.ts |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.0 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
| 41.9 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.0.8_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 |
|---|---|
| 355.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_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 |
| 108.9 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 104.2 KiB | src/products.tsx |
| 88.3 KiB | src/lib/api.ts |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.0 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
| 41.9 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.0.8_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 |
|---|---|
| 355.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_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 |
| 108.9 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 104.2 KiB | src/products.tsx |
| 94.6 KiB | ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js |
| 92.6 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 90.4 KiB | ../packages/quill/packages/components/dist/index.js |
| 88.3 KiB | src/lib/api.ts |
| 75.3 KiB | src/scenes/dashboard/dashboardLogic.tsx |
Largest files eagerly shipped from src/scenes/web-analytics/WebAnalyticsScene.tsx
| Size | File |
|---|---|
| 355.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_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 |
| 114.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/surveys-preview.js |
| 108.9 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 104.2 KiB | src/products.tsx |
| 94.6 KiB | ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js |
| 92.6 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 90.4 KiB | ../packages/quill/packages/components/dist/index.js |
| 88.3 KiB | src/lib/api.ts |
Largest files eagerly shipped from src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
| Size | File |
|---|---|
| 355.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 321.5 KiB | ../node_modules/.pnpm/posthog-js@1.444.4_@types+react@18.3.27_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 |
| 108.9 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 104.2 KiB | src/products.tsx |
| 94.6 KiB | ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js |
| 92.6 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 90.4 KiB | ../packages/quill/packages/components/dist/index.js |
| 88.3 KiB | src/lib/api.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, 7 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 | 2.97 MiB | 🔺 +9.3 KiB (+0.3%) |
| shell | 2.39 MiB | 🔺 +3.5 KiB (+0.1%) |
| query | 56.4 KiB | no change |
| features | 378.4 KiB | 🟢 -155.6 KiB (-29.1%) |
🟢 7 upward import(s) removed. Run hogli lint:frontend-layers --prune-baseline if CI asks.
Download the interactive layer graph for this PR.
Posted automatically by check-layers
✅ Toolbar bundle — eager 2.37 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.37 MiB · 19 files | 🔺 +32.2 KiB (+1.3%) | ████░░░░░░ 41.4% of 5.72 MiB |
| Deferred (lazy) | 2.11 MiB · 42 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 |
|---|---|
| 946.6 KiB | dist/toolbar/toolbar-app-XENNRF6Q.css |
| 726.8 KiB | dist/toolbar/chunk-chunk-GWJRRCJ3.js |
| 261.2 KiB | dist/toolbar/chunk-chunk-FTMGICRW.js |
| 131.8 KiB | dist/toolbar/chunk-chunk-FDH2IBXT.js |
| 130.3 KiB | dist/toolbar/chunk-chunk-ZMBVIGNU.js |
| 75.7 KiB | dist/toolbar/toolbar-app-24PCUKWF.js |
| 69.0 KiB | dist/toolbar/chunk-chunk-TSAL54PB.js |
| 33.8 KiB | dist/toolbar/chunk-chunk-C2JAWSHT.js |
| 21.7 KiB | dist/toolbar/chunk-chunk-J6CJJ75S.js |
| 6.8 KiB | dist/toolbar/chunk-chunk-DV7IWQNF.js |
Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile
✅ Dist folder size — 🟢 -767.9 KiB (-0.1%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 969.01 MiB · 🟢 -767.9 KiB (-0.1%)
ℹ️ MCP UI apps size — 35 app(s), 29126.7 KB JS
Built size of each MCP UI app (main.js + styles.css).
| App | JS | CSS |
|---|---|---|
| debug | 844.4 KB | 211.6 KB |
| explain-chart | 1119.2 KB | 211.6 KB |
| action | 767.8 KB | 211.6 KB |
| action-list | 835.4 KB | 211.6 KB |
| cohort | 766.8 KB | 211.6 KB |
| cohort-list | 834.4 KB | 211.6 KB |
| email-template | 766.6 KB | 211.6 KB |
| error-details | 771.7 KB | 211.6 KB |
| error-issue | 769.0 KB | 211.6 KB |
| error-issue-list | 836.8 KB | 211.6 KB |
| experiment | 832.5 KB | 211.6 KB |
| experiment-list | 836.1 KB | 211.6 KB |
| experiment-results | 834.3 KB | 211.6 KB |
| feature-flag | 834.8 KB | 211.6 KB |
| feature-flag-list | 838.5 KB | 211.6 KB |
| feature-flag-testing | 770.0 KB | 211.6 KB |
| inline-scan | 767.2 KB | 211.6 KB |
| insight-actors | 833.8 KB | 211.6 KB |
| llm-costs | 831.1 KB | 211.6 KB |
| session-recording | 769.0 KB | 211.6 KB |
| survey | 768.4 KB | 211.6 KB |
| survey-global-stats | 831.2 KB | 211.6 KB |
| survey-list | 836.1 KB | 211.6 KB |
| survey-stats | 831.2 KB | 211.6 KB |
| trace-span | 767.1 KB | 211.6 KB |
| trace-span-list | 835.3 KB | 211.6 KB |
| vision-observation-list | 834.5 KB | 211.6 KB |
| workflow | 767.1 KB | 211.6 KB |
| workflow-list | 834.7 KB | 211.6 KB |
| workflow-setup-status | 766.8 KB | 211.6 KB |
| query-results | 1090.8 KB | 211.6 KB |
| render-ui | 1195.1 KB | 211.6 KB |
| visual-review-snapshots | 771.6 KB | 211.6 KB |
| workflow-data-suggestions | 769.4 KB | 211.6 KB |
| workflow-sending-rules | 768.1 KB | 211.6 KB |
ℹ️ MCP agent API — agent-facing tool changes
What this PR changes for agents, from the tool schema snapshots and tool definitions.
Tools changed (2):
| Tool | Params | Scopes | Annotations | Schema chars |
|---|---|---|---|---|
project-settings-update |
77,922 -> 78,175 | |||
workflows-sending-rules-update |
+marketing_frequency_cap_hold_hours |
1,629 -> 1,970 |
⚠️ Django migration SQL — 1 new migration to review
We've detected new migrations on this PR. Review the SQL output for each migration:
products/workflows/backend/migrations/0040_team_workflows_config_frequency_cap_hold.py
/home/runner/work/tmp/tool_cache/Python/3.14.7/x64/lib/python3.14/site-packages/anyio/from_thread.py:119: SyntaxWarning: 'return' in a 'finally' block
return result
2026-11-03T09:54:17.633655Z [error ] Path must be a valid database or directory containing databases. [posthog.exceptions_capture] pid=6224 tid=140389961173888
Traceback (most recent call last):
File "/home/runner/work/posthog/posthog/posthog/geoip.py", line 15, in <module>
geoip: Optional[GeoIP2] = GeoIP2(cache=8)
~~~~~~^^^^^^^^^
File "/home/runner/work/tmp/tool_cache/Python/3.14.7/x64/lib/python3.14/site-packages/django/contrib/gis/geoip2.py", line 114, in __init__
raise GeoIP2Exception(
"Path must be a valid database or directory containing databases."
)
django.contrib.gis.geoip2.GeoIP2Exception: Path must be a valid database or directory containing databases.
/home/runner/work/tmp/tool_cache/Python/3.14.7/x64/lib/python3.14/site-packages/sshtunnel.py:1040: SyntaxWarning: 'return' in a 'finally' block
return (ssh_host,
/home/runner/work/tmp/tool_cache/Python/3.14.7/x64/lib/python3.14/site-packages/langchain_core/_api/deprecation.py:27: UserWarning: Core Pydantic V1 functionality isn't compatible with Python 3.14 or greater.
from pydantic.v1.fields import FieldInfo as FieldInfoV1
System check identified some issues:
WARNINGS:
?: (axes.W001) You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.
?: (staticfiles.W004) The directory '/home/runner/work/posthog/posthog/frontend/dist' in the STATICFILES_DIRS setting does not exist.
BEGIN;
--
-- Add field marketing_frequency_cap_hold_hours to teamworkflowsconfig
--
ALTER TABLE "workflows_teamworkflowsconfig" ADD COLUMN "marketing_frequency_cap_hold_hours" integer NULL;
COMMIT;Last updated: 2026-11-03 09:55 UTC (bf327f8)
✅ Django migration risk — migration analysis complete
We've analyzed your migrations for potential risks.
Summary: 1 Safe | 0 Needs Review | 0 Blocked
✅ Safe
Brief or no lock, backwards compatible
workflows.0040_team_workflows_config_frequency_cap_hold
└─ #1 ✅ AddField
Adding nullable field requires brief lock
model: teamworkflowsconfig, field: marketing_frequency_cap_hold_hours
📚 How to Deploy These Changes Safely
AddField:
This operation acquires a brief lock but doesn't rewrite the table.
Deployment uses lock timeouts with automatic retries, so lock contention will cause retries rather than connection pile-up.
Last updated: 2026-11-03 09:55 UTC (bf327f8)
Moves the settings field down from the worker layer, so each PR in the stack stays in one merge queue lane. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Generated-By: PostHog Desktop Task-Id: 436ae568-8289-4257-b029-99ab5ab69aac
|
@PostHog review |
|
@mayteio PostHog Review is reviewing this pull request. |
|
Risk: No findings The increment since the last review is purely test coverage: two expected-response assertions in test_team_workflows_config.py now include the new marketing_frequency_cap_hold_hours field. No production code changed, so no new security surface was introduced. Sentinel reviewed |
There was a problem hiding this comment.
PostHog Review · Standard · reviewed fdd0da1: 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.
|
React Doctor found no issues in the changed files. 🎉 Reviewed by React Doctor for commit |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Generated-By: PostHog Desktop Task-Id: 436ae568-8289-4257-b029-99ab5ab69aac
There was a problem hiding this comment.
Not approved yet — waiting on the conditions below.
The Migration risk check has not finished for this commit, so stamphog cannot tell a safe migration from a risky one yet. The review runs again on the next push, or you can re-request it once the check reports.
- 1 of the 22 changed files are governed by
products/desktop/AGENT_APPROVALS.md.
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✗ | matches: migrations |
| size | ✓ | 97L, 10F substantive, 219L/22F incl. docs/generated/snapshots — within ceiling |
| tier | ✗ | classified as T2-never: T2-never (219L, 22F, cross-cutting, feat) |
| stamphog 2.7.0 | .stamphog/policy.yml @ unknown · reviewed head bf327f8 |
There was a problem hiding this comment.
Approved.
The migration and API/write-path changes have assurance through owning-team authorship and STRONG familiarity, with round-trip test coverage. No concrete unresolved review concerns or other refusal grounds were identified; the older review supplies no actionable finding to verify.
- Author wrote 75% of the modified lines and has 63 merged PRs in these paths (familiarity STRONG).
- 1 of the 22 changed files are governed by
products/desktop/AGENT_APPROVALS.md.
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✓ | 97L, 10F substantive, 219L/22F incl. docs/generated/snapshots — within ceiling |
| tier | ✓ | T1-agent / T1d-complex (219L, 22F, cross-cutting, feat) |
| stamphog 2.7.0 | .stamphog/policy.yml @ bf327f8 · reviewed head bf327f8 |
|
/trunk merge |
|
An error occurred while submitting your PR to the queue: |
|
This pull request was merged into |
Problem
Changes
The field is new, so there is no before screenshot.
How did you test this code?
Test rationale:
test_workflow_sending_rules.pynow round-trips the field, so it fails if a serializer drops it.Release status
Docs update
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Agent: Claude Code, claude-opus-5-5
Skills:
/django-migrations,/improving-drf-endpoints,/writing-tests,/stacking-prs,/writing-pr-descriptionsMore context for AI agents
Created with PostHog Desktop from a PostHog Desktop task
🤖 Generated with Claude Code