diff --git a/apps/desktop/src/services/telemetry-service.ts b/apps/desktop/src/services/telemetry-service.ts index b2311fc..6293816 100644 --- a/apps/desktop/src/services/telemetry-service.ts +++ b/apps/desktop/src/services/telemetry-service.ts @@ -13,6 +13,7 @@ import type { OnboardingCompletedEvent, OnboardingAbandonedEvent, NativeHelperCrashedEvent, + NoteCreatedEvent, } from "../types/telemetry-events"; export interface TranscriptionMetrics { @@ -407,6 +408,22 @@ export class TelemetryService { logger.main.debug("Tracked native helper crash", props); } + // ============================================================================ + // Notes Events + // ============================================================================ + + trackNoteCreated(props: NoteCreatedEvent): void { + if (!this.posthog || !this.enabled) return; + + this.posthog.capture({ + distinctId: this.machineId, + event: "note_created", + properties: { ...props, ...this.persistedProperties }, + }); + + logger.main.debug("Tracked note created", props); + } + // ============================================================================ // Transcription Events // ============================================================================ diff --git a/apps/desktop/src/trpc/routers/notes.ts b/apps/desktop/src/trpc/routers/notes.ts index d61a0b5..6a5108f 100644 --- a/apps/desktop/src/trpc/routers/notes.ts +++ b/apps/desktop/src/trpc/routers/notes.ts @@ -1,6 +1,7 @@ import { z } from "zod"; import { createRouter, procedure } from "../trpc"; import NotesService from "../../services/notes-service"; +import { ServiceManager } from "../../main/managers/service-manager"; const notesService = NotesService.getInstance(); @@ -59,11 +60,22 @@ export const notesRouter = createRouter({ // Create new note createNote: procedure.input(CreateNoteSchema).mutation(async ({ input }) => { - return await notesService.createNote({ + const note = await notesService.createNote({ title: input.title, initialContent: input.initialContent || "", icon: input.icon, }); + + // Track telemetry + const telemetryService = + ServiceManager.getInstance().getService("telemetryService"); + telemetryService.trackNoteCreated({ + note_id: note.id, + has_initial_content: !!input.initialContent, + has_icon: !!input.icon, + }); + + return note; }), // Update note title diff --git a/apps/desktop/src/types/telemetry-events.ts b/apps/desktop/src/types/telemetry-events.ts index 1d54e12..cbb0d66 100644 --- a/apps/desktop/src/types/telemetry-events.ts +++ b/apps/desktop/src/types/telemetry-events.ts @@ -91,3 +91,16 @@ export interface NativeHelperCrashedEvent { max_restarts: number; will_restart: boolean; } + +// ============================================================================ +// Notes Events +// ============================================================================ + +/** + * Fired when a new note is created + */ +export interface NoteCreatedEvent { + note_id: number; + has_initial_content: boolean; + has_icon: boolean; +}