Release/v1.4.0 connection ux sentry errors#12
Merged
rhughes42 merged 9 commits intoMay 14, 2026
Merged
Conversation
Agent-Logs-Url: https://github.com/rhughes42/optitrack-gh/sessions/9ffdcf42-ec1f-4db3-8007-0dd0620262ab Co-authored-by: rhughes42 <31203021+rhughes42@users.noreply.github.com>
Agent-Logs-Url: https://github.com/rhughes42/optitrack-gh/sessions/9ffdcf42-ec1f-4db3-8007-0dd0620262ab Co-authored-by: rhughes42 <31203021+rhughes42@users.noreply.github.com>
Agent-Logs-Url: https://github.com/rhughes42/optitrack-gh/sessions/9ffdcf42-ec1f-4db3-8007-0dd0620262ab Co-authored-by: rhughes42 <31203021+rhughes42@users.noreply.github.com>
Agent-Logs-Url: https://github.com/rhughes42/optitrack-gh/sessions/9ffdcf42-ec1f-4db3-8007-0dd0620262ab Co-authored-by: rhughes42 <31203021+rhughes42@users.noreply.github.com>
Agent-Logs-Url: https://github.com/rhughes42/optitrack-gh/sessions/9ffdcf42-ec1f-4db3-8007-0dd0620262ab Co-authored-by: rhughes42 <31203021+rhughes42@users.noreply.github.com>
Agent-Logs-Url: https://github.com/rhughes42/optitrack-gh/sessions/5b12b35d-f41b-4568-b9fe-6c5a9792182e Co-authored-by: rhughes42 <31203021+rhughes42@users.noreply.github.com>
Agent-Logs-Url: https://github.com/rhughes42/optitrack-gh/sessions/5b12b35d-f41b-4568-b9fe-6c5a9792182e Co-authored-by: rhughes42 <31203021+rhughes42@users.noreply.github.com>
Agent-Logs-Url: https://github.com/rhughes42/optitrack-gh/sessions/5b12b35d-f41b-4568-b9fe-6c5a9792182e Co-authored-by: rhughes42 <31203021+rhughes42@users.noreply.github.com>
rhughes42
merged commit May 14, 2026
8480e00
into
release/v1.3.0-natnet-abstraction
11 checks passed
There was a problem hiding this comment.
Pull request overview
This PR updates the Tracker Grasshopper component for v1.4.0 by expanding connection configuration (NatNet connection type + ports), adding runtime validation/warnings and richer outputs (frame metadata, latency), and introducing an optional, default-disabled Sentry-backed telemetry implementation behind ITelemetryService.
Changes:
- Expanded OptiTrack Stream inputs/outputs and added validation + improved runtime warnings/messages.
- Added NatNet support for configurable command/data ports and exposed frame timestamp + latency through core models.
- Implemented optional Sentry telemetry (env/local-config driven) and updated docs/changelog/versioning to v1.4.0.
Reviewed changes
Copilot reviewed 22 out of 23 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Tracker/TrackerComponent.cs | Expands component IO, adds validation/warnings, telemetry toggle, scale factor, and additional outputs. |
| src/Tracker/Tracker.csproj | Adds Sentry + supporting package references and compiles new telemetry classes. |
| src/Tracker/Properties/AssemblyInfo.cs | Bumps assembly versions to 1.4.0. |
| src/Tracker/OptiTrack/Telemetry/SentryTelemetryService.cs | Implements ITelemetryService using the Sentry .NET SDK with sanitization. |
| src/Tracker/OptiTrack/Telemetry/SentryTelemetryOptions.cs | Loads Sentry options from env vars and tracker.telemetry.local.json. |
| src/Tracker/OptiTrack/Telemetry/NoOpTelemetryService.cs | Adds Status support and status-aware constructors. |
| src/Tracker/OptiTrack/Telemetry/ITelemetryService.cs | Extends the telemetry interface with a Status property. |
| src/Tracker/OptiTrack/NatNet/NatNetOptiTrackClient.cs | Passes configurable command/data ports into NatNet connection params; forwards port info into connection info; updates frame conversion call. |
| src/Tracker/OptiTrack/NatNet/NatNetFrameConverter.cs | Adds TimestampSeconds and LatencySeconds to converted frames. |
| src/Tracker/OptiTrack/Core/OptiTrackModels.cs | Adds timestamp and latency fields to OptiTrackFrame. |
| src/Tracker/OptiTrack/Core/OptiTrackConnectionOptions.cs | Adds command/data port options to the connection options model. |
| src/Tracker/OptiTrack/Core/OptiTrackConnectionInfo.cs | Adds command/data port fields to connection info. |
| README.md | Updates telemetry language and modernization target to v1.4.0. |
| examples/01-connect-to-motive.md | Adds a user-facing connection walkthrough for the updated component inputs/outputs. |
| docs/troubleshooting.md | Documents new validation, port configuration, and telemetry behavior. |
| docs/telemetry.md | Updates policy to reflect v1.4.0 Sentry support and local config file format. |
| docs/setup.md | Updates setup steps for new connection inputs and optional telemetry enablement. |
| docs/grasshopper-components.md | Adds a detailed reference for the OptiTrack Stream component IO and compatibility notes. |
| docs/developer-guide.md | Updates guidance to reflect optional SentryTelemetryService and default-disabled constraint. |
| docs/compatibility.md | Documents the pinned Sentry SDK version and default-disabled behavior. |
| docs/architecture.md | Updates architecture boundary notes to include optional Sentry activation conditions. |
| CHANGELOG.md | Adds v1.4.0 release notes describing new UX/telemetry/IO. |
| .gitignore | Ignores tracker.telemetry.local.json. |
Comment on lines
+23
to
+30
| private const double NoFrameWarningThresholdSeconds = 5.0; | ||
|
|
||
| private static ITelemetryService telemetry = new NoOpTelemetryService(); | ||
| private static IOptiTrackClient optiTrackClient = CreateClient( telemetry ); | ||
| private static OptiTrackFrame currentFrame; | ||
| private static DateTime connectionStartedUtc = DateTime.MinValue; | ||
| private static DateTime lastFrameUtc = DateTime.MinValue; | ||
| private static bool noFrameWarningReported; |
Comment on lines
+146
to
+150
| if ( connect && !connectionConfirmed ) { | ||
| ConnectClient( localIP, serverIP, connectionType, commandPort, dataPort, redrawThrottle ); | ||
| } else if ( connect && connectionConfirmed ) { | ||
| ProcessFrameData( currentFrame, scaleFactor ); | ||
| ReportNoFrameWarning(); |
Comment on lines
+134
to
+137
| AddRuntimeMessage( GH_RuntimeMessageLevel.Error, "Tracker configuration is invalid. Fix warnings before connecting." ); | ||
| telemetry.CaptureMessage( "invalid_tracker_configuration", TelemetrySeverity.Warning, new TelemetryContext().SetTag( "operation", "component_validation" ) ); | ||
| SetOutputs( DA ); | ||
| return; |
Comment on lines
76
to
+80
| ConnectionType = ToNatNetConnectionType( options.ConnectionType ), | ||
| ServerAddress = options.ServerAddress, | ||
| LocalAddress = options.LocalAddress | ||
| LocalAddress = options.LocalAddress, | ||
| ServerCommandPort = (ushort) options.ServerCommandPort, | ||
| ServerDataPort = (ushort) options.ServerDataPort |
Comment on lines
+60
to
+61
| Exception sanitizedException = new Exception( TelemetrySanitizer.SanitizeValue( exception.GetType().Name + ": " + exception.Message ) ); | ||
| SentrySdk.CaptureException( sanitizedException, scope => { |
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.