Skip to content

Latest commit

 

History

History
493 lines (371 loc) · 25.2 KB

CHANGELOG.md

File metadata and controls

493 lines (371 loc) · 25.2 KB

Changelog

2.1.0

Fixes

  • Validate PrivacyInfo.xcprivacy and warn users of required missing privacy parameters (#152)

    Due to a requirement by apple, all Projects will require a (Privacy Manifest file). Sentry will automatically patch your project with the required fields by Sentry if no privacy manifest file is provided. Otherwise, it will validate your privacy manifest file for the required fields by Sentry and warn you during the build time if the required keys are present or not when building an iOS project. Below you can find a snippet of the minimum required privacy manifest required by Sentry Xamarin:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>NSPrivacyCollectedDataTypes</key>
	<array>
		<dict>
			<key>NSPrivacyCollectedDataType</key>
			<string>NSPrivacyCollectedDataTypeCrashData</string>
			<key>NSPrivacyCollectedDataTypeLinked</key>
			<false/>
			<key>NSPrivacyCollectedDataTypeTracking</key>
			<false/>
			<key>NSPrivacyCollectedDataTypePurposes</key>
			<array>
				<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
			</array>
		</dict>
		<dict>
			<key>NSPrivacyCollectedDataType</key>
			<string>NSPrivacyCollectedDataTypePerformanceData</string>
			<key>NSPrivacyCollectedDataTypeLinked</key>
			<false/>
			<key>NSPrivacyCollectedDataTypeTracking</key>
			<false/>
			<key>NSPrivacyCollectedDataTypePurposes</key>
			<array>
				<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
			</array>
		</dict>
		<dict>
			<key>NSPrivacyCollectedDataType</key>
			<string>NSPrivacyCollectedDataTypeOtherDiagnosticData</string>
			<key>NSPrivacyCollectedDataTypeLinked</key>
			<false/>
			<key>NSPrivacyCollectedDataTypeTracking</key>
			<false/>
			<key>NSPrivacyCollectedDataTypePurposes</key>
			<array>
				<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
			</array>
		</dict>
	</array>
  <key>NSPrivacyAccessedAPITypes</key>
  <array>
      <dict>
          <key>NSPrivacyAccessedAPIType</key>
          <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
          <key>NSPrivacyAccessedAPITypeReasons</key>
          <array>
              <string>C617.1</string>
          </array>
      </dict>
      <dict>
          <key>NSPrivacyAccessedAPIType</key>
          <string>NSPrivacyAccessedAPICategorySystemBootTime</string>
          <key>NSPrivacyAccessedAPITypeReasons</key>
          <array>
              <string>35F9.1</string>
          </array>
      </dict>
  </array>
</dict>
</plist>

Dependencies

  • Bump Sentry.NET 4.5.0 (#154)

2.0.0

Sentry Self-hosted Compatibility

If you're using sentry.io this change does not affect you. This SDK version is compatible with a self-hosted version of Sentry 22.12.0 or higher. If you are using an older version of self-hosted Sentry (aka on-premise), you will need to upgrade.

Significant change in behavior

  • Setting SentryOptions.Dsn to null now throws ArgumentNullException during initialization. (#2655)
  • Enable CaptureFailedRequests by default (#2688)
  • Added Sentry namespace to global usings when ImplicitUsings is enabled (#3043) If you have conflicts, you can opt out by adding the following to your csproj:
<PropertyGroup>
  <SentryImplicitUsings>false</SentryImplicitUsings>
</PropertyGroup>
  • Transactions' spans are no longer automatically finished with the status deadline_exceeded by the transaction. This is now handled by the Relay.
    • Customers self hosting Sentry must use verion 22.12.0 or later (#3013)
  • The User.IpAddress is now set to {{auto}} by default, even when sendDefaultPII is disabled (#2981)
    • The "Prevent Storing of IP Addresses" option in the "Security & Privacy" project settings on sentry.io can be used to control this instead
  • The DiagnosticLogger signature for LogWarning changed to take the exception as the first parameter. That way it no longer gets mixed up with the TArgs. (#2987)

API breaking Changes

If you have compilation errors you can find the affected types or overloads missing in the changelog entries below.

Changed APIs

  • Class renamed Sentry.User to Sentry.SentryUser (#3015)
  • Class renamed Sentry.Runtime to Sentry.SentryRuntime (#3016)
  • Class renamed Sentry.Span to Sentry.SentrySpan (#3021)
  • Class renamed Sentry.Transaction to Sentry.SentryTransaction (#3023)
  • ITransaction has been renamed to ITransactionTracer. You will need to update any references to these interfaces in your code to use the new interface names (#2731, #2870)
  • DebugImage and DebugMeta moved to Sentry.Protocol namespace. (#2815)
  • SentryClient.Dispose is no longer obsolete (#2842)
  • ISentryClient.CaptureEvent overloads have been replaced by a single method accepting optional Hint and Scope parameters. You will need to pass hint as a named parameter from code that calls CaptureEvent without passing a scope argument. (#2749)
  • TransactionContext and SpanContext constructors were updated. If you're constructing instances of these classes, you will need to adjust the order in which you pass parameters to these. (#2694, #2696)
  • The DiagnosticLogger signature for LogError and LogFatal changed to take the exception as the first parameter. That way it no longer gets mixed up with the TArgs. The DiagnosticLogger now also receives an overload for LogError and LogFatal that accepts a message only. (#2715)
  • Distribution added to IEventLike. (#2660)
  • StackFrame's ImageAddress, InstructionAddress, and FunctionId changed to long?. (#2691)
  • DebugImage.ImageAddress changed to long?. (#2725)
  • Contexts now inherit from IDictionary rather than ConcurrentDictionary. The specific dictionary being used is an implementation detail. (#2729)
  • The method used to configure a Sentry Sink for Serilog now has an additional overload. Calling WriteTo.Sentry() with no arguments will no longer attempt to initialize the SDK (it has optional arguments to configure the behavior of the Sink only). If you want to initialize Sentry at the same time you configure the Sentry Sink then you will need to use the overload of this method that accepts a DSN as the first parameter (e.g. WriteTo.Sentry("https://d4d82fc1c2c4032a83f3a29aa3a3aff@fake-sentry.io:65535/2147483647")). (#2928)

Removed APIs

  • SentrySinkExtensions.ConfigureSentrySerilogOptions is now internal. If you were using this method, please use one of the SentrySinkExtensions.Sentry extension methods instead. (#2902)

  • A number of [Obsolete] options have been removed (#2841)

    • BeforeSend - use SetBeforeSend instead.
    • BeforeSendTransaction - use SetBeforeSendTransaction instead.
    • BeforeBreadcrumb - use SetBeforeBreadcrumb instead.
    • CreateHttpClientHandler - use CreateHttpMessageHandler instead.
    • ReportAssemblies - use ReportAssembliesMode instead.
    • KeepAggregateException - this property is no longer used and has no replacement.
    • DisableTaskUnobservedTaskExceptionCapture method has been renamed to DisableUnobservedTaskExceptionCapture.
    • DebugDiagnosticLogger - use TraceDiagnosticLogger instead.
  • A number of iOS/Android-specific [Obsolete] options have been removed (#2856)

    • Distribution - use SentryOptions.Distribution instead.
    • EnableAutoPerformanceTracking - use SetBeforeSendTransaction instead.
    • EnableCoreDataTracking - use EnableCoreDataTracing instead.
    • EnableFileIOTracking - use EnableFileIOTracing instead.
    • EnableOutOfMemoryTracking - use EnableWatchdogTerminationTracking instead.
    • EnableUIViewControllerTracking - use EnableUIViewControllerTracing instead.
    • StitchAsyncCode - no longer available.
    • ProfilingTracesInterval - no longer available.
    • ProfilingEnabled - use ProfilesSampleRate instead.
  • Obsolete SystemClock constructor removed, use SystemClock.Clock instead. (#2856)

  • Obsolete Runtime.Clone() removed, this shouldn't have been public in the past and has no replacement. (#2856)

  • Obsolete SentryException.Data removed, use SentryException.Mechanism.Data instead. (#2856)

  • Obsolete AssemblyExtensions removed, this shouldn't have been public in the past and has no replacement. (#2856)

  • Obsolete SentryDatabaseLogging.UseBreadcrumbs() removed, it is called automatically and has no replacement. (#2856)

  • Obsolete Scope.GetSpan() removed, use Span property instead. (#2856)

  • Obsolete IUserFactory removed, use ISentryUserFactory instead. (#2856, #2840)

  • IHasMeasurements has been removed, use ISpanData instead. (#2659)

  • IHasBreadcrumbs has been removed, use IEventLike instead. (#2670)

  • ISpanContext has been removed, use ITraceContext instead. (#2668)

  • IHasTransactionNameSource has been removed, use ITransactionContext instead. (#2654)

  • (#2694)

  • The unused StackFrame.InstructionOffset has been removed. (#2691)

  • The unused Scope.Platform property has been removed. (#2695)

  • The obsolete setter Sentry.PlatformAbstractions.Runtime.Identifier has been removed (2764)

  • Sentry.Values<T> is now internal as it is never exposed in the public API (#2771)

  • The TracePropagationTarget class has been removed, use the SubstringOrRegexPattern class instead. (#2763)

  • The WithScope and WithScopeAsync methods have been removed. We have discovered that these methods didn't work correctly in certain desktop contexts, especially when using a global scope. (#2717)

    Replace your usage of WithScope with overloads of Capture* methods:

    • SentrySdk.CaptureEvent(SentryEvent @event, Action<Scope> scopeCallback)
    • SentrySdk.CaptureMessage(string message, Action<Scope> scopeCallback)
    • SentrySdk.CaptureException(Exception exception, Action<Scope> scopeCallback)
    // Before
    SentrySdk.WithScope(scope =>
    {
      scope.SetTag("key", "value");
      SentrySdk.CaptureEvent(new SentryEvent());
    });
    
    // After
    SentrySdk.CaptureEvent(new SentryEvent(), scope =>
    {
      // Configure your scope here
      scope.SetTag("key", "value");
    });

Android breaking Changes

  • Android minimum support increased to API 30 by requiring Mono.Android 11.0 instead of Mono.Android 9.0. (#2697)

Features

  • Added Xamarin.Mac support (#138)
  • Experimental pre-release availability of Metrics. We're exploring the use of Metrics in Sentry. The API will very likely change and we don't yet have any documentation. (#2949)
    • SentrySdk.Metrics.Set now additionally accepts string as value (#3092)
    • Timing metrics can now be captured with SentrySdk.Metrics.StartTimer (#3075)
    • Added support for capturing built-in metrics from the System.Diagnostics.Metrics API (#3052)
  • Sentry.Profiling is now available as a package on nuget. Be aware that profiling is in alpha and on servers the overhead could be high. Improving the experience for ASP.NET Core is tracked on this issue (#2800)
  • Support for Spotlight, a debug tool for local development. (#2961)
    • Enable it with the option EnableSpotlight
    • Optionally configure the URL to connect via SpotlightUrl. Defaults to http://localhost:8969/stream.

Fixes

  • The scope transaction is now correctly set for Otel transactions (#3072)
  • Fixed an issue with tag values in metrics not being properly serialized (#3065)
  • Moved the binding to MAUI events for breadcrumb creation from WillFinishLaunching to FinishedLaunching. This delays the initial instantiation of app. (#3057)
  • The SDK no longer adds the WinUIUnhandledExceptionIntegration on non-Windows platforms (#3055)
  • Stop Sentry for MacCatalyst from creating default.profraw in the app bundle using xcodebuild archive to build sentry-cocoa (#2960)
  • Workaround a .NET 8 NativeAOT crash on transaction finish. (#2943)
  • Reworked automatic breadcrumb creation for MAUI. (#2900)
    • The SDK no longer uses reflection to bind to all public element events. This also fixes issues where the SDK would consume third-party events.
    • Added CreateElementEventsBreadcrumbs to the SentryMauiOptions to allow users to opt-in automatic breadcrumb creation for BindingContextChanged, ChildAdded, ChildRemoved, and ParentChanged on Element.
    • Reduced amount of automatic breadcrumbs by limiting the number of bindings created in VisualElement, Window, Shell, Page, and Button.
  • Fixed Sentry SDK has not been initialized when using ASP.NET Core, Serilog, and OpenTelemetry (#2911)
  • Sentry.Serilog no longer throws if a disabled DSN is provided when initializing Sentry via the Serilog integration (#2883)
  • Transactions are now getting enriched by the client instead of the hub (#2838)
  • Fixed an issue when using the SDK together with OpenTelemetry 1.5.0 and newer where the SDK would create transactions for itself. The fix is backward compatible. (#3001)

Dependencies

  • Upgraded to NLog version 5. (#2697)
  • Bump Sentry.NET 4.0.3 (#147)

2.0.0-beta.1

Features

  • Added Xamarin.Mac support (#138)

Fixes

  • Some iOS Native crashes are now properly captured. (#145)

Dependencies

API breaking Changes

For a complete list of break changes, please visit the Sentry .NET changelog.

1.5.2

Dependencies

  • Sentry .NET 3.33.1 (#139)

1.5.1

Fixes

1.5.0

Features

  • Update Sentry.NET SDK to 3.27.0, which supports line numbers for Android (#135)

1.4.6

Fixes

1.4.5

Fixes

  • Avoid repeat initialization (#130)

1.4.4

Fixes

1.4.3

Fixes

1.4.2

Fixes

1.4.1

Fixes

  • Adjust DSN for Android by dropping oProj.ingest from the URL. This works around the LetsEncrypt root certificate issue by hitting a different endpoint that doesn't use LetsEncrypt. (#114)
  • Update Sentry.NET SDK to 3.17.1 (#119)

1.4.0

Features

  • Add option extension: RemoveNavigationPageIntegration (#108)

Fixes

  • Fix 0 byte screenshot being sent to Sentry (#111)
  • Ignore null data on Internal breadcrumbs (#90)
  • Update Sentry.NET SDK to 3.16.0 (#110)

1.3.2

Various fixes & improvements

  • changelog for dotnet sdk bump (9a06a0b7) by @bruno-garcia
  • bump dotnet sdk 3.12.1 (#93) by @bruno-garcia
  • Fix null data on breadcrumb. (#90) by @lucas-zimerman

1.3.1

Fixes

  • screenshot extension (#81)
  • allow setting release to null to rely on the dotnet SDK release detection (#85)
  • Update Sentry.NET SDK to 3.9.2 (#84)

1.3.0

Features

  • Add Screenshot support (#76) (#80)
  • Update Sentry.NET SDK to 3.9.1

1.2.0

Changes

  • Add Session support to Android, iOS, UWP (#75) @lucas-zimerman
  • Update Sentry.NET SDK to 3.8.2 (#75) @lucas-zimerman

1.1.0

Changes

  • Add build number to release (#67) @lucas-zimerman
  • Add filter to device breadcrumbs.(#66) @lucas-zimerman
  • IsEnvironmentUser is not set to false by default (#73) @lucas-zimerman
  • Changed the data from Device.Manufacturer Device.Brand (#70) @lucas-zimerman
  • Update Sentry.NET SDK to 3.5.0 (#73) @lucas-zimerman

1.0.3

Changes

  • Fix Null reference on SentryXamarinFormsIntegration.Register. (#58) @lucas-zimerman
  • Add android unhandled exception and native crash sample. (#56) @lucas-zimerman

1.0.2

Changes

  • Renamed DisableXamarinFormsCache to DisableOfflineCaching. (#50) @lucas-zimerman
  • Update Sentry.NET SDK to 3.0.6. (#50) @lucas-zimerman
  • Add available RAM parameter (Android). (#46) @lucas-zimerman

1.0.1

Changes

A minor update to avoid breaking changes with the latest version of Sentry .NET SDK

  • Update Sentry .NET SDK. (#45)

1.0.0

Changes

This is the first GA release containing the following features:

General improvements

  • Automatic Navigation breadcrumbs. (Forms)
  • Automatic Xamarin Forms warnings as breadcrumbs.
  • Unhandled Exception for Android/iOS/UWP
  • Release version for Android/iOS/UWP.
  • Additional InAppExclude list for Xamarin.
  • iOS Exceptions including native and managed StackTrace.

Device information

  • Manufacturer.
  • Model.
  • Connectivity status.
  • Operational system name and version.
  • Screen information (Pixel density and resolution).
  • Free Internal memory (Android/iOS).
  • Total RAM (Android/iOS).
  • CPU model (Android).
  • Simulator flag. F or more information on how to use the SDK, check the documentation at https://docs.sentry.io/platforms/dotnet/guides/xamarin/.

1.0.0-alpha.4

Changes

  • detach Xamarin.Forms dependency from the SDK. (#38 ) @lucas-zimerman

If you plan to use Xamarin only you'll need the Sentry.Xamarin package. Additionally, you'll also need the Sentry.Xamarin.Forms if you are using Xamarin Forms.

Furthermore, for activating the Sentry.Xamarin.Forms you'll need to add the Xamarin Forms Integration inside of SentryXamarinOptions.

        SentryXamarin.Init(options =>
        {
            options.Dsn = "__YOUR__DSN__";
            options.AddXamarinFormsIntegration();
        });

1.0.0-alpha.3

Changes

  • fixed os.name format.
  • Sentry.NET SDK requirement increased.
  • Add InAppExclude list for Xamarin.
  • Initializer refactored.

1.0.0-alpha.2

Changes

This is the first alpha containing the following features:

  • Decreased package requirements.
  • Added Release version for Android/iOS/UWP.

1.0.0-alpha.1

Changes

This is the first alpha containing the following features:

  • Automatic Navigation breadcrumbs.
  • Automatic Xamarin warnings as breadcrumbs.
  • Unhandled Exception for Android/iOS/UWP
  • Simulator flag.
  • Device manufacturer.
  • Device model.
  • Operational system name and version.
  • Screen information (Pixel density and resolution).
  • Connectivity status.
  • Free Internal memory (Android/iOS).
  • Total RAM (Android/iOS).
  • CPU model (Android).

Also available via NuGet:

Sentry Sentry.Xamarin Sentry.Xamarin.Forms