Skip to content

enh(internal): debug log api#3425

Merged
buenaflor merged 19 commits intomainfrom
enh/debug-logging
Jan 5, 2026
Merged

enh(internal): debug log api#3425
buenaflor merged 19 commits intomainfrom
enh/debug-logging

Conversation

@buenaflor
Copy link
Copy Markdown
Contributor

@buenaflor buenaflor commented Dec 23, 2025

📜 Description

Improves the debug logging dx

💡 Motivation and Context

Currently the debug logging api is tied to the options which has few caveats

  • by design not usable in isolates
  • cumbersome to use, need to inject the logger or the options instance everywhere
  • no clear logger name separation per package since there is only one instance

New design:

  • no need to inject
  • one top-level instance per package with the proper name:
    • e.g final debugLogger = SentryDebugLogger('sentry.dio') that is then used within the dio package
  • isolate-compatible, you can continue using the debugLogger instance, you only need to run SentryDebugLogger.configure in the new isolate

💚 How did you test it?

Manual and unit test

🔮 Next steps

Step-by-step replace existing API

#skip-changelog

…gging

This commit adds a new `SentryDebugLogger` class to provide a lightweight, isolate-compatible logging solution for the Sentry SDK. The logger supports various log levels and can be configured for each isolate. Additionally, it integrates with `SentryOptions` to enable logging based on the debug flag and diagnostic level. The existing `IsolateLogger` has been removed in favor of this new implementation, streamlining the logging process across the SDK.

- Added `SentryDebugLogger` for structured logging.
- Updated `SentryOptions` to configure the logger based on debug settings.
- Replaced instances of `IsolateLogger` with `SentryDebugLogger` in relevant files.
- Added unit tests for the new logger functionality.
This commit removes a debug logger warning message from the Sentry class during initialization. The change helps to clean up the logging output and streamline the initialization process without affecting functionality.
…ments

This commit updates the documentation for the `SentryDebugLogger` to reflect the correct variable name in the example and adds a note emphasizing that each package should have at least one top-level instance of the logger. This enhances clarity for users implementing the logger in their applications.
@buenaflor buenaflor changed the title enh enh: debug log api Dec 23, 2025
@github-actions
Copy link
Copy Markdown
Contributor

🚨 Detected changes in high risk code 🚨

High-risk code has higher potential to break the SDK and may be hard to test. To prevent severe bugs, apply the rollout process for releasing such changes and be extra careful when changing and reviewing these files:

  • packages/flutter/lib/src/native/java/android_replay_recorder.dart

… logger documentation

This commit removes the unused import of the debug logger from the Sentry class and adds an internal annotation to the `SentryDebugLogger` in the debug logger file. Additionally, a comment is added in the isolate worker to suppress a lint warning related to the internal member usage, improving code clarity and maintainability.
…ns.dart

This commit removes the unused import of the debug logger from the `sentry_options.dart` file, contributing to cleaner code and improved maintainability.
@buenaflor buenaflor marked this pull request as ready for review December 23, 2025 10:22
@buenaflor buenaflor requested a review from denrase as a code owner December 23, 2025 10:22
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Dec 23, 2025

Android Performance metrics 🚀

  Plain With Sentry Diff
Startup time 424.83 ms 433.64 ms 8.80 ms
Size 13.93 MiB 15.18 MiB 1.25 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
192b44c 472.26 ms 477.34 ms 5.08 ms
640ad0c 466.00 ms 552.67 ms 86.67 ms
c26ed0a 465.52 ms 476.38 ms 10.86 ms
7b21e8b 467.74 ms 466.24 ms -1.50 ms
a10aff4 488.19 ms 515.02 ms 26.83 ms
e04b24b 504.72 ms 516.43 ms 11.71 ms
827bf09 475.40 ms 547.14 ms 71.74 ms
6ba4675 499.80 ms 632.43 ms 132.63 ms
75284dc 512.39 ms 530.87 ms 18.48 ms
2b5e090 437.21 ms 467.14 ms 29.93 ms

App size

Revision Plain With Sentry Diff
192b44c 13.93 MiB 14.93 MiB 1.00 MiB
640ad0c 6.54 MiB 7.69 MiB 1.15 MiB
c26ed0a 13.93 MiB 14.93 MiB 1.00 MiB
7b21e8b 13.93 MiB 15.00 MiB 1.06 MiB
a10aff4 13.93 MiB 15.06 MiB 1.13 MiB
e04b24b 13.93 MiB 15.00 MiB 1.06 MiB
827bf09 6.54 MiB 7.53 MiB 1015.27 KiB
6ba4675 6.54 MiB 7.53 MiB 1015.26 KiB
75284dc 13.93 MiB 14.93 MiB 1.00 MiB
2b5e090 13.93 MiB 15.06 MiB 1.13 MiB

Previous results on branch: enh/debug-logging

Startup times

Revision Plain With Sentry Diff
3b8e07f 376.26 ms 372.73 ms -3.52 ms
a755903 534.69 ms 557.56 ms 22.88 ms
0b59cbd 361.38 ms 351.70 ms -9.68 ms
cd107e8 434.74 ms 478.64 ms 43.90 ms
3c78396 428.80 ms 427.57 ms -1.23 ms

App size

Revision Plain With Sentry Diff
3b8e07f 13.93 MiB 15.18 MiB 1.25 MiB
a755903 13.93 MiB 15.18 MiB 1.25 MiB
0b59cbd 13.93 MiB 15.18 MiB 1.25 MiB
cd107e8 13.93 MiB 15.18 MiB 1.25 MiB
3c78396 13.93 MiB 15.18 MiB 1.25 MiB

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Dec 23, 2025

iOS Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1241.26 ms 1237.88 ms -3.38 ms
Size 5.53 MiB 5.96 MiB 443.39 KiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
8775665 1234.17 ms 1230.04 ms -4.13 ms
3615e19 1225.02 ms 1234.57 ms 9.55 ms
a69a51f 1231.73 ms 1233.15 ms 1.42 ms
2b5e090 1257.04 ms 1258.07 ms 1.02 ms
a5b28db 1260.16 ms 1260.08 ms -0.08 ms
75284dc 1254.81 ms 1262.28 ms 7.46 ms
2cf9161 1248.33 ms 1266.55 ms 18.22 ms
9b99523 1256.06 ms 1270.33 ms 14.27 ms
8541716 1270.18 ms 1271.80 ms 1.62 ms
e45c0e1 1269.08 ms 1278.83 ms 9.75 ms

App size

Revision Plain With Sentry Diff
8775665 5.53 MiB 6.02 MiB 502.13 KiB
3615e19 7.86 MiB 9.44 MiB 1.58 MiB
a69a51f 5.53 MiB 6.01 MiB 487.38 KiB
2b5e090 5.53 MiB 6.00 MiB 485.10 KiB
a5b28db 5.53 MiB 6.02 MiB 501.31 KiB
75284dc 5.53 MiB 5.97 MiB 453.77 KiB
2cf9161 7.86 MiB 9.44 MiB 1.58 MiB
9b99523 7.86 MiB 9.44 MiB 1.58 MiB
8541716 5.53 MiB 6.00 MiB 479.96 KiB
e45c0e1 7.86 MiB 9.44 MiB 1.58 MiB

Previous results on branch: enh/debug-logging

Startup times

Revision Plain With Sentry Diff
bfd482f 1254.52 ms 1256.33 ms 1.81 ms
3b8e07f 1260.80 ms 1261.63 ms 0.83 ms
a755903 1234.16 ms 1232.74 ms -1.41 ms
0b59cbd 1268.60 ms 1257.09 ms -11.52 ms
3c78396 1263.98 ms 1264.14 ms 0.16 ms
cd107e8 1243.78 ms 1255.02 ms 11.25 ms

App size

Revision Plain With Sentry Diff
bfd482f 5.53 MiB 5.96 MiB 443.38 KiB
3b8e07f 5.53 MiB 5.96 MiB 444.18 KiB
a755903 5.53 MiB 5.96 MiB 443.39 KiB
0b59cbd 5.53 MiB 5.96 MiB 443.39 KiB
3c78396 5.53 MiB 5.96 MiB 443.39 KiB
cd107e8 5.53 MiB 5.96 MiB 443.44 KiB

This commit updates the example usage in the `SentryDebugLogger` documentation to reflect the correct variable name, enhancing clarity for users implementing the logger in their applications.
… methods

This commit simplifies the `SentryDebugLogger` class by removing the unused `category` parameter from the `debug`, `info`, `warning`, `error`, and `fatal` logging methods. This change enhances code clarity and reduces unnecessary complexity in the logging interface.
This commit removes the test case that checks logging with a category parameter from the `debug_logger_test.dart` file. This change aligns with the recent refactor of the `SentryDebugLogger` class, which eliminated the unused category parameter, thereby enhancing the clarity and relevance of the test suite.
This commit updates the logging statements in the `_AndroidReplayHandler` class to include the debug name from the configuration. This change improves the clarity of log messages by providing context for unexpected messages and payload types, aiding in debugging and monitoring efforts.
… conventions

This commit refactors the `debug_logger_test.dart` file by renaming test groups for clarity and adding new tests to verify the behavior of `SentryOptions.debug` and `SentryOptions.diagnosticLevel`. The changes improve the organization and comprehensiveness of the test suite, ensuring better validation of the `SentryDebugLogger` configuration and logging functionality.
…nostic level handling

This commit refactors the `SentryOptions` class to enhance the configuration of the debug logger. The `diagnosticLevel` setter now updates the logger's minimum level dynamically, ensuring that changes to the diagnostic level are reflected immediately. Additionally, the debug logger configuration is encapsulated in a private method for better organization and clarity.
@buenaflor buenaflor changed the title enh: debug log api enh(internal): debug log api Dec 23, 2025
/// debugLogger.warning('My Message')
///```
@internal
class SentryDebugLogger {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think SentryInternalLogger would be a more appropriate name.


void debug(
String message, {
Object? error,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a case where we would log an error + stacktrace as debug? Same for info and probably also warning.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hm not sure, just added it for consistency

…r and enhance logging functionality

This commit refactors the logging mechanism by replacing the `SentryDebugLogger` with the new `SentryInternalLogger` across the codebase. The `SentryInternalLogger` provides improved logging capabilities, including compile-time constants for release, profile, and debug modes, ensuring better tree-shaking and performance. Additionally, the associated tests have been updated to validate the new logger's behavior, enhancing overall logging clarity and maintainability.
…odebase

This commit removes the `SentryDebugLogger` class and its associated import from `sentry_options.dart`, streamlining the logging functionality in the Sentry SDK. This change is part of the ongoing effort to enhance the logging mechanism by transitioning to the `SentryInternalLogger`, which offers improved capabilities and performance.
…SentryInternalLogger

This commit modifies the `SentryOptions` class to replace calls to the deprecated `_configureDebugLogger` method with `_configureInternalLogger`. This change aligns with the recent transition to the `SentryInternalLogger`, ensuring consistent logging configuration and improving overall code clarity.
This commit renames the `debugLogger` to `internalLogger` across the codebase, including tests and various components. This change aligns with the recent transition to the `SentryInternalLogger`, ensuring consistent naming and improving clarity in the logging functionality.
…ces to internalLogger

This commit removes the test for the `debugLogger` constant in `internal_logger_test.dart` and updates references from `debugLogger` to `internalLogger` in the `_AndroidEnvelopeHandler` and `_AndroidReplayHandler` classes. These changes ensure consistency in the logging implementation and align with the recent transition to the `SentryInternalLogger`.
This commit relocates the `_defaultLogOutput` method into the `SentryInternalLogger` class, enhancing the organization of the logging functionality. This change improves code clarity and aligns with the ongoing refactor to streamline the logging mechanism within the Sentry SDK.
This commit enhances the error logging format in the `isolate_worker.dart` file by improving the readability of the log statement. The changes ensure that the error and stack trace are clearly separated, contributing to better debugging and monitoring of isolate message handling failures.
@buenaflor buenaflor merged commit 51520fc into main Jan 5, 2026
144 of 146 checks passed
@buenaflor buenaflor deleted the enh/debug-logging branch January 5, 2026 14:20
buenaflor added a commit that referenced this pull request Feb 16, 2026
* build(deps): bump actions/cache from 4 to 5 (#3423)

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/upload-artifact from 5 to 6 (#3399)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* enh(internal): internal logging api (#3425)

* feat(logging): introduce SentryDebugLogger for enhanced diagnostic logging

This commit adds a new `SentryDebugLogger` class to provide a lightweight, isolate-compatible logging solution for the Sentry SDK. The logger supports various log levels and can be configured for each isolate. Additionally, it integrates with `SentryOptions` to enable logging based on the debug flag and diagnostic level. The existing `IsolateLogger` has been removed in favor of this new implementation, streamlining the logging process across the SDK.

- Added `SentryDebugLogger` for structured logging.
- Updated `SentryOptions` to configure the logger based on debug settings.
- Replaced instances of `IsolateLogger` with `SentryDebugLogger` in relevant files.
- Added unit tests for the new logger functionality.

* refactor(sentry): remove debug logger warning from Sentry initialization

This commit removes a debug logger warning message from the Sentry class during initialization. The change helps to clean up the logging output and streamline the initialization process without affecting functionality.

* docs(debug_logger): update example usage and clarify instance requirements

This commit updates the documentation for the `SentryDebugLogger` to reflect the correct variable name in the example and adds a note emphasizing that each package should have at least one top-level instance of the logger. This enhances clarity for users implementing the logger in their applications.

* refactor(sentry): remove unused debug logger import and enhance debug logger documentation

This commit removes the unused import of the debug logger from the Sentry class and adds an internal annotation to the `SentryDebugLogger` in the debug logger file. Additionally, a comment is added in the isolate worker to suppress a lint warning related to the internal member usage, improving code clarity and maintainability.

* refactor(sentry): remove unused debug logger import from sentry_options.dart

This commit removes the unused import of the debug logger from the `sentry_options.dart` file, contributing to cleaner code and improved maintainability.

* docs(debug_logger): correct example usage in documentation

This commit updates the example usage in the `SentryDebugLogger` documentation to reflect the correct variable name, enhancing clarity for users implementing the logger in their applications.

* Update

* refactor(debug_logger): remove unused category parameter from logging methods

This commit simplifies the `SentryDebugLogger` class by removing the unused `category` parameter from the `debug`, `info`, `warning`, `error`, and `fatal` logging methods. This change enhances code clarity and reduces unnecessary complexity in the logging interface.

* refactor(debug_logger_test): remove test for category logging

This commit removes the test case that checks logging with a category parameter from the `debug_logger_test.dart` file. This change aligns with the recent refactor of the `SentryDebugLogger` class, which eliminated the unused category parameter, thereby enhancing the clarity and relevance of the test suite.

* refactor(android_replay_handler): enhance debug logging with context

This commit updates the logging statements in the `_AndroidReplayHandler` class to include the debug name from the configuration. This change improves the clarity of log messages by providing context for unexpected messages and payload types, aiding in debugging and monitoring efforts.

* refactor(debug_logger_test): enhance test coverage and improve naming conventions

This commit refactors the `debug_logger_test.dart` file by renaming test groups for clarity and adding new tests to verify the behavior of `SentryOptions.debug` and `SentryOptions.diagnosticLevel`. The changes improve the organization and comprehensiveness of the test suite, ensuring better validation of the `SentryDebugLogger` configuration and logging functionality.

* refactor(sentry_options): improve debug logger configuration and diagnostic level handling

This commit refactors the `SentryOptions` class to enhance the configuration of the debug logger. The `diagnosticLevel` setter now updates the logger's minimum level dynamically, ensuring that changes to the diagnostic level are reflected immediately. Additionally, the debug logger configuration is encapsulated in a private method for better organization and clarity.

* refactor(logging): replace SentryDebugLogger with SentryInternalLogger and enhance logging functionality

This commit refactors the logging mechanism by replacing the `SentryDebugLogger` with the new `SentryInternalLogger` across the codebase. The `SentryInternalLogger` provides improved logging capabilities, including compile-time constants for release, profile, and debug modes, ensuring better tree-shaking and performance. Additionally, the associated tests have been updated to validate the new logger's behavior, enhancing overall logging clarity and maintainability.

* refactor(logging): remove SentryDebugLogger and its import from the codebase

This commit removes the `SentryDebugLogger` class and its associated import from `sentry_options.dart`, streamlining the logging functionality in the Sentry SDK. This change is part of the ongoing effort to enhance the logging mechanism by transitioning to the `SentryInternalLogger`, which offers improved capabilities and performance.

* refactor(sentry_options): update logger configuration methods to use SentryInternalLogger

This commit modifies the `SentryOptions` class to replace calls to the deprecated `_configureDebugLogger` method with `_configureInternalLogger`. This change aligns with the recent transition to the `SentryInternalLogger`, ensuring consistent logging configuration and improving overall code clarity.

* refactor(logging): rename debugLogger to internalLogger for consistency

This commit renames the `debugLogger` to `internalLogger` across the codebase, including tests and various components. This change aligns with the recent transition to the `SentryInternalLogger`, ensuring consistent naming and improving clarity in the logging functionality.

* refactor(logging): remove debugLogger test and update logging references to internalLogger

This commit removes the test for the `debugLogger` constant in `internal_logger_test.dart` and updates references from `debugLogger` to `internalLogger` in the `_AndroidEnvelopeHandler` and `_AndroidReplayHandler` classes. These changes ensure consistency in the logging implementation and align with the recent transition to the `SentryInternalLogger`.

* refactor(logging): move _defaultLogOutput method to SentryInternalLogger

This commit relocates the `_defaultLogOutput` method into the `SentryInternalLogger` class, enhancing the organization of the logging functionality. This change improves code clarity and aligns with the ongoing refactor to streamline the logging mechanism within the Sentry SDK.

* refactor(logging): improve error logging format in isolate_worker

This commit enhances the error logging format in the `isolate_worker.dart` file by improving the readability of the log statement. The changes ensure that the error and stack trace are clearly separated, contributing to better debugging and monitoring of isolate message handling failures.

* fix(android): Envelope worker not starting when `autoInitializeNativeSdk` is disabled (#3420)

* Update

* Update CHANGELOG

* Enhance AndroidEnvelopeSender to buffer envelopes when worker is not started and flush them upon starting. Update tests to reflect new buffering behavior and log changes from warning to info level.

* Refactor SentryNativeJava tests: Split tests into separate files for VM and web environments. Introduce new test file for SentryNativeJava with ReplaySizeAdjustment and EnvelopeSender initialization tests. Remove redundant web stubs and streamline imports.

* Refactor AndroidEnvelopeSender: Remove pending envelopes buffering and streamline envelope capture logic. Ensure envelopes are sent directly when the worker is available, and adjust logging for envelope capture in the main isolate. Update SentryNativeJava to start the envelope sender conditionally.

* Enhance AndroidEnvelopeSender to manage closed state and improve envelope capture logic. Introduce a flag to prevent envelope capture after closure and update logging to use a required logger parameter. Adjust tests to reflect changes in behavior when the worker is not started.

* Refactor AndroidEnvelopeSender: Adjust captureEnvelope method to ensure client assignment occurs after closed state check. This change improves clarity and maintains the integrity of the envelope sending process.

* Fix AndroidEnvelopeSender start method to prevent spawning a worker if already closed. Update tests to reflect the expected spawn count when the sender is closed.

* Update Android envelope capture test to assert behavior when the native channel is unavailable. Introduced a matcher for improved error handling in the captureEnvelope method.

* Refactor AndroidEnvelopeSender start method to ensure proper closure handling during worker spawning. Introduce a guard clause to close the worker if the sender is already closed, enhancing stability and preventing resource leaks.

* Refactor AndroidEnvelopeSender test to clarify logging behavior when sending envelopes in the main isolate. Update test description for improved readability and understanding of the expected functionality.

* refactor(AndroidEnvelopeSender): update constructor to use SentryOptions and improve logging

This commit refactors the `AndroidEnvelopeSender` class to replace the `_options` parameter with `SentryOptions` in the constructor. It also enhances the logging mechanism by utilizing `internalLogger` for logging messages related to envelope capture. The `_captureEnvelope` method has been updated to streamline error handling and improve clarity in logging, ensuring better maintainability and consistency across the codebase.

* refactor(AndroidEnvelopeSender test): enhance logging configuration for envelope sending

This commit updates the logging mechanism in the `AndroidEnvelopeSender` test to utilize the new `SentryInternalLogger`. The changes include removing the previous debug options and configuring the logger to capture logs with improved structure and clarity. This refactor aims to enhance the maintainability and consistency of logging behavior during envelope sending in the main isolate.

* release: 9.9.2

* chore(agents): Add `AGENTS.md` (#3426)

* Update

* Refine test naming conventions in AGENTS.md for improved clarity and structure

- Updated guidelines to ensure test group and test names read as coherent sentences.
- Introduced a structured approach for naming by depth, emphasizing the use of subjects, contexts, variants, and behaviors.
- Added examples and anti-patterns to illustrate best practices in test organization and naming.

* Enhance Dart code design guidelines in AGENTS.md

- Added comprehensive guidelines for identifiers, ordering, formatting, comments, and documentation to improve code consistency and readability.
- Included best practices for naming conventions, code structure, and documentation styles to align with the Effective Dart guide.
- Emphasized the importance of adhering to these guidelines for new and modified tests.

* Refactor AGENTS.md for improved clarity and structure

- Streamlined project structure section by removing table format for a more concise list format.
- Updated environment section to include specific Flutter and Dart versions.
- Enhanced testing guidelines with clearer commands and descriptions for Dart and Flutter packages.
- Added new guidelines for modern Dart language features to promote clarity and reduce boilerplate in code.

* Enhance agent documentation and testing guidelines

- Updated AGENTS.md to clarify the structure and purpose of the Sentry Dart/Flutter SDK.
- Introduced new documentation files for code guidelines and test conventions, emphasizing best practices for Dart/Flutter development.
- Added detailed sections on naming conventions, test structure, and the use of modern Dart features to improve code clarity and maintainability.
- Ensured that all new and modified code adheres to these updated guidelines for consistency across the project.

* Update documentation comments guidelines in code-guidelines.md

- Renamed section from "Doc Comments" to "Documentation Comments" for clarity.
- Added recommendations for when to write comments, emphasizing the importance of self-documenting code.
- Included specific guidelines on documenting public APIs and non-obvious reasoning, while advising against commenting on obvious behavior and providing excessive inline commentary.

* build(deps): bump aws-sdk-s3 from 1.203.0 to 1.208.0 in /metrics (#3428)

Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.203.0 to 1.208.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.208.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump aws-sdk-s3 in /packages/flutter/example/ios (#3417)

Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.203.0 to 1.208.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.208.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.268.0 to 1.278.0 (#3430)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.268.0 to 1.278.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@8aeb6ff...4c24fa5)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.278.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update scripts/update-symbol-collector.sh to 2.3.1 (#3385)

Co-authored-by: GitHub <noreply@github.com>

* build(deps): bump reactivecircus/android-emulator-runner (#3328)

Bumps [reactivecircus/android-emulator-runner](https://github.com/reactivecircus/android-emulator-runner) from 2.34.0 to 2.35.0.
- [Release notes](https://github.com/reactivecircus/android-emulator-runner/releases)
- [Changelog](https://github.com/ReactiveCircus/android-emulator-runner/blob/main/CHANGELOG.md)
- [Commits](ReactiveCircus/android-emulator-runner@1dcd009...b530d96)

---
updated-dependencies:
- dependency-name: reactivecircus/android-emulator-runner
  dependency-version: 2.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore: update metrics/flutter.properties to 3.38.5 (#3387)

Co-authored-by: GitHub <noreply@github.com>

* build(deps): bump actions/checkout from 4 to 6 (#3365)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore: update packages/flutter/scripts/update-native.sh to 0.12.3 (#3438)

Co-authored-by: GitHub <noreply@github.com>

* Add claude settings (#3445)

* Add `CLAUDE.md` symlink to `AGENTS.md`

* Move `TelemetryProcessor` from span-first branch and replace `LogBatcher` (#3448)

* Add TelemetryProcessor for span and log buffering

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove SpanV2 and TraceLifecycle dependencies

- Remove addSpan method from TelemetryProcessor interface
- Remove span buffer from DefaultTelemetryProcessor
- Remove captureSpan method from SentryClient
- Remove traceLifecycle property from SentryOptions
- Remove span imports and exports
- Update mocks to remove span-related code

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove span-related tests from sentry_client_test

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove span-related processor tests

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove span import from Flutter mocks

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Fix wiring up

* Update

* Update

* Update CHANGELOG

* Update

* Remove logbatcher

* Polish

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* chore(deps): update Flutter SDK (metrics) to v3.38.7 (#3437)

* chore: update metrics/flutter.properties to 3.38.7

* update

* update

* Update

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* fix: update kotlin version handling in android (#3436)

* update kotlin version handling in android build scripts for CI compatibility

* Fix Kotlin version format in workflow file

* Update

* Update

* Update

* Remove CI override comment for Kotlin language version

Removed comment about allowing CI to override Kotlin language version.

* release: 9.10.0

* Update Xcode version to 16.4 in workflow (#3452)

* fix(ci): failing package-analysis (#3453)

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Refactor Pana score check logic in analyze.yml

* chore: ignore local Claude settings (#3462)

Add .claude/settings.local.json to .gitignore to prevent committing
local Claude Code configuration.

* chore: update packages/flutter/scripts/update-android.sh to 8.30.0 (#3451)

Co-authored-by: GitHub <noreply@github.com>

* feat: trace connected metrics (#3450)

Adds trace connected metrics feature to Dart

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* refactor(log): make implementation consistent with metrics and span-first (#3463)

Make log implementation consistent with metrics and span-first

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* build(deps): bump actions/setup-java from 4 to 5 (#3461)

Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](actions/setup-java@v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat(flutter): Add captureNativeFailedRequests option for iOS/macOS (#3472)

Add a new `captureNativeFailedRequests` option to control native HTTP
failed request capturing independently from `captureFailedRequests`.

This separation allows users to:
- Keep Dart-side failed request capturing enabled while disabling native
- Or vice versa, based on their needs

For backwards compatibility, `captureNativeFailedRequests` defaults to
`null`, which falls back to the value of `captureFailedRequests`. This
ensures existing users who set `captureFailedRequests = false` will
still have native capturing disabled as expected.

* release: 9.11.0-beta.1

* chore: update GitHub Actions workflows to use updater v3 (#3468)

* chore: update GitHub Actions workflows to use new updater version

Refactor the update-deps.yml workflow to utilize the latest version of the updater action, improving the structure and permissions for dependency updates across Android, Cocoa, JavaScript, Native, and Symbol Collector jobs.

* chore: add pull request trigger for update-deps.yml workflow

Include a pull request trigger in the update-deps.yml workflow for testing purposes, while maintaining existing push configurations.

* chore: update update-deps.yml to use ssh-key instead of api-token

Refactor the update-deps.yml workflow to replace the api-token with ssh-key for Android, Cocoa, JavaScript, Native, and Symbol Collector jobs, enhancing security and access management.

* Update

* Fix cocoa

* Fix formatting in update-deps.yml permissions section

* Modify update-deps workflow triggers

Removed pull_request trigger from update-deps workflow.

* Fix cocoa

* Update

* Update

* Disable wasm runner for now (#3478)

* ci(testflight): Update to Xcode 26.2 (#3479)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* ref(dart): Remove unused beforeMetricCallback (#3484)

Remove dead code that was never used in the codebase. The
BeforeMetricCallback typedef and beforeMetricCallback field
in SentryOptions had no references anywhere in the SDK.

Co-authored-by: Claude <noreply@anthropic.com>

* ref(tracing-instrumentation): Introduce internal instrumentation abstraction for packages (#3488)

* feat(tracing): Introduce internal instrumentation API for Sentry

- Added `InstrumentationSpan` and `LegacyInstrumentationSpan` classes to provide a backend-agnostic abstraction for tracing.
- Implemented `InstrumentationSpanFactory` for creating spans, allowing for future flexibility in span implementations.
- Enhanced `SentryOptions` to include a `spanFactory` for custom span creation.
- Updated various components to utilize the new instrumentation API, including `SentryInstrumentation` and `TransactionInstrumentation`.
- Refactored existing database executor and batch classes to support the new instrumentation spans.

This update improves the tracing capabilities and prepares the codebase for future enhancements in span management.

* refactor(tracing): Simplify transaction instrumentation documentation

- Removed outdated comments and example usage from the `TransactionInstrumentation` class.
- Clarified the behavior of transaction methods by streamlining the documentation.
- Enhanced code readability and maintainability by focusing on essential information.

This update improves the clarity of the transaction instrumentation API, making it easier for developers to understand its usage.

* Update

* Update

* Update

* Update

* Update

* refactor(tracing): Improve transaction stack management in Sentry instrumentation

- Ensured that the transaction stack maintains nesting invariants by always pushing a null value when no parent exists.
- Simplified the logic for adding and removing spans from the stack, enhancing clarity and reducing potential errors.
- Removed redundant comments and streamlined the handling of null spans in transaction methods.

This update enhances the robustness of the Sentry tracing implementation, making it more reliable during transaction execution.

* Remove unnecessary hint

* Fix review issues

* Fix review issues

* Fix review issues

* Fix review issues

* Remove unnecessary files

* Naming

* Naming

* Analyzer

* Naming

* Add test

* Update

* Change finish call to unawaited in error handling

* Add async import to sentry_span_helper.dart

* Update

* ref(tracing-instrumentation): migrate hive, isar, file, supabase and link (#3489)

* feat(hive): add internal logger for sentry_hive package

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(hive): migrate SentrySpanHelper to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()
- Add proper null checks with warning logs
- Maintain both async and sync wrapper methods

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(hive): update classes to use new SentrySpanHelper constructor

- Pass Hub directly to SentrySpanHelper constructor
- Remove setHub() method calls
- Update tests to use constructor parameter

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(file): migrate to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()
- Maintain both async and sync wrapper methods

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(supabase): migrate to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()
- Return InstrumentationSpan from _createSpan helper

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(link): migrate SentryTracingLink to InstrumentationSpan

- Use InstrumentationSpanFactory for child span creation
- Keep legacy API for transaction creation (when shouldStartTransaction=true)
- Wrap transactions in LegacyInstrumentationSpan for unified interface

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(link): migrate SentryRequestSerializer to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(link): migrate SentryResponseParser to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update

* Update

* Update

* Update

* Update

* Update

* feat(supabase): add internal logger and update dependencies

- Introduced an internal logger using Sentry for better tracing.
- Added 'meta' package as a dependency in pubspec.yaml.
- Updated Sentry tracing logic to utilize the new internal logger for warnings.

* Update

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* ref(dart): instrumentation span for http dio (#3493)

* ref(tracing-instrumentation): migrate http and dio to instrumentation span

Migrate TracingClient (http package) and TracingClientAdapter (dio package)
to use the new InstrumentationSpanFactory pattern, consistent with the
recent migration of hive, isar, file, supabase, and link packages.

Changes:
- Add InstrumentationSpanFactory field to TracingClient and TracingClientAdapter
- Replace hub.getSpan()?.startChild() with spanFactory.getSpan()/createSpan()
- Extract underlying ISentrySpan via LegacyInstrumentationSpan.spanReference
  for tracing headers (sentry-trace, baggage, traceparent)
- Add applyToInstrumentationSpan() method to UrlDetails for URL data

All existing tests pass without modification, preserving backward compatibility.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* ref(dio): migrate SentryTransformer to instrumentation span

Complete the migration of dio package to use InstrumentationSpanFactory
by updating SentryTransformer's transformRequest and transformResponse
methods.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* ref(tracing): rename applyToInstrumentationSpan to applyToSpan

Remove the old ISentrySpan-based applyToSpan method and rename
applyToInstrumentationSpan to applyToSpan since all callers now use
InstrumentationSpan.

Update url_details_test.dart to use MockInstrumentationSpan.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore(tests): add mock_span import to lifecycle tests

Added the mock_span import to both sentry_client_lifecycle_test.dart and sentry_client_sdk_lifecycle_test.dart to facilitate testing with spans.

* feat(tests): add MockSpan class for testing Sentry spans

Introduced a new MockSpan class in mock_span.dart to facilitate testing with SentrySpan, providing a mock implementation for use in unit tests.

* ref(tracing): remove commented code for extracting ISentrySpan

Removed commented-out code related to extracting ISentrySpan for tracing headers in TracingClient and TracingClientAdapter, streamlining the codebase.

* ref(tracing): enhance tracing header handling with InstrumentationSpan

Updated TracingClient and TracingClientAdapter to utilize the new addTracingHeadersFromInstrumentationSpan method for adding tracing headers. This change simplifies the code by directly passing the InstrumentationSpan, improving clarity and maintainability. Additionally, new methods for converting spans to Sentry trace and baggage headers were added to the InstrumentationSpan interface.

* ref(tracing): rename addTracingHeadersFromInstrumentationSpan to addTracingHeadersToHttpHeader

Updated the TracingClient and TracingClientAdapter to use the renamed addTracingHeadersToHttpHeader method for adding tracing headers. This change improves code clarity and consistency across the codebase by standardizing the method name. Adjusted related tests to accommodate the new method signature.

* ref(baggage): remove logging callback from SentryBaggage

Refactored SentryBaggage to eliminate the logging callback, replacing it with an internal logger for improved logging consistency. Updated related methods and tests to reflect this change, enhancing code clarity and maintainability.

* Update

* ref(baggage): simplify toBaggage method by removing logging callback

Refactored the toBaggage method in SentryTraceContextHeader to eliminate the logging callback, enhancing code clarity. Updated the SentryTracer to reflect this change, ensuring consistency across the codebase.

* Update

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* Update CHANGELOG

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* build(deps): bump actions/checkout from 5 to 6 (#3460)

Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.278.0 to 1.286.0 (#3482)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.278.0 to 1.286.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@4c24fa5...90be115)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.286.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(dart): Catch client exceptions in HttpTransport.send (#3490)

* fix(dart): Catch client exceptions in HttpTransport.send

Prevents unhandled exceptions like `ClientException: Connection closed
before full header was received` from crashing the host application.
The error is logged via internalLogger and only rethrown in
automatedTestMode.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update

* Update CHANGELOG

* Update

* Update

* Implement lost event recording in HttpTransport for network errors

Enhance the HttpTransport class to record lost events when a network error occurs during envelope transmission. This includes logging discarded events for both Sentry transactions and spans. Add corresponding tests to verify the functionality when client exceptions are thrown.

* Refactor lost event handling in HttpTransport and TransportUtils

Consolidate lost event recording logic into TransportUtils for better reusability. Update HttpTransport to utilize the new method for recording lost events on network errors. Enhance logging for response statuses, including rate limit handling. Remove redundant lost event recording method from HttpTransport.

* Update

* Update

* Rename to recordLostEvents

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* release: 9.11.0-beta.2

* chore(release): prepare `9.11.0` changelog (#3498)

* Update CHANGELOG

* Revise CHANGELOG for enhancements and dependencies

Updated CHANGELOG to reflect enhancements and dependency bumps.

* release: 9.11.0

* chore: update packages/flutter/scripts/update-native.sh to 0.12.5 (#3481)

Co-authored-by: GitHub <noreply@github.com>

* chore: update packages/flutter/scripts/update-android.sh to 8.31.0 (#3476)

Co-authored-by: GitHub <noreply@github.com>

* release: 9.12.0

* chore: update packages/flutter/scripts/update-js.sh to 10.38.0 (#3474)

Co-authored-by: GitHub <noreply@github.com>

* chore(bugbot): Update `BUGBOT.md` to check the PR description when reviewing dependency updates (#3509)

* Update BUGBOT.md

* chore(deps): update Android SDK to v8.32.0 (#3506)

* chore: update packages/flutter/scripts/update-android.sh to 8.32.0

* Add spotlight as debugImplementation

* Update analyze

* Updat

* Update android example sdk targets

* Update

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* feat(flutter): Synchronize `traceId` to native SDKs (#3507)

* feat: Synchronize PropagationContext to native SDKs (#3406)

Native crashes/errors on Android and iOS carry their own independently-
generated traceId, disconnecting them from the Dart-side trace. This
wires up the existing native setTrace APIs so the Dart PropagationContext
is synced to native on init and whenever generateNewTrace() is called.

- Add OnTraceReset lifecycle event dispatched from Hub.generateNewTrace()
- Add NativeTraceSyncIntegration that subscribes to OnTraceReset and
  calls the platform-specific native setTrace API
- Implement setTrace on all platform bindings (JNI for Android, method
  channel for Cocoa, no-op for C/Web)
- Add supportsTraceSync capability flag to SentryNativeBinding
- Disable native auto trace ID generation on Android so Flutter is
  the single source of truth
- Add setTrace handler in iOS SentryFlutterPlugin.swift
- Register NativeTraceSyncIntegration in default integrations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix build

* Update CHANGELOG

* Update

* Update

* Update

* Update

* Fix mocks

* Update

* Update doc

* Fix changelog

* Update

* Review

* Update

* Bubble up error from native flutter plugin in swift

* Move enableNativeTraceSync from dart to flutter options

* Fix duplicate result

* Improve documentation

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* chore(deps): update Native SDK to v0.12.6 (#3502)

* chore: update packages/flutter/scripts/update-native.sh to 0.12.6

* Update gitignore

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* internal(flutter): Add SDK features metadata for SPM vs CocoaPods tracking (#3508)

* feat(dart): Add `features` list to `SdkVersion` metadata

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(flutter): Merge native SDK features into event metadata

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(flutter): Report SPM vs CocoaPods build type as SDK feature on iOS

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Review

* Remove redundant comments

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* release: 9.13.0

* Fix jni usage for creating bitmap

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: getsentry-bot <bot@sentry.io>
Co-authored-by: getsentry-bot <bot@getsentry.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Philipp Hofmann <philipp.hofmann@sentry.io>
buenaflor added a commit that referenced this pull request Feb 27, 2026
* build(deps): bump actions/cache from 4 to 5 (#3423)

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/upload-artifact from 5 to 6 (#3399)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* enh(internal): internal logging api (#3425)

* feat(logging): introduce SentryDebugLogger for enhanced diagnostic logging

This commit adds a new `SentryDebugLogger` class to provide a lightweight, isolate-compatible logging solution for the Sentry SDK. The logger supports various log levels and can be configured for each isolate. Additionally, it integrates with `SentryOptions` to enable logging based on the debug flag and diagnostic level. The existing `IsolateLogger` has been removed in favor of this new implementation, streamlining the logging process across the SDK.

- Added `SentryDebugLogger` for structured logging.
- Updated `SentryOptions` to configure the logger based on debug settings.
- Replaced instances of `IsolateLogger` with `SentryDebugLogger` in relevant files.
- Added unit tests for the new logger functionality.

* refactor(sentry): remove debug logger warning from Sentry initialization

This commit removes a debug logger warning message from the Sentry class during initialization. The change helps to clean up the logging output and streamline the initialization process without affecting functionality.

* docs(debug_logger): update example usage and clarify instance requirements

This commit updates the documentation for the `SentryDebugLogger` to reflect the correct variable name in the example and adds a note emphasizing that each package should have at least one top-level instance of the logger. This enhances clarity for users implementing the logger in their applications.

* refactor(sentry): remove unused debug logger import and enhance debug logger documentation

This commit removes the unused import of the debug logger from the Sentry class and adds an internal annotation to the `SentryDebugLogger` in the debug logger file. Additionally, a comment is added in the isolate worker to suppress a lint warning related to the internal member usage, improving code clarity and maintainability.

* refactor(sentry): remove unused debug logger import from sentry_options.dart

This commit removes the unused import of the debug logger from the `sentry_options.dart` file, contributing to cleaner code and improved maintainability.

* docs(debug_logger): correct example usage in documentation

This commit updates the example usage in the `SentryDebugLogger` documentation to reflect the correct variable name, enhancing clarity for users implementing the logger in their applications.

* Update

* refactor(debug_logger): remove unused category parameter from logging methods

This commit simplifies the `SentryDebugLogger` class by removing the unused `category` parameter from the `debug`, `info`, `warning`, `error`, and `fatal` logging methods. This change enhances code clarity and reduces unnecessary complexity in the logging interface.

* refactor(debug_logger_test): remove test for category logging

This commit removes the test case that checks logging with a category parameter from the `debug_logger_test.dart` file. This change aligns with the recent refactor of the `SentryDebugLogger` class, which eliminated the unused category parameter, thereby enhancing the clarity and relevance of the test suite.

* refactor(android_replay_handler): enhance debug logging with context

This commit updates the logging statements in the `_AndroidReplayHandler` class to include the debug name from the configuration. This change improves the clarity of log messages by providing context for unexpected messages and payload types, aiding in debugging and monitoring efforts.

* refactor(debug_logger_test): enhance test coverage and improve naming conventions

This commit refactors the `debug_logger_test.dart` file by renaming test groups for clarity and adding new tests to verify the behavior of `SentryOptions.debug` and `SentryOptions.diagnosticLevel`. The changes improve the organization and comprehensiveness of the test suite, ensuring better validation of the `SentryDebugLogger` configuration and logging functionality.

* refactor(sentry_options): improve debug logger configuration and diagnostic level handling

This commit refactors the `SentryOptions` class to enhance the configuration of the debug logger. The `diagnosticLevel` setter now updates the logger's minimum level dynamically, ensuring that changes to the diagnostic level are reflected immediately. Additionally, the debug logger configuration is encapsulated in a private method for better organization and clarity.

* refactor(logging): replace SentryDebugLogger with SentryInternalLogger and enhance logging functionality

This commit refactors the logging mechanism by replacing the `SentryDebugLogger` with the new `SentryInternalLogger` across the codebase. The `SentryInternalLogger` provides improved logging capabilities, including compile-time constants for release, profile, and debug modes, ensuring better tree-shaking and performance. Additionally, the associated tests have been updated to validate the new logger's behavior, enhancing overall logging clarity and maintainability.

* refactor(logging): remove SentryDebugLogger and its import from the codebase

This commit removes the `SentryDebugLogger` class and its associated import from `sentry_options.dart`, streamlining the logging functionality in the Sentry SDK. This change is part of the ongoing effort to enhance the logging mechanism by transitioning to the `SentryInternalLogger`, which offers improved capabilities and performance.

* refactor(sentry_options): update logger configuration methods to use SentryInternalLogger

This commit modifies the `SentryOptions` class to replace calls to the deprecated `_configureDebugLogger` method with `_configureInternalLogger`. This change aligns with the recent transition to the `SentryInternalLogger`, ensuring consistent logging configuration and improving overall code clarity.

* refactor(logging): rename debugLogger to internalLogger for consistency

This commit renames the `debugLogger` to `internalLogger` across the codebase, including tests and various components. This change aligns with the recent transition to the `SentryInternalLogger`, ensuring consistent naming and improving clarity in the logging functionality.

* refactor(logging): remove debugLogger test and update logging references to internalLogger

This commit removes the test for the `debugLogger` constant in `internal_logger_test.dart` and updates references from `debugLogger` to `internalLogger` in the `_AndroidEnvelopeHandler` and `_AndroidReplayHandler` classes. These changes ensure consistency in the logging implementation and align with the recent transition to the `SentryInternalLogger`.

* refactor(logging): move _defaultLogOutput method to SentryInternalLogger

This commit relocates the `_defaultLogOutput` method into the `SentryInternalLogger` class, enhancing the organization of the logging functionality. This change improves code clarity and aligns with the ongoing refactor to streamline the logging mechanism within the Sentry SDK.

* refactor(logging): improve error logging format in isolate_worker

This commit enhances the error logging format in the `isolate_worker.dart` file by improving the readability of the log statement. The changes ensure that the error and stack trace are clearly separated, contributing to better debugging and monitoring of isolate message handling failures.

* fix(android): Envelope worker not starting when `autoInitializeNativeSdk` is disabled (#3420)

* Update

* Update CHANGELOG

* Enhance AndroidEnvelopeSender to buffer envelopes when worker is not started and flush them upon starting. Update tests to reflect new buffering behavior and log changes from warning to info level.

* Refactor SentryNativeJava tests: Split tests into separate files for VM and web environments. Introduce new test file for SentryNativeJava with ReplaySizeAdjustment and EnvelopeSender initialization tests. Remove redundant web stubs and streamline imports.

* Refactor AndroidEnvelopeSender: Remove pending envelopes buffering and streamline envelope capture logic. Ensure envelopes are sent directly when the worker is available, and adjust logging for envelope capture in the main isolate. Update SentryNativeJava to start the envelope sender conditionally.

* Enhance AndroidEnvelopeSender to manage closed state and improve envelope capture logic. Introduce a flag to prevent envelope capture after closure and update logging to use a required logger parameter. Adjust tests to reflect changes in behavior when the worker is not started.

* Refactor AndroidEnvelopeSender: Adjust captureEnvelope method to ensure client assignment occurs after closed state check. This change improves clarity and maintains the integrity of the envelope sending process.

* Fix AndroidEnvelopeSender start method to prevent spawning a worker if already closed. Update tests to reflect the expected spawn count when the sender is closed.

* Update Android envelope capture test to assert behavior when the native channel is unavailable. Introduced a matcher for improved error handling in the captureEnvelope method.

* Refactor AndroidEnvelopeSender start method to ensure proper closure handling during worker spawning. Introduce a guard clause to close the worker if the sender is already closed, enhancing stability and preventing resource leaks.

* Refactor AndroidEnvelopeSender test to clarify logging behavior when sending envelopes in the main isolate. Update test description for improved readability and understanding of the expected functionality.

* refactor(AndroidEnvelopeSender): update constructor to use SentryOptions and improve logging

This commit refactors the `AndroidEnvelopeSender` class to replace the `_options` parameter with `SentryOptions` in the constructor. It also enhances the logging mechanism by utilizing `internalLogger` for logging messages related to envelope capture. The `_captureEnvelope` method has been updated to streamline error handling and improve clarity in logging, ensuring better maintainability and consistency across the codebase.

* refactor(AndroidEnvelopeSender test): enhance logging configuration for envelope sending

This commit updates the logging mechanism in the `AndroidEnvelopeSender` test to utilize the new `SentryInternalLogger`. The changes include removing the previous debug options and configuring the logger to capture logs with improved structure and clarity. This refactor aims to enhance the maintainability and consistency of logging behavior during envelope sending in the main isolate.

* release: 9.9.2

* chore(agents): Add `AGENTS.md` (#3426)

* Update

* Refine test naming conventions in AGENTS.md for improved clarity and structure

- Updated guidelines to ensure test group and test names read as coherent sentences.
- Introduced a structured approach for naming by depth, emphasizing the use of subjects, contexts, variants, and behaviors.
- Added examples and anti-patterns to illustrate best practices in test organization and naming.

* Enhance Dart code design guidelines in AGENTS.md

- Added comprehensive guidelines for identifiers, ordering, formatting, comments, and documentation to improve code consistency and readability.
- Included best practices for naming conventions, code structure, and documentation styles to align with the Effective Dart guide.
- Emphasized the importance of adhering to these guidelines for new and modified tests.

* Refactor AGENTS.md for improved clarity and structure

- Streamlined project structure section by removing table format for a more concise list format.
- Updated environment section to include specific Flutter and Dart versions.
- Enhanced testing guidelines with clearer commands and descriptions for Dart and Flutter packages.
- Added new guidelines for modern Dart language features to promote clarity and reduce boilerplate in code.

* Enhance agent documentation and testing guidelines

- Updated AGENTS.md to clarify the structure and purpose of the Sentry Dart/Flutter SDK.
- Introduced new documentation files for code guidelines and test conventions, emphasizing best practices for Dart/Flutter development.
- Added detailed sections on naming conventions, test structure, and the use of modern Dart features to improve code clarity and maintainability.
- Ensured that all new and modified code adheres to these updated guidelines for consistency across the project.

* Update documentation comments guidelines in code-guidelines.md

- Renamed section from "Doc Comments" to "Documentation Comments" for clarity.
- Added recommendations for when to write comments, emphasizing the importance of self-documenting code.
- Included specific guidelines on documenting public APIs and non-obvious reasoning, while advising against commenting on obvious behavior and providing excessive inline commentary.

* build(deps): bump aws-sdk-s3 from 1.203.0 to 1.208.0 in /metrics (#3428)

Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.203.0 to 1.208.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.208.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump aws-sdk-s3 in /packages/flutter/example/ios (#3417)

Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.203.0 to 1.208.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.208.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.268.0 to 1.278.0 (#3430)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.268.0 to 1.278.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@8aeb6ff...4c24fa5)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.278.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update scripts/update-symbol-collector.sh to 2.3.1 (#3385)

Co-authored-by: GitHub <noreply@github.com>

* build(deps): bump reactivecircus/android-emulator-runner (#3328)

Bumps [reactivecircus/android-emulator-runner](https://github.com/reactivecircus/android-emulator-runner) from 2.34.0 to 2.35.0.
- [Release notes](https://github.com/reactivecircus/android-emulator-runner/releases)
- [Changelog](https://github.com/ReactiveCircus/android-emulator-runner/blob/main/CHANGELOG.md)
- [Commits](ReactiveCircus/android-emulator-runner@1dcd009...b530d96)

---
updated-dependencies:
- dependency-name: reactivecircus/android-emulator-runner
  dependency-version: 2.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore: update metrics/flutter.properties to 3.38.5 (#3387)

Co-authored-by: GitHub <noreply@github.com>

* build(deps): bump actions/checkout from 4 to 6 (#3365)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore: update packages/flutter/scripts/update-native.sh to 0.12.3 (#3438)

Co-authored-by: GitHub <noreply@github.com>

* Add claude settings (#3445)

* Add `CLAUDE.md` symlink to `AGENTS.md`

* Move `TelemetryProcessor` from span-first branch and replace `LogBatcher` (#3448)

* Add TelemetryProcessor for span and log buffering

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove SpanV2 and TraceLifecycle dependencies

- Remove addSpan method from TelemetryProcessor interface
- Remove span buffer from DefaultTelemetryProcessor
- Remove captureSpan method from SentryClient
- Remove traceLifecycle property from SentryOptions
- Remove span imports and exports
- Update mocks to remove span-related code

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove span-related tests from sentry_client_test

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove span-related processor tests

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove span import from Flutter mocks

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Fix wiring up

* Update

* Update

* Update CHANGELOG

* Update

* Remove logbatcher

* Polish

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* chore(deps): update Flutter SDK (metrics) to v3.38.7 (#3437)

* chore: update metrics/flutter.properties to 3.38.7

* update

* update

* Update

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* fix: update kotlin version handling in android (#3436)

* update kotlin version handling in android build scripts for CI compatibility

* Fix Kotlin version format in workflow file

* Update

* Update

* Update

* Remove CI override comment for Kotlin language version

Removed comment about allowing CI to override Kotlin language version.

* release: 9.10.0

* Update Xcode version to 16.4 in workflow (#3452)

* fix(ci): failing package-analysis (#3453)

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Refactor Pana score check logic in analyze.yml

* chore: ignore local Claude settings (#3462)

Add .claude/settings.local.json to .gitignore to prevent committing
local Claude Code configuration.

* chore: update packages/flutter/scripts/update-android.sh to 8.30.0 (#3451)

Co-authored-by: GitHub <noreply@github.com>

* feat: trace connected metrics (#3450)

Adds trace connected metrics feature to Dart

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* refactor(log): make implementation consistent with metrics and span-first (#3463)

Make log implementation consistent with metrics and span-first

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* build(deps): bump actions/setup-java from 4 to 5 (#3461)

Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](actions/setup-java@v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat(flutter): Add captureNativeFailedRequests option for iOS/macOS (#3472)

Add a new `captureNativeFailedRequests` option to control native HTTP
failed request capturing independently from `captureFailedRequests`.

This separation allows users to:
- Keep Dart-side failed request capturing enabled while disabling native
- Or vice versa, based on their needs

For backwards compatibility, `captureNativeFailedRequests` defaults to
`null`, which falls back to the value of `captureFailedRequests`. This
ensures existing users who set `captureFailedRequests = false` will
still have native capturing disabled as expected.

* release: 9.11.0-beta.1

* chore: update GitHub Actions workflows to use updater v3 (#3468)

* chore: update GitHub Actions workflows to use new updater version

Refactor the update-deps.yml workflow to utilize the latest version of the updater action, improving the structure and permissions for dependency updates across Android, Cocoa, JavaScript, Native, and Symbol Collector jobs.

* chore: add pull request trigger for update-deps.yml workflow

Include a pull request trigger in the update-deps.yml workflow for testing purposes, while maintaining existing push configurations.

* chore: update update-deps.yml to use ssh-key instead of api-token

Refactor the update-deps.yml workflow to replace the api-token with ssh-key for Android, Cocoa, JavaScript, Native, and Symbol Collector jobs, enhancing security and access management.

* Update

* Fix cocoa

* Fix formatting in update-deps.yml permissions section

* Modify update-deps workflow triggers

Removed pull_request trigger from update-deps workflow.

* Fix cocoa

* Update

* Update

* Disable wasm runner for now (#3478)

* ci(testflight): Update to Xcode 26.2 (#3479)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* ref(dart): Remove unused beforeMetricCallback (#3484)

Remove dead code that was never used in the codebase. The
BeforeMetricCallback typedef and beforeMetricCallback field
in SentryOptions had no references anywhere in the SDK.

Co-authored-by: Claude <noreply@anthropic.com>

* ref(tracing-instrumentation): Introduce internal instrumentation abstraction for packages (#3488)

* feat(tracing): Introduce internal instrumentation API for Sentry

- Added `InstrumentationSpan` and `LegacyInstrumentationSpan` classes to provide a backend-agnostic abstraction for tracing.
- Implemented `InstrumentationSpanFactory` for creating spans, allowing for future flexibility in span implementations.
- Enhanced `SentryOptions` to include a `spanFactory` for custom span creation.
- Updated various components to utilize the new instrumentation API, including `SentryInstrumentation` and `TransactionInstrumentation`.
- Refactored existing database executor and batch classes to support the new instrumentation spans.

This update improves the tracing capabilities and prepares the codebase for future enhancements in span management.

* refactor(tracing): Simplify transaction instrumentation documentation

- Removed outdated comments and example usage from the `TransactionInstrumentation` class.
- Clarified the behavior of transaction methods by streamlining the documentation.
- Enhanced code readability and maintainability by focusing on essential information.

This update improves the clarity of the transaction instrumentation API, making it easier for developers to understand its usage.

* Update

* Update

* Update

* Update

* Update

* refactor(tracing): Improve transaction stack management in Sentry instrumentation

- Ensured that the transaction stack maintains nesting invariants by always pushing a null value when no parent exists.
- Simplified the logic for adding and removing spans from the stack, enhancing clarity and reducing potential errors.
- Removed redundant comments and streamlined the handling of null spans in transaction methods.

This update enhances the robustness of the Sentry tracing implementation, making it more reliable during transaction execution.

* Remove unnecessary hint

* Fix review issues

* Fix review issues

* Fix review issues

* Fix review issues

* Remove unnecessary files

* Naming

* Naming

* Analyzer

* Naming

* Add test

* Update

* Change finish call to unawaited in error handling

* Add async import to sentry_span_helper.dart

* Update

* ref(tracing-instrumentation): migrate hive, isar, file, supabase and link (#3489)

* feat(hive): add internal logger for sentry_hive package

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(hive): migrate SentrySpanHelper to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()
- Add proper null checks with warning logs
- Maintain both async and sync wrapper methods

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(hive): update classes to use new SentrySpanHelper constructor

- Pass Hub directly to SentrySpanHelper constructor
- Remove setHub() method calls
- Update tests to use constructor parameter

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(file): migrate to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()
- Maintain both async and sync wrapper methods

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(supabase): migrate to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()
- Return InstrumentationSpan from _createSpan helper

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(link): migrate SentryTracingLink to InstrumentationSpan

- Use InstrumentationSpanFactory for child span creation
- Keep legacy API for transaction creation (when shouldStartTransaction=true)
- Wrap transactions in LegacyInstrumentationSpan for unified interface

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(link): migrate SentryRequestSerializer to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(link): migrate SentryResponseParser to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update

* Update

* Update

* Update

* Update

* Update

* feat(supabase): add internal logger and update dependencies

- Introduced an internal logger using Sentry for better tracing.
- Added 'meta' package as a dependency in pubspec.yaml.
- Updated Sentry tracing logic to utilize the new internal logger for warnings.

* Update

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* ref(dart): instrumentation span for http dio (#3493)

* ref(tracing-instrumentation): migrate http and dio to instrumentation span

Migrate TracingClient (http package) and TracingClientAdapter (dio package)
to use the new InstrumentationSpanFactory pattern, consistent with the
recent migration of hive, isar, file, supabase, and link packages.

Changes:
- Add InstrumentationSpanFactory field to TracingClient and TracingClientAdapter
- Replace hub.getSpan()?.startChild() with spanFactory.getSpan()/createSpan()
- Extract underlying ISentrySpan via LegacyInstrumentationSpan.spanReference
  for tracing headers (sentry-trace, baggage, traceparent)
- Add applyToInstrumentationSpan() method to UrlDetails for URL data

All existing tests pass without modification, preserving backward compatibility.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* ref(dio): migrate SentryTransformer to instrumentation span

Complete the migration of dio package to use InstrumentationSpanFactory
by updating SentryTransformer's transformRequest and transformResponse
methods.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* ref(tracing): rename applyToInstrumentationSpan to applyToSpan

Remove the old ISentrySpan-based applyToSpan method and rename
applyToInstrumentationSpan to applyToSpan since all callers now use
InstrumentationSpan.

Update url_details_test.dart to use MockInstrumentationSpan.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore(tests): add mock_span import to lifecycle tests

Added the mock_span import to both sentry_client_lifecycle_test.dart and sentry_client_sdk_lifecycle_test.dart to facilitate testing with spans.

* feat(tests): add MockSpan class for testing Sentry spans

Introduced a new MockSpan class in mock_span.dart to facilitate testing with SentrySpan, providing a mock implementation for use in unit tests.

* ref(tracing): remove commented code for extracting ISentrySpan

Removed commented-out code related to extracting ISentrySpan for tracing headers in TracingClient and TracingClientAdapter, streamlining the codebase.

* ref(tracing): enhance tracing header handling with InstrumentationSpan

Updated TracingClient and TracingClientAdapter to utilize the new addTracingHeadersFromInstrumentationSpan method for adding tracing headers. This change simplifies the code by directly passing the InstrumentationSpan, improving clarity and maintainability. Additionally, new methods for converting spans to Sentry trace and baggage headers were added to the InstrumentationSpan interface.

* ref(tracing): rename addTracingHeadersFromInstrumentationSpan to addTracingHeadersToHttpHeader

Updated the TracingClient and TracingClientAdapter to use the renamed addTracingHeadersToHttpHeader method for adding tracing headers. This change improves code clarity and consistency across the codebase by standardizing the method name. Adjusted related tests to accommodate the new method signature.

* ref(baggage): remove logging callback from SentryBaggage

Refactored SentryBaggage to eliminate the logging callback, replacing it with an internal logger for improved logging consistency. Updated related methods and tests to reflect this change, enhancing code clarity and maintainability.

* Update

* ref(baggage): simplify toBaggage method by removing logging callback

Refactored the toBaggage method in SentryTraceContextHeader to eliminate the logging callback, enhancing code clarity. Updated the SentryTracer to reflect this change, ensuring consistency across the codebase.

* Update

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* Update CHANGELOG

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* build(deps): bump actions/checkout from 5 to 6 (#3460)

Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.278.0 to 1.286.0 (#3482)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.278.0 to 1.286.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@4c24fa5...90be115)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.286.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(dart): Catch client exceptions in HttpTransport.send (#3490)

* fix(dart): Catch client exceptions in HttpTransport.send

Prevents unhandled exceptions like `ClientException: Connection closed
before full header was received` from crashing the host application.
The error is logged via internalLogger and only rethrown in
automatedTestMode.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update

* Update CHANGELOG

* Update

* Update

* Implement lost event recording in HttpTransport for network errors

Enhance the HttpTransport class to record lost events when a network error occurs during envelope transmission. This includes logging discarded events for both Sentry transactions and spans. Add corresponding tests to verify the functionality when client exceptions are thrown.

* Refactor lost event handling in HttpTransport and TransportUtils

Consolidate lost event recording logic into TransportUtils for better reusability. Update HttpTransport to utilize the new method for recording lost events on network errors. Enhance logging for response statuses, including rate limit handling. Remove redundant lost event recording method from HttpTransport.

* Update

* Update

* Rename to recordLostEvents

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* release: 9.11.0-beta.2

* chore(release): prepare `9.11.0` changelog (#3498)

* Update CHANGELOG

* Revise CHANGELOG for enhancements and dependencies

Updated CHANGELOG to reflect enhancements and dependency bumps.

* release: 9.11.0

* chore: update packages/flutter/scripts/update-native.sh to 0.12.5 (#3481)

Co-authored-by: GitHub <noreply@github.com>

* chore: update packages/flutter/scripts/update-android.sh to 8.31.0 (#3476)

Co-authored-by: GitHub <noreply@github.com>

* release: 9.12.0

* chore: update packages/flutter/scripts/update-js.sh to 10.38.0 (#3474)

Co-authored-by: GitHub <noreply@github.com>

* chore(bugbot): Update `BUGBOT.md` to check the PR description when reviewing dependency updates (#3509)

* Update BUGBOT.md

* chore(deps): update Android SDK to v8.32.0 (#3506)

* chore: update packages/flutter/scripts/update-android.sh to 8.32.0

* Add spotlight as debugImplementation

* Update analyze

* Updat

* Update android example sdk targets

* Update

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* feat(flutter): Synchronize `traceId` to native SDKs (#3507)

* feat: Synchronize PropagationContext to native SDKs (#3406)

Native crashes/errors on Android and iOS carry their own independently-
generated traceId, disconnecting them from the Dart-side trace. This
wires up the existing native setTrace APIs so the Dart PropagationContext
is synced to native on init and whenever generateNewTrace() is called.

- Add OnTraceReset lifecycle event dispatched from Hub.generateNewTrace()
- Add NativeTraceSyncIntegration that subscribes to OnTraceReset and
  calls the platform-specific native setTrace API
- Implement setTrace on all platform bindings (JNI for Android, method
  channel for Cocoa, no-op for C/Web)
- Add supportsTraceSync capability flag to SentryNativeBinding
- Disable native auto trace ID generation on Android so Flutter is
  the single source of truth
- Add setTrace handler in iOS SentryFlutterPlugin.swift
- Register NativeTraceSyncIntegration in default integrations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix build

* Update CHANGELOG

* Update

* Update

* Update

* Update

* Fix mocks

* Update

* Update doc

* Fix changelog

* Update

* Review

* Update

* Bubble up error from native flutter plugin in swift

* Move enableNativeTraceSync from dart to flutter options

* Fix duplicate result

* Improve documentation

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* chore(deps): update Native SDK to v0.12.6 (#3502)

* chore: update packages/flutter/scripts/update-native.sh to 0.12.6

* Update gitignore

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* internal(flutter): Add SDK features metadata for SPM vs CocoaPods tracking (#3508)

* feat(dart): Add `features` list to `SdkVersion` metadata

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(flutter): Merge native SDK features into event metadata

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(flutter): Report SPM vs CocoaPods build type as SDK feature on iOS

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Review

* Remove redundant comments

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* release: 9.13.0

* ci(release): Switch from action-prepare-release to Craft (#3440)

* ci(release): Switch from action-prepare-release to Craft

This PR migrates from the deprecated action-prepare-release to the new
Craft GitHub Actions (reusable workflow or composite action).

Changes:
- Migrate .github/workflows/release.yml to Craft reusable workflow

* ci(release): Restore GitHub App token authentication

The previous migration incorrectly removed the GitHub App token
authentication step. This commit restores it by switching to the
composite action pattern which preserves the auth flow.

* fix: Pin actions to SHA and add permissions blocks

* fix: Use correct action version SHAs (restore original versions)

* fix: Use correct action version SHAs (restore original versions)

* fix: Clean up action version comments

* Update Craft SHA to 1c58bfd57bfd6a967b6f3fc92bead2c42ee698ce

* Add explicit permissions block to analyze.yml

* Add explicit permissions block to dart.yml

* Add explicit permissions block to dio.yml

* Add explicit permissions block to drift.yml

* Add explicit permissions block to e2e_dart.yml

* Add explicit permissions block to file.yml

* Add explicit permissions block to firebase_remote_config.yml

* Add explicit permissions block to flutter.yml

* Add explicit permissions block to flutter_test.yml

* Add explicit permissions block to format-and-fix.yml

* Add explicit permissions block to hive.yml

* Add explicit permissions block to isar.yml

* Add explicit permissions block to link.yml

* Add explicit permissions block to logging.yml

* Add explicit permissions block to metrics.yml

* Add explicit permissions block to min_version_test.yml

* Add explicit permissions block to sqflite.yml

* Add explicit permissions block to supabase.yml

* Add explicit permissions block to testflight.yml

* Add explicit permissions block to web-example-ghpages.yml

* Revert permissions changes to analyze.yml

* Revert permissions changes to dart.yml

* Revert permissions changes to dio.yml

* Revert permissions changes to drift.yml

* Revert permissions changes to e2e_dart.yml

* Revert permissions changes to file.yml

* Revert permissions changes to firebase_remote_config.yml

* Revert permissions changes to flutter.yml

* Revert permissions changes to flutter_test.yml

* Revert permissions changes to format-and-fix.yml

* Revert permissions changes to hive.yml

* Revert permissions changes to isar.yml

* Revert permissions changes to link.yml

* Revert permissions changes to logging.yml

* Revert permissions changes to metrics.yml

* Revert permissions changes to min_version_test.yml

* Revert permissions changes to sqflite.yml

* Revert permissions changes to supabase.yml

* Revert permissions changes to testflight.yml

* Revert permissions changes to web-example-ghpages.yml

* fix: revert extraneous changes to non-release workflow files

* fix: clean up release.yml formatting and version comments

* build(craft): Update Craft action to c6e2f04

* chore: add unlabeled trigger to changelog-preview

* build(deps): bump faraday from 1.10.4 to 1.10.5 in /metrics (#3511)

Bumps [faraday](https://github.com/lostisland/faraday) from 1.10.4 to 1.10.5.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](lostisland/faraday@v1.10.4...v1.10.5)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 1.10.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update packages/flutter/scripts/update-native.sh to 0.12.7 (#3514)

Co-authored-by: GitHub <noreply@github.com>

* chore: update metrics/flutter.properties to 3.41.1 (#3486)

Co-authored-by: GitHub <noreply@github.com>

* build(deps): bump getsentry/craft from 2.19.0 to 2.21.4 (#3518)

Bumps [getsentry/craft](https://github.com/getsentry/craft) from 2.19.0 to 2.21.4.
- [Release notes](https://github.com/getsentry/craft/releases)
- [Changelog](https://github.com/getsentry/craft/blob/master/CHANGELOG.md)
- [Commits](getsentry/craft@c6e2f04...906009a)

---
updated-dependencies:
- dependency-name: getsentry/craft
  dependency-version: 2.21.4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.286.0 to 1.288.0 (#3519)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.286.0 to 1.288.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@90be115...09a7688)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.288.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update packages/flutter/scripts/update-native.sh to 0.12.8 (#3520)

Co-authored-by: GitHub <noreply@github.com>

* fix(dart): Dont guard user behind `sendDefaultPii` (#3524)

* Dont guard user attributes with sendDEfaultPii

* Update sample

* Update CHANGELOG

* Update comments

* Add enableTombstone option for native crash reporting on Android (#3526)

* feat(flutter): Add enableTombstone option for improved native crash reporting

Add `enableTombstone` option to SentryFlutterOptions that enables tombstone-based
native crash reporting on Android 12+ (API level 30+).

When enabled, uses Android's `ApplicationExitInfo.REASON_CRASH_NATIVE` to capture
native crashes with more detailed thread information.

The option is disabled by default.

Slack thread: https://sentry.slack.com/archives/CP4UUUF1S/p1771404252312029?thread_ts=1769055443.846779&cid=CP4UUUF1S

https://claude.ai/code/session_016kkosYW3XG2rhHafEfspqA

* Apply suggestion from @romtsn

* Add integration test

* Enable tombstone option in integration test

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo.buenaflor@sentry.io>

* chore(deps): update Android SDK to v8.33.0 (#3529)

* chore: update packages/flutter/scripts/update-android.sh to 8.33.0

* Update jni call when creating bitmap

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* internal(web): add sdk name for native js errors (#3525)

* Add beforeSend to change sdk name in JS

* Add beforeSend to js

* Review

* Cleanup

* Update factory for creating JsSdkInfo

* release: 9.14.0

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: getsentry-bot <bot@sentry.io>
Co-authored-by: getsentry-bot <bot@getsentry.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Philipp Hofmann <philipp.hofmann@sentry.io>
Co-authored-by: Burak Yigit Kaya <ben@byk.im>
Co-authored-by: Roman Zavarnitsyn <rom4ek93@gmail.com>
Co-authored-by: buenaflor <23364143+buenaflor@users.noreply.github.com>
buenaflor added a commit that referenced this pull request Mar 27, 2026
* build(deps): bump actions/cache from 4 to 5 (#3423)

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/upload-artifact from 5 to 6 (#3399)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* enh(internal): internal logging api (#3425)

* feat(logging): introduce SentryDebugLogger for enhanced diagnostic logging

This commit adds a new `SentryDebugLogger` class to provide a lightweight, isolate-compatible logging solution for the Sentry SDK. The logger supports various log levels and can be configured for each isolate. Additionally, it integrates with `SentryOptions` to enable logging based on the debug flag and diagnostic level. The existing `IsolateLogger` has been removed in favor of this new implementation, streamlining the logging process across the SDK.

- Added `SentryDebugLogger` for structured logging.
- Updated `SentryOptions` to configure the logger based on debug settings.
- Replaced instances of `IsolateLogger` with `SentryDebugLogger` in relevant files.
- Added unit tests for the new logger functionality.

* refactor(sentry): remove debug logger warning from Sentry initialization

This commit removes a debug logger warning message from the Sentry class during initialization. The change helps to clean up the logging output and streamline the initialization process without affecting functionality.

* docs(debug_logger): update example usage and clarify instance requirements

This commit updates the documentation for the `SentryDebugLogger` to reflect the correct variable name in the example and adds a note emphasizing that each package should have at least one top-level instance of the logger. This enhances clarity for users implementing the logger in their applications.

* refactor(sentry): remove unused debug logger import and enhance debug logger documentation

This commit removes the unused import of the debug logger from the Sentry class and adds an internal annotation to the `SentryDebugLogger` in the debug logger file. Additionally, a comment is added in the isolate worker to suppress a lint warning related to the internal member usage, improving code clarity and maintainability.

* refactor(sentry): remove unused debug logger import from sentry_options.dart

This commit removes the unused import of the debug logger from the `sentry_options.dart` file, contributing to cleaner code and improved maintainability.

* docs(debug_logger): correct example usage in documentation

This commit updates the example usage in the `SentryDebugLogger` documentation to reflect the correct variable name, enhancing clarity for users implementing the logger in their applications.

* Update

* refactor(debug_logger): remove unused category parameter from logging methods

This commit simplifies the `SentryDebugLogger` class by removing the unused `category` parameter from the `debug`, `info`, `warning`, `error`, and `fatal` logging methods. This change enhances code clarity and reduces unnecessary complexity in the logging interface.

* refactor(debug_logger_test): remove test for category logging

This commit removes the test case that checks logging with a category parameter from the `debug_logger_test.dart` file. This change aligns with the recent refactor of the `SentryDebugLogger` class, which eliminated the unused category parameter, thereby enhancing the clarity and relevance of the test suite.

* refactor(android_replay_handler): enhance debug logging with context

This commit updates the logging statements in the `_AndroidReplayHandler` class to include the debug name from the configuration. This change improves the clarity of log messages by providing context for unexpected messages and payload types, aiding in debugging and monitoring efforts.

* refactor(debug_logger_test): enhance test coverage and improve naming conventions

This commit refactors the `debug_logger_test.dart` file by renaming test groups for clarity and adding new tests to verify the behavior of `SentryOptions.debug` and `SentryOptions.diagnosticLevel`. The changes improve the organization and comprehensiveness of the test suite, ensuring better validation of the `SentryDebugLogger` configuration and logging functionality.

* refactor(sentry_options): improve debug logger configuration and diagnostic level handling

This commit refactors the `SentryOptions` class to enhance the configuration of the debug logger. The `diagnosticLevel` setter now updates the logger's minimum level dynamically, ensuring that changes to the diagnostic level are reflected immediately. Additionally, the debug logger configuration is encapsulated in a private method for better organization and clarity.

* refactor(logging): replace SentryDebugLogger with SentryInternalLogger and enhance logging functionality

This commit refactors the logging mechanism by replacing the `SentryDebugLogger` with the new `SentryInternalLogger` across the codebase. The `SentryInternalLogger` provides improved logging capabilities, including compile-time constants for release, profile, and debug modes, ensuring better tree-shaking and performance. Additionally, the associated tests have been updated to validate the new logger's behavior, enhancing overall logging clarity and maintainability.

* refactor(logging): remove SentryDebugLogger and its import from the codebase

This commit removes the `SentryDebugLogger` class and its associated import from `sentry_options.dart`, streamlining the logging functionality in the Sentry SDK. This change is part of the ongoing effort to enhance the logging mechanism by transitioning to the `SentryInternalLogger`, which offers improved capabilities and performance.

* refactor(sentry_options): update logger configuration methods to use SentryInternalLogger

This commit modifies the `SentryOptions` class to replace calls to the deprecated `_configureDebugLogger` method with `_configureInternalLogger`. This change aligns with the recent transition to the `SentryInternalLogger`, ensuring consistent logging configuration and improving overall code clarity.

* refactor(logging): rename debugLogger to internalLogger for consistency

This commit renames the `debugLogger` to `internalLogger` across the codebase, including tests and various components. This change aligns with the recent transition to the `SentryInternalLogger`, ensuring consistent naming and improving clarity in the logging functionality.

* refactor(logging): remove debugLogger test and update logging references to internalLogger

This commit removes the test for the `debugLogger` constant in `internal_logger_test.dart` and updates references from `debugLogger` to `internalLogger` in the `_AndroidEnvelopeHandler` and `_AndroidReplayHandler` classes. These changes ensure consistency in the logging implementation and align with the recent transition to the `SentryInternalLogger`.

* refactor(logging): move _defaultLogOutput method to SentryInternalLogger

This commit relocates the `_defaultLogOutput` method into the `SentryInternalLogger` class, enhancing the organization of the logging functionality. This change improves code clarity and aligns with the ongoing refactor to streamline the logging mechanism within the Sentry SDK.

* refactor(logging): improve error logging format in isolate_worker

This commit enhances the error logging format in the `isolate_worker.dart` file by improving the readability of the log statement. The changes ensure that the error and stack trace are clearly separated, contributing to better debugging and monitoring of isolate message handling failures.

* fix(android): Envelope worker not starting when `autoInitializeNativeSdk` is disabled (#3420)

* Update

* Update CHANGELOG

* Enhance AndroidEnvelopeSender to buffer envelopes when worker is not started and flush them upon starting. Update tests to reflect new buffering behavior and log changes from warning to info level.

* Refactor SentryNativeJava tests: Split tests into separate files for VM and web environments. Introduce new test file for SentryNativeJava with ReplaySizeAdjustment and EnvelopeSender initialization tests. Remove redundant web stubs and streamline imports.

* Refactor AndroidEnvelopeSender: Remove pending envelopes buffering and streamline envelope capture logic. Ensure envelopes are sent directly when the worker is available, and adjust logging for envelope capture in the main isolate. Update SentryNativeJava to start the envelope sender conditionally.

* Enhance AndroidEnvelopeSender to manage closed state and improve envelope capture logic. Introduce a flag to prevent envelope capture after closure and update logging to use a required logger parameter. Adjust tests to reflect changes in behavior when the worker is not started.

* Refactor AndroidEnvelopeSender: Adjust captureEnvelope method to ensure client assignment occurs after closed state check. This change improves clarity and maintains the integrity of the envelope sending process.

* Fix AndroidEnvelopeSender start method to prevent spawning a worker if already closed. Update tests to reflect the expected spawn count when the sender is closed.

* Update Android envelope capture test to assert behavior when the native channel is unavailable. Introduced a matcher for improved error handling in the captureEnvelope method.

* Refactor AndroidEnvelopeSender start method to ensure proper closure handling during worker spawning. Introduce a guard clause to close the worker if the sender is already closed, enhancing stability and preventing resource leaks.

* Refactor AndroidEnvelopeSender test to clarify logging behavior when sending envelopes in the main isolate. Update test description for improved readability and understanding of the expected functionality.

* refactor(AndroidEnvelopeSender): update constructor to use SentryOptions and improve logging

This commit refactors the `AndroidEnvelopeSender` class to replace the `_options` parameter with `SentryOptions` in the constructor. It also enhances the logging mechanism by utilizing `internalLogger` for logging messages related to envelope capture. The `_captureEnvelope` method has been updated to streamline error handling and improve clarity in logging, ensuring better maintainability and consistency across the codebase.

* refactor(AndroidEnvelopeSender test): enhance logging configuration for envelope sending

This commit updates the logging mechanism in the `AndroidEnvelopeSender` test to utilize the new `SentryInternalLogger`. The changes include removing the previous debug options and configuring the logger to capture logs with improved structure and clarity. This refactor aims to enhance the maintainability and consistency of logging behavior during envelope sending in the main isolate.

* release: 9.9.2

* chore(agents): Add `AGENTS.md` (#3426)

* Update

* Refine test naming conventions in AGENTS.md for improved clarity and structure

- Updated guidelines to ensure test group and test names read as coherent sentences.
- Introduced a structured approach for naming by depth, emphasizing the use of subjects, contexts, variants, and behaviors.
- Added examples and anti-patterns to illustrate best practices in test organization and naming.

* Enhance Dart code design guidelines in AGENTS.md

- Added comprehensive guidelines for identifiers, ordering, formatting, comments, and documentation to improve code consistency and readability.
- Included best practices for naming conventions, code structure, and documentation styles to align with the Effective Dart guide.
- Emphasized the importance of adhering to these guidelines for new and modified tests.

* Refactor AGENTS.md for improved clarity and structure

- Streamlined project structure section by removing table format for a more concise list format.
- Updated environment section to include specific Flutter and Dart versions.
- Enhanced testing guidelines with clearer commands and descriptions for Dart and Flutter packages.
- Added new guidelines for modern Dart language features to promote clarity and reduce boilerplate in code.

* Enhance agent documentation and testing guidelines

- Updated AGENTS.md to clarify the structure and purpose of the Sentry Dart/Flutter SDK.
- Introduced new documentation files for code guidelines and test conventions, emphasizing best practices for Dart/Flutter development.
- Added detailed sections on naming conventions, test structure, and the use of modern Dart features to improve code clarity and maintainability.
- Ensured that all new and modified code adheres to these updated guidelines for consistency across the project.

* Update documentation comments guidelines in code-guidelines.md

- Renamed section from "Doc Comments" to "Documentation Comments" for clarity.
- Added recommendations for when to write comments, emphasizing the importance of self-documenting code.
- Included specific guidelines on documenting public APIs and non-obvious reasoning, while advising against commenting on obvious behavior and providing excessive inline commentary.

* build(deps): bump aws-sdk-s3 from 1.203.0 to 1.208.0 in /metrics (#3428)

Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.203.0 to 1.208.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.208.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump aws-sdk-s3 in /packages/flutter/example/ios (#3417)

Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.203.0 to 1.208.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.208.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.268.0 to 1.278.0 (#3430)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.268.0 to 1.278.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](https://github.com/ruby/setup-ruby/compare/8aeb6ff8030dd539317f8e1769a044873b56ea71...4c24fa5ec04b2e79eb40571b1cee2a0d2b705771)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.278.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update scripts/update-symbol-collector.sh to 2.3.1 (#3385)

Co-authored-by: GitHub <noreply@github.com>

* build(deps): bump reactivecircus/android-emulator-runner (#3328)

Bumps [reactivecircus/android-emulator-runner](https://github.com/reactivecircus/android-emulator-runner) from 2.34.0 to 2.35.0.
- [Release notes](https://github.com/reactivecircus/android-emulator-runner/releases)
- [Changelog](https://github.com/ReactiveCircus/android-emulator-runner/blob/main/CHANGELOG.md)
- [Commits](https://github.com/reactivecircus/android-emulator-runner/compare/1dcd0090116d15e7c562f8db72807de5e036a4ed...b530d96654c385303d652368551fb075bc2f0b6b)

---
updated-dependencies:
- dependency-name: reactivecircus/android-emulator-runner
  dependency-version: 2.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore: update metrics/flutter.properties to 3.38.5 (#3387)

Co-authored-by: GitHub <noreply@github.com>

* build(deps): bump actions/checkout from 4 to 6 (#3365)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore: update packages/flutter/scripts/update-native.sh to 0.12.3 (#3438)

Co-authored-by: GitHub <noreply@github.com>

* Add claude settings (#3445)

* Add `CLAUDE.md` symlink to `AGENTS.md`

* Move `TelemetryProcessor` from span-first branch and replace `LogBatcher` (#3448)

* Add TelemetryProcessor for span and log buffering

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove SpanV2 and TraceLifecycle dependencies

- Remove addSpan method from TelemetryProcessor interface
- Remove span buffer from DefaultTelemetryProcessor
- Remove captureSpan method from SentryClient
- Remove traceLifecycle property from SentryOptions
- Remove span imports and exports
- Update mocks to remove span-related code

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove span-related tests from sentry_client_test

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove span-related processor tests

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Remove span import from Flutter mocks

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Fix wiring up

* Update

* Update

* Update CHANGELOG

* Update

* Remove logbatcher

* Polish

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* chore(deps): update Flutter SDK (metrics) to v3.38.7 (#3437)

* chore: update metrics/flutter.properties to 3.38.7

* update

* update

* Update

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* fix: update kotlin version handling in android (#3436)

* update kotlin version handling in android build scripts for CI compatibility

* Fix Kotlin version format in workflow file

* Update

* Update

* Update

* Remove CI override comment for Kotlin language version

Removed comment about allowing CI to override Kotlin language version.

* release: 9.10.0

* Update Xcode version to 16.4 in workflow (#3452)

* fix(ci): failing package-analysis (#3453)

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Fix analyze

* Refactor Pana score check logic in analyze.yml

* chore: ignore local Claude settings (#3462)

Add .claude/settings.local.json to .gitignore to prevent committing
local Claude Code configuration.

* chore: update packages/flutter/scripts/update-android.sh to 8.30.0 (#3451)

Co-authored-by: GitHub <noreply@github.com>

* feat: trace connected metrics (#3450)

Adds trace connected metrics feature to Dart

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* refactor(log): make implementation consistent with metrics and span-first (#3463)

Make log implementation consistent with metrics and span-first

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>

* build(deps): bump actions/setup-java from 4 to 5 (#3461)

Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat(flutter): Add captureNativeFailedRequests option for iOS/macOS (#3472)

Add a new `captureNativeFailedRequests` option to control native HTTP
failed request capturing independently from `captureFailedRequests`.

This separation allows users to:
- Keep Dart-side failed request capturing enabled while disabling native
- Or vice versa, based on their needs

For backwards compatibility, `captureNativeFailedRequests` defaults to
`null`, which falls back to the value of `captureFailedRequests`. This
ensures existing users who set `captureFailedRequests = false` will
still have native capturing disabled as expected.

* release: 9.11.0-beta.1

* chore: update GitHub Actions workflows to use updater v3 (#3468)

* chore: update GitHub Actions workflows to use new updater version

Refactor the update-deps.yml workflow to utilize the latest version of the updater action, improving the structure and permissions for dependency updates across Android, Cocoa, JavaScript, Native, and Symbol Collector jobs.

* chore: add pull request trigger for update-deps.yml workflow

Include a pull request trigger in the update-deps.yml workflow for testing purposes, while maintaining existing push configurations.

* chore: update update-deps.yml to use ssh-key instead of api-token

Refactor the update-deps.yml workflow to replace the api-token with ssh-key for Android, Cocoa, JavaScript, Native, and Symbol Collector jobs, enhancing security and access management.

* Update

* Fix cocoa

* Fix formatting in update-deps.yml permissions section

* Modify update-deps workflow triggers

Removed pull_request trigger from update-deps workflow.

* Fix cocoa

* Update

* Update

* Disable wasm runner for now (#3478)

* ci(testflight): Update to Xcode 26.2 (#3479)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* ref(dart): Remove unused beforeMetricCallback (#3484)

Remove dead code that was never used in the codebase. The
BeforeMetricCallback typedef and beforeMetricCallback field
in SentryOptions had no references anywhere in the SDK.

Co-authored-by: Claude <noreply@anthropic.com>

* ref(tracing-instrumentation): Introduce internal instrumentation abstraction for packages (#3488)

* feat(tracing): Introduce internal instrumentation API for Sentry

- Added `InstrumentationSpan` and `LegacyInstrumentationSpan` classes to provide a backend-agnostic abstraction for tracing.
- Implemented `InstrumentationSpanFactory` for creating spans, allowing for future flexibility in span implementations.
- Enhanced `SentryOptions` to include a `spanFactory` for custom span creation.
- Updated various components to utilize the new instrumentation API, including `SentryInstrumentation` and `TransactionInstrumentation`.
- Refactored existing database executor and batch classes to support the new instrumentation spans.

This update improves the tracing capabilities and prepares the codebase for future enhancements in span management.

* refactor(tracing): Simplify transaction instrumentation documentation

- Removed outdated comments and example usage from the `TransactionInstrumentation` class.
- Clarified the behavior of transaction methods by streamlining the documentation.
- Enhanced code readability and maintainability by focusing on essential information.

This update improves the clarity of the transaction instrumentation API, making it easier for developers to understand its usage.

* Update

* Update

* Update

* Update

* Update

* refactor(tracing): Improve transaction stack management in Sentry instrumentation

- Ensured that the transaction stack maintains nesting invariants by always pushing a null value when no parent exists.
- Simplified the logic for adding and removing spans from the stack, enhancing clarity and reducing potential errors.
- Removed redundant comments and streamlined the handling of null spans in transaction methods.

This update enhances the robustness of the Sentry tracing implementation, making it more reliable during transaction execution.

* Remove unnecessary hint

* Fix review issues

* Fix review issues

* Fix review issues

* Fix review issues

* Remove unnecessary files

* Naming

* Naming

* Analyzer

* Naming

* Add test

* Update

* Change finish call to unawaited in error handling

* Add async import to sentry_span_helper.dart

* Update

* ref(tracing-instrumentation): migrate hive, isar, file, supabase and link (#3489)

* feat(hive): add internal logger for sentry_hive package

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(hive): migrate SentrySpanHelper to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()
- Add proper null checks with warning logs
- Maintain both async and sync wrapper methods

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(hive): update classes to use new SentrySpanHelper constructor

- Pass Hub directly to SentrySpanHelper constructor
- Remove setHub() method calls
- Update tests to use constructor parameter

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(file): migrate to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()
- Maintain both async and sync wrapper methods

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(supabase): migrate to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()
- Return InstrumentationSpan from _createSpan helper

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(link): migrate SentryTracingLink to InstrumentationSpan

- Use InstrumentationSpanFactory for child span creation
- Keep legacy API for transaction creation (when shouldStartTransaction=true)
- Wrap transactions in LegacyInstrumentationSpan for unified interface

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(link): migrate SentryRequestSerializer to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(link): migrate SentryResponseParser to InstrumentationSpan

- Use InstrumentationSpanFactory instead of hub.getSpan()?.startChild()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update

* Update

* Update

* Update

* Update

* Update

* feat(supabase): add internal logger and update dependencies

- Introduced an internal logger using Sentry for better tracing.
- Added 'meta' package as a dependency in pubspec.yaml.
- Updated Sentry tracing logic to utilize the new internal logger for warnings.

* Update

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* ref(dart): instrumentation span for http dio (#3493)

* ref(tracing-instrumentation): migrate http and dio to instrumentation span

Migrate TracingClient (http package) and TracingClientAdapter (dio package)
to use the new InstrumentationSpanFactory pattern, consistent with the
recent migration of hive, isar, file, supabase, and link packages.

Changes:
- Add InstrumentationSpanFactory field to TracingClient and TracingClientAdapter
- Replace hub.getSpan()?.startChild() with spanFactory.getSpan()/createSpan()
- Extract underlying ISentrySpan via LegacyInstrumentationSpan.spanReference
  for tracing headers (sentry-trace, baggage, traceparent)
- Add applyToInstrumentationSpan() method to UrlDetails for URL data

All existing tests pass without modification, preserving backward compatibility.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* ref(dio): migrate SentryTransformer to instrumentation span

Complete the migration of dio package to use InstrumentationSpanFactory
by updating SentryTransformer's transformRequest and transformResponse
methods.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* ref(tracing): rename applyToInstrumentationSpan to applyToSpan

Remove the old ISentrySpan-based applyToSpan method and rename
applyToInstrumentationSpan to applyToSpan since all callers now use
InstrumentationSpan.

Update url_details_test.dart to use MockInstrumentationSpan.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore(tests): add mock_span import to lifecycle tests

Added the mock_span import to both sentry_client_lifecycle_test.dart and sentry_client_sdk_lifecycle_test.dart to facilitate testing with spans.

* feat(tests): add MockSpan class for testing Sentry spans

Introduced a new MockSpan class in mock_span.dart to facilitate testing with SentrySpan, providing a mock implementation for use in unit tests.

* ref(tracing): remove commented code for extracting ISentrySpan

Removed commented-out code related to extracting ISentrySpan for tracing headers in TracingClient and TracingClientAdapter, streamlining the codebase.

* ref(tracing): enhance tracing header handling with InstrumentationSpan

Updated TracingClient and TracingClientAdapter to utilize the new addTracingHeadersFromInstrumentationSpan method for adding tracing headers. This change simplifies the code by directly passing the InstrumentationSpan, improving clarity and maintainability. Additionally, new methods for converting spans to Sentry trace and baggage headers were added to the InstrumentationSpan interface.

* ref(tracing): rename addTracingHeadersFromInstrumentationSpan to addTracingHeadersToHttpHeader

Updated the TracingClient and TracingClientAdapter to use the renamed addTracingHeadersToHttpHeader method for adding tracing headers. This change improves code clarity and consistency across the codebase by standardizing the method name. Adjusted related tests to accommodate the new method signature.

* ref(baggage): remove logging callback from SentryBaggage

Refactored SentryBaggage to eliminate the logging callback, replacing it with an internal logger for improved logging consistency. Updated related methods and tests to reflect this change, enhancing code clarity and maintainability.

* Update

* ref(baggage): simplify toBaggage method by removing logging callback

Refactored the toBaggage method in SentryTraceContextHeader to eliminate the logging callback, enhancing code clarity. Updated the SentryTracer to reflect this change, ensuring consistency across the codebase.

* Update

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* Update CHANGELOG

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* build(deps): bump actions/checkout from 5 to 6 (#3460)

Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.278.0 to 1.286.0 (#3482)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.278.0 to 1.286.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](https://github.com/ruby/setup-ruby/compare/4c24fa5ec04b2e79eb40571b1cee2a0d2b705771...90be1154f987f4dc0fe0dd0feedac9e473aa4ba8)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.286.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(dart): Catch client exceptions in HttpTransport.send (#3490)

* fix(dart): Catch client exceptions in HttpTransport.send

Prevents unhandled exceptions like `ClientException: Connection closed
before full header was received` from crashing the host application.
The error is logged via internalLogger and only rethrown in
automatedTestMode.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update

* Update CHANGELOG

* Update

* Update

* Implement lost event recording in HttpTransport for network errors

Enhance the HttpTransport class to record lost events when a network error occurs during envelope transmission. This includes logging discarded events for both Sentry transactions and spans. Add corresponding tests to verify the functionality when client exceptions are thrown.

* Refactor lost event handling in HttpTransport and TransportUtils

Consolidate lost event recording logic into TransportUtils for better reusability. Update HttpTransport to utilize the new method for recording lost events on network errors. Enhance logging for response statuses, including rate limit handling. Remove redundant lost event recording method from HttpTransport.

* Update

* Update

* Rename to recordLostEvents

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* release: 9.11.0-beta.2

* chore(release): prepare `9.11.0` changelog (#3498)

* Update CHANGELOG

* Revise CHANGELOG for enhancements and dependencies

Updated CHANGELOG to reflect enhancements and dependency bumps.

* release: 9.11.0

* chore: update packages/flutter/scripts/update-native.sh to 0.12.5 (#3481)

Co-authored-by: GitHub <noreply@github.com>

* chore: update packages/flutter/scripts/update-android.sh to 8.31.0 (#3476)

Co-authored-by: GitHub <noreply@github.com>

* release: 9.12.0

* chore: update packages/flutter/scripts/update-js.sh to 10.38.0 (#3474)

Co-authored-by: GitHub <noreply@github.com>

* chore(bugbot): Update `BUGBOT.md` to check the PR description when reviewing dependency updates (#3509)

* Update BUGBOT.md

* chore(deps): update Android SDK to v8.32.0 (#3506)

* chore: update packages/flutter/scripts/update-android.sh to 8.32.0

* Add spotlight as debugImplementation

* Update analyze

* Updat

* Update android example sdk targets

* Update

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* feat(flutter): Synchronize `traceId` to native SDKs (#3507)

* feat: Synchronize PropagationContext to native SDKs (#3406)

Native crashes/errors on Android and iOS carry their own independently-
generated traceId, disconnecting them from the Dart-side trace. This
wires up the existing native setTrace APIs so the Dart PropagationContext
is synced to native on init and whenever generateNewTrace() is called.

- Add OnTraceReset lifecycle event dispatched from Hub.generateNewTrace()
- Add NativeTraceSyncIntegration that subscribes to OnTraceReset and
  calls the platform-specific native setTrace API
- Implement setTrace on all platform bindings (JNI for Android, method
  channel for Cocoa, no-op for C/Web)
- Add supportsTraceSync capability flag to SentryNativeBinding
- Disable native auto trace ID generation on Android so Flutter is
  the single source of truth
- Add setTrace handler in iOS SentryFlutterPlugin.swift
- Register NativeTraceSyncIntegration in default integrations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix build

* Update CHANGELOG

* Update

* Update

* Update

* Update

* Fix mocks

* Update

* Update doc

* Fix changelog

* Update

* Review

* Update

* Bubble up error from native flutter plugin in swift

* Move enableNativeTraceSync from dart to flutter options

* Fix duplicate result

* Improve documentation

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* chore(deps): update Native SDK to v0.12.6 (#3502)

* chore: update packages/flutter/scripts/update-native.sh to 0.12.6

* Update gitignore

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* internal(flutter): Add SDK features metadata for SPM vs CocoaPods tracking (#3508)

* feat(dart): Add `features` list to `SdkVersion` metadata

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(flutter): Merge native SDK features into event metadata

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(flutter): Report SPM vs CocoaPods build type as SDK feature on iOS

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Review

* Remove redundant comments

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* release: 9.13.0

* ci(release): Switch from action-prepare-release to Craft (#3440)

* ci(release): Switch from action-prepare-release to Craft

This PR migrates from the deprecated action-prepare-release to the new
Craft GitHub Actions (reusable workflow or composite action).

Changes:
- Migrate .github/workflows/release.yml to Craft reusable workflow

* ci(release): Restore GitHub App token authentication

The previous migration incorrectly removed the GitHub App token
authentication step. This commit restores it by switching to the
composite action pattern which preserves the auth flow.

* fix: Pin actions to SHA and add permissions blocks

* fix: Use correct action version SHAs (restore original versions)

* fix: Use correct action version SHAs (restore original versions)

* fix: Clean up action version comments

* Update Craft SHA to 1c58bfd57bfd6a967b6f3fc92bead2c42ee698ce

* Add explicit permissions block to analyze.yml

* Add explicit permissions block to dart.yml

* Add explicit permissions block to dio.yml

* Add explicit permissions block to drift.yml

* Add explicit permissions block to e2e_dart.yml

* Add explicit permissions block to file.yml

* Add explicit permissions block to firebase_remote_config.yml

* Add explicit permissions block to flutter.yml

* Add explicit permissions block to flutter_test.yml

* Add explicit permissions block to format-and-fix.yml

* Add explicit permissions block to hive.yml

* Add explicit permissions block to isar.yml

* Add explicit permissions block to link.yml

* Add explicit permissions block to logging.yml

* Add explicit permissions block to metrics.yml

* Add explicit permissions block to min_version_test.yml

* Add explicit permissions block to sqflite.yml

* Add explicit permissions block to supabase.yml

* Add explicit permissions block to testflight.yml

* Add explicit permissions block to web-example-ghpages.yml

* Revert permissions changes to analyze.yml

* Revert permissions changes to dart.yml

* Revert permissions changes to dio.yml

* Revert permissions changes to drift.yml

* Revert permissions changes to e2e_dart.yml

* Revert permissions changes to file.yml

* Revert permissions changes to firebase_remote_config.yml

* Revert permissions changes to flutter.yml

* Revert permissions changes to flutter_test.yml

* Revert permissions changes to format-and-fix.yml

* Revert permissions changes to hive.yml

* Revert permissions changes to isar.yml

* Revert permissions changes to link.yml

* Revert permissions changes to logging.yml

* Revert permissions changes to metrics.yml

* Revert permissions changes to min_version_test.yml

* Revert permissions changes to sqflite.yml

* Revert permissions changes to supabase.yml

* Revert permissions changes to testflight.yml

* Revert permissions changes to web-example-ghpages.yml

* fix: revert extraneous changes to non-release workflow files

* fix: clean up release.yml formatting and version comments

* build(craft): Update Craft action to c6e2f04

* chore: add unlabeled trigger to changelog-preview

* build(deps): bump faraday from 1.10.4 to 1.10.5 in /metrics (#3511)

Bumps [faraday](https://github.com/lostisland/faraday) from 1.10.4 to 1.10.5.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v1.10.4...v1.10.5)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 1.10.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update packages/flutter/scripts/update-native.sh to 0.12.7 (#3514)

Co-authored-by: GitHub <noreply@github.com>

* chore: update metrics/flutter.properties to 3.41.1 (#3486)

Co-authored-by: GitHub <noreply@github.com>

* build(deps): bump getsentry/craft from 2.19.0 to 2.21.4 (#3518)

Bumps [getsentry/craft](https://github.com/getsentry/craft) from 2.19.0 to 2.21.4.
- [Release notes](https://github.com/getsentry/craft/releases)
- [Changelog](https://github.com/getsentry/craft/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/craft/compare/c6e2f04939b6ee67030588afbb5af76b127d8203...906009a1b771956757e521555b561379307eb667)

---
updated-dependencies:
- dependency-name: getsentry/craft
  dependency-version: 2.21.4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.286.0 to 1.288.0 (#3519)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.286.0 to 1.288.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](https://github.com/ruby/setup-ruby/compare/90be1154f987f4dc0fe0dd0feedac9e473aa4ba8...09a7688d3b55cf0e976497ff046b70949eeaccfd)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.288.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update packages/flutter/scripts/update-native.sh to 0.12.8 (#3520)

Co-authored-by: GitHub <noreply@github.com>

* fix(dart): Dont guard user behind `sendDefaultPii` (#3524)

* Dont guard user attributes with sendDEfaultPii

* Update sample

* Update CHANGELOG

* Update comments

* Add enableTombstone option for native crash reporting on Android (#3526)

* feat(flutter): Add enableTombstone option for improved native crash reporting

Add `enableTombstone` option to SentryFlutterOptions that enables tombstone-based
native crash reporting on Android 12+ (API level 30+).

When enabled, uses Android's `ApplicationExitInfo.REASON_CRASH_NATIVE` to capture
native crashes with more detailed thread information.

The option is disabled by default.

Slack thread: https://sentry.slack.com/archives/CP4UUUF1S/p1771404252312029?thread_ts=1769055443.846779&cid=CP4UUUF1S

https://claude.ai/code/session_016kkosYW3XG2rhHafEfspqA

* Apply suggestion from @romtsn

* Add integration test

* Enable tombstone option in integration test

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo.buenaflor@sentry.io>

* chore(deps): update Android SDK to v8.33.0 (#3529)

* chore: update packages/flutter/scripts/update-android.sh to 8.33.0

* Update jni call when creating bitmap

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* internal(web): add sdk name for native js errors (#3525)

* Add beforeSend to change sdk name in JS

* Add beforeSend to js

* Review

* Cleanup

* Update factory for creating JsSdkInfo

* release: 9.14.0

* fix(flutter): Stop re-triggering hitTest in SentryUserInteractionWidget on pointerUp (#3540)

* build(deps): bump actions/create-github-app-token from 2.2.1 to 3.0.0 (#3562)

Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.2.1 to 3.0.0.
- [Release notes](https://github.com/actions/create-github-app-token/releases)
- [Commits](https://github.com/actions/create-github-app-token/compare/29824e69f54612133e76f7eaac726eef6c875baf...f8d387b68d61c58ab83c6c016672934102569859)

---
updated-dependencies:
- dependency-name: actions/create-github-app-token
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump dorny/paths-filter from 3.0.2 to 4.0.1 (#3561)

Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from 3.0.2 to 4.0.1.
- [Release notes](https://github.com/dorny/paths-filter/releases)
- [Changelog](https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dorny/paths-filter/compare/de90cc6fb38fc0963ad72b210f1f284cd68cea36...fbd0ab8f3e69293af611ebaee6363fc25e6d187d)

---
updated-dependencies:
- dependency-name: dorny/paths-filter
  dependency-version: 4.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump getsentry/craft from 2.21.4 to 2.24.2 (#3559)

Bumps [getsentry/craft](https://github.com/getsentry/craft) from 2.21.4 to 2.24.2.
- [Release notes](https://github.com/getsentry/craft/releases)
- [Changelog](https://github.com/getsentry/craft/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/craft/compare/906009a1b771956757e521555b561379307eb667...78da70b88de5cf6245d5d7e3263a9e8952667dec)

---
updated-dependencies:
- dependency-name: getsentry/craft
  dependency-version: 2.24.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.288.0 to 1.293.0 (#3560)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.288.0 to 1.293.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](https://github.com/ruby/setup-ruby/compare/09a7688d3b55cf0e976497ff046b70949eeaccfd...dffb23f65a78bba8db45d387d5ea1bbd6be3ef18)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.293.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/upload-artifact from 6 to 7 (#3545)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update packages/flutter/scripts/update-android.sh to 8.35.0 (#3546)

Co-authored-by: GitHub <noreply@github.com>

* fix(sqflite): Implement SqfliteDatabaseExecutor to prevent TypeError on getVersion/setVersion (#3539)

* chore: update metrics/flutter.properties to 3.41.4 (#3533)

Co-authored-by: GitHub <noreply@github.com>

* chore: update packages/flutter/scripts/update-native.sh to 0.13.2 (#3535)

Co-authored-by: GitHub <noreply@github.com>

* fix(logs): Use seconds since the Unix epoch for `log.timestamp` (#3558)

We have incorrectly used `timestamp.toIso8601String()` and this was only accepted because the backend does lenient date/timestamp parsing.

On the native Android error it does lead to parsing issues though, as reported by a user.

* ci(deps): Pin Cocoa SDK auto-updates to 8.x.x (#3563)

* ci(deps): Pin Cocoa SDK auto-updates to 8.x.x

Restrict the dependency updater to only pick up Cocoa SDK 8.x.x
releases until the next major version (v10) is ready to be adopted.

Co-Authored-By: Claude <noreply@anthropic.com>

* Add pull request trigger to update-deps workflow

* Update update-deps.yml to remove pull_request trigger

Removed pull_request trigger from update-deps workflow.

---------

Co-authored-by: Claude <noreply@anthropic.com>

* chore: update packages/flutter/scripts/update-cocoa.sh to 8.58.0 (#3475)

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo.buenaflor@sentry.io>

* fix: Enable session replay on iOS 26+ with Xcode 26+ (#3571)

* fix(sentry_flutter): enable session replay in unreliable environments for iOS 26+

* fix(sentry_flutter): remove unnecessary blank line in SentryFlutter.swift

* chore: update packages/flutter/scripts/update-android.sh to 8.36.0 (#3569)

Co-authored-by: GitHub <noreply@github.com>

* release: 9.15.0

* chore(ci): update sdk app overhead workflow dependency (#3572)

* chore: Add error monitoring solution question to bug report template (#3553)

* chore: Add error monitoring solution question to bug report template

* Fix bug report template to include 'Yes' option

* Set default value for error monitoring question

Add default value for other error monitoring solution field

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo.buenaflor@sentry.io>

* build(deps): bump json in /packages/flutter/example/ios (#3576)

Bumps [json](https://github.com/ruby/json) from 2.16.0 to 2.17.1.2.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](https://github.com/ruby/json/compare/v2.16.0...v2.17.1.2)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.17.1.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: pin GitHub Actions to full-length commit SHAs (#3582)

* build(deps): bump getsentry/craft from 2.24.2 to 2.25.0 (#3580)

Bumps [getsentry/craft](https://github.com/getsentry/craft) from 2.24.2 to 2.25.0.
- [Release notes](https://github.com/getsentry/craft/releases)
- [Changelog](https://github.com/getsentry/craft/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/craft/compare/78da70b88de5cf6245d5d7e3263a9e8952667dec...f4889d04564e47311038ecb6b910fef6b6cf1363)

---
updated-dependencies:
- dependency-name: getsentry/craft
  dependency-version: 2.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update packages/flutter/scripts/update-android.sh to 8.37.0 (#3588)

Co-authored-by: GitHub <noreply@github.com>

* chore: update packages/flutter/scripts/update-native.sh to 0.13.3 (#3577)

Co-authored-by: GitHub <noreply@github.com>

* chore: update metrics/flutter.properties to 3.41.5 (#3575)

Co-authored-by: GitHub <noreply@github.com>

* ci: Automate JNI branch sync on release (#3593)

* ci: Automate JNI branch sync on release

Add a workflow that triggers on release published to automatically
sync the deps/jni-0.15.x branch. It merges the release tag,
regenerates JNI bindings via a safe fallback script, opens a PR,
and updates the version tracker table on issue #3373.

The safe-regenerate script tries the normal path first (flutter build
apk + jnigen). If that fails due to binding incompatibility, it falls
back to compiling only the Java/Kotlin plugin code via Gradle and
creating a stub libs.jar for jnigen — bypassing Dart compilation.

Refs GH-3373
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci: Use push trigger for version tracker and fix job conditions

Switch update-tracker from pull_request:closed to push trigger on
deps/jni-0.15.x so it fires on any merge (PR or direct push) and
correctly uses the merge commit SHA. Guard sync job with explicit
event_name == 'release' check to prevent it running on push events.

Refs GH-3373
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Update .github/workflows/sync-jni-branch.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* ci(sync-jni): Harden workflow security and scope permissions

Pass github.event.release.tag_name through env instead of inline
${{ }} interpolation to prevent script injection. Add tag format
validation. Move all context properties out of run blocks into env.

Scope permissions per-job: sync gets contents/pull-requests/issues
write, update-tracker gets only issues write.

Also read version from pubspec.yaml instead of parsing commit
messages, making version detection resilient to squash merges.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(ci): Create failure issue on merge conflicts in JNI sync

The merge step lacked continue-on-error, so merge conflicts halted
the workflow before the issue creation step could run. Now the merge
step allows continuation on failure, downstream steps are gated on
merge success, and the failure issue fires for either merge or
regeneration failures with a "Failed step" indicator.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ci(sync-jni): Remove update-tracker job and clean up triggers

Remove the update-tracker job and its push trigger since version
tracking on the issue is no longer needed. Restore safe concurrency
settings (cancel-in-progress: false) to prevent cancelling in-flight
syncs. Simplify job condition to just the prerelease check.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore(ci): Remove unused env vars from failure step

Remove REPO and REGENERATE_OUTCOME env vars that were declared but
never referenced in the run script.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* build(deps): bump json from 2.16.0 to 2.17.1.2 in /metrics (#3587)

Bumps [json](https://github.com/ruby/json) from 2.16.0 to 2.17.1.2.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](https://github.com/ruby/json/compare/v2.16.0...v2.17.1.2)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.17.1.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.293.0 to 1.295.0 (#3579)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.293.0 to 1.295.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](https://github.com/ruby/setup-ruby/compare/dffb23f65a78bba8db45d387d5ea1bbd6be3ef18...319994f95fa847cf3fb3cd3dbe89f6dcde9f178f)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-version: 1.295.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: update packages/flutter/scripts/update-android.sh to 8.37.1 (#3595)

Co-authored-by: GitHub <noreply@github.com>

* release: 9.16.0

* chore: Resolve all merge conflicts

Take release 9.16.0 version for all files except:
- packages/flutter/pubspec.yaml: keep jni: ^0.15.0
- packages/flutter/lib/src/native/java/binding.dart: keep JNI branch version

* Update code changes

* ci: Add JNI version smoke test for deps/jni-0.15.x PRs

* ci: Bump min version test to Flutter 3.35.6 for jni ^0.15.0

* chore: Bump flutter min version to 3.35.6 and document sync rules

jni ^0.15.0 requires Flutter >=3.35.6, so the pubspec constraint
must reflect this. Also add JNI branch sync instructions to AGENTS.md
so agents know how to resolve merge conflicts correctly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(ci): Bump min_version_test Dart SDK to 3.9.0 for Flutter 3.35.6

* docs: Add Dart SDK constraint to AGENTS.md sync rules

* fix(ci): Use range constraints for SDK versions in min_version_test

* fix(ci): Pin exact SDK versions in min_version_test

* ci: Disable min_version_test on JNI branch

The min_version_test project scaffolding is incompatible with Flutter
3.35.6 required by jni ^0.15.0. The jni-version-check workflow guards
the dependency constraint instead.

* chore: Revert min_version_test pubspec to release values

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: getsentry-bot <bot@sentry.io>
Co-authored-by: getsentry-bot <bot@getsentry.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Philipp Hofmann <philipp.hofmann@sentry.io>
Co-authored-by: Burak Yigit Kaya <ben@byk.im>
Co-authored-by: Roman Zavarnitsyn <rom4ek93@gmail.com>
Co-authored-by: buenaflor <23364143+buenaflor@users.noreply.github.com>
Co-authored-by: Denis Andrašec <denrase@gmail.com>
Co-authored-by: Markus Hintersteiner <markus.hintersteiner@sentry.io>
Co-authored-by: joshuarli <joshuarli98@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants