Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
f5e129f
fix(profiling): Cancel a pending stop when the profiler is started ag…
alwx Oct 27, 2026
07a8d1b
chore: Use team-mobile-android-sdk in CODEOWNERS (#6386)
sentry-junior[bot] Oct 27, 2026
f7af383
docs: Use dark-mode-aware Sentry logo in READMEs (#6397)
sentry-junior[bot] Oct 27, 2026
74f1684
chore(deps): bump androidx.recyclerview:recyclerview from 1.2.1 to 1.…
dependabot[bot] Oct 28, 2026
16a1cdd
chore(deps): bump com.abovevacant:epitaph from 0.1.1 to 0.2.0 (#6402)
dependabot[bot] Oct 28, 2026
d6d89a6
Move from bcv plugin to KGP api validation (#6362)
markushi Oct 28, 2026
2b4127d
chore: Remove unused Python and devenv tooling (#6387)
sentry-junior[bot] Oct 28, 2026
8eee5d1
build: Replace deprecated AGP BaseExtension in JdkTargetConvention (#…
runningcode Oct 28, 2026
4bf0a82
feat: add `Get/Set Environment` on `Scope` (#5772)
bitsandfoxes Oct 28, 2026
8c17e6d
test(spring-boot): [Sample Tests 41] Drop Spring Boot 2.4 to 2.6 from…
runningcode Oct 28, 2026
cf6da46
chore: update scripts/update-sentry-native-ndk.sh to 0.17.5 (#6409)
github-actions[bot] Oct 28, 2026
054686d
test: Fix follow-ups from the sample tests stack review (#6390)
romtsn Oct 28, 2026
21a827f
perf(replay): Use hash set for mask view class lookups (#6410)
sentry-junior[bot] Oct 29, 2026
bdfdc76
feat(apollo): Add a flag to stop attaching tracing headers in SentryA…
lazerg Oct 29, 2026
fe41a5e
chore(deps): bump org.quartz-scheduler:quartz from 2.3.0 to 2.5.2 (#6…
dependabot[bot] Oct 30, 2026
1527b14
chore(deps): bump getsentry/craft (#6420)
dependabot[bot] Oct 30, 2026
8937206
chore(deps): bump com.vanniktech.maven.publish from 0.30.0 to 0.37.0 …
dependabot[bot] Oct 30, 2026
6fe2c2e
fix(transport): Reject leaked eMudhra intermediate certificates (#6336)
runningcode Oct 30, 2026
639374e
chore(deps): bump the github-actions group with 2 updates (#6442)
dependabot[bot] Nov 2, 2026
5f109a6
chore(deps): bump com.gradle.develocity from 4.5.0 to 4.6.1 (#6441)
dependabot[bot] Nov 2, 2026
c608820
ci: Remove the dead submodules checkout option (#6447)
runningcode Nov 3, 2026
3eef688
ci: Remove Gradle configuration cache keys and workarounds (#6445)
runningcode Nov 3, 2026
084c3cb
fix(sample): Drop Nav3 Activity ui.load transactions when the toggle …
0xadam-brown Nov 3, 2026
04bb98f
fix(android): Skip dist fallback when release has no version code (#6…
sentry-junior[bot] Nov 3, 2026
e1eb533
fix(anr): Skip ANR profiling while a debugger is connected (#6389)
markushi Nov 4, 2026
43a5c14
ci(release): Bump craft to 3.9.0 and update config (#6456)
sentry-junior[bot] Nov 4, 2026
ff7e433
docs: Add a concurrency section to AGENTS.md (#6009)
runningcode Nov 4, 2026
a21cd09
fix(android): Nav3 support for ViewPager2 (JAVA-785) (#6398)
0xadam-brown Nov 4, 2026
d845ddb
fix(tracing): Stop idle spans from keeping idle transactions alive u…
0xadam-brown Nov 4, 2026
b05d954
chore(deps): bump io.coil-kt:coil-compose from 2.6.0 to 2.7.0 (#6451)
dependabot[bot] Nov 4, 2026
174d531
chore: update scripts/update-sentry-native-ndk.sh to 0.17.6 (#6460)
github-actions[bot] Nov 5, 2026
a29ab32
build: Assemble dist zips from a local Maven repo layout (#6467)
romtsn Nov 5, 2026
19813ee
release: 8.63.0
romtsn Nov 5, 2026
229b6d4
Merge commit '19813ee6c4ef0ad8934123d9c54d0e4aeffa842c'
sentry-release-bot[bot] Nov 5, 2026
fff7ea5
docs: Announce Java 11 and minSdk 26 requirements for SDK 9 (#6471)
runningcode Nov 5, 2026
9b8318e
ref(core): Add MonitorConfigUtils to convert schedules to monitor con…
wedamija Nov 5, 2026
573cf8f
feat(spring): Send monitor config from @Scheduled with @SentryCheckIn…
wedamija Nov 5, 2026
1aab810
feat(quartz): Send monitor config from the trigger with check-ins (#6…
wedamija Nov 5, 2026
0f3b350
chore(deps): bump com.launchdarkly:launchdarkly-java-server-sdk (#6461)
dependabot[bot] Nov 5, 2026
24363df
feat(spring): Add an option to monitor all @Scheduled methods in Spri…
wedamija Nov 5, 2026
f5e69b7
chore(deps): bump com.github.ben-manes.caffeine:jcache (#6463)
dependabot[bot] Nov 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/skills/create-java-pr/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Derive the branch name from the changes being made. Use `feat/`, `fix/`, `ref/`,
## Step 2: Format Code and Regenerate API Files

```bash
./gradlew spotlessApply apiDump
./gradlew spotlessApply updateKotlinAbi
```

This is **required** before every PR in this repo. It formats all Java/Kotlin code via Spotless and regenerates the `.api` binary compatibility files.
Expand Down
1 change: 1 addition & 0 deletions .claude/skills/test/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ Extract the module name and optional test class filter from the argument.
| Signal | Test Type |
|--------|-----------|
| Path contains `/src/integrationTest*/` or `/src/agentFixture/` | Integration test suite |
| Module name only, and the user asks for integration or end-to-end tests | Integration test suite: each `src/integrationTest*/` directory of the module |
| Path contains `sentry-samples/`, or module name starts with `sentry-samples-` | None: samples have no tests |
| Everything else | Unit test |

Expand Down
8 changes: 6 additions & 2 deletions .craft.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
minVersion: 0.29.3
changelogPolicy: auto
minVersion: 3.9.0
changelog:
policy: auto
preReleaseCommand: bash scripts/bump-version.sh
versioning:
policy: manual
targets:
- name: maven
includeNames: /^sentry.*$/
Expand Down
2 changes: 1 addition & 1 deletion .cursor/BUGBOT.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,6 @@ rule file in [`.cursor/rules/`](rules) for the area the diff touches (`api`, `op
## What NOT to flag

- Formatting and import order — Spotless owns it.
- Contents of generated `.api` files, beyond confirming `apiDump` was run.
- Contents of generated `.api` files, beyond confirming `updateKotlinAbi` was run.
- Conventional commit / PR title format, and missing changelog entries — CI and Danger check both.
- Speculative refactors or improvements unrelated to the diff.
4 changes: 2 additions & 2 deletions .cursor/rules/api.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ description: Public API surface, binary compatibility, and common classes to mod

## API Compatibility

Public API is tracked via `.api` files generated by the [Binary Compatibility Validator](https://github.com/Kotlin/binary-compatibility-validator) Gradle plugin. Each module has its own file at `<module>/api/<module>.api`.
Public API is tracked via `.api` files generated by the [ABI validation](https://kotlinlang.org/docs/gradle-binary-compatibility-validation.html) built into the Kotlin Gradle plugin. Each module has its own file at `<module>/api/<module>.api`.

- **Never edit `.api` files manually.** Run `./gradlew apiDump` to regenerate them.
- **Never edit `.api` files manually.** Run `./gradlew updateKotlinAbi` to regenerate them.
- `./gradlew check` validates current code against `.api` files and fails on unintended changes.
- `@ApiStatus.Internal` marks classes/methods as internal — they still appear in `.api` files but are not part of the public contract.
- `@ApiStatus.Experimental` marks API that may change in future versions.
Expand Down
15 changes: 12 additions & 3 deletions .cursor/rules/e2e_tests.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,18 @@ it. Gradle runs the two in parallel.

## Running them

- The `spring-boot-{2,3,4}-matrix.yml` workflows run the suites against each supported Spring Boot
version, by setting the version in `gradle/libs.versions.toml`. The suites aren't part of
`check`, so a new suite only runs on CI once it's added to its matrix.
- The `springBootMatrix` block in each Spring module's build file runs its suites on every version
of its Spring Boot line in `gradle/spring-boot-versions.json`, with a task per suite and version,
e.g. `integrationTestWebfluxBoot3_2_12`. The suites and the SDK compile once, against the
catalog's version; only the runtime classpath changes. `allIntegrationTestsBoot3_2_12` runs one
version's suites, `allIntegrationTestsBoot3` every version's.
- The `spring-boot-{2,3,4}-matrix.yml` workflows read the same file and run each version in its own
job, e.g. `./gradlew :sentry-spring-jakarta:allIntegrationTestsBoot3_2_12
:sentry-spring-boot-jakarta:allIntegrationTestsBoot3_2_12`. The suites aren't part of `check`, so
a new suite only runs on CI once it's added to its module's `springBootMatrix` block, and a new
module once it's added to its workflow.
- Suite code may only use APIs that exist in the oldest version of its line. Compiled against a
newer one, a missing API fails at runtime with `NoSuchMethodError` or `NoClassDefFoundError`.

## Gotchas

Expand Down
2 changes: 1 addition & 1 deletion .cursor/rules/options.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -112,4 +112,4 @@ When a feature has its own capture path (e.g. `captureLog`), the relevant classe
4. `ManifestMetadataReader.java` — Android manifest support (if Android-relevant)
5. `SentryAutoConfigurationTest.kt` — Spring Boot property binding tests (all three Spring Boot modules)
6. Tests for all of the above (`SentryOptionsTest`, `ExternalOptionsTest`, `ManifestMetadataReaderTest`)
7. Run `./gradlew apiDump` — the nested class and its methods appear in `sentry.api`
7. Run `./gradlew updateKotlinAbi` — the nested class and its methods appear in `sentry.api`
3 changes: 0 additions & 3 deletions .envrc

This file was deleted.

2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1 +1 @@
* @adinauer @romtsn @markushi @runningcode @0xadam-brown
* @getsentry/team-mobile-android-sdk @adinauer
7 changes: 1 addition & 6 deletions .github/workflows/agp-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,10 @@ jobs:
env:
VERSION_AGP: ${{ matrix.agp }}
APPLY_SENTRY_INTEGRATIONS: ${{ matrix.integrations }}
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}

steps:
- name: Checkout Repo
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: 'recursive'

- name: Setup Java Version
uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0
Expand All @@ -39,9 +36,7 @@ jobs:
java-version: '21'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Enable KVM
run: |
Expand Down
15 changes: 1 addition & 14 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,33 +15,20 @@ jobs:
name: Build Job ubuntu-latest
runs-on: ubuntu-latest

env:
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}

steps:
- name: Checkout Repo
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
submodules: 'recursive'

- name: Setup Java Version
uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0
with:
distribution: 'temurin'
java-version: '21'

# Workaround for https://github.com/gradle/actions/issues/21 to use config cache
- name: Cache buildSrc
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: buildSrc/build
key: build-logic-${{ hashFiles('buildSrc/src/**', 'buildSrc/build.gradle.kts','buildSrc/settings.gradle.kts') }}

- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Run Tests and Lint
run: make preMerge
Expand Down
9 changes: 1 addition & 8 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,9 @@ jobs:
name: Analyze
runs-on: macos-15

env:
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}

steps:
- name: Checkout Repo
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: 'recursive'

- name: Setup Java Version
uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0
Expand All @@ -31,9 +26,7 @@ jobs:
java-version: '21'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Initialize CodeQL
uses: github/codeql-action/init@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # pin@v2
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/enforce-license-compliance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Set up Java
uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0
Expand Down
6 changes: 1 addition & 5 deletions .github/workflows/format-code.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: 'recursive'

- name: set up JDK 17
uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0
Expand All @@ -19,9 +17,7 @@ jobs:
java-version: '21'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Format with spotlessApply
run: ./gradlew spotlessApply
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/generate-javadocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ jobs:
steps:
- name: Checkout 🛎️
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: 'recursive'

- name: set up JDK 17
uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0
Expand All @@ -20,7 +18,7 @@ jobs:
java-version: '21'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Generate Aggregate Javadocs
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/integration-tests-macrobenchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
java-version: '21'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Assemble target app and Macrobenchmark apk
if: env.SAUCE_USERNAME != null
Expand Down
14 changes: 1 addition & 13 deletions .github/workflows/integration-tests-size.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ jobs:
name: Build and Analyze SDK Size
runs-on: ubuntu-latest

env:
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}

steps:
- name: Checkout Repo
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand All @@ -28,17 +25,8 @@ jobs:
distribution: "temurin"
java-version: "21"

# Workaround for https://github.com/gradle/actions/issues/21 to use config cache
- name: Cache buildSrc
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: buildSrc/build
key: build-logic-${{ hashFiles('buildSrc/src/**', 'buildSrc/build.gradle.kts','buildSrc/settings.gradle.kts') }}

- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Size Analysis
run: ./gradlew :sentry-android-integration-tests:test-app-size:bundleRelease
Expand Down
7 changes: 1 addition & 6 deletions .github/workflows/integration-tests-ui-critical.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ jobs:
name: Build
runs-on: ubuntu-latest

env:
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}

steps:
- name: Checkout code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand All @@ -36,9 +33,7 @@ jobs:
java-version: '21'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Build debug APK
run: make assembleUiTestCriticalRelease
Expand Down
7 changes: 1 addition & 6 deletions .github/workflows/integration-tests-ui.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,10 @@ jobs:
env:
SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}

steps:
- name: Git checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: 'recursive'

- name: 'Set up Java: 17'
uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0
Expand All @@ -33,9 +30,7 @@ jobs:
java-version: '21'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

# Clean, build and release a test apk, but only if we will run the benchmark
- name: Make assembleUiTests
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/release-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ jobs:
steps:
- name: Checkout Repo
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: 'recursive'

- name: Setup Java Version
uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6.1.0
Expand All @@ -26,7 +24,7 @@ jobs:
java-version: '21'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6.4.0
uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6.4.1

- name: Build artifacts
run: make publish
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,8 @@ jobs:
token: ${{ steps.token.outputs.token }}
# Needs to be set, otherwise git describe --tags will fail with: No names found, cannot describe anything
fetch-depth: 0
submodules: 'recursive'
- name: Prepare release
uses: getsentry/craft@924b450ede4af30e30de4821a4b357d676c8df92 # v3
uses: getsentry/craft@2e29b0819113d334c15da3d8cac2138cb9dc111a # 3.9.0
env:
GITHUB_TOKEN: ${{ steps.token.outputs.token }}
with:
Expand Down
Loading
Loading