Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
8ffd1de
ref(core): Remove provider-specific AI span attributes in favor of `g…
nicohrubec Mar 31, 2026
66a7b6d
Merge branch 'develop' into cg-sync-master
chargome Mar 31, 2026
354ac78
Merge pull request #20054 from getsentry/cg-sync-master-2
chargome Mar 31, 2026
4b72b41
feat(core, node): portable Express integration (#19928)
isaacs Mar 31, 2026
5b16a5c
ref(core): Extract shared endStreamSpan for AI integrations (#20021)
nicohrubec Apr 1, 2026
b29d628
feat(deno): Add `denoRuntimeMetricsIntegration` (#20023)
chargome Apr 1, 2026
6d95e80
chore(deps): Bump @xmldom/xmldom from 0.8.3 to 0.8.12 (#20066)
dependabot[bot] Apr 1, 2026
b75e657
chore: Remove unused `tsconfig-template` folder (#20067)
mydea Apr 1, 2026
ad93ced
fix(cloudflare): Ensure every request instruments functions (#20044)
JPeer264 Apr 1, 2026
e090ccc
fix(gatsby): Fix errorHandler signature to match bundler-plugin-core …
JPeer264 Apr 1, 2026
7d40248
chore: Update validate-pr workflow (#20072)
stephanie-anderson Apr 1, 2026
6a397a3
fix(aws-serverless): Add timeout to _endSpan forceFlush to prevent La…
logaretm Apr 1, 2026
d0bbc1a
ref(core): Simplify addResponseAttributes in openai integration (#20013)
nicohrubec Apr 2, 2026
ff0cee1
ref(core): Unify .do* span ops to gen_ai.generate_content (#20074)
nicohrubec Apr 2, 2026
4816963
ref(core): Do not emit spans for chats.create in google-genai (#19990)
nicohrubec Apr 2, 2026
68c02d1
chore(deps): Bump lodash.template from 4.5.0 to 4.18.1 (#20085)
dependabot[bot] Apr 2, 2026
57e6d4c
ci(deps): Bump getsentry/craft/.github/workflows/changelog-preview.ym…
dependabot[bot] Apr 2, 2026
8487cd5
ci(deps): Bump `mshick/add-pr-comment` (#20078)
dependabot[bot] Apr 2, 2026
7886e12
feat(core): Support embeddings in langchain (#20017)
nicohrubec Apr 2, 2026
ae36796
tests(node): Add node integration tests for Vercel `ToolLoopAgent` (#…
nicohrubec Apr 2, 2026
4be2e67
feat(node, bun): Enforce minimum collection interval in runtime metri…
chargome Apr 2, 2026
893539d
fix(core): set span.status to error when MCP tool returns JSON-RPC er…
betegon Apr 6, 2026
750d242
test(nuxt): Make Nuxt 5 (nightly) E2E optional (#20113)
s1gr1d Apr 7, 2026
0f35883
feat(core): support registerTool/registerResource/registerPrompt in M…
betegon Apr 7, 2026
8804c4e
feat(cloudflare): Support basic WorkerEntrypoint (#19884)
JPeer264 Apr 7, 2026
cc327ae
fix(core): Replace regex with string check in stack parser to prevent…
chargome Apr 7, 2026
3c55832
chore(oxlint): Add typeawareness into oxlintrc (#20075)
JPeer264 Apr 8, 2026
2f5596b
feat(react-router): Export `sentryOnError` (#20120)
chargome Apr 8, 2026
33f65c3
feat(deps): Bump bundler plugins to `5.2.0` (#20122)
chargome Apr 8, 2026
7c19325
fix(core): Only attach `flags` context to error events (#20116)
Lms24 Apr 8, 2026
8c86faf
fix(angular): Bump TypeScript to ~6.0.0 in angular-21 E2E test app (#…
andreiborza Apr 9, 2026
9aaa191
feat(deps): bump @hapi/content from 6.0.0 to 6.0.1 (#20102)
dependabot[bot] Apr 9, 2026
4c14d78
feat(aws-serverless): Add lambda extension to npm package (#20133)
andreiborza Apr 9, 2026
7499415
feat(core): Add span v2 and envelope type definitions (#19100)
Lms24 Feb 2, 2026
64955ba
feat(core): Add `traceLifecycle` option and `beforeSendSpan` compatib…
Lms24 Feb 4, 2026
940f40c
feat(core): Add `StreamedSpanEnvelope` creation function (#19153)
Lms24 Feb 4, 2026
945af37
feat(core): Add span serialization utilities (#19140)
Lms24 Feb 4, 2026
fe4ad88
feat(core): Add `captureSpan` pipeline and helpers (#19197)
Lms24 Feb 6, 2026
d1be728
feat(core): Add `SpanBuffer` implementation (#19204)
Lms24 Feb 9, 2026
1093544
feat(browser): Add `spanStreamingIntegration` (#19218)
Lms24 Feb 19, 2026
e931ac0
feat(core): Add weight-based flushing to span buffer (#19579)
Lms24 Mar 2, 2026
999b989
test(browser): Add span streaming integration tests (#19581)
Lms24 Mar 6, 2026
91abafd
fix(browser): Apply Http timing attributes to streamed `http.client` …
Lms24 Mar 9, 2026
77357c7
fix(core): Replace global interval with trace-specific interval based…
Lms24 Mar 9, 2026
51fc6d1
feat(node-core): Add POtel server-side span streaming implementation …
Lms24 Mar 12, 2026
7bd8449
test(node,node-core): Add span streaming integration tests (#19806)
Lms24 Mar 18, 2026
b6f7b86
feat(core): Apply `ignoreSpans` to streamed spans (#19934)
Lms24 Apr 2, 2026
c273167
fix(core): Fix `withStreamedSpan` typing error add missing exports (#…
Lms24 Apr 9, 2026
1cc3dd0
chore(deps-dev): Bump effect from 3.20.0 to 3.21.0 (#19999)
dependabot[bot] Apr 9, 2026
2897297
feat(nuxt): Exclude tracing meta tags on cached pages in Nuxt 5 (#20168)
s1gr1d Apr 9, 2026
d1ee40f
meta(changelog): Update changelog for 10.48.0
Lms24 Apr 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ jobs:
pull-requests: write
steps:
- name: PR is opened against master
uses: mshick/add-pr-comment@dd126dd8c253650d181ad9538d8b4fa218fc31e8
uses: mshick/add-pr-comment@e7516d74559b5514092f5b096ed29a629a1237c6
if: ${{ github.base_ref == 'master' && !startsWith(github.head_ref, 'prepare-release/') }}
with:
message: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/changelog-preview.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ permissions:

jobs:
changelog-preview:
uses: getsentry/craft/.github/workflows/changelog-preview.yml@2.24.1
uses: getsentry/craft/.github/workflows/changelog-preview.yml@2.25.2
secrets: inherit
2 changes: 1 addition & 1 deletion .github/workflows/validate-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
permissions:
pull-requests: write
steps:
- uses: getsentry/github-workflows/validate-pr@0b52fc6a867b744dcbdf5d25c18bc8d1c95710e1
- uses: getsentry/github-workflows/validate-pr@71588ddf95134f804e82c5970a8098588e2eaecd
with:
app-id: ${{ vars.SDK_MAINTAINER_BOT_APP_ID }}
private-key: ${{ secrets.SDK_MAINTAINER_BOT_PRIVATE_KEY }}
139 changes: 139 additions & 0 deletions .oxlintrc.base.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["typescript", "import", "jsdoc", "vitest"],
"rules": {
"no-unused-vars": [
"warn",
{ "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_" }
],

// === Base rules from eslint-config-sdk/base.js ===
"no-console": "error",
"no-alert": "error",
"no-param-reassign": "error",
"prefer-template": "error",
"no-bitwise": "error",
"complexity": ["error", { "max": 33 }],
"no-unused-expressions": ["error", { "allowShortCircuit": true }],
"guard-for-in": "error",
"array-callback-return": ["error", { "allowImplicit": true }],
"quotes": ["error", "single", { "avoidEscape": true }],
"no-return-await": "error",
"max-lines": ["error", { "max": 300, "skipComments": true, "skipBlankLines": true }],

// === Import rules ===
"import/namespace": "off",
"import/no-unresolved": "off",

// === Rules turned off (not enforced in ESLint or causing false positives) ===
"no-control-regex": "off",
"jsdoc/check-tag-names": "off",
"jsdoc/require-yields": "off",
"no-useless-rename": "off",
"no-constant-binary-expression": "off",
"vitest/hoisted-apis-on-top": "off",
"vitest/no-conditional-tests": "off",
"no-unsafe-optional-chaining": "off",
"no-eval": "off",
"no-import-assign": "off",
"typescript/no-duplicate-type-constituents": "off"
},
"overrides": [
{
"files": ["**/*.ts", "**/*.tsx", "**/*.d.ts"],
"rules": {
"typescript/ban-ts-comment": "error",
"typescript/consistent-type-imports": "error",
"typescript/no-unnecessary-type-assertion": "error",
"typescript/prefer-for-of": "error",
"typescript/no-floating-promises": ["error", { "ignoreVoid": true }],
"typescript/no-dynamic-delete": "error",
"typescript/no-unsafe-member-access": "error",
"typescript/unbound-method": "error",
"typescript/no-explicit-any": "error",
"typescript/no-empty-function": "off",
"typescript/prefer-optional-chain": ["error"],
"typescript/no-redundant-type-constituents": "off",
"typescript/restrict-template-expressions": "off",
"typescript/await-thenable": "warn",
"typescript/no-base-to-string": "off"
}
},
{
"files": ["**/*.js", "**/*.mjs", "**/*.cjs"],
"rules": {
"typescript/ban-ts-comment": "off",
"typescript/consistent-type-imports": "off",
"typescript/prefer-optional-chain": "off",
"typescript/no-unnecessary-type-assertion": "off",
"typescript/prefer-for-of": "off",
"typescript/no-floating-promises": "off",
"typescript/no-dynamic-delete": "off",
"typescript/no-unsafe-member-access": "off",
"typescript/unbound-method": "off",
"typescript/no-explicit-any": "off"
}
},
{
"files": [
"**/*.test.ts",
"**/*.test.tsx",
"**/*.test.js",
"**/*.test.jsx",
"**/test/**",
"**/tests/**",
"**/suites/**",
"**/loader-suites/**"
],
"rules": {
"typescript/explicit-function-return-type": "off",
"no-unused-expressions": "off",
"typescript/no-unused-expressions": "off",
"typescript/no-unnecessary-type-assertion": "off",
"typescript/no-unsafe-member-access": "off",
"typescript/no-explicit-any": "off",
"typescript/no-non-null-assertion": "off",
"typescript/no-floating-promises": "off",
"typescript/unbound-method": "off",
"max-lines": "off",
"complexity": "off",
"typescript/prefer-optional-chain": "off",
"typescript/no-misused-spread": "off",
"typescript/require-array-sort-compare": "off",
"typescript/no-base-to-string": "off",
"typescript/await-thenable": "off"
}
},
{
"files": ["*.tsx"],
"rules": {
"jsdoc/require-jsdoc": "off"
}
},
{
"files": ["*.config.js", "*.config.mjs", "*.config.ts", "vite.config.ts", ".size-limit.js"],
"rules": {
"no-console": "off",
"max-lines": "off"
}
},
{
"files": [
"**/scenarios/**",
"**/rollup-utils/**",
"**/bundle-analyzer-scenarios/**",
"**/bundle-analyzer-scenarios/*.cjs",
"**/bundle-analyzer-scenarios/*.js"
],
"rules": {
"no-console": "off"
}
},
{
"files": ["**/src/**"],
"rules": {
"no-restricted-globals": ["error", "window", "document", "location", "navigator"]
}
}
]
}
133 changes: 4 additions & 129 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["typescript", "import", "jsdoc", "vitest"],
"extends": ["./.oxlintrc.base.json"],
"options": {
"typeAware": true
},
"jsPlugins": [
{
"name": "sdk",
Expand All @@ -9,140 +12,12 @@
],
"categories": {},
"rules": {
"no-unused-vars": [
"warn",
{ "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "caughtErrorsIgnorePattern": "^_" }
],

// === Base rules from eslint-config-sdk/base.js ===
"no-console": "error",
"no-alert": "error",
"no-param-reassign": "error",
"prefer-template": "error",
"no-bitwise": "error",
"complexity": ["error", { "max": 33 }],
"no-unused-expressions": ["error", { "allowShortCircuit": true }],
"guard-for-in": "error",
"array-callback-return": ["error", { "allowImplicit": true }],
"quotes": ["error", "single", { "avoidEscape": true }],
"no-return-await": "error",
"max-lines": ["error", { "max": 300, "skipComments": true, "skipBlankLines": true }],

// === Import rules ===
"import/namespace": "off",
"import/no-unresolved": "off",

// === Rules turned off (not enforced in ESLint or causing false positives) ===
"no-control-regex": "off",
"jsdoc/check-tag-names": "off",
"jsdoc/require-yields": "off",
"no-useless-rename": "off",
"no-constant-binary-expression": "off",
"vitest/hoisted-apis-on-top": "off",
"vitest/no-conditional-tests": "off",
"no-unsafe-optional-chaining": "off",
"no-eval": "off",
"no-import-assign": "off",
"typescript/no-duplicate-type-constituents": "off",

// === Custom SDK rules (via JS plugin) ===
"sdk/no-eq-empty": "error"
},
"overrides": [
{
"files": ["**/*.ts", "**/*.tsx", "**/*.d.ts"],
"rules": {
"typescript/ban-ts-comment": "error",
"typescript/consistent-type-imports": "error",
"typescript/no-unnecessary-type-assertion": "error",
"typescript/prefer-for-of": "error",
"typescript/no-floating-promises": ["error", { "ignoreVoid": true }],
"typescript/no-dynamic-delete": "error",
"typescript/no-unsafe-member-access": "error",
"typescript/unbound-method": "error",
"typescript/no-explicit-any": "error",
"typescript/no-empty-function": "off",
"typescript/prefer-optional-chain": ["error"],
"typescript/no-redundant-type-constituents": "off",
"typescript/restrict-template-expressions": "off",
"typescript/await-thenable": "warn",
"typescript/no-base-to-string": "off"
}
},
{
"files": ["**/*.js", "**/*.mjs", "**/*.cjs"],
"rules": {
"typescript/ban-ts-comment": "off",
"typescript/consistent-type-imports": "off",
"typescript/prefer-optional-chain": "off",
"typescript/no-unnecessary-type-assertion": "off",
"typescript/prefer-for-of": "off",
"typescript/no-floating-promises": "off",
"typescript/no-dynamic-delete": "off",
"typescript/no-unsafe-member-access": "off",
"typescript/unbound-method": "off",
"typescript/no-explicit-any": "off"
}
},
{
"files": [
"**/*.test.ts",
"**/*.test.tsx",
"**/*.test.js",
"**/*.test.jsx",
"**/test/**",
"**/tests/**",
"**/suites/**",
"**/loader-suites/**"
],
"rules": {
"typescript/explicit-function-return-type": "off",
"no-unused-expressions": "off",
"typescript/no-unused-expressions": "off",
"typescript/no-unnecessary-type-assertion": "off",
"typescript/no-unsafe-member-access": "off",
"typescript/no-explicit-any": "off",
"typescript/no-non-null-assertion": "off",
"typescript/no-floating-promises": "off",
"typescript/unbound-method": "off",
"max-lines": "off",
"complexity": "off",
"typescript/prefer-optional-chain": "off",
"typescript/no-misused-spread": "off",
"typescript/require-array-sort-compare": "off",
"typescript/no-base-to-string": "off",
"typescript/await-thenable": "off"
}
},
{
"files": ["*.tsx"],
"rules": {
"jsdoc/require-jsdoc": "off"
}
},
{
"files": ["*.config.js", "*.config.mjs", "*.config.ts", "vite.config.ts", ".size-limit.js"],
"rules": {
"no-console": "off",
"max-lines": "off"
}
},
{
"files": [
"**/scenarios/**",
"**/rollup-utils/**",
"**/bundle-analyzer-scenarios/**",
"**/bundle-analyzer-scenarios/*.cjs",
"**/bundle-analyzer-scenarios/*.js"
],
"rules": {
"no-console": "off"
}
},
{
"files": ["**/src/**"],
"rules": {
"no-restricted-globals": ["error", "window", "document", "location", "navigator"],
"sdk/no-class-field-initializers": "error",
"sdk/no-regexp-constructor": "error"
}
Expand Down
Loading
Loading