fix(telemetry): dedupe plugin_loaded event to once per UTC day
The plugin_loaded event was emitted on every plugin reload, generating high event volume on PostHog (proportional to opencode restarts per user per day). With MAU > 60K and active power users restarting frequently, this drove unnecessary event spend. Add a separate daily dedup state field (lastPluginLoadedDayUTC) so the plugin_loaded capture only fires once per UTC day per machine. The existing daily activity dedup (lastActiveDayUTC, used by omo_daily_active) is preserved as an independent gate so the two dimensions cannot overwrite each other in the activity state file.
This commit is contained in:
@@ -8,6 +8,7 @@ import { writeFileAtomically } from "./write-file-atomically"
|
||||
|
||||
type PostHogActivityState = {
|
||||
lastActiveDayUTC?: string
|
||||
lastPluginLoadedDayUTC?: string
|
||||
}
|
||||
|
||||
type PostHogActivityCaptureState = {
|
||||
@@ -15,6 +16,11 @@ type PostHogActivityCaptureState = {
|
||||
captureDaily: boolean
|
||||
}
|
||||
|
||||
type PluginLoadedCaptureState = {
|
||||
dayUTC: string
|
||||
capturePluginLoaded: boolean
|
||||
}
|
||||
|
||||
const POSTHOG_ACTIVITY_STATE_FILE = "posthog-activity.json"
|
||||
|
||||
function getPostHogActivityStateFilePath(): string {
|
||||
@@ -73,7 +79,8 @@ export function getPostHogActivityCaptureState(now: Date = new Date()): PostHogA
|
||||
|
||||
if (captureDaily) {
|
||||
writePostHogActivityState({
|
||||
lastActiveDayUTC: captureDaily ? dayUTC : state.lastActiveDayUTC,
|
||||
...state,
|
||||
lastActiveDayUTC: dayUTC,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -82,3 +89,22 @@ export function getPostHogActivityCaptureState(now: Date = new Date()): PostHogA
|
||||
captureDaily,
|
||||
}
|
||||
}
|
||||
|
||||
export function getPluginLoadedCaptureState(now: Date = new Date()): PluginLoadedCaptureState {
|
||||
const state = readPostHogActivityState()
|
||||
const dayUTC = getUtcDayString(now)
|
||||
|
||||
const capturePluginLoaded = state.lastPluginLoadedDayUTC !== dayUTC
|
||||
|
||||
if (capturePluginLoaded) {
|
||||
writePostHogActivityState({
|
||||
...state,
|
||||
lastPluginLoadedDayUTC: dayUTC,
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
dayUTC,
|
||||
capturePluginLoaded,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user