doodlewind
334912e85b
perf(editor): lazy DOM update with idle state in gfx viewport ( #10624 )
...
Currently, `GfxViewportElement` hides DOM blocks outside the viewport using `display: none` to optimize performance. However, this approach presents two issues:
1. Even when hidden, all top-level blocks still undergo frequent CSS transform updates during viewport panning and zooming.
2. Hidden blocks cannot access DOM layout information, preventing `TurboRenderer` from updating the complete canvas bitmap.
To address this, this PR introduces a refactoring that divides all top-level edgeless blocks into two states: `idle` and `active`. The improvements are as follows:
1. Blocks outside the viewport are set to the `idle` state, meaning they no longer update their DOM during viewport panning or zooming. Only `active` blocks within the viewport are updated frame by frame.
2. For `idle` blocks, the hiding method switches from `display: none` to `visibility: hidden`, ensuring their layout information remains accessible to `TurboRenderer`.
[Screen Recording 2025-03-07 at 3.23.56 PM.mov <span class="graphite__hidden">(uploaded via Graphite)</span> <img class="graphite__hidden" src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/lEGcysB4lFTEbCwZ8jMv/4bac640b-f5b6-4b0b-904d-5899f96cf375.mov " />](https://app.graphite.dev/media/video/lEGcysB4lFTEbCwZ8jMv/4bac640b-f5b6-4b0b-904d-5899f96cf375.mov )
While this minimizes DOM updates, it introduces a trade-off: `idle` blocks retain an outdated layout state. Since their positions are updated using a lazy update strategy, their layout state remains frozen at the moment they were last moved out of the viewport:

To resolve this, the PR serializes and stores the viewport field of the block at that moment on the `idle` block itself. This allows the correct layout, positioned in the model coordinate system, to be restored from the stored data.
2025-03-08 01:38:02 +00:00
L-Sun
750c8a44dc
refactor(editor): add slash menu config extension entry ( #10641 )
...
Close [BS-2744](https://linear.app/affine-design/issue/BS-2744/slash-menu%E6%8F%92%E4%BB%B6%E5%8C%96%EF%BC%9Aaction%E6%B3%A8%E5%86%8C%E5%85%A5%E5%8F%A3 )
This PR mainly focus on providing an entry point for configuring the SlashMenu feature. Therefore, it strives to retain the original code to ensure that the modifications are simple and easy to review. Subsequent PRs will focus on moving different configurations into separate blocks.
### How to use?
Here is the type definition for the slash menu configuration. An important change is the new field `group`, which indicates the sorting and grouping of the menu item. See the comments for details.
```ts
// types.ts
export type SlashMenuContext = {
std: BlockStdScope;
model: BlockModel;
};
export type SlashMenuItemBase = {
name: string;
description?: string;
icon?: TemplateResult;
/**
* This field defines sorting and grouping of menu items like VSCode.
* The first number indicates the group index, the second number indicates the item index in the group.
* The group name is the string between `_` and `@`.
* You can find an example figure in https://code.visualstudio.com/api/references/contribution-points#menu-example
*/
group?: `${number}_${string}@${number}`;
/**
* The condition to show the menu item.
*/
when?: (ctx: SlashMenuContext) => boolean;
};
export type SlashMenuActionItem = SlashMenuItemBase & {
action: (ctx: SlashMenuContext) => void;
tooltip?: SlashMenuTooltip;
/**
* The alias of the menu item for search.
*/
searchAlias?: string[];
};
export type SlashMenuSubMenu = SlashMenuItemBase & {
subMenu: SlashMenuItem[];
};
export type SlashMenuItem = SlashMenuActionItem | SlashMenuSubMenu;
export type SlashMenuConfig = {
/**
* The items in the slash menu. It can be generated dynamically with the context.
*/
items: SlashMenuItem[] | ((ctx: SlashMenuContext) => SlashMenuItem[]);
/**
* Slash menu will not be triggered when the condition is true.
*/
disableWhen?: (ctx: SlashMenuContext) => boolean;
};
// extensions.ts
/**
* The extension to add a slash menu items or configure.
*/
export function SlashMenuConfigExtension(ext: {
id: string;
config: SlashMenuConfig;
}): ExtensionType {
return {
setup: di => {
di.addImpl(SlashMenuConfigIdentifier(ext.id), ext.config);
},
};
}
```
Here is an example, `XXXSlashMenuConfig` adds a `Delete` action to the slash menu, which is assigned to the 8th group named `Actions` at position 0.
```ts
import { SlashMenuConfigExtension, type SlashMenuConfig } from '@blocksuite/affine-widget-slash-menu';
const XXXSlashMenuConfig = SlashMenuConfigExtension({
id: 'XXX',
config: {
items: [
{
name: 'Delete',
description: 'Remove a block.',
searchAlias: ['remove'],
icon: DeleteIcon,
group: '8_Actions@0',
action: ({ std, model }) => {
std.host.doc.deleteBlock(model);
},
},
],
},
});
```
2025-03-06 16:12:06 +00:00
fundon
ec9bd1f383
feat(editor): add toolbar registry extension ( #9572 )
...
### What's Changed!
#### Added
Manage various types of toolbars uniformly in one place.
* `affine-toolbar-widget`
* `ToolbarRegistryExtension`
The toolbar currently supports and handles several scenarios:
1. Select blocks: `BlockSelection`
2. Select text: `TextSelection` or `NativeSelection`
3. Hover a link: `affine-link` and `affine-reference`
#### Removed
Remove redundant toolbar implementations.
* `attachment` toolbar
* `bookmark` toolbar
* `embed` toolbar
* `formatting` toolbar
* `affine-link` toolbar
* `affine-reference` toolbar
### How to migrate?
Here is an example that can help us migrate some unrefactored toolbars:
Check out the more detailed types of [`ToolbarModuleConfig`](c178debf2d/blocksuite/affine/shared/src/services/toolbar-service/config.ts ).
1. Add toolbar configuration file to a block type, such as bookmark block: [`config.ts`](c178debf2d/blocksuite/affine/block-bookmark/src/configs/toolbar.ts )
```ts
export const builtinToolbarConfig = {
actions: [
{
id: 'a.preview',
content(ctx) {
const model = ctx.getCurrentModelBy(BlockSelection, BookmarkBlockModel);
if (!model) return null;
const { url } = model;
return html`<affine-link-preview .url=${url}></affine-link-preview>`;
},
},
{
id: 'b.conversions',
actions: [
{
id: 'inline',
label: 'Inline view',
run(ctx) {
},
},
{
id: 'card',
label: 'Card view',
disabled: true,
},
{
id: 'embed',
label: 'Embed view',
disabled(ctx) {
},
run(ctx) {
},
},
],
content(ctx) {
},
} satisfies ToolbarActionGroup<ToolbarAction>,
{
id: 'c.style',
actions: [
{
id: 'horizontal',
label: 'Large horizontal style',
},
{
id: 'list',
label: 'Small horizontal style',
},
],
content(ctx) {
},
} satisfies ToolbarActionGroup<ToolbarAction>,
{
id: 'd.caption',
tooltip: 'Caption',
icon: CaptionIcon(),
run(ctx) {
},
},
{
placement: ActionPlacement.More,
id: 'a.clipboard',
actions: [
{
id: 'copy',
label: 'Copy',
icon: CopyIcon(),
run(ctx) {
},
},
{
id: 'duplicate',
label: 'Duplicate',
icon: DuplicateIcon(),
run(ctx) {
},
},
],
},
{
placement: ActionPlacement.More,
id: 'b.refresh',
label: 'Reload',
icon: ResetIcon(),
run(ctx) {
},
},
{
placement: ActionPlacement.More,
id: 'c.delete',
label: 'Delete',
icon: DeleteIcon(),
variant: 'destructive',
run(ctx) {
},
},
],
} as const satisfies ToolbarModuleConfig;
```
2. Add configuration extension to a block spec: [bookmark's spec](c178debf2d/blocksuite/affine/block-bookmark/src/bookmark-spec.ts )
```ts
const flavour = BookmarkBlockSchema.model.flavour;
export const BookmarkBlockSpec: ExtensionType[] = [
...,
ToolbarModuleExtension({
id: BlockFlavourIdentifier(flavour),
config: builtinToolbarConfig,
}),
].flat();
```
3. If the bock type already has a toolbar configuration built in, we can customize it in the following ways:
Check out the [editor's config](c178debf2d/packages/frontend/core/src/blocksuite/extensions/editor-config/index.ts (L51C4-L54C8) ) file.
```ts
// Defines a toolbar configuration for the bookmark block type
const customBookmarkToolbarConfig = {
actions: [
...
]
} as const satisfies ToolbarModuleConfig;
// Adds it into the editor's config
ToolbarModuleExtension({
id: BlockFlavourIdentifier('custom:affine:bookmark'),
config: customBookmarkToolbarConfig,
}),
```
4. If we want to extend the global:
```ts
// Defines a toolbar configuration
const customWildcardToolbarConfig = {
actions: [
...
]
} as const satisfies ToolbarModuleConfig;
// Adds it into the editor's config
ToolbarModuleExtension({
id: BlockFlavourIdentifier('custom:affine:*'),
config: customWildcardToolbarConfig,
}),
```
Currently, only most toolbars in page mode have been refactored. Next is edgeless mode.
2025-03-06 06:46:03 +00:00
renovate
5c16b803b7
chore: bump up @sentry/react version to v9 ( #10064 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react ) ([source](https://redirect.github.com/getsentry/sentry-javascript )) | [`^8.44.0` -> `^9.0.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.54.0/9.0.1 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
---
### Release Notes
<details>
<summary>getsentry/sentry-javascript (@​sentry/react)</summary>
### [`v9.0.1`](https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.0.1 )
[Compare Source](https://redirect.github.com/getsentry/sentry-javascript/compare/9.0.0...9.0.1 )
- ref(flags): rename unleash integration param ([#​15343](https://redirect.github.com/getsentry/sentry-javascript/pull/15343 ))
##### Bundle size 📦
| Path | Size |
| ---------------------------------------------------------------- | ----------------- |
| [@​sentry/browser](https://redirect.github.com/sentry/browser ) | 22.9 KB |
| [@​sentry/browser](https://redirect.github.com/sentry/browser ) - with treeshaking flags | 22.69 KB |
| [@​sentry/browser](https://redirect.github.com/sentry/browser ) (incl. Tracing) | 35.77 KB |
| [@​sentry/browser](https://redirect.github.com/sentry/browser ) (incl. Tracing, Replay) | 72.65 KB |
| [@​sentry/browser](https://redirect.github.com/sentry/browser ) (incl. Tracing, Replay) - with treeshaking flags | 66.13 KB |
| [@​sentry/browser](https://redirect.github.com/sentry/browser ) (incl. Tracing, Replay with Canvas) | 76.9 KB |
| [@​sentry/browser](https://redirect.github.com/sentry/browser ) (incl. Tracing, Replay, Feedback) | 89.64 KB |
| [@​sentry/browser](https://redirect.github.com/sentry/browser ) (incl. Feedback) | 39.86 KB |
| [@​sentry/browser](https://redirect.github.com/sentry/browser ) (incl. sendFeedback) | 27.53 KB |
| [@​sentry/browser](https://redirect.github.com/sentry/browser ) (incl. FeedbackAsync) | 32.31 KB |
| [@​sentry/react](https://redirect.github.com/sentry/react ) | 24.74 KB |
| [@​sentry/react](https://redirect.github.com/sentry/react ) (incl. Tracing) | 37.67 KB |
| [@​sentry/vue](https://redirect.github.com/sentry/vue ) | 27.09 KB |
| [@​sentry/vue](https://redirect.github.com/sentry/vue ) (incl. Tracing) | 37.47 KB |
| [@​sentry/svelte](https://redirect.github.com/sentry/svelte ) | 22.94 KB |
| CDN Bundle | 24.13 KB |
| CDN Bundle (incl. Tracing) | 35.84 KB |
| CDN Bundle (incl. Tracing, Replay) | 70.55 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) | 75.69 KB |
| CDN Bundle - uncompressed | 70.59 KB |
| CDN Bundle (incl. Tracing) - uncompressed | 106.46 KB |
| CDN Bundle (incl. Tracing, Replay) - uncompressed | 217.52 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed | 230.09 KB |
| [@​sentry/nextjs](https://redirect.github.com/sentry/nextjs ) (client) | 38.63 KB |
| [@​sentry/sveltekit](https://redirect.github.com/sentry/sveltekit ) (client) | 36.2 KB |
| [@​sentry/node](https://redirect.github.com/sentry/node ) | 156.33 KB |
| [@​sentry/node](https://redirect.github.com/sentry/node ) - without tracing | 97.31 KB |
| [@​sentry/aws-serverless](https://redirect.github.com/sentry/aws-serverless ) | 106.82 KB |
### [`v9.0.0`](https://redirect.github.com/getsentry/sentry-javascript/blob/HEAD/CHANGELOG.md#900 )
[Compare Source](https://redirect.github.com/getsentry/sentry-javascript/compare/8.54.0...9.0.0 )
Version `9.0.0` marks a release of the Sentry JavaScript SDKs that contains breaking changes.
The goal of this release is to trim down on unused and potentially confusing APIs, prepare the SDKs for future framework versions to build deeper instrumentation, and remove old polyfills to reduce the packages' size.
##### How To Upgrade
Please carefully read through the migration guide in the Sentry docs on how to upgrade from version 8 to version 9.
Make sure to select your specific platform/framework in the top left corner: https://docs.sentry.io/platforms/javascript/migration/v8-to-v9/
A comprehensive migration guide outlining all changes for all the frameworks can be found within the Sentry JavaScript SDK Repository: https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md
##### Breaking Changes
- doc(deno)!: Make Deno v2 the minimum supported version ([#​15085](https://redirect.github.com/getsentry/sentry-javascript/issues/15085 ))
- feat!: Bump typescript to `~5.0.0` ([#​14758](https://redirect.github.com/getsentry/sentry-javascript/issues/14758 ))
- feat!: Drop `nitro-utils` package ([#​14998](https://redirect.github.com/getsentry/sentry-javascript/issues/14998 ))
- feat!: Only collect ip addresses with `sendDefaultPii: true` ([#​15084](https://redirect.github.com/getsentry/sentry-javascript/issues/15084 ))
- feat!: Remove `autoSessionTracking` option ([#​14802](https://redirect.github.com/getsentry/sentry-javascript/issues/14802 ))
- feat!: Remove `enableTracing` ([#​15078](https://redirect.github.com/getsentry/sentry-javascript/issues/15078 ))
- feat!: Remove `getCurrentHub()`, `Hub`, and `getCurrentHubShim()` ([#​15122](https://redirect.github.com/getsentry/sentry-javascript/issues/15122 ))
- feat!: Remove `spanId` from propagation context ([#​14733](https://redirect.github.com/getsentry/sentry-javascript/issues/14733 ))
- feat!: Remove deprecated and unused code ([#​15077](https://redirect.github.com/getsentry/sentry-javascript/issues/15077 ))
- feat!: Remove metrics API from the JS SDK ([#​14745](https://redirect.github.com/getsentry/sentry-javascript/issues/14745 ))
- feat!: Require Node `>=18` as minimum supported version ([#​14749](https://redirect.github.com/getsentry/sentry-javascript/issues/14749 ))
- feat(astro)!: Respect user-specified source map setting ([#​14941](https://redirect.github.com/getsentry/sentry-javascript/issues/14941 ))
- feat(browser)!: Remove `captureUserFeedback` method ([#​14820](https://redirect.github.com/getsentry/sentry-javascript/issues/14820 ))
- feat(build)!: Drop pre-ES2020 polyfills ([#​14882](https://redirect.github.com/getsentry/sentry-javascript/issues/14882 ))
- feat(core)!: Add `normalizedRequest` to `samplingContext` ([#​14902](https://redirect.github.com/getsentry/sentry-javascript/issues/14902 ))
- feat(core)!: Always use session from isolation scope ([#​14860](https://redirect.github.com/getsentry/sentry-javascript/issues/14860 ))
- feat(core)!: Pass root spans to `beforeSendSpan` and disallow returning `null` ([#​14831](https://redirect.github.com/getsentry/sentry-javascript/issues/14831 ))
- feat(core)!: Remove `BAGGAGE_HEADER_NAME` export ([#​14785](https://redirect.github.com/getsentry/sentry-javascript/issues/14785 ))
- feat(core)!: Remove `TransactionNamingScheme` type ([#​14865](https://redirect.github.com/getsentry/sentry-javascript/issues/14865 ))
- feat(core)!: Remove `addOpenTelemetryInstrumentation` method ([#​14792](https://redirect.github.com/getsentry/sentry-javascript/issues/14792 ))
- feat(core)!: Remove `arrayify` method ([#​14782](https://redirect.github.com/getsentry/sentry-javascript/issues/14782 ))
- feat(core)!: Remove `debugIntegration` and `sessionTimingIntegration` ([#​14747](https://redirect.github.com/getsentry/sentry-javascript/issues/14747 ))
- feat(core)!: Remove `flatten` method ([#​14784](https://redirect.github.com/getsentry/sentry-javascript/issues/14784 ))
- feat(core)!: Remove `getDomElement` method ([#​14797](https://redirect.github.com/getsentry/sentry-javascript/issues/14797 ))
- feat(core)!: Remove `makeFifoCache` method ([#​14786](https://redirect.github.com/getsentry/sentry-javascript/issues/14786 ))
- feat(core)!: Remove `memoBuilder` export & `WeakSet` fallback ([#​14859](https://redirect.github.com/getsentry/sentry-javascript/issues/14859 ))
- feat(core)!: Remove `transactionContext` from `samplingContext` ([#​14904](https://redirect.github.com/getsentry/sentry-javascript/issues/14904 ))
- feat(core)!: Remove `urlEncode` method ([#​14783](https://redirect.github.com/getsentry/sentry-javascript/issues/14783 ))
- feat(core)!: Remove deprecated `Request` type ([#​14858](https://redirect.github.com/getsentry/sentry-javascript/issues/14858 ))
- feat(core)!: Remove deprecated request data methods ([#​14896](https://redirect.github.com/getsentry/sentry-javascript/issues/14896 ))
- feat(core)!: Remove standalone `Client` interface & deprecate `BaseClient` ([#​14800](https://redirect.github.com/getsentry/sentry-javascript/issues/14800 ))
- feat(core)!: Remove validSeverityLevels export ([#​14765](https://redirect.github.com/getsentry/sentry-javascript/issues/14765 ))
- feat(core)!: Stop accepting `event` as argument for `recordDroppedEvent` ([#​14999](https://redirect.github.com/getsentry/sentry-javascript/issues/14999 ))
- feat(core)!: Stop setting user in `requestDataIntegration` ([#​14898](https://redirect.github.com/getsentry/sentry-javascript/issues/14898 ))
- feat(core)!: Type sdkProcessingMetadata more strictly ([#​14855](https://redirect.github.com/getsentry/sentry-javascript/issues/14855 ))
- feat(core)!: Update `hasTracingEnabled` to consider empty trace config ([#​14857](https://redirect.github.com/getsentry/sentry-javascript/issues/14857 ))
- feat(core)!: Update `requestDataIntegration` handling ([#​14806](https://redirect.github.com/getsentry/sentry-javascript/issues/14806 ))
- feat(deno)!: Remove deno prepack ([#​14829](https://redirect.github.com/getsentry/sentry-javascript/issues/14829 ))
- feat(ember)!: Officially drop support for ember `<=3.x` ([#​15032](https://redirect.github.com/getsentry/sentry-javascript/issues/15032 ))
- feat(nestjs)!: Move `nestIntegration` into nest sdk and remove `setupNestErrorHandler` ([#​14751](https://redirect.github.com/getsentry/sentry-javascript/issues/14751 ))
- feat(nestjs)!: Remove `@WithSentry` decorator ([#​14762](https://redirect.github.com/getsentry/sentry-javascript/issues/14762 ))
- feat(nestjs)!: Remove `SentryService` ([#​14759](https://redirect.github.com/getsentry/sentry-javascript/issues/14759 ))
- feat(nextjs)!: Don't rely on Next.js Build ID for release names ([#​14939](https://redirect.github.com/getsentry/sentry-javascript/issues/14939 ))
- feat(nextjs)!: Remove `experimental_captureRequestError` ([#​14607](https://redirect.github.com/getsentry/sentry-javascript/issues/14607 ))
- feat(nextjs)!: Respect user-provided source map generation settings ([#​14956](https://redirect.github.com/getsentry/sentry-javascript/issues/14956 ))
- feat(node)!: Add support for Prisma v6 and drop v5 support ([#​15120](https://redirect.github.com/getsentry/sentry-javascript/issues/15120 ))
- feat(node)!: Avoid http spans by default for custom OTEL setups ([#​14678](https://redirect.github.com/getsentry/sentry-javascript/issues/14678 ))
- feat(node)!: Collect request sessions via HTTP instrumentation ([#​14658](https://redirect.github.com/getsentry/sentry-javascript/issues/14658 ))
- feat(node)!: Remove `processThreadBreadcrumbIntegration` ([#​14666](https://redirect.github.com/getsentry/sentry-javascript/issues/14666 ))
- feat(node)!: Remove fine grained `registerEsmLoaderHooks` ([#​15002](https://redirect.github.com/getsentry/sentry-javascript/issues/15002 ))
- feat(opentelemetry)!: Exclusively pass root spans through sampling pipeline ([#​14951](https://redirect.github.com/getsentry/sentry-javascript/issues/14951 ))
- feat(pinia)!: Include state of all stores in breadcrumb ([#​15312](https://redirect.github.com/getsentry/sentry-javascript/issues/15312 ))
- feat(react)!: Raise minimum supported TanStack Router version to `1.63.0` ([#​15030](https://redirect.github.com/getsentry/sentry-javascript/issues/15030 ))
- feat(react)!: Remove deprecated `getNumberOfUrlSegments` method ([#​14744](https://redirect.github.com/getsentry/sentry-javascript/issues/14744 ))
- feat(react)!: Remove deprecated react router methods ([#​14743](https://redirect.github.com/getsentry/sentry-javascript/issues/14743 ))
- feat(react)!: Update `ErrorBoundary` `componentStack` type ([#​14742](https://redirect.github.com/getsentry/sentry-javascript/issues/14742 ))
- feat(remix)!: Drop support for Remix v1 ([#​14988](https://redirect.github.com/getsentry/sentry-javascript/issues/14988 ))
- feat(remix)!: Remove `autoInstrumentRemix` option ([#​15074](https://redirect.github.com/getsentry/sentry-javascript/issues/15074 ))
- feat(solidstart)!: Default to `--import` setup and add `autoInjectServerSentry` ([#​14862](https://redirect.github.com/getsentry/sentry-javascript/issues/14862 ))
- feat(solidstart)!: No longer export `sentrySolidStartVite` ([#​15143](https://redirect.github.com/getsentry/sentry-javascript/issues/15143 ))
- feat(solidstart)!: Respect user-provided source map setting ([#​14979](https://redirect.github.com/getsentry/sentry-javascript/issues/14979 ))
- feat(svelte)!: Disable component update tracking by default ([#​15265](https://redirect.github.com/getsentry/sentry-javascript/issues/15265 ))
- feat(sveltekit)!: Drop support for SvelteKit [@​1](https://redirect.github.com/1 ).x ([#​15037](https://redirect.github.com/getsentry/sentry-javascript/issues/15037 ))
- feat(sveltekit)!: Remove `fetchProxyScriptNonce` option ([#​15123](https://redirect.github.com/getsentry/sentry-javascript/issues/15123 ))
- feat(sveltekit)!: Respect user-provided source map generation settings ([#​14886](https://redirect.github.com/getsentry/sentry-javascript/issues/14886 ))
- feat(utils)!: Remove `@sentry/utils` package ([#​14830](https://redirect.github.com/getsentry/sentry-javascript/issues/14830 ))
- feat(vue)!: Remove configuring Vue tracing options anywhere else other than through the `vueIntegration`'s `tracingOptions` option ([#​14856](https://redirect.github.com/getsentry/sentry-javascript/issues/14856 ))
- feat(vue/nuxt)!: No longer create `"update"` spans for component tracking by default ([#​14602](https://redirect.github.com/getsentry/sentry-javascript/issues/14602 ))
- fix(node)!: Fix name of `vercelAIIntegration` to `VercelAI` ([#​15298](https://redirect.github.com/getsentry/sentry-javascript/issues/15298 ))
- fix(vue)!: Remove `logError` from `vueIntegration` ([#​14958](https://redirect.github.com/getsentry/sentry-javascript/issues/14958 ))
- ref!: Don't polyfill optional chaining and nullish coalescing ([#​14603](https://redirect.github.com/getsentry/sentry-javascript/issues/14603 ))
- ref(core)!: Cleanup internal types, including `ReportDialogOptions` ([#​14861](https://redirect.github.com/getsentry/sentry-javascript/issues/14861 ))
- ref(core)!: Mark exceptions from `captureConsoleIntegration` as `handled: true` by default ([#​14734](https://redirect.github.com/getsentry/sentry-javascript/issues/14734 ))
- ref(core)!: Move `shutdownTimeout` option type from core to node ([#​15217](https://redirect.github.com/getsentry/sentry-javascript/issues/15217 ))
- ref(core)!: Remove `Scope` type interface in favor of using `Scope` class ([#​14721](https://redirect.github.com/getsentry/sentry-javascript/issues/14721 ))
- ref(core)!: Remove backwards compatible SentryCarrier type ([#​14697](https://redirect.github.com/getsentry/sentry-javascript/issues/14697 ))
##### Other Changes
- chore(browser): Export ipAddress helpers for use in other SDKs ([#​15079](https://redirect.github.com/getsentry/sentry-javascript/issues/15079 ))
- deps(node): Bump `import-in-the-middle` to `1.12.0` ([#​14796](https://redirect.github.com/getsentry/sentry-javascript/issues/14796 ))
- feat(aws): Rename AWS lambda layer name to `SentryNodeServerlessSDKv9` ([#​14927](https://redirect.github.com/getsentry/sentry-javascript/issues/14927 ))
- feat(aws-serverless): Upgrade OTEL deps ([#​15091](https://redirect.github.com/getsentry/sentry-javascript/issues/15091 ))
- feat(browser): Set `user.ip_address` explicitly to `{{auto}}` ([#​15008](https://redirect.github.com/getsentry/sentry-javascript/issues/15008 ))
- feat(core): Add `inheritOrSampleWith` helper to `traceSampler` ([#​15277](https://redirect.github.com/getsentry/sentry-javascript/issues/15277 ))
- feat(core): Emit client reports for unsampled root spans on span start ([#​14936](https://redirect.github.com/getsentry/sentry-javascript/issues/14936 ))
- feat(core): Rename `hasTracingEnabled` to `hasSpansEnabled` ([#​15309](https://redirect.github.com/getsentry/sentry-javascript/issues/15309 ))
- feat(core): Streamline `SpanJSON` type ([#​14693](https://redirect.github.com/getsentry/sentry-javascript/issues/14693 ))
- feat(deno): Don't bundle `@sentry/deno` ([#​15014](https://redirect.github.com/getsentry/sentry-javascript/issues/15014 ))
- feat(deno): Don't publish to `deno.land` ([#​15016](https://redirect.github.com/getsentry/sentry-javascript/issues/15016 ))
- feat(deno): Stop inlining types from core ([#​14729](https://redirect.github.com/getsentry/sentry-javascript/issues/14729 ))
- feat(deps): Bump [@​opentelemetry/instrumentation-amqplib](https://redirect.github.com/opentelemetry/instrumentation-amqplib ) from 0.45.0 to 0.46.0 ([#​14835](https://redirect.github.com/getsentry/sentry-javascript/issues/14835 ))
- feat(deps): Bump [@​opentelemetry/instrumentation-aws-lambda](https://redirect.github.com/opentelemetry/instrumentation-aws-lambda ) from 0.49.0 to 0.50.0 ([#​14833](https://redirect.github.com/getsentry/sentry-javascript/issues/14833 ))
- feat(deps): Bump [@​opentelemetry/instrumentation-express](https://redirect.github.com/opentelemetry/instrumentation-express ) from 0.46.0 to 0.47.0 ([#​14834](https://redirect.github.com/getsentry/sentry-javascript/issues/14834 ))
- feat(deps): Bump [@​opentelemetry/instrumentation-mysql2](https://redirect.github.com/opentelemetry/instrumentation-mysql2 ) from 0.44.0 to 0.45.0 ([#​14836](https://redirect.github.com/getsentry/sentry-javascript/issues/14836 ))
- feat(deps): Bump [@​opentelemetry/propagation-utils](https://redirect.github.com/opentelemetry/propagation-utils ) from 0.30.14 to 0.30.15 ([#​14832](https://redirect.github.com/getsentry/sentry-javascript/issues/14832 ))
- feat(deps): bump [@​opentelemetry/context-async-hooks](https://redirect.github.com/opentelemetry/context-async-hooks ) from 1.29.0 to 1.30.0 ([#​14869](https://redirect.github.com/getsentry/sentry-javascript/issues/14869 ))
- feat(deps): bump [@​opentelemetry/instrumentation-generic-pool](https://redirect.github.com/opentelemetry/instrumentation-generic-pool ) from 0.42.0 to 0.43.0 ([#​14870](https://redirect.github.com/getsentry/sentry-javascript/issues/14870 ))
- feat(deps): bump [@​opentelemetry/instrumentation-knex](https://redirect.github.com/opentelemetry/instrumentation-knex ) from 0.43.0 to 0.44.0 ([#​14872](https://redirect.github.com/getsentry/sentry-javascript/issues/14872 ))
- feat(deps): bump [@​opentelemetry/instrumentation-mongodb](https://redirect.github.com/opentelemetry/instrumentation-mongodb ) from 0.50.0 to 0.51.0 ([#​14871](https://redirect.github.com/getsentry/sentry-javascript/issues/14871 ))
- feat(deps): bump [@​opentelemetry/instrumentation-tedious](https://redirect.github.com/opentelemetry/instrumentation-tedious ) from 0.17.0 to 0.18.0 ([#​14868](https://redirect.github.com/getsentry/sentry-javascript/issues/14868 ))
- feat(deps): bump [@​sentry/cli](https://redirect.github.com/sentry/cli ) from 2.39.1 to 2.41.1 ([#​15173](https://redirect.github.com/getsentry/sentry-javascript/issues/15173 ))
- feat(flags): Add Statsig browser integration ([#​15319](https://redirect.github.com/getsentry/sentry-javascript/issues/15319 ))
- feat(gatsby): Preserve user-provided source map settings ([#​15006](https://redirect.github.com/getsentry/sentry-javascript/issues/15006 ))
- feat(nestjs): Remove `SentryTracingInterceptor`, `SentryGlobalGraphQLFilter`, `SentryGlobalGenericFilter` ([#​14761](https://redirect.github.com/getsentry/sentry-javascript/issues/14761 ))
- feat(nextjs): Directly forward `sourcemaps.disable` to webpack plugin ([#​15109](https://redirect.github.com/getsentry/sentry-javascript/issues/15109 ))
- feat(node): Add `processSessionIntegration` ([#​15081](https://redirect.github.com/getsentry/sentry-javascript/issues/15081 ))
- feat(node): Add missing `vercelAIIntegration` export ([#​15318](https://redirect.github.com/getsentry/sentry-javascript/issues/15318 ))
- feat(node): Capture exceptions from `worker_threads` ([#​15105](https://redirect.github.com/getsentry/sentry-javascript/issues/15105 ))
- feat(nuxt): Add enabled to disable Sentry module ([#​15337](https://redirect.github.com/getsentry/sentry-javascript/issues/15337 ))
- feat(nuxt): add `silent`, `errorHandler`, `release` to `SourceMapsOptions` ([#​15246](https://redirect.github.com/getsentry/sentry-javascript/issues/15246 ))
- feat(profiling-node): Use `@sentry-internal/node-cpu-profiler` ([#​15208](https://redirect.github.com/getsentry/sentry-javascript/issues/15208 ))
- feat(replay): Update fflate to 0.8.2 ([#​14867](https://redirect.github.com/getsentry/sentry-javascript/issues/14867 ))
- feat(solidstart): Add `autoInjectServerSentry: 'experimental_dynamic-import` ([#​14863](https://redirect.github.com/getsentry/sentry-javascript/issues/14863 ))
- feat(sveltekit): Only inject fetch proxy script for SvelteKit < 2.16.0 ([#​15126](https://redirect.github.com/getsentry/sentry-javascript/issues/15126 ))
- feat(user feedback): Adds draw tool for UF screenshot annotations ([#​15062](https://redirect.github.com/getsentry/sentry-javascript/issues/15062 ))
- feat(user feedback): Adds toolbar for cropping and annotating ([#​15282](https://redirect.github.com/getsentry/sentry-javascript/issues/15282 ))
- feat: Avoid class fields all-together ([#​14887](https://redirect.github.com/getsentry/sentry-javascript/issues/14887 ))
- feat: Only emit `__esModule` properties in CJS modules when there is a default export ([#​15018](https://redirect.github.com/getsentry/sentry-javascript/issues/15018 ))
- feat: Pass `parentSampleRate` to `tracesSampler` ([#​15024](https://redirect.github.com/getsentry/sentry-javascript/issues/15024 ))
- feat: Propagate and use a sampling random ([#​14989](https://redirect.github.com/getsentry/sentry-javascript/issues/14989 ))
- fix(browser): Remove `browserPerformanceTimeOrigin` side-effects ([#​14025](https://redirect.github.com/getsentry/sentry-javascript/issues/14025 ))
- fix(core): Ensure debugIds are applied to all exceptions in an event ([#​14881](https://redirect.github.com/getsentry/sentry-javascript/issues/14881 ))
- fix(core): Fork scope if custom scope is passed to `startSpanManual` ([#​14901](https://redirect.github.com/getsentry/sentry-javascript/issues/14901 ))
- fix(core): Fork scope if custom scope is passed to `startSpan` ([#​14900](https://redirect.github.com/getsentry/sentry-javascript/issues/14900 ))
- fix(core): Only fall back to `sendDefaultPii` for IP collection in `requestDataIntegration` ([#​15125](https://redirect.github.com/getsentry/sentry-javascript/issues/15125 ))
- fix(nextjs): Flush with `waitUntil` in `captureRequestError` ([#​15146](https://redirect.github.com/getsentry/sentry-javascript/issues/15146 ))
- fix(nextjs): Use batched devserver symbolication endpoint ([#​15335](https://redirect.github.com/getsentry/sentry-javascript/issues/15335 ))
- fix(node): Don't leak `__span` property into breadcrumbs ([#​14798](https://redirect.github.com/getsentry/sentry-javascript/issues/14798 ))
- fix(node): Ensure `httpIntegration` propagates traces ([#​15233](https://redirect.github.com/getsentry/sentry-javascript/issues/15233 ))
- fix(node): Fix sample rand propagation for negative sampling decisions ([#​15045](https://redirect.github.com/getsentry/sentry-javascript/issues/15045 ))
- fix(node): Missing `release` from ANR sessions ([#​15138](https://redirect.github.com/getsentry/sentry-javascript/issues/15138 ))
- fix(node): Set the correct fallback URL fields for outgoing https requests if they are not defined ([#​15316](https://redirect.github.com/getsentry/sentry-javascript/issues/15316 ))
- fix(nuxt): Detect Azure Function runtime for flushing with timeout ([#​15288](https://redirect.github.com/getsentry/sentry-javascript/issues/15288 ))
- fix(react): From location can be undefined in Tanstack Router Instrumentation ([#​15235](https://redirect.github.com/getsentry/sentry-javascript/issues/15235 ))
- fix(react): Import default for hoistNonReactStatics ([#​15238](https://redirect.github.com/getsentry/sentry-javascript/issues/15238 ))
- fix(react): Support lazy-loaded routes and components. ([#​15039](https://redirect.github.com/getsentry/sentry-javascript/issues/15039 ))
- fix(solidstart): Do not copy release-injection map file ([#​15302](https://redirect.github.com/getsentry/sentry-javascript/issues/15302 ))
- ref(browser): Improve active span handling for `browserTracingIntegration` ([#​14959](https://redirect.github.com/getsentry/sentry-javascript/issues/14959 ))
- ref(browser): Improve setting of propagation scope for navigation spans ([#​15108](https://redirect.github.com/getsentry/sentry-javascript/issues/15108 ))
- ref(browser): Skip browser extension warning in non-debug builds ([#​15310](https://redirect.github.com/getsentry/sentry-javascript/issues/15310 ))
- ref(browser): Update `supportsHistory` check & history usage ([#​14696](https://redirect.github.com/getsentry/sentry-javascript/issues/14696 ))
- ref(core): Ensure non-recording root spans have frozen DSC ([#​14964](https://redirect.github.com/getsentry/sentry-javascript/issues/14964 ))
- ref(core): Log debug message when capturing error events ([#​14701](https://redirect.github.com/getsentry/sentry-javascript/issues/14701 ))
- ref(core): Move log message about invalid sample rate ([#​15215](https://redirect.github.com/getsentry/sentry-javascript/issues/15215 ))
- ref(node): Streamline check for adding performance integrations ([#​15021](https://redirect.github.com/getsentry/sentry-javascript/issues/15021 ))
- ref(react): Adapt tanstack router type ([#​15241](https://redirect.github.com/getsentry/sentry-javascript/issues/15241 ))
- ref(svelte): Remove SvelteKit detection ([#​15313](https://redirect.github.com/getsentry/sentry-javascript/issues/15313 ))
- ref(sveltekit): Clean up sub-request check ([#​15251](https://redirect.github.com/getsentry/sentry-javascript/issues/15251 ))
Work in this release was contributed by [@​aloisklink](https://redirect.github.com/aloisklink ), [@​arturovt](https://redirect.github.com/arturovt ), [@​aryanvdesh](https://redirect.github.com/aryanvdesh ), [@​benjick](https://redirect.github.com/benjick ), [@​chris-basebone](https://redirect.github.com/chris-basebone ), [@​davidturissini](https://redirect.github.com/davidturissini ), [@​GrizliK1988](https://redirect.github.com/GrizliK1988 ), [@​jahands](https://redirect.github.com/jahands ), [@​jrandolf](https://redirect.github.com/jrandolf ), [@​kunal-511](https://redirect.github.com/kunal-511 ), [@​maximepvrt](https://redirect.github.com/maximepvrt ), [@​maxmaxme](https://redirect.github.com/maxmaxme ), [@​mstrokin](https://redirect.github.com/mstrokin ), [@​nathankleyn](https://redirect.github.com/nathankleyn ), [@​nwalters512](https://redirect.github.com/nwalters512 ), [@​tannerlinsley](https://redirect.github.com/tannerlinsley ), [@​tjhiggins](https://redirect.github.com/tjhiggins ), and [@​Zen-cronic](https://redirect.github.com/Zen-cronic ). Thank you for your contributions!
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-02-28 14:09:36 +00:00