Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
22ae7bb
chore(deps): Bump follow-redirects from 1.16.0 to 1.16.2 (#26117)
chargome Nov 5, 2026
b691a57
chore(deps): Bump @modelcontextprotocol/server and client to 2.4.0 (#…
chargome Nov 5, 2026
a2dbec0
chore(deps): Bump vite to 6.4.5 and 7.3.7 (#26113)
chargome Nov 5, 2026
2ae2984
Merge pull request #26125 from getsentry/master
github-actions[bot] Nov 5, 2026
c054e7a
fix(server-utils): Mark AI streaming spans as errored when the stream…
RulaKhaled Nov 5, 2026
55d1967
fix(server-utils): Keep Bedrock InvokeModel spans for byte, non-JSON,…
andreiborza Nov 5, 2026
f5e5640
fix(esbuild): Avoid import-is-undefined warning for entries without a…
chargome Nov 5, 2026
89d33a9
fix(sveltekit): Read navigation untracked in the Kit 3 fetch wrapper …
chargome Nov 5, 2026
cd73114
fix(server-utils): End Bedrock stream spans with an error status on f…
andreiborza Nov 5, 2026
ccb6076
chore(deps): Bump nx from 22.7.10 to 24.0.3 (#26110)
chargome Nov 5, 2026
eb0e92e
fix(server-utils): Create an invoke_agent span for LangGraph stream()…
RulaKhaled Nov 5, 2026
e64d798
feat(server-utils): Always warn on Bun when no channel injection is d…
lazerg Nov 5, 2026
da4348d
chore: Add external contributor to CHANGELOG.md (#26152)
javascript-sdk-gitflow[bot] Nov 5, 2026
c7d2764
fix(node): Patch the mutable fs object in fsIntegration under native …
chargome Nov 5, 2026
9d0f9c3
feat(server-utils): Group the tool spans of an Anthropic session runn…
RulaKhaled Nov 5, 2026
f547f64
fix(node): Read syncBuiltinESMExports off the module namespace so Den…
logaretm Nov 5, 2026
16e3c0a
docs: Point Sentry Conventions links to conventions.sentry.dev (#26156)
cleptric Nov 6, 2026
4c9a4eb
test(node): collect TypeSafe spans across streamed envelopes (#26151)
nicohrubec Nov 6, 2026
8c2bc97
chore(deps): Bump body-parser to fix CVE-2026-111181 (#26164)
chargome Nov 6, 2026
587f05a
fix(core): Avoid stack overflow in FunctionToString on cyclic Proxy p…
chargome Nov 6, 2026
b368f76
fix(server-utils): Count Bedrock prompt-cache tokens as input tokens …
andreiborza Nov 6, 2026
593e565
fix(core): stop normalize() from throwing on symbol and null-prototyp…
rjmcgee53192 Nov 6, 2026
6ffdf10
ref(core): Set up log and metric flushing on first capture (#26146)
sentry-junior[bot] Nov 6, 2026
b07cc39
chore: Add external contributor to CHANGELOG.md (#26171)
javascript-sdk-gitflow[bot] Nov 6, 2026
d2c6f5b
fix(browser): Keep the current origin for `//` paths in `url.full` (#…
chargome Nov 6, 2026
b2f4254
fix(cloudflare): Capture NonRetryableError before the final workflow …
chargome Nov 6, 2026
a1a1de0
fix(server-utils): Read Bedrock Claude stream output tokens from mess…
andreiborza Nov 6, 2026
25d5da7
test(bundler-plugins): Increase timeout for webpack release-injection…
adityankale190895 Nov 6, 2026
5f9835b
chore: Add external contributor to CHANGELOG.md (#26179)
javascript-sdk-gitflow[bot] Nov 6, 2026
b0128dc
perf(ci): use ARM runners for builds and selected tests (#26106)
nicohrubec Nov 6, 2026
554124d
perf(ci): isolate SQL Server tests and use ARM integration runners (#…
nicohrubec Nov 6, 2026
ee84477
perf(ci): minimize Playwright system dependency installation (#26159)
nicohrubec Nov 6, 2026
18c69eb
perf(ci): (more) sharding of browser and runtime integration tests (#…
nicohrubec Nov 6, 2026
24aed1b
perf(ci): decouple ordinary E2E tests from the AWS Lambda layer build…
nicohrubec Nov 6, 2026
1652cfe
fix(server-utils): Read Bedrock Mistral and Cohere stream token count…
andreiborza Nov 6, 2026
0708a45
fix(server-utils): Record Bedrock finish reasons as a JSON string (#2…
andreiborza Nov 6, 2026
5f6c684
fix(server-utils): Record Vercel AI system instructions from message …
andreiborza Nov 6, 2026
6eab8d5
fix(ci): refresh lockfile deprecation metadata (#26183)
nicohrubec Nov 6, 2026
64f5b60
chore(deps): Bump `@sentry/conventions` to 0.31.0 (#26160)
sentry-junior[bot] Nov 6, 2026
a9ae8f4
fix(server-utils): Record LangGraph finish reasons as a JSON string (…
andreiborza Nov 6, 2026
3963e60
fix(server-utils): Record Anthropic system instructions from text blo…
andreiborza Nov 6, 2026
2f26678
chore(deps): Bump nanoid to fix CVE-2026-73086 (#26173)
chargome Nov 6, 2026
c536e1e
feat(bundler-plugins): Enable hidden source maps and remove them afte…
timfish Nov 6, 2026
03492d2
feat(bundler-plugins): Enable hidden source maps and remove them afte…
timfish Nov 6, 2026
f72eb6c
feat(core): Add the primitives to answer managed tunnel requests in t…
logaretm Nov 6, 2026
0da0b0c
feat(node,bun,deno): Answer managed tunnel requests in the runtime (#…
logaretm Nov 6, 2026
fa21989
feat(cloudflare): Answer managed tunnel requests in `withSentry` (#25…
logaretm Nov 6, 2026
c5fed32
feat(node,aws-serverless): Answer managed tunnel requests on Lambda (…
logaretm Nov 6, 2026
5b78f8e
ref: Remove the framework tunnel hooks (#26001)
logaretm Nov 6, 2026
6c6c040
fix(deps): Bump the sentry CLI to ^0.49.0 (#26200)
sentry-junior[bot] Nov 7, 2026
fe412ef
test(aws-serverless): Add Bedrock streaming integration scenario (#26…
andreiborza Nov 9, 2026
7259f5d
feat(cloudflare): propagate tracing context through Queue messages (#…
arthurfiorette Nov 9, 2026
b80191e
chore: Add external contributor to CHANGELOG.md (#26214)
javascript-sdk-gitflow[bot] Nov 9, 2026
cfcb5c9
feat(bundler-plugins): Enable hidden source maps and remove them afte…
timfish Nov 9, 2026
34326ef
test(browser): Trigger third-party errors after initialization (#26206)
nicohrubec Nov 9, 2026
cac83d9
test(hono): relax middleware span timing assertions (#26199)
nicohrubec Nov 9, 2026
f27fc73
test(cloudflare): Poll Workflow send aborts in the run context (#26207)
nicohrubec Nov 9, 2026
323de1f
test(cloudflare): tolerate span timestamp rounding (#26196)
nicohrubec Nov 9, 2026
e342629
test(e2e): Pin elysia to v1 in the elysia-node test app (#26215)
timfish Nov 9, 2026
c4fbc0a
fix(aws-serverless): Fork isolation scope per invocation (#26191)
andreiborza Nov 9, 2026
33522c0
perf(ci): combine circular dependency checks across entrypoints (#26195)
nicohrubec Nov 9, 2026
356d472
test(browser): Use navigation-aware back actions in bfcache tests (#2…
nicohrubec Nov 9, 2026
4316c26
perf(ci): Use pnpm pack for tarballs (#26024)
nicohrubec Nov 9, 2026
c9ef0cb
chore(deps): Bump path-to-regexp to fix CVE-2026-4867 (#26174)
chargome Nov 10, 2026
840cfd0
test(hono): Fix flaky middleware error status test (#26213)
sentry-junior[bot] Nov 10, 2026
4aeb25b
test(react): Synchronize lazy-route navigation cancellation (#26210)
nicohrubec Nov 10, 2026
0e9841e
fix(core): Preserve parentheses in anonymous Node stack paths (#26216)
nicohrubec Nov 10, 2026
726e947
test(bundler-plugins): Add integration tests for `sourcemaps.assets` …
timfish Nov 10, 2026
7bc0a5d
ref(server-utils): Add shared isBun, isDeno and isCloudflareWorkers h…
sentry-junior[bot] Nov 10, 2026
b981d4e
chore(deps): Remove unused dependencies from workspace packages (#26230)
sentry-junior[bot] Nov 10, 2026
41d529a
fix(core): Use the final segment span name for streamed spans that en…
chargome Nov 10, 2026
1d354fd
chore(deps): Bump `@sentry/conventions` to 0.32.0 (#26222)
sentry-junior[bot] Nov 10, 2026
4c4b235
fix(aws-serverless): Omit default port from url.full on function.aws …
sentry-junior[bot] Nov 10, 2026
decf917
fix(nextjs,sveltekit): Hide git revision console on Windows (#26223)
nicohrubec Nov 10, 2026
3050533
test(e2e): Remove unused dependencies from E2E test apps (#26231)
sentry-junior[bot] Nov 10, 2026
dbd346f
chore(deps): Bump dependencies to fix in-range security alerts (#26221)
chargome Nov 10, 2026
2f3c8a9
test(e2e): Fix cloudflare-pi-durable builds (#26235)
andreiborza Nov 10, 2026
5a4ac0a
test(nuxt): Keep Nitro 2 WebSocket handlers resolvable with the manag…
chan-mai Nov 10, 2026
e60350c
chore: Add external contributor to CHANGELOG.md (#26238)
javascript-sdk-gitflow[bot] Nov 10, 2026
e76488b
fix(hono): Name routes without c.req.matchedRoutes (#25454)
s1gr1d Nov 10, 2026
f782068
chore(deps): Bump rrweb to 2.46.0 (#26241)
logaretm Nov 10, 2026
b5a9275
feat(deps): Bump ws from 8.18.0 to 8.22.2 (#26242)
dependabot[bot] Nov 10, 2026
2e4231e
chore(deps-dev): Bump vite from 8.3.5 to 8.3.6 (#26243)
dependabot[bot] Nov 10, 2026
6130d5a
test(replay): Collect request spans across recording segments (#26209)
nicohrubec Nov 10, 2026
3577370
feat(tanstackstart-react): Deprecate `tunnelRoute` (#26225)
logaretm Nov 10, 2026
39b10d8
fix(cloudflare): Keep framework-managed methods when a Durable Object…
nuntz Nov 10, 2026
312de2e
chore: use native `node:fs` for removal scripts (#26219)
43081j Nov 10, 2026
2fe81bb
chore: Add external contributor to CHANGELOG.md (#26244)
javascript-sdk-gitflow[bot] Nov 10, 2026
d320067
chore: Add external contributor to CHANGELOG.md (#26245)
javascript-sdk-gitflow[bot] Nov 10, 2026
83f29b7
perf(ci): cache WebKit system package downloads (#26198)
nicohrubec Nov 10, 2026
a6b06ad
fix(cloudflare): Initialize the SDK before constructing a Durable Obj…
andreiborza Nov 10, 2026
0f3145f
fix(ci): prune unused rimraf lockfile entries (#26247)
nicohrubec Nov 10, 2026
7be0b7a
meta(changelog): Update changelog for 11.12.0
andreiborza Nov 10, 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 .agents/skills/add-ai-integration/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ argument-hint: <provider-name>

Span ops and attributes are specified outside this repo. Never invent or hardcode either:

- [gen_ai attributes](https://getsentry.github.io/sentry-conventions/attributes/gen_ai/) and [gen_ai ops](https://getsentry.github.io/sentry-conventions/ops/#gen_ai) — normative; import from `@sentry/conventions/attributes` and `@sentry/conventions/op`
- [gen_ai attributes](https://conventions.sentry.dev/attributes/gen_ai/) and [gen_ai ops](https://conventions.sentry.dev/ops/#gen_ai) — normative; import from `@sentry/conventions/attributes` and `@sentry/conventions/op`
- [RFC 0153](https://github.com/getsentry/rfcs/blob/main/text/0153-decoupling-sentrys-generative-ai-conventions-from-open-telemetry.md) — why Sentry's gen-AI conventions diverge from the [OTel gen-ai semconv](https://opentelemetry.io/docs/specs/semconv/gen-ai/)

Derive the op with `getGenAiSpanOp()` from `ai/core/utils.ts` rather than picking one by hand. `ai/core/gen-ai-attributes.ts` is for gap-fillers only — keys with no `@sentry/conventions` equivalent — so check it last, not first.
Expand Down
6 changes: 3 additions & 3 deletions .agents/skills/port-span-names/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ argument-hint: '<span-op> [constraints] # e.g. navigation, or "db.query --only

# Port a span op to low-cardinality span names

Span names must be low cardinality, per the [Sentry span name conventions](https://getsentry.github.io/sentry-conventions/names/): a raw URL, id, or query must never end up in a span name. Where the SDK has no low-cardinality value for a span, it uses a **static fallback name** for that op instead.
Span names must be low cardinality, per the [Sentry span name conventions](https://conventions.sentry.dev/names/): a raw URL, id, or query must never end up in a span name. Where the SDK has no low-cardinality value for a span, it uses a **static fallback name** for that op instead.

This only applies when span streaming is enabled. With `traceLifecycle: 'static'` every span name must stay byte-identical to before.

Expand Down Expand Up @@ -37,13 +37,13 @@ These are non-negotiable. Every one of them was arrived at by rejecting the alte

## 1. Look up the convention

Read <https://getsentry.github.io/sentry-conventions/names/> and find the op. Each op lists attribute templates in priority order, ending in a static fallback — that fallback is your name. Examples: `pageload` → `Pageload`, `navigation` → `Navigation`, database ops → `Database operation`.
Read <https://conventions.sentry.dev/names/> and find the op. Each op lists attribute templates in priority order, ending in a static fallback — that fallback is your name. Examples: `pageload` → `Pageload`, `navigation` → `Navigation`, database ops → `Database operation`.

Add it next to `PAGELOAD_SPAN_NAME_FALLBACK` in `packages/core/src/tracing/spans/spanNames.ts` and export it from `shared-exports.ts`. Every package imports it from `@sentry/core` directly — no re-export from `@sentry/browser` is needed.

### Then look up the description rules

The name is only half the contract. Relay re-derives a span's **description** from its attributes using the [span description rules](https://getsentry.github.io/sentry-conventions/descriptions/) — a separate, much shorter set of templates from the name rules. `function`, for example, has exactly one (`{{code.function.name}}`) and no static fallback, so a `function` span with no `code.function.name` gets no inferred description at all.
The name is only half the contract. Relay re-derives a span's **description** from its attributes using the [span description rules](https://conventions.sentry.dev/descriptions/) — a separate, much shorter set of templates from the name rules. `function`, for example, has exactly one (`{{code.function.name}}`) and no static fallback, so a `function` span with no `code.function.name` gets no inferred description at all.

Renaming a span therefore drops information unless you check what the op's description template can still produce. For each site, in this order:

Expand Down
4 changes: 3 additions & 1 deletion .github/actions/install-dependencies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ runs:
id: cache_dependencies
with:
path: ${{ env.CACHED_DEPENDENCY_PATHS }}
key: ${{ steps.compute_lockfile_hash.outputs.hash }}
key:
${{ steps.compute_lockfile_hash.outputs.hash }}${{ runner.arch != 'X64' && format('-{0}', runner.arch) || ''
}}

- name: Install dependencies
if: steps.cache_dependencies.outputs.cache-hit != 'true'
Expand Down
91 changes: 82 additions & 9 deletions .github/actions/install-playwright/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,22 +38,95 @@ runs:

# We always install all browsers, if uncached
# `npx` runs outside the repo, so it can't pick up a `playwright` that a parallel `pnpm install` is still linking.
- name: Install Playwright dependencies (uncached)
- name: Install Playwright browsers (uncached)
env:
PLAYWRIGHT_VERSION: ${{ steps.playwright-version.outputs.version }}
run: npx -y "playwright@$PLAYWRIGHT_VERSION" install chromium webkit firefox --with-deps
run: npx -y "playwright@$PLAYWRIGHT_VERSION" install chromium webkit firefox
if: steps.playwright-version.outputs.version != '' && steps.playwright-cache.outputs.cache-hit != 'true'
shell: bash
working-directory: ${{ runner.temp }}

- name: Install Playwright system dependencies only (cached)
env:
PLAYWRIGHT_BROWSERS: ${{ inputs.browsers || 'chromium webkit firefox' }}
PLAYWRIGHT_VERSION: ${{ steps.playwright-version.outputs.version }}
run: npx -y "playwright@$PLAYWRIGHT_VERSION" install-deps $PLAYWRIGHT_BROWSERS
if: steps.playwright-version.outputs.version != '' && steps.playwright-cache.outputs.cache-hit == 'true'
- name: Resolve headless WebKit system dependencies
id: webkit-dependencies
if: steps.playwright-version.outputs.version != '' && contains(inputs.browsers, 'webkit')
run: |
packages=(
gstreamer1.0-plugins-base
gstreamer1.0-plugins-good
libavif16
libevent-2.1-7t64
libflite1
libgles2
libgstreamer-gl1.0-0
libgstreamer-plugins-bad1.0-0
libgstreamer-plugins-base1.0-0
libharfbuzz-icu0
libhyphen0
libmanette-0.2-0
libopus0
libwayland-server0
)
# Resolve now and install after restoring the cache; share the package list across both steps.
printf '%s\n' "${packages[@]}" > "$RUNNER_TEMP/webkit-apt-packages"
# runner.temp is private, so keep installers where apt's sandbox user can access them.
mkdir -p /var/tmp/webkit-apt-cache

sudo apt-get update
# Ask apt which installers it needs, including dependencies, without downloading them.
# Do this before restoring cached files so the key describes the full download set.
plan=$(sudo apt-get \
-o Dir::Cache::archives=/var/tmp/webkit-apt-cache \
--print-uris --download-only -y --no-install-recommends \
install "${packages[@]}")
# Hash only download records, in a stable order, so package updates produce a new key.
hash=$(printf '%s\n' "$plan" | sed -n "/^'/p" | LC_ALL=C sort | sha256sum | cut -d ' ' -f1)

# Separate Ubuntu versions and architectures, while allowing older package sets as fallbacks.
. /etc/os-release
prefix="webkit-apt-$ID-$VERSION_ID-${{ runner.arch }}-v1-"
echo "prefix=$prefix" >> "$GITHUB_OUTPUT"
echo "key=$prefix$hash" >> "$GITHUB_OUTPUT"
shell: bash
working-directory: ${{ runner.temp }}

- name: Restore cached WebKit system packages
id: webkit-apt-cache
if: steps.webkit-dependencies.outputs.key != ''
uses: actions/cache/restore@v6.1.0
with:
path: /var/tmp/webkit-apt-cache/*.deb
key: ${{ steps.webkit-dependencies.outputs.key }}
# If this exact package set isn't cached, reuse an older set; apt downloads only what's missing.
restore-keys: ${{ steps.webkit-dependencies.outputs.prefix }}

- name: Install headless WebKit system dependencies
if: steps.webkit-dependencies.outputs.key != ''
run: |
mapfile -t packages < "$RUNNER_TEMP/webkit-apt-packages"
# Install from restored .deb files where possible, retaining new downloads for the cache save.
sudo apt-get \
-o Dir::Cache::archives=/var/tmp/webkit-apt-cache \
-o APT::Keep-Downloaded-Packages=true \
install -y --no-install-recommends "${packages[@]}"
shell: bash

- name: Remove obsolete cached WebKit packages
if:
steps.webkit-dependencies.outputs.key != '' && steps.webkit-apt-cache.outputs.cache-hit != 'true' &&
github.event_name == 'push' && github.ref == 'refs/heads/develop'
# Fallback restores can carry obsolete installers into newer cache entries.
run: sudo apt-get -o Dir::Cache::archives=/var/tmp/webkit-apt-cache autoclean
shell: bash

# Develop populates caches shared with PRs. Save after misses or fallback restores,
# which may have downloaded packages absent from the restored cache.
- name: Store cached WebKit system packages
if:
steps.webkit-dependencies.outputs.key != '' && steps.webkit-apt-cache.outputs.cache-hit != 'true' &&
github.event_name == 'push' && github.ref == 'refs/heads/develop'
uses: actions/cache/save@v6.1.0
with:
path: /var/tmp/webkit-apt-cache/*.deb
key: ${{ steps.webkit-dependencies.outputs.key }}

# Only store cache on develop branch
- name: Store cached playwright binaries
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/prepare-e2e-test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ runs:
github-token: ${{ inputs.github-token }}

- name: Restore build layer artifacts
if: contains(inputs.test-application, 'aws-serverless')
if: inputs.test-application == 'aws-serverless-layer'
uses: actions/download-artifact@v8
with:
name: build-layer-output
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/restore-cache/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ runs:
uses: actions/cache/restore@v6.1.0
with:
path: ${{ env.CACHED_DEPENDENCY_PATHS }}
key: ${{ inputs.dependency_cache_key }}
key: ${{ inputs.dependency_cache_key }}${{ runner.arch != 'X64' && format('-{0}', runner.arch) || '' }}

- name: Restore build artifacts
uses: actions/download-artifact@v7
Expand Down
Loading
Loading