From 1aea2593e9c78f72b1f669e794ed54c51ee0267d Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Fri, 16 Jan 2026 14:50:25 -0300 Subject: [PATCH] chore: use posthog's default exception reporting We had a manual handling since now, but since then PostHog added official support via their SDK. This should give us stack traces! --- internal/event/event.go | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/internal/event/event.go b/internal/event/event.go index 1dee1d49113684d80a5d3f390b7f912d22d7231d..674586b06bee03f22c1bd880a5bd39b740c75f66 100644 --- a/internal/event/event.go +++ b/internal/event/event.go @@ -7,6 +7,7 @@ import ( "path/filepath" "reflect" "runtime" + "time" "github.com/charmbracelet/crush/internal/version" "github.com/posthog/posthog-go" @@ -85,19 +86,16 @@ func Error(err any, props ...any) { if client == nil { return } - // The PostHog Go client does not yet support sending exceptions. - // We're mimicking the behavior by sending the minimal info required - // for PostHog to recognize this as an exception event. - props = append( - []any{ - "$exception_list", - []map[string]string{ - {"type": reflect.TypeOf(err).String(), "value": fmt.Sprintf("%v", err)}, - }, - }, - props..., - ) - send("$exception", props...) + posthogErr := client.Enqueue(posthog.NewDefaultException( + time.Now(), + distinctId, + reflect.TypeOf(err).String(), + fmt.Sprintf("%v", err), + )) + if err != nil { + slog.Error("Failed to enqueue PostHog error", "err", err, "props", props, "posthogErr", posthogErr) + return + } } func Flush() {