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 @@
+