Feature/telemetry catalog schema segmentation - #140
Merged
dimitar-radenkov merged 2 commits intoJul 25, 2026
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces a centralized telemetry event/property catalog with schema validation and channel segmentation (product vs. diagnostic), then migrates existing telemetry call sites to use the catalog constants and the new diagnostic tracking APIs.
Changes:
- Added
TelemetryEventCatalog/TelemetryEvents/TelemetryPropertyKeysand runtime schema validation, including per-event telemetry channel selection. - Updated many event emissions to use catalog constants and structured property keys (and routed exception telemetry through diagnostic tracking).
- Extended telemetry plumbing (service interface, DI wiring, and tests) to support the new schema + channels.
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| Pointframe/Views/OverlayWindow.Recording.cs | Switches recording-related telemetry to catalog constants/keys. |
| Pointframe/ViewModels/TrimViewModel.cs | Uses catalog events and diagnostic exception tracking for trim flow. |
| Pointframe/ViewModels/SettingsViewModel.cs | Adds telemetry for settings open/save/cancel/section interactions. |
| Pointframe/ViewModels/RecordingHudViewModel.cs | Adds HUD interaction telemetry and duration reporting. |
| Pointframe/ViewModels/OverlayViewModel.cs | Replaces string event names with catalog constants. |
| Pointframe/ViewModels/LibraryViewModel.cs | Updates events to catalog constants; expands NullTelemetryService for new interface. |
| Pointframe/ViewModels/BeautifierViewModel.cs | Migrates beautifier telemetry events to catalog constants. |
| Pointframe/ViewModels/AnnotationViewModel.cs | Migrates annotation commit telemetry to catalog constants/keys. |
| Pointframe/ViewModels/AboutViewModel.cs | Adds telemetry for About open/close and URL host tracking. |
| Pointframe/Services/Update/AutoUpdateService.cs | Migrates update confirm/dismiss telemetry to catalog constants/keys. |
| Pointframe/Services/Infrastructure/TrayIconManager.cs | Migrates tray actions (update check/trim/gif export) telemetry to catalog constants and diagnostic exception tracking. |
| Pointframe/Services/Infrastructure/TelemetryService.cs | Implements channel-aware tracking + schema validation and adds schema/channel metadata to scope. |
| Pointframe/Services/Infrastructure/TelemetryHeartbeatService.cs | Migrates heartbeat telemetry to catalog constants/keys. |
| Pointframe/Services/Infrastructure/TelemetryEventCatalog.cs | New centralized telemetry schema (events, required properties, channels, validation result types). |
| Pointframe/Services/Infrastructure/ITelemetryService.cs | Extends telemetry interface with product/diagnostic event tracking + diagnostic exception tracking. |
| Pointframe/Services/Infrastructure/AppErrorHandler.cs | Routes exception telemetry through diagnostic exception tracking. |
| Pointframe/Services/Infrastructure/ActivationTelemetryService.cs | Migrates activation telemetry to catalog constants/keys. |
| Pointframe/Services/Capture/CaptureLaunchService.cs | Migrates snip/capture/recording telemetry to catalog constants/keys. |
| Pointframe/Services/Annotation/OcrLassoController.cs | Migrates OCR telemetry to catalog constants/keys. |
| Pointframe/AppServiceRegistration.cs | Injects telemetry into RecordingHudViewModel creation. |
| Pointframe/App.xaml.cs | Migrates app lifecycle + open-image/library/update telemetry to catalog constants/keys. |
| Pointframe.Tests/Services/TelemetryServiceTests.cs | Updates tests for channel/scope behavior and schema warnings. |
| Pointframe.Tests/Services/TelemetryEventCatalogTests.cs | Adds coverage for catalog validation and diagnostic event classification. |
| Pointframe.Tests/Services/ActivationTelemetryServiceTests.cs | Updates tests to assert catalog constants/keys. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
150
to
+154
| var scope = new Dictionary<string, object?> | ||
| { | ||
| ["version"] = _appVersion, | ||
| [TelemetryPropertyKeys.Version] = _appVersion, | ||
| ["session_id"] = _sessionId, | ||
| ["telemetry_channel"] = channel.ToString().ToLowerInvariant(), |
Comment on lines
+291
to
299
| private int GetElapsedSeconds() | ||
| { | ||
| if (TimeSpan.TryParseExact(ElapsedText, @"mm\:ss", null, out var elapsed)) | ||
| { | ||
| return (int)elapsed.TotalSeconds; | ||
| } | ||
|
|
||
| return 0; | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.