diff --git a/server/config/development.yaml b/server/config/development.yaml index 6e8eb8ee93..07a8c2772f 100644 --- a/server/config/development.yaml +++ b/server/config/development.yaml @@ -22,6 +22,7 @@ startWorkflowDisabled: false hideWorkflowQueryErrors: false refreshWorkflowCountsDisabled: false activityCommandsDisabled: false +disableTrackingPixel: false auth: enabled: false providers: diff --git a/server/config/docker.yaml b/server/config/docker.yaml index 203a4d6c71..8a99cc4be8 100644 --- a/server/config/docker.yaml +++ b/server/config/docker.yaml @@ -23,6 +23,7 @@ startWorkflowDisabled: {{ env "TEMPORAL_START_WORKFLOW_DISABLED" | default "fals hideWorkflowQueryErrors: {{ env "TEMPORAL_HIDE_WORKFLOW_QUERY_ERRORS" | default "false" }} refreshWorkflowCountsDisabled: {{ env "TEMPORAL_REFRESH_WORKFLOW_COUNTS_DISABLED" | default "false" }} activityCommandsDisabled: {{ env "TEMPORAL_ACTIVITY_COMMANDS_DISABLED" | default "false" }} +disableTrackingPixel: {{ env "TEMPORAL_DISABLE_TRACKING_PIXEL" | default "false" }} cors: cookieInsecure: {{ env "TEMPORAL_CSRF_COOKIE_INSECURE" | default "false" }} unsafeAllowAllOrigins: {{ env "TEMPORAL_CORS_UNSAFE_ALLOW_ALL_ORIGINS" | default "false" }} diff --git a/server/server/api/handler.go b/server/server/api/handler.go index 4af20a38c4..b18f826f11 100644 --- a/server/server/api/handler.go +++ b/server/server/api/handler.go @@ -76,6 +76,7 @@ type SettingsResponse struct { HideWorkflowQueryErrors bool RefreshWorkflowCountsDisabled bool ActivityCommandsDisabled bool + DisableTrackingPixel bool } func TemporalAPIHandler(cfgProvider *config.ConfigProviderWithRefresh, apiMiddleware []Middleware, conn *grpc.ClientConn) echo.HandlerFunc { @@ -153,6 +154,7 @@ func GetSettings(cfgProvider *config.ConfigProviderWithRefresh) func(echo.Contex HideWorkflowQueryErrors: cfg.HideWorkflowQueryErrors, RefreshWorkflowCountsDisabled: cfg.RefreshWorkflowCountsDisabled, ActivityCommandsDisabled: cfg.ActivityCommandsDisabled, + DisableTrackingPixel: cfg.DisableTrackingPixel, } return c.JSON(http.StatusOK, settings) diff --git a/server/server/config/config.go b/server/server/config/config.go index a569e689e9..5cde50982f 100644 --- a/server/server/config/config.go +++ b/server/server/config/config.go @@ -67,6 +67,8 @@ type ( RefreshWorkflowCountsDisabled bool `yaml:"refreshWorkflowCountsDisabled"` // Whether to disable activity commands in the UI ActivityCommandsDisabled bool `yaml:"activityCommandsDisabled"` + // Whether to disable the tracking pixel in the UI + DisableTrackingPixel bool `yaml:"disableTrackingPixel"` // Forward specified HTTP headers from HTTP API requests to Temporal gRPC backend ForwardHeaders []string `yaml:"forwardHeaders"` HideLogs bool `yaml:"hideLogs"` diff --git a/src/lib/components/session-pixel.svelte b/src/lib/components/session-pixel.svelte new file mode 100644 index 0000000000..baafbcf44e --- /dev/null +++ b/src/lib/components/session-pixel.svelte @@ -0,0 +1,43 @@ + + +{#if trackingPixelURL} + +{/if} diff --git a/src/lib/services/settings-service.ts b/src/lib/services/settings-service.ts index dee19493bb..e1184d89d2 100644 --- a/src/lib/services/settings-service.ts +++ b/src/lib/services/settings-service.ts @@ -48,6 +48,7 @@ export const fetchSettings = async (request = fetch): Promise => { refreshWorkflowCountsDisabled: !!settingsResponse?.RefreshWorkflowCountsDisabled, activityCommandsDisabled: !!settingsResponse?.ActivityCommandsDisabled, + disableTrackingPixel: !!settingsResponse?.DisableTrackingPixel, showTemporalSystemNamespace: settingsResponse?.ShowTemporalSystemNamespace, feedbackURL: settingsResponse?.FeedbackURL, diff --git a/src/lib/svelte-mocks/app/stores.ts b/src/lib/svelte-mocks/app/stores.ts index dae2bf70ae..7469f8415b 100644 --- a/src/lib/svelte-mocks/app/stores.ts +++ b/src/lib/svelte-mocks/app/stores.ts @@ -34,6 +34,7 @@ const settings: Settings = { workflowTerminateDisabled: false, hideWorkflowQueryErrors: false, activityCommandsDisabled: false, + disableTrackingPixel: false, feedbackURL: '', runtimeEnvironment: { isCloud: false, diff --git a/src/lib/types/global.ts b/src/lib/types/global.ts index b8b1c9d809..8cc898cd37 100644 --- a/src/lib/types/global.ts +++ b/src/lib/types/global.ts @@ -99,6 +99,7 @@ export type Settings = { hideWorkflowQueryErrors: boolean; batchActionsDisabled: boolean; activityCommandsDisabled: boolean; + disableTrackingPixel: boolean; showTemporalSystemNamespace: boolean; feedbackURL: string; runtimeEnvironment: { diff --git a/src/lib/types/index.ts b/src/lib/types/index.ts index 2c977f7d38..a1616a20d8 100644 --- a/src/lib/types/index.ts +++ b/src/lib/types/index.ts @@ -299,6 +299,7 @@ export type SettingsResponse = { HideWorkflowQueryErrors: boolean; RefreshWorkflowCountsDisabled: boolean; ActivityCommandsDisabled: boolean; + DisableTrackingPixel: boolean; ShowTemporalSystemNamespace: boolean; FeedbackURL: string; Version: string; diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index 97686cea2f..b24c568f05 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -7,6 +7,7 @@ import BottomNavigation from '$lib/components/bottom-nav.svelte'; import DataEncoderSettings from '$lib/components/data-encoder-settings.svelte'; import NamespacePicker from '$lib/components/namespace-picker.svelte'; + import SessionPixel from '$lib/components/session-pixel.svelte'; import SideNavigation from '$lib/components/side-nav.svelte'; import SkipNavigation from '$lib/components/skip-nav.svelte'; import TopNavigation from '$lib/components/top-nav.svelte'; @@ -316,3 +317,4 @@ +