Commit Graph

5825 Commits

Author SHA1 Message Date
EYHN
8dc21e53ca chore(i18n): update i18n-completenesses.json (#11779) 2025-04-17 11:57:44 +00:00
Vladimir Romashchenko
8575fc2ad5 feat(client): switch to 512x512 icons for linux, add metainfo (#11759) 2025-04-17 19:17:51 +08:00
JimmFly
c2c106f508 feat(core): add new loading doc component (#11737) 2025-04-17 18:54:38 +08:00
liuyi
bfecd1856b chore(core): wrong worker url prefix (#11769) 2025-04-17 18:52:55 +08:00
darkskygit
570dc79e3d feat(server): stop embedding in doc embedding disabled workspace (#11761)
fix AI-33
2025-04-17 09:57:33 +00:00
akumatus
e577bb7aa9 fix(core): ask ai loses user selected context (#11767)
Close [AI-72](https://linear.app/affine-design/issue/AI-72)
2025-04-17 09:05:44 +00:00
darkskygit
38e8806787 feat(server): add doc embedding switch for workspace (#11760)
fix AI-33
2025-04-17 07:13:22 +00:00
pengx17
ebf1d5476d feat(core): add summary to transcription block (#11753)
fix AF-2523
2025-04-17 06:33:04 +00:00
L-Sun
98899b4eea feat(editor): affine to blocksuite doc dnd with prefered card view (#11748)
Close [BS-3070](https://linear.app/affine-design/issue/BS-3070/文档拖动进入edgeless,形成引用时,默认形成embeded的引用,但是记录上次选择)
2025-04-17 04:06:50 +00:00
akumatus
50b3f5f7df fix(core): ai history of new users is always loading, enable online search by default (#11741)
Close [AI-69](https://linear.app/affine-design/issue/AI-69).
2025-04-17 02:53:41 +00:00
EYHN
b8d9c5417d fix(android): fix user db engine (#11684) 2025-04-17 02:26:56 +00:00
pengx17
e8d2b0114b fix(core): avatar cannot load google user content url image (#11733) 2025-04-17 02:13:54 +00:00
pengx17
72aa92546d feat(core): dragging audio waveform to change seek time (#11730)
fix AF-2519
2025-04-17 01:43:11 +00:00
forehalo
18fae0f1aa fix: host app with subpath (#11739)
closes #11719
2025-04-17 01:29:48 +00:00
pengx17
268c34e8b5 fix(core): appcontainer fallback display issue (#11669) 2025-04-16 10:44:03 +00:00
JimmFly
1c1c5ce64b feat(core): show expiration time in link invitation dialog (#11610)
close BS-3095
2025-04-16 10:30:35 +00:00
pengx17
ef7a82d6e6 fix(core): adjust recording user-select none style (#11735) 2025-04-16 09:19:14 +00:00
forehalo
bfb94acc42 fix(server): subscription delete race condition (#11729) 2025-04-16 08:18:29 +00:00
pengx17
51316217af feat(core): audio playback rate (#11702)
fix AF-2470
2025-04-16 07:49:12 +00:00
Cats Juice
d045651a03 fix(mobile): tab is not at bottom in tag detail page when empty (#11723) 2025-04-16 14:48:48 +08:00
Aki Chang
26ddccccd2 fix(android): add proguard rules for release build crash (#11710) 2025-04-16 10:11:29 +08:00
Brooooooklyn
fe86722845 perf(native): use simd to speedup audio buffer mix (#11717)
Run `cargo bench -p affine_media_capture`

```
test result: ok. 0 passed; 0 failed; 6 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running benches/mix_audio_samples.rs (target/release/deps/mix_audio_samples-ffbc55dcf90d3468)
audio mix/simd          time:   [98.380 ns 99.339 ns 100.57 ns]
                        change: [−19.199% −16.928% −14.569%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 12 outliers among 100 measurements (12.00%)
  6 (6.00%) high mild
  6 (6.00%) high severe
audio mix/scalar        time:   [123.99 ns 126.11 ns 128.71 ns]
                        change: [+0.2703% +1.2739% +2.5727%] (p = 0.02 < 0.05)
                        Change within noise threshold.
Found 11 outliers among 100 measurements (11.00%)
  4 (4.00%) high mild
  7 (7.00%) high severe
```
2025-04-16 00:42:30 +00:00
darkskygit
e0970daa5a feat(server): upgrade models to gpt4.1 (#11696) 2025-04-15 14:23:40 +00:00
pengx17
220087c172 fix(mobile): cannot change tag color (#11708)
fix AF-2402
2025-04-15 13:36:22 +00:00
pengx17
db2a8fd509 fix(core): database backlink row visibility (#11706)
fix AF-2507

do not show the db backlink row if
- the row does not have any properties (excluding `title` column)
- the target doc is a template page
2025-04-15 13:21:49 +00:00
Saul-Mirone
b2694003c9 fix(editor): missing copy as png implementation (#11716) 2025-04-15 13:08:47 +00:00
forehalo
681c61a300 chore(admin): allow config avatar public path (#11689)
close #11677
2025-04-15 12:54:55 +00:00
renovate
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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/i18next/25.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/i18next/25.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/i18next/24.2.3/25.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/i18next/24.2.3/25.0.0?slim=true)](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==-->
2025-04-15 11:52:42 +00:00
forehalo
7257f1b55b chore(server): remove enable flag in mail config (#11680)
close #11625
2025-04-15 09:18:10 +00:00
renovate
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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@prisma%2fclient/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@prisma%2fclient/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@prisma%2fclient/5.22.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@prisma%2fclient/5.22.0/6.0.1?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@prisma%2finstrumentation/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@prisma%2finstrumentation/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@prisma%2finstrumentation/5.22.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@prisma%2finstrumentation/5.22.0/6.0.1?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/prisma/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/prisma/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/prisma/5.22.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prisma/5.22.0/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>prisma/prisma (@&#8203;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@&#8203;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 (@&#8203;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@&#8203;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@&#8203;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=-->
2025-04-15 09:05:00 +00:00
fundon
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
2025-04-15 08:51:02 +00:00
yoyoyohamapi
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
2025-04-15 08:37:27 +00:00
pengx17
46f3dfc64c fix(core): audio player ux (#11685) 2025-04-15 16:06:59 +08:00
pengx17
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

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/4a2b88c2-311a-470e-a8a9-113931cdf17e.png)
2025-04-15 07:16:53 +00:00
donteatfriedrice
e02b159bf4 feat(core): remove preview footnote hover effect config (#11695)
Close [BS-3115](https://linear.app/affine-design/issue/BS-3115/侧边栏-footnote-ui-和用户行为与编辑器内统一)
2025-04-15 07:02:51 +00:00
pengx17
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
2025-04-15 04:44:26 +00:00
CatsJuice
4011214451 fix(ios): avoid keyboard covering dialog (#11681)
close PD-2540
2025-04-15 04:30:19 +00:00
darkskygit
84ff54f9d7 feat(server): make slide audio transcript parallel (#11692) 2025-04-15 03:59:23 +00:00
darkskygit
ad712da07f fix(server): slide audio override (#11688) 2025-04-15 03:59:23 +00:00
darkskygit
f2f1a10715 fix(server): initial user plan (#11687) 2025-04-15 03:59:22 +00:00
Aki Chang
1a2d6f25be fix(android): nbstore laod error (#11674) 2025-04-14 17:19:14 +08:00
pengx17
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}'
```
2025-04-14 07:21:49 +00:00
renovate
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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@ai-sdk%2fopenai/1.3.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@ai-sdk%2fopenai/1.3.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@ai-sdk%2fopenai/1.3.9/1.3.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@ai-sdk%2fopenai/1.3.9/1.3.10?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.787.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.787.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.782.0/3.787.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.782.0/3.787.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fs3-request-presigner/3.787.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fs3-request-presigner/3.787.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fs3-request-presigner/3.782.0/3.787.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fs3-request-presigner/3.782.0/3.787.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@faker-js%2ffaker/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@faker-js%2ffaker/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@faker-js%2ffaker/9.6.0/9.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@faker-js%2ffaker/9.6.0/9.7.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@lit%2fcontext/1.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@lit%2fcontext/1.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@lit%2fcontext/1.1.4/1.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@lit%2fcontext/1.1.4/1.1.5?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@smarttools%2feslint-plugin-rxjs/1.0.19?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@smarttools%2feslint-plugin-rxjs/1.0.19?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@smarttools%2feslint-plugin-rxjs/1.0.18/1.0.19?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@smarttools%2feslint-plugin-rxjs/1.0.18/1.0.19?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@swc%2fcore/1.11.20?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@swc%2fcore/1.11.20?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@swc%2fcore/1.11.18/1.11.20?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@swc%2fcore/1.11.18/1.11.20?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/22.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/22.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/22.14.0/22.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/22.14.0/22.14.1?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/22.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/22.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/22.14.0/22.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/22.14.0/22.14.1?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact/19.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2freact/19.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2freact/19.1.0/19.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact/19.1.0/19.1.1?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/ai/4.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/ai/4.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/ai/4.3.4/4.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ai/4.3.4/4.3.5?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/animejs/4.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/animejs/4.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/animejs/4.0.0/4.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/animejs/4.0.0/4.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [anyhow](https://redirect.github.com/dtolnay/anyhow) | `1.0.97` -> `1.0.98` | [![age](https://developer.mend.io/api/mc/badges/age/crate/anyhow/1.0.98?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/anyhow/1.0.98?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/anyhow/1.0.97/1.0.98?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/anyhow/1.0.97/1.0.98?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch |
| [cc](https://redirect.github.com/rust-lang/cc-rs) | `1.2.18` -> `1.2.19` | [![age](https://developer.mend.io/api/mc/badges/age/crate/cc/1.2.19?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cc/1.2.19?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cc/1.2.18/1.2.19?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cc/1.2.18/1.2.19?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/dotenv/16.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/dotenv/16.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/dotenv/16.4.7/16.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dotenv/16.4.7/16.5.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/html-validate/9.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/html-validate/9.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/html-validate/9.5.2/9.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/html-validate/9.5.2/9.5.3?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/ioredis/5.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/ioredis/5.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/ioredis/5.6.0/5.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ioredis/5.6.0/5.6.1?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai/2.12.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai/2.12.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai/2.12.2/2.12.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai/2.12.2/2.12.3?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lib0/0.2.104?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lib0/0.2.104?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lib0/0.2.102/0.2.104?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lib0/0.2.102/0.2.104?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lib0/0.2.104?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lib0/0.2.104?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lib0/0.2.102/0.2.104?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lib0/0.2.102/0.2.104?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lint-staged/15.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lint-staged/15.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lint-staged/15.5.0/15.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lint-staged/15.5.0/15.5.1?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lit/3.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lit/3.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lit/3.2.1/3.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lit/3.2.1/3.3.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lit-html/3.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lit-html/3.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lit-html/3.2.1/3.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lit-html/3.2.1/3.3.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lucide-react/0.488.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lucide-react/0.488.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lucide-react/0.487.0/0.488.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lucide-react/0.487.0/0.488.0?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/msw/2.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/msw/2.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/msw/2.7.3/2.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/msw/2.7.3/2.7.4?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nodemailer/6.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nodemailer/6.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nodemailer/6.10.0/6.10.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nodemailer/6.10.0/6.10.1?slim=true)](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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-day-picker/9.6.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-day-picker/9.6.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-day-picker/9.6.5/9.6.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-day-picker/9.6.5/9.6.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [sqlx](https://redirect.github.com/launchbadge/sqlx) | `0.8.3` -> `0.8.4` | [![age](https://developer.mend.io/api/mc/badges/age/crate/sqlx/0.8.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/sqlx/0.8.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/sqlx/0.8.3/0.8.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/sqlx/0.8.3/0.8.4?slim=true)](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` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.1.20-2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.1.20-2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.1.20-1.0.32/2.1.20-2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.1.20-1.0.32/2.1.20-2.0.0?slim=true)](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` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlinx:kotlinx-serialization-json/1.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlinx:kotlinx-serialization-json/1.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlinx:kotlinx-serialization-json/1.8.0/1.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlinx:kotlinx-serialization-json/1.8.0/1.8.1?slim=true)](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` | [![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlinx:kotlinx-coroutines-android/1.10.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlinx:kotlinx-coroutines-android/1.10.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlinx:kotlinx-coroutines-android/1.10.1/1.10.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlinx:kotlinx-coroutines-android/1.10.1/1.10.2?slim=true)](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` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.android.tools.build:gradle/8.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.android.tools.build:gradle/8.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.android.tools.build:gradle/8.7.2/8.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.android.tools.build:gradle/8.7.2/8.9.1?slim=true)](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` | [![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.core:core-ktx/1.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.core:core-ktx/1.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.core:core-ktx/1.15.0/1.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.core:core-ktx/1.15.0/1.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [androidx.compose:compose-bom](https://developer.android.com/jetpack) | `2025.03.01` -> `2025.04.00` | [![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.compose:compose-bom/2025.04.00?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.compose:compose-bom/2025.04.00?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.compose:compose-bom/2025.03.01/2025.04.00?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.compose:compose-bom/2025.03.01/2025.04.00?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |

---

### Release Notes

<details>
<summary>vercel/ai (@&#8203;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 (@&#8203;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 [@&#8203;aws-sdk/client-s3](https://redirect.github.com/aws-sdk/client-s3)

</details>

<details>
<summary>aws/aws-sdk-js-v3 (@&#8203;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 [@&#8203;aws-sdk/s3-request-presigner](https://redirect.github.com/aws-sdk/s3-request-presigner)

</details>

<details>
<summary>faker-js/faker (@&#8203;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 ([#&#8203;3439](https://redirect.github.com/faker-js/faker/issues/3439)) ([fef0ad7](fef0ad7859))
-   **locale:** add cy locale, start with date ([#&#8203;3462](https://redirect.github.com/faker-js/faker/issues/3462)) ([f70a6f7](f70a6f7a65))
-   **locale:** add finance support for ja locale ([#&#8203;3449](https://redirect.github.com/faker-js/faker/issues/3449)) ([b2c5298](b2c5298c94))
-   **locale:** add localize sex support for zh_CN & zh_TW ([#&#8203;3450](https://redirect.github.com/faker-js/faker/issues/3450)) ([048c325](048c32581b))
-   **locale:** add Tamil language support ([#&#8203;3468](https://redirect.github.com/faker-js/faker/issues/3468)) ([cdf6dc4](cdf6dc4a97))

##### Bug Fixes

-   **airline:** Air France and KLM Royal Dutch Airlines ([#&#8203;3440](https://redirect.github.com/faker-js/faker/issues/3440)) ([8a2d168](8a2d168f62))
-   **iban:** more strict pattern for IE and PS ([#&#8203;3464](https://redirect.github.com/faker-js/faker/issues/3464)) ([7b12056](7b12056713))
-   **locale:** rename ja and zh_CN company affix files ([#&#8203;3448](https://redirect.github.com/faker-js/faker/issues/3448)) ([1e551c5](1e551c5f47))
-   **number:** don't ignore multipleOf in float when min=max ([#&#8203;3417](https://redirect.github.com/faker-js/faker/issues/3417)) ([e4cc4e5](e4cc4e50d1))

</details>

<details>
<summary>lit/lit (@&#8203;lit/context)</summary>

### [`v1.1.5`](https://redirect.github.com/lit/lit/blob/HEAD/packages/context/CHANGELOG.md#115)

[Compare Source](7db8eadb28...@lit/context@1.1.5)

##### Patch Changes

-   [#&#8203;4917](https://redirect.github.com/lit/lit/pull/4917) [`aced5a93`](aced5a93b7) Thanks [@&#8203;djrenren](https://redirect.github.com/djrenren)! - Fixed a bug where initial values were not handled by the [@&#8203;provide](https://redirect.github.com/provide)() decorator
    when using standard decorators ([#&#8203;4675](https://redirect.github.com/lit/lit/issues/4675))
-   Updated dependencies \[[`c9160405`](c9160405de), [`3e2f87f6`](3e2f87f688), [`4824c4ce`](4824c4ce09)]:
    -   [@&#8203;lit/reactive-element](https://redirect.github.com/lit/reactive-element)[@&#8203;2](https://redirect.github.com/2).1.0

</details>

<details>
<summary>DaveMBush/eslint-plugin-rxjs (@&#8203;smarttools/eslint-plugin-rxjs)</summary>

### [`v1.0.19`](https://redirect.github.com/DaveMBush/eslint-plugin-rxjs/releases/tag/v1.0.19): (2025-04-11)

[Compare Source](https://redirect.github.com/DaveMBush/eslint-plugin-rxjs/compare/v1.0.18...v1.0.19)

Fix issue 131

</details>

<details>
<summary>swc-project/swc (@&#8203;swc/core)</summary>

### [`v1.11.20`](https://redirect.github.com/swc-project/swc/blob/HEAD/CHANGELOG.md#11120---2025-04-11)

[Compare Source](https://redirect.github.com/swc-project/swc/compare/v1.11.18...v1.11.20)

##### Bug Fixes

-   **(error_reporters)** Removing unused code to fix clippy check ([#&#8203;10338](https://redirect.github.com/swc-project/swc/issues/10338)) ([5970f93](5970f937f7))

-   **(es/minifier)** Preserve block with block scoped declaration ([#&#8203;10335](https://redirect.github.com/swc-project/swc/issues/10335)) ([a4ac3b7](a4ac3b7188))

-   **(es/parser)** Allow abstract method named `accessor` ([#&#8203;10327](https://redirect.github.com/swc-project/swc/issues/10327)) ([3f71776](3f7177665c))

-   **(es/preset-env)** Consider `browserslist` config if `env.target` is not configured ([#&#8203;8921](https://redirect.github.com/swc-project/swc/issues/8921)) ([a2dc372](a2dc372f9c))

-   **(es/resolver)** Handle using declarations ([#&#8203;10354](https://redirect.github.com/swc-project/swc/issues/10354)) ([dad815c](dad815cee6))

-   fix(es/compat): Remove one promise tick in yield\* ([tc39/ecma262#2819](https://redirect.github.com/tc39/ecma262/issues/2819)) ([#&#8203;10317](https://redirect.github.com/swc-project/swc/issues/10317))

**Related issue:**

-   [babel/babel#14877](https://redirect.github.com/babel/babel/issues/14877)
-   [tc39/ecma262#2819](https://redirect.github.com/tc39/ecma262/issues/2819) ([3fb1950](3fb19505b5))

##### Features

-   **(errors)** Integrate `miette` for enhanced diagnostic reporting ([#&#8203;10241](https://redirect.github.com/swc-project/swc/issues/10241)) ([156c3b1](156c3b1cdc))

-   **(es/codegen)** Support `sourceMap.url` option of `terser` ([#&#8203;10346](https://redirect.github.com/swc-project/swc/issues/10346)) ([566bc7c](566bc7c06e))

-   **(plugin/runner)** Support `pluginEnvVars` ([#&#8203;10318](https://redirect.github.com/swc-project/swc/issues/10318)) ([795fedc](795fedc6ae))

##### Miscellaneous Tasks

-   **(es/helpers)** Update peer dependency version for `@swc/helpers` to `>=0.5.17` ([#&#8203;10321](https://redirect.github.com/swc-project/swc/issues/10321)) ([ddbf3e1](ddbf3e1d8c))

-   **(ide)** Disable RA diagnostics ([#&#8203;10324](https://redirect.github.com/swc-project/swc/issues/10324)) ([fcf280f](fcf280fc62))

##### Performance

-   **(es/ast)** Reduce redundant string comparison for `Atom`s ([#&#8203;10323](https://redirect.github.com/swc-project/swc/issues/10323)) ([3ce9d81](3ce9d8119e))

-   **(es/jsx)** Cache FileName for JSX pass ([#&#8203;9951](https://redirect.github.com/swc-project/swc/issues/9951)) ([#&#8203;10322](https://redirect.github.com/swc-project/swc/issues/10322)) ([9852940](98529404bc))

-   **(es/parser)** Remove redundant `is_ascii` calls ([#&#8203;10334](https://redirect.github.com/swc-project/swc/issues/10334)) ([e66b4d6](e66b4d660c))

-   **(es/parser)** Remove ascii check for no-ascii ([#&#8203;10350](https://redirect.github.com/swc-project/swc/issues/10350)) ([4279b96](4279b96d12))

##### Testing

-   **(es)** Unignore tests and update node to `20` in exec tests ([#&#8203;10348](https://redirect.github.com/swc-project/swc/issues/10348)) ([eee73ce](eee73cec76))

</details>

<details>
<summary>juliangarnier/anime (animejs)</summary>

### [`v4.0.1`](https://redirect.github.com/juliangarnier/anime/releases/tag/v4.0.1)

[Compare Source](https://redirect.github.com/juliangarnier/anime/compare/4.0.0...v4.0.1)

#### fixes

-   Fix `createScope` root param type for `ReactRef` ([#&#8203;971](https://redirect.github.com/juliangarnier/anime/issues/971)) thanks [@&#8203;Jimmydalecleveland](https://redirect.github.com/Jimmydalecleveland)

</details>

<details>
<summary>dtolnay/anyhow (anyhow)</summary>

### [`v1.0.98`](https://redirect.github.com/dtolnay/anyhow/releases/tag/1.0.98)

[Compare Source](https://redirect.github.com/dtolnay/anyhow/compare/1.0.97...1.0.98)

-   Add [`self.into_boxed_dyn_error()`](https://docs.rs/anyhow/1/anyhow/struct.Error.html#method.into_boxed_dyn_error) and [`self.reallocate_into_boxed_dyn_error_without_backtrace()`](https://docs.rs/anyhow/1/anyhow/struct.Error.html#method.reallocate_into_boxed_dyn_error_without_backtrace) methods for anyhow::Error ([#&#8203;415](https://redirect.github.com/dtolnay/anyhow/issues/415))

</details>

<details>
<summary>rust-lang/cc-rs (cc)</summary>

### [`v1.2.19`](https://redirect.github.com/rust-lang/cc-rs/blob/HEAD/CHANGELOG.md#1219---2025-04-11)

[Compare Source](https://redirect.github.com/rust-lang/cc-rs/compare/cc-v1.2.18...cc-v1.2.19)

##### Other

-   Fix musl compilation: Add musl as a prefix fallback ([#&#8203;1455](https://redirect.github.com/rust-lang/cc-rs/pull/1455))

</details>

<details>
<summary>motdotla/dotenv (dotenv)</summary>

### [`v16.5.0`](https://redirect.github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#1650-2025-04-07)

[Compare Source](https://redirect.github.com/motdotla/dotenv/compare/v16.4.7...v16.5.0)

##### Added

-   🎉 Added new sponsor [Graphite](https://graphite.dev/?utm_source=github\&utm_medium=repo\&utm_campaign=dotenv) - *the AI developer productivity platform helping teams on GitHub ship higher quality software, faster*.

> \[!TIP]
> **[Become a sponsor](https://redirect.github.com/sponsors/motdotla)**
>
> The dotenvx README is viewed thousands of times DAILY on GitHub and NPM.
> Sponsoring dotenv is a great way to get in front of developers and give back to the developer community at the same time.

##### Changed

-   Remove `_log` method. Use `_debug` [#&#8203;862](https://redirect.github.com/motdotla/dotenv/pull/862)

</details>

<details>
<summary>html-validate/html-validate (html-validate)</summary>

### [`v9.5.3`](https://gitlab.com/html-validate/html-validate/blob/HEAD/CHANGELOG.md#953-2025-04-13)

[Compare Source](https://gitlab.com/html-validate/html-validate/compare/v9.5.2...v9.5.3)

##### Bug Fixes

-   fix crash when aria attribute references id with comma ([fb91b7c](fb91b7c7e7)), closes [#&#8203;299](https://gitlab.com/html-validate/html-validate/issues/299)
-   fix crash when attribute selector `[..]` contains escaped characters ([0c19b82](0c19b8267d))

</details>

<details>
<summary>luin/ioredis (ioredis)</summary>

### [`v5.6.1`](https://redirect.github.com/luin/ioredis/blob/HEAD/CHANGELOG.md#561-2025-04-11)

[Compare Source](https://redirect.github.com/luin/ioredis/compare/v5.6.0...v5.6.1)

##### Bug Fixes

-   adding debug log on cluster.slots initial connection error ([bedcfb5](bedcfb5d4b))

</details>

<details>
<summary>pmndrs/jotai (jotai)</summary>

### [`v2.12.3`](https://redirect.github.com/pmndrs/jotai/releases/tag/v2.12.3)

[Compare Source](https://redirect.github.com/pmndrs/jotai/compare/v2.12.2...v2.12.3)

This introduces an internal capability for jotai-devtools.

#### What's Changed

-   fix: expose an internal function for devtools by [@&#8203;dai-shi](https://redirect.github.com/dai-shi) in [https://github.com/pmndrs/jotai/pull/3045](https://redirect.github.com/pmndrs/jotai/pull/3045)
-   fix(react): experimental option to make attaching promise status controllable by [@&#8203;dai-shi](https://redirect.github.com/dai-shi) in [https://github.com/pmndrs/jotai/pull/3026](https://redirect.github.com/pmndrs/jotai/pull/3026)

#### New Contributors

-   [@&#8203;siyou](https://redirect.github.com/siyou) made their first contribution in [https://github.com/pmndrs/jotai/pull/3029](https://redirect.github.com/pmndrs/jotai/pull/3029)

**Full Changelog**: https://github.com/pmndrs/jotai/compare/v2.12.2...v2.12.3

</details>

<details>
<summary>dmonad/lib0 (lib0)</summary>

### [`v0.2.104`](https://redirect.github.com/dmonad/lib0/releases/tag/v0.2.104)

[Compare Source](https://redirect.github.com/dmonad/lib0/compare/v0.2.103...v0.2.104)

-   \[array/bubblesortItem] fix edge case  [`cffe349`](https://redirect.github.com/dmonad/lib0/commit/cffe349)

***

### [`v0.2.103`](https://redirect.github.com/dmonad/lib0/releases/tag/v0.2.103)

[Compare Source](https://redirect.github.com/dmonad/lib0/compare/v0.2.102...v0.2.103)

-   \[array] add bubblesortItem  [`98544a4`](https://redirect.github.com/dmonad/lib0/commit/98544a4)

***

</details>

<details>
<summary>lint-staged/lint-staged (lint-staged)</summary>

### [`v15.5.1`](https://redirect.github.com/lint-staged/lint-staged/blob/HEAD/CHANGELOG.md#1551)

[Compare Source](https://redirect.github.com/lint-staged/lint-staged/compare/v15.5.0...v15.5.1)

##### Patch Changes

-   [#&#8203;1533](https://redirect.github.com/lint-staged/lint-staged/pull/1533) [`5d53534`](5d53534995) Thanks [@&#8203;iiroj](https://redirect.github.com/iiroj)! - Improve listing of staged files so that *lint-staged* doesn't crash when encountering an uninitialized submodule. This should result in less errors like:

        ✖ Failed to get staged files!

</details>

<details>
<summary>lit/lit (lit)</summary>

### [`v3.3.0`](https://redirect.github.com/lit/lit/blob/HEAD/packages/lit/CHANGELOG.md#330)

[Compare Source](https://redirect.github.com/lit/lit/compare/lit@3.2.1...lit@3.3.0)

##### Minor Changes

-   [#&#8203;4901](https://redirect.github.com/lit/lit/pull/4901) [`c9160405`](c9160405de) Thanks [@&#8203;maxpatiiuk](https://redirect.github.com/maxpatiiuk)! - Dev mode warnings are now emitted on the next microtask after package import, allowing for a wider opportunity to suppress the warnings by consumers.

-   [#&#8203;4934](https://redirect.github.com/lit/lit/pull/4934) [`4824c4ce`](4824c4ce09) - Adds property option for `useDefault`. When set, the initial default value is not considered a change and does *not* reflect when `reflect` is set. In addition, when the attribute is removed, the default value is restored.

##### Patch Changes

-   [#&#8203;4949](https://redirect.github.com/lit/lit/pull/4949) [`3e2f87f6`](3e2f87f688) - fixes inconsistent initial changed properties values

-   [#&#8203;4956](https://redirect.github.com/lit/lit/pull/4956) [`0a9bc720`](0a9bc72016) Thanks [@&#8203;louis-bompart](https://redirect.github.com/louis-bompart)! - Import barrels explicitly for compatibility with modern Node resolution w/ ESM

-   Updated dependencies \[[`c9160405`](c9160405de), [`3e2f87f6`](3e2f87f688), [`4824c4ce`](4824c4ce09), [`0a9bc720`](0a9bc72016)]:
    -   [@&#8203;lit/reactive-element](https://redirect.github.com/lit/reactive-element)[@&#8203;2](https://redirect.github.com/2).1.0
    -   lit-element@4.2.0
    -   lit-html@3.3.0

</details>

<details>
<summary>lit/lit (lit-html)</summary>

### [`v3.3.0`](https://redirect.github.com/lit/lit/blob/HEAD/packages/lit-html/CHANGELOG.md#330)

[Compare Source](https://redirect.github.com/lit/lit/compare/lit-html@3.2.1...lit-html@3.3.0)

##### Minor Changes

-   [#&#8203;4901](https://redirect.github.com/lit/lit/pull/4901) [`c9160405`](c9160405de) Thanks [@&#8203;maxpatiiuk](https://redirect.github.com/maxpatiiuk)! - Dev mode warnings are now emitted on the next microtask after package import, allowing for a wider opportunity to suppress the warnings by consumers.

##### Patch Changes

-   [#&#8203;4956](https://redirect.github.com/lit/lit/pull/4956) [`0a9bc720`](0a9bc72016) Thanks [@&#8203;louis-bompart](https://redirect.github.com/louis-bompart)! - Import barrels explicitly for compatibility with modern Node resolution w/ ESM

</details>

<details>
<summary>lucide-icons/lucide (lucide-react)</summary>

### [`v0.488.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.488.0): Version 0.488.0

[Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.487.0...0.488.0)

##### What's Changed

-   docs(readme): fix packages table by [@&#8203;realguse](https://redirect.github.com/realguse) in [https://github.com/lucide-icons/lucide/pull/2976](https://redirect.github.com/lucide-icons/lucide/pull/2976)
-   fix(dev): point urls on packages page to correct page by [@&#8203;briz123](https://redirect.github.com/briz123) in [https://github.com/lucide-icons/lucide/pull/2983](https://redirect.github.com/lucide-icons/lucide/pull/2983)
-   build(deps-dev): bump vite from 5.4.14 to 5.4.15 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/lucide-icons/lucide/pull/2946](https://redirect.github.com/lucide-icons/lucide/pull/2946)
-   Typo fix for [@&#8203;lucide/astro](https://redirect.github.com/lucide/astro) badge by [@&#8203;dotspencer](https://redirect.github.com/dotspencer) in [https://github.com/lucide-icons/lucide/pull/3004](https://redirect.github.com/lucide-icons/lucide/pull/3004)
-   removed flutter package link by [@&#8203;shamaamahh](https://redirect.github.com/shamaamahh) in [https://github.com/lucide-icons/lucide/pull/2999](https://redirect.github.com/lucide-icons/lucide/pull/2999)
-   feat(ci): added npm package provenance attestation by [@&#8203;jguddas](https://redirect.github.com/jguddas) in [https://github.com/lucide-icons/lucide/pull/3016](https://redirect.github.com/lucide-icons/lucide/pull/3016)
-   fix(icons): changed `text` icon by [@&#8203;jguddas](https://redirect.github.com/jguddas) in [https://github.com/lucide-icons/lucide/pull/3029](https://redirect.github.com/lucide-icons/lucide/pull/3029)
-   fix(icons): changed `letter-text` icon by [@&#8203;jguddas](https://redirect.github.com/jguddas) in [https://github.com/lucide-icons/lucide/pull/3030](https://redirect.github.com/lucide-icons/lucide/pull/3030)
-   fix(icons): changed `text-select` icon by [@&#8203;jguddas](https://redirect.github.com/jguddas) in [https://github.com/lucide-icons/lucide/pull/3028](https://redirect.github.com/lucide-icons/lucide/pull/3028)

##### New Contributors

-   [@&#8203;dotspencer](https://redirect.github.com/dotspencer) made their first contribution in [https://github.com/lucide-icons/lucide/pull/3004](https://redirect.github.com/lucide-icons/lucide/pull/3004)
-   [@&#8203;shamaamahh](https://redirect.github.com/shamaamahh) made their first contribution in [https://github.com/lucide-icons/lucide/pull/2999](https://redirect.github.com/lucide-icons/lucide/pull/2999)

**Full Changelog**: https://github.com/lucide-icons/lucide/compare/0.487.0...0.488.0

</details>

<details>
<summary>mswjs/msw (msw)</summary>

### [`v2.7.4`](https://redirect.github.com/mswjs/msw/releases/tag/v2.7.4)

[Compare Source](https://redirect.github.com/mswjs/msw/compare/v2.7.3...v2.7.4)

#### v2.7.4 (2025-04-12)

##### Bug Fixes

-   resolve relative URLs against `location.href` ([#&#8203;2471](https://redirect.github.com/mswjs/msw/issues/2471)) ([`fa9b07f`](fa9b07f7b9)) [@&#8203;kettanaito](https://redirect.github.com/kettanaito)
-   **graphql:** add `extensions` property to the `GraphQLResponseBody` type ([#&#8203;2468](https://redirect.github.com/mswjs/msw/issues/2468)) ([`827a5dc`](827a5dc055)) [@&#8203;ytoshiki](https://redirect.github.com/ytoshiki)

</details>

<details>
<summary>nodemailer/nodemailer (nodemailer)</summary>

### [`v6.10.1`](https://redirect.github.com/nodemailer/nodemailer/blob/HEAD/CHANGELOG.md#6101-2025-02-06)

[Compare Source](https://redirect.github.com/nodemailer/nodemailer/compare/v6.10.0...v6.10.1)

##### Bug Fixes

-   close correct socket ([a18062c](a18062c04d))

</details>

<details>
<summary>gpbl/react-day-picker (react-day-picker)</summary>

### [`v9.6.6`](https://redirect.github.com/gpbl/react-day-picker/releases/tag/v9.6.6)

[Compare Source](https://redirect.github.com/gpbl/react-day-picker/compare/v9.6.5...v9.6.6)

Includes a fix for `autoFocus` prop not correctly autofocusing the selected day.

#### What's Changed

-   fix: calculateFocusTarget logic by [@&#8203;rodgobbi](https://redirect.github.com/rodgobbi) in [https://github.com/gpbl/react-day-picker/pull/2727](https://redirect.github.com/gpbl/react-day-picker/pull/2727)

**Full Changelog**: https://github.com/gpbl/react-day-picker/compare/v9.6.5...v9.6.6

</details>

<details>
<summary>launchbadge/sqlx (sqlx)</summary>

### [`v0.8.4`](https://redirect.github.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#084---2025-04-13)

50 pull requests were merged this release cycle.

As of this release, development of `0.9.0` has begun on `main`.
Barring urgent hotfixes, this is expected to be the last release of `0.8.x`.

##### Added

-   \[[#&#8203;3603]]: Added missing special casing for encoding embedded arrays of custom types \[\[[@&#8203;nico-incubiq](https://redirect.github.com/nico-incubiq)]]
-   \[[#&#8203;3625]]: feat(sqlite): add preupdate hook \[\[[@&#8203;aschey](https://redirect.github.com/aschey)]]
-   \[[#&#8203;3655]]: docs: add example for postgres enums with type TEXT \[\[[@&#8203;tisonkun](https://redirect.github.com/tisonkun)]]
-   \[[#&#8203;3677]]: Add json(nullable) macro attribute \[\[[@&#8203;seanaye](https://redirect.github.com/seanaye)]]
-   \[[#&#8203;3687]]: Derive clone and debug for postgresql arguments \[\[[@&#8203;remysaissy](https://redirect.github.com/remysaissy)]]
-   \[[#&#8203;3690]]: feat: add postres geometry line segment \[\[[@&#8203;jayy-lmao](https://redirect.github.com/jayy-lmao)]]
-   \[[#&#8203;3707]]: feat(Sqlite): add LockedSqliteHandle::last_error \[\[[@&#8203;joeydewaal](https://redirect.github.com/joeydewaal)]]
-   \[[#&#8203;3710]]: feat: add ipnet support \[\[[@&#8203;BeauGieskens](https://redirect.github.com/BeauGieskens)]]
-   \[[#&#8203;3711]]: feat(postgres): add geometry box \[\[[@&#8203;jayy-lmao](https://redirect.github.com/jayy-lmao)]]
-   \[[#&#8203;3714]]: chore: expose bstr feature \[\[[@&#8203;joeydewaal](https://redirect.github.com/joeydewaal)]]
-   \[[#&#8203;3716]]: feat(postgres): add geometry path \[\[[@&#8203;jayy-lmao](https://redirect.github.com/jayy-lmao)]]
-   \[[#&#8203;3724]]: feat(sqlx-cli): Add flag to disable automatic loading of .env files \[\[[@&#8203;benwilber](https://redirect.github.com/benwilber)]]
-   \[[#&#8203;3734]]: QueryBuilder: add debug_assert when `push_values` is passed an empty set of tuples \[\[[@&#8203;chanmaoganda](https://redirect.github.com/chanmaoganda)]]
-   \[[#&#8203;3745]]: feat: sqlx sqlite expose de/serialize \[\[[@&#8203;mattrighetti](https://redirect.github.com/mattrighetti)]]
-   \[[#&#8203;3765]]: Merge of [#&#8203;3427](https://redirect.github.com/launchbadge/sqlx/issues/3427) (by [@&#8203;mpyw](https://redirect.github.com/mpyw)) and [#&#8203;3614](https://redirect.github.com/launchbadge/sqlx/issues/3614) (by [@&#8203;bonsairobo](https://redirect.github.com/bonsairobo)) \[\[[@&#8203;abonander](https://redirect.github.com/abonander)]]
    -   \[[#&#8203;3427]] Expose `transaction_depth` through `get_transaction_depth()` method \[\[[@&#8203;mpyw](https://redirect.github.com/mpyw)]]
        -   Changed to `Connection::is_in_transaction` in \[[#&#8203;3765]]
    -   \[[#&#8203;3614]] Add `begin_with` methods to support database-specific transaction options \[\[[@&#8203;bonsairobo](https://redirect.github.com/bonsairobo)]]
-   \[[#&#8203;3769]]: feat(postgres): add geometry polygon \[\[[@&#8203;jayy-lmao](https://redirect.github.com/jayy-lmao)]]
-   \[[#&#8203;3773]]: feat(postgres): add geometry circle \[\[[@&#8203;jayy-lmao](https://redirect.github.com/jayy-lmao)]]

##### Changed

-   \[[#&#8203;3665]]: build(deps): bump semver compatible dependencies \[\[[@&#8203;paolobarbolini](https://redirect.github.com/paolobarbolini)]]
-   \[[#&#8203;3669]]: refactor(cli): replace promptly with dialoguer \[\[[@&#8203;paolobarbolini](https://redirect.github.com/paolobarbolini)]]
-   \[[#&#8203;3672]]: add `#[track_caller]` to `Row::get()` \[\[[@&#8203;karambarakat](https://redirect.github.com/karambarakat)]]
-   \[[#&#8203;3708]]: chore(MySql): Remove unnecessary box \[\[[@&#8203;joeydewaal](https://redirect.github.com/joeydewaal)]]
-   \[[#&#8203;3715]]: chore: add pg_copy regression tests \[\[[@&#8203;joeydewaal](https://redirect.github.com/joeydewaal)]]
-   \[[#&#8203;3721]]: Replace some `futures-core` / `futures-util` APIs with `std` variants \[\[[@&#8203;paolobarbolini](https://redirect.github.com/paolobarbolini)]]
-   \[[#&#8203;3725]]: chore: replace rustls-pemfile with rustls-pki-types \[\[[@&#8203;tottoto](https://redirect.github.com/tottoto)]]
-   \[[#&#8203;3754]]: chore(cli): remove unused async-trait crate from dependencies \[\[[@&#8203;tottoto](https://redirect.github.com/tottoto)]]
-   \[[#&#8203;3762]]: docs(pool): recommend actix-web ThinData over Data to avoid two Arcs \[\[[@&#8203;jonasmalacofilho](https://redirect.github.com/jonasmalacofilho)]]

##### Fixed

-   \[[#&#8203;3289]]: Always set `SQLITE_OPEN_URI` on in-memory sqlite \[\[[@&#8203;LecrisUT](https://redirect.github.com/LecrisUT)]]
-   \[[#&#8203;3334]]: Fix: nextest cleanup race condition \[\[[@&#8203;bonega](https://redirect.github.com/bonega)]]
-   \[[#&#8203;3666]]: fix(cli): running tests on 32bit platforms \[\[[@&#8203;paolobarbolini](https://redirect.github.com/paolobarbolini)]]
-   \[[#&#8203;3686]]: fix: handle nullable values by printing NULL instead of panicking \[\[[@&#8203;joeydewaal](https://redirect.github.com/joeydewaal)]]
-   \[[#&#8203;3700]]: fix(Sqlite): stop sending rows after first error \[\[[@&#8203;joeydewaal](https://redirect.github.com/joeydewaal)]]
-   \[[#&#8203;3701]]: fix(postgres) use signed int for length prefix in `PgCopyIn` \[\[[@&#8203;joeydewaal](https://redirect.github.com/joeydewaal)]]
-   \[[#&#8203;3703]]: fix(Postgres) chunk pg_copy data \[\[[@&#8203;joeydewaal](https://redirect.github.com/joeydewaal)]]
-   \[[#&#8203;3712]]: FromRow: Fix documentation order \[\[[@&#8203;Turbo87](https://redirect.github.com/Turbo87)]]
-   \[[#&#8203;3720]]: Fix readme: uuid feature is gating for all repos \[\[[@&#8203;jthacker](https://redirect.github.com/jthacker)]]
-   \[[#&#8203;3728]]: postgres: Fix tracing span when dropping PgListener \[\[[@&#8203;chitoku-k](https://redirect.github.com/chitoku-k)]]
-   \[[#&#8203;3741]]: Fix example calculation in docs \[\[[@&#8203;dns2utf8](https://redirect.github.com/dns2utf8)]]
-   \[[#&#8203;3749]]: docs: add some missing backticks \[\[[@&#8203;soulwa](https://redirect.github.com/soulwa)]]
-   \[[#&#8203;3753]]: Avoid privilege requirements by using an advisory lock in test setup (postgres). \[\[[@&#8203;kildrens](https://redirect.github.com/kildrens)]]
-   \[[#&#8203;3755]]: Fix FromRow docs for tuples \[\[[@&#8203;xvapx](https://redirect.github.com/xvapx)]]
-   \[[#&#8203;3768]]: chore(Sqlite): remove ci.db from repo \[\[[@&#8203;joeydewaal](https://redirect.github.com/joeydewaal)]]
-   \[[#&#8203;3771]]: fix(ci): breakage from Rustup 1.28 \[\[[@&#8203;abonander](https://redirect.github.com/abonander)]]
-   \[[#&#8203;3786]]: Fix a copy-paste error on get_username docs \[\[[@&#8203;sulami](https://redirect.github.com/sulami)]]
-   \[[#&#8203;3801]]: Fix: Enable Json type when db feature isn't enabled \[\[[@&#8203;thriller08](https://redirect.github.com/thriller08)]]
-   \[[#&#8203;3809]]: fix: PgConnectOptions docs \[\[[@&#820

</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==-->
2025-04-14 07:07:39 +00:00
renovate
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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/tldts/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/tldts/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/tldts/6.1.85/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/tldts/6.1.85/7.0.0?slim=true)](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 [#&#8203;2262](https://redirect.github.com/remusao/tldts/pull/2262) ([@&#8203;remusao](https://redirect.github.com/remusao))

##### Authors: 1

-   Rémi ([@&#8203;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 [#&#8203;2311](https://redirect.github.com/remusao/tldts/pull/2311) ([@&#8203;remusao](https://redirect.github.com/remusao))

##### 🔩 Dependencies

-   Bump axios from 1.7.7 to 1.8.4 [#&#8203;2318](https://redirect.github.com/remusao/tldts/pull/2318) ([@&#8203;dependabot\[bot\]](https://redirect.github.com/dependabot\[bot]))
-   Bump [@&#8203;rollup/plugin-node-resolve](https://redirect.github.com/rollup/plugin-node-resolve) from 16.0.0 to 16.0.1 [#&#8203;2303](https://redirect.github.com/remusao/tldts/pull/2303) ([@&#8203;dependabot\[bot\]](https://redirect.github.com/dependabot\[bot]))
-   Bump [@&#8203;babel/helpers](https://redirect.github.com/babel/helpers) from 7.24.7 to 7.26.10 [#&#8203;2306](https://redirect.github.com/remusao/tldts/pull/2306) ([@&#8203;dependabot\[bot\]](https://redirect.github.com/dependabot\[bot]))
-   Bump rollup from 4.34.8 to 4.39.0 [#&#8203;2314](https://redirect.github.com/remusao/tldts/pull/2314) ([@&#8203;dependabot\[bot\]](https://redirect.github.com/dependabot\[bot]))
-   Bump [@&#8203;types/node](https://redirect.github.com/types/node) from 22.13.5 to 22.14.0 [#&#8203;2315](https://redirect.github.com/remusao/tldts/pull/2315) ([@&#8203;dependabot\[bot\]](https://redirect.github.com/dependabot\[bot]))
-   Bump typescript from 5.7.3 to 5.8.3 [#&#8203;2316](https://redirect.github.com/remusao/tldts/pull/2316) ([@&#8203;dependabot\[bot\]](https://redirect.github.com/dependabot\[bot]))
-   Bump lerna from 8.2.0 to 8.2.2 [#&#8203;2317](https://redirect.github.com/remusao/tldts/pull/2317) ([@&#8203;dependabot\[bot\]](https://redirect.github.com/dependabot\[bot]))

##### Authors: 2

-   [@&#8203;dependabot\[bot\]](https://redirect.github.com/dependabot\[bot])
-   Rémi ([@&#8203;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==-->
2025-04-14 06:29:31 +00:00
Aki Chang
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>
2025-04-14 06:05:47 +00:00
renovate
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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-effect/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-effect/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-effect/1.1.6/2.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-effect/1.1.6/2.0.1?slim=true)](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==-->
2025-04-14 05:34:38 +00:00
yoyoyohamapi
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
2025-04-14 02:42:06 +00:00
renovate
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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/animejs/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/animejs/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/animejs/3.2.2/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/animejs/3.2.2/4.0.0?slim=true)](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==-->
2025-04-14 01:29:09 +00:00
CatsJuice
d6b4ee8172 feat(mobile): ios selfhost server support (#11563) 2025-04-14 01:13:23 +00:00
L-Sun
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
2025-04-13 09:59:24 +00:00