diff --git a/.github/workflows/ci-e2e.yml b/.github/workflows/ci-e2e.yml
index f97a6f4bb85cc..ca6ad9d5dcfa0 100644
--- a/.github/workflows/ci-e2e.yml
+++ b/.github/workflows/ci-e2e.yml
@@ -171,7 +171,7 @@ jobs:
if: needs.changes.outputs.shouldTriggerCypress == 'true'
uses: depot/pull-action@v1
with:
- build-id: ${{ needs.container.outputs.build-id }} # TODO: Use unit-build-id when the Unit image works
+ build-id: ${{ needs.container.outputs.unit-build-id }}
tags: ${{ needs.container.outputs.tag }}
- name: Write .env # This step intentionally has no if, so that GH always considers the action as having run
@@ -196,6 +196,7 @@ jobs:
OBJECT_STORAGE_ACCESS_KEY_ID=object_storage_root_user
OBJECT_STORAGE_SECRET_ACCESS_KEY=object_storage_root_password
GITHUB_ACTION_RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
+ CELERY_METRICS_PORT=8999
EOT
- name: Start PostHog
diff --git a/frontend/__snapshots__/exporter-exporter--funnel-time-to-convert-insight.png b/frontend/__snapshots__/exporter-exporter--funnel-time-to-convert-insight.png
index e97ac272bc3b5..132f11783c137 100644
Binary files a/frontend/__snapshots__/exporter-exporter--funnel-time-to-convert-insight.png and b/frontend/__snapshots__/exporter-exporter--funnel-time-to-convert-insight.png differ
diff --git a/frontend/__snapshots__/posthog-3000-navigation--navigation-base.png b/frontend/__snapshots__/posthog-3000-navigation--navigation-base.png
index bbe83bd44e310..f481f17b769a5 100644
Binary files a/frontend/__snapshots__/posthog-3000-navigation--navigation-base.png and b/frontend/__snapshots__/posthog-3000-navigation--navigation-base.png differ
diff --git a/frontend/__snapshots__/scenes-app-apps--installed.png b/frontend/__snapshots__/scenes-app-apps--installed.png
index ca7fff9f98e95..31d7de616c9c1 100644
Binary files a/frontend/__snapshots__/scenes-app-apps--installed.png and b/frontend/__snapshots__/scenes-app-apps--installed.png differ
diff --git a/frontend/__snapshots__/scenes-app-surveys--new-survey-targeting-section.png b/frontend/__snapshots__/scenes-app-surveys--new-survey-targeting-section.png
index 5fe3b4623c231..99f004ff819fd 100644
Binary files a/frontend/__snapshots__/scenes-app-surveys--new-survey-targeting-section.png and b/frontend/__snapshots__/scenes-app-surveys--new-survey-targeting-section.png differ
diff --git a/frontend/src/exporter/Exporter.scss b/frontend/src/exporter/Exporter.scss
index 0493c0f1eeb17..ff33d1000546f 100644
--- a/frontend/src/exporter/Exporter.scss
+++ b/frontend/src/exporter/Exporter.scss
@@ -1,5 +1,11 @@
@import '../styles/mixins';
+body.ExporterBody {
+ &.posthog-3000 {
+ overflow: initial;
+ }
+}
+
.Exporter {
display: flex;
flex-direction: column;
diff --git a/frontend/src/exporter/Exporter.tsx b/frontend/src/exporter/Exporter.tsx
index 0ba873c570fe1..dbc43c689b9fe 100644
--- a/frontend/src/exporter/Exporter.tsx
+++ b/frontend/src/exporter/Exporter.tsx
@@ -3,6 +3,7 @@ import './Exporter.scss'
import clsx from 'clsx'
import { useValues } from 'kea'
+import { use3000Body } from 'lib/hooks/use3000Body'
import { useResizeObserver } from 'lib/hooks/useResizeObserver'
import { Link } from 'lib/lemon-ui/Link'
import { useEffect } from 'react'
@@ -33,6 +34,8 @@ export function Exporter(props: ExportedData): JSX.Element {
window.parent?.postMessage({ event: 'posthog:dimensions', name: window.name, height, width }, '*')
}, [height, width])
+ use3000Body()
+
return (
+
-
-
-
- {% include "head.html" %}
- {% if add_og_tags %}
-
-
-
-
-
-
-
- {% endif %}
-
-
-
-
-
+
+
+
+ {% include "head.html" %} {% if add_og_tags %}
+
+
+
+
+
+
+
+ {% endif %}
+
+
+
+
+
diff --git a/frontend/src/layout/FeaturePreviews/FeaturePreviewsModal.tsx b/frontend/src/layout/FeaturePreviews/FeaturePreviewsModal.tsx
index 5899f59b82d47..0a2667b2fd14a 100644
--- a/frontend/src/layout/FeaturePreviews/FeaturePreviewsModal.tsx
+++ b/frontend/src/layout/FeaturePreviews/FeaturePreviewsModal.tsx
@@ -4,6 +4,7 @@ import { useActions, useAsyncActions, useValues } from 'kea'
import { SpinnerOverlay } from 'lib/lemon-ui/Spinner'
import { useLayoutEffect, useState } from 'react'
+import { sidePanelStateLogic } from '../navigation-3000/sidepanel/sidePanelStateLogic'
import { EnrichedEarlyAccessFeature, featurePreviewsLogic } from './featurePreviewsLogic'
export function FeaturePreviewsModal({
@@ -11,13 +12,17 @@ export function FeaturePreviewsModal({
}: {
/** @deprecated This is only for Storybook. */
inline?: boolean
-}): JSX.Element {
- const { featurePreviewsModalVisible, earlyAccessFeatures, rawEarlyAccessFeaturesLoading } =
- useValues(featurePreviewsLogic)
+}): JSX.Element | null {
+ const { featurePreviewsModalVisible } = useValues(featurePreviewsLogic)
const { hideFeaturePreviewsModal, loadEarlyAccessFeatures } = useActions(featurePreviewsLogic)
+ const { sidePanelAvailable } = useValues(sidePanelStateLogic)
useLayoutEffect(() => loadEarlyAccessFeatures(), [])
+ if (sidePanelAvailable) {
+ return null
+ }
+
return (
-
- {earlyAccessFeatures.map((feature, i) => {
- if (!feature.flagKey) {
- return false
- }
- return (
-
- {i > 0 && }
-
-
- )
- })}
- {rawEarlyAccessFeaturesLoading ? (
-
- ) : earlyAccessFeatures.length === 0 ? (
-
- No feature previews currently available.
-
- Check back later!
-
- ) : null}
-
+
)
}
+export function FeaturePreviews(): JSX.Element {
+ const { earlyAccessFeatures, rawEarlyAccessFeaturesLoading } = useValues(featurePreviewsLogic)
+ const { loadEarlyAccessFeatures } = useActions(featurePreviewsLogic)
+
+ useLayoutEffect(() => loadEarlyAccessFeatures(), [])
+
+ return (
+
+ {earlyAccessFeatures.map((feature, i) => {
+ if (!feature.flagKey) {
+ return false
+ }
+ return (
+
+ {i > 0 && }
+
+
+ )
+ })}
+ {rawEarlyAccessFeaturesLoading ? (
+
+ ) : earlyAccessFeatures.length === 0 ? (
+
+ No feature previews currently available.
+
+ Check back later!
+
+ ) : null}
+
+ )
+}
+
function FeaturePreview({ feature }: { feature: EnrichedEarlyAccessFeature }): JSX.Element {
const { activeFeedbackFlagKey, activeFeedbackFlagKeyLoading } = useValues(featurePreviewsLogic)
const { beginEarlyAccessFeatureFeedback, cancelEarlyAccessFeatureFeedback, updateEarlyAccessFeatureEnrollment } =
@@ -80,18 +96,9 @@ function FeaturePreview({ feature }: { feature: EnrichedEarlyAccessFeature }): J
{description || No description.}
-
{
- if (!isFeedbackActive) {
- beginEarlyAccessFeatureFeedback(flagKey)
- } else {
- cancelEarlyAccessFeatureFeedback()
- setFeedback('')
- }
- }}
- >
- {!isFeedbackActive ? 'Give' : 'Cancel'} feedback
-
+ {!isFeedbackActive ? (
+
beginEarlyAccessFeatureFeedback(flagKey)}>Give feedback
+ ) : null}
{documentationUrl && (
<>
{' • '}
@@ -119,19 +126,31 @@ function FeaturePreview({ feature }: { feature: EnrichedEarlyAccessFeature }): J
}
}}
/>
-
{
- void submitEarlyAccessFeatureFeedback(feedback).then(() => {
+
+ {
+ cancelEarlyAccessFeatureFeedback()
setFeedback('')
- })
- }}
- loading={activeFeedbackFlagKeyLoading}
- fullWidth
- center
- >
- Submit feedback
-
+ }}
+ >
+ Cancel
+
+
+ {
+ void submitEarlyAccessFeatureFeedback(feedback).then(() => {
+ setFeedback('')
+ })
+ }}
+ loading={activeFeedbackFlagKeyLoading}
+ className="flex-1"
+ center
+ >
+ Submit feedback
+
+
)}
diff --git a/frontend/src/layout/navigation-3000/components/Navbar.tsx b/frontend/src/layout/navigation-3000/components/Navbar.tsx
index c356f209e5684..d74ba8e029fab 100644
--- a/frontend/src/layout/navigation-3000/components/Navbar.tsx
+++ b/frontend/src/layout/navigation-3000/components/Navbar.tsx
@@ -1,4 +1,4 @@
-import { IconAsterisk, IconDay, IconGear, IconNight, IconSearch } from '@posthog/icons'
+import { IconAsterisk, IconDay, IconGear, IconNight, IconSearch, IconToolbar } from '@posthog/icons'
import { LemonBadge } from '@posthog/lemon-ui'
import clsx from 'clsx'
import { useActions, useValues } from 'kea'
@@ -93,6 +93,12 @@ export function Navbar(): JSX.Element {
onClick={toggleSearchBar}
keyboardShortcut={{ command: true, k: true }}
/>
+ }
+ identifier={Scene.ToolbarLaunch}
+ title="Toolbar"
+ to={urls.toolbarLaunch()}
+ />
}
identifier="theme-button"
@@ -113,7 +119,7 @@ export function Navbar(): JSX.Element {
}
identifier={Scene.Settings}
- title="Project settings"
+ title="Settings"
to={urls.settings('project')}
/>
diff --git a/frontend/src/layout/navigation-3000/navigationLogic.tsx b/frontend/src/layout/navigation-3000/navigationLogic.tsx
index 859da6313baf7..2b1579e7f2816 100644
--- a/frontend/src/layout/navigation-3000/navigationLogic.tsx
+++ b/frontend/src/layout/navigation-3000/navigationLogic.tsx
@@ -1,8 +1,8 @@
import {
- IconApps,
IconChat,
IconDashboard,
IconDatabase,
+ IconDecisionTree,
IconGraph,
IconHome,
IconLive,
@@ -14,7 +14,6 @@ import {
IconServer,
IconTestTube,
IconToggle,
- IconToolbar,
} from '@posthog/icons'
import { lemonToast } from '@posthog/lemon-ui'
import { captureException } from '@sentry/react'
@@ -37,7 +36,6 @@ import { experimentsSidebarLogic } from './sidebars/experiments'
import { featureFlagsSidebarLogic } from './sidebars/featureFlags'
import { insightsSidebarLogic } from './sidebars/insights'
import { personsAndGroupsSidebarLogic } from './sidebars/personsAndGroups'
-import { toolbarSidebarLogic } from './sidebars/toolbar'
import { BasicListItem, ExtendedListItem, NavbarItem, SidebarNavbarItem } from './types'
/** Multi-segment item keys are joined using this separator for easy comparisons. */
@@ -376,26 +374,12 @@ export const navigation3000Logic = kea([
tag: 'beta' as const,
}
: null,
- {
- identifier: Scene.DataWarehouse,
- label: 'Data warehouse',
- icon: ,
- to: urls.dataWarehouse(),
- featureFlag: FEATURE_FLAGS.DATA_WAREHOUSE,
- tag: 'beta' as const,
- },
{
identifier: Scene.Replay,
label: 'Session replay',
icon: ,
to: urls.replay(),
},
- {
- identifier: Scene.Surveys,
- label: 'Surveys',
- icon: ,
- to: urls.surveys(),
- },
{
identifier: Scene.FeatureFlags,
label: 'Feature flags',
@@ -410,28 +394,33 @@ export const navigation3000Logic = kea([
logic: isUsingSidebar ? experimentsSidebarLogic : undefined,
to: isUsingSidebar ? undefined : urls.experiments(),
},
+ {
+ identifier: Scene.Surveys,
+ label: 'Surveys',
+ icon: ,
+ to: urls.surveys(),
+ },
{
identifier: Scene.EarlyAccessFeatures,
label: 'Early access features',
icon: ,
to: urls.earlyAccessFeatures(),
},
- ].filter(isNotNil),
- [
{
- identifier: Scene.Apps,
- label: 'Apps',
- icon: ,
- to: urls.projectApps(),
+ identifier: Scene.DataWarehouse,
+ label: 'Data warehouse',
+ icon: ,
+ to: urls.dataWarehouse(),
+ featureFlag: FEATURE_FLAGS.DATA_WAREHOUSE,
+ tag: 'beta' as const,
},
{
- identifier: Scene.ToolbarLaunch,
- label: 'Toolbar',
- icon: ,
- logic: isUsingSidebar ? toolbarSidebarLogic : undefined,
- to: isUsingSidebar ? undefined : urls.toolbarLaunch(),
+ identifier: Scene.Apps,
+ label: 'Data pipeline',
+ icon: ,
+ to: urls.projectApps(),
},
- ],
+ ].filter(isNotNil),
]
},
],
diff --git a/frontend/src/layout/navigation-3000/sidepanel/SidePanel.tsx b/frontend/src/layout/navigation-3000/sidepanel/SidePanel.tsx
index 55542da65ce43..5831d4a32aee7 100644
--- a/frontend/src/layout/navigation-3000/sidepanel/SidePanel.tsx
+++ b/frontend/src/layout/navigation-3000/sidepanel/SidePanel.tsx
@@ -1,6 +1,6 @@
import './SidePanel.scss'
-import { IconGear, IconInfo, IconNotebook, IconSupport } from '@posthog/icons'
+import { IconFeatures, IconGear, IconInfo, IconNotebook, IconSupport } from '@posthog/icons'
import { LemonButton } from '@posthog/lemon-ui'
import clsx from 'clsx'
import { useActions, useValues } from 'kea'
@@ -13,6 +13,7 @@ import { SidePanelTab } from '~/types'
import { SidePanelActivation, SidePanelActivationIcon } from './panels/SidePanelActivation'
import { SidePanelDocs } from './panels/SidePanelDocs'
+import { SidePanelFeaturePreviews } from './panels/SidePanelFeaturePreviews'
import { SidePanelSettings } from './panels/SidePanelSettings'
import { SidePanelSupport } from './panels/SidePanelSupport'
import { sidePanelLogic } from './sidePanelLogic'
@@ -45,6 +46,11 @@ export const SidePanelTabs: Record
diff --git a/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelDocs.tsx b/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelDocs.tsx
index edb6723ca71d4..97996e828271f 100644
--- a/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelDocs.tsx
+++ b/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelDocs.tsx
@@ -145,7 +145,7 @@ export const SidePanelDocs = (): JSX.Element => {
Open in new tab
-
+
{!ready &&
}
diff --git a/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelFeaturePreviews.tsx b/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelFeaturePreviews.tsx
new file mode 100644
index 0000000000000..a0be65ed4ceb7
--- /dev/null
+++ b/frontend/src/layout/navigation-3000/sidepanel/panels/SidePanelFeaturePreviews.tsx
@@ -0,0 +1,19 @@
+import { LemonBanner } from '@posthog/lemon-ui'
+
+import { FeaturePreviews } from '~/layout/FeaturePreviews/FeaturePreviewsModal'
+
+import { SidePanelPaneHeader } from '../components/SidePanelPaneHeader'
+
+export const SidePanelFeaturePreviews = (): JSX.Element => {
+ return (
+
+
+
+
+ Get early access to these upcoming features. Let us know what you think!
+
+
+
+
+ )
+}
diff --git a/frontend/src/layout/navigation-3000/sidepanel/sidePanelLogic.tsx b/frontend/src/layout/navigation-3000/sidepanel/sidePanelLogic.tsx
index fb2a667d7a906..f96600246b5bb 100644
--- a/frontend/src/layout/navigation-3000/sidepanel/sidePanelLogic.tsx
+++ b/frontend/src/layout/navigation-3000/sidepanel/sidePanelLogic.tsx
@@ -9,6 +9,8 @@ import { SidePanelTab } from '~/types'
import type { sidePanelLogicType } from './sidePanelLogicType'
import { sidePanelStateLogic } from './sidePanelStateLogic'
+const SECRET_TABS = [SidePanelTab.Settings, SidePanelTab.FeaturePreviews]
+
export const sidePanelLogic = kea
([
path(['scenes', 'navigation', 'sidepanel', 'sidePanelLogic']),
connect({
@@ -42,6 +44,10 @@ export const sidePanelLogic = kea([
tabs.push(SidePanelTab.Settings)
tabs.push(SidePanelTab.Activation)
+ if (featureFlags[FEATURE_FLAGS.EARLY_ACCESS_FEATURE_SITE_BUTTON]) {
+ tabs.push(SidePanelTab.FeaturePreviews)
+ }
+
return tabs
},
],
@@ -55,7 +61,7 @@ export const sidePanelLogic = kea([
}
// Hide certain tabs unless they are selected
- if ([SidePanelTab.Settings].includes(tab)) {
+ if (SECRET_TABS.includes(tab)) {
return false
}
diff --git a/frontend/src/layout/navigation-3000/themeLogic.ts b/frontend/src/layout/navigation-3000/themeLogic.ts
index d8997a18c20a0..de89486714137 100644
--- a/frontend/src/layout/navigation-3000/themeLogic.ts
+++ b/frontend/src/layout/navigation-3000/themeLogic.ts
@@ -1,5 +1,4 @@
import { actions, connect, events, kea, path, reducers, selectors } from 'kea'
-import { subscriptions } from 'kea-subscriptions'
import { FEATURE_FLAGS } from 'lib/constants'
import { featureFlagLogic } from 'lib/logic/featureFlagLogic'
import { sceneLogic } from 'scenes/sceneLogic'
@@ -65,11 +64,6 @@ export const themeLogic = kea([
},
],
}),
- subscriptions({
- isDarkModeOn: (isDarkModeOn) => {
- document.body.setAttribute('theme', isDarkModeOn ? 'dark' : 'light')
- },
- }),
events(({ cache, actions }) => ({
afterMount() {
cache.prefersColorSchemeMedia = window.matchMedia('(prefers-color-scheme: dark)')
diff --git a/frontend/src/layout/navigation/TopBar/SitePopover.tsx b/frontend/src/layout/navigation/TopBar/SitePopover.tsx
index 4a5e4ee0e9f58..777ac1d0a4ae6 100644
--- a/frontend/src/layout/navigation/TopBar/SitePopover.tsx
+++ b/frontend/src/layout/navigation/TopBar/SitePopover.tsx
@@ -1,4 +1,4 @@
-import { IconLive } from '@posthog/icons'
+import { IconFeatures, IconLive } from '@posthog/icons'
import { LemonButtonPropsBase } from '@posthog/lemon-ui'
import { useActions, useValues } from 'kea'
import { FlaggedFeature } from 'lib/components/FlaggedFeature'
@@ -14,7 +14,6 @@ import {
IconLogout,
IconOffline,
IconPlus,
- IconRedeem,
IconSettings,
IconUpdate,
} from 'lib/lemon-ui/icons'
@@ -218,7 +217,7 @@ function FeaturePreviewsButton(): JSX.Element {
}
}}
data-attr={isUsingSiteApp ? 'early-access-feature-button' : undefined}
- icon={}
+ icon={}
fullWidth
>
Feature previews
diff --git a/frontend/src/lib/hooks/use3000Body.ts b/frontend/src/lib/hooks/use3000Body.ts
new file mode 100644
index 0000000000000..2b7ba96747d70
--- /dev/null
+++ b/frontend/src/lib/hooks/use3000Body.ts
@@ -0,0 +1,20 @@
+import { useValues } from 'kea'
+import { useEffect } from 'react'
+
+import { themeLogic } from '~/layout/navigation-3000/themeLogic'
+
+import { useFeatureFlag } from './useFeatureFlag'
+
+export function use3000Body(): void {
+ const is3000 = !!useFeatureFlag('POSTHOG_3000')
+ const { isDarkModeOn } = useValues(themeLogic)
+
+ useEffect(() => {
+ if (is3000) {
+ document.body.setAttribute('theme', isDarkModeOn ? 'dark' : 'light')
+ document.body.classList.add('posthog-3000')
+ } else {
+ document.body.classList.remove('posthog-3000')
+ }
+ }, [is3000, isDarkModeOn])
+}
diff --git a/frontend/src/lib/lemon-ui/LemonInput/LemonInput.scss b/frontend/src/lib/lemon-ui/LemonInput/LemonInput.scss
index 5b20638a5e72e..21d86a69c33b3 100644
--- a/frontend/src/lib/lemon-ui/LemonInput/LemonInput.scss
+++ b/frontend/src/lib/lemon-ui/LemonInput/LemonInput.scss
@@ -31,7 +31,7 @@
border-color: var(--primary-3000);
.posthog-3000 & {
- border-color: var(--border-bold);
+ border-color: var(--border-active);
}
}
diff --git a/frontend/src/lib/lemon-ui/LemonTextArea/LemonTextArea.scss b/frontend/src/lib/lemon-ui/LemonTextArea/LemonTextArea.scss
index 728dc4ccaab79..3c24f908503e9 100644
--- a/frontend/src/lib/lemon-ui/LemonTextArea/LemonTextArea.scss
+++ b/frontend/src/lib/lemon-ui/LemonTextArea/LemonTextArea.scss
@@ -18,6 +18,10 @@
&:not(:disabled):hover {
border: 1px solid var(--primary-3000-hover);
+
+ .posthog-3000 & {
+ border-color: var(--border-bold);
+ }
}
&:disabled {
@@ -27,6 +31,10 @@
&:focus:not(:disabled) {
border: 1px solid var(--primary-3000);
+
+ .posthog-3000 & {
+ border-color: var(--border-active);
+ }
}
.Field--error & {
diff --git a/frontend/src/scenes/App.tsx b/frontend/src/scenes/App.tsx
index 1bc924fbc7bfc..a12a690e5fb53 100644
--- a/frontend/src/scenes/App.tsx
+++ b/frontend/src/scenes/App.tsx
@@ -1,10 +1,10 @@
import { actions, BindLogic, connect, events, kea, path, reducers, selectors, useMountedLogic, useValues } from 'kea'
import { FEATURE_FLAGS } from 'lib/constants'
+import { use3000Body } from 'lib/hooks/use3000Body'
import { ToastCloseButton } from 'lib/lemon-ui/lemonToast'
import { SpinnerOverlay } from 'lib/lemon-ui/Spinner/Spinner'
import { featureFlagLogic } from 'lib/logic/featureFlagLogic'
import { inAppPromptLogic } from 'lib/logic/inAppPrompt/inAppPromptLogic'
-import { useEffect } from 'react'
import { Slide, ToastContainer } from 'react-toastify'
import { frontendAppsLogic } from 'scenes/apps/frontendAppsLogic'
import { appScenes } from 'scenes/appScenes'
@@ -70,16 +70,8 @@ export const appLogic = kea([
export function App(): JSX.Element | null {
const { showApp, showingDelayedSpinner } = useValues(appLogic)
- const { featureFlags } = useValues(featureFlagLogic)
useMountedLogic(sceneLogic({ scenes: appScenes }))
-
- useEffect(() => {
- if (featureFlags[FEATURE_FLAGS.POSTHOG_3000]) {
- document.body.classList.add('posthog-3000')
- } else {
- document.body.classList.remove('posthog-3000')
- }
- }, [featureFlags])
+ use3000Body()
if (showApp) {
return (
diff --git a/frontend/src/scenes/apps/appMetricsSceneLogic.ts b/frontend/src/scenes/apps/appMetricsSceneLogic.ts
index ca4b4239691c5..1c51aa7e45cb0 100644
--- a/frontend/src/scenes/apps/appMetricsSceneLogic.ts
+++ b/frontend/src/scenes/apps/appMetricsSceneLogic.ts
@@ -184,7 +184,7 @@ export const appMetricsSceneLogic = kea([
(pluginConfig, pluginConfigId: number): Breadcrumb[] => [
{
key: Scene.Apps,
- name: 'Apps',
+ name: 'Data pipeline',
path: urls.projectApps(),
},
{
diff --git a/frontend/src/scenes/events/Events.tsx b/frontend/src/scenes/events/Events.tsx
index cadea16300bca..af4caa3bd67b6 100644
--- a/frontend/src/scenes/events/Events.tsx
+++ b/frontend/src/scenes/events/Events.tsx
@@ -2,13 +2,11 @@ import { PageHeader } from 'lib/components/PageHeader'
import { EventsScene } from 'scenes/events/EventsScene'
import { SceneExport } from 'scenes/sceneTypes'
+import { eventsSceneLogic } from './eventsSceneLogic'
+
export const scene: SceneExport = {
component: Events,
- // TODO!
- // NOTE: Removing the lines below because turbo mode messes up having two separate versions of this scene.
- // It's a small price to pay. Put this back when the flag is removed.
- // logic: eventsTableLogic,
- // paramsToProps: ({ params: { fixedFilters } }) => ({ fixedFilters, key: 'EventsTable', sceneUrl: urls.events() }),
+ logic: eventsSceneLogic,
}
export function Events(): JSX.Element {
diff --git a/frontend/src/scenes/persons/PersonDisplay.tsx b/frontend/src/scenes/persons/PersonDisplay.tsx
index 3d2cb1d9b758c..98b349859b245 100644
--- a/frontend/src/scenes/persons/PersonDisplay.tsx
+++ b/frontend/src/scenes/persons/PersonDisplay.tsx
@@ -104,6 +104,7 @@ export function PersonDisplay({
return
}
}}
+ subtle
data-attr={`goto-person-email-${person?.distinct_id || person?.distinct_ids?.[0]}`}
>
{content}
diff --git a/frontend/src/scenes/plugins/AppsScene.tsx b/frontend/src/scenes/plugins/AppsScene.tsx
index 54d476409bb0d..4bd07fb5dc10f 100644
--- a/frontend/src/scenes/plugins/AppsScene.tsx
+++ b/frontend/src/scenes/plugins/AppsScene.tsx
@@ -65,7 +65,7 @@ export function AppsScene(): JSX.Element | null {
},
canGloballyManagePlugins(user?.organization) && {
key: PluginTab.AppsManagement,
- label: 'Apps Management',
+ label: 'Manage apps',
content: ,
},
]}
diff --git a/frontend/src/scenes/plugins/tabs/apps/AppsTab.tsx b/frontend/src/scenes/plugins/tabs/apps/AppsTab.tsx
index 384d8d697d63b..41618c280503c 100644
--- a/frontend/src/scenes/plugins/tabs/apps/AppsTab.tsx
+++ b/frontend/src/scenes/plugins/tabs/apps/AppsTab.tsx
@@ -29,13 +29,13 @@ export function AppsTab(): JSX.Element {
None:
from posthog.settings import sentry_init
sentry_init()
- start_http_server(8001)
+ start_http_server(int(os.getenv("CELERY_METRICS_PORT", "8001")))
def add_periodic_task_with_expiry(
diff --git a/requirements.in b/requirements.in
index 574ff57900d39..b122d7f213286 100644
--- a/requirements.in
+++ b/requirements.in
@@ -4,7 +4,7 @@
# - `pip-compile --rebuild requirements.in`
# - `pip-compile --rebuild requirements-dev.in`
#
-aiohttp>=3.8.4
+aiohttp>=3.9.0
aioboto3==11.1
aiokafka>=0.8
antlr4-python3-runtime==4.13.1
diff --git a/requirements.txt b/requirements.txt
index 752fd3e600466..ad791565c4896 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,13 +4,11 @@
#
# pip-compile requirements.in
#
-aioboto3==11.1.0
+aioboto3==11.1
# via -r requirements.in
aiobotocore[boto3]==2.5.0
- # via
- # aioboto3
- # aiobotocore
-aiohttp==3.8.6
+ # via aioboto3
+aiohttp==3.9.0
# via
# -r requirements.in
# aiobotocore
@@ -92,7 +90,6 @@ chardet==5.1.0
# via prance
charset-normalizer==2.1.0
# via
- # aiohttp
# requests
# snowflake-connector-python
click==8.1.7
@@ -225,7 +222,6 @@ geoip2==4.6.0
# via -r requirements.in
google-api-core[grpc]==2.11.1
# via
- # google-api-core
# google-cloud-bigquery
# google-cloud-core
google-auth==2.22.0