mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 12:28:42 +00:00
681c61a30046dcf6a9d5e0a7a0e35e67abd29d74
5799 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
681c61a300 |
chore(admin): allow config avatar public path (#11689)
close #11677 |
||
|
|
ecdaea9176 |
chore: bump up i18next version to v25 (#11705)
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [i18next](https://www.i18next.com) ([source](https://redirect.github.com/i18next/i18next)) | [`^24.1.0` -> `^25.0.0`](https://renovatebot.com/diffs/npm/i18next/24.2.3/25.0.0) | [](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>i18next/i18next (i18next)</summary> ### [`v25.0.0`](https://redirect.github.com/i18next/i18next/blob/HEAD/CHANGELOG.md#2500) [Compare Source](https://redirect.github.com/i18next/i18next/compare/v24.2.3...v25.0.0) **This is a potentially breaking release:** - fix multiple changeLanguage call that may have result in wrong order in previous versions [1605](https://redirect.github.com/i18next/i18next/issues/1605) [2298](https://redirect.github.com/i18next/i18next/pull/2298) - adapt `changeLanguage` to always (string or array) use `getBestMatchFromCodes` [2299](https://redirect.github.com/i18next/i18next/issues/2299) - `getBestMatchFromCodes` now tries to fallback to language code with same script [2299](https://redirect.github.com/i18next/i18next/issues/2299) </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 this update 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzguMCIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> |
||
|
|
7257f1b55b |
chore(server): remove enable flag in mail config (#11680)
close #11625 |
||
|
|
b249939093 |
chore: bump up prisma monorepo to v6 (major) (#8964)
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@prisma/client](https://www.prisma.io) ([source](https://redirect.github.com/prisma/prisma/tree/HEAD/packages/client)) | [`^5.22.0` -> `^6.0.0`](https://renovatebot.com/diffs/npm/@prisma%2fclient/5.22.0/6.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/) | | [@prisma/instrumentation](https://www.prisma.io) ([source](https://redirect.github.com/prisma/prisma/tree/HEAD/packages/instrumentation)) | [`^5.22.0` -> `^6.0.0`](https://renovatebot.com/diffs/npm/@prisma%2finstrumentation/5.22.0/6.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/) | | [prisma](https://www.prisma.io) ([source](https://redirect.github.com/prisma/prisma/tree/HEAD/packages/cli)) | [`^5.22.0` -> `^6.0.0`](https://renovatebot.com/diffs/npm/prisma/5.22.0/6.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>prisma/prisma (@​prisma/client)</summary> ### [`v6.0.1`](https://redirect.github.com/prisma/prisma/compare/6.0.0...6.0.1) [Compare Source](https://redirect.github.com/prisma/prisma/compare/6.0.0...6.0.1) ### [`v6.0.0`](https://redirect.github.com/prisma/prisma/releases/tag/6.0.0) [Compare Source](https://redirect.github.com/prisma/prisma/compare/5.22.0...6.0.0) We’re excited to share the Prisma ORM v6 release today 🎉 As this is a major release, it includes a few breaking changes that may affect your application. Before upgrading, we recommend that you check out our [upgrade guide](https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-6) to understand the impact on your application. If you want to have an overview of what we accomplished since v5, check out our announcement blog post: [Prisma 6: Better Performance, More Flexibility & Type-Safe SQL](https://www.prisma.io/blog/prisma-6-better-performance-more-flexibility-and-type-safe-sql). 🌟 **Help us spread the word about Prisma by starring the repo ☝️ or [posting on X](https://twitter.com/intent/tweet?text=Check%20out%20the%20latest%20@​prisma%20release%20v6.0.0%20%F0%9F%9A%80%0D%0A%0D%0Ahttps://github.com/prisma/prisma/releases/tag/6.0.0) about the release.** ##### Breaking changes ⚠️ This section contains a list of breaking changes. If you upgrade your application to Prisma ORM v6 without addressing these, your application is going to break! **For detailed upgrade instructions, check out the [upgrade guide](https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-6).** ⚠️ ##### Minimum supported Node.js versions The new minimum supported Node.js versions for Prisma ORM v6 are: - for Node.js 18 the minimum supported version is **18.18.0** - for Node.js 20 the minimum supported version is **20.9.0** - for Node.js 22 the minimum supported version is **22.11.0** There is no official support for Node.js <18.18.0, 19, 21, 23. ##### Minimum supported TypeScript version The new minimum supported TypeScript version for Prisma ORM v6 is: **5.1.0**. ##### Schema change for implicit m-n relations on PostgreSQL If you're using PostgreSQL and are defining [implicit many-to-many relations](https://www.prisma.io/docs/orm/prisma-schema/data-model/relations/many-to-many-relations#implicit-many-to-many-relations) in your Prisma schema, Prisma ORM maintains the [relation table](https://www.prisma.io/docs/orm/prisma-schema/data-model/relations/many-to-many-relations#relation-tables) for you under the hood. This relation table has `A` and `B` columns to represent the tables of the models that are part of this relation. Previous versions of Prisma ORM used to create a *unique index* on these two columns. In Prisma v6, this unique index is changing to a *primary key* in order to [simplify for the default replica identity behaviour](https://redirect.github.com/prisma/prisma/issues/25196). If you're defining implicit m-n relations in your Prisma schema, the next migration you'll create will contain `ALTER TABLE` statements for *all* the relation tables that belong to these relations. ##### Full-text search on PostgreSQL The `fullTextSearch` Preview feature is promoted to General Availability only for MySQL. This means that if you're using PostgreSQL and currently make use of this Preview feature, you now need to use the new `fullTextSearchPostgres` Preview feature. ##### Usage of `Buffer` Prisma v6 replaces the usage of [`Buffer`](https://nodejs.org/api/buffer.html) with [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) to represent fields of type `Bytes`. Make sure to replace all your occurrences of the `Buffer` type with the new `Uint8Array`. ##### Removed `NotFoundError` In Prisma v6, we removed the `NotFoundError` in favor of `PrismaClientKnownRequestError` with error code [`P2025`](https://www.prisma.io/docs/orm/reference/error-reference#p2025) in [`findUniqueOrThrow()`](https://www.prisma.io/docs/orm/reference/prisma-client-reference#finduniqueorthrow) and [`findFirstOrThrow()`](https://www.prisma.io/docs/orm/reference/prisma-client-reference#findfirstorthrow). If you've relied on catching `NotFoundError` instances in your code, you need to adjust the code accordingly. ##### New keywords that can't be used as model names: `async`, `await`, `using` With this release, you can't use `async`, `await` and `using` as model names any more. *** ⚠️ **For detailed upgrade instructions, check out the [upgrade guide](https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-6).** ⚠️ ##### Preview features promoted to General Availability In this release, we are promoting a number of [Preview](https://www.prisma.io/docs/orm/more/releases#preview) features to [General Availability](https://www.prisma.io/docs/orm/more/releases#generally-available-ga). ##### `fullTextIndex` If you use the [full-text index](https://www.prisma.io/docs/orm/prisma-schema/data-model/indexes#full-text-indexes-mysql-and-mongodb) feature in your app, you can now remove `fullTextIndex` from the `previewFeatures` in your Prisma schema: ```diff generator client { provider = "prisma-client-js" - previewFeatures = ["fullTextIndex"] } ``` ##### `fullTextSearch` If you use the [full-text search](https://www.prisma.io/docs/orm/prisma-client/queries/full-text-search) feature with **MySQL** in your app, you can now remove `fullTextSearch` from the `previewFeatures` in your Prisma schema: ```diff generator client { provider = "prisma-client-js" - previewFeatures = ["fullTextSearch"] } ``` If you are using it with **PostgreSQL**, you need to update the name of the feature flag to `fullTextSearchPostgres`: ```diff generator client { provider = "prisma-client-js" - previewFeatures = ["fullTextSearch"] + previewFeatures = ["fullTextSearchPostgres"] } ``` ##### New features We are also releasing new features with this release: - [cuid2() support](https://redirect.github.com/prisma/prisma-engines/pull/5047) - [Include unused enum definitions in `prisma generate`'s output](https://redirect.github.com/prisma/prisma/pull/25740) - [Improved compatibility with Deno 2](https://redirect.github.com/prisma/prisma/pull/25734) ##### Company news ##### 🚀 Prisma Postgres is free during Early Access In case you missed it: We recently launched [Prisma Postgres](https://www.prisma.io/blog/announcing-prisma-postgres-early-access), a serverless database with zero cold starts, a generous free tier, connection pooling, real-time events, and a lot more! It’s entirely free during the Early Access phase, try it now! ##### ✨ Let us know what you think of Prisma ORM We're always trying to improve! If you've recently used Prisma ORM, we'd appreciate hearing your thoughts about your experience via this [2min survey](https://pris.ly/orm/survey/release-5-22). </details> <details> <summary>prisma/prisma (@​prisma/instrumentation)</summary> ### [`v6.0.1`](https://redirect.github.com/prisma/prisma/releases/tag/6.0.1) [Compare Source](https://redirect.github.com/prisma/prisma/compare/6.0.0...6.0.1) Today we are releasing the `6.0.1` patch release to address an issue with using Prisma Client generated in a custom output path with Next.js. ##### Changes - [Revert `"type": "commonjs"` addition in generated `package.json`](https://redirect.github.com/prisma/prisma/pull/25767) ### [`v6.0.0`](https://redirect.github.com/prisma/prisma/releases/tag/6.0.0) [Compare Source](https://redirect.github.com/prisma/prisma/compare/5.22.0...6.0.0) We’re excited to share the Prisma ORM v6 release today 🎉 As this is a major release, it includes a few breaking changes that may affect your application. Before upgrading, we recommend that you check out our [upgrade guide](https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-6) to understand the impact on your application. If you want to have an overview of what we accomplished since v5, check out our announcement blog post: [Prisma 6: Better Performance, More Flexibility & Type-Safe SQL](https://www.prisma.io/blog/prisma-6-better-performance-more-flexibility-and-type-safe-sql). 🌟 **Help us spread the word about Prisma by starring the repo ☝️ or [posting on X](https://twitter.com/intent/tweet?text=Check%20out%20the%20latest%20@​prisma%20release%20v6.0.0%20%F0%9F%9A%80%0D%0A%0D%0Ahttps://github.com/prisma/prisma/releases/tag/6.0.0) about the release.** #### Breaking changes ⚠️ This section contains a list of breaking changes. If you upgrade your application to Prisma ORM v6 without addressing these, your application is going to break! **For detailed upgrade instructions, check out the [upgrade guide](https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-6).** ⚠️ ##### Minimum supported Node.js versions The new minimum supported Node.js versions for Prisma ORM v6 are: - for Node.js 18 the minimum supported version is **18.18.0** - for Node.js 20 the minimum supported version is **20.9.0** - for Node.js 22 the minimum supported version is **22.11.0** There is no official support for Node.js <18.18.0, 19, 21, 23. ##### Minimum supported TypeScript version The new minimum supported TypeScript version for Prisma ORM v6 is: **5.1.0**. ##### Schema change for implicit m-n relations on PostgreSQL If you're using PostgreSQL and are defining [implicit many-to-many relations](https://www.prisma.io/docs/orm/prisma-schema/data-model/relations/many-to-many-relations#implicit-many-to-many-relations) in your Prisma schema, Prisma ORM maintains the [relation table](https://www.prisma.io/docs/orm/prisma-schema/data-model/relations/many-to-many-relations#relation-tables) for you under the hood. This relation table has `A` and `B` columns to represent the tables of the models that are part of this relation. Previous versions of Prisma ORM used to create a *unique index* on these two columns. In Prisma v6, this unique index is changing to a *primary key* in order to [simplify for the default replica identity behaviour](https://redirect.github.com/prisma/prisma/issues/25196). If you're defining implicit m-n relations in your Prisma schema, the next migration you'll create will contain `ALTER TABLE` statements for *all* the relation tables that belong to these relations. ##### Full-text search on PostgreSQL The `fullTextSearch` Preview feature is promoted to General Availability only for MySQL. This means that if you're using PostgreSQL and currently make use of this Preview feature, you now need to use the new `fullTextSearchPostgres` Preview feature. ##### Usage of `Buffer` Prisma v6 replaces the usage of [`Buffer`](https://nodejs.org/api/buffer.html) with [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) to represent fields of type `Bytes`. Make sure to replace all your occurrences of the `Buffer` type with the new `Uint8Array`. ##### Removed `NotFoundError` In Prisma v6, we removed the `NotFoundError` in favor of `PrismaClientKnownRequestError` with error code [`P2025`](https://www.prisma.io/docs/orm/reference/error-reference#p2025) in [`findUniqueOrThrow()`](https://www.prisma.io/docs/orm/reference/prisma-client-reference#finduniqueorthrow) and [`findFirstOrThrow()`](https://www.prisma.io/docs/orm/reference/prisma-client-reference#findfirstorthrow). If you've relied on catching `NotFoundError` instances in your code, you need to adjust the code accordingly. ##### New keywords that can't be used as model names: `async`, `await`, `using` With this release, you can't use `async`, `await` and `using` as model names any more. *** ⚠️ **For detailed upgrade instructions, check out the [upgrade guide](https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-6).** ⚠️ #### Preview features promoted to General Availability In this release, we are promoting a number of [Preview](https://www.prisma.io/docs/orm/more/releases#preview) features to [General Availability](https://www.prisma.io/docs/orm/more/releases#generally-available-ga). ##### `fullTextIndex` If you use the [full-text index](https://www.prisma.io/docs/orm/prisma-schema/data-model/indexes#full-text-indexes-mysql-and-mongodb) feature in your app, you can now remove `fullTextIndex` from the `previewFeatures` in your Prisma schema: ```diff generator client { provider = "prisma-client-js" - previewFeatures = ["fullTextIndex"] } ``` ##### `fullTextSearch` If you use the [full-text search](https://www.prisma.io/docs/orm/prisma-client/queries/full-text-search) feature with **MySQL** in your app, you can now remove `fullTextSearch` from the `previewFeatures` in your Prisma schema: ```diff generator client { provider = "prisma-client-js" - previewFeatures = ["fullTextSearch"] } ``` If you are using it with **PostgreSQL**, you need to update the name of the feature flag to `fullTextSearchPostgres`: ```diff generator client { provider = "prisma-client-js" - previewFeatures = ["fullTextSearch"] + previewFeatures = ["fullTextSearchPostgres"] } ``` #### New features We are also releasing new features with this release: - [cuid2() support](https://redirect.github.com/prisma/prisma-engines/pull/5047) - [Include unused enum definitions in `prisma generate`'s output](https://redirect.github.com/prisma/prisma/pull/25740) - [Improved compatibility with Deno 2](https://redirect.github.com/prisma/prisma/pull/25734) #### Company news ##### 🚀 Prisma Postgres is free during Early Access In case you missed it: We recently launched [Prisma Postgres](https://www.prisma.io/blog/announcing-prisma-postgres-early-access), a serverless database with zero cold starts, a generous free tier, connection pooling, real-time events, and a lot more! It’s entirely free during the Early Access phase, try it now! ##### ✨ Let us know what you think of Prisma ORM We're always trying to improve! If you've recently used Prisma ORM, we'd appreciate hearing your thoughts about your experience via this [2min survey](https://pris.ly/orm/survey/release-5-22). </details> <details> <summary>prisma/prisma (prisma)</summary> ### [`v6.0.1`](https://redirect.github.com/prisma/prisma/compare/6.0.0...6.0.1) [Compare Source](https://redirect.github.com/prisma/prisma/compare/6.0.0...6.0.1) ### [`v6.0.0`](https://redirect.github.com/prisma/prisma/releases/tag/6.0.0) [Compare Source](https://redirect.github.com/prisma/prisma/compare/5.22.0...6.0.0) We’re excited to share the Prisma ORM v6 release today 🎉 As this is a major release, it includes a few breaking changes that may affect your application. Before upgrading, we recommend that you check out our [upgrade guide](https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-6) to understand the impact on your application. If you want to have an overview of what we accomplished since v5, check out our announcement blog post: [Prisma 6: Better Performance, More Flexibility & Type-Safe SQL](https://www.prisma.io/blog/prisma-6-better-performance-more-flexibility-and-type-safe-sql). 🌟 **Help us spread the word about Prisma by starring the repo ☝️ or [posting on X](https://twitter.com/intent/tweet?text=Check%20out%20the%20latest%20@​prisma%20release%20v6.0.0%20%F0%9F%9A%80%0D%0A%0D%0Ahttps://github.com/prisma/prisma/releases/tag/6.0.0) about the release.** ##### Breaking changes ⚠️ This section contains a list of breaking changes. If you upgrade your application to Prisma ORM v6 without addressing these, your application is going to break! **For detailed upgrade instructions, check out the [upgrade guide](https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-6).** ⚠️ ##### Minimum supported Node.js versions The new minimum supported Node.js versions for Prisma ORM v6 are: - for Node.js 18 the minimum supported version is **18.18.0** - for Node.js 20 the minimum supported version is **20.9.0** - for Node.js 22 the minimum supported version is **22.11.0** There is no official support for Node.js <18.18.0, 19, 21, 23. ##### Minimum supported TypeScript version The new minimum supported TypeScript version for Prisma ORM v6 is: **5.1.0**. ##### Schema change for implicit m-n relations on PostgreSQL If you're using PostgreSQL and are defining [implicit many-to-many relations](https://www.prisma.io/docs/orm/prisma-schema/data-model/relations/many-to-many-relations#implicit-many-to-many-relations) in your Prisma schema, Prisma ORM maintains the [relation table](https://www.prisma.io/docs/orm/prisma-schema/data-model/relations/many-to-many-relations#relation-tables) for you under the hood. This relation table has `A` and `B` columns to represent the tables of the models that are part of this relation. Previous versions of Prisma ORM used to create a *unique index* on these two columns. In Prisma v6, this unique index is changing to a *primary key* in order to [simplify for the default replica identity behaviour](https://redirect.github.com/prisma/prisma/issues/25196). If you're defining implicit m-n relations in your Prisma schema, the next migration you'll create will contain `ALTER TABLE` statements for *all* the relation tables that belong to these relations. ##### Full-text search on PostgreSQL The `fullTextSearch` Preview feature is promoted to General Availability only for MySQL. This means that if you're using PostgreSQL and currently make use of this Preview feature, you now need to use the new `fullTextSearchPostgres` Preview feature. ##### Usage of `Buffer` Prisma v6 replaces the usage of [`Buffer`](https://nodejs.org/api/buffer.html) with [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) to represent fields of type `Bytes`. Make sure to replace all your occurrences of the `Buffer` type with the new `Uint8Array`. ##### Removed `NotFoundError` In Prisma v6, we removed the `NotFoundError` in favor of `PrismaClientKnownRequestError` with error code [`P2025`](https://www.prisma.io/docs/orm/reference/error-reference#p2025) in [`findUniqueOrThrow()`](https://www.prisma.io/docs/orm/reference/prisma-client-reference#finduniqueorthrow) and [`findFirstOrThrow()`](https://www.prisma.io/docs/orm/reference/prisma-client-reference#findfirstorthrow). If you've relied on catching `NotFoundError` instances in your code, you need to adjust the code accordingly. ##### New keywords that can't be used as model names: `async`, `await`, `using` With this release, you can't use `async`, `await` and `using` as model names any more. *** ⚠️ **For detailed upgrade instructions, check out the [upgrade guide](https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-6).** ⚠️ ##### Preview features promoted to General Availability In this release, we are promoting a number of [Preview](https://www.prisma.io/docs/orm/more/releases#preview) features to [General Availability](https://www.prisma.io/docs/orm/more/releases#generally-available-ga). ##### `fullTextIndex` If you use the [full-text index](https://www.prisma.io/docs/orm/prisma-schema/data-model/indexes#full-text-indexes-mysql-and-mongodb) feature in your app, you can now remove `fullTextIndex` from the `previewFeatures` in your Prisma schema: ```diff generator client { provider = "prisma-client-js" - previewFeatures = ["fullTextIndex"] } ``` ##### `fullTextSearch` If you use the [full-text search](https://www.prisma.io/docs/orm/prisma-client/queries/full-text-search) feature with **MySQL** in your app, you can now remove `fullTextSearch` from the `previewFeatures` in your Prisma schema: ```diff generator client { provider = "prisma-client-js" - previewFeatures = ["fullTextSearch"] } ``` If you are using it with **PostgreSQL**, you need to update the name of the feature flag to `fullTextSearchPostgres`: ```diff generator client { provider = "prisma-client-js" - previewFeatures = ["fullTextSearch"] + previewFeatures = ["fullTextSearchPostgres"] } ``` ##### New features We are also releasing new features with this release: - [cuid2() support](https://redirect.github.com/prisma/prisma-engines/pull/5047) - [Include unused enum definitions in `prisma generate`'s output](https://redirect.github.com/prisma/prisma/pull/25740) - [Improved compatibility with Deno 2](https://redirect.github.com/prisma/prisma/pull/25734) ##### Company news ##### 🚀 Prisma Postgres is free during Early Access In case you missed it: We recently launched [Prisma Postgres](https://www.prisma.io/blog/announcing-prisma-postgres-early-access), a serverless database with zero cold starts, a generous free tier, connection pooling, real-time events, and a lot more! It’s entirely free during the Early Access phase, try it now! ##### ✨ Let us know what you think of Prisma ORM We're always trying to improve! If you've recently used Prisma ORM, we'd appreciate hearing your thoughts about your experience via this [2min survey](https://pris.ly/orm/survey/release-5-22). </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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> |
||
|
|
8ca675b2ec |
fix(editor): improve pdf embed viewer UX (#11641)
Closes: [BS-3101](https://linear.app/affine-design/issue/BS-3101/pdf-embed-模式的选中框选-和点开看详情有比较大的问题) ### What's Changed! * Fixed disable pointer event in native pdf viewer by dragging * Disable opening peek view with pdf viewer in readonly and sharing modes |
||
|
|
0df584bd5e |
refactor(core): add keyPress event to fix IME space detection (#11700)
### TL;DR Refactor space-triggered AI Widget activation logic from `keydown` to `keypress` event listeners ### Background The `keydown` event triggered by a space may originate from: 1. Normal space insertion 2. Space triggered by input method confirming candidate words In scenarios like (2), some browsers (see [ISSUE](https://github.com/toeverything/AFFiNE/issues/11541)) and input method callbacks produce events identical to scenario (1),making it impossible to distinguish between the two. To fix this, the space-activated AI listener uses the `keypress` event: In scenario 2, `event.which !== 32` (may be `30430` or other values) can be used to differentiate from scenario 1. > CLOSE BS-3081 |
||
|
|
46f3dfc64c | fix(core): audio player ux (#11685) | ||
|
|
7b2ae7f573 |
feat(core): adjust history modal styles (#11675)
- add avatar/name info to each history snapshot item - add avatar to audio transcription job owner fix AF-2483  |
||
|
|
e02b159bf4 |
feat(core): remove preview footnote hover effect config (#11695)
Close [BS-3115](https://linear.app/affine-design/issue/BS-3115/侧边栏-footnote-ui-和用户行为与编辑器内统一) |
||
|
|
575aa3c1c1 |
fix(editor): rework disable middle click settings for linux (#11556)
fix BS-3028 Unfortunately, I don't find out a way to disable this behavior on ff linux |
||
|
|
4011214451 |
fix(ios): avoid keyboard covering dialog (#11681)
close PD-2540 |
||
|
|
84ff54f9d7 | feat(server): make slide audio transcript parallel (#11692) | ||
|
|
ad712da07f | fix(server): slide audio override (#11688) | ||
|
|
f2f1a10715 | fix(server): initial user plan (#11687) | ||
|
|
1a2d6f25be | fix(android): nbstore laod error (#11674) | ||
|
|
ee15b364d1 |
fix(electron): use CG* instead of NS* (#11668)
I encounter the following error when developing locally. Not sure if the current PR is the correct fix.
```
thread '<unnamed>' panicked at packages/frontend/native/media_capture/src/macos/screen_capture_kit.rs:253:11:
invalid message send to -[NSImage initWithSize:]: expected argument at index 0 to have type code '{CGSize=dd}', but found '{NSSize=dd}'
```
|
||
|
|
2db7dea46f |
chore: bump up all non-major dependencies (#11618)
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | Type | Update | |---|---|---|---|---|---|---|---| | [@ai-sdk/openai](https://sdk.vercel.ai/docs) ([source](https://redirect.github.com/vercel/ai)) | [`1.3.9` -> `1.3.10`](https://renovatebot.com/diffs/npm/@ai-sdk%2fopenai/1.3.9/1.3.10) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [@aws-sdk/client-s3](https://redirect.github.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://redirect.github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.782.0` -> `3.787.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.782.0/3.787.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [@aws-sdk/s3-request-presigner](https://redirect.github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner) ([source](https://redirect.github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/s3-request-presigner)) | [`3.782.0` -> `3.787.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fs3-request-presigner/3.782.0/3.787.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [@faker-js/faker](https://fakerjs.dev) ([source](https://redirect.github.com/faker-js/faker)) | [`9.6.0` -> `9.7.0`](https://renovatebot.com/diffs/npm/@faker-js%2ffaker/9.6.0/9.7.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [@lit/context](https://lit.dev/) ([source](https://redirect.github.com/lit/lit/tree/HEAD/packages/context)) | [`1.1.4` -> `1.1.5`](https://renovatebot.com/diffs/npm/@lit%2fcontext/1.1.4/1.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [@smarttools/eslint-plugin-rxjs](https://redirect.github.com/DaveMBush/eslint-plugin-rxjs) | [`1.0.18` -> `1.0.19`](https://renovatebot.com/diffs/npm/@smarttools%2feslint-plugin-rxjs/1.0.18/1.0.19) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@swc/core](https://swc.rs) ([source](https://redirect.github.com/swc-project/swc)) | [`1.11.18` -> `1.11.20`](https://renovatebot.com/diffs/npm/@swc%2fcore/1.11.18/1.11.20) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`22.14.0` -> `22.14.1`](https://renovatebot.com/diffs/npm/@types%2fnode/22.14.0/22.14.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/) | dependencies | patch | | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`22.14.0` -> `22.14.1`](https://renovatebot.com/diffs/npm/@types%2fnode/22.14.0/22.14.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/) | devDependencies | patch | | [@types/react](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)) | [`19.1.0` -> `19.1.1`](https://renovatebot.com/diffs/npm/@types%2freact/19.1.0/19.1.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/) | devDependencies | patch | | [ai](https://sdk.vercel.ai/docs) ([source](https://redirect.github.com/vercel/ai)) | [`4.3.4` -> `4.3.5`](https://renovatebot.com/diffs/npm/ai/4.3.4/4.3.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [animejs](https://animejs.com) ([source](https://redirect.github.com/juliangarnier/anime)) | [`4.0.0` -> `4.0.1`](https://renovatebot.com/diffs/npm/animejs/4.0.0/4.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/) | dependencies | patch | | [anyhow](https://redirect.github.com/dtolnay/anyhow) | `1.0.97` -> `1.0.98` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [cc](https://redirect.github.com/rust-lang/cc-rs) | `1.2.18` -> `1.2.19` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | build-dependencies | patch | | [dotenv](https://redirect.github.com/motdotla/dotenv) | [`16.4.7` -> `16.5.0`](https://renovatebot.com/diffs/npm/dotenv/16.4.7/16.5.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [html-validate](https://html-validate.org) ([source](https://gitlab.com/html-validate/html-validate)) | [`9.5.2` -> `9.5.3`](https://renovatebot.com/diffs/npm/html-validate/9.5.2/9.5.3) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [ioredis](https://redirect.github.com/luin/ioredis) | [`5.6.0` -> `5.6.1`](https://renovatebot.com/diffs/npm/ioredis/5.6.0/5.6.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/) | dependencies | patch | | [jotai](https://redirect.github.com/pmndrs/jotai) | [`2.12.2` -> `2.12.3`](https://renovatebot.com/diffs/npm/jotai/2.12.2/2.12.3) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [lib0](https://redirect.github.com/dmonad/lib0) | [`0.2.102` -> `0.2.104`](https://renovatebot.com/diffs/npm/lib0/0.2.102/0.2.104) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [lib0](https://redirect.github.com/dmonad/lib0) | [`0.2.102` -> `0.2.104`](https://renovatebot.com/diffs/npm/lib0/0.2.102/0.2.104) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [lint-staged](https://redirect.github.com/lint-staged/lint-staged) | [`15.5.0` -> `15.5.1`](https://renovatebot.com/diffs/npm/lint-staged/15.5.0/15.5.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/) | devDependencies | patch | | [lit](https://lit.dev/) ([source](https://redirect.github.com/lit/lit/tree/HEAD/packages/lit)) | [`3.2.1` -> `3.3.0`](https://renovatebot.com/diffs/npm/lit/3.2.1/3.3.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [lit-html](https://lit.dev/) ([source](https://redirect.github.com/lit/lit/tree/HEAD/packages/lit-html)) | [`3.2.1` -> `3.3.0`](https://renovatebot.com/diffs/npm/lit-html/3.2.1/3.3.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [lucide-react](https://lucide.dev) ([source](https://redirect.github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react)) | [`^0.487.0` -> `^0.488.0`](https://renovatebot.com/diffs/npm/lucide-react/0.487.0/0.488.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [msw](https://mswjs.io) ([source](https://redirect.github.com/mswjs/msw)) | [`2.7.3` -> `2.7.4`](https://renovatebot.com/diffs/npm/msw/2.7.3/2.7.4) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [nodemailer](https://nodemailer.com/) ([source](https://redirect.github.com/nodemailer/nodemailer)) | [`6.10.0` -> `6.10.1`](https://renovatebot.com/diffs/npm/nodemailer/6.10.0/6.10.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/) | dependencies | patch | | [react-day-picker](https://daypicker.dev) ([source](https://redirect.github.com/gpbl/react-day-picker)) | [`9.6.5` -> `9.6.6`](https://renovatebot.com/diffs/npm/react-day-picker/9.6.5/9.6.6) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [sqlx](https://redirect.github.com/launchbadge/sqlx) | `0.8.3` -> `0.8.4` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [com.google.devtools.ksp](https://goo.gle/ksp) ([source](https://redirect.github.com/google/ksp)) | `2.1.20-1.0.32` -> `2.1.20-2.0.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | plugin | patch | | [org.jetbrains.kotlinx:kotlinx-serialization-json](https://redirect.github.com/Kotlin/kotlinx.serialization) | `1.8.0` -> `1.8.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/) | dependencies | patch | | [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://redirect.github.com/Kotlin/kotlinx.coroutines) | `1.10.1` -> `1.10.2` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [com.android.tools.build:gradle](https://developer.android.com/studio/build) ([source](https://android.googlesource.com/platform/tools/base)) | `8.7.2` -> `8.9.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/) | dependencies | minor | | [androidx.core:core-ktx](https://developer.android.com/jetpack/androidx/releases/core#1.16.0) ([source](https://cs.android.com/androidx/platform/frameworks/support)) | `1.15.0` -> `1.16.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [androidx.compose:compose-bom](https://developer.android.com/jetpack) | `2025.03.01` -> `2025.04.00` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | --- ### Release Notes <details> <summary>vercel/ai (@​ai-sdk/openai)</summary> ### [`v1.3.10`](https://redirect.github.com/vercel/ai/releases/tag/%40ai-sdk/openai%401.3.10) [Compare Source](https://redirect.github.com/vercel/ai/compare/@ai-sdk/openai@1.3.9...@ai-sdk/openai@1.3.10) ##### Patch Changes - [`dbe53e7`](https://redirect.github.com/vercel/ai/commit/dbe53e7): adding support for gpt-4o-search-preview and handling unsupported parameters - [`84ffaba`](https://redirect.github.com/vercel/ai/commit/84ffaba): fix: propagate openai transcription fixes </details> <details> <summary>aws/aws-sdk-js-v3 (@​aws-sdk/client-s3)</summary> ### [`v3.787.0`](https://redirect.github.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#37870-2025-04-10) [Compare Source](https://redirect.github.com/aws/aws-sdk-js-v3/compare/v3.782.0...v3.787.0) **Note:** Version bump only for package [@​aws-sdk/client-s3](https://redirect.github.com/aws-sdk/client-s3) </details> <details> <summary>aws/aws-sdk-js-v3 (@​aws-sdk/s3-request-presigner)</summary> ### [`v3.787.0`](https://redirect.github.com/aws/aws-sdk-js-v3/blob/HEAD/packages/s3-request-presigner/CHANGELOG.md#37870-2025-04-10) [Compare Source](https://redirect.github.com/aws/aws-sdk-js-v3/compare/v3.782.0...v3.787.0) **Note:** Version bump only for package [@​aws-sdk/s3-request-presigner](https://redirect.github.com/aws-sdk/s3-request-presigner) </details> <details> <summary>faker-js/faker (@​faker-js/faker)</summary> ### [`v9.7.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#970-2025-04-13) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.6.0...v9.7.0) ##### New Locales - **locale:** Add bn_BD locale ([#​3439](https://redirect.github.com/faker-js/faker/issues/3439)) ([fef0ad7]( |
||
|
|
2fd2c149a5 |
chore: bump up tldts version to v7 (#11662)
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [tldts](https://redirect.github.com/remusao/tldts) | [`^6.1.68` -> `^7.0.0`](https://renovatebot.com/diffs/npm/tldts/6.1.85/7.0.0) | [](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>remusao/tldts (tldts)</summary> ### [`v7.0.0`](https://redirect.github.com/remusao/tldts/blob/HEAD/CHANGELOG.md#v700-Sat-Apr-12-2025) [Compare Source](https://redirect.github.com/remusao/tldts/compare/v6.1.86...v7.0.0) ##### 💥 Breaking Change - `tldts-core`, `tldts-tests` - Fix inconsistent hostname validation in `getHostname` and `parse(url).hostname` when `validateHostname` is enabled [#​2262](https://redirect.github.com/remusao/tldts/pull/2262) ([@​remusao](https://redirect.github.com/remusao)) ##### Authors: 1 - Rémi ([@​remusao](https://redirect.github.com/remusao)) *** ### [`v6.1.86`](https://redirect.github.com/remusao/tldts/blob/HEAD/CHANGELOG.md#v6186-Sat-Apr-12-2025) [Compare Source](https://redirect.github.com/remusao/tldts/compare/v6.1.85...v6.1.86) ##### 📜 Update Public Suffix List - `tldts-experimental`, `tldts-icann`, `tldts` - Update upstream public suffix list [#​2311](https://redirect.github.com/remusao/tldts/pull/2311) ([@​remusao](https://redirect.github.com/remusao)) ##### 🔩 Dependencies - Bump axios from 1.7.7 to 1.8.4 [#​2318](https://redirect.github.com/remusao/tldts/pull/2318) ([@​dependabot\[bot\]](https://redirect.github.com/dependabot\[bot])) - Bump [@​rollup/plugin-node-resolve](https://redirect.github.com/rollup/plugin-node-resolve) from 16.0.0 to 16.0.1 [#​2303](https://redirect.github.com/remusao/tldts/pull/2303) ([@​dependabot\[bot\]](https://redirect.github.com/dependabot\[bot])) - Bump [@​babel/helpers](https://redirect.github.com/babel/helpers) from 7.24.7 to 7.26.10 [#​2306](https://redirect.github.com/remusao/tldts/pull/2306) ([@​dependabot\[bot\]](https://redirect.github.com/dependabot\[bot])) - Bump rollup from 4.34.8 to 4.39.0 [#​2314](https://redirect.github.com/remusao/tldts/pull/2314) ([@​dependabot\[bot\]](https://redirect.github.com/dependabot\[bot])) - Bump [@​types/node](https://redirect.github.com/types/node) from 22.13.5 to 22.14.0 [#​2315](https://redirect.github.com/remusao/tldts/pull/2315) ([@​dependabot\[bot\]](https://redirect.github.com/dependabot\[bot])) - Bump typescript from 5.7.3 to 5.8.3 [#​2316](https://redirect.github.com/remusao/tldts/pull/2316) ([@​dependabot\[bot\]](https://redirect.github.com/dependabot\[bot])) - Bump lerna from 8.2.0 to 8.2.2 [#​2317](https://redirect.github.com/remusao/tldts/pull/2317) ([@​dependabot\[bot\]](https://redirect.github.com/dependabot\[bot])) ##### Authors: 2 - [@​dependabot\[bot\]](https://redirect.github.com/dependabot\[bot]) - Rémi ([@​remusao](https://redirect.github.com/remusao)) *** </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 this update 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzguMCIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> |
||
|
|
00bd05897e |
feat(android): ai chat scaffold (#11124)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> Co-authored-by: eyhn <cneyhn@gmail.com> |
||
|
|
08dbaae19b |
chore: bump up jotai-effect version to v2 (#10262)
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [jotai-effect](https://jotai.org/docs/extensions/effect) ([source](https://redirect.github.com/jotaijs/jotai-effect)) | [`^1.0.5` -> `^2.0.0`](https://renovatebot.com/diffs/npm/jotai-effect/1.1.6/2.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>jotaijs/jotai-effect (jotai-effect)</summary> ### [`v2.0.1`](https://redirect.github.com/jotaijs/jotai-effect/compare/v2.0.0...v2.0.1) [Compare Source](https://redirect.github.com/jotaijs/jotai-effect/compare/v2.0.0...v2.0.1) ### [`v2.0.0`](https://redirect.github.com/jotaijs/jotai-effect/releases/tag/v2.0.0) [Compare Source](https://redirect.github.com/jotaijs/jotai-effect/compare/v1.1.6...v2.0.0) We’re excited to announce the release of **jotai-effect v2**, which brings a single but significant change to the core API: **`atomEffect` now runs synchronously** whenever it mounts or its dependencies change. This update improves consistency, helps avoid race conditions, and keeps related state changes in sync. *** #### What’s New? ##### Synchronous `atomEffect` - In v1, `atomEffect` would run **asynchronously** in the next microtask. - In v2, `atomEffect` runs **synchronously** on mount and whenever the dependencies it uses have changed. - **Batching is still supported** when you update multiple dependencies in a single writable atom. The effect runs only after that writable atom has finished all its updates, preventing partial updates or intermediate states. **Example:** ```ts const syncEffect = atomEffect((get, set) => { get(someAtom) set(anotherAtom) }) const store = createStore() store.set(someAtom, (v) => v + 1) // The effect above runs immediately, so anotherAtom is updated in the same microtask console.log(store.get(anotherAtom)) // Updated by atomEffect synchronously ``` When `someAtom` is updated, the effect runs **immediately**, updating `anotherAtom` in the same turn. If you update multiple atoms in the same writable atom, these changes are batched together, and `atomEffect` runs after those updates complete. *** #### Migration Guide For most users, **no change is required**. If you depended on the old microtask delay or cross-atom batching, read on. ##### 1. Adding back the microtask delay If your logic explicitly relied on `atomEffect` running in a separate microtask, you can reintroduce the delay yourself: **Before (v1)** ```ts const effect = atomEffect((get, set) => { console.log('effect') return () => { console.log('cleanup') } }) ``` **After (v2)** ```ts const effect = atomEffect((get, set) => { queueMicrotask(() => { console.log('effect') }) return () => { queueMicrotask(() => { console.log('cleanup') }) } }) ``` ##### 2. Batching updates In v1, updates to separate atoms were implicitly batched in the next microtask. In v2, **batching only occurs within a single writable atom update**: **Before (v1)** ```ts store.set(atomA, (v) => v + 1) store.set(atomB, (v) => v + 1) // atomEffect would 'see' both changes together in the next microtask ``` **After (v2)** ```ts const actionAtom = atom(null, (get, set) => { set(atomA, (v) => v + 1) set(atomB, (v) => v + 1) }) store.set(actionAtom) // atomEffect now runs after both updates, in one batch ``` *** ##### A Special Thanks to Daishi Kato I’d like to extend my deepest gratitude to **Daishi Kato**, author of Jotai. Daishi dedicated months of tireless work to rework and rewrite significant parts of the Jotai core—primarily to empower community library authors such as myself to implement features such as **synchronous effects** in jotai-effect. His willingness to refine Jotai’s internals and his thoughtfulness in API design made this effort possible. Thank you. ##### Final Thoughts - **Most code will just work** without any changes. - If you have specialized scenarios relying on microtask delays or separate updates to multiple atoms, you’ll need to wrap them in a single writable atom or manually queue the microtask. We hope these improvements make your state management more predictable and easier to reason about. If you have any issues, please feel free to open a GitHub [Discussion](https://redirect.github.com/jotaijs/jotai-effect/discussions). Happy coding! </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 this update 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2Ny4xIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> |
||
|
|
d494394c8d |
test(core): common setup for ai tests (#11644)
### TL:DR By sharing initialization logic, accelerate test case execution. ### What Changed * Global setup for copilot e2e * Login * Create Workspace * Enable fully parallel for ci ### Optimization Comparison Comparing with PR [fix(core): ask AI input box in the whiteboard is blocked by the menu …](https://github.com/toeverything/AFFiNE/pull/11634): | | Shard 1 |2|3|4|5|6|7|8| | ------|----|----|----|----|----|---|---|--| |Before|15min|14min|14min|14min|14min|13min|15min|10min| |After|8min|11min|8min|8min|8min|8min|8min|7min| ### Trade-Off Since all copilot use cases currently share a single user and workspace, some test cases need to focus on **isolation** and **independence**. For example, when testing Embedding-related workflows: * Different document contents should be used to avoid interference. * After each test case execution, **cleanup** operations are also required. * Some tests should be configured to **serial** mode. ```ts test.describe.configure({ mode: 'serial' }); test.describe('AIChatWith/Collections', () => { test.beforeEach(async ({ loggedInPage: page, utils }) => { await utils.testUtils.setupTestEnvironment(page); await utils.chatPanel.openChatPanel(page); await utils.editor.clearAllCollections(page); await utils.testUtils.createNewPage(page); }); test.afterEach(async ({ loggedInPage: page, utils }) => { // clear all collections await utils.editor.clearAllCollections(page); }); test('should support chat with collection', async ({ loggedInPage: page, utils, }) => { // Create two collections await utils.editor.createCollectionAndDoc( page, 'Collection 1', 'CollectionAAaa is a cute dog' ); await utils.chatPanel.chatWithCollections(page, ['Collection 1']); await utils.chatPanel.makeChat(page, 'What is CollectionAAaa(Use English)'); // ... }); test('should support chat with multiple collections', async ({ loggedInPage: page, utils, }) => { // Create two collections await utils.editor.createCollectionAndDoc( page, 'Collection 2', 'CollectionEEee is a cute cat' ); await utils.editor.createCollectionAndDoc( page, 'Collection 3', 'CollectionFFff is a cute dog' ); await utils.chatPanel.chatWithCollections(page, [ 'Collection 2', 'Collection 3', ]); await utils.chatPanel.makeChat( page, 'What is CollectionEEee? What is CollectionFFff?(Use English)' ); // ... }); }); ``` > CLOSE AI-51 |
||
|
|
1fc51bf95e |
chore: bump up animejs version to v4 (#11466)
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [animejs](https://animejs.com) ([source](https://redirect.github.com/juliangarnier/anime)) | [`^3.2.2` -> `^4.0.0`](https://renovatebot.com/diffs/npm/animejs/3.2.2/4.0.0) | [](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>juliangarnier/anime (animejs)</summary> ### [`v4.0.0`](https://redirect.github.com/juliangarnier/anime/releases/tag/4.0.0) [Compare Source](https://redirect.github.com/juliangarnier/anime/compare/v3.2.2...4.0.0) > **I'm still finalizing the release notes as there are MANY changes, but in the meantime, you can check out the brand new documentation [here](https://animejs.com/documentation).** The brand new Anime.js. ### API Breaking changes Every Anime.js feature is now exported as an ES Module. This is great for tree shaking, you don't have to ship the entire library anymore, only what you need. #### Animation The `anime(parameters)` function has been replaced with the `animate(targets, parameters)` module. The `targets` parameter has been replaced with a dedicated function parameter: `animate(targets, parameters)`. V3: ```javascript import anime from 'animejs'; const animation = anime({ targets: 'div', translateX: 100, }); ``` V4: ```javascript import { animate } from 'animejs'; const animation = animate('div', { translateX: 100, }); ``` #### Easings names The `ease` prefix has been removed: 'easeInOutQuad' -> 'inOutQuad'. #### Callbacks Callbacks have have been renamed like this: - `begin()` -> `onBegin()` - `update()` -> `onUpdate()` Here's all the change to the API ```diff - import anime from 'animejs'; + import { animate, createSpring, utils } from 'animejs'; - anime({ - targets: 'div', + animate('div', { translateX: 100, rotate: { - value: 360, + to: 360, - easing: 'spring(.7, 80, 10, .5)', + ease: createSpring({ mass: .7, damping: 80, stiffness: 10, velocity: .5}), }, - easing: 'easeinOutExpo', + ease: 'inOutExpo', - easing: () => t => Math.cos(t), + ease: t => Math.cos(t), - direction: 'reverse', + reversed: true, - direction: 'alternate', + alternate: true, - loop: 1, + loop: 0, - round: 100, + modifier: utils.round(2), - begin: () => {}, + onBegin: () => {}, - update: () => {}, + onUpdate: () => {}, - change: () => {}, + onRender: () => {}, - changeBegin: () => {}, - changeComplete: () => {}, - loopBegin: () => {}, - loopComplete: () => {}, + onLoop: () => {}, - complete: () => {}, + onComplete: () => {}, }); ``` #### Promises No more `.finished` property, promises are now handled directly with `animation.then()`: ```diff - import anime from 'animejs'; + import { animate, utils } from 'animejs'; - anime({ targets: target, prop: x }).finished.then(() => {}); + animate(target, { prop: x }).then(() => {}); ``` #### Values ##### To The object syntax `value` property has been renamed `to`: ```diff - translateX: { value: 100 } + translateX: { to: 100 } ``` #### Animation parameters ##### Default `easing` The new default easing is `'outQuad'` instead of `'easeOutElastic(1, .5)'`. ##### `composition` In V3 all animations coexist and overlaps with each other. This can cause animations with the same targets and animated properties to create weird results. V4 cancels a running tween if a new one is created on the same target with the same property. This behaviour can be confifugred using the new `composition` parameter. `composition: 'none'` // The old V3 behaviour, animations can overlaps `composition: 'replace'` // The new V4 default `composition: 'add'` // Creates additive animations by adding the values of the currently running animations with the new ones ##### `round` -> `modifier` The `round` parameter has been replaced with a more flexible parameters that allows you to define custom functions to transform the numerical value of an animation just before the rendering. ```diff - round: 100 + modifier: utils.round(2) ``` You can of course defines your own modifier functions like this: ```javascript const animation = animate('div', { translateX: '100rem', modifier: v => v % 10 // Note that the unit 'rem' will automatically be passed to the rendered value }); ``` #### Playback parameters ##### `direction` The `direction` parameter has been replaced with an `alternate` and `reversed` parameters V3: ```javascript const animation = anime({ targets: 'div', direction: 'reverse', // direction: 'alternate' It wasn't possible to combined reverse and alternate direction before }); ``` V4: ```javascript import { animate } from 'animejs'; const animation = animate('div', { translateX: 100, reversed: true, alternate: true, }); ``` #### Timelines: ```diff - import anime from 'animejs'; + import { createTimeline, stagger } from 'animejs'; - anime.timeline({ + createTimeline({ - duration: 500, - easing: 'easeInOutQuad', + defaults: { + duration: 500, + ease: 'inOutQuad', + } - loop: 2, + loop: 1, - }).add({ - targets: 'div', + }).add('div', { rotate: 90, }) - .add('.target:nth-child(1)', { opacity: 0, onComplete }, 0) - .add('.target:nth-child(2)', { opacity: 0, onComplete }, 100) - .add('.target:nth-child(3)', { opacity: 0, onComplete }, 200) - .add('.target:nth-child(4)', { opacity: 0, onComplete }, 300) + .add('.target', { opacity: 0, onComplete }, stagger(100)) ``` ##### Stagger ```diff - import anime from 'animejs'; + import { animate, stagger } from 'animejs'; - anime({ - targets: 'div', + animate('div', { - translateX: anime.stagger(100), + translateX: stagger(100), - delay: anime.stagger(100, { direction: 'reversed' }), + translateX: stagger(100, { reversed: true }), }); ``` #### SVG ```diff - import anime from 'animejs'; + import { animate, svg } from 'animejs'; - const path = anime.path('path'); + const { x, y, angle } = svg.createMotionPath('path'); - anime({ - targets: '#shape1', + animate('#shape1', { - points: '70 41 118.574 59.369 111.145 132.631 60.855 84.631 20.426 60.369', + points: svg.morphTo('#shape2'), - strokeDashoffset: [anime.setDashoffset, 0], + strokeDashoffset: svg.drawLine(), - translateX: path('x'), - translateY: path('y'), - rotate: path('angle'), + translateX: x, + translateY: y, + rotate: angle, }); ``` #### Utils ```diff - import anime from 'animejs'; + import { utils } from 'animejs'; - const value = anime.get('#target1', 'translateX'); + const value = utils.get('#target1', 'translateX'); - anime.set('#target1', { translateX: 100 }); + utils.set('#target1', { translateX: 100 }); - anime.remove('#target1'); + utils.remove('#target1'); - const rounded = anime.round(value); + const rounded = utils.round(value, 0); ``` #### Engine ```diff - import anime from 'animejs'; + import { engine } from 'animejs'; - anime.suspendWhenDocumentHidden = false; + engine.pauseWhenHidden = false; - anime.speed = .5; + engine.playbackRate = .5; ``` ### Improvements #### Performances Major performance boost and lower memory footprint. V4 has bee re-written from scratch by keeping performance in mind at every steps. #### Better tween composition The tween system has been refactored to improve animations behaviours when they overlaps. This fix lots of issues, especially when creating multiple animations with the same property on the same target. #### Additive animations You can also blend animations together with the new `composition: 'add'` parameter. #### Improved Timelines - Child animations can new be looped and reversed - Add supports for labels - Add supports for `.set()` in timeline - New position operators for more flexibility - Multi-target child animation can be positioned using the `stagger` function - Easier children defaults configuration - Greatly improved support for CSS transforms composition from one child animation to another ```javascript const tl = createTimeline({ playbackRate: .2, defaults: { duration: 500, easing: 'outQuad', } }); tl.add('START', 100) // Add a label a 100ms .set('.target', { opacity: 0 }) .add('.target', { translateY: 100, opacity: 1, onComplete: () => {}, }, stagger(100)) .add('.target', { scale: .75, }, 'START') .add('.target', { rotate: '1turn', }, '<<+=200') ``` #### Properties ##### CSS Variables You can now use CSS variables directly like any other property: ```javascript // Animate the values of the CSS variables '--radius' animate('#target', { '--radius': '20px' }); ``` ##### Animating *from* Animate *from* a value ```diff + translateX: { from: 50 } ``` ##### From -> To Even if the `[from, to]` shortcut is still valid in V4, you can now also write it like this: ```diff + translateX: { from: 50, to: 100 } ``` ##### Colors You can now animate hex colors with an alpha channel like '#F443' or '#FF444433'. #### Timers You can now create timers with the `createTimer` module. Timers can be use as replacement for `setTimeout`or `setInterval` but with all the playbacks parameters, callbacks and the `Promise` system provided by anime.js. ``` const interval = createTimer({ onLoop: () => { // do something every 500ms }, duration: 500, }); const timeout = createTimer({ onComplete: () => { // do something in 500ms }, duration: 500, }); const gameLogicLoop = createTimer({ frameRate: 30, onUpdate: gameSystems, }); const gameRenderLoop = createTimer({ frameRate: 60, onUpdate: gameRender, }); ``` #### Variable frame rate You can now change the frame rate to all animations or to a specific Timeline / Animation / Timer </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 this update 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMjcuMyIsInVwZGF0ZWRJblZlciI6IjM5LjIyNy4zIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> |
||
|
|
d6b4ee8172 | feat(mobile): ios selfhost server support (#11563) | ||
|
|
e1cb8198f1 |
fix(editor): android bs keyboard provider error (#11647)
### What Changes - fixed keyboard service can not be initialized since a anonymous `BSKeyboardWithActionService` class was provider to di - fixed tool panel was not closed when focus on other pragraph by clicking - optimized code structure of fallback `show` and `hide` of keyboard |
||
|
|
ac8464068d | test(server): improve server copilot test (#11596) | ||
|
|
e1e5e8fc14 |
feat(editor): add basic image support in turbo renderer (#11620)
This PR adds basic support for image block:  |
||
|
|
e73d68cac4 |
chore(server): fix spotify link preview (#11638)
close AF-2499 |
||
|
|
2f5647ac77 |
fix(editor): use img tag for link preview icon and banner (#11637)
close AF-2377 |
||
|
|
9c6d94f597 |
fix(core): hide start-with-ai if service feature is not enabled (#11633)
> CLOSE BS-3062 |
||
|
|
883b1d50f2 |
fix(core): ask AI input box in the whiteboard is blocked by the menu (#11634)
Close [AI-50](https://linear.app/affine-design/issue/AI-50).  |
||
|
|
4e1fcca876 |
fix: mind map preview rendering (#11565)
Fixes [BS-3080](https://linear.app/affine-design/issue/BS-3080/ai-生成-mindmap-预览失败) |
||
|
|
4f9a4e739a |
feat(editor): extract linked doc widget package (#11589)
Close [BS-2738](https://github.com/toeverything/AFFiNE/pull/11589) |
||
|
|
a5ab66d6cd |
feat(editor): add basic code support in turbo renderer (#11619)
This PR adds basic support for code block: [Screen Recording 2025-04-10 at 8.13.26 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/5d749979-f7f1-4e4d-ba5b-bc4ba29f8b83.mov" />](https://app.graphite.dev/media/video/lEGcysB4lFTEbCwZ8jMv/5d749979-f7f1-4e4d-ba5b-bc4ba29f8b83.mov) |
||
|
|
cb7f15296a | chore(ios): rename keyboard css var (#11595) | ||
|
|
16d5b0df95 | fix(core): fix event timing in storage (#11628) | ||
|
|
f0fb1447a4 | chore(core): update license price link (#11616) | ||
|
|
0f39ab4ea4 | fix(core): not revalidate notification count when logged out (#11617) | ||
|
|
a166760041 | fix(server): adjust expire time of invite link (#11609) | ||
|
|
e79e4c9e9b |
refactor(core): add version in worker url (#11614)
Co-authored-by: renovate <29139614+renovate@users.noreply.github.com> |
||
|
|
dba8e00fb6 |
feat(editor): add basic note support in turbo renderer (#11607)
After landing layout tree refactoring, this PR adds basic note support in turbo renderer. In this demo recording, the code and image block needs to be further supported. [Screen Recording 2025-04-10 at 5.16.15 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/2e416b41-5609-4e52-a90f-5b7bb77db682.mov" />](https://app.graphite.dev/media/video/lEGcysB4lFTEbCwZ8jMv/2e416b41-5609-4e52-a90f-5b7bb77db682.mov) |
||
|
|
c36dc9318c |
chore: bump up all non-major dependencies (#11600)
This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | Type | Update | |---|---|---|---|---|---|---|---| | [@react-email/components](https://redirect.github.com/resend/react-email) ([source](https://redirect.github.com/resend/react-email/tree/HEAD/packages/components)) | [`0.0.35` -> `0.0.36`](https://renovatebot.com/diffs/npm/@react-email%2fcomponents/0.0.35/0.0.36) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [bullmq](https://bullmq.io/) ([source](https://redirect.github.com/taskforcesh/bullmq)) | [`5.48.0` -> `5.48.1`](https://renovatebot.com/diffs/npm/bullmq/5.48.0/5.48.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/) | dependencies | patch | | [cc](https://redirect.github.com/rust-lang/cc-rs) | `1.2.17` -> `1.2.18` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | build-dependencies | patch | | [mimalloc](https://redirect.github.com/purpleprotocol/mimalloc_rust) | `0.1.45` -> `0.1.46` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [react-email](https://redirect.github.com/resend/react-email) ([source](https://redirect.github.com/resend/react-email/tree/HEAD/packages/react-email)) | [`4.0.3` -> `4.0.7`](https://renovatebot.com/diffs/npm/react-email/4.0.3/4.0.7) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [androidx.compose.material3:material3](https://developer.android.com/jetpack/androidx/releases/compose-material3#1.3.2) ([source](https://cs.android.com/androidx/platform/frameworks/support)) | `1.3.1` -> `1.3.2` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [org.jetbrains.kotlinx:kotlinx-coroutines-core](https://redirect.github.com/Kotlin/kotlinx.coroutines) | `1.10.1` -> `1.10.2` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://redirect.github.com/Kotlin/kotlinx.coroutines) | `1.10.1` -> `1.10.2` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [com.android.tools.build:gradle](https://developer.android.com/studio/build) ([source](https://android.googlesource.com/platform/tools/base)) | `8.7.2` -> `8.9.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/) | dependencies | minor | | [androidx.core:core-ktx](https://developer.android.com/jetpack/androidx/releases/core#1.16.0) ([source](https://cs.android.com/androidx/platform/frameworks/support)) | `1.15.0` -> `1.16.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | --- ### Release Notes <details> <summary>resend/react-email (@​react-email/components)</summary> ### [`v0.0.36`](https://redirect.github.com/resend/react-email/blob/HEAD/packages/components/CHANGELOG.md#0036) [Compare Source](https://redirect.github.com/resend/react-email/compare/@react-email/components@0.0.35...@react-email/components@0.0.36) ##### Patch Changes - Updated dependencies \[[`f4c5456`](https://redirect.github.com/resend/react-email/commit/f4c5456)] - Updated dependencies \[[`f4c5456`](https://redirect.github.com/resend/react-email/commit/f4c5456)] - [@​react-email/render](https://redirect.github.com/react-email/render)[@​1](https://redirect.github.com/1).0.6 - [@​react-email/code-block](https://redirect.github.com/react-email/code-block)[@​0](https://redirect.github.com/0).0.12 - [@​react-email/body](https://redirect.github.com/react-email/body)[@​0](https://redirect.github.com/0).0.11 - [@​react-email/button](https://redirect.github.com/react-email/button)[@​0](https://redirect.github.com/0).0.19 - [@​react-email/code-inline](https://redirect.github.com/react-email/code-inline)[@​0](https://redirect.github.com/0).0.5 - [@​react-email/column](https://redirect.github.com/react-email/column)[@​0](https://redirect.github.com/0).0.13 - [@​react-email/container](https://redirect.github.com/react-email/container)[@​0](https://redirect.github.com/0).0.15 - [@​react-email/font](https://redirect.github.com/react-email/font)[@​0](https://redirect.github.com/0).0.9 - [@​react-email/head](https://redirect.github.com/react-email/head)[@​0](https://redirect.github.com/0).0.12 - [@​react-email/heading](https://redirect.github.com/react-email/heading)[@​0](https://redirect.github.com/0).0.15 - [@​react-email/hr](https://redirect.github.com/react-email/hr)[@​0](https://redirect.github.com/0).0.11 - [@​react-email/html](https://redirect.github.com/react-email/html)[@​0](https://redirect.github.com/0).0.11 - [@​react-email/img](https://redirect.github.com/react-email/img)[@​0](https://redirect.github.com/0).0.11 - [@​react-email/link](https://redirect.github.com/react-email/link)[@​0](https://redirect.github.com/0).0.12 - [@​react-email/markdown](https://redirect.github.com/react-email/markdown)[@​0](https://redirect.github.com/0).0.14 - [@​react-email/preview](https://redirect.github.com/react-email/preview)[@​0](https://redirect.github.com/0).0.12 - [@​react-email/row](https://redirect.github.com/react-email/row)[@​0](https://redirect.github.com/0).0.12 - [@​react-email/section](https://redirect.github.com/react-email/section)[@​0](https://redirect.github.com/0).0.16 - [@​react-email/tailwind](https://redirect.github.com/react-email/tailwind)[@​1](https://redirect.github.com/1).0.4 - [@​react-email/text](https://redirect.github.com/react-email/text)[@​0](https://redirect.github.com/0).1.1 </details> <details> <summary>taskforcesh/bullmq (bullmq)</summary> ### [`v5.48.1`](https://redirect.github.com/taskforcesh/bullmq/compare/v5.48.0...b00731469ebbc65d35003c48da093e48c0ccc6ed) [Compare Source](https://redirect.github.com/taskforcesh/bullmq/compare/v5.48.0...v5.48.1) </details> <details> <summary>rust-lang/cc-rs (cc)</summary> ### [`v1.2.18`](https://redirect.github.com/rust-lang/cc-rs/blob/HEAD/CHANGELOG.md#1218---2025-04-04) [Compare Source](https://redirect.github.com/rust-lang/cc-rs/compare/cc-v1.2.17...cc-v1.2.18) ##### Other - Regenerate target info ([#​1450](https://redirect.github.com/rust-lang/cc-rs/pull/1450)) - Use `std::thread::available_parallelism` for determining the default number of jobs ([#​1447](https://redirect.github.com/rust-lang/cc-rs/pull/1447)) - Fix mips64-openwrt-linux-musl parsing ([#​1449](https://redirect.github.com/rust-lang/cc-rs/pull/1449)) - Use compiler prefix `x86_64-linux-musl` ([#​1443](https://redirect.github.com/rust-lang/cc-rs/pull/1443)) </details> <details> <summary>purpleprotocol/mimalloc_rust (mimalloc)</summary> ### [`v0.1.46`](https://redirect.github.com/purpleprotocol/mimalloc_rust/releases/tag/v0.1.46): Version 0.1.46 [Compare Source](https://redirect.github.com/purpleprotocol/mimalloc_rust/compare/v0.1.45...v0.1.46) ##### Changes - Fixed musl builds. </details> <details> <summary>resend/react-email (react-email)</summary> ### [`v4.0.7`](https://redirect.github.com/resend/react-email/releases/tag/react-email%404.0.7): react-email 4.0.7 [Compare Source](https://redirect.github.com/resend/react-email/compare/react-email@4.0.6...react-email@4.0.7) #### What's Changed - [`403e415`](https://redirect.github.com/resend/react-email/commit/403e415): Fix `deno` not working as an option for `email build` **Full Changelog**: https://github.com/resend/react-email/compare/react-email@4.0.6...react-email@4.0.7 ### [`v4.0.6`](https://redirect.github.com/resend/react-email/blob/HEAD/packages/react-email/CHANGELOG.md#406) [Compare Source](https://redirect.github.com/resend/react-email/compare/react-email@4.0.5...react-email@4.0.6) ##### Patch Changes - [`809130e`](https://redirect.github.com/resend/react-email/commit/809130e): `next@15.2.4` ### [`v4.0.5`](https://redirect.github.com/resend/react-email/releases/tag/react-email%404.0.5): react-email 4.0.5 [Compare Source](https://redirect.github.com/resend/react-email/compare/react-email@4.0.4...react-email@4.0.5) #### What's Changed - [`e1dc351`](https://redirect.github.com/resend/react-email/commit/e1dc351): Add support for path aliases when linter runs tailwind config **Full Changelog**: https://github.com/resend/react-email/compare/react-email@4.0.4...react-email@4.0.5 ### [`v4.0.4`](https://redirect.github.com/resend/react-email/releases/tag/react-email%404.0.4): react-email 4.0.4 [Compare Source](https://redirect.github.com/resend/react-email/compare/react-email@4.0.3...react-email@4.0.4) #### What's Changed - [`1a7f9e6`](https://redirect.github.com/resend/react-email/commit/1a7f9e6): Update dependencies: `next@15.2.3` **Full Changelog**: https://github.com/resend/react-email/compare/react-email@4.0.3...react-email@4.0.4 </details> <details> <summary>Kotlin/kotlinx.coroutines (org.jetbrains.kotlinx:kotlinx-coroutines-core)</summary> ### [`v1.10.2`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-1102) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.10.1...1.10.2) - Fixed the `kotlinx-coroutines-debug` JAR file including the `module-info.class` file twice, resulting in failures in various tooling ([#​4314](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4314)). Thanks, [@​RyuNen344](https://redirect.github.com/RyuNen344)! - Fixed `Flow.stateIn` hanging when the scope is cancelled in advance or the flow is empty ([#​4322](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4322)). Thanks, [@​francescotescari](https://redirect.github.com/francescotescari)! - Improved handling of dispatcher failures in `.limitedParallelism` ([#​4330](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4330)) and during flow collection ([#​4272](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4272)). - Fixed `runBlocking` failing to run its coroutine to completion in some cases if its JVM thread got interrupted ([#​4399](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4399)). - Small tweaks, fixes, and documentation improvements. </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. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMzguMCIsInVwZGF0ZWRJblZlciI6IjM5LjIzOC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> |
||
|
|
f85b35227b |
feat(editor): replace flat layout cache with tree in turbo renderer (#11319)
### TL;DR Refactored the BlockSuite turbo renderer to use a hierarchical tree structure for layouts instead of a flat list, improving rendering accuracy and performance. ### What changed? - Redesigned the layout system to use a tree structure (`ViewportLayoutTree`) that better represents the document hierarchy - Added `blockId` to all layout objects for better tracking and debugging - Updated the layout query mechanism to work with models directly instead of components - Enhanced error handling with more descriptive warnings and error messages - Improved the painting process to traverse the layout tree recursively - Fixed viewport coordinate calculations for more accurate rendering - Updated the worker communication to support the new tree-based layout structure ### Why make this change? The previous flat layout structure didn't properly represent the hierarchical nature of documents, leading to rendering issues with nested blocks. This tree-based approach: 1. Better represents the actual document structure 2. Improves rendering accuracy for nested elements 3. Makes debugging easier with more consistent block identification 4. Provides a more robust foundation for future rendering optimizations 5. Reduces the likelihood of rendering artifacts when scrolling or zooming |
||
|
|
b8e93ed714 | chore(server): change default deployment type in dev mode (#11593) | ||
|
|
cc257f4fbe | chore(editor): add track for mention (#11594) | ||
|
|
44d2f301de | fix(server): generate image (#11599) | ||
|
|
d1bd809608 | chore(core): add pricing link in license panel (#11598) | ||
|
|
a759a1988e | fix(nbstore): connect before do operation (#11569) | ||
|
|
eb664f3016 | fix(core): improve share menu width and member name overflow handling (#11527) | ||
|
|
8e1cbc4c5b | test(server): do not consume job in test (#11592) | ||
|
|
e376aa57c5 | chore: bring treeshake back (#11577) |