Compare commits

...

261 Commits

Author SHA1 Message Date
Mirone
30200ff86d chore: merge blocksuite source code (#9213) 2024-12-20 15:38:06 +08:00
Brooooooklyn
2c9ef916f4 style: do not autofix eslint directive (#9218) 2024-12-20 06:28:44 +00:00
EYHN
f8e7abd018 fix(core): indexer data loss (#9216) 2024-12-20 06:10:50 +00:00
CatsJuice
a53e231bad feat(component, mobile): masonry layout with virtual scroll support, adapted with all docs (#9208)
### Preview

![CleanShot 2024-12-19 at 20.41.47.gif](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/LakojjjzZNf6ogjOVwKE/60a701ea-bca0-42d5-8a06-f10af44c8fc8.gif)

### Render when scrolling

![CleanShot 2024-12-20 at 09.54.26.gif](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/LakojjjzZNf6ogjOVwKE/df0008d7-5bd9-4e98-b426-cb1036dbb611.gif)

### api
```tsx
const items = useMemo(() => {
    return {
        id: '',
        height: 100,
        children: <div></div>
    }
}, [])

<Masonry items={items} />
```
2024-12-20 05:32:17 +00:00
JimmFly
2988dc284e chore: adjust input style (#9217) 2024-12-20 04:18:34 +00:00
JimmFly
978c4c69b7 chore: bump theme (#9214) 2024-12-20 04:01:17 +00:00
L-Sun
e378f591cb fix(mobile): add missing mobile date selector and remove focus style from date picker in mobile (#9215)
Close [BS-2169](https://linear.app/affine-design/issue/BS-2169/新的-menu-不支持移动端)

### What changes
- add missing date-selector for mobile
- remove focus style of date picker for mobile
  ![CleanShot 2024-12-20 at 11.27.09@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/MyRfgiN4RuBxJfrza3SG/7a9b1c1a-e4aa-4746-9242-f1b8c12cd630.png)
2024-12-20 03:39:49 +00:00
fundon
d7983c50e3 chore(core): add event tracking for attachments (#9198)
Part of: [AF-1678](https://linear.app/affine-design/issue/AF-1678/添加埋点)
2024-12-20 02:43:11 +00:00
JimmFly
7ff24e9c1c fix(core): adjust admin permission (#9204)
close AF-2001 AF-2002
2024-12-20 02:26:17 +00:00
pengx17
0fdf2c4905 fix(core): indexer worker crash on unexpected markdown indent (#9210) 2024-12-20 02:08:44 +00:00
renovate
c6603ad182 chore: bump up @blocksuite/affine version to v0.19.5 (#9202)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/affine](https://redirect.github.com/toeverything/blocksuite) ([source](https://redirect.github.com/toeverything/blocksuite/tree/HEAD/packages/affine/all), [changelog](https://redirect.github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md)) | [`0.19.3` -> `0.19.5`](https://renovatebot.com/diffs/npm/@blocksuite%2faffine/0.19.3/0.19.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2faffine/0.19.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2faffine/0.19.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2faffine/0.19.3/0.19.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2faffine/0.19.3/0.19.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/blocksuite (@&#8203;blocksuite/affine)</summary>

### [`v0.19.5`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0195)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.19.4...v0.19.5)

##### Patch Changes

-   [`d2a3eb7`](https://redirect.github.com/toeverything/blocksuite/commit/d2a3eb7): Release patch version.

### [`v0.19.4`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0194)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.19.3...v0.19.4)

##### Patch Changes

-   [`8ae61d6`](https://redirect.github.com/toeverything/blocksuite/commit/8ae61d6): Improves edgeless viewport stability

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS43Mi41IiwidXBkYXRlZEluVmVyIjoiMzkuNzIuNSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-19 10:30:20 +00:00
Brooooooklyn
4c48aee88b ci: remove nx-cloud (#9203) 2024-12-19 07:58:45 +00:00
pengx17
da0f3d0b56 chore(core): some dnd events (#9206)
fix AF-1999
2024-12-19 07:42:13 +00:00
EYHN
30588783ef fix(mobile): disable blob sync on mobile (#9200) 2024-12-19 03:54:34 +00:00
pengx17
6dc512e0da fix(core): dnd should not create new doc on dragging start (#9201)
fix AF-2000
2024-12-19 03:28:29 +00:00
JimmFly
a153a1c3c9 feat(core): add app version to request header (#9101) 2024-12-19 02:38:08 +00:00
JimmFly
70deeaa804 fix(core): adjust member limit dialog (#9195)
close AF-1945 AF-1989 AF-1981 AF-1998 AF-1950 AF-1951

Adjust the member limit dialog. Now it will determine whether the member limit is reached when clicking Send Invite Email.
Modified the notification after sending the invitation.
2024-12-19 02:23:35 +00:00
fundon
def4dc854a feat(core): impl doc display meta extension (#9165)
Closes: [BS-2111](https://linear.app/affine-design/issue/BS-2111/定义和实现-docdisplaymetaextension)
Upstreams: https://github.com/toeverything/blocksuite/pull/8953

https://github.com/user-attachments/assets/008d7433-efef-47c4-8189-9bc288e61199
2024-12-19 01:02:27 +00:00
renovate
ef0f6e5993 chore: bump up @blocksuite/affine version to v0.19.3 (#9197)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/affine](https://redirect.github.com/toeverything/blocksuite) ([source](https://redirect.github.com/toeverything/blocksuite/tree/HEAD/packages/affine/all), [changelog](https://redirect.github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md)) | [`0.19.2` -> `0.19.3`](https://renovatebot.com/diffs/npm/@blocksuite%2faffine/0.19.2/0.19.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2faffine/0.19.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2faffine/0.19.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2faffine/0.19.2/0.19.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2faffine/0.19.2/0.19.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/blocksuite (@&#8203;blocksuite/affine)</summary>

### [`v0.19.3`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0193)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.19.2...v0.19.3)

##### Patch Changes

-   [`59e0cd6`](https://redirect.github.com/toeverything/blocksuite/commit/59e0cd6): Release patch version.

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS43Mi41IiwidXBkYXRlZEluVmVyIjoiMzkuNzIuNSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-18 14:57:01 +00:00
JimmFly
cbb52c69b2 chore: temporarily hide link invitation (#9193)
close AF-1992 AF-1995 AF-1979 AF-1997

chore: temporarily hide link invitation

fix(core): only team workspace can assign admin

fix(core): member options in member list do not match expectations
2024-12-18 07:26:41 +00:00
Saul-Mirone
e13f9d3885 feat: enable new dnd flag (#9194) 2024-12-18 05:53:08 +00:00
EYHN
64b017dc1b feat(nbstore): remove async on connection api (#9187)
We should not use async on `connect` and `disconnect`, for `WebSocketConnection` will never connect when offline.

We should handle the connection status of each storage in sync, using the `connection.waitForConnect`

This PR also puts the connection reference count on the `connect` and disconnect`
2024-12-18 03:59:49 +00:00
EYHN
3fddf050a4 feat(nbstore): add doc sync state (#9131) 2024-12-18 03:59:47 +00:00
EYHN
8374346b2e feat(core): lazy load doc card (#9192) 2024-12-18 03:40:33 +00:00
EYHN
c31e9fdff4 fix(core): fix no page root error (#9190) 2024-12-18 03:39:48 +00:00
CatsJuice
2ceb6e924c fix(ios): sync keyboard color scheme when theme changed (#9184) 2024-12-18 02:16:45 +00:00
renovate
f0d99f46dd chore: bump up @blocksuite/affine version to v0.19.2 (#9175)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/affine](https://redirect.github.com/toeverything/blocksuite) ([source](https://redirect.github.com/toeverything/blocksuite/tree/HEAD/packages/affine/all), [changelog](https://redirect.github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md)) | [`0.19.1` -> `0.19.2`](https://renovatebot.com/diffs/npm/@blocksuite%2faffine/0.19.1/0.19.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2faffine/0.19.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2faffine/0.19.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2faffine/0.19.1/0.19.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2faffine/0.19.1/0.19.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### Release Notes

<details>
<summary>toeverything/blocksuite (@&#8203;blocksuite/affine)</summary>

### [`v0.19.2`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0192)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.19.1...v0.19.2)

##### Patch Changes

-   [`bc04f27`](https://redirect.github.com/toeverything/blocksuite/commit/bc04f27): ## Feat

    -   feat: support heading toggle ([#&#8203;8829](https://redirect.github.com/toeverything/blocksuite/issues/8829))
    -   feat(blocks): add surface element plain text adapter ([#&#8203;8977](https://redirect.github.com/toeverything/blocksuite/issues/8977))
    -   feat: add doc display meta extension ([#&#8203;8953](https://redirect.github.com/toeverything/blocksuite/issues/8953))

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS42OS4zIiwidXBkYXRlZEluVmVyIjoiMzkuNjkuMyIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-17 12:18:46 +00:00
JimmFly
4b836cd40f fix(core): add visit workspace button to team upgrade success page (#9186)
close AF-1978
2024-12-17 11:07:48 +00:00
DarkSky
e3f922bfac fix(server): send declined email (#9188) 2024-12-17 18:15:43 +08:00
liuyi
b0e64fe516 chore: remove legacy tests (#9183) 2024-12-17 17:06:28 +08:00
darkskygit
27d4aa7ca7 test(server): add more test for team workspace (#9182) 2024-12-17 08:42:19 +00:00
JimmFly
95d1a4a27d feat(core): add sync paused dialog (#9135)
close AF-1932 AF-1954 AF-1953 AF-1955

Add a pop-up reminder when the workspace capacity exceeds the limit or the number of members exceeds the limit.
2024-12-17 05:55:41 +00:00
EYHN
ffa0231cf5 feat(nbstore): add awareness storage&sync&frontend (#9016) 2024-12-17 04:37:15 +00:00
Brooooooklyn
36ac79351f chore: disable no-dupe-args rule (#9169) 2024-12-17 03:08:11 +00:00
CatsJuice
d3e7edf7c4 fix(mobile): can navigate in journal conflicts (#9170) 2024-12-17 02:54:10 +00:00
CatsJuice
12954ec82c fix(mobile): editor error boundary is not fully visible (#9172) 2024-12-17 02:38:11 +00:00
akumatus
563da3b6f4 fix(core): in page mode, AI replace selection did not correctly replace the selected text (#9179)
Fix issue [BS-1980](https://linear.app/affine-design/issue/BS-1980).
2024-12-17 02:22:48 +00:00
EYHN
b36b398957 fix(infra): memory leak (#9013) 2024-12-16 16:55:49 +00:00
renovate
55f1cc4b1e chore: bump up all non-major dependencies (#9149)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@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.709.0` -> `3.712.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.709.0/3.712.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.712.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.712.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.709.0/3.712.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.709.0/3.712.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@commitlint/cli](https://commitlint.js.org/) ([source](https://redirect.github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli)) | [`19.6.0` -> `19.6.1`](https://renovatebot.com/diffs/npm/@commitlint%2fcli/19.6.0/19.6.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@commitlint%2fcli/19.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@commitlint%2fcli/19.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@commitlint%2fcli/19.6.0/19.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@commitlint%2fcli/19.6.0/19.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@eslint/js](https://eslint.org) ([source](https://redirect.github.com/eslint/eslint/tree/HEAD/packages/js)) | [`9.16.0` -> `9.17.0`](https://renovatebot.com/diffs/npm/@eslint%2fjs/9.16.0/9.17.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint%2fjs/9.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@eslint%2fjs/9.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@eslint%2fjs/9.16.0/9.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@eslint%2fjs/9.16.0/9.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@oxc-node/core](https://redirect.github.com/oxc-project/oxc-node) | [`^0.0.15` -> `^0.0.16`](https://renovatebot.com/diffs/npm/@oxc-node%2fcore/0.0.15/0.0.16) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@oxc-node%2fcore/0.0.16?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@oxc-node%2fcore/0.0.16?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@oxc-node%2fcore/0.0.15/0.0.16?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@oxc-node%2fcore/0.0.15/0.0.16?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://redirect.github.com/getsentry/sentry-javascript)) | [`8.44.0` -> `8.45.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.44.0/8.45.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/8.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2freact/8.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2freact/8.44.0/8.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/8.44.0/8.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@tanstack/react-table](https://tanstack.com/table) ([source](https://redirect.github.com/TanStack/table/tree/HEAD/packages/react-table)) | [`8.20.5` -> `8.20.6`](https://renovatebot.com/diffs/npm/@tanstack%2freact-table/8.20.5/8.20.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@tanstack%2freact-table/8.20.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@tanstack%2freact-table/8.20.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@tanstack%2freact-table/8.20.5/8.20.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@tanstack%2freact-table/8.20.5/8.20.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [commitlint](https://commitlint.js.org/) ([source](https://redirect.github.com/conventional-changelog/commitlint/tree/HEAD/@alias/commitlint)) | [`19.6.0` -> `19.6.1`](https://renovatebot.com/diffs/npm/commitlint/19.6.0/19.6.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/commitlint/19.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/commitlint/19.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/commitlint/19.6.0/19.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/commitlint/19.6.0/19.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [fast-xml-parser](https://redirect.github.com/NaturalIntelligence/fast-xml-parser) | [`4.5.0` -> `4.5.1`](https://renovatebot.com/diffs/npm/fast-xml-parser/4.5.0/4.5.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/fast-xml-parser/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fast-xml-parser/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fast-xml-parser/4.5.0/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fast-xml-parser/4.5.0/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [graphql](https://redirect.github.com/graphql/graphql-js) | [`16.9.0` -> `16.10.0`](https://renovatebot.com/diffs/npm/graphql/16.9.0/16.10.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/graphql/16.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql/16.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql/16.9.0/16.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql/16.9.0/16.10.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [idb](https://redirect.github.com/jakearchibald/idb) | [`8.0.0` -> `8.0.1`](https://renovatebot.com/diffs/npm/idb/8.0.0/8.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/idb/8.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/idb/8.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/idb/8.0.0/8.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/idb/8.0.0/8.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [marked](https://marked.js.org) ([source](https://redirect.github.com/markedjs/marked)) | [`15.0.3` -> `15.0.4`](https://renovatebot.com/diffs/npm/marked/15.0.3/15.0.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/marked/15.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/marked/15.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/marked/15.0.3/15.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/marked/15.0.3/15.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [msw](https://mswjs.io) ([source](https://redirect.github.com/mswjs/msw)) | [`2.6.8` -> `2.6.9`](https://renovatebot.com/diffs/npm/msw/2.6.8/2.6.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/msw/2.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/msw/2.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/msw/2.6.8/2.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/msw/2.6.8/2.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [nodemon](https://nodemon.io) ([source](https://redirect.github.com/remy/nodemon)) | [`3.1.7` -> `3.1.9`](https://renovatebot.com/diffs/npm/nodemon/3.1.7/3.1.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nodemon/3.1.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nodemon/3.1.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nodemon/3.1.7/3.1.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nodemon/3.1.7/3.1.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [openai](https://redirect.github.com/openai/openai-node) | [`4.76.2` -> `4.76.3`](https://renovatebot.com/diffs/npm/openai/4.76.2/4.76.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/openai/4.76.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/openai/4.76.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/openai/4.76.2/4.76.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/openai/4.76.2/4.76.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [react-day-picker](https://daypicker.dev) ([source](https://redirect.github.com/gpbl/react-day-picker)) | [`9.4.3` -> `9.4.4`](https://renovatebot.com/diffs/npm/react-day-picker/9.4.3/9.4.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-day-picker/9.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-day-picker/9.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-day-picker/9.4.3/9.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-day-picker/9.4.3/9.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [terser-webpack-plugin](https://redirect.github.com/webpack-contrib/terser-webpack-plugin) | [`5.3.10` -> `5.3.11`](https://renovatebot.com/diffs/npm/terser-webpack-plugin/5.3.10/5.3.11) | [![age](https://developer.mend.io/api/mc/badges/age/npm/terser-webpack-plugin/5.3.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/terser-webpack-plugin/5.3.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/terser-webpack-plugin/5.3.10/5.3.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/terser-webpack-plugin/5.3.10/5.3.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [typedoc](https://typedoc.org) ([source](https://redirect.github.com/TypeStrong/TypeDoc)) | [`0.27.4` -> `0.27.5`](https://renovatebot.com/diffs/npm/typedoc/0.27.4/0.27.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/typedoc/0.27.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typedoc/0.27.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typedoc/0.27.4/0.27.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typedoc/0.27.4/0.27.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [vaul](https://vaul.emilkowal.ski/) ([source](https://redirect.github.com/emilkowalski/vaul)) | [`1.1.1` -> `1.1.2`](https://renovatebot.com/diffs/npm/vaul/1.1.1/1.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vaul/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vaul/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vaul/1.1.1/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vaul/1.1.1/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>aws/aws-sdk-js-v3 (@&#8203;aws-sdk/client-s3)</summary>

### [`v3.712.0`](https://redirect.github.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#37120-2024-12-13)

[Compare Source](https://redirect.github.com/aws/aws-sdk-js-v3/compare/v3.709.0...v3.712.0)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://redirect.github.com/aws-sdk/client-s3)

</details>

<details>
<summary>conventional-changelog/commitlint (@&#8203;commitlint/cli)</summary>

### [`v19.6.1`](https://redirect.github.com/conventional-changelog/commitlint/blob/HEAD/@&#8203;commitlint/cli/CHANGELOG.md#1961-2024-12-15)

[Compare Source](https://redirect.github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1)

**Note:** Version bump only for package [@&#8203;commitlint/cli](https://redirect.github.com/commitlint/cli)

</details>

<details>
<summary>eslint/eslint (@&#8203;eslint/js)</summary>

### [`v9.17.0`](https://redirect.github.com/eslint/eslint/releases/tag/v9.17.0)

[Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.16.0...v9.17.0)

#### Features

-   [`eed91d1`](eed91d12d4) feat: add suggestions to `no-unused-vars` ([#&#8203;18352](https://redirect.github.com/eslint/eslint/issues/18352)) (Tanuj Kanti)

#### Bug Fixes

-   [`67d683d`](67d683df29) fix: fix crash when `message.fix` is nullish ([#&#8203;19168](https://redirect.github.com/eslint/eslint/issues/19168)) (ntnyq)
-   [`c618707`](c61870715e) fix: ignore vars with non-identifier references in no-useless-assignment ([#&#8203;19200](https://redirect.github.com/eslint/eslint/issues/19200)) (YeonJuan)

#### Documentation

-   [`3c22d2a`](3c22d2acce) docs: update `yoda` to `Yoda` in `yoda.md` for consistency ([#&#8203;19230](https://redirect.github.com/eslint/eslint/issues/19230)) (루밀LuMir)
-   [`e0a2203`](e0a220355f) docs: add missing backticks to `no-sequences` ([#&#8203;19233](https://redirect.github.com/eslint/eslint/issues/19233)) (루밀LuMir)
-   [`4cc4881`](4cc48812cd) docs: Update README (GitHub Actions Bot)
-   [`3db6fdf`](3db6fdf885) docs: \[no-await-in-loop] expand on benefits and inapplicability ([#&#8203;19211](https://redirect.github.com/eslint/eslint/issues/19211)) (Kirk Waiblinger)
-   [`bf2a4f6`](bf2a4f686b) docs: add missing backticks to `func-style` ([#&#8203;19227](https://redirect.github.com/eslint/eslint/issues/19227)) (루밀LuMir)
-   [`ba098bd`](ba098bd03c) docs: add missing header to `prefer-spread` ([#&#8203;19224](https://redirect.github.com/eslint/eslint/issues/19224)) (루밀LuMir)
-   [`b607ae6`](b607ae6491) docs: update description of `no-param-reassign` ([#&#8203;19220](https://redirect.github.com/eslint/eslint/issues/19220)) (루밀LuMir)
-   [`1eb424d`](1eb424de55) docs: add missing backticks to `prefer-destructuring` ([#&#8203;19223](https://redirect.github.com/eslint/eslint/issues/19223)) (루밀LuMir)
-   [`85998d1`](85998d1405) docs: add missing backticks to `no-unneeded-ternary` ([#&#8203;19222](https://redirect.github.com/eslint/eslint/issues/19222)) (루밀LuMir)
-   [`b75b32c`](b75b32c091) docs: add missing backticks to `no-new-func` ([#&#8203;19219](https://redirect.github.com/eslint/eslint/issues/19219)) (루밀LuMir)
-   [`a7700bc`](a7700bcc9c) docs: add missing backticks to `id-length` ([#&#8203;19217](https://redirect.github.com/eslint/eslint/issues/19217)) (루밀LuMir)
-   [`e2bb429`](e2bb429974) docs: add missing backticks to `complexity.md` ([#&#8203;19214](https://redirect.github.com/eslint/eslint/issues/19214)) (루밀LuMir)
-   [`045d716`](045d716b92) docs: add missing `)` to `id-denylist` ([#&#8203;19213](https://redirect.github.com/eslint/eslint/issues/19213)) (루밀LuMir)
-   [`7fe4114`](7fe4114be2) docs: Update README (GitHub Actions Bot)
-   [`c743ba6`](c743ba6402) docs: add CSS language to `no-restricted-syntax` ([#&#8203;19208](https://redirect.github.com/eslint/eslint/issues/19208)) (Milos Djermanovic)
-   [`1416d70`](1416d70d43) docs: add missing backticks to `eqeqeq` ([#&#8203;19207](https://redirect.github.com/eslint/eslint/issues/19207)) (루밀LuMir)
-   [`b950c1b`](b950c1b7db) docs: add missing backticks to `prefer-object-spread` ([#&#8203;19206](https://redirect.github.com/eslint/eslint/issues/19206)) (루밀LuMir)
-   [`8a941cb`](8a941cb776) docs: update docs and `description` of `require-unicode-regexp` ([#&#8203;19205](https://redirect.github.com/eslint/eslint/issues/19205)) (루밀LuMir)
-   [`cbab228`](cbab2281dd) docs: Update README (GitHub Actions Bot)
-   [`f2257ce`](f2257ce412) docs: update comments and `description` of `no-script-url` ([#&#8203;19203](https://redirect.github.com/eslint/eslint/issues/19203)) (루밀LuMir)
-   [`365f0f4`](365f0f4df7) docs: add missing backtick to `default-case-last` ([#&#8203;19202](https://redirect.github.com/eslint/eslint/issues/19202)) (루밀LuMir)
-   [`e6b84f5`](e6b84f535e) docs: add missing punctuation in document ([#&#8203;19161](https://redirect.github.com/eslint/eslint/issues/19161)) (루밀LuMir)
-   [`c88708e`](c88708e057) docs: replace quote with backtick in `description` of `for-direction` ([#&#8203;19199](https://redirect.github.com/eslint/eslint/issues/19199)) (루밀LuMir)
-   [`a76f233`](a76f233a67) docs: use higher contrast color tokens for code comments ([#&#8203;19187](https://redirect.github.com/eslint/eslint/issues/19187)) (Josh Goldberg )
-   [`db19502`](db19502497) docs: Update README (GitHub Actions Bot)

#### Chores

-   [`cc243c9`](cc243c9482) chore: upgrade to `@eslint/js@9.17.0` ([#&#8203;19242](https://redirect.github.com/eslint/eslint/issues/19242)) (Francesco Trotta)
-   [`84c5787`](84c5787780) chore: package.json update for [@&#8203;eslint/js](https://redirect.github.com/eslint/js) release (Jenkins)
-   [`4c4f53b`](4c4f53b8c9) chore: add missing backticks to `flags.js` ([#&#8203;19226](https://redirect.github.com/eslint/eslint/issues/19226)) (루밀LuMir)
-   [`4b3132c`](4b3132c3f5) chore: update dependency eslint-plugin-expect-type to ^0.6.0 ([#&#8203;19221](https://redirect.github.com/eslint/eslint/issues/19221)) (renovate\[bot])
-   [`9bf2204`](9bf220464a) chore: add type definitions for the `eslint-config-eslint` package ([#&#8203;19050](https://redirect.github.com/eslint/eslint/issues/19050)) (Arya Emami)
-   [`ee8c220`](ee8c2200a1) chore: fix incorrect `name` property in `integration-tutorial-code` ([#&#8203;19218](https://redirect.github.com/eslint/eslint/issues/19218)) (루밀LuMir)
-   [`cca801d`](cca801dd17) chore: Upgrade cross-spawn to 7.0.6 ([#&#8203;19185](https://redirect.github.com/eslint/eslint/issues/19185)) (folortin)

</details>

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

### [`v0.0.16`](https://redirect.github.com/oxc-project/oxc-node/blob/HEAD/CHANGELOG.md#0016-2024-12-13)

[Compare Source](https://redirect.github.com/oxc-project/oxc-node/compare/v0.0.15...v0.0.16)

**Note:** Version bump only for package oxc-node

</details>

<details>
<summary>getsentry/sentry-javascript (@&#8203;sentry/react)</summary>

### [`v8.45.0`](https://redirect.github.com/getsentry/sentry-javascript/blob/HEAD/CHANGELOG.md#8450)

[Compare Source](https://redirect.github.com/getsentry/sentry-javascript/compare/8.44.0...8.45.0)

-   feat(core): Add `handled` option to `captureConsoleIntegration` ([#&#8203;14664](https://redirect.github.com/getsentry/sentry-javascript/pull/14664))
-   feat(browser): Attach virtual stack traces to `HttpClient` events ([#&#8203;14515](https://redirect.github.com/getsentry/sentry-javascript/pull/14515))
-   feat(replay): Upgrade rrweb packages to 2.31.0 ([#&#8203;14689](https://redirect.github.com/getsentry/sentry-javascript/pull/14689))
-   fix(aws-serverless): Remove v8 layer as it overwrites the current layer for docs ([#&#8203;14679](https://redirect.github.com/getsentry/sentry-javascript/pull/14679))
-   fix(browser): Mark stack trace from `captureMessage` with `attachStacktrace: true` as synthetic ([#&#8203;14668](https://redirect.github.com/getsentry/sentry-javascript/pull/14668))
-   fix(core): Mark stack trace from `captureMessage` with `attatchStackTrace: true` as synthetic ([#&#8203;14670](https://redirect.github.com/getsentry/sentry-javascript/pull/14670))
-   fix(core): Set `level` in server runtime `captureException` ([#&#8203;10587](https://redirect.github.com/getsentry/sentry-javascript/pull/10587))
-   fix(profiling-node): Guard invocation of native profiling methods ([#&#8203;14676](https://redirect.github.com/getsentry/sentry-javascript/pull/14676))
-   fix(nuxt): Inline nitro-utils function ([#&#8203;14680](https://redirect.github.com/getsentry/sentry-javascript/pull/14680))
-   fix(profiling-node): Ensure profileId is added to transaction event ([#&#8203;14681](https://redirect.github.com/getsentry/sentry-javascript/pull/14681))
-   fix(react): Add React Router Descendant Routes support ([#&#8203;14304](https://redirect.github.com/getsentry/sentry-javascript/pull/14304))
-   fix: Disable ANR and Local Variables if debugger is enabled via CLI args ([#&#8203;14643](https://redirect.github.com/getsentry/sentry-javascript/pull/14643))

Work in this release was contributed by [@&#8203;anonrig](https://redirect.github.com/anonrig) and [@&#8203;Zih0](https://redirect.github.com/Zih0). Thank you for your contributions!

</details>

<details>
<summary>TanStack/table (@&#8203;tanstack/react-table)</summary>

### [`v8.20.6`](https://redirect.github.com/TanStack/table/releases/tag/v8.20.6)

[Compare Source](https://redirect.github.com/TanStack/table/compare/v8.20.5...v8.20.6)

Version 8.20.6 - 12/13/24, 2:34 PM

#### Changes

##### Fix

-   JSX namespace from React ([#&#8203;5830](https://redirect.github.com/TanStack/table/issues/5830)) ([`cbcea6a`](https://redirect.github.com/TanStack/table/commit/cbcea6a)) by Bill Collins

##### Chore

-   update [@&#8203;tanstack/config](https://redirect.github.com/tanstack/config) to v0.13.0 ([#&#8203;5731](https://redirect.github.com/TanStack/table/issues/5731)) ([`2db4061`](https://redirect.github.com/TanStack/table/commit/2db4061)) by Lachlan Collins

##### Docs

-   Updated some incomplete docs ([#&#8203;5741](https://redirect.github.com/TanStack/table/issues/5741)) ([`6b4d616`](https://redirect.github.com/TanStack/table/commit/6b4d616)) by M Hamid
-   Fix label typo in config.json ([#&#8203;5712](https://redirect.github.com/TanStack/table/issues/5712)) ([`7fe650d`](https://redirect.github.com/TanStack/table/commit/7fe650d)) by Petter Juterud Barhaugen

#### Packages

-   [@&#8203;tanstack/react-table](https://redirect.github.com/tanstack/react-table)[@&#8203;8](https://redirect.github.com/8).20.6
-   [@&#8203;tanstack/react-table-devtools](https://redirect.github.com/tanstack/react-table-devtools)[@&#8203;8](https://redirect.github.com/8).20.6

</details>

<details>
<summary>conventional-changelog/commitlint (commitlint)</summary>

### [`v19.6.1`](https://redirect.github.com/conventional-changelog/commitlint/blob/HEAD/@&#8203;alias/commitlint/CHANGELOG.md#1961-2024-12-15)

[Compare Source](https://redirect.github.com/conventional-changelog/commitlint/compare/v19.6.0...v19.6.1)

**Note:** Version bump only for package commitlint

</details>

<details>
<summary>NaturalIntelligence/fast-xml-parser (fast-xml-parser)</summary>

### [`v4.5.1`](https://redirect.github.com/NaturalIntelligence/fast-xml-parser/compare/v4.5.0...v4.5.1)

[Compare Source](https://redirect.github.com/NaturalIntelligence/fast-xml-parser/compare/v4.5.0...v4.5.1)

</details>

<details>
<summary>graphql/graphql-js (graphql)</summary>

### [`v16.10.0`](https://redirect.github.com/graphql/graphql-js/releases/tag/v16.10.0): 16.10.0

[Compare Source](https://redirect.github.com/graphql/graphql-js/compare/v16.9.0...v16.10.0)

#### v16.10.0 (2024-12-15)

##### New Feature 🚀

-   [#&#8203;4286](https://redirect.github.com/graphql/graphql-js/pull/4286) fix: properly type `extensions` in GraphQLFormattedError ([@&#8203;tpoisseau](https://redirect.github.com/tpoisseau))
-   [#&#8203;4292](https://redirect.github.com/graphql/graphql-js/pull/4292) Expose tokenCount on the DocumentNode ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))

##### Bug Fix 🐞

-   [#&#8203;4137](https://redirect.github.com/graphql/graphql-js/pull/4137) backport(v16): Require non-empty directive locations ([#&#8203;4100](https://redirect.github.com/graphql/graphql-js/issues/4100)) ([@&#8203;benjie](https://redirect.github.com/benjie))
-   [#&#8203;4168](https://redirect.github.com/graphql/graphql-js/pull/4168) fix(validation): catch OverlappingFieldsCanBeMergedRule violations with nested fragments ([@&#8203;sachindshinde](https://redirect.github.com/sachindshinde))
-   [#&#8203;4226](https://redirect.github.com/graphql/graphql-js/pull/4226) Backport introspection type fix ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
-   [#&#8203;4291](https://redirect.github.com/graphql/graphql-js/pull/4291) Address empty selection-set ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))

##### Docs 📝

<details>
<summary> 10 PRs were merged </summary>

-   [#&#8203;4240](https://redirect.github.com/graphql/graphql-js/pull/4240) Convert from docusaurus to nextra ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
-   [#&#8203;4248](https://redirect.github.com/graphql/graphql-js/pull/4248) Add content from [https://github.com/graphql/graphql.github.io/pull/1782](https://redirect.github.com/graphql/graphql.github.io/pull/1782) ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
-   [#&#8203;4249](https://redirect.github.com/graphql/graphql-js/pull/4249) Styling fixes ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
-   [#&#8203;4256](https://redirect.github.com/graphql/graphql-js/pull/4256) Various fixes to docs ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
-   [#&#8203;4279](https://redirect.github.com/graphql/graphql-js/pull/4279) Solve some low hanging fruit in the documentation ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
-   [#&#8203;4283](https://redirect.github.com/graphql/graphql-js/pull/4283) Add overview page and add stackblitz to tutorial ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
-   [#&#8203;4284](https://redirect.github.com/graphql/graphql-js/pull/4284) Provide people with tabs so they can use classes as well ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
-   [#&#8203;4289](https://redirect.github.com/graphql/graphql-js/pull/4289) Add note about defer/stream being v17 ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
-   [#&#8203;4290](https://redirect.github.com/graphql/graphql-js/pull/4290) Write about `@oneOf` in the graphql-js documentation ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
-   [#&#8203;4295](https://redirect.github.com/graphql/graphql-js/pull/4295) Split up in v16 API documentation ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))

</details>

##### Internal 🏠
<details>
<summary> 4 PRs were merged </summary>

-   [#&#8203;4138](https://redirect.github.com/graphql/graphql-js/pull/4138) Upgrade codecov action and pass token ([@&#8203;benjie](https://redirect.github.com/benjie))
-   [#&#8203;4139](https://redirect.github.com/graphql/graphql-js/pull/4139) Fix codecov workflow ([@&#8203;benjie](https://redirect.github.com/benjie))
-   [#&#8203;4157](https://redirect.github.com/graphql/graphql-js/pull/4157) Add GraphQLConf 2024 banner ([@&#8203;bignimbus](https://redirect.github.com/bignimbus))
-   [#&#8203;4193](https://redirect.github.com/graphql/graphql-js/pull/4193) Upgrade deprecated actions ([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))

</details>

##### Committers: 5
* Benjie([@&#8203;benjie](https://redirect.github.com/benjie))
* Jeff Auriemma([@&#8203;bignimbus](https://redirect.github.com/bignimbus))
* Jovi De Croock([@&#8203;JoviDeCroock](https://redirect.github.com/JoviDeCroock))
* Sachin D. Shinde([@&#8203;sachindshinde](https://redirect.github.com/sachindshinde))
* tpoisseau([@&#8203;tpoisseau](https://redirect.github.com/tpoisseau))

</details>

<details>
<summary>jakearchibald/idb (idb)</summary>

### [`v8.0.1`](https://redirect.github.com/jakearchibald/idb/compare/v8.0.0...v8.0.1)

[Compare Source](https://redirect.github.com/jakearchibald/idb/compare/v8.0.0...v8.0.1)

</details>

<details>
<summary>markedjs/marked (marked)</summary>

### [`v15.0.4`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.4)

[Compare Source](https://redirect.github.com/markedjs/marked/compare/v15.0.3...v15.0.4)

##### Bug Fixes

-   fix list with no items looping forever ([#&#8203;3560](https://redirect.github.com/markedjs/marked/issues/3560)) ([e4198ed](e4198ed70d))

</details>

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

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

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

#### v2.6.9 (2024-12-16)

##### Bug Fixes

-   support `SharedArrayBuffer` in `HttpResponse.arrayBuffer` ([#&#8203;2389](https://redirect.github.com/mswjs/msw/issues/2389)) ([`41f00e1`](41f00e1a67)) [@&#8203;danilofuchs](https://redirect.github.com/danilofuchs) [@&#8203;kettanaito](https://redirect.github.com/kettanaito)

</details>

<details>
<summary>remy/nodemon (nodemon)</summary>

### [`v3.1.9`](https://redirect.github.com/remy/nodemon/releases/tag/v3.1.9)

[Compare Source](https://redirect.github.com/remy/nodemon/compare/v3.1.8...v3.1.9)

##### Bug Fixes

-   maintain backward support for `exitcrash` ([9c9de6e](9c9de6eb07))

### [`v3.1.8`](https://redirect.github.com/remy/nodemon/releases/tag/v3.1.8)

[Compare Source](https://redirect.github.com/remy/nodemon/compare/v3.1.7...v3.1.8)

##### Bug Fixes

-   types updated ([cb91187](cb91187ef6))

</details>

<details>
<summary>openai/openai-node (openai)</summary>

### [`v4.76.3`](https://redirect.github.com/openai/openai-node/blob/HEAD/CHANGELOG.md#4763-2024-12-13)

[Compare Source](https://redirect.github.com/openai/openai-node/compare/v4.76.2...v4.76.3)

Full Changelog: [v4.76.2...v4.76.3](https://redirect.github.com/openai/openai-node/compare/v4.76.2...v4.76.3)

##### Chores

-   **internal:** better ecosystem test debugging ([86fc0a8](86fc0a81ed))

##### Documentation

-   **README:** fix helpers section links ([#&#8203;1224](https://redirect.github.com/openai/openai-node/issues/1224)) ([efbe30a](efbe30a156))

</details>

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

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

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

This release fixes an issue with the month names in the Jalali calendar.

#### What's Changed

-   fix(jalali): defaults calendar to `faIR` locale and RTL direction by [@&#8203;gpbl](https://redirect.github.com/gpbl) in [https://github.com/gpbl/react-day-picker/pull/2624](https://redirect.github.com/gpbl/react-day-picker/pull/2624)

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

</details>

<details>
<summary>webpack-contrib/terser-webpack-plugin (terser-webpack-plugin)</summary>

### [`v5.3.11`](https://redirect.github.com/webpack-contrib/terser-webpack-plugin/blob/HEAD/CHANGELOG.md#5311-2024-12-13)

[Compare Source](https://redirect.github.com/webpack-contrib/terser-webpack-plugin/compare/v5.3.10...v5.3.11)

</details>

<details>
<summary>TypeStrong/TypeDoc (typedoc)</summary>

### [`v0.27.5`](https://redirect.github.com/TypeStrong/TypeDoc/blob/HEAD/CHANGELOG.md#v0275-2024-12-14)

[Compare Source](https://redirect.github.com/TypeStrong/TypeDoc/compare/v0.27.4...v0.27.5)

##### Bug Fixes

-   Possibly Breaking: TypeDoc will no longer render anchors within the page for
    deeply nested properties. This only affects links to properties of
    properties of types, which did not have a clickable link exposed so are
    unlikely to have been linked to. Furthermore, these links were not always
    created by TypeDoc, only being created if all parent properties contained
    comments, [#&#8203;2808](https://redirect.github.com/TypeStrong/TypeDoc/issues/2808).
-   TypeDoc will now warn if a property which does not have a URL within the
    rendered document and the parent property/page will be linked to instead,
    [#&#8203;2808](https://redirect.github.com/TypeStrong/TypeDoc/issues/2808). These warnings can be disabled with the `validation.rewrittenLink`
    option.
-   Fix restoration of groups/categories including documents, [#&#8203;2801](https://redirect.github.com/TypeStrong/TypeDoc/issues/2801).
-   Fixed missed relative paths within markdown link references in documents.
-   Improved handling of incomplete inline code blocks within markdown.
-   Direct `https://` links under the `hostedBaseUrl` option's URL will no
    longer be treated as external, [#&#8203;2809](https://redirect.github.com/TypeStrong/TypeDoc/issues/2809).

##### Thanks!

-   [@&#8203;SacDeNoeuds](https://redirect.github.com/SacDeNoeuds)

</details>

<details>
<summary>emilkowalski/vaul (vaul)</summary>

### [`v1.1.2`](https://redirect.github.com/emilkowalski/vaul/releases/tag/v1.1.2)

[Compare Source](https://redirect.github.com/emilkowalski/vaul/compare/v1.1.1...v1.1.2)

#### What's Changed

-   fix: update peer deps for react and react-dom by [@&#8203;shadcn](https://redirect.github.com/shadcn) in [https://github.com/emilkowalski/vaul/pull/504](https://redirect.github.com/emilkowalski/vaul/pull/504)
-   fix: nested drawer onOpenChange issue by [@&#8203;chrism](https://redirect.github.com/chrism) in [https://github.com/emilkowalski/vaul/pull/516](https://redirect.github.com/emilkowalski/vaul/pull/516)

#### New Contributors

-   [@&#8203;chrism](https://redirect.github.com/chrism) made their first contribution in [https://github.com/emilkowalski/vaul/pull/516](https://redirect.github.com/emilkowalski/vaul/pull/516)

**Full Changelog**: https://github.com/emilkowalski/vaul/compare/v1.1.1...v1.1.2

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS41OC4xIiwidXBkYXRlZEluVmVyIjoiMzkuNjkuMyIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-16 13:03:46 +00:00
pengx17
7b0387541c fix(core): redudant drop target register (#9177)
fix the following issue.
root cause is that options.element is being reused when cleaning up, but if its value comes from a ref, it might be null at that point.

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/1739c4e0-9ba8-4e27-8944-c6022644b40d.png)
2024-12-16 10:23:31 +00:00
akumatus
2f79104bdb feat(core): support ai insert image, mindmap, slides and make it real in page mode (#9164)
Support issue [BS-2085](https://linear.app/affine-design/issue/BS-2085).

### What changed?
- Refactor the `actionToAnswerRenderer` function to support reuse in both page mode and edgeless mode.
- Add a new `page-response.ts` module to handle AI-generated answers in page mode.
    - Remove the redundant `edgelessHandler` function from `_common/config.ts`.
- Introduce the `AIContext` class along with the `ctx` TypeScript type to standardize context management.
- Implement the `createTemplateJob` function to enable AI slide insertion in both page mode and edgeless mode.

Insert mindmap on page mode:
<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/sJGviKxfE3Ap685cl5bj/30630d3e-ebd9-416b-9bb9-5f27086e48a3.mov">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/sJGviKxfE3Ap685cl5bj/30630d3e-ebd9-416b-9bb9-5f27086e48a3.mov">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/30630d3e-ebd9-416b-9bb9-5f27086e48a3.mov">mindmap.mov</video>

Insert image on edgeless note
<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/sJGviKxfE3Ap685cl5bj/b850ee5a-a06b-4ae7-8b68-ed5929a6e81a.mov">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/sJGviKxfE3Ap685cl5bj/b850ee5a-a06b-4ae7-8b68-ed5929a6e81a.mov">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/b850ee5a-a06b-4ae7-8b68-ed5929a6e81a.mov">image3.mov</video>

Insert image on page mode:
<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/sJGviKxfE3Ap685cl5bj/c4f98e2d-0b15-4310-b3e0-0725e330302b.mov">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/sJGviKxfE3Ap685cl5bj/c4f98e2d-0b15-4310-b3e0-0725e330302b.mov">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/c4f98e2d-0b15-4310-b3e0-0725e330302b.mov">image.mov</video>

Generate image from image:
<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/sJGviKxfE3Ap685cl5bj/2776a55f-cbb7-47ce-8e7d-7cae243fa3e9.mov">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/sJGviKxfE3Ap685cl5bj/2776a55f-cbb7-47ce-8e7d-7cae243fa3e9.mov">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/2776a55f-cbb7-47ce-8e7d-7cae243fa3e9.mov">image2.mov</video>

Insert presentation on page mode:
<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/sJGviKxfE3Ap685cl5bj/4e228fa5-88f4-478c-8b79-647612d5515c.mov">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/sJGviKxfE3Ap685cl5bj/4e228fa5-88f4-478c-8b79-647612d5515c.mov">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/4e228fa5-88f4-478c-8b79-647612d5515c.mov">ppt.mov</video>

Insert make it real on page mode:

<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/sJGviKxfE3Ap685cl5bj/c71139b2-fb55-4d89-84e2-d52eeb905b57.mov">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/sJGviKxfE3Ap685cl5bj/c71139b2-fb55-4d89-84e2-d52eeb905b57.mov">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/c71139b2-fb55-4d89-84e2-d52eeb905b57.mov">make it real.mov</video>
2024-12-16 10:04:16 +00:00
CatsJuice
e6bf4ca6e5 chore(core): use flexbox to stretch editor height (#9174) 2024-12-16 09:49:12 +00:00
darkskygit
5cc40114fc fix(server): unsplash path mapping (#9159) 2024-12-16 09:35:18 +00:00
EYHN
9a66c97f52 feat(ios): add some apis for native (#9173) 2024-12-16 09:18:39 +00:00
forehalo
83618e38a2 chore(server): cleanup team impl (#9171) 2024-12-16 08:41:11 +00:00
darkskygit
de2dab32c0 feat(server): always send invite email (#9168)
fix AF-1976
2024-12-16 04:45:12 +00:00
CatsJuice
87bbcae5e2 fix(component): mobile toast dark mode (#9142) 2024-12-16 04:31:12 +00:00
CatsJuice
729c37977e chore(component): update button and input border color (#9141) 2024-12-16 04:16:49 +00:00
fundon
0945381d7b chore: improve links test cases (#9148) 2024-12-16 04:03:06 +00:00
pengx17
0db6dd2f62 fix(mobile): doc info title max width (#9147)
fix AF-1925
2024-12-16 03:44:18 +00:00
pengx17
7b173a68d5 fix(mobile): hide scrollbar (#9144)
fix AF-1934
2024-12-16 03:44:17 +00:00
pengx17
a84a40e777 fix(mobile): date picker style (#9143)
fix AF-1871
2024-12-16 03:44:16 +00:00
JimmFly
8eafc057fa fix(core): handle errors on the invite page (#9167)
close AF-1975
2024-12-16 03:30:19 +00:00
Brooooooklyn
aaaea8918f chore: upgrade to eslint9 (#9163) 2024-12-14 10:29:04 +00:00
Brooooooklyn
f49bef4915 chore: remove eslint-plugin-unused-imports (#9160)
`no-unused-vars` is enough
2024-12-13 14:49:13 +00:00
renovate
60080d58f3 chore: Lock file maintenance (#9067)
This PR contains the following updates:

| Update | Change |
|---|---|
| lockFileMaintenance | All locks refreshed |

🔧 This Pull Request updates lock files to use the latest dependency versions.

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * 1" (UTC), 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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-13 13:04:06 +00:00
doodlewind
edd169720b chore(server): update env example and docs (#9153) 2024-12-13 11:04:08 +00:00
Brooooooklyn
ea746e3d77 chore: disable rules in oxlint (#9154) 2024-12-13 10:49:35 +00:00
darkskygit
2452ccd1e5 fix(server): copilot ci (#9151) 2024-12-13 09:59:06 +00:00
JimmFly
0de7782c9b fix(core): should log in before accepting the invitation (#9150) 2024-12-13 09:44:32 +00:00
Peng Xiao
293a155977 chore(electron): bump electron (#9152) 2024-12-13 09:44:00 +00:00
Brooooooklyn
055abf6040 chore: refresh dependencies by yarn upgrade-interactive (#9139) 2024-12-13 08:08:06 +00:00
CatsJuice
133f21b9ca fix(mobile): tag and detail page dark mode adaption (#9145) 2024-12-13 07:55:07 +00:00
CatsJuice
6f6f95a8b0 feat(mobile): use mobile fallback for index, open home when workspace changed (#9106) 2024-12-13 07:41:06 +00:00
CatsJuice
974c6de1d2 chore(mobile): adjust app tab border width (#9122) 2024-12-13 07:27:04 +00:00
CatsJuice
300efa64ec chore(mobile): adjust search back button and title style (#9125)
close AF-1827, AF-1826
2024-12-13 07:12:09 +00:00
renovate
7c2f0064ae chore: bump up @blocksuite/affine version to v0.19.0 (#9140)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/affine](https://redirect.github.com/toeverything/blocksuite) ([source](https://redirect.github.com/toeverything/blocksuite/tree/HEAD/packages/affine/all), [changelog](https://redirect.github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md)) | [`0.18.7` -> `0.19.0`](https://renovatebot.com/diffs/npm/@blocksuite%2faffine/0.18.7/0.19.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2faffine/0.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2faffine/0.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2faffine/0.18.7/0.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2faffine/0.18.7/0.19.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/blocksuite (@&#8203;blocksuite/affine)</summary>

### [`v0.19.0`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0190)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.18.7...v0.19.0)

##### Minor Changes

-   [`d7ec057`](https://redirect.github.com/toeverything/blocksuite/commit/d7ec057): Blocksuite minor release.

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS41OC4xIiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-13 06:58:42 +00:00
darkskygit
994e4c5bc1 feat(server): seat calc follow member count (#9138) 2024-12-13 06:44:05 +00:00
forehalo
0e73737407 refactor(server): make redis required module (#9121) 2024-12-13 06:27:15 +00:00
forehalo
81c68032e1 refactor(server): standalone runtime module (#9120) 2024-12-13 06:27:14 +00:00
forehalo
4c23991047 chore: rename fundamentals to base (#9119) 2024-12-13 06:27:13 +00:00
forehalo
8c24f2b906 feat(nbstore): add sqlite implementation (#8811) 2024-12-13 06:13:05 +00:00
Brooooooklyn
932e1da7f3 ci: postUpgradeTasks is only allowed on self-hosted renovate (#9137) 2024-12-13 04:19:07 +00:00
renovate
97f15709d2 chore: bump up all non-major dependencies (#9136)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@radix-ui/react-accordion](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.2.1` -> `1.2.2`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-accordion/1.2.1/1.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-accordion/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-accordion/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-accordion/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-accordion/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-alert-dialog](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.2` -> `1.1.3`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-alert-dialog/1.1.2/1.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-alert-dialog/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-alert-dialog/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-alert-dialog/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-alert-dialog/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-aspect-ratio](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.0` -> `1.1.1`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-aspect-ratio/1.1.0/1.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-aspect-ratio/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-aspect-ratio/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-aspect-ratio/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-aspect-ratio/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-avatar](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.1` -> `1.1.2`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-avatar/1.1.1/1.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-avatar/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-avatar/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-avatar/1.1.1/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-avatar/1.1.1/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-checkbox](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.2` -> `1.1.3`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-checkbox/1.1.2/1.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-checkbox/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-checkbox/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-checkbox/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-checkbox/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-collapsible](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.1` -> `1.1.2`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-collapsible/1.1.1/1.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-collapsible/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-collapsible/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-collapsible/1.1.1/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-collapsible/1.1.1/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-context-menu](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`2.2.2` -> `2.2.3`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-context-menu/2.2.2/2.2.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-context-menu/2.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-context-menu/2.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-context-menu/2.2.2/2.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-context-menu/2.2.2/2.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-dialog](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.2` -> `1.1.3`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-dialog/1.1.2/1.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-dialog/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-dialog/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-dialog/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-dialog/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-dropdown-menu](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`2.1.2` -> `2.1.3`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-dropdown-menu/2.1.2/2.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-dropdown-menu/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-dropdown-menu/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-dropdown-menu/2.1.2/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-dropdown-menu/2.1.2/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-hover-card](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.2` -> `1.1.3`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-hover-card/1.1.2/1.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-hover-card/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-hover-card/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-hover-card/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-hover-card/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-label](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`2.1.0` -> `2.1.1`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-label/2.1.0/2.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-label/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-label/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-label/2.1.0/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-label/2.1.0/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-menubar](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.2` -> `1.1.3`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-menubar/1.1.2/1.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-menubar/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-menubar/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-menubar/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-menubar/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-navigation-menu](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.2.1` -> `1.2.2`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-navigation-menu/1.2.1/1.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-navigation-menu/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-navigation-menu/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-navigation-menu/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-navigation-menu/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-popover](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.2` -> `1.1.3`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-popover/1.1.2/1.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-popover/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-popover/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-popover/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-popover/1.1.2/1.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-progress](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.0` -> `1.1.1`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-progress/1.1.0/1.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-progress/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-progress/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-progress/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-progress/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-radio-group](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.2.1` -> `1.2.2`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-radio-group/1.2.1/1.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-radio-group/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-radio-group/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-radio-group/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-radio-group/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-scroll-area](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.2.1` -> `1.2.2`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-scroll-area/1.2.1/1.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-scroll-area/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-scroll-area/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-scroll-area/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-scroll-area/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-select](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`2.1.2` -> `2.1.3`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-select/2.1.2/2.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-select/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-select/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-select/2.1.2/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-select/2.1.2/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-separator](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.0` -> `1.1.1`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-separator/1.1.0/1.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-separator/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-separator/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-separator/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-separator/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-slider](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.2.1` -> `1.2.2`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-slider/1.2.1/1.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-slider/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-slider/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-slider/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-slider/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-slot](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.0` -> `1.1.1`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-slot/1.1.0/1.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-slot/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-slot/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-slot/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-slot/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-switch](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.1` -> `1.1.2`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-switch/1.1.1/1.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-switch/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-switch/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-switch/1.1.1/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-switch/1.1.1/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-tabs](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.1` -> `1.1.2`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-tabs/1.1.1/1.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-tabs/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-tabs/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-tabs/1.1.1/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-tabs/1.1.1/1.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-toast](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.2.2` -> `1.2.3`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-toast/1.2.2/1.2.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-toast/1.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-toast/1.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-toast/1.2.2/1.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-toast/1.2.2/1.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-toggle](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.0` -> `1.1.1`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-toggle/1.1.0/1.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-toggle/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-toggle/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-toggle/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-toggle/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-toggle-group](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.0` -> `1.1.1`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-toggle-group/1.1.0/1.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-toggle-group/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-toggle-group/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-toggle-group/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-toggle-group/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-toolbar](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.0` -> `1.1.1`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-toolbar/1.1.0/1.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-toolbar/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-toolbar/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-toolbar/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-toolbar/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-tooltip](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.4` -> `1.1.5`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-tooltip/1.1.4/1.1.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-tooltip/1.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-tooltip/1.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-tooltip/1.1.4/1.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-tooltip/1.1.4/1.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@radix-ui/react-visually-hidden](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.0` -> `1.1.1`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-visually-hidden/1.1.0/1.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-visually-hidden/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-visually-hidden/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-visually-hidden/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-visually-hidden/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [openai](https://redirect.github.com/openai/openai-node) | [`4.76.1` -> `4.76.2`](https://renovatebot.com/diffs/npm/openai/4.76.1/4.76.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/openai/4.76.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/openai/4.76.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/openai/4.76.1/4.76.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/openai/4.76.1/4.76.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [react-hook-form](https://www.react-hook-form.com) ([source](https://redirect.github.com/react-hook-form/react-hook-form)) | [`7.54.0` -> `7.54.1`](https://renovatebot.com/diffs/npm/react-hook-form/7.54.0/7.54.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-hook-form/7.54.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-hook-form/7.54.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-hook-form/7.54.0/7.54.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-hook-form/7.54.0/7.54.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [react-i18next](https://redirect.github.com/i18next/react-i18next) | [`15.1.4` -> `15.2.0`](https://renovatebot.com/diffs/npm/react-i18next/15.1.4/15.2.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-i18next/15.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-i18next/15.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-i18next/15.1.4/15.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-i18next/15.1.4/15.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>radix-ui/primitives (@&#8203;radix-ui/react-accordion)</summary>

### [`v1.2.2`](6b40728c55...157415ed1f)

[Compare Source](157415ed1f...3c5e05fab0)

</details>

<details>
<summary>openai/openai-node (openai)</summary>

### [`v4.76.2`](https://redirect.github.com/openai/openai-node/blob/HEAD/CHANGELOG.md#4762-2024-12-12)

[Compare Source](https://redirect.github.com/openai/openai-node/compare/v4.76.1...v4.76.2)

Full Changelog: [v4.76.1...v4.76.2](https://redirect.github.com/openai/openai-node/compare/v4.76.1...v4.76.2)

##### Chores

-   **internal:** update isAbsoluteURL ([#&#8203;1223](https://redirect.github.com/openai/openai-node/issues/1223)) ([e908ed7](e908ed7599))
-   **types:** nicer error class types + jsdocs ([#&#8203;1219](https://redirect.github.com/openai/openai-node/issues/1219)) ([576d24c](576d24cc4b))

</details>

<details>
<summary>react-hook-form/react-hook-form (react-hook-form)</summary>

### [`v7.54.1`](https://redirect.github.com/react-hook-form/react-hook-form/compare/v7.54.0...4902d0c70ad84a2584aac511ab7e2c766d7441c3)

[Compare Source](https://redirect.github.com/react-hook-form/react-hook-form/compare/v7.54.0...v7.54.1)

</details>

<details>
<summary>i18next/react-i18next (react-i18next)</summary>

### [`v15.2.0`](https://redirect.github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#1520)

[Compare Source](https://redirect.github.com/i18next/react-i18next/compare/v15.1.4...v15.2.0)

This version may be breaking if you still use React < v18 with TypeScript.
For JS users this version is equal to v15.1.4

-   fix: Global JSX namespace is deprecated [1823](https://redirect.github.com/i18next/react-i18next/issues/1823) with [1822](https://redirect.github.com/i18next/react-i18next/pull/1822)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS41OC4xIiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-13 04:05:06 +00:00
Brooooooklyn
8f29a58508 ci: re-enable nx cloud (#9132) 2024-12-13 02:57:43 +00:00
forehalo
d620a525cc fix(server): allow email with dot in name 2024-12-13 10:53:49 +08:00
renovate
ef6068b7c2 chore: bump up @blocksuite/affine version to v0.18.6 (#9113)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/affine](https://redirect.github.com/toeverything/blocksuite) ([source](https://redirect.github.com/toeverything/blocksuite/tree/HEAD/packages/affine/all), [changelog](https://redirect.github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md)) | [`0.18.5` -> `0.18.6`](https://renovatebot.com/diffs/npm/@blocksuite%2faffine/0.18.5/0.18.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2faffine/0.18.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2faffine/0.18.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2faffine/0.18.5/0.18.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2faffine/0.18.5/0.18.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/blocksuite (@&#8203;blocksuite/affine)</summary>

### [`v0.18.6`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0186)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.18.5...v0.18.6)

##### Patch Changes

-   [`d925364`](https://redirect.github.com/toeverything/blocksuite/commit/d925364): Blocksuite patch release.

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS41OC4xIiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-13 02:32:40 +00:00
renovate
8eea813c7c chore: bump up all non-major dependencies (#8994)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@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.703.0` -> `3.709.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.703.0/3.709.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.709.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.709.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.703.0/3.709.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.703.0/3.709.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@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.703.0` -> `3.709.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.703.0/3.709.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.709.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.709.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.703.0/3.709.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.703.0/3.709.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@dnd-kit/core](https://redirect.github.com/clauderic/dnd-kit) ([source](https://redirect.github.com/clauderic/dnd-kit/tree/HEAD/packages/core)) | [`6.2.0` -> `6.3.1`](https://renovatebot.com/diffs/npm/@dnd-kit%2fcore/6.2.0/6.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@dnd-kit%2fcore/6.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@dnd-kit%2fcore/6.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@dnd-kit%2fcore/6.2.0/6.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@dnd-kit%2fcore/6.2.0/6.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@emotion/cache](https://redirect.github.com/emotion-js/emotion/tree/main#readme) ([source](https://redirect.github.com/emotion-js/emotion)) | [`11.13.5` -> `11.14.0`](https://renovatebot.com/diffs/npm/@emotion%2fcache/11.13.5/11.14.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@emotion%2fcache/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@emotion%2fcache/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@emotion%2fcache/11.13.5/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@emotion%2fcache/11.13.5/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@emotion/react](https://redirect.github.com/emotion-js/emotion/tree/main#readme) ([source](https://redirect.github.com/emotion-js/emotion)) | [`11.13.5` -> `11.14.0`](https://renovatebot.com/diffs/npm/@emotion%2freact/11.13.5/11.14.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@emotion%2freact/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@emotion%2freact/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@emotion%2freact/11.13.5/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@emotion%2freact/11.13.5/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@emotion/react](https://redirect.github.com/emotion-js/emotion/tree/main#readme) ([source](https://redirect.github.com/emotion-js/emotion)) | [`11.13.5` -> `11.14.0`](https://renovatebot.com/diffs/npm/@emotion%2freact/11.13.5/11.14.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@emotion%2freact/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@emotion%2freact/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@emotion%2freact/11.13.5/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@emotion%2freact/11.13.5/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@emotion/styled](https://redirect.github.com/emotion-js/emotion/tree/main#readme) ([source](https://redirect.github.com/emotion-js/emotion)) | [`11.13.5` -> `11.14.0`](https://renovatebot.com/diffs/npm/@emotion%2fstyled/11.13.5/11.14.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@emotion%2fstyled/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@emotion%2fstyled/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@emotion%2fstyled/11.13.5/11.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@emotion%2fstyled/11.13.5/11.14.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.2.0` -> `9.3.0`](https://renovatebot.com/diffs/npm/@faker-js%2ffaker/9.2.0/9.3.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@faker-js%2ffaker/9.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@faker-js%2ffaker/9.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@faker-js%2ffaker/9.2.0/9.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@faker-js%2ffaker/9.2.0/9.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@node-rs/argon2](https://redirect.github.com/napi-rs/node-rs) | [`2.0.0` -> `2.0.2`](https://renovatebot.com/diffs/npm/@node-rs%2fargon2/2.0.0/2.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@node-rs%2fargon2/2.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@node-rs%2fargon2/2.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@node-rs%2fargon2/2.0.0/2.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@node-rs%2fargon2/2.0.0/2.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@node-rs/argon2](https://redirect.github.com/napi-rs/node-rs) | [`2.0.0` -> `2.0.2`](https://renovatebot.com/diffs/npm/@node-rs%2fargon2/2.0.0/2.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@node-rs%2fargon2/2.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@node-rs%2fargon2/2.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@node-rs%2fargon2/2.0.0/2.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@node-rs%2fargon2/2.0.0/2.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@node-rs/crc32](https://redirect.github.com/napi-rs/node-rs) | [`1.10.4` -> `1.10.6`](https://renovatebot.com/diffs/npm/@node-rs%2fcrc32/1.10.4/1.10.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@node-rs%2fcrc32/1.10.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@node-rs%2fcrc32/1.10.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@node-rs%2fcrc32/1.10.4/1.10.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@node-rs%2fcrc32/1.10.4/1.10.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@opentelemetry/core](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.28.0` -> `1.29.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fcore/1.28.0/1.29.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fcore/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fcore/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fcore/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fcore/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/exporter-prometheus](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`^0.55.0` -> `^0.56.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fexporter-prometheus/0.55.0/0.56.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fexporter-prometheus/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fexporter-prometheus/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fexporter-prometheus/0.55.0/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fexporter-prometheus/0.55.0/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/exporter-zipkin](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-zipkin) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.28.0` -> `1.29.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fexporter-zipkin/1.28.0/1.29.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fexporter-zipkin/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fexporter-zipkin/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fexporter-zipkin/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fexporter-zipkin/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`^0.55.0` -> `^0.56.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation/0.55.0/0.56.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation/0.55.0/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation/0.55.0/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-graphql](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-graphql#readme) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.45.0` -> `^0.46.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-graphql/0.45.0/0.46.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-graphql/0.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-graphql/0.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-graphql/0.45.0/0.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-graphql/0.45.0/0.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-http](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`^0.55.0` -> `^0.56.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-http/0.55.0/0.56.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-http/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-http/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-http/0.55.0/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-http/0.55.0/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-ioredis](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis#readme) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.45.0` -> `^0.46.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-ioredis/0.45.0/0.46.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-ioredis/0.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-ioredis/0.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-ioredis/0.45.0/0.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-ioredis/0.45.0/0.46.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-nestjs-core](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.42.0` -> `^0.43.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-nestjs-core/0.42.0/0.43.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-nestjs-core/0.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-nestjs-core/0.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-nestjs-core/0.42.0/0.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-nestjs-core/0.42.0/0.43.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-socket.io](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.44.0` -> `^0.45.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-socket.io/0.44.0/0.45.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-socket.io/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-socket.io/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-socket.io/0.44.0/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-socket.io/0.44.0/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/resources](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.28.0` -> `1.29.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fresources/1.28.0/1.29.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fresources/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fresources/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fresources/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fresources/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/sdk-metrics](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/packages/sdk-metrics) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.28.0` -> `1.29.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-metrics/1.28.0/1.29.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsdk-metrics/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsdk-metrics/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsdk-metrics/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsdk-metrics/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/sdk-node](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`^0.55.0` -> `^0.56.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-node/0.55.0/0.56.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsdk-node/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsdk-node/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsdk-node/0.55.0/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsdk-node/0.55.0/0.56.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/sdk-trace-node](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.28.0` -> `1.29.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-trace-node/1.28.0/1.29.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsdk-trace-node/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsdk-trace-node/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsdk-trace-node/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsdk-trace-node/1.28.0/1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@playwright/test](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`=1.49.0` -> `=1.49.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.49.0/1.49.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.49.0/1.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.49.0/1.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@sentry/electron](https://redirect.github.com/getsentry/sentry-electron) | [`5.7.0` -> `5.8.0`](https://renovatebot.com/diffs/npm/@sentry%2felectron/5.7.0/5.8.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2felectron/5.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2felectron/5.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2felectron/5.7.0/5.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2felectron/5.7.0/5.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@sentry/esbuild-plugin](https://redirect.github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/esbuild-plugin) ([source](https://redirect.github.com/getsentry/sentry-javascript-bundler-plugins)) | [`2.22.6` -> `2.22.7`](https://renovatebot.com/diffs/npm/@sentry%2fesbuild-plugin/2.22.6/2.22.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2fesbuild-plugin/2.22.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2fesbuild-plugin/2.22.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2fesbuild-plugin/2.22.6/2.22.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2fesbuild-plugin/2.22.6/2.22.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://redirect.github.com/getsentry/sentry-javascript)) | [`8.42.0` -> `8.44.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.42.0/8.44.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/8.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2freact/8.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2freact/8.42.0/8.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/8.42.0/8.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://redirect.github.com/getsentry/sentry-javascript)) | [`8.42.0` -> `8.44.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.42.0/8.44.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/8.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2freact/8.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2freact/8.42.0/8.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/8.42.0/8.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@sentry/webpack-plugin](https://redirect.github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/webpack-plugin) ([source](https://redirect.github.com/getsentry/sentry-javascript-bundler-plugins)) | [`2.22.6` -> `2.22.7`](https://renovatebot.com/diffs/npm/@sentry%2fwebpack-plugin/2.22.6/2.22.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2fwebpack-plugin/2.22.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2fwebpack-plugin/2.22.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2fwebpack-plugin/2.22.6/2.22.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2fwebpack-plugin/2.22.6/2.22.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@slack/web-api](https://slack.dev/node-slack-sdk/web-api) ([source](https://redirect.github.com/slackapi/node-slack-sdk)) | [`7.7.0` -> `7.8.0`](https://renovatebot.com/diffs/npm/@slack%2fweb-api/7.7.0/7.8.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@slack%2fweb-api/7.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@slack%2fweb-api/7.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@slack%2fweb-api/7.7.0/7.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@slack%2fweb-api/7.7.0/7.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@types/bytes](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/bytes) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/bytes)) | [`3.1.4` -> `3.1.5`](https://renovatebot.com/diffs/npm/@types%2fbytes/3.1.4/3.1.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fbytes/3.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fbytes/3.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fbytes/3.1.4/3.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fbytes/3.1.4/3.1.5?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)) | [`20.17.9` -> `20.17.10`](https://renovatebot.com/diffs/npm/@types%2fnode/20.17.9/20.17.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.17.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.17.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.17.9/20.17.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.17.9/20.17.10?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.0.0` -> `19.0.1`](https://renovatebot.com/diffs/npm/@types%2freact/19.0.0/19.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact/19.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2freact/19.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2freact/19.0.0/19.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact/19.0.0/19.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@types/react-dom](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-dom) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom)) | [`19.0.0` -> `19.0.2`](https://renovatebot.com/diffs/npm/@types%2freact-dom/19.0.0/19.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact-dom/19.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2freact-dom/19.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2freact-dom/19.0.0/19.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact-dom/19.0.0/19.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [anyhow](https://redirect.github.com/dtolnay/anyhow) | `1.0.93` -> `1.0.94` | [![age](https://developer.mend.io/api/mc/badges/age/crate/anyhow/1.0.94?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/anyhow/1.0.94?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/anyhow/1.0.93/1.0.94?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/anyhow/1.0.93/1.0.94?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch |
| [c8](https://redirect.github.com/bcoe/c8) | [`10.1.2` -> `10.1.3`](https://renovatebot.com/diffs/npm/c8/10.1.2/10.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/c8/10.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/c8/10.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/c8/10.1.2/10.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/c8/10.1.2/10.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [chrono](https://redirect.github.com/chronotope/chrono) | `0.4.38` -> `0.4.39` | [![age](https://developer.mend.io/api/mc/badges/age/crate/chrono/0.4.39?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/chrono/0.4.39?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/chrono/0.4.38/0.4.39?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/chrono/0.4.38/0.4.39?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch |
| [debug](https://redirect.github.com/debug-js/debug) | [`4.3.7` -> `4.4.0`](https://renovatebot.com/diffs/npm/debug/4.3.7/4.4.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/debug/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/debug/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/debug/4.3.7/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/debug/4.3.7/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [dotenv](https://redirect.github.com/motdotla/dotenv) | [`16.4.6` -> `16.4.7`](https://renovatebot.com/diffs/npm/dotenv/16.4.6/16.4.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/dotenv/16.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/dotenv/16.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/dotenv/16.4.6/16.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dotenv/16.4.6/16.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [dotenv](https://redirect.github.com/motdotla/dotenv) | [`16.4.6` -> `16.4.7`](https://renovatebot.com/diffs/npm/dotenv/16.4.6/16.4.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/dotenv/16.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/dotenv/16.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/dotenv/16.4.6/16.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dotenv/16.4.6/16.4.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [electron-log](https://redirect.github.com/megahertz/electron-log) | [`5.2.3` -> `5.2.4`](https://renovatebot.com/diffs/npm/electron-log/5.2.3/5.2.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/electron-log/5.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/electron-log/5.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/electron-log/5.2.3/5.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/electron-log/5.2.3/5.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [foxact](https://foxact.skk.moe) ([source](https://redirect.github.com/SukkaW/foxact)) | [`0.2.42` -> `0.2.43`](https://renovatebot.com/diffs/npm/foxact/0.2.42/0.2.43) | [![age](https://developer.mend.io/api/mc/badges/age/npm/foxact/0.2.43?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/foxact/0.2.43?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/foxact/0.2.42/0.2.43?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/foxact/0.2.42/0.2.43?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [i18next](https://www.i18next.com) ([source](https://redirect.github.com/i18next/i18next)) | [`24.0.3` -> `24.1.0`](https://renovatebot.com/diffs/npm/i18next/24.0.3/24.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/i18next/24.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/i18next/24.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/i18next/24.0.3/24.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/i18next/24.0.3/24.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [jotai-effect](https://redirect.github.com/jotaijs/jotai-effect) | [`1.0.4` -> `1.0.5`](https://renovatebot.com/diffs/npm/jotai-effect/1.0.4/1.0.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-effect/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-effect/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-effect/1.0.4/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-effect/1.0.4/1.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [keyv](https://redirect.github.com/jaredwray/keyv) | [`5.2.1` -> `5.2.2`](https://renovatebot.com/diffs/npm/keyv/5.2.1/5.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/keyv/5.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/keyv/5.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/keyv/5.2.1/5.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/keyv/5.2.1/5.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [lib0](https://redirect.github.com/dmonad/lib0) | [`0.2.98` -> `0.2.99`](https://renovatebot.com/diffs/npm/lib0/0.2.98/0.2.99) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lib0/0.2.99?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lib0/0.2.99?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lib0/0.2.98/0.2.99?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lib0/0.2.98/0.2.99?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [lib0](https://redirect.github.com/dmonad/lib0) | [`0.2.98` -> `0.2.99`](https://renovatebot.com/diffs/npm/lib0/0.2.98/0.2.99) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lib0/0.2.99?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lib0/0.2.99?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lib0/0.2.98/0.2.99?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lib0/0.2.98/0.2.99?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [lint-staged](https://redirect.github.com/lint-staged/lint-staged) | [`15.2.10` -> `15.2.11`](https://renovatebot.com/diffs/npm/lint-staged/15.2.10/15.2.11) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lint-staged/15.2.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lint-staged/15.2.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lint-staged/15.2.10/15.2.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lint-staged/15.2.10/15.2.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [lucide-react](https://lucide.dev) ([source](https://redirect.github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react)) | [`^0.462.0` -> `^0.468.0`](https://renovatebot.com/diffs/npm/lucide-react/0.462.0/0.468.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lucide-react/0.468.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lucide-react/0.468.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lucide-react/0.462.0/0.468.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lucide-react/0.462.0/0.468.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [msw](https://mswjs.io) ([source](https://redirect.github.com/mswjs/msw)) | [`2.6.6` -> `2.6.8`](https://renovatebot.com/diffs/npm/msw/2.6.6/2.6.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/msw/2.6.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/msw/2.6.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/msw/2.6.6/2.6.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/msw/2.6.6/2.6.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [napi](https://redirect.github.com/napi-rs/napi-rs) | `3.0.0-alpha.21` -> `3.0.0-alpha.23` | [![age](https://developer.mend.io/api/mc/badges/age/crate/napi/3.0.0-alpha.23?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/napi/3.0.0-alpha.23?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/napi/3.0.0-alpha.21/3.0.0-alpha.23?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/napi/3.0.0-alpha.21/3.0.0-alpha.23?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch |
| [napi-derive](https://redirect.github.com/napi-rs/napi-rs) | `3.0.0-alpha.20` -> `3.0.0-alpha.21` | [![age](https://developer.mend.io/api/mc/badges/age/crate/napi-derive/3.0.0-alpha.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/napi-derive/3.0.0-alpha.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/napi-derive/3.0.0-alpha.20/3.0.0-alpha.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/napi-derive/3.0.0-alpha.20/3.0.0-alpha.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch |
| [next-themes](https://redirect.github.com/pacocoursey/next-themes) | [`0.4.3` -> `0.4.4`](https://renovatebot.com/diffs/npm/next-themes/0.4.3/0.4.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/next-themes/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/next-themes/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/next-themes/0.4.3/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/next-themes/0.4.3/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [nx](https://nx.dev) ([source](https://redirect.github.com/nrwl/nx/tree/HEAD/packages/nx)) | [`20.1.4` -> `20.2.2`](https://renovatebot.com/diffs/npm/nx/20.1.4/20.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nx/20.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nx/20.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nx/20.1.4/20.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nx/20.1.4/20.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [openai](https://redirect.github.com/openai/openai-node) | [`4.74.0` -> `4.76.1`](https://renovatebot.com/diffs/npm/openai/4.74.0/4.76.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/openai/4.76.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/openai/4.76.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/openai/4.74.0/4.76.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/openai/4.74.0/4.76.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [piscina](https://redirect.github.com/piscinajs/piscina) | [`4.7.0` -> `4.8.0`](https://renovatebot.com/diffs/npm/piscina/4.7.0/4.8.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/piscina/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/piscina/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/piscina/4.7.0/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/piscina/4.7.0/4.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [playwright](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`=1.49.0` -> `=1.49.1`](https://renovatebot.com/diffs/npm/playwright/1.49.0/1.49.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/playwright/1.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright/1.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright/1.49.0/1.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright/1.49.0/1.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [prettier](https://prettier.io) ([source](https://redirect.github.com/prettier/prettier)) | [`3.4.1` -> `3.4.2`](https://renovatebot.com/diffs/npm/prettier/3.4.1/3.4.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/prettier/3.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/prettier/3.4.1/3.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.4.1/3.4.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [react-day-picker](https://daypicker.dev) ([source](https://redirect.github.com/gpbl/react-day-picker)) | [`9.4.1` -> `9.4.3`](https://renovatebot.com/diffs/npm/react-day-picker/9.4.1/9.4.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-day-picker/9.4.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-day-picker/9.4.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-day-picker/9.4.1/9.4.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-day-picker/9.4.1/9.4.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [react-hook-form](https://www.react-hook-form.com) ([source](https://redirect.github.com/react-hook-form/react-hook-form)) | [`7.53.2` -> `7.54.0`](https://renovatebot.com/diffs/npm/react-hook-form/7.53.2/7.54.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-hook-form/7.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-hook-form/7.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-hook-form/7.53.2/7.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-hook-form/7.53.2/7.54.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [react-i18next](https://redirect.github.com/i18next/react-i18next) | [`15.1.3` -> `15.1.4`](https://renovatebot.com/diffs/npm/react-i18next/15.1.3/15.1.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-i18next/15.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-i18next/15.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-i18next/15.1.3/15.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-i18next/15.1.3/15.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [react-refresh](https://react.dev/) ([source](https://redirect.github.com/facebook/react/tree/HEAD/packages/react)) | [`^0.14.2` -> `^0.16.0`](https://renovatebot.com/diffs/npm/react-refresh/0.14.2/0.16.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-refresh/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-refresh/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-refresh/0.14.2/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-refresh/0.14.2/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [serde](https://serde.rs) ([source](https://redirect.github.com/serde-rs/serde)) | `1.0.215` -> `1.0.216` | [![age](https://developer.mend.io/api/mc/badges/age/crate/serde/1.0.216?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/serde/1.0.216?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/serde/1.0.215/1.0.216?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/serde/1.0.215/1.0.216?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch |
| [shadcn-ui](https://redirect.github.com/shadcn/ui) ([source](https://redirect.github.com/shadcn/ui/tree/HEAD/packages/cli)) | [`0.9.3` -> `0.9.4`](https://renovatebot.com/diffs/npm/shadcn-ui/0.9.3/0.9.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/shadcn-ui/0.9.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/shadcn-ui/0.9.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/shadcn-ui/0.9.3/0.9.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/shadcn-ui/0.9.3/0.9.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [sonner](https://sonner.emilkowal.ski/) ([source](https://redirect.github.com/emilkowalski/sonner)) | [`1.7.0` -> `1.7.1`](https://renovatebot.com/diffs/npm/sonner/1.7.0/1.7.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/sonner/1.7.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/sonner/1.7.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/sonner/1.7.0/1.7.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sonner/1.7.0/1.7.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [tailwindcss](https://tailwindcss.com) ([source](https://redirect.github.com/tailwindlabs/tailwindcss)) | [`3.4.15` -> `3.4.16`](https://renovatebot.com/diffs/npm/tailwindcss/3.4.15/3.4.16) | [![age](https://developer.mend.io/api/mc/badges/age/npm/tailwindcss/3.4.16?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/tailwindcss/3.4.16?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/tailwindcss/3.4.15/3.4.16?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/tailwindcss/3.4.15/3.4.16?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [tokio](https://tokio.rs) ([source](https://redirect.github.com/tokio-rs/tokio)) | `1.41.1` -> `1.42.0` | [![age](https://developer.mend.io/api/mc/badges/age/crate/tokio/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tokio/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tokio/1.41.1/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tokio/1.41.1/1.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | minor |
| [typedoc](https://typedoc.org) ([source](https://redirect.github.com/TypeStrong/TypeDoc)) | [`0.27.2` -> `0.27.4`](https://renovatebot.com/diffs/npm/typedoc/0.27.2/0.27.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/typedoc/0.27.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typedoc/0.27.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typedoc/0.27.2/0.27.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typedoc/0.27.2/0.27.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [undici](https://undici.nodejs.org) ([source](https://redirect.github.com/nodejs/undici)) | [`7.0.0` -> `7.1.0`](https://renovatebot.com/diffs/npm/undici/7.0.0/7.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/undici/7.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/undici/7.1.0?slim=tr
2024-12-12 15:45:43 +00:00
darkskygit
76f2c31e46 fix(core): gql file upload (#9134) 2024-12-12 14:38:09 +00:00
pengx17
152a406ced fix(core): center peek style (#9127)
fix PD-1912
2024-12-12 12:33:30 +00:00
DarkSky
ab1ad65858 feat(server): adapt normal workspace's invite link behavior (#9130) 2024-12-12 20:32:32 +08:00
renovate
e15a298b80 chore: bump up @testing-library/dom version to v10 (#9128)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@testing-library/dom](https://redirect.github.com/testing-library/dom-testing-library) | [`^9.3.4` -> `^10.0.0`](https://renovatebot.com/diffs/npm/@testing-library%2fdom/9.3.4/10.4.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@testing-library%2fdom/10.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@testing-library%2fdom/10.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@testing-library%2fdom/9.3.4/10.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@testing-library%2fdom/9.3.4/10.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>testing-library/dom-testing-library (@&#8203;testing-library/dom)</summary>

### [`v10.4.0`](https://redirect.github.com/testing-library/dom-testing-library/compare/v10.3.2...a86c54ccda5242ad8dfc1c70d31980bdbf96af7f)

[Compare Source](https://redirect.github.com/testing-library/dom-testing-library/compare/v10.3.2...v10.4.0)

### [`v10.3.2`](https://redirect.github.com/testing-library/dom-testing-library/releases/tag/v10.3.2)

[Compare Source](https://redirect.github.com/testing-library/dom-testing-library/compare/v10.3.1...v10.3.2)

##### Bug Fixes

-   safer read of DEBUG_PRINT_LIMIT ([#&#8203;1329](https://redirect.github.com/testing-library/dom-testing-library/issues/1329)) ([306526b](306526b551))

### [`v10.3.1`](https://redirect.github.com/testing-library/dom-testing-library/releases/tag/v10.3.1)

[Compare Source](https://redirect.github.com/testing-library/dom-testing-library/compare/v10.3.0...v10.3.1)

##### Bug Fixes

-   Revert "feat: Reduce caught exceptions in `prettyDom` ([#&#8203;1321](https://redirect.github.com/testing-library/dom-testing-library/issues/1321))" ([#&#8203;1325](https://redirect.github.com/testing-library/dom-testing-library/issues/1325)) ([fdc12ec](fdc12ecf43))

### [`v10.3.0`](https://redirect.github.com/testing-library/dom-testing-library/compare/v10.2.0...76cb73dec444fca7ae3d160b4dad3b61f7bc8995)

[Compare Source](https://redirect.github.com/testing-library/dom-testing-library/compare/v10.2.0...v10.3.0)

### [`v10.2.0`](https://redirect.github.com/testing-library/dom-testing-library/releases/tag/v10.2.0)

[Compare Source](https://redirect.github.com/testing-library/dom-testing-library/compare/v10.1.0...v10.2.0)

##### Features

-   Support anonymous custom elements when pretty printing DOM ([#&#8203;1319](https://redirect.github.com/testing-library/dom-testing-library/issues/1319)) ([0a8ad65](0a8ad65723))

### [`v10.1.0`](https://redirect.github.com/testing-library/dom-testing-library/releases/tag/v10.1.0)

[Compare Source](https://redirect.github.com/testing-library/dom-testing-library/compare/v10.0.0...v10.1.0)

##### Features

-   Add window events "pagehide" / "pageshow" ([#&#8203;1308](https://redirect.github.com/testing-library/dom-testing-library/issues/1308)) ([56543d5](56543d51a8))

### [`v10.0.0`](https://redirect.github.com/testing-library/dom-testing-library/releases/tag/v10.0.0)

[Compare Source](https://redirect.github.com/testing-library/dom-testing-library/compare/v9.3.4...v10.0.0)

##### Bug Fixes

-   use defineProperty on the error object instead of setting the message directly ([#&#8203;1268](https://redirect.github.com/testing-library/dom-testing-library/issues/1268)) ([3580f25](3580f25bd7)), closes [#&#8203;1259](https://redirect.github.com/testing-library/dom-testing-library/issues/1259)

##### Features

-   Drop support for Node.js 14.x and Node.js 16.x and add support for Node 20.x ([#&#8203;1255](https://redirect.github.com/testing-library/dom-testing-library/issues/1255)) ([452097b](452097b35a))
-   upgrade aria-query to 5.3.0 ([#&#8203;1241](https://redirect.github.com/testing-library/dom-testing-library/issues/1241)) ([2c57055](2c570553d8)), closes [#&#8203;1240](https://redirect.github.com/testing-library/dom-testing-library/issues/1240)

##### BREAKING CHANGES

-   Minimum supported Node.js version is 18.0
-   New version of `aria-query` changes various roles. Check out the changed tests in [`2c57055`](https://redirect.github.com/testing-library/dom-testing-library/commit/2c57055) to get an overview about what changed.

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS41OC4xIiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-12 10:42:20 +00:00
pengx17
59f4f1e51d fix(core): at menu results use indexer data source (#9123)
fix AF-1942

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/51f7d691-4e6c-44e7-92ac-944b0d886683.png)
2024-12-12 10:17:15 +00:00
darkskygit
56c573ebf3 fix(server): accept invite condition (#9124) 2024-12-12 10:01:13 +00:00
devin-ai-integration
e100d252b2 fix(core): add null checks for timeout refs and event listeners for React 19 compatibility (#9116)
## Description
- Add null checks before clearTimeout calls in colorful-fallback.tsx, edgeless.dialog.tsx, and local.dialog.tsx
- Fix event listener cleanup in unfolding.tsx
- Update tsconfig.jsx to use react-jsx transform

## Testing
- [x] Verified type safety improvements for React 19 compatibility
- [x] Ensured proper cleanup of event listeners and timeouts
- [x] Confirmed no unintended side effects from the changes

Link to Devin run: https://app.devin.ai/sessions/2e790f3ea0d84402837ec6c3c6f83e4c
2024-12-12 09:43:42 +00:00
JimmFly
dd39d049fe feat(core): improve invite link (#9111) 2024-12-12 17:43:19 +08:00
darkskygit
cdb55a3393 chore(server): filter out some logs (#9059) 2024-12-12 09:19:48 +00:00
darkskygit
69e5997608 feat(server): team mail sender (#9104)
fix AF-1914
2024-12-12 07:33:32 +00:00
darkskygit
350696c861 fix(server): invite link & accept (#9109)
fix AF-1920
2024-12-12 07:33:30 +00:00
CatsJuice
5dd2dddd74 feat(mobile): show page back by url search (#9100)
close AF-1911
2024-12-12 07:14:05 +00:00
CatsJuice
84df2a1d16 fix(mobile): disable navigation gesture for swipe-dialog (#8993) 2024-12-12 06:55:16 +00:00
JimmFly
01b6e43c1f fix(core): the member list is not refreshed after operating the member status (#9115)
close AF-1939 AF-1938

fix(core): the member list is not refreshed after operating the member status

chore: temporarily remove the workspace AI switch
2024-12-12 06:33:10 +00:00
JimmFly
c0e0b12857 fix(core): wrong billing information display (#9117)
close AF-1935 AF-1933

fix(core): wrong billing information display

fix(core): add reminder for no cloud workspace in upgrade to team page
2024-12-12 06:16:31 +00:00
renovate
595125ebb3 chore: migrate renovate config (#9114)
The Renovate config in this repository needs migrating. Typically this is because one or more configuration options you are using have been renamed.

  You don't need to merge this PR right away, because Renovate will continue to migrate these fields internally each time it runs. But later some of these fields may be fully deprecated and the migrations removed. So it's a good idea to merge this migration PR soon.

🔕 **Ignore**: Close this PR and you won't be reminded about config migration again, but one day your current config may no longer be valid.

 Got questions? Does something look wrong to you? Please don't hesitate to [request help here](https://redirect.github.com/renovatebot/renovate/discussions).

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE).
2024-12-12 04:08:55 +00:00
renovate
7541bf3107 chore: bump up @types/graphql-upload version to v17 (#9005)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@types/graphql-upload](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/graphql-upload) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/graphql-upload)) | [`^16.0.7` -> `^17.0.0`](https://renovatebot.com/diffs/npm/@types%2fgraphql-upload/16.0.7/17.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fgraphql-upload/17.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fgraphql-upload/17.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fgraphql-upload/16.0.7/17.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fgraphql-upload/16.0.7/17.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### 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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-12 03:52:01 +00:00
renovate
372f6893d6 chore: bump up oxlint version to v0.15.0 (#9096)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [oxlint](https://oxc.rs) ([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxlint)) | [`0.14.1` -> `0.15.0`](https://renovatebot.com/diffs/npm/oxlint/0.14.1/0.15.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/oxlint/0.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxlint/0.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxlint/0.14.1/0.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxlint/0.14.1/0.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>oxc-project/oxc (oxlint)</summary>

### [`v0.15.0`](https://redirect.github.com/oxc-project/oxc/releases/tag/oxlint_v0.15.0): oxlint v0.15.0

[Compare Source](https://redirect.github.com/oxc-project/oxc/compare/oxlint_v0.14.1...oxlint_v0.15.0)

#### \[0.15.0] - 2024-12-10

-   [`39b9c5d`](https://redirect.github.com/oxc-project/oxc/commit/39b9c5d) linter: \[**BREAKING**] Remove unmaintained security plugin ([#&#8203;7773](https://redirect.github.com/oxc-project/oxc/issues/7773)) (Boshen)

##### Features

-   [`065f7dc`](https://redirect.github.com/oxc-project/oxc/commit/065f7dc) linter: Support `expectTypeOf`, `assert` and `assertType` in `vitest/expect-expect` ([#&#8203;7742](https://redirect.github.com/oxc-project/oxc/issues/7742)) (Yuichiro Yamashita)
-   [`3d5f0a1`](https://redirect.github.com/oxc-project/oxc/commit/3d5f0a1) linter/no_restricted_imports: Add the no_restricted_imports rules ([#&#8203;7629](https://redirect.github.com/oxc-project/oxc/issues/7629)) (Guillaume Piedigrossi)

##### Bug Fixes

-   [`ad27b20`](https://redirect.github.com/oxc-project/oxc/commit/ad27b20) linter: Only resolve esm files for import plugin ([#&#8203;7720](https://redirect.github.com/oxc-project/oxc/issues/7720)) (Boshen)
-   [`5e6053f`](https://redirect.github.com/oxc-project/oxc/commit/5e6053f) linter: False positive in `eslint/yoda` ([#&#8203;7719](https://redirect.github.com/oxc-project/oxc/issues/7719)) (dalaoshu)

##### Refactor

-   [`c6a19aa`](https://redirect.github.com/oxc-project/oxc/commit/c6a19aa) linter: Remove unused `serde` features ([#&#8203;7738](https://redirect.github.com/oxc-project/oxc/issues/7738)) (Boshen)
-   [`b9a2b35`](https://redirect.github.com/oxc-project/oxc/commit/b9a2b35) linter: Remove `aho-corasick` ([#&#8203;7718](https://redirect.github.com/oxc-project/oxc/issues/7718)) (Boshen)

##### Testing

-   [`62f0a22`](https://redirect.github.com/oxc-project/oxc/commit/62f0a22) linter: Port `react-jsx-uses-vars` rules to no_unused_vars ([#&#8203;7731](https://redirect.github.com/oxc-project/oxc/issues/7731)) (Tyler Earls)
-   [`02f9903`](https://redirect.github.com/oxc-project/oxc/commit/02f9903) linter: Add regression tests for `import/namespace` ([#&#8203;7723](https://redirect.github.com/oxc-project/oxc/issues/7723)) (dalaoshu)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS41OC4xIiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-12 03:09:20 +00:00
pengx17
ae2d0c3bcf fix(core): tag inline editor filter should ignore case (#8936)
fix PD-1891
2024-12-12 02:49:32 +00:00
EYHN
91089ff5a2 fix(core): fix sign in with email (#9108) 2024-12-12 02:48:36 +00:00
pengx17
fea4777ef2 chore(core): at menu journal entry tracking (#9054)
fix AF-1844
2024-12-12 02:25:01 +00:00
pengx17
30d6793978 feat(core): add journal search results to bs doc search (#9052)
fix AF-1842
2024-12-12 02:25:00 +00:00
renovate
21969731a3 chore: bump up @nestjs/throttler version to v6.3.0 (#9095)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/throttler](https://redirect.github.com/nestjs/throttler) | [`6.2.1` -> `6.3.0`](https://renovatebot.com/diffs/npm/@nestjs%2fthrottler/6.2.1/6.3.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fthrottler/6.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fthrottler/6.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fthrottler/6.2.1/6.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fthrottler/6.2.1/6.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nestjs/throttler (@&#8203;nestjs/throttler)</summary>

### [`v6.3.0`](https://redirect.github.com/nestjs/throttler/blob/HEAD/CHANGELOG.md#630)

[Compare Source](https://redirect.github.com/nestjs/throttler/compare/v6.2.1...v6.3.0)

##### Minor Changes

-   [`fc93f3a`](https://redirect.github.com/nestjs/throttler/commit/fc93f3a): pass context to getTraker as a second arg

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS41OC4xIiwidXBkYXRlZEluVmVyIjoiMzkuNTguMSIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-12 02:06:39 +00:00
forehalo
cc217425db ci: fix release action 2024-12-11 23:00:14 +08:00
EYHN
0c0722c650 feat(nbstore): add blob sync frontend (#9084) 2024-12-11 12:39:26 +00:00
liuyi
a67fbc9448 ci: fix release script (#9107) 2024-12-11 11:18:13 +00:00
pengx17
01effaa0f1 fix(core): doc header drag preview styles (#9105) 2024-12-11 10:34:58 +00:00
DarkSky
9b0f1bb293 feat(server): improve team invite (#9092) 2024-12-11 18:00:49 +08:00
liuyi
671c41cb1a fix(server): should drop blob steam if not used (#9103) 2024-12-11 17:59:59 +08:00
JimmFly
4eb31444a9 fix(core): optimize upgrade to team page (#9099) 2024-12-11 17:59:46 +08:00
Peng Xiao
b864cbf9d3 fix(core): backlink preview should use sans font family (#9102) 2024-12-11 17:59:04 +08:00
pengx17
dc7d128252 feat(core): allow bs snapshot dragging targets (#9093)
fix AF-1924, AF-1848, AF-1928, AF-1931

dnd between affine & editor

<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/T2klNLEk0wxLh4NRDzhk/dff3ceb1-dc82-4222-9b55-13be80b28b2f.mp4">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/T2klNLEk0wxLh4NRDzhk/dff3ceb1-dc82-4222-9b55-13be80b28b2f.mp4">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/dff3ceb1-dc82-4222-9b55-13be80b28b2f.mp4">20241210-1217-49.8960381.mp4</video>
2024-12-11 08:12:01 +00:00
EYHN
331e674e8b feat(nbstore): add doc sync frontend (#9070) 2024-12-11 07:53:25 +00:00
forehalo
eee0ed45ee chore: selfhost compose backward compatibility (#9098) 2024-12-11 06:24:53 +00:00
JimmFly
216e09e1af feat(core): add workspace quota panel for team workspace (#9085)
close AF-1917 AF-1685 AF-1730
2024-12-10 12:32:01 +00:00
JimmFly
f63dacd553 fix(core): workspace billing cannot be opened (#9091) 2024-12-10 12:14:59 +00:00
forehalo
2f80b4f822 feat(nbstore): add cloud implementation (#8810) 2024-12-10 10:48:27 +00:00
liuyi
1721875ab6 fix(server): minize checkout parameters (#9090) 2024-12-10 08:24:28 +00:00
EYHN
18d65dff0e fix(core): share page show 404 (#9083) 2024-12-10 07:43:31 +00:00
github-actions[bot]
ffad1155ff chore(i18n): sync translations (#9089)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
Co-authored-by: forehalo <forehalo@gmail.com>
2024-12-10 07:43:14 +00:00
liuyi
c0938bd0d5 chore(server): team free trial control logic is not ready (#9088) 2024-12-10 15:36:27 +08:00
forehalo
9780ab6fa2 chore: fix oxlint (#9086) 2024-12-10 07:04:57 +00:00
EYHN
35edf389b5 feat(nbstore): better doc sync logic (#9037) 2024-12-10 06:49:21 +00:00
JimmFly
0a7a2c3083 feat(core): add workspace billing (#9043) 2024-12-10 06:31:36 +00:00
JimmFly
612310bc26 feat(core): impl team workspace (#8920)
AF-1738 AF-1735 AF-1731 AF-1721 AF-1717 AF-1736 AF-1727 AF-1719 AF-1877
UI for team workspaces :
- add upgrade to team & successful upgrade page ( `/upgrade-to-team` & `/upgrade-success/team`)
- update team plans on pricing page ( settings —> pricing plans )
- update reaching the usage/member limit modal
- update invite member modal
- update member CRUD options
2024-12-10 06:31:36 +00:00
forehalo
5d25580eff chore(graphql): update schema 2024-12-10 14:31:03 +08:00
forehalo
564faa439a fix(server): should auto apply ea price for users (#9082) 2024-12-10 05:31:19 +00:00
darkskygit
36a95463b4 feat(server): team quota migration (#9081) 2024-12-10 04:46:11 +00:00
Brooooooklyn
adc69548ef feat(ios,android): setup uniffi infra (#8828) 2024-12-10 03:43:35 +00:00
liuyi
95597ec139 chore(server): local data migration env (#9080) 2024-12-10 03:42:59 +00:00
darkskygit
4d44bcc145 fix(server): image action behavior in ci (#9077) 2024-12-10 02:54:31 +00:00
pengx17
ec140da0d9 feat(core): remember backlink open/close state (#9073)
fix AF-1850, AF-1883
2024-12-10 02:28:20 +00:00
pengx17
4335b0dc79 feat(core): add draghandle to doc page title (#9079)
fix AF-1846
2024-12-10 02:13:09 +00:00
forehalo
115caa7cc6 fix(server): wrong stripe checkout params (#9056) 2024-12-10 01:56:58 +00:00
L-Sun
720f6c6a58 chore(mobile): set doc readonly in edgeless mode (#9068)
Close [BS-1984](https://linear.app/affine-design/issue/BS-1984/edgeless-禁用编辑后,白板上,image-block-chat-block-可以移动), [BS-1918](https://linear.app/affine-design/issue/BS-1918/edgeless-移动端只读模式下,应当是单指移动,双指缩放), [BS-2035](https://linear.app/affine-design/issue/BS-2035/切换-edgeless-view-变为只读)
2024-12-10 01:39:30 +00:00
forehalo
1514e1269d fix: add explicit db name and user to pg_isready check
commit 783fd4d5f3
Author: forehalo <forehalo@gmail.com>
Date:   Mon Dec 9 20:55:43 2024 +0800

    chore: fix lint error

commit 0cf3740488
Author: Charles SENGES <charles.senges.io+github@protonmail.com>
Date:   Sun Dec 8 01:05:36 2024 +0100

    fix(compose.yaml): add explicit db name and user to pg_isready check
2024-12-10 09:38:19 +08:00
renovate
b55ec58bb8 chore: bump up @blocksuite/affine version to v0.18.5 (#9078)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/affine](https://redirect.github.com/toeverything/blocksuite) ([source](https://redirect.github.com/toeverything/blocksuite/tree/HEAD/packages/affine/all), [changelog](https://redirect.github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md)) | [`0.18.4` -> `0.18.5`](https://renovatebot.com/diffs/npm/@blocksuite%2faffine/0.18.4/0.18.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2faffine/0.18.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2faffine/0.18.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2faffine/0.18.4/0.18.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2faffine/0.18.4/0.18.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/blocksuite (@&#8203;blocksuite/affine)</summary>

### [`v0.18.5`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0185)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.18.4...v0.18.5)

##### Patch Changes

-   [`ec2956c`](https://redirect.github.com/toeverything/blocksuite/commit/ec2956c): ## Feat

    -   feat: api for encode and decode dnd data ([#&#8203;8909](https://redirect.github.com/toeverything/blocksuite/issues/8909))
    -   feat(blocks): add event tracking for linked doc ([#&#8203;8876](https://redirect.github.com/toeverything/blocksuite/issues/8876))
    -   feat(playground): outside click to close docs panel ([#&#8203;8885](https://redirect.github.com/toeverything/blocksuite/issues/8885))

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-09 13:18:12 +00:00
renovate
1673a59104 chore: bump up nestjs to v10.4.15 (#9075)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/common](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/core](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-express](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-express/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-express/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-express/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-express/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-socket.io](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-socket.io/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-socket.io/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-socket.io/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-socket.io/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-socket.io/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/testing](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/websockets](https://redirect.github.com/nestjs/nest) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/websockets)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2fwebsockets/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fwebsockets/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fwebsockets/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fwebsockets/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fwebsockets/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nestjs/nest (@&#8203;nestjs/common)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.14...v10.4.15)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...v10.4.14)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/core)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.14...v10.4.15)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...v10.4.14)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-express)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.14...v10.4.15)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...v10.4.14)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-socket.io)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.14...v10.4.15)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...v10.4.14)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/testing)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.14...v10.4.15)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...v10.4.14)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/websockets)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.14...v10.4.15)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...v10.4.14)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-09 13:01:07 +00:00
renovate
6c2cb47dbe chore: bump up nestjs (#9074)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/common](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/core](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-express](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-express/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-express/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-express/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-express/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-socket.io](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-socket.io/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-socket.io/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-socket.io/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-socket.io/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-socket.io/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/schedule](https://redirect.github.com/nestjs/schedule) | [`4.1.1` -> `4.1.2`](https://renovatebot.com/diffs/npm/@nestjs%2fschedule/4.1.1/4.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fschedule/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fschedule/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fschedule/4.1.1/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fschedule/4.1.1/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/testing](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/websockets](https://redirect.github.com/nestjs/nest) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/websockets)) | [`10.4.13` -> `10.4.15`](https://renovatebot.com/diffs/npm/@nestjs%2fwebsockets/10.4.13/10.4.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fwebsockets/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fwebsockets/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fwebsockets/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fwebsockets/10.4.13/10.4.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nestjs/nest (@&#8203;nestjs/common)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](1d457fe79f...d0fb875e23)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/core)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](1d457fe79f...d0fb875e23)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-express)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](1d457fe79f...d0fb875e23)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-socket.io)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](1d457fe79f...d0fb875e23)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

</details>

<details>
<summary>nestjs/schedule (@&#8203;nestjs/schedule)</summary>

### [`v4.1.2`](https://redirect.github.com/nestjs/schedule/releases/tag/4.1.2)

[Compare Source](https://redirect.github.com/nestjs/schedule/compare/4.1.1...4.1.2)

-   Merge pull request [#&#8203;1834](https://redirect.github.com/nestjs/schedule/issues/1834) from micalevisk/fix-issue-1833 ([`25a0ca9`](https://redirect.github.com/nestjs/schedule/commit/25a0ca9))
-   refactor: drop deprecated nodejs utility api ([`088674f`](https://redirect.github.com/nestjs/schedule/commit/088674f))
-   chore(deps): update dependency prettier to v3.4.2 ([#&#8203;1832](https://redirect.github.com/nestjs/schedule/issues/1832)) ([`42600c0`](https://redirect.github.com/nestjs/schedule/commit/42600c0))
-   chore(deps): update nest monorepo to v10.4.13 ([#&#8203;1831](https://redirect.github.com/nestjs/schedule/issues/1831)) ([`58b28ba`](https://redirect.github.com/nestjs/schedule/commit/58b28ba))
-   chore(deps): update typescript-eslint monorepo to v8.17.0 ([#&#8203;1830](https://redirect.github.com/nestjs/schedule/issues/1830)) ([`36bda2d`](https://redirect.github.com/nestjs/schedule/commit/36bda2d))
-   chore(deps): update dependency eslint to v9.16.0 ([#&#8203;1829](https://redirect.github.com/nestjs/schedule/issues/1829)) ([`97be309`](https://redirect.github.com/nestjs/schedule/commit/97be309))
-   chore(deps): update nest monorepo to v10.4.12 ([#&#8203;1828](https://redirect.github.com/nestjs/schedule/issues/1828)) ([`3bef9ec`](https://redirect.github.com/nestjs/schedule/commit/3bef9ec))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.10.1 ([#&#8203;1827](https://redirect.github.com/nestjs/schedule/issues/1827)) ([`ac01b10`](https://redirect.github.com/nestjs/schedule/commit/ac01b10))
-   chore(deps): update nest monorepo to v10.4.11 ([#&#8203;1826](https://redirect.github.com/nestjs/schedule/issues/1826)) ([`40f132a`](https://redirect.github.com/nestjs/schedule/commit/40f132a))
-   chore(deps): update dependency prettier to v3.4.1 ([#&#8203;1825](https://redirect.github.com/nestjs/schedule/issues/1825)) ([`ed162b9`](https://redirect.github.com/nestjs/schedule/commit/ed162b9))
-   chore(deps): update dependency prettier to v3.4.0 ([#&#8203;1824](https://redirect.github.com/nestjs/schedule/issues/1824)) ([`5ebb711`](https://redirect.github.com/nestjs/schedule/commit/5ebb711))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.10.0 ([#&#8203;1823](https://redirect.github.com/nestjs/schedule/issues/1823)) ([`c6f82ac`](https://redirect.github.com/nestjs/schedule/commit/c6f82ac))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.9.4 ([#&#8203;1822](https://redirect.github.com/nestjs/schedule/issues/1822)) ([`7f0d064`](https://redirect.github.com/nestjs/schedule/commit/7f0d064))
-   chore(deps): update typescript-eslint monorepo to v8.16.0 ([#&#8203;1821](https://redirect.github.com/nestjs/schedule/issues/1821)) ([`83a35b4`](https://redirect.github.com/nestjs/schedule/commit/83a35b4))
-   chore(deps): update nest monorepo to v10.4.9 ([#&#8203;1820](https://redirect.github.com/nestjs/schedule/issues/1820)) ([`f9e64d8`](https://redirect.github.com/nestjs/schedule/commit/f9e64d8))
-   Merge pull request [#&#8203;1801](https://redirect.github.com/nestjs/schedule/issues/1801) from nestjs/renovate/cron-3.x ([`cb158cc`](https://redirect.github.com/nestjs/schedule/commit/cb158cc))
-   fix(deps): update dependency cron to v3.2.1 ([`f88e263`](https://redirect.github.com/nestjs/schedule/commit/f88e263))
-   Merge pull request [#&#8203;1808](https://redirect.github.com/nestjs/schedule/issues/1808) from nestjs/renovate/uuid-11.x ([`35f6eb4`](https://redirect.github.com/nestjs/schedule/commit/35f6eb4))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.9.3 ([#&#8203;1819](https://redirect.github.com/nestjs/schedule/issues/1819)) ([`a0b8782`](https://redirect.github.com/nestjs/schedule/commit/a0b8782))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.9.2 ([#&#8203;1818](https://redirect.github.com/nestjs/schedule/issues/1818)) ([`4b48c1e`](https://redirect.github.com/nestjs/schedule/commit/4b48c1e))
-   chore(deps): update dependency typescript to v5.7.2 ([#&#8203;1817](https://redirect.github.com/nestjs/schedule/issues/1817)) ([`d708b47`](https://redirect.github.com/nestjs/schedule/commit/d708b47))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.9.1 ([#&#8203;1816](https://redirect.github.com/nestjs/schedule/issues/1816)) ([`227763c`](https://redirect.github.com/nestjs/schedule/commit/227763c))
-   chore(deps): update commitlint monorepo to v19.6.0 ([#&#8203;1815](https://redirect.github.com/nestjs/schedule/issues/1815)) ([`dd6748b`](https://redirect.github.com/nestjs/schedule/commit/dd6748b))
-   chore(deps): update typescript-eslint monorepo to v8.15.0 ([#&#8203;1814](https://redirect.github.com/nestjs/schedule/issues/1814)) ([`da02653`](https://redirect.github.com/nestjs/schedule/commit/da02653))
-   chore(deps): update dependency husky to v9.1.7 ([#&#8203;1813](https://redirect.github.com/nestjs/schedule/issues/1813)) ([`19fb64a`](https://redirect.github.com/nestjs/schedule/commit/19fb64a))
-   chore(deps): update dependency eslint to v9.15.0 ([#&#8203;1812](https://redirect.github.com/nestjs/schedule/issues/1812)) ([`e004d24`](https://redirect.github.com/nestjs/schedule/commit/e004d24))
-   chore(deps): update nest monorepo to v10.4.8 ([#&#8203;1811](https://redirect.github.com/nestjs/schedule/issues/1811)) ([`142ab3a`](https://redirect.github.com/nestjs/schedule/commit/142ab3a))
-   chore(deps): update typescript-eslint monorepo to v8.14.0 ([#&#8203;1809](https://redirect.github.com/nestjs/schedule/issues/1809)) ([`c20f9cd`](https://redirect.github.com/nestjs/schedule/commit/c20f9cd))
-   fix(deps): update dependency uuid to v11.0.3 ([`680c6f9`](https://redirect.github.com/nestjs/schedule/commit/680c6f9))
-   chore(deps): update nest monorepo to v10.4.7 ([`9379999`](https://redirect.github.com/nestjs/schedule/commit/9379999))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.9.0 ([`c2153c9`](https://redirect.github.com/nestjs/schedule/commit/c2153c9))
-   chore(deps): update typescript-eslint monorepo to v8.13.0 ([`a72d7fe`](https://redirect.github.com/nestjs/schedule/commit/a72d7fe))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.8.7 ([`9e20d7a`](https://redirect.github.com/nestjs/schedule/commit/9e20d7a))
-   chore(deps): update dependency eslint to v9.14.0 ([`dfd85ce`](https://redirect.github.com/nestjs/schedule/commit/dfd85ce))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.8.6 ([`48663de`](https://redirect.github.com/nestjs/schedule/commit/48663de))
-   chore(deps): update typescript-eslint monorepo to v8.12.2 ([`5767123`](https://redirect.github.com/nestjs/schedule/commit/5767123))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.8.5 ([`bdc8318`](https://redirect.github.com/nestjs/schedule/commit/bdc8318))
-   Merge pull request [#&#8203;1795](https://redirect.github.com/nestjs/schedule/issues/1795) from nestjs/renovate/uuid-11.x ([`2898c3f`](https://redirect.github.com/nestjs/schedule/commit/2898c3f))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22 ([`b26a306`](https://redirect.github.com/nestjs/schedule/commit/b26a306))
-   chore(deps): update typescript-eslint monorepo to v8.12.1 ([`38e8a95`](https://redirect.github.com/nestjs/schedule/commit/38e8a95))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.17.2 ([`a5c2a3d`](https://redirect.github.com/nestjs/schedule/commit/a5c2a3d))
-   fix(deps): update dependency uuid to v11 ([`6020c6d`](https://redirect.github.com/nestjs/schedule/commit/6020c6d))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.17.1 ([`7210ea3`](https://redirect.github.com/nestjs/schedule/commit/7210ea3))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.17.0 ([`d3cf55e`](https://redirect.github.com/nestjs/schedule/commit/d3cf55e))
-   chore(deps): update nest monorepo to v10.4.6 ([`ba735f3`](https://redirect.github.com/nestjs/schedule/commit/ba735f3))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.16.15 ([`8555b83`](https://redirect.github.com/nestjs/schedule/commit/8555b83))
-   chore(deps): update dependency [@&#8203;types/jest](https://redirect.github.com/types/jest) to v29.5.14 ([`e58df86`](https://redirect.github.com/nestjs/schedule/commit/e58df86))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.16.14 ([`dca988b`](https://redirect.github.com/nestjs/schedule/commit/dca988b))
-   chore(deps): update typescript-eslint monorepo to v8.11.0 ([`9b5f16b`](https://redirect.github.com/nestjs/schedule/commit/9b5f16b))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.16.13 ([`28400dd`](https://redirect.github.com/nestjs/schedule/commit/28400dd))
-   chore(deps): update dependency eslint to v9.13.0 ([`f0e861f`](https://redirect.github.com/nestjs/schedule/commit/f0e861f))
-   chore(deps): update typescript-eslint monorepo to v8.10.0 ([`9ec30f0`](https://redirect.github.com/nestjs/schedule/commit/9ec30f0))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.16.12 ([`0ee7571`](https://redirect.github.com/nestjs/schedule/commit/0ee7571))
-   chore(deps): update nest monorepo to v10.4.5 ([`0c2c38a`](https://redirect.github.com/nestjs/schedule/commit/0c2c38a))
-   chore(deps): update dependency release-it to v17.10.0 ([`7d1c2e6`](https://redirect.github.com/nestjs/schedule/commit/7d1c2e6))
-   chore(deps): update typescript-eslint monorepo to v8.9.0 ([`0342a00`](https://redirect.github.com/nestjs/schedule/commit/0342a00))
-   chore(deps): update dependency release-it to v17.9.0 ([`e5cb061`](https://redirect.github.com/nestjs/schedule/commit/e5cb061))
-   chore(deps): update dependency release-it to v17.8.2 ([`3bcbb56`](https://redirect.github.com/nestjs/schedule/commit/3bcbb56))
-   chore(deps): update dependency typescript to v5.6.3 ([`f1f10d8`](https://redirect.github.com/nestjs/schedule/commit/f1f10d8))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.16.11 ([`cb7656c`](https://redirect.github.com/nestjs/schedule/commit/cb7656c))
-   chore(deps): update typescript-eslint monorepo to v8.8.1 ([`0a775cc`](https://redirect.github.com/nestjs/schedule/commit/0a775cc))
-   chore(deps): update dependency eslint to v9.12.0 ([`dce0ee2`](https://redirect.github.com/nestjs/schedule/commit/dce0ee2))
-   chore(deps): update dependency release-it to v17.7.0 ([`6fc5ba3`](https://redirect.github.com/nestjs/schedule/commit/6fc5ba3))
-   chore(deps): update dependency eslint to v9 ([`e2f3171`](https://redirect.github.com/nestjs/schedule/commit/e2f3171))
-   chore(deps): update dependency eslint-plugin-import to v2.31.0 ([`ed8d3b1`](https://redirect.github.com/nestjs/schedule/commit/ed8d3b1))
-   chore(deps): update typescript-eslint monorepo to v8.8.0 ([`af47ac4`](https://redirect.github.com/nestjs/schedule/commit/af47ac4))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.16.10 ([`acdc7f7`](https://redirect.github.com/nestjs/schedule/commit/acdc7f7))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.16.9 ([`e959086`](https://redirect.github.com/nestjs/schedule/commit/e959086))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.16.8 ([`baaf27b`](https://redirect.github.com/nestjs/schedule/commit/baaf27b))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.16.7 ([`be359b6`](https://redirect.github.com/nestjs/schedule/commit/be359b6))
-   chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.16.6 ([`cb1e63c`](https://redirect.github.com/nestjs/schedule/commit/cb1e63c))
-   chore(deps): update typescript-eslint monorepo to v8.7.0 ([`c60a479`](https://redirect.github.com/nestjs/schedule/commit/c60a479))
-   chore(deps): update nest monorepo to v10.4.4 ([`3e93023`](https://redirect.github.com/nestjs/schedule/commit/3e93023))
-   chore(deps): update nest monorepo to v10.4.3 ([`0e67a32`](https://redirect.github.com/nestjs/schedule/commit/0e67a32))
-   chore(deps): update typescript-eslint monorepo to v8.6.0 ([`a7a9697`](https://redirect.github.com/nestjs/schedule/commit/a7a9697))
-   chore(deps): update dependency eslint to v8.57.1 ([`2fbf0a4`](https://redirect.github.com/nestjs/schedule/commit/2fbf0a4))
-   chore(deps): update nest monorepo to v10.4.2 ([`d338f16`](https://redirect.github.com/nestjs/schedule/commit/d338f16))

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/testing)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](1d457fe79f...d0fb875e23)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/websockets)</summary>

### [`v10.4.15`](1d457fe79f...d0fb875e23)

[Compare Source](1d457fe79f...d0fb875e23)

### [`v10.4.14`](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.13...1d457fe79f00956ef41a8bdc595d686f980eed40)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-09 11:37:32 +00:00
darkskygit
31146e5213 fix: copilot ci (#9066) 2024-12-09 11:11:04 +00:00
pengx17
814b4c9cb0 fix(core): canDrop check for external (#9058) 2024-12-09 10:25:38 +00:00
DarkSky
9365958a02 feat(server): team quota (#8955) 2024-12-09 18:51:54 +09:00
CatsJuice
8fe188e773 refactor(mobile): determine the currently active tab through a persistent state (#9018)
close AF-1868

Only tap on specific tab can change active tab
2024-12-09 04:07:05 +00:00
pengx17
f073df3ee5 fix(mobile): backlink ordering in doc info (#9015)
fix AF-1885
2024-12-09 03:48:08 +00:00
pengx17
5a6dd29d36 fix(mobile): center peek styles (#9014)
fix AF-1876

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/af1191dd-4549-4c38-8948-2d726946d4fe.png)
2024-12-09 03:48:07 +00:00
pengx17
9ddcdb8e50 test(core): test case for dragging from bs editor to sidebar (#9057)
fix AF-1904
2024-12-09 03:31:05 +00:00
fundon
0bafc35aad feat: linked doc supports aliases (#9009)
Closes: [AF-1882](https://linear.app/affine-design/issue/AF-1882/实现-generatedocurlservice)
Upstreams: https://github.com/toeverything/blocksuite/pull/8806
2024-12-09 03:12:09 +00:00
fundon
efa4a80019 chore: not allowed to open pdf files on mobile (#9041)
Related to [BS-1919](https://linear.app/affine-design/issue/BS-1919/pdf-block-适配).

First remove the expand button on the mobile side.
2024-12-09 02:54:07 +00:00
pengx17
7a1dab134f fix(core): doc db text property editing issue (#9055)
fix AF-1901
2024-12-09 02:37:13 +00:00
EYHN
7225f59138 feat(nbstore): add blob sync (#8996) 2024-12-07 08:05:04 +00:00
EYHN
f54f6e88cb feat(nbstore): new doc sync engine (#8918) 2024-12-07 08:05:02 +00:00
pengx17
fafacdb265 feat(core): dnd support external types (#9033)
fix AF-1847

two issues:
1. original `dropTargetForExternal` only works if dragging target is from another window context. patched the library to bypass this issue
2. `dataTransfer`'s content is only available on `drop` event. This means we cannot have `canDrop` checks for external elements (like blocksuite links).
2024-12-06 21:46:08 +08:00
akumatus
6b14e1cf10 feat(core): after the user clicks ask ai, the input pops up directly (#9039)
Issue [AF-1762](https://linear.app/affine-design/issue/AF-1762).

Ask AI on edgeless mode:

<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/sJGviKxfE3Ap685cl5bj/1218afba-466f-4570-afd4-679b6b09cc8d.mov">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/sJGviKxfE3Ap685cl5bj/1218afba-466f-4570-afd4-679b6b09cc8d.mov">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/1218afba-466f-4570-afd4-679b6b09cc8d.mov">录屏2024-12-06 09.54.52.mov</video>

Ask AI on page mode:
<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/sJGviKxfE3Ap685cl5bj/58d19705-f646-4957-8628-15845b47222b.mov">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/sJGviKxfE3Ap685cl5bj/58d19705-f646-4957-8628-15845b47222b.mov">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/58d19705-f646-4957-8628-15845b47222b.mov">录屏2024-12-06 09.52.51.mov</video>
2024-12-06 12:12:05 +00:00
pengx17
3ef28ed19b fix(core): peek db row should always show the related db row property (#8942)
fix BS-1963
depends on https://github.com/toeverything/blocksuite/pull/8818
2024-12-06 10:02:22 +00:00
renovate
aadc978357 chore: bump up oxlint version to v0.14.1 (#9044)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [oxlint](https://oxc.rs) ([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxlint)) | [`0.14.0` -> `0.14.1`](https://renovatebot.com/diffs/npm/oxlint/0.14.0/0.14.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/oxlint/0.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxlint/0.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxlint/0.14.0/0.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxlint/0.14.0/0.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>oxc-project/oxc (oxlint)</summary>

### [`v0.14.1`](https://redirect.github.com/oxc-project/oxc/releases/tag/oxlint_v0.14.1): oxlint v0.14.1

[Compare Source](https://redirect.github.com/oxc-project/oxc/compare/oxlint_v0.14.0...oxlint_v0.14.1)

#### \[0.14.1] - 2024-12-06

##### Features

-   [`fd0935c`](https://redirect.github.com/oxc-project/oxc/commit/fd0935c) linter: Change `react/rules-of-hooks` category to `pedantic` ([#&#8203;7691](https://redirect.github.com/oxc-project/oxc/issues/7691)) (Boshen)
-   [`e64fd95`](https://redirect.github.com/oxc-project/oxc/commit/e64fd95) linter: Map `.js` to `.ts` when resolving with tsconfig.json ([#&#8203;7675](https://redirect.github.com/oxc-project/oxc/issues/7675)) (Boshen)
-   [`bd9d38a`](https://redirect.github.com/oxc-project/oxc/commit/bd9d38a) linter: Implement eslint:yoda ([#&#8203;7559](https://redirect.github.com/oxc-project/oxc/issues/7559)) (tbashiyy)
-   [`a14e76a`](https://redirect.github.com/oxc-project/oxc/commit/a14e76a) linter: Report identical logical expressions in const-comparisons ([#&#8203;7630](https://redirect.github.com/oxc-project/oxc/issues/7630)) (camc314)
-   [`afe1e9b`](https://redirect.github.com/oxc-project/oxc/commit/afe1e9b) linter: Enhance `const-comparisons` for more cases ([#&#8203;7628](https://redirect.github.com/oxc-project/oxc/issues/7628)) (camc314)
-   [`4eb87ea`](https://redirect.github.com/oxc-project/oxc/commit/4eb87ea) linter: RulesOfHooks from nursery to correctness ([#&#8203;7607](https://redirect.github.com/oxc-project/oxc/issues/7607)) (Boshen)
-   [`275d625`](https://redirect.github.com/oxc-project/oxc/commit/275d625) linter: Output rules to json array ([#&#8203;7574](https://redirect.github.com/oxc-project/oxc/issues/7574)) (camc314)
-   [`b8dc333`](https://redirect.github.com/oxc-project/oxc/commit/b8dc333) syntax: Add `ExportEntry::is_type` ([#&#8203;7676](https://redirect.github.com/oxc-project/oxc/issues/7676)) (Boshen)

##### Bug Fixes

-   [`9761e94`](https://redirect.github.com/oxc-project/oxc/commit/9761e94) apps/oxlint: Incorrect matching in `.oxlintignore` ([#&#8203;7566](https://redirect.github.com/oxc-project/oxc/issues/7566)) (dalaoshu)
-   [`7cee065`](https://redirect.github.com/oxc-project/oxc/commit/7cee065) linter: Panic in `yoda` ([#&#8203;7679](https://redirect.github.com/oxc-project/oxc/issues/7679)) (camc314)
-   [`6ae178e`](https://redirect.github.com/oxc-project/oxc/commit/6ae178e) linter: Ignore type references in `no-undef` ([#&#8203;7670](https://redirect.github.com/oxc-project/oxc/issues/7670)) (Boshen)
-   [`fcc2546`](https://redirect.github.com/oxc-project/oxc/commit/fcc2546) linter: Move `no-unused-expressions` from TS to eslint ([#&#8203;7624](https://redirect.github.com/oxc-project/oxc/issues/7624)) (camc314)
-   [`29db060`](https://redirect.github.com/oxc-project/oxc/commit/29db060) linter: Detect typescript eslint alias rules ([#&#8203;7622](https://redirect.github.com/oxc-project/oxc/issues/7622)) (Alexander S.)
-   [`e824501`](https://redirect.github.com/oxc-project/oxc/commit/e824501) linter: False positive in exhaustive-deps ([#&#8203;7626](https://redirect.github.com/oxc-project/oxc/issues/7626)) (camc314)
-   [`8a68ef4`](https://redirect.github.com/oxc-project/oxc/commit/8a68ef4) linter: Update reporting spans for exhaustive-deps ([#&#8203;7625](https://redirect.github.com/oxc-project/oxc/issues/7625)) (camc314)
-   [`543df6e`](https://redirect.github.com/oxc-project/oxc/commit/543df6e) linter: Fix false positives in exhaustive-deps ([#&#8203;7615](https://redirect.github.com/oxc-project/oxc/issues/7615)) (camc314)
-   [`e80214c`](https://redirect.github.com/oxc-project/oxc/commit/e80214c) linter: Fix false positives in rules-of-hooks ([#&#8203;7606](https://redirect.github.com/oxc-project/oxc/issues/7606)) (camc314)
-   [`3dc46a8`](https://redirect.github.com/oxc-project/oxc/commit/3dc46a8) linter: No-unused-expressions false positive with arrow fn expressions ([#&#8203;7585](https://redirect.github.com/oxc-project/oxc/issues/7585)) (Cameron)
-   [`810671a`](https://redirect.github.com/oxc-project/oxc/commit/810671a) linter: Detect vitest jest alias rules ([#&#8203;7567](https://redirect.github.com/oxc-project/oxc/issues/7567)) (Alexander S.)
-   [`4e3044e`](https://redirect.github.com/oxc-project/oxc/commit/4e3044e) linter: Rules-of-hooks fix false positive with default export ([#&#8203;7570](https://redirect.github.com/oxc-project/oxc/issues/7570)) (camc314)

##### Documentation

-   [`f029090`](https://redirect.github.com/oxc-project/oxc/commit/f029090) linter: Update rule documentation ([#&#8203;7684](https://redirect.github.com/oxc-project/oxc/issues/7684)) (camc314)
-   [`4e489bd`](https://redirect.github.com/oxc-project/oxc/commit/4e489bd) linter: Update rule documentation ([#&#8203;7681](https://redirect.github.com/oxc-project/oxc/issues/7681)) (camc314)
-   [`56fe5f8`](https://redirect.github.com/oxc-project/oxc/commit/56fe5f8) linter: Update rule documentation ([#&#8203;7680](https://redirect.github.com/oxc-project/oxc/issues/7680)) (Cameron)

##### Refactor

-   [`a0973dc`](https://redirect.github.com/oxc-project/oxc/commit/a0973dc) linter: Use `BigIntLiteral::raw` field ([#&#8203;7660](https://redirect.github.com/oxc-project/oxc/issues/7660)) (overlookmotel)
-   [`3711a8e`](https://redirect.github.com/oxc-project/oxc/commit/3711a8e) linter: Rename `is_same_reference` to `is_same_expression` ([#&#8203;7654](https://redirect.github.com/oxc-project/oxc/issues/7654)) (camc314)
-   [`b445654`](https://redirect.github.com/oxc-project/oxc/commit/b445654) linter: Use `get_inner_expression` in `const-comparisons` ([#&#8203;7627](https://redirect.github.com/oxc-project/oxc/issues/7627)) (camc314)
-   [`f0e7acc`](https://redirect.github.com/oxc-project/oxc/commit/f0e7acc) syntax: Change `ModuleRecord::not_esm` to `has_module_syntax` ([#&#8203;7579](https://redirect.github.com/oxc-project/oxc/issues/7579)) (Boshen)
-   [`18519de`](https://redirect.github.com/oxc-project/oxc/commit/18519de) syntax: Remove `ModuleRecord::export_default` ([#&#8203;7578](https://redirect.github.com/oxc-project/oxc/issues/7578)) (Boshen)
-   [`d476660`](https://redirect.github.com/oxc-project/oxc/commit/d476660) syntax: Remove `ModuleRecord::exported_bindings_duplicated` because it is a syntax error ([#&#8203;7577](https://redirect.github.com/oxc-project/oxc/issues/7577)) (Boshen)
-   [`17663f5`](https://redirect.github.com/oxc-project/oxc/commit/17663f5) syntax: Remove `ModuleRecord::export_default_duplicated` because it is a syntax error ([#&#8203;7576](https://redirect.github.com/oxc-project/oxc/issues/7576)) (Boshen)
-   [`79014ff`](https://redirect.github.com/oxc-project/oxc/commit/79014ff) syntax: Clean up `ModuleRecord` ([#&#8203;7568](https://redirect.github.com/oxc-project/oxc/issues/7568)) (Boshen)

##### Testing

-   [`be9863a`](https://redirect.github.com/oxc-project/oxc/commit/be9863a) linter: Add more tests fo rules-of-hooks ([#&#8203;7683](https://redirect.github.com/oxc-project/oxc/issues/7683)) (camc314)
-   [`6dd71c6`](https://redirect.github.com/oxc-project/oxc/commit/6dd71c6) linter: Port eslint tests to no-unused-expressions ([#&#8203;7611](https://redirect.github.com/oxc-project/oxc/issues/7611)) (camc314)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-06 09:45:17 +00:00
forehalo
1aff9de981 refactor(server): cleanup selfhost module (#9038) 2024-12-06 09:23:22 +00:00
L-Sun
b1c8fca25e refactor(mobile): use bs mobile spec patch (#9046)
Close [BS-2068](https://linear.app/affine-design/issue/BS-2068/移动端-placeholder,去除-space-with-ai)
2024-12-06 09:07:20 +00:00
pengx17
b378af5ade feat(core): at menu ux (#9045)
fix AF-1843
2024-12-06 08:50:13 +00:00
liuyi
d6869ca0e7 fix(server): avoid unknown fields in create query (#9047) 2024-12-06 17:49:52 +09:00
doodlewind
8545644bb6 chore: bump blocksuite (#9049) 2024-12-06 08:33:47 +00:00
CatsJuice
c9e555d077 feat(mobile): open doc info in explorer (#9040) 2024-12-06 07:14:11 +00:00
CatsJuice
dd94fb3450 feat(mobile): add journal conflict block to the top of detail page (#9042) 2024-12-06 06:57:47 +00:00
renovate
e83617a556 chore: bump up @blocksuite/affine version to v0.18.3 (#9019)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/affine](https://redirect.github.com/toeverything/blocksuite) ([source](https://redirect.github.com/toeverything/blocksuite/tree/HEAD/packages/affine/all), [changelog](https://redirect.github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md)) | [`0.18.1` -> `0.18.3`](https://renovatebot.com/diffs/npm/@blocksuite%2faffine/0.18.1/0.18.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2faffine/0.18.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2faffine/0.18.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2faffine/0.18.1/0.18.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2faffine/0.18.1/0.18.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/blocksuite (@&#8203;blocksuite/affine)</summary>

### [`v0.18.3`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0183)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.18.2...v0.18.3)

##### Patch Changes

-   [`3448094`](https://redirect.github.com/toeverything/blocksuite/commit/3448094): ## Fix

    -   fix(database): storage should be accessed via globalThis ([#&#8203;8863](https://redirect.github.com/toeverything/blocksuite/issues/8863))
    -   fix(edgeless): memory leak in edgeless widgets ([#&#8203;8862](https://redirect.github.com/toeverything/blocksuite/issues/8862))
    -   fix: page switching under starter route ([#&#8203;8860](https://redirect.github.com/toeverything/blocksuite/issues/8860))

### [`v0.18.2`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0182)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.18.1...v0.18.2)

##### Patch Changes

-   [`f97c4ab`](https://redirect.github.com/toeverything/blocksuite/commit/f97c4ab): bump

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-06 06:11:41 +00:00
CatsJuice
53339e3370 fix(component): toast shouldn't cover whole header (#9032) 2024-12-06 01:56:02 +00:00
forehalo
0a1fa8911f refactor(server): better selfhost deployment (#9036) 2024-12-06 01:37:27 +00:00
EYHN
f96f08dcec fix(core): oauth callback (#9029) 2024-12-06 00:45:32 +00:00
renovate
4c2fe9f9cc chore: bump up dnd-kit monorepo (major) (#9024)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@dnd-kit/modifiers](https://redirect.github.com/clauderic/dnd-kit) ([source](https://redirect.github.com/clauderic/dnd-kit/tree/HEAD/packages/modifiers)) | [`^8.0.0` -> `^9.0.0`](https://renovatebot.com/diffs/npm/@dnd-kit%2fmodifiers/8.0.0/9.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@dnd-kit%2fmodifiers/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@dnd-kit%2fmodifiers/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@dnd-kit%2fmodifiers/8.0.0/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@dnd-kit%2fmodifiers/8.0.0/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@dnd-kit/sortable](https://redirect.github.com/clauderic/dnd-kit) ([source](https://redirect.github.com/clauderic/dnd-kit/tree/HEAD/packages/sortable)) | [`^9.0.0` -> `^10.0.0`](https://renovatebot.com/diffs/npm/@dnd-kit%2fsortable/9.0.0/10.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@dnd-kit%2fsortable/10.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@dnd-kit%2fsortable/10.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@dnd-kit%2fsortable/9.0.0/10.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@dnd-kit%2fsortable/9.0.0/10.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>clauderic/dnd-kit (@&#8203;dnd-kit/modifiers)</summary>

### [`v9.0.0`](https://redirect.github.com/clauderic/dnd-kit/blob/HEAD/packages/modifiers/CHANGELOG.md#900)

[Compare Source](https://redirect.github.com/clauderic/dnd-kit/compare/@dnd-kit/modifiers@8.0.0...@dnd-kit/modifiers@9.0.0)

##### Patch Changes

-   Updated dependencies \[[`0c6a28d`](0c6a28d1b3)]:
    -   [@&#8203;dnd-kit/core](https://redirect.github.com/dnd-kit/core)[@&#8203;6](https://redirect.github.com/6).3.0

</details>

<details>
<summary>clauderic/dnd-kit (@&#8203;dnd-kit/sortable)</summary>

### [`v10.0.0`](https://redirect.github.com/clauderic/dnd-kit/blob/HEAD/packages/sortable/CHANGELOG.md#1000)

[Compare Source](https://redirect.github.com/clauderic/dnd-kit/compare/@dnd-kit/sortable@9.0.0...@dnd-kit/sortable@10.0.0)

##### Patch Changes

-   Updated dependencies \[[`0c6a28d`](0c6a28d1b3)]:
    -   [@&#8203;dnd-kit/core](https://redirect.github.com/dnd-kit/core)[@&#8203;6](https://redirect.github.com/6).3.0

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-05 15:22:16 +00:00
forehalo
0436e59b6a feat(server): auto init stripe products when development (#9034) 2024-12-05 14:21:59 +00:00
liuyi
4c39b89b98 feat(server): ai trial support (#9031) 2024-12-05 09:39:59 +00:00
forehalo
5bf8ed1095 feat(server): support team workspace subscription (#8919)
close AF-1724, AF-1722
2024-12-05 08:31:01 +00:00
forehalo
4055e3aa67 refactor(server): payment service (#8906) 2024-12-05 08:31:00 +00:00
DarkSky
4fe1b5ba93 chore: adjust copilot ci (#9030) 2024-12-05 07:43:48 +00:00
CatsJuice
06764bbb83 chore(mobile): optimize swipe dialog animation timeline (#9028) 2024-12-05 06:31:28 +00:00
pengx17
7dad9fe816 fix(component): workaround for storybook startup (#9025)
It seems starting up storybook throws error when parsing doc using typescript.
Temporarily remove reactDocgen for now.
![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/db54c528-2b37-4a91-b980-4fe6c07240b7.png)
2024-12-05 05:35:00 +00:00
renovate
1cba9a7b2f chore: bump up @blocksuite/icons version to v2.1.75 (#9017)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/icons](https://redirect.github.com/toeverything/icons) | [`2.1.74` -> `2.1.75`](https://renovatebot.com/diffs/npm/@blocksuite%2ficons/2.1.74/2.1.75) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2ficons/2.1.75?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2ficons/2.1.75?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2ficons/2.1.74/2.1.75?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2ficons/2.1.74/2.1.75?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/icons (@&#8203;blocksuite/icons)</summary>

### [`v2.1.75`](81fef5d8a1...0f19bd6eb3)

[Compare Source](81fef5d8a1...0f19bd6eb3)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-05 02:21:21 +00:00
renovate
84e11610fb chore: bump up nestjs to v12.2.2 (#9021)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/apollo](https://redirect.github.com/nestjs/graphql) | [`12.2.1` -> `12.2.2`](https://renovatebot.com/diffs/npm/@nestjs%2fapollo/12.2.1/12.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fapollo/12.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fapollo/12.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fapollo/12.2.1/12.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fapollo/12.2.1/12.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/graphql](https://redirect.github.com/nestjs/graphql) | [`12.2.1` -> `12.2.2`](https://renovatebot.com/diffs/npm/@nestjs%2fgraphql/12.2.1/12.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fgraphql/12.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fgraphql/12.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fgraphql/12.2.1/12.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fgraphql/12.2.1/12.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nestjs/graphql (@&#8203;nestjs/apollo)</summary>

### [`v12.2.2`](https://redirect.github.com/nestjs/graphql/releases/tag/v12.2.2)

[Compare Source](https://redirect.github.com/nestjs/graphql/compare/v12.2.1...v12.2.2)

##### 12.2.2 (2024-12-04)

##### Enhancements

-   `graphql`
    -   [#&#8203;3346](https://redirect.github.com/nestjs/graphql/pull/3346) refactor(graphql/lib): definitions generator `defaultTypeMapping` type reinforcement ([@&#8203;Neosoulink](https://redirect.github.com/Neosoulink))

##### Dependencies

-   `mercurius`
    -   [#&#8203;3400](https://redirect.github.com/nestjs/graphql/pull/3400) chore(deps): update dependency fastify to v4.29.0 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   Other
    -   [#&#8203;3370](https://redirect.github.com/nestjs/graphql/pull/3370) chore(deps): update dependency graphql-subscriptions to v3 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   `graphql`
    -   [#&#8203;3368](https://redirect.github.com/nestjs/graphql/pull/3368) fix(deps): update dependency [@&#8203;nestjs/mapped-types](https://redirect.github.com/nestjs/mapped-types) to v2.0.6 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;3349](https://redirect.github.com/nestjs/graphql/pull/3349) fix(deps): update dependency uuid to v11 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;3372](https://redirect.github.com/nestjs/graphql/pull/3372) fix(deps): update graphql-tools monorepo ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   `apollo`, `graphql`, `mercurius`
    -   [#&#8203;3360](https://redirect.github.com/nestjs/graphql/pull/3360) fix(deps): update dependency tslib to v2.8.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))

##### Committers: 2

-   Antonio Tripodi ([@&#8203;Tony133](https://redirect.github.com/Tony133))
-   Nathan M. ([@&#8203;Neosoulink](https://redirect.github.com/Neosoulink))

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-05 02:04:14 +00:00
renovate
f07c7f3fbc chore: bump up actions/attest-build-provenance action to v2 (#9023)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/attest-build-provenance](https://redirect.github.com/actions/attest-build-provenance) | action | major | `v1` -> `v2` |

---

### Release Notes

<details>
<summary>actions/attest-build-provenance (actions/attest-build-provenance)</summary>

### [`v2`](https://redirect.github.com/actions/attest-build-provenance/compare/v1...v2)

[Compare Source](https://redirect.github.com/actions/attest-build-provenance/compare/v1...v2)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-05 01:46:16 +00:00
CatsJuice
8ecfe4f3a7 chore: bump theme to support new syntax of cssVarV2 (#9008) 2024-12-05 01:01:52 +00:00
L-Sun
f7d20880af test(core): add tests for card view with edgeless mode link (#8887)
Close [BS-1881](https://linear.app/affine-design/issue/BS-1881/page内的edgeless-embed-缩放和坐标定位不太对), [BS-1907](https://linear.app/affine-design/issue/BS-1907/mode=edgeless的cardview转成embed,丢失了mode信息), related PR https://github.com/toeverything/blocksuite/pull/8785, https://github.com/toeverything/blocksuite/pull/8790

This PR adds a test for the fit-to-content feature of the viewport for the embed doc block in edgeless mode.
2024-12-04 08:59:33 +00:00
pengx17
f4f005bffb fix(core): db property number cell should be cast to number (#8937)
fix BS-1962
2024-12-04 07:49:56 +00:00
pengx17
e4f94c7e3f fix(mobile): progress styles (#9001)
fix AF-1875, fix AF-1878, fix AF-1879
2024-12-04 06:56:34 +00:00
pengx17
82d133d64d fix(mobile): doc info radio group width (#9000)
fix AF-1874
2024-12-04 06:56:31 +00:00
pengx17
018b293f2d fix(mobile): tags editor max height (#8999)
fix AF-1873
2024-12-04 06:56:29 +00:00
pengx17
4706f1e2a3 fix(core): date-picker styles (#8997)
fix AF-1871
2024-12-04 06:56:26 +00:00
JimmFly
1fa1a95c10 feat(core): support creating cloud workspaces to different servers (#9006) 2024-12-04 06:39:13 +00:00
pengx17
dddefcf768 fix(core): lit portal rerender (#9012) 2024-12-04 06:20:03 +00:00
EYHN
b637a62785 fix(ios): fix login (#9011) 2024-12-04 05:19:41 +00:00
renovate
83c7deeeec chore: Lock file maintenance (#8975)
This PR contains the following updates:

| Update | Change |
|---|---|
| lockFileMaintenance | All locks refreshed |

🔧 This Pull Request updates lock files to use the latest dependency versions.

---

### Configuration

📅 **Schedule**: Branch creation - "* 0-3 * * 1" (UTC), 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-03 16:24:22 +00:00
renovate
8d229ee25b chore: bump up @blocksuite/icons version to v2.1.74 (#9003)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/icons](https://redirect.github.com/toeverything/icons) | [`2.1.73` -> `2.1.74`](https://renovatebot.com/diffs/npm/@blocksuite%2ficons/2.1.73/2.1.74) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2ficons/2.1.74?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2ficons/2.1.74?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2ficons/2.1.73/2.1.74?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2ficons/2.1.73/2.1.74?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/icons (@&#8203;blocksuite/icons)</summary>

### [`v2.1.74`](ddeb030e72...81fef5d8a1)

[Compare Source](ddeb030e72...81fef5d8a1)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-03 16:07:19 +00:00
renovate
7d006498b6 chore: bump up nestjs to v10.4.13 (#9004)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/common](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common)) | [`10.4.12` -> `10.4.13`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/10.4.12/10.4.13) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/core](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core)) | [`10.4.12` -> `10.4.13`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/10.4.12/10.4.13) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-express](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express)) | [`10.4.12` -> `10.4.13`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/10.4.12/10.4.13) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-express/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-express/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-express/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-express/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-socket.io](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io)) | [`10.4.12` -> `10.4.13`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-socket.io/10.4.12/10.4.13) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-socket.io/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-socket.io/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-socket.io/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-socket.io/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/testing](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing)) | [`10.4.12` -> `10.4.13`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/10.4.12/10.4.13) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/websockets](https://redirect.github.com/nestjs/nest) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/websockets)) | [`10.4.12` -> `10.4.13`](https://renovatebot.com/diffs/npm/@nestjs%2fwebsockets/10.4.12/10.4.13) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fwebsockets/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fwebsockets/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fwebsockets/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fwebsockets/10.4.12/10.4.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nestjs/nest (@&#8203;nestjs/common)</summary>

### [`v10.4.13`](https://redirect.github.com/nestjs/nest/compare/v10.4.12...1eba0121a089be0e4880f37503dab7870602bb8e)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.12...v10.4.13)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/core)</summary>

### [`v10.4.13`](https://redirect.github.com/nestjs/nest/compare/v10.4.12...1eba0121a089be0e4880f37503dab7870602bb8e)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.12...v10.4.13)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-express)</summary>

### [`v10.4.13`](https://redirect.github.com/nestjs/nest/compare/v10.4.12...1eba0121a089be0e4880f37503dab7870602bb8e)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.12...v10.4.13)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-socket.io)</summary>

### [`v10.4.13`](https://redirect.github.com/nestjs/nest/compare/v10.4.12...1eba0121a089be0e4880f37503dab7870602bb8e)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.12...v10.4.13)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/testing)</summary>

### [`v10.4.13`](https://redirect.github.com/nestjs/nest/compare/v10.4.12...1eba0121a089be0e4880f37503dab7870602bb8e)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.12...v10.4.13)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/websockets)</summary>

### [`v10.4.13`](https://redirect.github.com/nestjs/nest/compare/v10.4.12...1eba0121a089be0e4880f37503dab7870602bb8e)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.12...v10.4.13)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS40Mi40IiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-03 15:49:17 +00:00
CatsJuice
8ef5804af3 chore(ios): allow debugging webcontent (#8998) 2024-12-03 09:31:25 +00:00
pengx17
0c718921a0 fix(core): open-in-app page crash (#8995)
fix AF-1839

should not render `Link` in open-in-app component
2024-12-03 07:38:28 +00:00
CatsJuice
4b52212eab fix(mobile): avoid explorer node overlapping header when scrolling (#8992) 2024-12-03 07:02:14 +00:00
darkskygit
eb64231899 feat(server): improve logs (#8977) 2024-12-03 06:47:17 +00:00
renovate
27d2735a64 chore: bump up all non-major dependencies (#8954)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@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.701.0` -> `3.703.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.701.0/3.703.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.703.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.703.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.701.0/3.703.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.701.0/3.703.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@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.701.0` -> `3.703.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.701.0/3.703.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.703.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.703.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.701.0/3.703.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.701.0/3.703.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://redirect.github.com/getsentry/sentry-javascript)) | [`8.41.0` -> `8.42.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.41.0/8.42.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/8.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2freact/8.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2freact/8.41.0/8.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/8.41.0/8.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://redirect.github.com/getsentry/sentry-javascript)) | [`8.41.0` -> `8.42.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.41.0/8.42.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/8.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2freact/8.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2freact/8.41.0/8.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/8.41.0/8.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@storybook/addon-essentials](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/essentials) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/essentials)) | [`8.4.5` -> `8.4.6`](https://renovatebot.com/diffs/npm/@storybook%2faddon-essentials/8.4.5/8.4.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-essentials/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-essentials/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-essentials/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-essentials/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/addon-interactions](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/interactions) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions)) | [`8.4.5` -> `8.4.6`](https://renovatebot.com/diffs/npm/@storybook%2faddon-interactions/8.4.5/8.4.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-interactions/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-interactions/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-interactions/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-interactions/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/addon-links](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/links) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/links)) | [`8.4.5` -> `8.4.6`](https://renovatebot.com/diffs/npm/@storybook%2faddon-links/8.4.5/8.4.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-links/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-links/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-links/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-links/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/addon-mdx-gfm](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/gfm) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/gfm)) | [`8.4.5` -> `8.4.6`](https://renovatebot.com/diffs/npm/@storybook%2faddon-mdx-gfm/8.4.5/8.4.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-mdx-gfm/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-mdx-gfm/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-mdx-gfm/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-mdx-gfm/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/react](https://redirect.github.com/storybookjs/storybook/tree/next/code/renderers/react) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/renderers/react)) | [`8.4.5` -> `8.4.6`](https://renovatebot.com/diffs/npm/@storybook%2freact/8.4.5/8.4.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2freact/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2freact/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2freact/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2freact/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/react-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/frameworks/react-vite) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-vite)) | [`8.4.5` -> `8.4.6`](https://renovatebot.com/diffs/npm/@storybook%2freact-vite/8.4.5/8.4.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2freact-vite/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2freact-vite/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2freact-vite/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2freact-vite/8.4.5/8.4.6?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)) | [`20.17.8` -> `20.17.9`](https://renovatebot.com/diffs/npm/@types%2fnode/20.17.8/20.17.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.17.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.17.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.17.8/20.17.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.17.8/20.17.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@vitest/coverage-istanbul](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/coverage-istanbul#readme) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-istanbul)) | [`2.1.6` -> `2.1.8`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-istanbul/2.1.6/2.1.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fcoverage-istanbul/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fcoverage-istanbul/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fcoverage-istanbul/2.1.6/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fcoverage-istanbul/2.1.6/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@vitest/ui](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/ui#readme) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/ui)) | [`2.1.6` -> `2.1.8`](https://renovatebot.com/diffs/npm/@vitest%2fui/2.1.6/2.1.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fui/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fui/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fui/2.1.6/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fui/2.1.6/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [dotenv](https://redirect.github.com/motdotla/dotenv) | [`16.4.5` -> `16.4.6`](https://renovatebot.com/diffs/npm/dotenv/16.4.5/16.4.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/dotenv/16.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/dotenv/16.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/dotenv/16.4.5/16.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dotenv/16.4.5/16.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [dotenv](https://redirect.github.com/motdotla/dotenv) | [`16.4.5` -> `16.4.6`](https://renovatebot.com/diffs/npm/dotenv/16.4.5/16.4.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/dotenv/16.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/dotenv/16.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/dotenv/16.4.5/16.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/dotenv/16.4.5/16.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [graphql-scalars](https://redirect.github.com/Urigo/graphql-scalars) | [`1.23.0` -> `1.24.0`](https://renovatebot.com/diffs/npm/graphql-scalars/1.23.0/1.24.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/graphql-scalars/1.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql-scalars/1.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql-scalars/1.23.0/1.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql-scalars/1.23.0/1.24.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)) | [`8.26.0` -> `8.27.0`](https://renovatebot.com/diffs/npm/html-validate/8.26.0/8.27.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/html-validate/8.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/html-validate/8.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/html-validate/8.26.0/8.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/html-validate/8.26.0/8.27.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [marked](https://marked.js.org) ([source](https://redirect.github.com/markedjs/marked)) | [`15.0.2` -> `15.0.3`](https://renovatebot.com/diffs/npm/marked/15.0.2/15.0.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/marked/15.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/marked/15.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/marked/15.0.2/15.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/marked/15.0.2/15.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [napi](https://redirect.github.com/napi-rs/napi-rs) | `3.0.0-alpha.20` -> `3.0.0-alpha.21` | [![age](https://developer.mend.io/api/mc/badges/age/crate/napi/3.0.0-alpha.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/napi/3.0.0-alpha.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/napi/3.0.0-alpha.20/3.0.0-alpha.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/napi/3.0.0-alpha.20/3.0.0-alpha.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch |
| [napi-derive](https://redirect.github.com/napi-rs/napi-rs) | `3.0.0-alpha.19` -> `3.0.0-alpha.20` | [![age](https://developer.mend.io/api/mc/badges/age/crate/napi-derive/3.0.0-alpha.20?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/napi-derive/3.0.0-alpha.20?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/napi-derive/3.0.0-alpha.19/3.0.0-alpha.20?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/napi-derive/3.0.0-alpha.19/3.0.0-alpha.20?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch |
| [nx](https://nx.dev) ([source](https://redirect.github.com/nrwl/nx/tree/HEAD/packages/nx)) | [`20.1.3` -> `20.1.4`](https://renovatebot.com/diffs/npm/nx/20.1.3/20.1.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nx/20.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nx/20.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nx/20.1.3/20.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nx/20.1.3/20.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [openai](https://redirect.github.com/openai/openai-node) | [`4.73.1` -> `4.74.0`](https://renovatebot.com/diffs/npm/openai/4.73.1/4.74.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/openai/4.74.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/openai/4.74.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/openai/4.73.1/4.74.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/openai/4.73.1/4.74.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [react-day-picker](https://daypicker.dev) ([source](https://redirect.github.com/gpbl/react-day-picker)) | [`9.4.0` -> `9.4.1`](https://renovatebot.com/diffs/npm/react-day-picker/9.4.0/9.4.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-day-picker/9.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-day-picker/9.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-day-picker/9.4.0/9.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-day-picker/9.4.0/9.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [react-i18next](https://redirect.github.com/i18next/react-i18next) | [`15.1.2` -> `15.1.3`](https://renovatebot.com/diffs/npm/react-i18next/15.1.2/15.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-i18next/15.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-i18next/15.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-i18next/15.1.2/15.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-i18next/15.1.2/15.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [react-virtuoso](https://virtuoso.dev/) ([source](https://redirect.github.com/petyosi/react-virtuoso)) | [`4.12.2` -> `4.12.3`](https://renovatebot.com/diffs/npm/react-virtuoso/4.12.2/4.12.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-virtuoso/4.12.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-virtuoso/4.12.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-virtuoso/4.12.2/4.12.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-virtuoso/4.12.2/4.12.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [storybook](https://redirect.github.com/storybookjs/storybook/tree/next/code/lib/cli) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/lib/cli)) | [`8.4.5` -> `8.4.6`](https://renovatebot.com/diffs/npm/storybook/8.4.5/8.4.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/storybook/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/storybook/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/storybook/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/storybook/8.4.5/8.4.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [tinybench](https://redirect.github.com/tinylibs/tinybench) | [`3.0.6` -> `3.0.7`](https://renovatebot.com/diffs/npm/tinybench/3.0.6/3.0.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/tinybench/3.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/tinybench/3.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/tinybench/3.0.6/3.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/tinybench/3.0.6/3.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [typedoc](https://typedoc.org) ([source](https://redirect.github.com/TypeStrong/TypeDoc)) | [`0.27.1` -> `0.27.2`](https://renovatebot.com/diffs/npm/typedoc/0.27.1/0.27.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/typedoc/0.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typedoc/0.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typedoc/0.27.1/0.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typedoc/0.27.1/0.27.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [vite](https://vite.dev) ([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite)) | [`6.0.1` -> `6.0.2`](https://renovatebot.com/diffs/npm/vite/6.0.1/6.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/6.0.1/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/6.0.1/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | resolutions | patch |
| [vitest](https://redirect.github.com/vitest-dev/vitest) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`2.1.6` -> `2.1.8`](https://renovatebot.com/diffs/npm/vitest/2.1.6/2.1.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/2.1.6/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/2.1.6/2.1.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [com.android.tools.build:gradle](https://developer.android.com/studio/build) ([source](https://android.googlesource.com/platform/tools/base)) | `8.7.2` -> `8.7.3` | [![age](https://developer.mend.io/api/mc/badges/age/maven/com.android.tools.build:gradle/8.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.android.tools.build:gradle/8.7.3?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.7.3?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.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |

---

### Release Notes

<details>
<summary>aws/aws-sdk-js-v3 (@&#8203;aws-sdk/client-s3)</summary>

### [`v3.703.0`](https://redirect.github.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#37030-2024-12-02)

[Compare Source](https://redirect.github.com/aws/aws-sdk-js-v3/compare/v3.701.0...v3.703.0)

##### Features

-   **client-s3:** Amazon S3 introduces support for AWS Dedicated Local Zones ([a4b4303](a4b43038cb))

</details>

<details>
<summary>getsentry/sentry-javascript (@&#8203;sentry/react)</summary>

### [`v8.42.0`](https://redirect.github.com/getsentry/sentry-javascript/releases/tag/8.42.0)

[Compare Source](https://redirect.github.com/getsentry/sentry-javascript/compare/8.41.0...8.42.0)

##### Important Changes

-   **feat(react): React Router v7 support (library) ([#&#8203;14513](https://redirect.github.com/getsentry/sentry-javascript/pull/14513))**

    This release adds support for [React Router v7 (library mode)](https://reactrouter.com/home#react-router-as-a-library).
    Check out the docs on how to set up the integration: [Sentry React Router v7 Integration Docs](https://docs.sentry.io/platforms/javascript/guides/react/features/react-router/v7/)

##### Deprecations

-   **feat: Warn about source-map generation ([#&#8203;14533](https://redirect.github.com/getsentry/sentry-javascript/pull/14533))**

    In the next major version of the SDK we will change how source maps are generated when the SDK is added to an application.
    Currently, the implementation varies a lot between different SDKs and can be difficult to understand.
    Moving forward, our goal is to turn on source maps for every framework, unless we detect that they are explicitly turned off.
    Additionally, if we end up enabling source maps, we will emit a log message that we did so.

    With this particular release, we are emitting warnings that source map generation will change in the future and we print instructions on how to prepare for the next major.

-   **feat(nuxt): Deprecate `tracingOptions` in favor of `vueIntegration` ([#&#8203;14530](https://redirect.github.com/getsentry/sentry-javascript/pull/14530))**

    Currently it is possible to configure tracing options in two places in the Sentry Nuxt SDK:

    -   In `Sentry.init()`
    -   Inside `tracingOptions` in `Sentry.init()`

    For tree-shaking purposes and alignment with the Vue SDK, it is now recommended to instead use the newly exported `vueIntegration()` and its `tracingOptions` option to configure tracing options in the Nuxt SDK:

    ```ts
    // sentry.client.config.ts
    import * as Sentry from '@&#8203;sentry/nuxt';

    Sentry.init({
      // ...
      integrations: [
        Sentry.vueIntegration({
          tracingOptions: {
            trackComponents: true,
          },
        }),
      ],
    });
    ```

##### Other Changes

-   feat(browser-utils): Update `web-vitals` to v4.2.4 ([#&#8203;14439](https://redirect.github.com/getsentry/sentry-javascript/pull/14439))
-   feat(nuxt): Expose `vueIntegration` ([#&#8203;14526](https://redirect.github.com/getsentry/sentry-javascript/pull/14526))
-   fix(feedback): Handle css correctly in screenshot mode ([#&#8203;14535](https://redirect.github.com/getsentry/sentry-javascript/pull/14535))

#### Bundle size 📦

| Path                                                             | Size              |
| ---------------------------------------------------------------- | ----------------- |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser)                                                  | 23.1 KB   |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) - with treeshaking flags                         | 21.84 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Tracing)                                  | 35.61 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Tracing, Replay)                          | 72.47 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Tracing, Replay) - with treeshaking flags | 62.96 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Tracing, Replay with Canvas)              | 76.79 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Tracing, Replay, Feedback)                | 89.28 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Feedback)                                 | 39.86 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. sendFeedback)                             | 27.72 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. FeedbackAsync)                            | 32.53 KB  |
| [@&#8203;sentry/react](https://redirect.github.com/sentry/react)                                                    | 25.8 KB   |
| [@&#8203;sentry/react](https://redirect.github.com/sentry/react) (incl. Tracing)                                    | 38.49 KB  |
| [@&#8203;sentry/vue](https://redirect.github.com/sentry/vue)                                                      | 27.25 KB  |
| [@&#8203;sentry/vue](https://redirect.github.com/sentry/vue) (incl. Tracing)                                      | 37.38 KB  |
| [@&#8203;sentry/svelte](https://redirect.github.com/sentry/svelte)                                                   | 23.25 KB  |
| CDN Bundle                                                       | 24.32 KB  |
| CDN Bundle (incl. Tracing)                                       | 37.29 KB  |
| CDN Bundle (incl. Tracing, Replay)                               | 72.15 KB  |
| CDN Bundle (incl. Tracing, Replay, Feedback)                     | 77.49 KB  |
| CDN Bundle - uncompressed                                        | 71.45 KB  |
| CDN Bundle (incl. Tracing) - uncompressed                        | 110.76 KB |
| CDN Bundle (incl. Tracing, Replay) - uncompressed                | 223.83 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed      | 237.05 KB |
| [@&#8203;sentry/nextjs](https://redirect.github.com/sentry/nextjs) (client)                                          | 38.78 KB  |
| [@&#8203;sentry/sveltekit](https://redirect.github.com/sentry/sveltekit) (client)                                       | 36.14 KB  |
| [@&#8203;sentry/node](https://redirect.github.com/sentry/node)                                                     | 135.08 KB |
| [@&#8203;sentry/node](https://redirect.github.com/sentry/node) - without tracing                                   | 97.13 KB  |
| [@&#8203;sentry/aws-serverless](https://redirect.github.com/sentry/aws-serverless)                                           | 109.43 KB |

</details>

<details>
<summary>storybookjs/storybook (@&#8203;storybook/addon-essentials)</summary>

### [`v8.4.6`](https://redirect.github.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#846)

[Compare Source](https://redirect.github.com/storybookjs/storybook/compare/v8.4.5...v8.4.6)

-   Addon Test: Use pathe for better windows support - [#&#8203;29676](https://redirect.github.com/storybookjs/storybook/pull/29676), thanks [@&#8203;yannbf](https://redirect.github.com/yannbf)!
-   Angular: Default to standalone components in Angular v19 - [#&#8203;29677](https://redirect.github.com/storybookjs/storybook/pull/29677), thanks [@&#8203;ingowagner](https://redirect.github.com/ingowagner)!
-   Frameworks: Add Vite 6 support - [#&#8203;29710](https://redirect.github.com/storybookjs/storybook/pull/29710), thanks [@&#8203;yannbf](https://redirect.github.com/yannbf)!
-   Portable stories: Support multiple annotation notations from preview - [#&#8203;29733](https://redirect.github.com/storybookjs/storybook/pull/29733), thanks [@&#8203;yannbf](https://redirect.github.com/yannbf)!
-   React: Upgrade react-docgen-typescript to support Vite 6 - [#&#8203;29724](https://redirect.github.com/storybookjs/storybook/pull/29724), thanks [@&#8203;yannbf](https://redirect.github.com/yannbf)!
-   Svelte: Support `@sveltejs/vite-plugin-svelte` v5 - [#&#8203;29731](https://redirect.github.com/storybookjs/storybook/pull/29731), thanks [@&#8203;JReinhold](https://redirect.github.com/JReinhold)!

</details>

<details>
<summary>vitest-dev/vitest (@&#8203;vitest/coverage-istanbul)</summary>

### [`v2.1.8`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v2.1.8)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v2.1.7...v2.1.8)

#####    🐞 Bug Fixes

-   Support Node 21  -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) [<samp>(92f7a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/92f7a2ad)

#####     [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v2.1.7...v2.1.8)

### [`v2.1.7`](https://redirect.github.com/vitest-dev/vitest/compare/v2.1.6...v2.1.7)

[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v2.1.6...v2.1.7)

</details>

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

### [`v16.4.6`](https://redirect.github.com/motdotla/dotenv/blob/HEAD/CHANGELOG.md#1646-2024-12-02)

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

##### Changed

-   Clean up stale dev dependencies [#&#8203;847](https://redirect.github.com/motdotla/dotenv/pull/847)
-   Various README updates clarifying usage and alternative solutions using [dotenvx](https://redirect.github.com/dotenvx/dotenvx)

</details>

<details>
<summary>Urigo/graphql-scalars (graphql-scalars)</summary>

### [`v1.24.0`](https://redirect.github.com/Urigo/graphql-scalars/blob/HEAD/CHANGELOG.md#1240)

[Compare Source](https://redirect.github.com/Urigo/graphql-scalars/compare/v1.23.0...v1.24.0)

##### Minor Changes

-   [`e5a3910`](e5a39101db)
    Thanks [@&#8203;ifeanyi-ugwu](https://redirect.github.com/ifeanyi-ugwu)! - add GeoJSON scalar

-   [`e5a3910`](e5a39101db)
    Thanks [@&#8203;ifeanyi-ugwu](https://redirect.github.com/ifeanyi-ugwu)! - Add \`CountryName\` scalar

</details>

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

### [`v8.27.0`](https://gitlab.com/html-validate/html-validate/blob/HEAD/CHANGELOG.md#8270-2024-11-30)

[Compare Source](https://gitlab.com/html-validate/html-validate/compare/v8.26.0...v8.27.0)

##### Features

-   **api:** deprecate `Config.init()` ([d4b5987](d4b5987a92))
-   **config:** lazy load transformers ([d82bc57](d82bc57d3d)), closes [#&#8203;194](https://gitlab.com/html-validate/html-validate/issues/194)

</details>

<details>
<summary>markedjs/marked (marked)</summary>

### [`v15.0.3`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.3)

[Compare Source](https://redirect.github.com/markedjs/marked/compare/v15.0.2...v15.0.3)

##### Bug Fixes

-   update punctuation regex syntax to fix babel mistaken transpile ([#&#8203;3547](https://redirect.github.com/markedjs/marked/issues/3547)) ([9b988c4](9b988c47bd))

</details>

<details>
<summary>napi-rs/napi-rs (napi)</summary>

### [`v3.0.0-alpha.21`](https://redirect.github.com/napi-rs/napi-rs/releases/tag/napi%403.0.0-alpha.21)

[Compare Source](https://redirect.github.com/napi-rs/napi-rs/compare/napi@3.0.0-alpha.20...napi@3.0.0-alpha.21)

#### What's Changed

-   feat(napi): allow us to create nest function from closure by [@&#8203;richerfu](https://redirect.github.com/richerfu) in [https://github.com/napi-rs/napi-rs/pull/2360](https://redirect.github.com/napi-rs/napi-rs/pull/2360)
-   feat(napi): implement `ValidateNapiValue` for HashMap with any hasher by [@&#8203;sapphi-red](https://redirect.github.com/sapphi-red) in [https://github.com/napi-rs/napi-rs/pull/2374](https://redirect.github.com/napi-rs/napi-rs/pull/2374)
-   feat(napi): implement `ValidateNapiValue` for HashSet with any hasher by [@&#8203;sapphi-red](https://redirect.github.com/sapphi-red) in [https://github.com/napi-rs/napi-rs/pull/2377](https://redirect.github.com/napi-rs/napi-rs/pull/2377)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@3.0.0-alpha.20...napi@3.0.0-alpha.21

</details>

<details>
<summary>nrwl/nx (nx)</summary>

### [`v20.1.4`](https://redirect.github.com/nrwl/nx/releases/tag/20.1.4)

[Compare Source](https://redirect.github.com/nrwl/nx/compare/20.1.3...20.1.4)

#### 20.1.4 (2024-11-28)

##### 🚀 Features

-   **misc:** replace tutorials with social links in create-nx-workspace ([#&#8203;29085](https://redirect.github.com/nrwl/nx/pull/29085))
-   **nx-dev:** update top-level navbar ([0f330590b7](https://redirect.github.com/nrwl/nx/commit/0f330590b7))

##### 🩹 Fixes

-   **angular:** ngrx-root-store generator check ngModule path ([#&#8203;29068](https://redirect.github.com/nrwl/nx/pull/29068))
-   **core:** don't generate nxCloudId if running nx connect through nx console ([#&#8203;29060](https://redirect.github.com/nrwl/nx/pull/29060))
-   **core:** update to the async version of getting powerpack information ([#&#8203;29088](https://redirect.github.com/nrwl/nx/pull/29088))
-   **misc:** update artifact generator option descriptions and cleanup leftovers ([#&#8203;29077](https://redirect.github.com/nrwl/nx/pull/29077))
-   **module-federation:** use 'hoisted' runtime for node to prevent issues with eager sharing ([#&#8203;29104](https://redirect.github.com/nrwl/nx/pull/29104))
-   **nest:** Fix generators (guard, interceptor etc...) path to not duplicate when provided ([#&#8203;29084](https://redirect.github.com/nrwl/nx/pull/29084))
-   **nest:** update project config to enable artifacts to be built as dev ([#&#8203;29110](https://redirect.github.com/nrwl/nx/pull/29110))
-   **nextjs:** ensure next apps config is correctly checked when using jest ([#&#8203;29066](https://redirect.github.com/nrwl/nx/pull/29066))
-   **nextjs:** Add support for next.config.ts for executors ([#&#8203;29071](https://redirect.github.com/nrwl/nx/pull/29071))

##### ❤️ Thank You

-   Colum Ferry [@&#8203;Coly010](https://redirect.github.com/Coly010)
-   Jason Jean [@&#8203;FrozenPandaz](https://redirect.github.com/FrozenPandaz)
-   Juri [@&#8203;juristr](https://redirect.github.com/juristr)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://redirect.github.com/leosvelperez)
-   MaxKless [@&#8203;MaxKless](https://redirect.github.com/MaxKless)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://redirect.github.com/ndcunningham)

</details>

<details>
<summary>openai/openai-node (openai)</summary>

### [`v4.74.0`](https://redirect.github.com/openai/openai-node/blob/HEAD/CHANGELOG.md#4740-2024-12-02)

[Compare Source](https://redirect.github.com/openai/openai-node/compare/v4.73.1...v4.74.0)

Full Changelog: [v4.73.1...v4.74.0](https://redirect.github.com/openai/openai-node/compare/v4.73.1...v4.74.0)

##### Features

-   **internal:** make git install file structure match npm ([#&#8203;1204](https://redirect.github.com/openai/openai-node/issues/1204)) ([e7c4c6d](e7c4c6d23a))

</details>

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

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

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

This release improves support for screen readers and fixes a VoiceOver issue when navigating the calendar.

#### What's Changed

-   fix(a11y): improve screen reader and VoiceOver support by [@&#8203;gpbl](https://redirect.github.com/gpbl) in [https://github.com/gpbl/react-day-picker/pull/2609](https://redirect.github.com/gpbl/react-day-picker/pull/2609)
-   feat(a11y): added `role` and `aria-label` props by [@&#8203;gpbl](https://redirect.github.com/gpbl) in [https://github.com/gpbl/react-day-picker/pull/2609](https://redirect.github.com/gpbl/react-day-picker/pull/2609)
-   chore(style): remove unused CSS variable by [@&#8203;gpbl](https://redirect.github.com/gpbl) in [https://github.com/gpbl/react-day-picker/pull/2610](https://redirect.github.com/gpbl/react-day-picker/pull/2610)
-   chore: use callbacks for dropdown event handlers by [@&#8203;gpbl](https://redirect.github.com/gpbl) in [https://github.com/gpbl/react-day-picker/pull/2602](https://redirect.github.com/gpbl/react-day-picker/pull/2602)

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

</details>

<details>
<summary>i18next/react-i18next (react-i18next)</summary>

### [`v15.1.3`](https://redirect.github.com/i18next/react-i18next/blob/HEAD/CHANGELOG.md#1513)

[Compare Source](https://redirect.github.com/i18next/react-i18next/compare/v15.1.2...v15.1.3)

-   fix: Self-closing REACT components in translation strings should not attempt to replace the component's children [1815](https://redirect.github.com/i18next/react-i18next/issues/1815) [1816](https://redirect.github.com/i18next/react-i18next/pull/1816)

</details>

<details>
<summary>petyosi/react-virtuoso (react-virtuoso)</summary>

### [`v4.12.3`](https://redirect.github.com/petyosi/react-virtuoso/releases/tag/v4.12.3)

[Compare Source](https://redirect.github.com/petyosi/react-virtuoso/compare/v4.12.2...v4.12.3)

##### Bug Fixes

-   **gridSystem.ts:** call onEndReached when the data is less than cont… ([#&#8203;1166](https://redirect.github.com/petyosi/react-virtuoso/issues/1166)) ([7a80ea2](7a80ea20b1))

</details>

<details>
<summary>tinylibs/tinybench (tinybench)</summary>

### [`v3.0.7`](https://redirect.github.com/tinylibs/tinybench/releases/tag/v3.0.7)

[Compare Source](https://redirect.github.com/tinylibs/tinybench/compare/v3.0.6...v3.0.7)

#####    🐞 Bug Fixes

-   Do not allow task override by name  -  by [@&#8203;jerome-benoit](https://redirect.github.com/jerome-benoit) in [https://github.com/tinylibs/tinybench/issues/197](https://redirect.github.com/tinylibs/tinybench/issues/197) [<samp>(b40fe)</samp>](https://redirect.github.com/tinylibs/tinybench/commit/b40fedb)

#####     [View changes on GitHub](https://redirect.github.com/tinylibs/tinybench/compare/v3.0.6...v3.0.7)

</details>

<details>
<summary>TypeStrong/TypeDoc (typedoc)</summary>

### [`v0.27.2`](https://redirect.github.com/TypeStrong/TypeDoc/blob/HEAD/CHANGELOG.md#v0272-2024-11-29)

[Compare Source](https://redirect.github.com/TypeStrong/TypeDoc/compare/v0.27.1...v0.27.2)

##### Bug Fixes

-   Fix crash with TypeScript 5.5.x, [#&#8203;2789](https://redirect.github.com/TypeStrong/TypeDoc/issues/2789).

</details>

<details>
<summary>vitejs/vite (vite)</summary>

### [`v6.0.2`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small602-2024-12-02-small)

[Compare Source](https://redirect.github.com/vitejs/vite/compare/v6.0.1...v6.0.2)

-   chore: run typecheck in unit tests ([#&#8203;18858](https://redirect.github.com/vitejs/vite/issues/18858)) ([49f20bb](49f20bb777)), closes [#&#8203;18858](https://redirect.github.com/vitejs/vite/issues/18858)
-   chore: update broken links in changelog ([#&#8203;18802](https://redirect.github.com/vitejs/vite/issues/18802)) ([cb754f8](cb754f8acc)), closes [#&#8203;18802](https://redirect.github.com/vitejs/vite/issues/18802)
-   chore: update broken links in changelog ([#&#8203;18804](https://redirect.github.com/vitejs/vite/issues/18804)) ([47ec49f](47ec49ffa1)), closes [#&#8203;18804](https://redirect.github.com/vitejs/vite/issues/18804)
-   fix: don't store temporary vite config file in `node_modules` if deno ([#&#8203;18823](https://redirect.github.com/vitejs/vite/issues/18823)) ([a20267b](a20267bb93)), closes [#&#8203;18823](https://redirect.github.com/vitejs/vite/issues/18823)
-   fix(css): referencing aliased svg asset with lightningcss enabled errored ([#&#8203;18819](https://redirect.github.com/vitejs/vite/issues/18819)) ([ae68958](ae68958691)), closes [#&#8203;18819](https://redirect.github.com/vitejs/vite/issues/18819)
-   fix(manifest): use `style.css` as a key for the style file for `cssCodesplit: false` ([#&#8203;18820](https://redirect.github.com/vitejs/vite/issues/18820)) ([ec51115](ec51115255)), closes [#&#8203;18820](https://redirect.github.com/vitejs/vite/issues/18820)
-   fix(optimizer): resolve all promises when cancelled ([#&#8203;18826](https://redirect.github.com/vitejs/vite/issues/18826)) ([d6e6194](d6e6194706)), closes [#&#8203;18826](https://redirect.github.com/vitejs/vite/issues/18826)
-   fix(resolve): don't set builtinModules to `external` by default ([#&#8203;18821](https://redirect.github.com/vitejs/vite/issues/18821)) ([2250ffa](2250ffac62)), closes [#&#8203;18821](https://redirect.github.com/vitejs/vite/issues/18821)
-   fix(ssr): set `ssr.target: 'webworker'` defaults as fallback ([#&#8203;18827](https://redirect.github.com/vitejs/vite/issues/18827)) ([b39e696](b39e69638b)), closes [#&#8203;18827](https://redirect.github.com/vitejs/vite/issues/18827)
-   feat(css): format lightningcss error ([#&#8203;18818](https://redirect.github.com/vitejs/vite/issues/18818)) ([dac7992](dac7992e87)), closes [#&#8203;18818](https://redirect.github.com/vitejs/vite/issues/18818)
-   refactor: make properties of ResolvedServerOptions and ResolvedPreviewOptions required ([#&#8203;18796](https://redirect.github.com/vitejs/vite/issues/18796)) ([51a5569](51a5569e66)), closes [#&#8203;18796](https://redirect.github.com/vitejs/vite/issues/18796)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuNDIuNCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-03 06:31:13 +00:00
renovate
c362275f06 chore: bump up @blocksuite/icons version to v2.1.73 (#8980)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/icons](https://redirect.github.com/toeverything/icons) | [`2.1.72` -> `2.1.73`](https://renovatebot.com/diffs/npm/@blocksuite%2ficons/2.1.72/2.1.73) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2ficons/2.1.73?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2ficons/2.1.73?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2ficons/2.1.72/2.1.73?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2ficons/2.1.72/2.1.73?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/icons (@&#8203;blocksuite/icons)</summary>

### [`v2.1.73`](6911f7ed84...ddeb030e72)

[Compare Source](6911f7ed84...ddeb030e72)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-03 06:14:41 +00:00
EYHN
8963826463 feat(core): desktop multiple server support (#8979) 2024-12-03 05:51:09 +00:00
pengx17
af81c95b85 fix(mobile): workaround for tag modal blink (#8985)
workaround for fix AF-1822
2024-12-03 02:08:32 +00:00
pengx17
671885d510 fix(mobile): property input field keyboard mode (#8982) 2024-12-03 01:52:00 +00:00
ZHAO Jin-Xiang
6873a947fa chore: add electronZipDir env which helps to offline build (#8983) 2024-12-02 21:55:45 +08:00
pengx17
31bab2507e feat: enhance markdown preview for backlinks (#8956)
fix AF-1770
fix AF-1771

---

fix: doc link middlewares
feat: markdown renderer
feat: allow multiple backlink for a single doc
feat: showing correct doc ref link
feat: trim long para & ident lists
feat: list indentition fix
feat: database/latext handling
feat: other block types handling
fix: lint
2024-12-02 10:29:44 +00:00
CatsJuice
b8467a91b8 fix(mobile): swipe right maybe open menu (#8981) 2024-12-02 09:40:33 +00:00
CatsJuice
4744896031 feat(mobile): a basic swipeable dialog for setting (#8923)
![CleanShot 2024-12-02 at 15.42.42.gif](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/LakojjjzZNf6ogjOVwKE/0a6e5700-dd25-4f36-824a-434603e01379.gif)
2024-12-02 08:42:02 +00:00
CatsJuice
9b4cd83a07 feat(mobile): show doc title on title bar when scroll down (#8976) 2024-12-02 06:00:31 +00:00
EYHN
84210dd197 fix(infra): fix fractional indexing edge cases (#8978) 2024-12-02 05:31:07 +00:00
EYHN
cee5d02f71 feat(core): add markdown preview for backlinks (#8883) 2024-12-02 03:42:07 +00:00
CatsJuice
11b453f4d8 feat(mobile): swipe to open menu for explorer (#8953)
close AF-1803

- bump theme
- extract `SwipeHelper` and add `speed`, `direction` detection support
- new mobile `SwipeMenu` component
- integrate `SwipeMenu` to open a menu in Explorer
- New `Haptics` module for mobile, implemented in `ios` and `mobile`(`navigator.vibrate()`)

![CleanShot 2024-11-28 at 12.25.14.gif](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/LakojjjzZNf6ogjOVwKE/cba36660-f38a-473b-b85c-33540a406835.gif)
2024-12-02 03:27:01 +00:00
CatsJuice
b600f2b0a2 fix(mobile): adjust body padding-bottom for app tab (#8944) 2024-12-02 03:11:09 +00:00
CatsJuice
6a71b28a61 feat(mobile): replace search with create in app tab (#8934)
- Remove search on AppTab, replaced with `create doc`
- Always show AppTab for editor page
- Extract `NavigationBack` from `PageHeader`
2024-12-02 02:55:04 +00:00
CatsJuice
5e92d6cfe9 fix(mobile): prevent text selection on webkit (#8967)
close AF-1804
2024-12-02 02:39:01 +00:00
CatsJuice
476ed0ef56 chore(mobile): update explorer add item icon (#8969) 2024-12-02 02:21:59 +00:00
CatsJuice
372dbf5ec8 feat(mobile): move journal date picker into page header (#8968) 2024-12-02 02:05:05 +00:00
renovate
1c9bd204cd chore: bump up @blocksuite/icons version to v2.1.72 (#8970)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/icons](https://redirect.github.com/toeverything/icons) | [`2.1.71` -> `2.1.72`](https://renovatebot.com/diffs/npm/@blocksuite%2ficons/2.1.71/2.1.72) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2ficons/2.1.72?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2ficons/2.1.72?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2ficons/2.1.71/2.1.72?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2ficons/2.1.71/2.1.72?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/icons (@&#8203;blocksuite/icons)</summary>

### [`v2.1.72`](c3f744f102...6911f7ed84)

[Compare Source](c3f744f102...6911f7ed84)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-02 01:47:02 +00:00
renovate
d9dd07d113 chore: bump up oxlint version to v0.14.0 (#8889)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [oxlint](https://oxc.rs) ([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxlint)) | [`0.13.2` -> `0.14.0`](https://renovatebot.com/diffs/npm/oxlint/0.13.2/0.14.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/oxlint/0.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxlint/0.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxlint/0.13.2/0.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxlint/0.13.2/0.14.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>oxc-project/oxc (oxlint)</summary>

### [`v0.14.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/npm/oxlint/CHANGELOG.md#0140---2024-12-01)

[Compare Source](https://redirect.github.com/oxc-project/oxc/compare/oxlint_v0.13.2...oxlint_v0.14.0)

##### Features

-   [`32f860d`](https://redirect.github.com/oxc-project/oxc/commit/32f860d) linter: Add support for ignorePatterns property within config file ([#&#8203;7092](https://redirect.github.com/oxc-project/oxc/issues/7092)) (Nicholas Rayburn)

##### Documentation

-   [`a6b0100`](https://redirect.github.com/oxc-project/oxc/commit/a6b0100) linter: Fix config example headings ([#&#8203;7562](https://redirect.github.com/oxc-project/oxc/issues/7562)) (Boshen)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-12-02 01:29:31 +00:00
renovate
c53c0939fa chore: bump up nestjs to v10.4.12 (#8972)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/common](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common)) | [`10.4.11` -> `10.4.12`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/10.4.11/10.4.12) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/core](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core)) | [`10.4.11` -> `10.4.12`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/10.4.11/10.4.12) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-express](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express)) | [`10.4.11` -> `10.4.12`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/10.4.11/10.4.12) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-express/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-express/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-express/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-express/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-socket.io](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io)) | [`10.4.11` -> `10.4.12`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-socket.io/10.4.11/10.4.12) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-socket.io/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-socket.io/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-socket.io/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-socket.io/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/testing](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing)) | [`10.4.11` -> `10.4.12`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/10.4.11/10.4.12) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/websockets](https://redirect.github.com/nestjs/nest) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/websockets)) | [`10.4.11` -> `10.4.12`](https://renovatebot.com/diffs/npm/@nestjs%2fwebsockets/10.4.11/10.4.12) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fwebsockets/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fwebsockets/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fwebsockets/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fwebsockets/10.4.11/10.4.12?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nestjs/nest (@&#8203;nestjs/common)</summary>

### [`v10.4.12`](https://redirect.github.com/nestjs/nest/compare/v10.4.11...cf8d27c2f3fb1731785ad7a2ce0447889435f6a3)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.11...v10.4.12)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/core)</summary>

### [`v10.4.12`](https://redirect.github.com/nestjs/nest/compare/v10.4.11...cf8d27c2f3fb1731785ad7a2ce0447889435f6a3)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.11...v10.4.12)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-express)</summary>

### [`v10.4.12`](https://redirect.github.com/nestjs/nest/compare/v10.4.11...cf8d27c2f3fb1731785ad7a2ce0447889435f6a3)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.11...v10.4.12)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-socket.io)</summary>

### [`v10.4.12`](https://redirect.github.com/nestjs/nest/releases/tag/v10.4.12)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.11...v10.4.12)

##### v10.4.12 (2024-11-29)

##### Bug fixes

-   `common`
    -   [#&#8203;14241](https://redirect.github.com/nestjs/nest/pull/14241) fix(common): enforce string type in validationpipe ([@&#8203;LhonRafaat](https://redirect.github.com/LhonRafaat))

##### Dependencies

-   Other
    -   [#&#8203;14243](https://redirect.github.com/nestjs/nest/pull/14243) chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.17.9 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14240](https://redirect.github.com/nestjs/nest/pull/14240) chore(deps): update dependency [@&#8203;types/multer](https://redirect.github.com/types/multer) to v1.4.12 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14239](https://redirect.github.com/nestjs/nest/pull/14239) chore(deps): update dependency [@&#8203;types/chai](https://redirect.github.com/types/chai) to v4.3.20 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14237](https://redirect.github.com/nestjs/nest/pull/14237) chore(deps): update confluentinc/cp-zookeeper docker tag to v7.7.2 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14236](https://redirect.github.com/nestjs/nest/pull/14236) chore(deps): update confluentinc/cp-kafka docker tag to v7.7.2 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;12253](https://redirect.github.com/nestjs/nest/pull/12253) fix(deps): update apollo graphql packages ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14235](https://redirect.github.com/nestjs/nest/pull/14235) chore(deps-dev): bump [@&#8203;commitlint/config-angular](https://redirect.github.com/commitlint/config-angular) from 19.5.0 to 19.6.0 ([@&#8203;dependabot\[bot\]](https://redirect.github.com/apps/dependabot))
    -   [#&#8203;14233](https://redirect.github.com/nestjs/nest/pull/14233) chore(deps): update nest monorepo ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14232](https://redirect.github.com/nestjs/nest/pull/14232) fix(deps): update dependency path-to-regexp to v3.3.0 \[security] ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14229](https://redirect.github.com/nestjs/nest/pull/14229) chore(deps): update mongo docker tag to v8 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14228](https://redirect.github.com/nestjs/nest/pull/14228) chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v22.10.0 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14227](https://redirect.github.com/nestjs/nest/pull/14227) fix(deps): update nest-graphql monorepo to v12.2.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14224](https://redirect.github.com/nestjs/nest/pull/14224) fix(deps): update dependency sequelize to v6.37.5 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14230](https://redirect.github.com/nestjs/nest/pull/14230) chore(deps): update mysql docker tag to v9 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
    -   [#&#8203;14231](https://redirect.github.com/nestjs/nest/pull/14231) fix(deps): update dependency [@&#8203;nestjs/swagger](https://redirect.github.com/nestjs/swagger) to v8 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   `common`, `core`, `microservices`, `platform-express`, `platform-fastify`, `platform-socket.io`, `platform-ws`, `testing`, `websockets`
    -   [#&#8203;14226](https://redirect.github.com/nestjs/nest/pull/14226) fix(deps): update dependency tslib to v2.8.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   `platform-socket.io`
    -   [#&#8203;14225](https://redirect.github.com/nestjs/nest/pull/14225) fix(deps): update dependency socket.io to v4.8.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))

##### Committers: 1

-   Lhon ([@&#8203;LhonRafaat](https://redirect.github.com/LhonRafaat))

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/testing)</summary>

### [`v10.4.12`](https://redirect.github.com/nestjs/nest/compare/v10.4.11...cf8d27c2f3fb1731785ad7a2ce0447889435f6a3)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.11...v10.4.12)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-30 02:35:54 +00:00
renovate
b60f24626c chore: bump up rustc version to v1.83.0 (#8962)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rustc](https://redirect.github.com/rust-lang/rust) | minor | `1.82.0` -> `1.83.0` |

---

### Release Notes

<details>
<summary>rust-lang/rust (rustc)</summary>

### [`v1.83.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1830-2024-11-28)

[Compare Source](https://redirect.github.com/rust-lang/rust/compare/1.82.0...1.83.0)

\==========================

<a id="1.83.0-Language"></a>

## Language

-   [Stabilize `&mut`, `*mut`, `&Cell`, and `*const Cell` in const.](https://redirect.github.com/rust-lang/rust/pull/129195)
-   [Allow creating references to statics in `const` initializers.](https://redirect.github.com/rust-lang/rust/pull/129759)
-   [Implement raw lifetimes and labels (`'r#ident`).](https://redirect.github.com/rust-lang/rust/pull/126452)
-   [Define behavior when atomic and non-atomic reads race.](https://redirect.github.com/rust-lang/rust/pull/128778)
-   [Non-exhaustive structs may now be empty.](https://redirect.github.com/rust-lang/rust/pull/128934)
-   [Disallow implicit coercions from places of type `!`](https://redirect.github.com/rust-lang/rust/pull/129392)
-   [`const extern` functions can now be defined for other calling conventions.](https://redirect.github.com/rust-lang/rust/pull/129753)
-   [Stabilize `expr_2021` macro fragment specifier in all editions.](https://redirect.github.com/rust-lang/rust/pull/129972)
-   [The `non_local_definitions` lint now fires on less code and warns by default.](https://redirect.github.com/rust-lang/rust/pull/127117)

<a id="1.83.0-Compiler"></a>

## Compiler

-   [Deprecate unsound `-Csoft-float` flag.](https://redirect.github.com/rust-lang/rust/pull/129897)
-   Add many new tier 3 targets:
    -   [`aarch64_unknown_nto_qnx700`](https://redirect.github.com/rust-lang/rust/pull/127897)
    -   [`arm64e-apple-tvos`](https://redirect.github.com/rust-lang/rust/pull/130614)
    -   [`armv7-rtems-eabihf`](https://redirect.github.com/rust-lang/rust/pull/127021)
    -   [`loongarch64-unknown-linux-ohos`](https://redirect.github.com/rust-lang/rust/pull/130750)
    -   [`riscv32-wrs-vxworks` and `riscv64-wrs-vxworks`](https://redirect.github.com/rust-lang/rust/pull/130549)
    -   [`riscv32{e|em|emc}-unknown-none-elf`](https://redirect.github.com/rust-lang/rust/pull/130555)
    -   [`x86_64-unknown-hurd-gnu`](https://redirect.github.com/rust-lang/rust/pull/128345)
    -   [`x86_64-unknown-trusty`](https://redirect.github.com/rust-lang/rust/pull/130453)

Refer to Rust's \[platform support page]\[platform-support-doc]
for more information on Rust's tiered platform support.

<a id="1.83.0-Libraries"></a>

## Libraries

-   [Implement `PartialEq` for `ExitCode`.](https://redirect.github.com/rust-lang/rust/pull/127633)
-   [Document that `catch_unwind` can deal with foreign exceptions without UB, although the exact behavior is unspecified.](https://redirect.github.com/rust-lang/rust/pull/128321)
-   [Implement `Default` for `HashMap`/`HashSet` iterators that don't already have it.](https://redirect.github.com/rust-lang/rust/pull/128711)
-   [Bump Unicode to version 16.0.0.](https://redirect.github.com/rust-lang/rust/pull/130183)
-   [Change documentation of `ptr::add`/`sub` to not claim equivalence with `offset`.](https://redirect.github.com/rust-lang/rust/pull/130229).

<a id="1.83.0-Stabilized-APIs"></a>

## Stabilized APIs

-   [`BufRead::skip_until`](https://doc.rust-lang.org/stable/std/io/trait.BufRead.html#method.skip_until)
-   [`ControlFlow::break_value`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.break_value)
-   [`ControlFlow::continue_value`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.continue_value)
-   [`ControlFlow::map_break`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.map_break)
-   [`ControlFlow::map_continue`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.map_continue)
-   [`DebugList::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugList.html#method.finish_non_exhaustive)
-   [`DebugMap::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugMap.html#method.finish_non_exhaustive)
-   [`DebugSet::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugSet.html#method.finish_non_exhaustive)
-   [`DebugTuple::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugTuple.html#method.finish_non_exhaustive)
-   [`ErrorKind::ArgumentListTooLong`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ArgumentListTooLong)
-   [`ErrorKind::Deadlock`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.Deadlock)
-   [`ErrorKind::DirectoryNotEmpty`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.DirectoryNotEmpty)
-   [`ErrorKind::ExecutableFileBusy`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ExecutableFileBusy)
-   [`ErrorKind::FileTooLarge`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.FileTooLarge)
-   [`ErrorKind::HostUnreachable`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.HostUnreachable)
-   [`ErrorKind::IsADirectory`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.IsADirectory)
-   [`ErrorKind::NetworkDown`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NetworkDown)
-   [`ErrorKind::NetworkUnreachable`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NetworkUnreachable)
-   [`ErrorKind::NotADirectory`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NotADirectory)
-   [`ErrorKind::NotSeekable`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NotSeekable)
-   [`ErrorKind::ReadOnlyFilesystem`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ReadOnlyFilesystem)
-   [`ErrorKind::ResourceBusy`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ResourceBusy)
-   [`ErrorKind::StaleNetworkFileHandle`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.StaleNetworkFileHandle)
-   [`ErrorKind::StorageFull`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.StorageFull)
-   [`ErrorKind::TooManyLinks`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.TooManyLinks)
-   [`Option::get_or_insert_default`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.get_or_insert_default)
-   [`Waker::data`](https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.data)
-   [`Waker::new`](https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.new)
-   [`Waker::vtable`](https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.vtable)
-   [`char::MIN`](https://doc.rust-lang.org/stable/core/primitive.char.html#associatedconstant.MIN)
-   [`hash_map::Entry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/hash_map/enum.Entry.html#method.insert_entry)
-   [`hash_map::VacantEntry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/hash_map/struct.VacantEntry.html#method.insert_entry)

These APIs are now stable in const contexts:

-   [`Cell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.Cell.html#method.into_inner)
-   [`Duration::as_secs_f32`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.as_secs_f32)
-   [`Duration::as_secs_f64`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.as_secs_f64)
-   [`Duration::div_duration_f32`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.div_duration_f32)
-   [`Duration::div_duration_f64`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.div_duration_f64)
-   [`MaybeUninit::as_mut_ptr`](https://doc.rust-lang.org/stable/core/mem/union.MaybeUninit.html#method.as_mut_ptr)
-   [`NonNull::as_mut`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.as_mut)
-   [`NonNull::copy_from`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_from)
-   [`NonNull::copy_from_nonoverlapping`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_from_nonoverlapping)
-   [`NonNull::copy_to`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_to)
-   [`NonNull::copy_to_nonoverlapping`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_to_nonoverlapping)
-   [`NonNull::slice_from_raw_parts`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.slice_from_raw_parts)
-   [`NonNull::write`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write)
-   [`NonNull::write_bytes`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write_bytes)
-   [`NonNull::write_unaligned`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write_unaligned)
-   [`OnceCell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.OnceCell.html#method.into_inner)
-   [`Option::as_mut`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.as_mut)
-   [`Option::expect`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.expect)
-   [`Option::replace`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.replace)
-   [`Option::take`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.take)
-   [`Option::unwrap`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.unwrap)
-   [`Option::unwrap_unchecked`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.unwrap_unchecked)
-   [`Option::<&_>::copied`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.copied)
-   [`Option::<&mut _>::copied`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.copied-1)
-   [`Option::<Option<_>>::flatten`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.flatten)
-   [`Option::<Result<_, _>>::transpose`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.transpose)
-   [`RefCell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.RefCell.html#method.into_inner)
-   [`Result::as_mut`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.as_mut)
-   [`Result::<&_, _>::copied`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.copied)
-   [`Result::<&mut _, _>::copied`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.copied-1)
-   [`Result::<Option<_>, _>::transpose`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.transpose)
-   [`UnsafeCell::get_mut`](https://doc.rust-lang.org/stable/core/cell/struct.UnsafeCell.html#method.get_mut)
-   [`UnsafeCell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.UnsafeCell.html#method.into_inner)
-   [`array::from_mut`](https://doc.rust-lang.org/stable/core/array/fn.from_mut.html)
-   [`char::encode_utf8`](https://doc.rust-lang.org/stable/core/primitive.char.html#method.encode_utf8)
-   [`{float}::classify`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.classify)
-   [`{float}::is_finite`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_finite)
-   [`{float}::is_infinite`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_infinite)
-   [`{float}::is_nan`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_nan)
-   [`{float}::is_normal`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_normal)
-   [`{float}::is_sign_negative`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_sign_negative)
-   [`{float}::is_sign_positive`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_sign_positive)
-   [`{float}::is_subnormal`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_subnormal)
-   [`{float}::from_bits`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_bits)
-   [`{float}::from_be_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_be_bytes)
-   [`{float}::from_le_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_le_bytes)
-   [`{float}::from_ne_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_ne_bytes)
-   [`{float}::to_bits`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_bits)
-   [`{float}::to_be_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_be_bytes)
-   [`{float}::to_le_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_le_bytes)
-   [`{float}::to_ne_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_ne_bytes)
-   [`mem::replace`](https://doc.rust-lang.org/stable/core/mem/fn.replace.html)
-   [`ptr::replace`](https://doc.rust-lang.org/stable/core/ptr/fn.replace.html)
-   [`ptr::slice_from_raw_parts_mut`](https://doc.rust-lang.org/stable/core/ptr/fn.slice_from_raw_parts_mut.html)
-   [`ptr::write`](https://doc.rust-lang.org/stable/core/ptr/fn.write.html)
-   [`ptr::write_unaligned`](https://doc.rust-lang.org/stable/core/ptr/fn.write_unaligned.html)
-   [`<*const _>::copy_to`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to)
-   [`<*const _>::copy_to_nonoverlapping`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to_nonoverlapping)
-   [`<*mut _>::copy_from`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_from)
-   [`<*mut _>::copy_from_nonoverlapping`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_from_nonoverlapping)
-   [`<*mut _>::copy_to`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to-1)
-   [`<*mut _>::copy_to_nonoverlapping`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to_nonoverlapping-1)
-   [`<*mut _>::write`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write)
-   [`<*mut _>::write_bytes`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write_bytes)
-   [`<*mut _>::write_unaligned`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write_unaligned)
-   [`slice::from_mut`](https://doc.rust-lang.org/stable/core/slice/fn.from_mut.html)
-   [`slice::from_raw_parts_mut`](https://doc.rust-lang.org/stable/core/slice/fn.from_raw_parts_mut.html)
-   [`<[_]>::first_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.first_mut)
-   [`<[_]>::last_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.last_mut)
-   [`<[_]>::first_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.first_chunk_mut)
-   [`<[_]>::last_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.last_chunk_mut)
-   [`<[_]>::split_at_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut)
-   [`<[_]>::split_at_mut_checked`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut_checked)
-   [`<[_]>::split_at_mut_unchecked`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut_unchecked)
-   [`<[_]>::split_first_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_first_mut)
-   [`<[_]>::split_last_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_last_mut)
-   [`<[_]>::split_first_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_first_chunk_mut)
-   [`<[_]>::split_last_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_last_chunk_mut)
-   [`str::as_bytes_mut`](https://doc.rust-lang.org/stable/core/primitive.str.html#method.as_bytes_mut)
-   [`str::as_mut_ptr`](https://doc.rust-lang.org/stable/core/primitive.str.html#method.as_mut_ptr)
-   [`str::from_utf8_unchecked_mut`](https://doc.rust-lang.org/stable/core/str/fn.from_utf8\_unchecked_mut.html)

<a id="1.83.0-Cargo"></a>

## Cargo

-   [Introduced a new `CARGO_MANIFEST_PATH` environment variable, similar to `CARGO_MANIFEST_DIR` but pointing directly to the manifest file.](https://redirect.github.com/rust-lang/cargo/pull/14404/)
-   [Added `package.autolib` to the manifest, allowing `[lib]` auto-discovery to be disabled.](https://redirect.github.com/rust-lang/cargo/pull/14591/)
-   [Declare support level for each crate in Cargo's Charter / crate docs.](https://redirect.github.com/rust-lang/cargo/pull/14600/)
-   [Declare new Intentional Artifacts as 'small' changes.](https://redirect.github.com/rust-lang/cargo/pull/14599/)

<a id="1.83-Rustdoc"></a>

## Rustdoc

-   [The sidebar / hamburger menu table of contents now includes the `# headers` from the main item's doc comment](https://redirect.github.com/rust-lang/rust/pull/120736). This is similar to a third-party feature provided by the rustdoc-search-enhancements browser extension.

<a id="1.83.0-Compatibility-Notes"></a>

## Compatibility Notes

-   [Warn against function pointers using unsupported ABI strings.](https://redirect.github.com/rust-lang/rust/pull/128784)
-   [Check well-formedness of the source type's signature in fn pointer casts.](https://redirect.github.com/rust-lang/rust/pull/129021) This partly closes a soundness hole that comes when casting a function item to function pointer
-   [Use equality instead of subtyping when resolving type dependent paths.](https://redirect.github.com/rust-lang/rust/pull/129073)
-   Linking on macOS now correctly includes Rust's default deployment target. Due to a linker bug, you might have to pass `MACOSX_DEPLOYMENT_TARGET` or fix your `#[link]` attributes to point to the correct frameworks. See [#&#8203;129369](https://redirect.github.com/rust-lang/rust/pull/129369).
-   [Rust will now correctly raise an error for `repr(Rust)` written on non-`struct`/`enum`/`union` items, since it previous did not have any effect.](https://redirect.github.com/rust-lang/rust/pull/129422)
-   The future incompatibility lint `deprecated_cfg_attr_crate_type_name` [has been made into a hard error](https://redirect.github.com/rust-lang/rust/pull/129670). It was used to deny usage of `#![crate_type]` and `#![crate_name]` attributes in `#![cfg_attr]`, which required a hack in the compiler to be able to change the used crate type and crate name after cfg expansion.
    Users can use `--crate-type` instead of `#![cfg_attr(..., crate_type = "...")]` and `--crate-name` instead of `#![cfg_attr(..., crate_name = "...")]` when running `rustc`/`cargo rustc` on the command line.
    Use of those two attributes outside of `#![cfg_attr]` continue to be fully supported.
-   Until now, paths into the sysroot were always prefixed with `/rustc/$hash` in diagnostics, codegen, backtrace, e.g.

        thread 'main' panicked at 'hello world', map-panic.rs:2:50
        stack backtrace:
           0: std::panicking::begin_panic
                     at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:616:12
           1: map_panic::main::{{closure}}
                     at ./map-panic.rs:2:50
           2: core::option::Option<T>::map
                     at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/option.rs:929:29
           3: map_panic::main
                     at ./map-panic.rs:2:30
           4: core::ops::function::FnOnce::call_once
                     at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
        note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

    [RFC 3127 said](https://rust-lang.github.io/rfcs/3127-trim-paths.html#changing-handling-of-sysroot-path-in-rustc)

    > We want to change this behaviour such that, when `rust-src` source files can be discovered, the virtual path is discarded and therefore the local path will be embedded, unless there is a `--remap-path-prefix` that causes this local path to be remapped in the usual way.

    [#&#8203;129687](https://redirect.github.com/rust-lang/rust/pull/129687) implements this behaviour, when `rust-src` is present at compile time, `rustc` replaces `/rustc/$hash` with a real path into the local `rust-src` component with best effort.
    To sanitize this, users must explicitly supply `--remap-path-prefix=<path to rust-src>=foo` or not have the `rust-src` component installed.
-   The allow-by-default `missing_docs` lint used to disable itself when invoked through `rustc --test`/`cargo test`, resulting in `#[expect(missing_docs)]` emitting false positives due to the expectation being wrongly unfulfilled. This behavior [has now been removed](https://redirect.github.com/rust-lang/rust/pull/130025), which allows `#[expect(missing_docs)]` to be fulfilled in all scenarios, but will also report new `missing_docs` diagnostics for publicly reachable `#[cfg(test)]` items, [integration test](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#integration-tests) crate-level documentation, and publicly reachable items in integration tests.
-   [The `armv8r-none-eabihf` target now uses the Armv8-R required set of floating-point features.](https://redirect.github.com/rust-lang/rust/pull/130295)
-   [Fix a soundness bug where rustc wouldn't detect unconstrained higher-ranked lifetimes in a `dyn Trait`'s associated types that occur due to supertraits.](https://redirect.github.com/rust-lang/rust/pull/130367)
-   [Update the minimum external LLVM version to 18.](https://redirect.github.com/rust-lang/rust/pull/130487)
-   [Remove `aarch64-fuchsia` and `x86_64-fuchsia` target aliases in favor of `aarch64-unknown-fuchsia` and `x86_64-unknown-fuchsia` respectively.](https://redirect.github.com/rust-lang/rust/pull/130657)
-   [The ABI-level exception class of a Rust panic is now encoded with native-endian bytes, so it is legible in hex dumps.](https://redirect.github.com/rust-lang/rust/pull/130897)
-   [Visual Studio 2013 is no longer supported for MSVC targets.](https://redirect.github.com/rust-lang/rust/pull/131070)
-   [The sysroot no longer contains the `std` dynamic library in its top-level `lib/` dir.](https://redirect.github.com/rust-lang/rust/pull/131188)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-29 01:25:10 +00:00
CatsJuice
71ab75e30e feat(mobile): mobile experimental feature setting (#8922)
close AF-1802

![CleanShot 2024-11-26 at 10.02.27.gif](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/LakojjjzZNf6ogjOVwKE/09d24e35-a524-497d-b5aa-840bf74f128f.gif)
2024-11-28 07:25:06 +00:00
akumatus
c95e6ec518 feat(core): support copy as image in electron app (#8939)
Close issue [AF-1785](https://linear.app/affine-design/issue/AF-1785).

### What changed?
- Support copy as image in electron app:
  -  Select the whole mindmap if any of the mindmap nodes is selected.
  -  Hide unselected overlap elements before taking a snapshot.
  -  Fit the selected elements to the screen.
  -  Add CSS style to hide irrelevant dom nodes, like widgets, whiteboard background and so on.
     - Due to the usage of Shadow Dom in our code, not all node styles can be controlled. Thus this PR use `-2px` padding for `affine:frame` snapshots.
  - Using electron `capturePage` API to take a snapshot of selected elements.

<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/sJGviKxfE3Ap685cl5bj/c1b7b772-ddf8-4a85-b670-e96af7bd5cc0.mov">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/sJGviKxfE3Ap685cl5bj/c1b7b772-ddf8-4a85-b670-e96af7bd5cc0.mov">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/c1b7b772-ddf8-4a85-b670-e96af7bd5cc0.mov">录屏2024-11-27 16.11.03.mov</video>
2024-11-28 03:58:04 +00:00
Saul-Mirone
f780316f8b feat: add feature flag for new dnd (#8949) 2024-11-28 03:42:02 +00:00
renovate
2eae89d031 chore: Lock file maintenance (#8768)
This PR contains the following updates:

| Update | Change |
|---|---|
| lockFileMaintenance | All locks refreshed |

🔧 This Pull Request updates lock files to use the latest dependency versions.

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC), 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:eyJjcmVhdGVkSW5WZXIiOiIzOS43LjEiLCJ1cGRhdGVkSW5WZXIiOiIzOS4xOS4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-11-28 03:26:09 +00:00
renovate
016e2ecdb9 chore: bump up undici version to v7 (#8950)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [undici](https://undici.nodejs.org) ([source](https://redirect.github.com/nodejs/undici)) | [`^6.12.0` -> `^7.0.0`](https://renovatebot.com/diffs/npm/undici/6.21.0/7.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/undici/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/undici/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/undici/6.21.0/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/undici/6.21.0/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nodejs/undici (undici)</summary>

### [`v7.0.0`](https://redirect.github.com/nodejs/undici/releases/tag/v7.0.0)

[Compare Source](https://redirect.github.com/nodejs/undici/compare/v6.21.0...v7.0.0)

#### What's Changed

-   fetch: fix content-encoding order by [@&#8203;tsctx](https://redirect.github.com/tsctx) in [https://github.com/nodejs/undici/pull/3343](https://redirect.github.com/nodejs/undici/pull/3343)
-   Add regression test for broken body by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3346](https://redirect.github.com/nodejs/undici/pull/3346)
-   build(deps): bump node from `075a5cc` to `9af472b` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3355](https://redirect.github.com/nodejs/undici/pull/3355)
-   fix: post request signal by [@&#8203;Gigioliva](https://redirect.github.com/Gigioliva) in [https://github.com/nodejs/undici/pull/3354](https://redirect.github.com/nodejs/undici/pull/3354)
-   Revert "fix: post request signal ([#&#8203;3354](https://redirect.github.com/nodejs/undici/issues/3354))" by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3359](https://redirect.github.com/nodejs/undici/pull/3359)
-   websocket: don't use pooled buffer in mask pool by [@&#8203;tsctx](https://redirect.github.com/tsctx) in [https://github.com/nodejs/undici/pull/3357](https://redirect.github.com/nodejs/undici/pull/3357)
-   fix: consider bytes read when dumping by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3360](https://redirect.github.com/nodejs/undici/pull/3360)
-   refactor: simplify signal handling by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3362](https://redirect.github.com/nodejs/undici/pull/3362)
-   fix: use explicit flag for when use has interacted with stream by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3361](https://redirect.github.com/nodejs/undici/pull/3361)
-   Refactor example documentation structure and add CacheableLookup example by [@&#8203;DarkGL](https://redirect.github.com/DarkGL) in [https://github.com/nodejs/undici/pull/3363](https://redirect.github.com/nodejs/undici/pull/3363)
-   refactor: simplify request error handling by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3364](https://redirect.github.com/nodejs/undici/pull/3364)
-   fix: ensure onConnect is always called by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3327](https://redirect.github.com/nodejs/undici/pull/3327)
-   Refactor responseHeader to responseHeaders by [@&#8203;DarkGL](https://redirect.github.com/DarkGL) in [https://github.com/nodejs/undici/pull/3375](https://redirect.github.com/nodejs/undici/pull/3375)
-   fix: don't override user defined MaxListeners by [@&#8203;fawazahmed0](https://redirect.github.com/fawazahmed0) in [https://github.com/nodejs/undici/pull/3372](https://redirect.github.com/nodejs/undici/pull/3372)
-   fix: forward dispatch return value by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3368](https://redirect.github.com/nodejs/undici/pull/3368)
-   build(deps): bump github/codeql-action from 3.25.7 to 3.25.11 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3382](https://redirect.github.com/nodejs/undici/pull/3382)
-   build(deps): bump codecov/codecov-action from 4.4.1 to 4.5.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3384](https://redirect.github.com/nodejs/undici/pull/3384)
-   build(deps): bump actions/dependency-review-action from 4.3.2 to 4.3.3 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3383](https://redirect.github.com/nodejs/undici/pull/3383)
-   build(deps): bump step-security/harden-runner from 2.8.0 to 2.8.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3381](https://redirect.github.com/nodejs/undici/pull/3381)
-   fix: throw on retry when payload is consume by downstream by [@&#8203;climba03003](https://redirect.github.com/climba03003) in [https://github.com/nodejs/undici/pull/3389](https://redirect.github.com/nodejs/undici/pull/3389)
-   Remove file by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3367](https://redirect.github.com/nodejs/undici/pull/3367)
-   build(deps): bump node from `9af472b` to `138d0b5` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3392](https://redirect.github.com/nodejs/undici/pull/3392)
-   feat!: upgrade llhttp to 9.2.0 ([#&#8203;2705](https://redirect.github.com/nodejs/undici/issues/2705)) by [@&#8203;metcoder95](https://redirect.github.com/metcoder95) in [https://github.com/nodejs/undici/pull/3388](https://redirect.github.com/nodejs/undici/pull/3388)
-   websocket: reduce memory usage by [@&#8203;tsctx](https://redirect.github.com/tsctx) in [https://github.com/nodejs/undici/pull/3393](https://redirect.github.com/nodejs/undici/pull/3393)
-   feat: implement `BodyReadable.bytes` by [@&#8203;tsctx](https://redirect.github.com/tsctx) in [https://github.com/nodejs/undici/pull/3391](https://redirect.github.com/nodejs/undici/pull/3391)
-   websocket: avoid using Buffer.byteLength by [@&#8203;tsctx](https://redirect.github.com/tsctx) in [https://github.com/nodejs/undici/pull/3394](https://redirect.github.com/nodejs/undici/pull/3394)
-   separate whatwg websocket logic from rfc 6455 by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3396](https://redirect.github.com/nodejs/undici/pull/3396)
-   websocket: add fast-path for string input by [@&#8203;tsctx](https://redirect.github.com/tsctx) in [https://github.com/nodejs/undici/pull/3395](https://redirect.github.com/nodejs/undici/pull/3395)
-   Add generic type for opaque object by [@&#8203;jfhr](https://redirect.github.com/jfhr) in [https://github.com/nodejs/undici/pull/3385](https://redirect.github.com/nodejs/undici/pull/3385)
-   build(deps): bump node from `138d0b5` to `67225d4` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3398](https://redirect.github.com/nodejs/undici/pull/3398)
-   interceptors: move throwOnError to interceptor by [@&#8203;mertcanaltin](https://redirect.github.com/mertcanaltin) in [https://github.com/nodejs/undici/pull/3331](https://redirect.github.com/nodejs/undici/pull/3331)
-   chore!: drop interceptors by [@&#8203;metcoder95](https://redirect.github.com/metcoder95) in [https://github.com/nodejs/undici/pull/3399](https://redirect.github.com/nodejs/undici/pull/3399)
-   build(deps-dev): bump [@&#8203;fastify/busboy](https://redirect.github.com/fastify/busboy) from 2.1.1 to 3.0.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3404](https://redirect.github.com/nodejs/undici/pull/3404)
-   fix: don't call onConnect automatically by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3407](https://redirect.github.com/nodejs/undici/pull/3407)
-   In CITGM, skip tests that are flaky there by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3413](https://redirect.github.com/nodejs/undici/pull/3413)
-   Update esbuild to 0.19.10 by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3415](https://redirect.github.com/nodejs/undici/pull/3415)
-   Fix signature of RetryHandler by [@&#8203;JbIPS](https://redirect.github.com/JbIPS) in [https://github.com/nodejs/undici/pull/3416](https://redirect.github.com/nodejs/undici/pull/3416)
-   docs: fix ToC in CONTRIBUTING.md by [@&#8203;richardlau](https://redirect.github.com/richardlau) in [https://github.com/nodejs/undici/pull/3420](https://redirect.github.com/nodejs/undici/pull/3420)
-   Fix fetch `duplex` docs by [@&#8203;Ethan-Arrowood](https://redirect.github.com/Ethan-Arrowood) in [https://github.com/nodejs/undici/pull/3422](https://redirect.github.com/nodejs/undici/pull/3422)
-   fix: restore externalized Node.js dep compatibility by [@&#8203;richardlau](https://redirect.github.com/richardlau) in [https://github.com/nodejs/undici/pull/3421](https://redirect.github.com/nodejs/undici/pull/3421)
-   fix: cast falsy servername to null to avoid falsy inequality by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3426](https://redirect.github.com/nodejs/undici/pull/3426)
-   Add backport action by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3427](https://redirect.github.com/nodejs/undici/pull/3427)
-   build(deps): bump node from `67225d4` to `858234a` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3411](https://redirect.github.com/nodejs/undici/pull/3411)
-   build(deps): bump github/codeql-action from 3.25.11 to 3.25.15 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3432](https://redirect.github.com/nodejs/undici/pull/3432)
-   build(deps): bump actions/dependency-review-action from 4.3.3 to 4.3.4 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3431](https://redirect.github.com/nodejs/undici/pull/3431)
-   build(deps): bump actions/upload-artifact from 4.3.3 to 4.3.4 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3430](https://redirect.github.com/nodejs/undici/pull/3430)
-   build(deps): bump ossf/scorecard-action from 2.3.3 to 2.4.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3428](https://redirect.github.com/nodejs/undici/pull/3428)
-   build(deps): bump step-security/harden-runner from 2.8.1 to 2.9.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3429](https://redirect.github.com/nodejs/undici/pull/3429)
-   build(deps): bump superagent from 9.0.2 to 10.0.0 in /benchmarks by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3439](https://redirect.github.com/nodejs/undici/pull/3439)
-   build(deps): bump node from `17e6738` to `30c5be9` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3443](https://redirect.github.com/nodejs/undici/pull/3443)
-   docs: use default link of Web Streams API by [@&#8203;trivikr](https://redirect.github.com/trivikr) in [https://github.com/nodejs/undici/pull/3446](https://redirect.github.com/nodejs/undici/pull/3446)
-   fix: increased memory in finalization first appearing in v6.16.0 by [@&#8203;snyamathi](https://redirect.github.com/snyamathi) in [https://github.com/nodejs/undici/pull/3445](https://redirect.github.com/nodejs/undici/pull/3445)
-   test: add test for memory leak by [@&#8203;snyamathi](https://redirect.github.com/snyamathi) in [https://github.com/nodejs/undici/pull/3450](https://redirect.github.com/nodejs/undici/pull/3450)
-   build: parametrize the location of wasm-opt by [@&#8203;khardix](https://redirect.github.com/khardix) in [https://github.com/nodejs/undici/pull/3454](https://redirect.github.com/nodejs/undici/pull/3454)
-   test: streamline test scripts in regard of without-intl and run more tests for without-intl case by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3453](https://redirect.github.com/nodejs/undici/pull/3453)
-   feat!: drop throwOnError by [@&#8203;metcoder95](https://redirect.github.com/metcoder95) in [https://github.com/nodejs/undici/pull/3451](https://redirect.github.com/nodejs/undici/pull/3451)
-   types: allow non strict HTTPMethod by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3457](https://redirect.github.com/nodejs/undici/pull/3457)
-   build(deps-dev): bump borp from 0.15.0 to 0.17.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3424](https://redirect.github.com/nodejs/undici/pull/3424)
-   remove core isErrored and isReadable by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3459](https://redirect.github.com/nodejs/undici/pull/3459)
-   use bodyUnusable to check if body is unusable by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3460](https://redirect.github.com/nodejs/undici/pull/3460)
-   perf: non-recursive implementation of euclidian gcd in balanced pool by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3461](https://redirect.github.com/nodejs/undici/pull/3461)
-   fix: do validation first before actual business logic, like super() by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3463](https://redirect.github.com/nodejs/undici/pull/3463)
-   use FinalizationRegistry for cloned response body by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3458](https://redirect.github.com/nodejs/undici/pull/3458)
-   perf: use isIPv6 for checking if hostname is isIPv6 by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3466](https://redirect.github.com/nodejs/undici/pull/3466)
-   fix: stripURLForReferrer jsdoc in fetch logic by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3471](https://redirect.github.com/nodejs/undici/pull/3471)
-   fix: remove kInterceptors in ProxyAgent by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3474](https://redirect.github.com/nodejs/undici/pull/3474)
-   fix: fix codesmells in retry-handler by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3475](https://redirect.github.com/nodejs/undici/pull/3475)
-   add autocompletable header types by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3462](https://redirect.github.com/nodejs/undici/pull/3462)
-   fix: add missing kOriginalDispatch Symbol in mock-logic by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3470](https://redirect.github.com/nodejs/undici/pull/3470)
-   fix: fix jsdoc in cookies/parse.js by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3469](https://redirect.github.com/nodejs/undici/pull/3469)
-   fix: remove unnecessary parameters in USVString calls by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3467](https://redirect.github.com/nodejs/undici/pull/3467)
-   fix: add jsdoc in tree.js, avoiding codesmells by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3476](https://redirect.github.com/nodejs/undici/pull/3476)
-   perf: set isLowerCase param on all calls of HeadersList.append by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3468](https://redirect.github.com/nodejs/undici/pull/3468)
-   fix: instantiation of ResponseError, pass headers and data correctly by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3472](https://redirect.github.com/nodejs/undici/pull/3472)
-   ci: add WPT updater by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3482](https://redirect.github.com/nodejs/undici/pull/3482)
-   meta: move nightly comment body to issue body by [@&#8203;RedYetiDev](https://redirect.github.com/RedYetiDev) in [https://github.com/nodejs/undici/pull/3484](https://redirect.github.com/nodejs/undici/pull/3484)
-   chore: improve jsdoc in cookies by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3478](https://redirect.github.com/nodejs/undici/pull/3478)
-   chore: improve jsdoc and minor changes in EventSource by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3480](https://redirect.github.com/nodejs/undici/pull/3480)
-   types: add Autocomplete utility type by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3479](https://redirect.github.com/nodejs/undici/pull/3479)
-   fix: instantiation of SecureProxyConnectionError should pass options to parent class by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3473](https://redirect.github.com/nodejs/undici/pull/3473)
-   chore: replace standard and snazzy with neostandard by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3485](https://redirect.github.com/nodejs/undici/pull/3485)
-   fix: workflow commit user by [@&#8203;tsctx](https://redirect.github.com/tsctx) in [https://github.com/nodejs/undici/pull/3491](https://redirect.github.com/nodejs/undici/pull/3491)
-   build(deps): bump node from `30c5be9` to `a20e858` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3496](https://redirect.github.com/nodejs/undici/pull/3496)
-   chore: add --noEmit for typescript tests by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3498](https://redirect.github.com/nodejs/undici/pull/3498)
-   perf: only create wasm buffer if requested by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3499](https://redirect.github.com/nodejs/undici/pull/3499)
-   fix(types): MockAgent accepts ProxyAgent, EnvHttpProxyAgent and RetryAgent for agent option by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3497](https://redirect.github.com/nodejs/undici/pull/3497)
-   stricter Headers brand checks in cookies by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3500](https://redirect.github.com/nodejs/undici/pull/3500)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3488](https://redirect.github.com/nodejs/undici/pull/3488)
-   fix: setEncoding should not throw on body [#&#8203;1125](https://redirect.github.com/nodejs/undici/issues/1125) by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3505](https://redirect.github.com/nodejs/undici/pull/3505)
-   websocket: set websocket readyState on fail by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3507](https://redirect.github.com/nodejs/undici/pull/3507)
-   build(deps-dev): bump jsdom from 24.1.3 to 25.0.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3511](https://redirect.github.com/nodejs/undici/pull/3511)
-   build(deps): bump wait-on from 7.2.0 to 8.0.0 in /benchmarks by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3513](https://redirect.github.com/nodejs/undici/pull/3513)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3515](https://redirect.github.com/nodejs/undici/pull/3515)
-   fix: reduce memory usage in client-h1 by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3510](https://redirect.github.com/nodejs/undici/pull/3510)
-   fix: refactor fast timers, fix UND_ERR_CONNECT_TIMEOUT on event loop blocking by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3495](https://redirect.github.com/nodejs/undici/pull/3495)
-   ci: make autobahn workflow reusable workflow, run the autobahn on nightly tests by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3503](https://redirect.github.com/nodejs/undici/pull/3503)
-   remove third party everything support in fetch by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3502](https://redirect.github.com/nodejs/undici/pull/3502)
-   remove double validation in webidl by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3516](https://redirect.github.com/nodejs/undici/pull/3516)
-   test: improve gc detection by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3504](https://redirect.github.com/nodejs/undici/pull/3504)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3519](https://redirect.github.com/nodejs/undici/pull/3519)
-   populate defaultValues in webidl dict. converter when passing null or undefined by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3518](https://redirect.github.com/nodejs/undici/pull/3518)
-   change webidl.util.Type return to an enum value by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3520](https://redirect.github.com/nodejs/undici/pull/3520)
-   set default argument values to undefined instead of {} by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3521](https://redirect.github.com/nodejs/undici/pull/3521)
-   ci: fix nightly workflow by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3525](https://redirect.github.com/nodejs/undici/pull/3525)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3527](https://redirect.github.com/nodejs/undici/pull/3527)
-   remove unused symbol by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3530](https://redirect.github.com/nodejs/undici/pull/3530)
-   fix formdata arg validation by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3529](https://redirect.github.com/nodejs/undici/pull/3529)
-   build(deps): bump github/codeql-action from 3.25.15 to 3.26.6 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3534](https://redirect.github.com/nodejs/undici/pull/3534)
-   build(deps): bump hendrikmuhs/ccache-action from 1.2.13 to 1.2.14 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3536](https://redirect.github.com/nodejs/undici/pull/3536)
-   build(deps): bump step-security/harden-runner from 2.9.0 to 2.9.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3535](https://redirect.github.com/nodejs/undici/pull/3535)
-   build(deps): bump actions/upload-artifact from 4.3.4 to 4.4.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3537](https://redirect.github.com/nodejs/undici/pull/3537)
-   Remove patched DOM types by [@&#8203;eXhumer](https://redirect.github.com/eXhumer) in [https://github.com/nodejs/undici/pull/3533](https://redirect.github.com/nodejs/undici/pull/3533)
-   chore: minor changes in client-h1, use subarray instead of slice by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3538](https://redirect.github.com/nodejs/undici/pull/3538)
-   fix: run asserts first if possible by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3541](https://redirect.github.com/nodejs/undici/pull/3541)
-   build(deps): bump node from `a20e858` to `a17f484` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3542](https://redirect.github.com/nodejs/undici/pull/3542)
-   chore: noop per file by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3544](https://redirect.github.com/nodejs/undici/pull/3544)
-   build(deps): bump node from `a17f484` to `ef7b4bb` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3547](https://redirect.github.com/nodejs/undici/pull/3547)
-   chore: rename buildUrl to serializePathWithQuery + jsdoc by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3545](https://redirect.github.com/nodejs/undici/pull/3545)
-   fix: add jsdoc and do minor changes in utils.js by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3550](https://redirect.github.com/nodejs/undici/pull/3550)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3556](https://redirect.github.com/nodejs/undici/pull/3556)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3561](https://redirect.github.com/nodejs/undici/pull/3561)
-   feat: jsdoc and minor optimizations in client-h1.js by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3551](https://redirect.github.com/nodejs/undici/pull/3551)
-   fix: handle websocket closed correctly by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3565](https://redirect.github.com/nodejs/undici/pull/3565)
-   fix: extract noop everywhere by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3559](https://redirect.github.com/nodejs/undici/pull/3559)
-   chore: add jsdoc for lib/web/websocket/util.js, minor rewrite of utf8Decode by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3563](https://redirect.github.com/nodejs/undici/pull/3563)
-   jsdoc: lib/api/readable.js, fix some types by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3567](https://redirect.github.com/nodejs/undici/pull/3567)
-   fix: use fasttimers for all connection timeouts by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3552](https://redirect.github.com/nodejs/undici/pull/3552)
-   chore: use 'use strict' in cjs files by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3568](https://redirect.github.com/nodejs/undici/pull/3568)
-   chore: update typescript testing deps by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3571](https://redirect.github.com/nodejs/undici/pull/3571)
-   build(deps)!: bump concurrently from 8.2.2 to 9.0.0 in /benchmarks (node < 18 unsupported) by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3574](https://redirect.github.com/nodejs/undici/pull/3574)
-   build(deps): bump node from `ef7b4bb` to `3cb4748` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3573](https://redirect.github.com/nodejs/undici/pull/3573)
-   chore: improve jsdoc of lib/core/tree.js by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3572](https://redirect.github.com/nodejs/undici/pull/3572)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3576](https://redirect.github.com/nodejs/undici/pull/3576)
-   jsdoc: improve typing of deepClone by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3575](https://redirect.github.com/nodejs/undici/pull/3575)
-   chore: improve jsdoc of lib/core/constants.js by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3570](https://redirect.github.com/nodejs/undici/pull/3570)
-   chore: upgrade fixed queue, lint accordingly, add jsdoc by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3577](https://redirect.github.com/nodejs/undici/pull/3577)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3581](https://redirect.github.com/nodejs/undici/pull/3581)
-   ci: less flaky test/request-timeout.js test by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3580](https://redirect.github.com/nodejs/undici/pull/3580)
-   chore: remove pluralizer by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3586](https://redirect.github.com/nodejs/undici/pull/3586)
-   util: rename validateHandler to assertRequestHandler, minor changes in util.js by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3583](https://redirect.github.com/nodejs/undici/pull/3583)
-   mock: remove Error.captureStackTrace in MockNotMatchedError by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3587](https://redirect.github.com/nodejs/undici/pull/3587)
-   fix: DRY up lib/core/diagnostics.js by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3585](https://redirect.github.com/nodejs/undici/pull/3585)
-   fix: husky deprecation warning by [@&#8203;eXhumer](https://redirect.github.com/eXhumer) in [https://github.com/nodejs/undici/pull/3593](https://redirect.github.com/nodejs/undici/pull/3593)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3598](https://redirect.github.com/nodejs/undici/pull/3598)
-   chore: remove unused `pre-commit` dependency by [@&#8203;eXhumer](https://redirect.github.com/eXhumer) in [https://github.com/nodejs/undici/pull/3599](https://redirect.github.com/nodejs/undici/pull/3599)
-   diagnostics-channel: use not deprecated subscribe fn by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3600](https://redirect.github.com/nodejs/undici/pull/3600)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3607](https://redirect.github.com/nodejs/undici/pull/3607)
-   fetch: make fullyReadBody sync by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3603](https://redirect.github.com/nodejs/undici/pull/3603)
-   jsdoc: add jsdoc to lib/web/fetch/constants.js by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3597](https://redirect.github.com/nodejs/undici/pull/3597)
-   fetch: pullAlgorithm passes the async resume function through by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3604](https://redirect.github.com/nodejs/undici/pull/3604)
-   fix: typo in Client.md by [@&#8203;SkeLLLa](https://redirect.github.com/SkeLLLa) in [https://github.com/nodejs/undici/pull/3612](https://redirect.github.com/nodejs/undici/pull/3612)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3615](https://redirect.github.com/nodejs/undici/pull/3615)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3622](https://redirect.github.com/nodejs/undici/pull/3622)
-   fetch: avoid async function in mainFetch to generate response by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3605](https://redirect.github.com/nodejs/undici/pull/3605)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3626](https://redirect.github.com/nodejs/undici/pull/3626)
-   append crlf to formdata body by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3625](https://redirect.github.com/nodejs/undici/pull/3625)
-   fix: fire `close` on failed WebSocket connection by [@&#8203;eXhumer](https://redirect.github.com/eXhumer) in [https://github.com/nodejs/undici/pull/3566](https://redirect.github.com/nodejs/undici/pull/3566)
-   fix: fire close on failed WebSocket connection by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3628](https://redirect.github.com/nodejs/undici/pull/3628)
-   handle body errors by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3632](https://redirect.github.com/nodejs/undici/pull/3632)
-   make cloned request inherit dispatcher by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3631](https://redirect.github.com/nodejs/undici/pull/3631)
-   Remove symbols from web specs by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3633](https://redirect.github.com/nodejs/undici/pull/3633)
-   cleanup web symbol removal by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3638](https://redirect.github.com/nodejs/undici/pull/3638)
-   build(deps): bump mitata from 0.1.14 to 1.0.4 in /benchmarks by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3641](https://redirect.github.com/nodejs/undici/pull/3641)
-   feat: implement WebSocketStream by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3560](https://redirect.github.com/nodejs/undici/pull/3560)
-   export WebSocketStream, add docs and types by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3645](https://redirect.github.com/nodejs/undici/pull/3645)
-   build(deps): bump node from `3cb4748` to `83b4d7b` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3621](https://redirect.github.com/nodejs/undici/pull/3621)
-   feat: add DNS interceptor by [@&#8203;metcoder95](https://redirect.github.com/metcoder95) in [https://github.com/nodejs/undici/pull/3490](https://redirect.github.com/nodejs/undici/pull/3490)
-   prefer fail over close the websocket connection in error cases by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3651](https://redirect.github.com/nodejs/undici/pull/3651)
-   fix: various typos by [@&#8203;NathanBaulch](https://redirect.github.com/NathanBaulch) in [https://github.com/nodejs/undici/pull/3640](https://redirect.github.com/nodejs/undici/pull/3640)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3634](https://redirect.github.com/nodejs/undici/pull/3634)
-   test: increase bitness in `test/fixtures/*.pem` by [@&#8203;LiviaMedeiros](https://redirect.github.com/LiviaMedeiros) in [https://github.com/nodejs/undici/pull/3659](https://redirect.github.com/nodejs/undici/pull/3659)
-   mock: fix mocking of Uint8Array and ArrayBuffers as provided mock-responses by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3662](https://redirect.github.com/nodejs/undici/pull/3662)
-   test: less flaky timers acceptance test, rework fast timer tests to pass them faster by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3656](https://redirect.github.com/nodejs/undici/pull/3656)
-   build(deps): bump github/codeql-action from 3.26.6 to 3.26.10 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3664](https://redirect.github.com/nodejs/undici/pull/3664)
-   build(deps): bump peter-evans/create-pull-request from 6.1.0 to 7.0.5 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3665](https://redirect.github.com/nodejs/undici/pull/3665)
-   build(deps): bump fastify/github-action-merge-dependabot from 3.10.1 to 3.10.2 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3667](https://redirect.github.com/nodejs/undici/pull/3667)
-   build(deps): bump codecov/codecov-action from 4.5.0 to 4.6.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3668](https://redirect.github.com/nodejs/undici/pull/3668)
-   ws: move implementation agnostic onFail logic to shared function by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3663](https://redirect.github.com/nodejs/undici/pull/3663)
-   build(deps): bump step-security/harden-runner from 2.9.1 to 2.10.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3666](https://redirect.github.com/nodejs/undici/pull/3666)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3669](https://redirect.github.com/nodejs/undici/pull/3669)
-   fix: add option `ignoreTrailingSlash` to MockAgent and `.intercept()`  by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3655](https://redirect.github.com/nodejs/undici/pull/3655)
-   fix: ignore leading and trailing crlfs in formdata body by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3677](https://redirect.github.com/nodejs/undici/pull/3677)
-   test: add test to ensure full type when parsing multipart/form-data' by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3683](https://redirect.github.com/nodejs/undici/pull/3683)
-   test: use globalThis.Headers and skip if is missing by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3684](https://redirect.github.com/nodejs/undici/pull/3684)
-   jsdoc: adds some jsdoc to fetch headers implementation, minor changes by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3687](https://redirect.github.com/nodejs/undici/pull/3687)
-   feat: check maxHeadersSize on client instantiation and not on Parser instantion by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3654](https://redirect.github.com/nodejs/undici/pull/3654)
-   test: remove test for issue 1670 by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3690](https://redirect.github.com/nodejs/undici/pull/3690)
-   replace instanceof in brand checks with isPrototypeOf by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3692](https://redirect.github.com/nodejs/undici/pull/3692)
-   test: make fetch test independent from internet connection by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3691](https://redirect.github.com/nodejs/undici/pull/3691)
-   build(deps-dev): bump esbuild from 0.19.12 to 0.24.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3698](https://redirect.github.com/nodejs/undici/pull/3698)
-   fix: restructure determineRequestsReferrer to match better spec by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3699](https://redirect.github.com/nodejs/undici/pull/3699)
-   set ws readyState if closed before connection could be established by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3701](https://redirect.github.com/nodejs/undici/pull/3701)
-   types: fix return type of WebidlUtil.Type by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3685](https://redirect.github.com/nodejs/undici/pull/3685)
-   fetch: refactor referrer policy util functions by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3706](https://redirect.github.com/nodejs/undici/pull/3706)
-   fix: PoolBase kClose and kDestroy should await and not return the Promise by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3716](https://redirect.github.com/nodejs/undici/pull/3716)
-   fix: data-url set extractValue of collectAnHTTPQuotedString by default to false by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3717](https://redirect.github.com/nodejs/undici/pull/3717)
-   faster brand check by [@&#8203;tsctx](https://redirect.github.com/tsctx) in [https://github.com/nodejs/undici/pull/3720](https://redirect.github.com/nodejs/undici/pull/3720)
-   web: mark as uncloneable when possible by [@&#8203;jazelly](https://redirect.github.com/jazelly) in [https://github.com/nodejs/undici/pull/3709](https://redirect.github.com/nodejs/undici/pull/3709)
-   chore(H2): onboard H2 into Undici queueing system by [@&#8203;metcoder95](https://redirect.github.com/metcoder95) in [https://github.com/nodejs/undici/pull/3707](https://redirect.github.com/nodejs/undici/pull/3707)
-   http: extract listeners from client-h1 by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3725](https://redirect.github.com/nodejs/undici/pull/3725)
-   http2: extract listenHandlers and one bugfix by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3722](https://redirect.github.com/nodejs/undici/pull/3722)
-   feat: http caching by [@&#8203;flakey5](https://redirect.github.com/flakey5) in [https://github.com/nodejs/undici/pull/3562](https://redirect.github.com/nodejs/undici/pull/3562)
-   build(deps-dev): bump borp from 0.17.0 to 0.18.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3734](https://redirect.github.com/nodejs/undici/pull/3734)
-   docs: fix broken link in readme by [@&#8203;pastelsky](https://redirect.github.com/pastelsky) in [https://github.com/nodejs/undici/pull/3591](https://redirect.github.com/nodejs/undici/pull/3591)
-   chore: add jsdoc to lib/web/websocket/constants.js by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3564](https://redirect.github.com/nodejs/undici/pull/3564)
-   chore: remove redundant async in readable.js by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3643](https://redirect.github.com/nodejs/undici/pull/3643)
-   fix(types): add missing `cache` prop to RequestInit by [@&#8203;rindeal](https://redirect.github.com/rindeal) in [https://github.com/nodejs/undici/pull/3569](https://redirect.github.com/nodejs/undici/pull/3569)
-   \[http-cache] follow up by [@&#8203;Uzlopak](https://redirect.github.com/Uzlopak) in [https://github.com/nodejs/undici/pull/3733](https://redirect.github.com/nodejs/undici/pull/3733)
-   fix([#&#8203;3736](https://redirect.github.com/nodejs/undici/issues/3736)): leaked error event on response body by [@&#8203;metcoder95](https://redirect.github.com/metcoder95) in [https://github.com/nodejs/undici/pull/3740](https://redirect.github.com/nodejs/undici/pull/3740)
-   fix: unsafe methods not causing cache purge by [@&#8203;flakey5](https://redirect.github.com/flakey5) in [https://github.com/nodejs/undici/pull/3739](https://redirect.github.com/nodejs/undici/pull/3739)
-   build(deps): bump node from `83b4d7b` to `f1b4315` in /build by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3756](https://redirect.github.com/nodejs/undici/pull/3756)
-   fix filename\* parsing by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3768](https://redirect.github.com/nodejs/undici/pull/3768)
-   fix http2 test by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3769](https://redirect.github.com/nodejs/undici/pull/3769)
-   add unsafe-url referrerPolicy test by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3772](https://redirect.github.com/nodejs/undici/pull/3772)
-   chore(docs): add request() example for conditionally reading the body by [@&#8203;styfle](https://redirect.github.com/styfle) in [https://github.com/nodejs/undici/pull/3743](https://redirect.github.com/nodejs/undici/pull/3743)
-   fix: dns interceptor ip ttl by [@&#8203;luddd3](https://redirect.github.com/luddd3) in [https://github.com/nodejs/undici/pull/3770](https://redirect.github.com/nodejs/undici/pull/3770)
-   add node v23 workflow by [@&#8203;tsctx](https://redirect.github.com/tsctx) in [https://github.com/nodejs/undici/pull/3780](https://redirect.github.com/nodejs/undici/pull/3780)
-   fix: dns interceptor affinity by [@&#8203;luddd3](https://redirect.github.com/luddd3) in [https://github.com/nodejs/undici/pull/3778](https://redirect.github.com/nodejs/undici/pull/3778)
-   fix aborting Streams by [@&#8203;epistemancering](https://redirect.github.com/epistemancering) in [https://github.com/nodejs/undici/pull/3754](https://redirect.github.com/nodejs/undici/pull/3754)
-   add tests from cookie package by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3789](https://redirect.github.com/nodejs/undici/pull/3789)
-   disable failing test by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3782](https://redirect.github.com/nodejs/undici/pull/3782)
-   fix: http2 queueing by [@&#8203;metcoder95](https://redirect.github.com/metcoder95) in [https://github.com/nodejs/undici/pull/3761](https://redirect.github.com/nodejs/undici/pull/3761)
-   test(interceptors): fix dns testing on windows by [@&#8203;metcoder95](https://redirect.github.com/metcoder95) in [https://github.com/nodejs/undici/pull/3793](https://redirect.github.com/nodejs/undici/pull/3793)
-   feat: use resolved ports in dns interceptor by [@&#8203;luddd3](https://redirect.github.com/luddd3) in [https://github.com/nodejs/undici/pull/3786](https://redirect.github.com/nodejs/undici/pull/3786)
-   fix: cache by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3804](https://redirect.github.com/nodejs/undici/pull/3804)
-   fix: assume blocking unless HEAD by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3771](https://redirect.github.com/nodejs/undici/pull/3771)
-   chore: use common WASM builder by [@&#8203;mhdawson](https://redirect.github.com/mhdawson) in [https://github.com/nodejs/undici/pull/3791](https://redirect.github.com/nodejs/undici/pull/3791)
-   refactor: silence neostandard import rules error by [@&#8203;jerome-benoit](https://redirect.github.com/jerome-benoit) in [https://github.com/nodejs/undici/pull/3776](https://redirect.github.com/nodejs/undici/pull/3776)
-   build(deps): bump actions/dependency-review-action from 4.3.4 to 4.4.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3797](https://redirect.github.com/nodejs/undici/pull/3797)
-   build(deps): bump github/codeql-action from 3.26.10 to 3.27.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3796](https://redirect.github.com/nodejs/undici/pull/3796)
-   build(deps): bump fastify/github-action-merge-dependabot from 3.10.2 to 3.11.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3795](https://redirect.github.com/nodejs/undici/pull/3795)
-   docs: add example using proxy with fetch by [@&#8203;dancastillo](https://redirect.github.com/dancastillo) in [https://github.com/nodejs/undici/pull/3800](https://redirect.github.com/nodejs/undici/pull/3800)
-   fix: handle Headers in RedirectHandler by [@&#8203;iiAku](https://redirect.github.com/iiAku) in [https://github.com/nodejs/undici/pull/3777](https://redirect.github.com/nodejs/undici/pull/3777)
-   Skip debuglog tests by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3810](https://redirect.github.com/nodejs/undici/pull/3810)
-   build(deps): bump actions/upload-artifact from 4.4.0 to 4.4.3 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3794](https://redirect.github.com/nodejs/undici/pull/3794)
-   h2: do not emit data after goaway by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3811](https://redirect.github.com/nodejs/undici/pull/3811)
-   fix redirect interceptor with FormData body by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3815](https://redirect.github.com/nodejs/undici/pull/3815)
-   docs: fix broken links in undici webpage by [@&#8203;dancastillo](https://redirect.github.com/dancastillo) in [https://github.com/nodejs/undici/pull/3807](https://redirect.github.com/nodejs/undici/pull/3807)
-   fix: handle undici Headers and Maps in redirect-handler by [@&#8203;iiAku](https://redirect.github.com/iiAku) in [https://github.com/nodejs/undici/pull/3819](https://redirect.github.com/nodejs/undici/pull/3819)
-   fix: handle undefined deref() of WeakRef(socket) by [@&#8203;hochoy](https://redirect.github.com/hochoy) in [https://github.com/nodejs/undici/pull/3751](https://redirect.github.com/nodejs/undici/pull/3751)
-   build(deps-dev): bump [@&#8203;sinonjs/fake-timers](https://redirect.github.com/sinonjs/fake-timers) from 11.3.1 to 12.0.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot) in [https://github.com/nodejs/undici/pull/3823](https://redirect.github.com/nodejs/undici/pull/3823)
-   fix: range end is zero-indexed by [@&#8203;DTrombett](https://redirect.github.com/DTrombett) in [https://github.com/nodejs/undici/pull/3826](https://redirect.github.com/nodejs/undici/pull/3826)
-   lib: more cache fixes by [@&#8203;flakey5](https://redirect.github.com/flakey5) in [https://github.com/nodejs/undici/pull/3816](https://redirect.github.com/nodejs/undici/pull/3816)
-   fix: cache fixes by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3830](https://redirect.github.com/nodejs/undici/pull/3830)
-   Headers webidl errors by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3833](https://redirect.github.com/nodejs/undici/pull/3833)
-   Fix goaway by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3835](https://redirect.github.com/nodejs/undici/pull/3835)
-   refactor: maxEntriesCount by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3832](https://redirect.github.com/nodejs/undici/pull/3832)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3693](https://redirect.github.com/nodejs/undici/pull/3693)
-   docs: fix broken links by using absolute path by [@&#8203;dancastillo](https://redirect.github.com/dancastillo) in [https://github.com/nodejs/undici/pull/3820](https://redirect.github.com/nodejs/undici/pull/3820)
-   fix: memory store by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3834](https://redirect.github.com/nodejs/undici/pull/3834)
-   Update Dispatch.md to Dispatcher.md by [@&#8203;bcomnes](https://redirect.github.com/bcomnes) in [https://github.com/nodejs/undici/pull/3839](https://redirect.github.com/nodejs/undici/pull/3839)
-   lib: add `nowAbsolute` to fast timers by [@&#8203;flakey5](https://redirect.github.com/flakey5) in [https://github.com/nodejs/undici/pull/3749](https://redirect.github.com/nodejs/undici/pull/3749)
-   feat: cache etag support by [@&#8203;flakey5](https://redirect.github.com/flakey5) in [https://github.com/nodejs/undici/pull/3758](https://redirect.github.com/nodejs/undici/pull/3758)
-   feat: support request cache control directives by [@&#8203;flakey5](https://redirect.github.com/flakey5) in [https://github.com/nodejs/undici/pull/3658](https://redirect.github.com/nodejs/undici/pull/3658)
-   Bench updates prior to release by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3845](https://redirect.github.com/nodejs/undici/pull/3845)
-   fix([#&#8203;3817](https://redirect.github.com/nodejs/undici/issues/3817)): send servername for SNI on TLS by [@&#8203;metcoder95](https://redirect.github.com/metcoder95) in [https://github.com/nodejs/undici/pull/3821](https://redirect.github.com/nodejs/undici/pull/3821)
-   Revert nowAbsolute, add regression test by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3850](https://redirect.github.com/nodejs/undici/pull/3850)
-   fix: missing error handler by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3859](https://redirect.github.com/nodejs/undici/pull/3859)
-   fix: 301 and 302 change method to GET by [@&#8203;DTrombett](https://redirect.github.com/DTrombett) in [https://github.com/nodejs/undici/pull/3862](https://redirect.github.com/nodejs/undici/pull/3862)
-   feat: sqlite cache store by [@&#8203;flakey5](https://redirect.github.com/flakey5) in [https://github.com/nodejs/undici/pull/3657](https://redirect.github.com/nodejs/undici/pull/3657)
-   fix: sending formdata bodies with http2 by [@&#8203;KhafraDev](https://redirect.github.com/KhafraDev) in [https://github.com/nodejs/undici/pull/3863](https://redirect.github.com/nodejs/undici/pull/3863)
-   Update return type of RetryCallback by [@&#8203;mqayyuum](https://redirect.github.com/mqayyuum) in [https://github.com/nodejs/undici/pull/3851](https://redirect.github.com/nodejs/undici/pull/3851)
-   fix: cleanup sqlite store by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3868](https://redirect.github.com/nodejs/undici/pull/3868)
-   refactor: sqlite versioning by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3870](https://redirect.github.com/nodejs/undici/pull/3870)
-   fix: pass down context in onConnect by [@&#8203;DTrombett](https://redirect.github.com/DTrombett) in [https://github.com/nodejs/undici/pull/3858](https://redirect.github.com/nodejs/undici/pull/3858)
-   fix: cache fixes by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3871](https://redirect.github.com/nodejs/undici/pull/3871)
-   fix: we can redirect disturbed request body if it's not going to be used by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3873](https://redirect.github.com/nodejs/undici/pull/3873)
-   perf: only prune if adding new entry by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3872](https://redirect.github.com/nodejs/undici/pull/3872)
-   fix: Fixed the issue that there is no running request when http2 goaway by [@&#8203;ShenHongFei](https://redirect.github.com/ShenHongFei) in [https://github.com/nodejs/undici/pull/3875](https://redirect.github.com/nodejs/undici/pull/3875)
-   feat: new hooks by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3878](https://redirect.github.com/nodejs/undici/pull/3878)
-   Multiple fixes for SQLiteStore, enable it in CI by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3881](https://redirect.github.com/nodejs/undici/pull/3881)
-   Update WPT by [@&#8203;github-actions](https://redirect.github.com/github-actions) in [https://github.com/nodejs/undici/pull/3838](https://redirect.github.com/nodejs/undici/pull/3838)
-   cache: fix stale-while-revalidate and stale-if-error by [@&#8203;flakey5](https://redirect.github.com/flakey5) in [https://github.com/nodejs/undici/pull/3865](https://redirect.github.com/nodejs/undici/pull/3865)
-   refactor: port redirect handler to new hooks by [@&#8203;ronag](https://redirect.github.com/ronag) in [https://github.com/nodejs/undici/pull/3879](https://redirect.github.com/nodejs/undici/pull/3879)
-   Drop node v18 by [@&#8203;mcollina](https://redirect.github.com/mcollina) in [https://github.com/nodejs/undici/pull/3880](https://redirect.github.com/nodejs/undici/

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-28 03:10:03 +00:00
renovate
6484aef45f chore: bump up all non-major dependencies (#8945)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://redirect.github.com/getsentry/sentry-javascript)) | [`8.40.0` -> `8.41.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.40.0/8.41.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/8.41.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2freact/8.41.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2freact/8.40.0/8.41.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/8.40.0/8.41.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@toeverything/theme](https://redirect.github.com/toeverything/design) | [`1.0.19` -> `1.0.21`](https://renovatebot.com/diffs/npm/@toeverything%2ftheme/1.0.19/1.0.21) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@toeverything%2ftheme/1.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@toeverything%2ftheme/1.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@toeverything%2ftheme/1.0.19/1.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@toeverything%2ftheme/1.0.19/1.0.21?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [electron](https://redirect.github.com/electron/electron) | [`33.2.0` -> `33.2.1`](https://renovatebot.com/diffs/npm/electron/33.2.0/33.2.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/electron/33.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/electron/33.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/electron/33.2.0/33.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/electron/33.2.0/33.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [happy-dom](https://redirect.github.com/capricorn86/happy-dom) | [`15.11.6` -> `15.11.7`](https://renovatebot.com/diffs/npm/happy-dom/15.11.6/15.11.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/15.11.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/15.11.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/15.11.6/15.11.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/15.11.6/15.11.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [lucide-react](https://lucide.dev) ([source](https://redirect.github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react)) | [`^0.461.0` -> `^0.462.0`](https://renovatebot.com/diffs/npm/lucide-react/0.461.0/0.462.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lucide-react/0.462.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lucide-react/0.462.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lucide-react/0.461.0/0.462.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lucide-react/0.461.0/0.462.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [typedoc](https://typedoc.org) ([source](https://redirect.github.com/TypeStrong/TypeDoc)) | [`0.27.0` -> `0.27.1`](https://renovatebot.com/diffs/npm/typedoc/0.27.0/0.27.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/typedoc/0.27.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typedoc/0.27.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typedoc/0.27.0/0.27.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typedoc/0.27.0/0.27.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>getsentry/sentry-javascript (@&#8203;sentry/react)</summary>

### [`v8.41.0`](https://redirect.github.com/getsentry/sentry-javascript/releases/tag/8.41.0)

[Compare Source](https://redirect.github.com/getsentry/sentry-javascript/compare/8.40.0...8.41.0)

##### Important Changes

-   **meta(nuxt): Require minimum Nuxt v3.7.0 ([#&#8203;14473](https://redirect.github.com/getsentry/sentry-javascript/pull/14473))**

    We formalized that the Nuxt SDK is at minimum compatible with Nuxt version 3.7.0 and above.
    Additionally, the SDK requires the implicit `nitropack` dependency to satisfy version `^2.10.0` and `ofetch` to satisfy `^1.4.0`.
    It is recommended to check your lock-files and manually upgrade these dependencies if they don't match the version ranges.

##### Deprecations

We are deprecating a few APIs which will be removed in the next major.

The following deprecations will *potentially* affect you:

-   **feat(core): Update & deprecate `undefined` option handling ([#&#8203;14450](https://redirect.github.com/getsentry/sentry-javascript/pull/14450))**

    In the next major version we will change how passing `undefined` to `tracesSampleRate` / `tracesSampler` / `enableTracing` will behave.

    Currently, doing the following:

    ```ts
    Sentry.init({
      tracesSampleRate: undefined,
    });
    ```

    Will result in tracing being *enabled* (although no spans will be generated) because the `tracesSampleRate` key is present in the options object.
    In the next major version, this behavior will be changed so that passing `undefined` (or rather having a `tracesSampleRate` key) will result in tracing being disabled, the same as not passing the option at all.
    If you are currently relying on `undefined` being passed, and and thus have tracing enabled, it is recommended to update your config to set e.g. `tracesSampleRate: 0` instead, which will also enable tracing in v9.

    The same applies to `tracesSampler` and `enableTracing`.

-   **feat(core): Log warnings when returning `null` in `beforeSendSpan` ([#&#8203;14433](https://redirect.github.com/getsentry/sentry-javascript/pull/14433))**

    Currently, the `beforeSendSpan` option in `Sentry.init()` allows you to drop individual spans from a trace by returning `null` from the hook.
    Since this API lends itself to creating "gaps" inside traces, we decided to change how this API will work in the next major version.

    With the next major version the `beforeSendSpan` API can only be used to mutate spans, but no longer to drop them.
    With this release the SDK will warn you if you are using this API to drop spans.
    Instead, it is recommended to configure instrumentation (i.e. integrations) directly to control what spans are created.

    Additionally, with the next major version, root spans will also be passed to `beforeSendSpan`.

-   **feat(utils): Deprecate `@sentry/utils` ([#&#8203;14431](https://redirect.github.com/getsentry/sentry-javascript/pull/14431))**

    With the next major version the `@sentry/utils` package will be merged into the `@sentry/core` package.
    It is therefore no longer recommended to use the `@sentry/utils` package.

-   **feat(vue): Deprecate configuring Vue tracing options anywhere else other than through the `vueIntegration`'s `tracingOptions` option ([#&#8203;14385](https://redirect.github.com/getsentry/sentry-javascript/pull/14385))**

    Currently it is possible to configure tracing options in various places in the Sentry Vue SDK:

    -   In `Sentry.init()`
    -   Inside `tracingOptions` in `Sentry.init()`
    -   In the `vueIntegration()` options
    -   Inside `tracingOptions` in the `vueIntegration()` options

    Because this is a bit messy and confusing to document, the only recommended way to configure tracing options going forward is through the `tracingOptions` in the `vueIntegration()`.
    The other means of configuration will be removed in the next major version of the SDK.

-   **feat: Deprecate `registerEsmLoaderHooks.include` and `registerEsmLoaderHooks.exclude` ([#&#8203;14486](https://redirect.github.com/getsentry/sentry-javascript/pull/14486))**

    Currently it is possible to define `registerEsmLoaderHooks.include` and `registerEsmLoaderHooks.exclude` options in `Sentry.init()` to only apply ESM loader hooks to a subset of modules.
    This API served as an escape hatch in case certain modules are incompatible with ESM loader hooks.

    Since this API was introduced, a way was found to only wrap modules that there exists instrumentation for (meaning a vetted list).
    To only wrap modules that have instrumentation, it is recommended to instead set `registerEsmLoaderHooks.onlyIncludeInstrumentedModules` to `true`.

    Note that `onlyIncludeInstrumentedModules: true` will become the default behavior in the next major version and the `registerEsmLoaderHooks` will no longer accept fine-grained options.

The following deprecations will *most likely* not affect you unless you are building an SDK yourself:

-   feat(core): Deprecate `arrayify` ([#&#8203;14405](https://redirect.github.com/getsentry/sentry-javascript/pull/14405))
-   feat(core): Deprecate `flatten` ([#&#8203;14454](https://redirect.github.com/getsentry/sentry-javascript/pull/14454))
-   feat(core): Deprecate `urlEncode` ([#&#8203;14406](https://redirect.github.com/getsentry/sentry-javascript/pull/14406))
-   feat(core): Deprecate `validSeverityLevels` ([#&#8203;14407](https://redirect.github.com/getsentry/sentry-javascript/pull/14407))
-   feat(core/utils): Deprecate `getNumberOfUrlSegments` ([#&#8203;14458](https://redirect.github.com/getsentry/sentry-javascript/pull/14458))
-   feat(utils): Deprecate `memoBuilder`, `BAGGAGE_HEADER_NAME`, and `makeFifoCache` ([#&#8203;14434](https://redirect.github.com/getsentry/sentry-javascript/pull/14434))
-   feat(utils/core): Deprecate `addRequestDataToEvent` and `extractRequestData` ([#&#8203;14430](https://redirect.github.com/getsentry/sentry-javascript/pull/14430))

##### Other Changes

-   feat: Streamline `sentry-trace`, `baggage` and DSC handling ([#&#8203;14364](https://redirect.github.com/getsentry/sentry-javascript/pull/14364))
-   feat(core): Further optimize debug ID parsing ([#&#8203;14365](https://redirect.github.com/getsentry/sentry-javascript/pull/14365))
-   feat(node): Add `openTelemetryInstrumentations` option ([#&#8203;14484](https://redirect.github.com/getsentry/sentry-javascript/pull/14484))
-   feat(nuxt): Add filter for not found source maps (devtools) ([#&#8203;14437](https://redirect.github.com/getsentry/sentry-javascript/pull/14437))
-   feat(nuxt): Only delete public source maps ([#&#8203;14438](https://redirect.github.com/getsentry/sentry-javascript/pull/14438))
-   fix(nextjs): Don't report `NEXT_REDIRECT` from browser ([#&#8203;14440](https://redirect.github.com/getsentry/sentry-javascript/pull/14440))
-   perf(opentelemetry): Bucket spans for cleanup ([#&#8203;14154](https://redirect.github.com/getsentry/sentry-javascript/pull/14154))

Work in this release was contributed by [@&#8203;NEKOYASAN](https://redirect.github.com/NEKOYASAN) and [@&#8203;fmorett](https://redirect.github.com/fmorett). Thank you for your contributions!

#### Bundle size 📦

| Path                                                             | Size              |
| ---------------------------------------------------------------- | ----------------- |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser)                                                  | 23.12 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) - with treeshaking flags                         | 21.84 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Tracing)                                  | 35.53 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Tracing, Replay)                          | 72.44 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Tracing, Replay) - with treeshaking flags | 62.81 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Tracing, Replay with Canvas)              | 76.76 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Tracing, Replay, Feedback)                | 89.21 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. Feedback)                                 | 39.86 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. sendFeedback)                             | 27.73 KB  |
| [@&#8203;sentry/browser](https://redirect.github.com/sentry/browser) (incl. FeedbackAsync)                            | 32.53 KB  |
| [@&#8203;sentry/react](https://redirect.github.com/sentry/react)                                                    | 25.8 KB   |
| [@&#8203;sentry/react](https://redirect.github.com/sentry/react) (incl. Tracing)                                    | 38.36 KB  |
| [@&#8203;sentry/vue](https://redirect.github.com/sentry/vue)                                                      | 27.28 KB  |
| [@&#8203;sentry/vue](https://redirect.github.com/sentry/vue) (incl. Tracing)                                      | 37.33 KB  |
| [@&#8203;sentry/svelte](https://redirect.github.com/sentry/svelte)                                                   | 23.27 KB  |
| CDN Bundle                                                       | 24.29 KB  |
| CDN Bundle (incl. Tracing)                                       | 37.17 KB  |
| CDN Bundle (incl. Tracing, Replay)                               | 72.06 KB  |
| CDN Bundle (incl. Tracing, Replay, Feedback)                     | 77.41 KB  |
| CDN Bundle - uncompressed                                        | 71.37 KB  |
| CDN Bundle (incl. Tracing) - uncompressed                        | 110.4 KB  |
| CDN Bundle (incl. Tracing, Replay) - uncompressed                | 223.47 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed      | 236.69 KB |
| [@&#8203;sentry/nextjs](https://redirect.github.com/sentry/nextjs) (client)                                          | 38.68 KB  |
| [@&#8203;sentry/sveltekit](https://redirect.github.com/sentry/sveltekit) (client)                                       | 36.05 KB  |
| [@&#8203;sentry/node](https://redirect.github.com/sentry/node)                                                     | 135.06 KB |
| [@&#8203;sentry/node](https://redirect.github.com/sentry/node) - without tracing                                   | 96.89 KB  |
| [@&#8203;sentry/aws-serverless](https://redirect.github.com/sentry/aws-serverless)                                           | 107.09 KB |

</details>

<details>
<summary>toeverything/design (@&#8203;toeverything/theme)</summary>

### [`v1.0.21`](https://redirect.github.com/toeverything/design/compare/1.0.19...1.0.21)

[Compare Source](https://redirect.github.com/toeverything/design/compare/1.0.19...1.0.21)

</details>

<details>
<summary>electron/electron (electron)</summary>

### [`v33.2.1`](https://redirect.github.com/electron/electron/compare/v33.2.0...v33.2.1)

[Compare Source](https://redirect.github.com/electron/electron/compare/v33.2.0...v33.2.1)

</details>

<details>
<summary>capricorn86/happy-dom (happy-dom)</summary>

### [`v15.11.7`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.6...d3566f4b2d4b82b3188d7476f492894534f1cfcb)

[Compare Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.6...v15.11.7)

</details>

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

### [`v0.462.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.462.0): New icons 0.462.0

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

#### New icons 🎨

-   `image-upscale` ([#&#8203;2462](https://redirect.github.com/lucide-icons/lucide/issues/2462)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)

#### Modified Icons 🔨

-   `grid-2x2` ([#&#8203;2628](https://redirect.github.com/lucide-icons/lucide/issues/2628)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)
-   `ship` ([#&#8203;2548](https://redirect.github.com/lucide-icons/lucide/issues/2548)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)
-   `shuffle` ([#&#8203;2478](https://redirect.github.com/lucide-icons/lucide/issues/2478)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)
-   `venetian-mask` ([#&#8203;1950](https://redirect.github.com/lucide-icons/lucide/issues/1950)) by [@&#8203;jguddas](https://redirect.github.com/jguddas)

</details>

<details>
<summary>TypeStrong/TypeDoc (typedoc)</summary>

### [`v0.27.1`](https://redirect.github.com/TypeStrong/TypeDoc/blob/HEAD/CHANGELOG.md#v0271-2024-11-28)

[Compare Source](https://redirect.github.com/TypeStrong/TypeDoc/compare/v0.27.0...v0.27.1)

##### Bug Fixes

-   Include classes which inherit from another package in class hierarchy in packages mode, [#&#8203;2467](https://redirect.github.com/TypeStrong/TypeDoc/issues/2467).
-   Fixed handling of `@categoryDescription` and `@groupDescription` on module pages, [#&#8203;2787](https://redirect.github.com/TypeStrong/TypeDoc/issues/2787).
-   Fixed automatic discovery of entry points in packages mode.
-   Reverted accidental style change for hierarchy page introduced in 0.27.0
-   The hierarchy Expand/Collapse link will now only appear if the hierarchies are different.

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-28 02:53:34 +00:00
akumatus
d2eef768ba fix: ai generation of mindmap fail from note text context (#8952)
Fix issue [AF-1632](https://linear.app/affine-design/issue/AF-1632).

### What Changed?
- Keep the note selection and do not set the widget tool to copilot if asking AI from selection in a note in edgeless mode.
- Remove `content` from `AIImageActionOptions`, using `input` as AI context like other actions.
2024-11-28 02:35:06 +00:00
renovate
3c4e70a8c3 chore: bump up nestjs to v10.4.11 (#8946)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/common](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common)) | [`10.4.10` -> `10.4.11`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/10.4.10/10.4.11) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/10.4.10/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/10.4.10/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/core](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core)) | [`10.4.10` -> `10.4.11`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/10.4.10/10.4.11) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/10.4.10/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/10.4.10/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-express](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express)) | [`10.4.10` -> `10.4.11`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/10.4.10/10.4.11) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-express/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-express/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-express/10.4.10/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-express/10.4.10/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-socket.io](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io)) | [`10.4.9` -> `10.4.11`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-socket.io/10.4.9/10.4.11) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-socket.io/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-socket.io/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-socket.io/10.4.9/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-socket.io/10.4.9/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/testing](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing)) | [`10.4.10` -> `10.4.11`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/10.4.10/10.4.11) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/10.4.10/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/10.4.10/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/websockets](https://redirect.github.com/nestjs/nest) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/websockets)) | [`10.4.9` -> `10.4.11`](https://renovatebot.com/diffs/npm/@nestjs%2fwebsockets/10.4.9/10.4.11) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fwebsockets/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fwebsockets/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fwebsockets/10.4.9/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fwebsockets/10.4.9/10.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nestjs/nest (@&#8203;nestjs/common)</summary>

### [`v10.4.11`](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/core)</summary>

### [`v10.4.11`](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-express)</summary>

### [`v10.4.11`](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-socket.io)</summary>

### [`v10.4.11`](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

### [`v10.4.10`](https://redirect.github.com/nestjs/nest/releases/tag/v10.4.10)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.9...v10.4.10)

##### v10.4.10 (2024-11-27)

##### Bug fixes

-   `platform-socket.io`, `websockets`
    -   [#&#8203;14204](https://redirect.github.com/nestjs/nest/pull/14204) fix(websockets): ensure non-shared servers call close method ([@&#8203;sapenlei](https://redirect.github.com/sapenlei))

##### Dependencies

-   [#&#8203;14221](https://redirect.github.com/nestjs/nest/pull/14221) chore(deps): update mysql docker tag to v8.4.3 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14220](https://redirect.github.com/nestjs/nest/pull/14220) chore(deps): update dependency webpack to v5.96.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14219](https://redirect.github.com/nestjs/nest/pull/14219) chore(deps): update dependency nodemon to v3.1.7 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14218](https://redirect.github.com/nestjs/nest/pull/14218) chore(deps): update confluentinc/cp-zookeeper docker tag to v7.7.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14217](https://redirect.github.com/nestjs/nest/pull/14217) chore(deps): update confluentinc/cp-kafka docker tag to v7.7.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14216](https://redirect.github.com/nestjs/nest/pull/14216) fix(deps): update dependency rimraf to v5.0.10 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14215](https://redirect.github.com/nestjs/nest/pull/14215) fix(deps): update dependency dotenv to v16.4.5 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14214](https://redirect.github.com/nestjs/nest/pull/14214) fix(deps): update dependency [@&#8203;grpc/reflection](https://redirect.github.com/grpc/reflection) to v1.0.4 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;12940](https://redirect.github.com/nestjs/nest/pull/12940) fix(deps): update dependency mongoose to v8.8.3 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14207](https://redirect.github.com/nestjs/nest/pull/14207) chore(deps): update dependency [@&#8203;types/dotenv](https://redirect.github.com/types/dotenv) to v8.2.3 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14208](https://redirect.github.com/nestjs/nest/pull/14208) chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.17.8 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14209](https://redirect.github.com/nestjs/nest/pull/14209) chore(deps): update dependency amqplib to v0.10.5 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14212](https://redirect.github.com/nestjs/nest/pull/14212) chore(deps): update dependency webpack to v5.94.0 \[security] ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14210](https://redirect.github.com/nestjs/nest/pull/14210) chore(deps): update dependency husky to v9.1.7 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14211](https://redirect.github.com/nestjs/nest/pull/14211) chore(deps): update nest monorepo ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14206](https://redirect.github.com/nestjs/nest/pull/14206) chore(deps-dev): bump mongoose from 8.8.1 to 8.8.3 ([@&#8203;dependabot\[bot\]](https://redirect.github.com/apps/dependabot))

##### Committers: 1

-   sapenlei ([@&#8203;sapenlei](https://redirect.github.com/sapenlei))

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/testing)</summary>

### [`v10.4.11`](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/websockets)</summary>

### [`v10.4.11`](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.10...v10.4.11)

### [`v10.4.10`](https://redirect.github.com/nestjs/nest/releases/tag/v10.4.10)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.9...v10.4.10)

##### v10.4.10 (2024-11-27)

##### Bug fixes

-   `platform-socket.io`, `websockets`
    -   [#&#8203;14204](https://redirect.github.com/nestjs/nest/pull/14204) fix(websockets): ensure non-shared servers call close method ([@&#8203;sapenlei](https://redirect.github.com/sapenlei))

##### Dependencies

-   [#&#8203;14221](https://redirect.github.com/nestjs/nest/pull/14221) chore(deps): update mysql docker tag to v8.4.3 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14220](https://redirect.github.com/nestjs/nest/pull/14220) chore(deps): update dependency webpack to v5.96.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14219](https://redirect.github.com/nestjs/nest/pull/14219) chore(deps): update dependency nodemon to v3.1.7 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14218](https://redirect.github.com/nestjs/nest/pull/14218) chore(deps): update confluentinc/cp-zookeeper docker tag to v7.7.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14217](https://redirect.github.com/nestjs/nest/pull/14217) chore(deps): update confluentinc/cp-kafka docker tag to v7.7.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14216](https://redirect.github.com/nestjs/nest/pull/14216) fix(deps): update dependency rimraf to v5.0.10 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14215](https://redirect.github.com/nestjs/nest/pull/14215) fix(deps): update dependency dotenv to v16.4.5 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14214](https://redirect.github.com/nestjs/nest/pull/14214) fix(deps): update dependency [@&#8203;grpc/reflection](https://redirect.github.com/grpc/reflection) to v1.0.4 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;12940](https://redirect.github.com/nestjs/nest/pull/12940) fix(deps): update dependency mongoose to v8.8.3 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14207](https://redirect.github.com/nestjs/nest/pull/14207) chore(deps): update dependency [@&#8203;types/dotenv](https://redirect.github.com/types/dotenv) to v8.2.3 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14208](https://redirect.github.com/nestjs/nest/pull/14208) chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.17.8 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14209](https://redirect.github.com/nestjs/nest/pull/14209) chore(deps): update dependency amqplib to v0.10.5 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14212](https://redirect.github.com/nestjs/nest/pull/14212) chore(deps): update dependency webpack to v5.94.0 \[security] ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14210](https://redirect.github.com/nestjs/nest/pull/14210) chore(deps): update dependency husky to v9.1.7 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14211](https://redirect.github.com/nestjs/nest/pull/14211) chore(deps): update nest monorepo ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14206](https://redirect.github.com/nestjs/nest/pull/14206) chore(deps-dev): bump mongoose from 8.8.1 to 8.8.3 ([@&#8203;dependabot\[bot\]](https://redirect.github.com/apps/dependabot))

##### Committers: 1

-   sapenlei ([@&#8203;sapenlei](https://redirect.github.com/sapenlei))

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-28 02:18:30 +00:00
renovate
8ab4ea7ed0 chore: bump up @blocksuite/affine version to v0.18.1 (#8948)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/affine](https://redirect.github.com/toeverything/blocksuite) ([source](https://redirect.github.com/toeverything/blocksuite/tree/HEAD/packages/affine/all), [changelog](https://redirect.github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md)) | [`0.18.0` -> `0.18.1`](https://renovatebot.com/diffs/npm/@blocksuite%2faffine/0.18.0/0.18.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2faffine/0.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2faffine/0.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2faffine/0.18.0/0.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2faffine/0.18.0/0.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/blocksuite (@&#8203;blocksuite/affine)</summary>

### [`v0.18.1`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0181)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.18.0...v0.18.1)

##### Patch Changes

-   [`e2d574c`](https://redirect.github.com/toeverything/blocksuite/commit/e2d574c): ## Feat

    -   feat: new doc dnd ([#&#8203;8808](https://redirect.github.com/toeverything/blocksuite/issues/8808))

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-27 13:07:19 +00:00
renovate
68337fa77c chore: bump up @blocksuite/icons version to v2.1.71 (#8941)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/icons](https://redirect.github.com/toeverything/icons) | [`2.1.70` -> `2.1.71`](https://renovatebot.com/diffs/npm/@blocksuite%2ficons/2.1.70/2.1.71) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2ficons/2.1.71?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2ficons/2.1.71?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2ficons/2.1.70/2.1.71?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2ficons/2.1.70/2.1.71?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/icons (@&#8203;blocksuite/icons)</summary>

### [`v2.1.71`](7a3a0b4244...c3f744f102)

[Compare Source](7a3a0b4244...c3f744f102)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-27 10:06:14 +00:00
renovate
8c19b6f8f0 chore: bump up nestjs to v10.4.10 (#8943)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/common](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common)) | [`10.4.9` -> `10.4.10`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/10.4.9/10.4.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/core](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core)) | [`10.4.9` -> `10.4.10`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/10.4.9/10.4.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-express](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express)) | [`10.4.9` -> `10.4.10`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/10.4.9/10.4.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-express/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-express/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-express/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-express/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-socket.io](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io)) | [`10.4.9` -> `10.4.10`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-socket.io/10.4.9/10.4.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-socket.io/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-socket.io/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-socket.io/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-socket.io/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/testing](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing)) | [`10.4.9` -> `10.4.10`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/10.4.9/10.4.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/websockets](https://redirect.github.com/nestjs/nest) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/websockets)) | [`10.4.9` -> `10.4.10`](https://renovatebot.com/diffs/npm/@nestjs%2fwebsockets/10.4.9/10.4.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fwebsockets/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fwebsockets/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fwebsockets/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fwebsockets/10.4.9/10.4.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nestjs/nest (@&#8203;nestjs/common)</summary>

### [`v10.4.10`](https://redirect.github.com/nestjs/nest/compare/v10.4.9...5ebe4b93b3411d072e91d0a6809c72dde606b129)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.9...5ebe4b93b3411d072e91d0a6809c72dde606b129)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/core)</summary>

### [`v10.4.10`](https://redirect.github.com/nestjs/nest/compare/v10.4.9...5ebe4b93b3411d072e91d0a6809c72dde606b129)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.9...5ebe4b93b3411d072e91d0a6809c72dde606b129)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-express)</summary>

### [`v10.4.10`](https://redirect.github.com/nestjs/nest/compare/v10.4.9...5ebe4b93b3411d072e91d0a6809c72dde606b129)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.9...5ebe4b93b3411d072e91d0a6809c72dde606b129)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-socket.io)</summary>

### [`v10.4.10`](https://redirect.github.com/nestjs/nest/releases/tag/v10.4.10)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.9...v10.4.10)

##### v10.4.10 (2024-11-27)

##### Bug fixes

-   `platform-socket.io`, `websockets`
    -   [#&#8203;14204](https://redirect.github.com/nestjs/nest/pull/14204) fix(websockets): ensure non-shared servers call close method ([@&#8203;sapenlei](https://redirect.github.com/sapenlei))

##### Dependencies

-   [#&#8203;14221](https://redirect.github.com/nestjs/nest/pull/14221) chore(deps): update mysql docker tag to v8.4.3 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14220](https://redirect.github.com/nestjs/nest/pull/14220) chore(deps): update dependency webpack to v5.96.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14219](https://redirect.github.com/nestjs/nest/pull/14219) chore(deps): update dependency nodemon to v3.1.7 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14218](https://redirect.github.com/nestjs/nest/pull/14218) chore(deps): update confluentinc/cp-zookeeper docker tag to v7.7.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14217](https://redirect.github.com/nestjs/nest/pull/14217) chore(deps): update confluentinc/cp-kafka docker tag to v7.7.1 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14216](https://redirect.github.com/nestjs/nest/pull/14216) fix(deps): update dependency rimraf to v5.0.10 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14215](https://redirect.github.com/nestjs/nest/pull/14215) fix(deps): update dependency dotenv to v16.4.5 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14214](https://redirect.github.com/nestjs/nest/pull/14214) fix(deps): update dependency [@&#8203;grpc/reflection](https://redirect.github.com/grpc/reflection) to v1.0.4 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;12940](https://redirect.github.com/nestjs/nest/pull/12940) fix(deps): update dependency mongoose to v8.8.3 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14207](https://redirect.github.com/nestjs/nest/pull/14207) chore(deps): update dependency [@&#8203;types/dotenv](https://redirect.github.com/types/dotenv) to v8.2.3 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14208](https://redirect.github.com/nestjs/nest/pull/14208) chore(deps): update dependency [@&#8203;types/node](https://redirect.github.com/types/node) to v20.17.8 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14209](https://redirect.github.com/nestjs/nest/pull/14209) chore(deps): update dependency amqplib to v0.10.5 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14212](https://redirect.github.com/nestjs/nest/pull/14212) chore(deps): update dependency webpack to v5.94.0 \[security] ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14210](https://redirect.github.com/nestjs/nest/pull/14210) chore(deps): update dependency husky to v9.1.7 ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14211](https://redirect.github.com/nestjs/nest/pull/14211) chore(deps): update nest monorepo ([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   [#&#8203;14206](https://redirect.github.com/nestjs/nest/pull/14206) chore(deps-dev): bump mongoose from 8.8.1 to 8.8.3 ([@&#8203;dependabot\[bot\]](https://redirect.github.com/apps/dependabot))

##### Committers: 1

-   sapenlei ([@&#8203;sapenlei](https://redirect.github.com/sapenlei))

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/testing)</summary>

### [`v10.4.10`](https://redirect.github.com/nestjs/nest/compare/v10.4.9...5ebe4b93b3411d072e91d0a6809c72dde606b129)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.9...5ebe4b93b3411d072e91d0a6809c72dde606b129)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-27 09:49:16 +00:00
renovate
693ec6adc4 chore: bump up all non-major dependencies (#8781)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@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.688.0` -> `3.701.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.688.0/3.701.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.701.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.701.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.688.0/3.701.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.688.0/3.701.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@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.688.0` -> `3.701.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.688.0/3.701.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.701.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.701.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.688.0/3.701.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.688.0/3.701.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@capacitor/android](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`6.1.2` -> `6.2.0`](https://renovatebot.com/diffs/npm/@capacitor%2fandroid/6.1.2/6.2.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fandroid/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fandroid/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fandroid/6.1.2/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fandroid/6.1.2/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@capacitor/app](https://redirect.github.com/ionic-team/capacitor-plugins) | [`6.0.1` -> `6.0.2`](https://renovatebot.com/diffs/npm/@capacitor%2fapp/6.0.1/6.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fapp/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fapp/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fapp/6.0.1/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fapp/6.0.1/6.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@capacitor/browser](https://redirect.github.com/ionic-team/capacitor-plugins) | [`6.0.3` -> `6.0.4`](https://renovatebot.com/diffs/npm/@capacitor%2fbrowser/6.0.3/6.0.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fbrowser/6.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fbrowser/6.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fbrowser/6.0.3/6.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fbrowser/6.0.3/6.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@capacitor/cli](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`6.1.2` -> `6.2.0`](https://renovatebot.com/diffs/npm/@capacitor%2fcli/6.1.2/6.2.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcli/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fcli/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fcli/6.1.2/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcli/6.1.2/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@capacitor/core](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`6.1.2` -> `6.2.0`](https://renovatebot.com/diffs/npm/@capacitor%2fcore/6.1.2/6.2.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fcore/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fcore/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fcore/6.1.2/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fcore/6.1.2/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@capacitor/ios](https://capacitorjs.com) ([source](https://redirect.github.com/ionic-team/capacitor)) | [`6.1.2` -> `6.2.0`](https://renovatebot.com/diffs/npm/@capacitor%2fios/6.1.2/6.2.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fios/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fios/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fios/6.1.2/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fios/6.1.2/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@capacitor/keyboard](https://redirect.github.com/ionic-team/capacitor-plugins) | [`6.0.2` -> `6.0.3`](https://renovatebot.com/diffs/npm/@capacitor%2fkeyboard/6.0.2/6.0.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@capacitor%2fkeyboard/6.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@capacitor%2fkeyboard/6.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@capacitor%2fkeyboard/6.0.2/6.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@capacitor%2fkeyboard/6.0.2/6.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@clack/core](https://redirect.github.com/natemoo-re/clack/tree/main/packages/core#readme) ([source](https://redirect.github.com/natemoo-re/clack/tree/HEAD/packages/core)) | [`0.3.4` -> `0.3.5`](https://renovatebot.com/diffs/npm/@clack%2fcore/0.3.4/0.3.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@clack%2fcore/0.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@clack%2fcore/0.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@clack%2fcore/0.3.4/0.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@clack%2fcore/0.3.4/0.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@clack/prompts](https://redirect.github.com/natemoo-re/clack/tree/main/packages/prompts#readme) ([source](https://redirect.github.com/natemoo-re/clack/tree/HEAD/packages/prompts)) | [`^0.7.0` -> `^0.8.0`](https://renovatebot.com/diffs/npm/@clack%2fprompts/0.7.0/0.8.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@clack%2fprompts/0.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@clack%2fprompts/0.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@clack%2fprompts/0.7.0/0.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@clack%2fprompts/0.7.0/0.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@commitlint/cli](https://commitlint.js.org/) ([source](https://redirect.github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli)) | [`19.5.0` -> `19.6.0`](https://renovatebot.com/diffs/npm/@commitlint%2fcli/19.5.0/19.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@commitlint%2fcli/19.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@commitlint%2fcli/19.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@commitlint%2fcli/19.5.0/19.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@commitlint%2fcli/19.5.0/19.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@commitlint/config-conventional](https://commitlint.js.org/) ([source](https://redirect.github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional)) | [`19.5.0` -> `19.6.0`](https://renovatebot.com/diffs/npm/@commitlint%2fconfig-conventional/19.5.0/19.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@commitlint%2fconfig-conventional/19.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@commitlint%2fconfig-conventional/19.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@commitlint%2fconfig-conventional/19.5.0/19.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@commitlint%2fconfig-conventional/19.5.0/19.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@dnd-kit/core](https://redirect.github.com/clauderic/dnd-kit) ([source](https://redirect.github.com/clauderic/dnd-kit/tree/HEAD/packages/core)) | [`6.1.0` -> `6.2.0`](https://renovatebot.com/diffs/npm/@dnd-kit%2fcore/6.1.0/6.2.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@dnd-kit%2fcore/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@dnd-kit%2fcore/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@dnd-kit%2fcore/6.1.0/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@dnd-kit%2fcore/6.1.0/6.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@electron-forge/cli](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fcli/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fcli/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fcli/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fcli/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fcli/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/core](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fcore/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fcore/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fcore/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fcore/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fcore/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/core-utils](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fcore-utils/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fcore-utils/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fcore-utils/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fcore-utils/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fcore-utils/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/maker-base](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-base/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-base/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-base/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-base/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-base/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | resolutions | minor |
| [@electron-forge/maker-deb](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-deb/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-deb/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-deb/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-deb/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-deb/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/maker-dmg](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-dmg/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-dmg/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-dmg/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-dmg/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-dmg/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/maker-flatpak](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-flatpak/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-flatpak/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-flatpak/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-flatpak/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-flatpak/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/maker-squirrel](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-squirrel/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-squirrel/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-squirrel/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-squirrel/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-squirrel/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/maker-zip](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-zip/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-zip/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-zip/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-zip/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-zip/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/plugin-auto-unpack-natives](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fplugin-auto-unpack-natives/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fplugin-auto-unpack-natives/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fplugin-auto-unpack-natives/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fplugin-auto-unpack-natives/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fplugin-auto-unpack-natives/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/shared-types](https://redirect.github.com/electron/forge) | [`7.5.0` -> `7.6.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fshared-types/7.5.0/7.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fshared-types/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fshared-types/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fshared-types/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fshared-types/7.5.0/7.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@emotion/cache](https://redirect.github.com/emotion-js/emotion/tree/main#readme) ([source](https://redirect.github.com/emotion-js/emotion)) | [`11.13.1` -> `11.13.5`](https://renovatebot.com/diffs/npm/@emotion%2fcache/11.13.1/11.13.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@emotion%2fcache/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@emotion%2fcache/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@emotion%2fcache/11.13.1/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@emotion%2fcache/11.13.1/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@emotion/react](https://redirect.github.com/emotion-js/emotion/tree/main#readme) ([source](https://redirect.github.com/emotion-js/emotion)) | [`11.13.3` -> `11.13.5`](https://renovatebot.com/diffs/npm/@emotion%2freact/11.13.3/11.13.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@emotion%2freact/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@emotion%2freact/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@emotion%2freact/11.13.3/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@emotion%2freact/11.13.3/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@emotion/react](https://redirect.github.com/emotion-js/emotion/tree/main#readme) ([source](https://redirect.github.com/emotion-js/emotion)) | [`11.13.3` -> `11.13.5`](https://renovatebot.com/diffs/npm/@emotion%2freact/11.13.3/11.13.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@emotion%2freact/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@emotion%2freact/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@emotion%2freact/11.13.3/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@emotion%2freact/11.13.3/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@emotion/styled](https://redirect.github.com/emotion-js/emotion/tree/main#readme) ([source](https://redirect.github.com/emotion-js/emotion)) | [`11.13.0` -> `11.13.5`](https://renovatebot.com/diffs/npm/@emotion%2fstyled/11.13.0/11.13.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@emotion%2fstyled/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@emotion%2fstyled/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@emotion%2fstyled/11.13.0/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@emotion%2fstyled/11.13.0/11.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@graphql-codegen/typescript](https://redirect.github.com/dotansimha/graphql-code-generator) ([source](https://redirect.github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/plugins/typescript/typescript)) | [`4.1.1` -> `4.1.2`](https://renovatebot.com/diffs/npm/@graphql-codegen%2ftypescript/4.1.1/4.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-codegen%2ftypescript/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-codegen%2ftypescript/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-codegen%2ftypescript/4.1.1/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-codegen%2ftypescript/4.1.1/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@graphql-codegen/typescript-operations](https://redirect.github.com/dotansimha/graphql-code-generator) ([source](https://redirect.github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/plugins/typescript/operations)) | [`4.3.1` -> `4.4.0`](https://renovatebot.com/diffs/npm/@graphql-codegen%2ftypescript-operations/4.3.1/4.4.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-codegen%2ftypescript-operations/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-codegen%2ftypescript-operations/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-codegen%2ftypescript-operations/4.3.1/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-codegen%2ftypescript-operations/4.3.1/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@marsidev/react-turnstile](https://redirect.github.com/marsidev/react-turnstile) | [`1.0.2` -> `1.1.0`](https://renovatebot.com/diffs/npm/@marsidev%2freact-turnstile/1.0.2/1.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@marsidev%2freact-turnstile/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@marsidev%2freact-turnstile/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@marsidev%2freact-turnstile/1.0.2/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@marsidev%2freact-turnstile/1.0.2/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/core](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.27.0` -> `1.28.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fcore/1.27.0/1.28.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fcore/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fcore/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fcore/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fcore/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/exporter-prometheus](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`^0.54.0` -> `^0.55.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fexporter-prometheus/0.54.2/0.55.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fexporter-prometheus/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fexporter-prometheus/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fexporter-prometheus/0.54.2/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fexporter-prometheus/0.54.2/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/exporter-zipkin](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-zipkin) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.27.0` -> `1.28.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fexporter-zipkin/1.27.0/1.28.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fexporter-zipkin/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fexporter-zipkin/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fexporter-zipkin/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fexporter-zipkin/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`^0.54.0` -> `^0.55.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation/0.54.2/0.55.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation/0.54.2/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation/0.54.2/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-graphql](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-graphql#readme) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.44.0` -> `^0.45.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-graphql/0.44.0/0.45.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-graphql/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-graphql/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-graphql/0.44.0/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-graphql/0.44.0/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-http](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`^0.54.0` -> `^0.55.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-http/0.54.2/0.55.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-http/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-http/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-http/0.54.2/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-http/0.54.2/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-ioredis](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis#readme) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.44.0` -> `^0.45.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-ioredis/0.44.0/0.45.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-ioredis/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-ioredis/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-ioredis/0.44.0/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-ioredis/0.44.0/0.45.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-nestjs-core](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.41.0` -> `^0.42.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-nestjs-core/0.41.0/0.42.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-nestjs-core/0.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-nestjs-core/0.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-nestjs-core/0.41.0/0.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-nestjs-core/0.41.0/0.42.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-socket.io](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.43.0` -> `^0.44.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-socket.io/0.43.0/0.44.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-socket.io/0.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-socket.io/0.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-socket.io/0.43.0/0.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-socket.io/0.43.0/0.44.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/resources](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.27.0` -> `1.28.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fresources/1.27.0/1.28.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fresources/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fresources/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fresources/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fresources/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/sdk-metrics](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/packages/sdk-metrics) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.27.0` -> `1.28.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-metrics/1.27.0/1.28.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsdk-metrics/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsdk-metrics/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsdk-metrics/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsdk-metrics/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/sdk-node](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`^0.54.0` -> `^0.55.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-node/0.54.2/0.55.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsdk-node/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsdk-node/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsdk-node/0.54.2/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsdk-node/0.54.2/0.55.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/sdk-trace-node](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.27.0` -> `1.28.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-trace-node/1.27.0/1.28.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsdk-trace-node/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsdk-trace-node/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsdk-trace-node/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsdk-trace-node/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/semantic-conventions](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`1.27.0` -> `1.28.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsemantic-conventions/1.27.0/1.28.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsemantic-conventions/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsemantic-conventions/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsemantic-conventions/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsemantic-conventions/1.27.0/1.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@playwright/test](https://playwright.dev) ([source](https://redirect.github.com/microsoft/playwright)) | [`=1.48.2` -> `=1.49.0`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.48.2/1.49.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.48.2/1.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.48.2/1.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@radix-ui/react-scroll-area](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.2.0` -> `1.2.1`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-scroll-area/1.2.0/1.2.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-scroll-area/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-scroll-area/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-scroll-area/1.2.0/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-scroll-area/1.2.0/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@radix-ui/react-tooltip](https://radix-ui.com/primitives) ([source](https://redirect.github.com/radix-ui/primitives)) | [`1.1.3` -> `1.1.4`](https://renovatebot.com/diffs/npm/@radix-ui%2freact-tooltip/1.1.3/1.1.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@radix-ui%2freact-tooltip/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@radix-ui%2freact-tooltip/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@radix-ui%2freact-tooltip/1.1.3/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@radix-ui%2freact-tooltip/1.1.3/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://redirect.github.com/getsentry/sentry-javascript)) | [`8.37.1` -> `8.40.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.37.1/8.40.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/8.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2freact/8.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2freact/8.37.1/8.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/8.37.1/8.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@sentry/react](https://redirect.github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://redirect.github.com/getsentry/sentry-javascript)) | [`8.37.1` -> `8.40.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.37.1/8.40.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@sentry%2freact/8.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@sentry%2freact/8.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@sentry%2freact/8.37.1/8.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sentry%2freact/8.37.1/8.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@storybook/addon-essentials](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/essentials) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/essentials)) | [`8.4.2` -> `8.4.5`](https://renovatebot.com/diffs/npm/@storybook%2faddon-essentials/8.4.2/8.4.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-essentials/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-essentials/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-essentials/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-essentials/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/addon-interactions](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/interactions) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions)) | [`8.4.2` -> `8.4.5`](https://renovatebot.com/diffs/npm/@storybook%2faddon-interactions/8.4.2/8.4.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-interactions/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-interactions/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-interactions/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-interactions/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/addon-links](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/links) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/links)) | [`8.4.2` -> `8.4.5`](https://renovatebot.com/diffs/npm/@storybook%2faddon-links/8.4.2/8.4.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-links/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-links/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-links/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-links/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/addon-mdx-gfm](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/gfm) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/gfm)) | [`8.4.2` -> `8.4.5`](https://renovatebot.com/diffs/npm/@storybook%2faddon-mdx-gfm/8.4.2/8.4.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-mdx-gfm/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-mdx-gfm/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-mdx-gfm/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-mdx-gfm/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/react](https://redirect.github.com/storybookjs/storybook/tree/next/code/renderers/react) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/renderers/react)) | [`8.4.2` -> `8.4.5`](https://renovatebot.com/diffs/npm/@storybook%2freact/8.4.2/8.4.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2freact/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2freact/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2freact/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2freact/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@storybook/react-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/frameworks/react-vite) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-vite)) | [`8.4.2` -> `8.4.5`](https://renovatebot.com/diffs/npm/@storybook%2freact-vite/8.4.2/8.4.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2freact-vite/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2freact-vite/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2freact-vite/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2freact-vite/8.4.2/8.4.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@swc/core](https://swc.rs) ([source](https://redirect.github.com/swc-project/swc)) | [`1.9.2` -> `1.9.3`](https://renovatebot.com/diffs/npm/@swc%2fcore/1.9.2/1.9.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@swc%2fcore/1.9.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@swc%2fcore/1.9.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@swc%2fcore/1.9.2/1.9.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@swc%2fcore/1.9.2/1.9.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@types/cookie-parser](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/cookie-parser) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/cookie-parser)) | [`1.4.7` -> `1.4.8`](https://renovatebot.com/diffs/npm/@types%2fcookie-parser/1.4.7/1.4.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fcookie-parser/1.4.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fcookie-parser/1.4.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fcookie-parser/1.4.7/1.4.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fcookie-parser/1.4.7/1.4.8?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)) | [`20.17.6` -> `20.17.8`](https://renovatebot.com/diffs/npm/@types%2fnode/20.17.6/20.17.8) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.17.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.17.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.17.6/20.17.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.17.6/20.17.8?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@types/nodemailer](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/nodemailer) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/nodemailer)) | [`6.4.16` -> `6.4.17`](https://renovatebot.com/diffs/npm/@types%2fnodemailer/6.4.16/6.4.17) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnodemailer/6.4.17?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnodemailer/6.4.17?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnodemailer/6.4.16/6.4.17?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnodemailer/6.4.16/6.4.17?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@vanilla-extract/css](https://redirect.github.com/vanilla-extract-css/vanilla-extract) ([source](https://redirect.github.com/vanilla-extract-css/vanilla-extract/tree/HEAD/packages/css)) | [`1.16.0` -> `1.16.1`](https://renovatebot.com/diffs/npm/@vanilla-extract%2fcss/1.16.0/1.16.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vanilla-extract%2fcss/1.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vanilla-extract%2fcss/1.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vanilla-extract%2fcss/1.16.0/1.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vanilla-extract%2fcss/1.16.0/1.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@vanilla-extract/vite-plugin](https://redirect.github.com/vanilla-extract-css/vanilla-extract) ([source](https://redirect.github.com/vanilla-extract-css/vanilla-extract/tree/HEAD/packages/vite-plugin)) | [`4.0.17` -> `4.0.18`](https://renovatebot.com/diffs/npm/@vanilla-extract%2fvite-plugin/4.0.17/4.0.18) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vanilla-extract%2fvite-plugin/4.0.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vanilla-extract%2fvite-plugin/4.0.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vanilla-extract%2fvite-plugin/4.0.17/4.0.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vanilla-extract%2fvite-plugin/4.0.17/4.0.18?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@vanilla-extract/webpack-plugin](https://redirect.github.com/vanilla-extract-css/vanilla-extract) ([source](https://redirect.github.com/vanilla-extract-css/vanilla-extract/tree/HEAD/packages/webpack-plugin)) | [`2.3.14` -> `2.3.15`](https://renovatebot.com/diffs/npm/@vanilla-extract%2fwebpack-plugin/2.3.14/2.3.15) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vanilla-extract%2fwebpack-plugin/2.3.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vanilla-extract%2fwebpack-plugin/2.3.15?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vanilla-extract%2fwebpack-plugin/2.3.1
2024-11-27 09:26:51 +00:00
pengx17
f2398574ed fix(electron): should not show context menu if there is no typos (#8895)
fix AF-1794
2024-11-27 07:00:45 +00:00
EYHN
6e25243868 refactor(infra): refactor copilot client (#8813) 2024-11-27 06:44:47 +00:00
EYHN
6b4a1aa917 refactor(core): initial multiple servers infra (#8745)
This is the initial refactoring of affine to support multiple servers, but many more changes are needed to make multi-server actually work.
2024-11-27 06:44:46 +00:00
EYHN
3f4cb5be40 fix(core): improve doc meta performance (#8913) 2024-11-27 14:18:06 +08:00
pengx17
83c587f8ad feat(core): at menu journal entries (#8877) (#8935)
fix AF-1790
fix AF-1774
added `DateSelectorDialog` for selecting a date through blocksuite;
added `AtMenuConfigService` for constructing the at menu config
fix AF-1776
fix PD-1942

resubmitted to replace #8877
2024-11-27 03:08:11 +00:00
donteatfriedrice
e3a8f1e9bd fix(core): log error detail when import failed (#8930) 2024-11-26 16:09:38 +00:00
doodlewind
6ac8cca440 fix(mobile): disable AI chat block peek on mobile (#8929) 2024-11-26 11:06:15 +00:00
renovate
75516c7584 chore: bump up i18next version to v24 (#8898)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [i18next](https://www.i18next.com) ([source](https://redirect.github.com/i18next/i18next)) | [`^23.11.1` -> `^24.0.0`](https://renovatebot.com/diffs/npm/i18next/23.16.5/24.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/i18next/24.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/i18next/24.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/i18next/23.16.5/24.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/i18next/23.16.5/24.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>i18next/i18next (i18next)</summary>

### [`v24.0.0`](https://redirect.github.com/i18next/i18next/blob/HEAD/CHANGELOG.md#2400)

[Compare Source](https://redirect.github.com/i18next/i18next/compare/v23.16.8...v24.0.0)

**This is a major breaking release:**

-   remove support for older environments
-   remove old i18next JSON formats
    -   To convert your existing v3 translations to the v4 format, have a look at [i18next-v4-format-converter](https://redirect.github.com/i18next/i18next-v4-format-converter) or this [web tool](https://i18next.github.io/i18next-v4-format-converter-web/).
-   remove support for compatibility to v1 API
-   Intl API is mandatory now and will not fallback anymore
-   possible compatibility layer for older formats: `test/compatibility/v4/v4Compatibility.js`
-   rename `initImmediate` to `initAsync`
-   fallback to `dev` language if plural rule not found
-   remove TypeScript v4 support. TypeScript v5 is now an optional peer dependency
-   addresses
    -   [2244](https://redirect.github.com/i18next/i18next/pull/2244)
    -   [2184](https://redirect.github.com/i18next/i18next/pull/2184)
    -   [2213](https://redirect.github.com/i18next/i18next/issues/2213)
    -   [2206](https://redirect.github.com/i18next/i18next/pull/2206)
    -   [2208](https://redirect.github.com/i18next/i18next/issues/2208)
    -   [2148](https://redirect.github.com/i18next/i18next/issues/2148)
    -   [2254](https://redirect.github.com/i18next/i18next/issues/2254)

➡️ check out the [migration guide](https://www.i18next.com/misc/migration-guide#v23.x.x-to-v24.0.0)

### [`v23.16.8`](https://redirect.github.com/i18next/i18next/blob/HEAD/CHANGELOG.md#23168)

[Compare Source](https://redirect.github.com/i18next/i18next/compare/v23.16.7...v23.16.8)

-   fix(plural): Create cache entry for PluralRules created as part of the fallback flow [2256](https://redirect.github.com/i18next/i18next/pull/2256)

### [`v23.16.7`](https://redirect.github.com/i18next/i18next/blob/HEAD/CHANGELOG.md#23167)

[Compare Source](https://redirect.github.com/i18next/i18next/compare/v23.16.6...v23.16.7)

-   if plural rule is not found, try to search with language only code [2252](https://redirect.github.com/i18next/i18next/issues/2252)

### [`v23.16.6`](https://redirect.github.com/i18next/i18next/blob/HEAD/CHANGELOG.md#23166)

[Compare Source](https://redirect.github.com/i18next/i18next/compare/v23.16.5...v23.16.6)

-   fix: Small typo in the type definitions [2250](https://redirect.github.com/i18next/i18next/pull/2250)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-26 10:51:10 +00:00
renovate
6698ecc804 chore: bump up dnd-kit monorepo (major) (#8902)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@dnd-kit/modifiers](https://redirect.github.com/clauderic/dnd-kit) ([source](https://redirect.github.com/clauderic/dnd-kit/tree/HEAD/packages/modifiers)) | [`^7.0.0` -> `^8.0.0`](https://renovatebot.com/diffs/npm/@dnd-kit%2fmodifiers/7.0.0/8.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@dnd-kit%2fmodifiers/8.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@dnd-kit%2fmodifiers/8.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@dnd-kit%2fmodifiers/7.0.0/8.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@dnd-kit%2fmodifiers/7.0.0/8.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@dnd-kit/sortable](https://redirect.github.com/clauderic/dnd-kit) ([source](https://redirect.github.com/clauderic/dnd-kit/tree/HEAD/packages/sortable)) | [`^8.0.0` -> `^9.0.0`](https://renovatebot.com/diffs/npm/@dnd-kit%2fsortable/8.0.0/9.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@dnd-kit%2fsortable/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@dnd-kit%2fsortable/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@dnd-kit%2fsortable/8.0.0/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@dnd-kit%2fsortable/8.0.0/9.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>clauderic/dnd-kit (@&#8203;dnd-kit/modifiers)</summary>

### [`v8.0.0`](https://redirect.github.com/clauderic/dnd-kit/blob/HEAD/packages/modifiers/CHANGELOG.md#800)

[Compare Source](https://redirect.github.com/clauderic/dnd-kit/compare/@dnd-kit/modifiers@7.0.0...@dnd-kit/modifiers@8.0.0)

##### Patch Changes

-   Updated dependencies \[[`00ec286`](00ec286ab2), [`995dc23`](995dc23b7c), [`f629ec6`](f629ec6a9c), [`99643f6`](99643f634c), [`6bbe39b`](6bbe39bba6), [`545a41c`](545a41c27c), [`bcaf7c4`](bcaf7c4e57)]:
    -   [@&#8203;dnd-kit/core](https://redirect.github.com/dnd-kit/core)[@&#8203;6](https://redirect.github.com/6).2.0

</details>

<details>
<summary>clauderic/dnd-kit (@&#8203;dnd-kit/sortable)</summary>

### [`v9.0.0`](https://redirect.github.com/clauderic/dnd-kit/blob/HEAD/packages/sortable/CHANGELOG.md#900)

[Compare Source](https://redirect.github.com/clauderic/dnd-kit/compare/@dnd-kit/sortable@8.0.0...@dnd-kit/sortable@9.0.0)

##### Patch Changes

-   [#&#8203;1542](https://redirect.github.com/clauderic/dnd-kit/pull/1542) [`f629ec6`](f629ec6a9c) Thanks [@&#8203;clauderic](https://redirect.github.com/clauderic)! - Fix bug with draggable and sortable elements with an `id` equal to `0`.

-   Updated dependencies \[[`00ec286`](00ec286ab2), [`995dc23`](995dc23b7c), [`f629ec6`](f629ec6a9c), [`99643f6`](99643f634c), [`6bbe39b`](6bbe39bba6), [`545a41c`](545a41c27c), [`bcaf7c4`](bcaf7c4e57)]:
    -   [@&#8203;dnd-kit/core](https://redirect.github.com/dnd-kit/core)[@&#8203;6](https://redirect.github.com/6).2.0

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-26 10:34:17 +00:00
doodlewind
ba325a6040 chore: update env example (#8909)
This aligns better with the postgres config in [server development guide](https://github.com/toeverything/AFFiNE/blob/canary/docs/developing-server.md).
2024-11-26 10:17:16 +00:00
renovate
4e47eb4fd5 chore: bump up nestjs to v10.4.9 (#8921)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/common](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common)) | [`10.4.8` -> `10.4.9`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/10.4.8/10.4.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/core](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core)) | [`10.4.8` -> `10.4.9`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/10.4.8/10.4.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-express](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express)) | [`10.4.8` -> `10.4.9`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/10.4.8/10.4.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-express/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-express/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-express/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-express/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/platform-socket.io](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io)) | [`10.4.8` -> `10.4.9`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-socket.io/10.4.8/10.4.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-socket.io/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-socket.io/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-socket.io/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-socket.io/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/testing](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing)) | [`10.4.8` -> `10.4.9`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/10.4.8/10.4.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nestjs/websockets](https://redirect.github.com/nestjs/nest) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/websockets)) | [`10.4.8` -> `10.4.9`](https://renovatebot.com/diffs/npm/@nestjs%2fwebsockets/10.4.8/10.4.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fwebsockets/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fwebsockets/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fwebsockets/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fwebsockets/10.4.8/10.4.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nestjs/nest (@&#8203;nestjs/common)</summary>

### [`v10.4.9`](https://redirect.github.com/nestjs/nest/compare/v10.4.8...416830c3924b37ec354d4e15c14119519e389afc)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.8...v10.4.9)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/core)</summary>

### [`v10.4.9`](https://redirect.github.com/nestjs/nest/compare/v10.4.8...416830c3924b37ec354d4e15c14119519e389afc)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.8...v10.4.9)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-express)</summary>

### [`v10.4.9`](https://redirect.github.com/nestjs/nest/compare/v10.4.8...416830c3924b37ec354d4e15c14119519e389afc)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.8...v10.4.9)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-socket.io)</summary>

### [`v10.4.9`](https://redirect.github.com/nestjs/nest/compare/v10.4.8...416830c3924b37ec354d4e15c14119519e389afc)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.8...v10.4.9)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/testing)</summary>

### [`v10.4.9`](https://redirect.github.com/nestjs/nest/compare/v10.4.8...416830c3924b37ec354d4e15c14119519e389afc)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.8...v10.4.9)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/websockets)</summary>

### [`v10.4.9`](https://redirect.github.com/nestjs/nest/compare/v10.4.8...416830c3924b37ec354d4e15c14119519e389afc)

[Compare Source](https://redirect.github.com/nestjs/nest/compare/v10.4.8...v10.4.9)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-26 10:00:20 +00:00
Boshen
c349a24e95 chore: upgrade oxlint to v0.13.2 (#8891)
Co-authored-by: LongYinan <lynweklm@gmail.com>
2024-11-26 17:56:35 +08:00
pengx17
d87a6f7068 fix(core): multi sub menu layer handling (#8916)
fix AF-1800, AF-1801

<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/T2klNLEk0wxLh4NRDzhk/7523df2b-2326-4878-b37a-d16e4275858d.mp4">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/T2klNLEk0wxLh4NRDzhk/7523df2b-2326-4878-b37a-d16e4275858d.mp4">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/7523df2b-2326-4878-b37a-d16e4275858d.mp4">20241126-0806-30.0904958.mp4</video>
2024-11-26 08:39:09 +00:00
JimmFly
e12d5f8750 fix(core): multiple settings dialog should not appear when click user plan button repeatedly (#8924) 2024-11-26 05:49:12 +00:00
JimmFly
31c806ef7e fix(core): handle the situation where the app cannot be opened after logging in (#8915)
Added buttons to open the web version of AFFiNE and download the latest client to handle the situation where the application cannot be opened after logging in.

![CleanShot 2024-11-25 at 17 19 37@2x](https://github.com/user-attachments/assets/fd4e00fa-61a2-45ac-9bbc-fc4e4a8abc4e)
2024-11-25 11:04:20 +00:00
renovate
70633d0d16 chore: bump up @blocksuite/affine version to v0.18.0 (#8899)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/affine](https://redirect.github.com/toeverything/blocksuite) ([source](https://redirect.github.com/toeverything/blocksuite/tree/HEAD/packages/affine/all), [changelog](https://redirect.github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md)) | [`0.17.33` -> `0.18.0`](https://renovatebot.com/diffs/npm/@blocksuite%2faffine/0.17.33/0.18.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2faffine/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2faffine/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2faffine/0.17.33/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2faffine/0.17.33/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/blocksuite (@&#8203;blocksuite/affine)</summary>

### [`v0.18.0`](https://redirect.github.com/toeverything/blocksuite/blob/HEAD/packages/affine/all/CHANGELOG.md#0180)

[Compare Source](https://redirect.github.com/toeverything/blocksuite/compare/v0.17.33...v0.18.0)

##### Minor Changes

-   [`9daa1f3`](https://redirect.github.com/toeverything/blocksuite/commit/9daa1f3): ## Feat

    -   feat(blocks): markdown adapter reference serialization and deserialization ([#&#8203;8782](https://redirect.github.com/toeverything/blocksuite/issues/8782))
    -   feat(blocks): add lazy loading to image and iframe ([#&#8203;8773](https://redirect.github.com/toeverything/blocksuite/issues/8773))

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-25 08:58:22 +00:00
liuyi
0a20332674 fix(core): wrong app scheme fallback (#8914) 2024-11-25 08:47:22 +00:00
CatsJuice
7c846c4434 fix(core): cannot view pricing page if not logged in (#8907)
Due to lifetime plan card show `Upgrade` button that require accout, should show `Login` instead
2024-11-25 07:32:17 +00:00
JimmFly
4ce8a180aa fix(core): image block size limits were not enforced as expected (#8908) 2024-11-25 07:15:14 +00:00
doodlewind
08ff619d47 chore(cli): enable accessing dev server by host name (#8912)
This PR is particularly useful for debugging mobile app (and any other personal devices for testing) via [Tailscale](https://tailscale.com/), since it allows accessing a stable hostname on phone, instead of typing in an unstable IP address.

Before:

![image](https://github.com/user-attachments/assets/6ca9edd5-11b1-449b-bf8d-0423cb8a53fe)

After:

![image](https://github.com/user-attachments/assets/9df7710f-f662-4a3c-83c4-cf5f28d7c64f)
2024-11-25 06:58:14 +00:00
pengx17
f6eb84a8e0 fix(mobile): setting item popover cannot be closed (#8910)
fix AF-1798
2024-11-25 05:54:48 +00:00
CatsJuice
b369ee0cca feat(mobile): disable swipe back gesture when there is no back in header (#8876)
close AF-1663, AF-1756

- new global `ModalConfigContext`
- new logic to judge whether inside modal
- render `✕` for PageHeader back if inside modal
- only enable `NavigationGesture` when there is `<` in PageHeader
2024-11-25 03:12:21 +00:00
CatsJuice
922db5ced4 feat(mobile): editor mode switch (#8896) 2024-11-25 02:54:51 +00:00
CatsJuice
5994814db8 feat(mobile): sticky journal date-picker, auto fold when scroll (#8885) 2024-11-22 10:06:42 +00:00
liuyi
ad10690043 fix(server): ignore invalid subscription variant for subscriptinos query as well (#8894) 2024-11-22 13:50:21 +08:00
liuyi
b5fed7b01d fix(server): ignore invalid subscription variant (#8892) 2024-11-22 03:57:38 +00:00
forehalo
cd30e1a54b feat(nbstore): add idb implementation (#8809) 2024-11-22 03:13:05 +00:00
forehalo
64656d198c feat(nbstore): adapt op pattern (#8808) 2024-11-22 03:13:05 +00:00
forehalo
4125038ff8 feat(nbstore): init (#7639)
TODO

- [x] basic
- [x] storages
- [x] producer/consumer
- [x] operation pattern
- [x] events
- [x] worker
- [x] readme
- [x] peer dependencies
2024-11-22 03:13:04 +00:00
EYHN
76eabf644c fix(core): fix auth session not revalidating as expected (#8886) 2024-11-21 09:57:25 +00:00
EYHN
a4c749b882 refactor(core): independent app fallback for mobile (#8884) 2024-11-21 09:38:01 +00:00
akumatus
c6ac426b4c fix: ai ppt preview with toolbar widget (#8882)
Fix issue [AF-1716](https://linear.app/affine-design/issue/AF-1716).
2024-11-21 06:56:26 +00:00
CatsJuice
a6232849e3 feat(mobile): doc property journal duplicated action (#8820) 2024-11-21 06:40:22 +00:00
CatsJuice
c408d73257 fix(mobile): fix home header setting icon (#8859) 2024-11-21 02:05:26 +00:00
renovate
2624e26d72 chore: bump up oxlint version to v0.12.0 (#8875)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [oxlint](https://oxc.rs) ([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxlint)) | [`0.11.1` -> `0.12.0`](https://renovatebot.com/diffs/npm/oxlint/0.11.1/0.12.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/oxlint/0.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxlint/0.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxlint/0.11.1/0.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxlint/0.11.1/0.12.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>oxc-project/oxc (oxlint)</summary>

### [`v0.12.0`](https://redirect.github.com/oxc-project/oxc/blob/HEAD/npm/oxlint/CHANGELOG.md#0120---2024-11-20)

[Compare Source](https://redirect.github.com/oxc-project/oxc/compare/oxlint_v0.11.1...oxlint_v0.12.0)

##### Features

-   [`2268a0e`](https://redirect.github.com/oxc-project/oxc/commit/2268a0e) linter: Support `overrides` config field ([#&#8203;6974](https://redirect.github.com/oxc-project/oxc/issues/6974)) (DonIsaac)

</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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-11-20 12:07:35 +00:00
3258 changed files with 285030 additions and 31740 deletions

View File

@@ -2,3 +2,7 @@
rustflags = ["-C", "target-feature=+crt-static"]
[target.aarch64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]
[target.'cfg(target_os = "linux")']
rustflags = ["-C", "link-args=-Wl,--warn-unresolved-symbols"]
[target.'cfg(target_os = "macos")']
rustflags = ["-C", "link-args=-all_load"]

View File

@@ -11,6 +11,7 @@ services:
network_mode: service:db
environment:
DATABASE_URL: postgresql://affine:affine@db:5432/affine
REDIS_SERVER_HOST: redis
db:
image: postgres:latest
@@ -21,6 +22,10 @@ services:
POSTGRES_PASSWORD: affine
POSTGRES_USER: affine
POSTGRES_DB: affine
redis:
image: redis
ports:
- 6379:6379
volumes:
postgres-data:

4
.docker/dev/.env.example Normal file
View File

@@ -0,0 +1,4 @@
DATABASE_LOCATION=./postgres
DB_PASSWORD=affine
DB_USERNAME=affine
DB_DATABASE_NAME=affine

3
.docker/dev/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
postgres
.env
compose.yml

View File

@@ -0,0 +1,28 @@
name: affine_dev_services
services:
postgres:
env_file:
- .env
image: postgres:16
ports:
- 5432:5432
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
volumes:
- ${DATABASE_LOCATION}:/var/lib/postgresql/data
redis:
image: redis:latest
ports:
- 6379:6379
mailhog:
image: mailhog/mailhog:latest
ports:
- 1025:1025
- 8025:8025
networks:
dev:

View File

@@ -1,16 +0,0 @@
node_modules
dist
.next
out
storybook-static
affine-out
_next
lib
.eslintrc.js
e2e-dist-*
static
web-static
public
packages/frontend/i18n/src/i18n-generated.ts
packages/frontend/i18n/src/i18n-completenesses.json
packages/frontend/templates/*.gen.ts

View File

@@ -1,289 +0,0 @@
const { join } = require('node:path');
const createPattern = packageName => [
{
group: ['**/dist', '**/dist/**'],
message: 'Do not import from dist',
allowTypeImports: false,
},
{
group: ['**/src', '**/src/**'],
message: 'Do not import from src',
allowTypeImports: false,
},
{
group: [`@affine/${packageName}`],
message: 'Do not import package itself',
allowTypeImports: false,
},
{
group: [`@toeverything/${packageName}`],
message: 'Do not import package itself',
allowTypeImports: false,
},
{
group: ['@blocksuite/store'],
message: "Import from '@blocksuite/global/utils'",
importNames: ['assertExists', 'assertEquals'],
},
{
group: ['react-router-dom'],
message: 'Use `useNavigateHelper` instead',
importNames: ['useNavigate'],
},
{
group: ['@affine/env/constant'],
message:
'Do not import from @affine/env/constant. Use `BUILD_CONFIG.isElectron` instead',
importNames: ['isElectron'],
},
];
const allPackages = [
'packages/backend/server',
'packages/frontend/component',
'packages/frontend/core',
'packages/frontend/apps/electron',
'packages/frontend/apps/web',
'packages/frontend/apps/mobile',
'packages/frontend/graphql',
'packages/frontend/i18n',
'packages/frontend/native',
'packages/frontend/templates',
'packages/frontend/track',
'packages/common/debug',
'packages/common/env',
'packages/common/infra',
'packages/common/theme',
'tools/cli',
];
/**
* @type {import('eslint').Linter.Config}
*/
const config = {
root: true,
settings: {
react: {
version: 'detect',
},
next: {
rootDir: 'packages/frontend/core',
},
},
extends: [
'eslint:recommended',
'plugin:react-hooks/recommended',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
'plugin:@typescript-eslint/recommended',
'prettier',
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaFeatures: {
globalReturn: false,
impliedStrict: true,
jsx: true,
},
ecmaVersion: 'latest',
sourceType: 'module',
project: join(__dirname, 'tsconfig.eslint.json'),
},
plugins: [
'react',
'@typescript-eslint',
'simple-import-sort',
'sonarjs',
'import-x',
'unused-imports',
'unicorn',
'rxjs',
],
rules: {
'array-callback-return': 'error',
'no-undef': 'off',
'no-empty': 'off',
'no-func-assign': 'off',
'no-cond-assign': 'off',
'no-constant-binary-expression': 'error',
'no-constructor-return': 'error',
'no-self-compare': 'error',
eqeqeq: ['error', 'always', { null: 'ignore' }],
'react/prop-types': 'off',
'react/jsx-no-useless-fragment': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
'@typescript-eslint/no-non-null-assertion': 'error',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/await-thenable': 'error',
'@typescript-eslint/require-array-sort-compare': 'error',
'@typescript-eslint/unified-signatures': 'error',
'@typescript-eslint/prefer-for-of': 'error',
'@typescript-eslint/no-unused-vars': [
'error',
{
varsIgnorePattern: '^_',
argsIgnorePattern: '^_',
caughtErrorsIgnorePattern: '^_',
},
],
'unused-imports/no-unused-imports': 'error',
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
'import-x/no-duplicates': 'error',
'@typescript-eslint/ban-ts-comment': [
'error',
{
'ts-expect-error': 'allow-with-description',
'ts-ignore': true,
'ts-nocheck': true,
'ts-check': false,
},
],
'@typescript-eslint/no-restricted-imports': [
'error',
{
patterns: [
{
group: ['**/dist'],
message: "Don't import from dist",
allowTypeImports: false,
},
{
group: ['**/src'],
message: "Don't import from src",
allowTypeImports: false,
},
{
group: ['@blocksuite/store'],
message: "Import from '@blocksuite/global/utils'",
importNames: ['assertExists', 'assertEquals'],
},
],
},
],
'unicorn/filename-case': [
'error',
{
case: 'kebabCase',
ignore: ['^\\[[a-zA-Z0-9-_]+\\]\\.tsx$'],
},
],
'unicorn/no-unnecessary-await': 'error',
'unicorn/no-useless-fallback-in-spread': 'error',
'unicorn/prefer-dom-node-dataset': 'error',
'unicorn/prefer-dom-node-append': 'error',
'unicorn/prefer-dom-node-remove': 'error',
'unicorn/prefer-array-some': 'error',
'unicorn/prefer-date-now': 'error',
'unicorn/prefer-blob-reading-methods': 'error',
'unicorn/no-typeof-undefined': 'error',
'unicorn/no-useless-promise-resolve-reject': 'error',
'unicorn/no-new-array': 'error',
'unicorn/new-for-builtins': 'error',
'unicorn/prefer-node-protocol': 'error',
'sonarjs/no-all-duplicated-branches': 'error',
'sonarjs/no-element-overwrite': 'error',
'sonarjs/no-empty-collection': 'error',
'sonarjs/no-extra-arguments': 'error',
'sonarjs/no-identical-conditions': 'error',
'sonarjs/no-identical-expressions': 'error',
'sonarjs/no-ignored-return': 'error',
'sonarjs/no-one-iteration-loop': 'error',
'sonarjs/no-use-of-empty-return-value': 'error',
'sonarjs/non-existent-operator': 'error',
'sonarjs/no-collapsible-if': 'error',
'sonarjs/no-same-line-conditional': 'error',
'sonarjs/no-duplicated-branches': 'error',
'sonarjs/no-collection-size-mischeck': 'error',
'sonarjs/no-useless-catch': 'error',
'sonarjs/no-identical-functions': 'error',
'rxjs/finnish': [
'error',
{
functions: false,
methods: false,
strict: true,
types: {
'^LiveData$': true,
// some yjs classes are Observables, but they don't need to be in Finnish notation
'^Doc$': false, // yjs Doc
'^Awareness$': false, // yjs Awareness
'^UndoManager$': false, // yjs UndoManager
},
},
],
},
overrides: [
{
files: 'packages/backend/server/**/*.ts',
rules: {
'@typescript-eslint/consistent-type-imports': 0,
},
},
{
files: '*.cjs',
rules: {
'@typescript-eslint/no-var-requires': 0,
},
},
...allPackages.map(pkg => ({
files: [`${pkg}/src/**/*.ts`, `${pkg}/src/**/*.tsx`, `${pkg}/**/*.mjs`],
rules: {
'@typescript-eslint/no-restricted-imports': [
'error',
{
patterns: createPattern(pkg),
},
],
'@typescript-eslint/no-floating-promises': [
'error',
{
ignoreVoid: false,
ignoreIIFE: false,
},
],
'@typescript-eslint/no-misused-promises': ['error'],
'@typescript-eslint/prefer-readonly': 'error',
'import-x/no-extraneous-dependencies': ['error'],
'react-hooks/exhaustive-deps': [
'warn',
{
additionalHooks:
'(useAsyncCallback|useCatchEventCallback|useDraggable|useDropTarget|useRefEffect)',
},
],
},
})),
{
files: [
'**/__tests__/**/*',
'**/*.stories.tsx',
'**/*.spec.ts',
'**/tests/**/*',
'scripts/**/*',
'**/benchmark/**/*',
'**/__debug__/**/*',
'**/e2e/**/*',
],
rules: {
'@typescript-eslint/no-non-null-assertion': 0,
'@typescript-eslint/ban-ts-comment': [
'error',
{
'ts-expect-error': false,
'ts-ignore': true,
'ts-nocheck': true,
'ts-check': false,
},
],
'@typescript-eslint/no-floating-promises': 0,
'@typescript-eslint/no-misused-promises': 0,
'@typescript-eslint/no-restricted-imports': 0,
},
},
],
};
module.exports = config;

View File

@@ -7,9 +7,6 @@ inputs:
package:
description: 'Package to build'
required: true
nx_token:
description: 'Nx Cloud access token'
required: false
runs:
using: 'composite'
@@ -51,5 +48,4 @@ runs:
run: |
yarn workspace ${{ inputs.package }} build --target ${{ inputs.target }} --use-napi-cross
env:
NX_CLOUD_ACCESS_TOKEN: ${{ inputs.nx_token }}
DEBUG: 'napi:*'

View File

@@ -15,6 +15,8 @@ runs:
- name: Run init-db script
shell: bash
env:
NODE_ENV: test
run: |
yarn workspace @affine/server exec prisma generate
yarn workspace @affine/server exec prisma db push

View File

@@ -46,6 +46,9 @@ runs:
registry-url: https://npm.pkg.github.com
scope: '@toeverything'
- uses: kenchan0130/actions-system-info@master
id: system-info
- name: Init CorePack
if: ${{ inputs.corepack-install == 'true' }}
shell: bash
@@ -78,7 +81,7 @@ runs:
path: |
node_modules
${{ steps.yarn-cache.outputs.yarn_global_cache }}
key: node_modules-cache-${{ github.job }}-${{ runner.os }}
key: node_modules-cache-${{ github.job }}-${{ runner.os }}-${{ runner.arch }}-${{ steps.system-info.outputs.name }}-${{ steps.system-info.outputs.release }}-${{ steps.system-info.outputs.version }}
# The network performance on macOS is very poor
# and the decompression performance on Windows is very terrible
@@ -89,7 +92,7 @@ runs:
with:
path: |
${{ steps.yarn-cache.outputs.yarn_global_cache }}
key: node_modules-cache-${{ github.job }}-${{ runner.os }}
key: node_modules-cache-${{ github.job }}-${{ runner.os }}-${{ runner.arch }}-${{ steps.system-info.outputs.name }}-${{ steps.system-info.outputs.release }}-${{ steps.system-info.outputs.version }}
- name: Cache full yarn cache on Linux
uses: actions/cache@v4
@@ -98,7 +101,7 @@ runs:
path: |
node_modules
${{ steps.yarn-cache.outputs.yarn_global_cache }}
key: node_modules-cache-full-${{ runner.os }}
key: node_modules-cache-full-${{ runner.os }}-${{ runner.arch }}-${{ steps.system-info.outputs.name }}-${{ steps.system-info.outputs.release }}-${{ steps.system-info.outputs.version }}
- name: Cache full yarn cache on non-Linux
uses: actions/cache@v4
@@ -106,7 +109,7 @@ runs:
with:
path: |
${{ steps.yarn-cache.outputs.yarn_global_cache }}
key: node_modules-cache-full-${{ runner.os }}
key: node_modules-cache-full-${{ runner.os }}-${{ runner.arch }}-${{ steps.system-info.outputs.name }}-${{ steps.system-info.outputs.release }}-${{ steps.system-info.outputs.version }}
- name: yarn install
if: ${{ inputs.package-install == 'true' }}
@@ -148,7 +151,7 @@ runs:
if: ${{ inputs.playwright-install == 'true' }}
with:
path: ${{ github.workspace }}/node_modules/.cache/ms-playwright
key: '${{ runner.os }}-playwright-${{ steps.playwright-version.outputs.version }}'
key: '${{ runner.os }}-${{ runner.arch }}-${{ steps.system-info.outputs.name }}-${{ steps.system-info.outputs.release }}-${{ steps.system-info.outputs.version }}-playwright-${{ steps.playwright-version.outputs.version }}'
# As a fallback, if the Playwright version has changed, try use the
# most recently cached version. There's a good chance that at least one
# of the browser binary versions haven't been updated, so Playwright can
@@ -158,7 +161,7 @@ runs:
# date cache, but still let Playwright decide if it needs to download
# new binaries or not.
restore-keys: |
${{ runner.os }}-playwright-
${{ runner.os }}-${{ runner.arch }}-${{ steps.system-info.outputs.name }}-${{ steps.system-info.outputs.release }}-${{ steps.system-info.outputs.version }}-playwright-
# If the Playwright browser binaries weren't able to be restored, we tell
# playwright to install everything for us.
@@ -181,9 +184,9 @@ runs:
if: ${{ inputs.electron-install == 'true' }}
with:
path: 'node_modules/.cache/electron'
key: '${{ runner.os }}-electron-${{ steps.electron-version.outputs.version }}'
key: '${{ runner.os }}-${{ runner.arch }}-${{ steps.system-info.outputs.name }}-${{ steps.system-info.outputs.release }}-${{ steps.system-info.outputs.version }}-electron-${{ steps.electron-version.outputs.version }}'
restore-keys: |
${{ runner.os }}-electron-
${{ runner.os }}-${{ runner.arch }}-${{ steps.system-info.outputs.name }}-${{ steps.system-info.outputs.release }}-${{ steps.system-info.outputs.version }}-electron-
- name: Install Electron binary
shell: bash

View File

@@ -0,0 +1,23 @@
# select a revision to deploy, available values: stable, beta, canary
AFFINE_REVISION=stable
# set the port for the server container it will expose the server on
PORT=3010
# set the host for the server for outgoing links
# AFFINE_SERVER_HTTPS=true
# AFFINE_SERVER_HOST=affine.yourdomain.com
# or
# AFFINE_SERVER_EXTERNAL_URL=https://affine.yourdomain.com
# position of the database data to persist
DB_DATA_LOCATION=~/.affine/self-host/postgres
# position of the upload data(images, files, etc.) to persist
UPLOAD_LOCATION=~/.affine/self-host/storage
# position of the configuration files to persist
CONFIG_LOCATION=~/.affine/self-host/config
# database credentials
DB_USERNAME=affine
DB_PASSWORD=
DB_DATABASE=affine

View File

@@ -1,60 +1,71 @@
name: affine
services:
affine:
image: ghcr.io/toeverything/affine-graphql:stable
container_name: affine_selfhosted
command:
['sh', '-c', 'node ./scripts/self-host-predeploy && node ./dist/index.js']
image: ghcr.io/toeverything/affine-graphql:${AFFINE_REVISION:-stable}
container_name: affine_server
ports:
- '3010:3010'
- '5555:5555'
- '${PORT:-3010}:3010'
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
affine_migration:
condition: service_completed_successfully
volumes:
# custom configurations
- ~/.affine/self-host/config:/root/.affine/config
# blob storage
- ~/.affine/self-host/storage:/root/.affine/storage
logging:
driver: 'json-file'
options:
max-size: '1000m'
restart: unless-stopped
- ${UPLOAD_LOCATION}:/root/.affine/storage
- ${CONFIG_LOCATION}:/root/.affine/config
env_file:
- .env
environment:
- NODE_OPTIONS="--import=./scripts/register.js"
- AFFINE_CONFIG_PATH=/root/.affine/config
- REDIS_SERVER_HOST=redis
- DATABASE_URL=postgres://affine:affine@postgres:5432/affine
- NODE_ENV=production
# Telemetry allows us to collect data on how you use the affine. This data will helps us improve the app and provide better features.
# Uncomment next line if you wish to quit telemetry.
# - TELEMETRY_ENABLE=false
- DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres:5432/${DB_DATABASE:-affine}
restart: unless-stopped
affine_migration:
image: ghcr.io/toeverything/affine-graphql:${AFFINE_REVISION:-stable}
container_name: affine_migration_job
volumes:
# custom configurations
- ${UPLOAD_LOCATION}:/root/.affine/storage
- ${CONFIG_LOCATION}:/root/.affine/config
command: ['sh', '-c', 'node ./scripts/self-host-predeploy.js']
env_file:
- .env
environment:
- DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres:5432/${DB_DATABASE:-affine}
depends_on:
postgres:
condition: service_healthy
redis:
image: redis
container_name: affine_redis
restart: unless-stopped
volumes:
- ~/.affine/self-host/redis:/data
container_name: redis
healthcheck:
test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping']
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
postgres:
image: postgres:16
container_name: affine_postgres
restart: unless-stopped
container_name: postgres
volumes:
- ~/.affine/self-host/postgres:/var/lib/postgresql/data
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${DB_DATABASE:-affine}
POSTGRES_INITDB_ARGS: '--data-checksums'
# you better set a password for you database
# or you may add 'POSTGRES_HOST_AUTH_METHOD=trust' to ignore postgres security policy
POSTGRES_HOST_AUTH_METHOD: trust
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U affine']
test:
['CMD', 'pg_isready', '-U', "${DB_USERNAME}", '-d', "${DB_DATABASE:-affine}"]
interval: 10s
timeout: 5s
retries: 5
environment:
POSTGRES_USER: affine
POSTGRES_PASSWORD: affine
POSTGRES_DB: affine
PGDATA: /var/lib/postgresql/data/pgdata
restart: unless-stopped

20
.github/renovate.json vendored
View File

@@ -7,15 +7,13 @@
"**/bower_components/**",
"**/vendor/**",
"**/examples/**",
"**/__tests__/**",
"**/test/**",
"**/__fixtures__/**"
"**/__tests__/**"
],
"packageRules": [
{
"matchPackagePatterns": ["^eslint", "^@typescript-eslint"],
"rangeStrategy": "replace",
"groupName": "linter"
"groupName": "linter",
"matchPackageNames": ["/^eslint/", "/^@typescript-eslint/"]
},
{
"matchDepNames": ["oxlint"],
@@ -24,17 +22,15 @@
},
{
"groupName": "blocksuite",
"matchPackagePatterns": ["^@blocksuite"],
"excludePackageNames": ["@blocksuite/icons"],
"rangeStrategy": "replace",
"changelogUrl": "https://github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md"
"changelogUrl": "https://github.com/toeverything/blocksuite/blob/master/packages/blocks/CHANGELOG.md",
"matchPackageNames": ["/^@blocksuite/", "!@blocksuite/icons"]
},
{
"groupName": "all non-major dependencies",
"groupSlug": "all-minor-patch",
"matchPackagePatterns": ["*"],
"excludePackagePatterns": ["^@blocksuite/", "oxlint"],
"matchUpdateTypes": ["minor", "patch"]
"matchUpdateTypes": ["minor", "patch"],
"matchPackageNames": ["*", "!/^@blocksuite//", "!/oxlint/"]
},
{
"groupName": "rust toolchain",
@@ -43,7 +39,7 @@
},
{
"groupName": "nestjs",
"matchPackagePatterns": ["^@nestjs"]
"matchPackageNames": ["/^@nestjs/"]
}
],
"commitMessagePrefix": "chore: ",

View File

@@ -7,9 +7,6 @@ on:
type: string
required: true
env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
permissions:
contents: 'write'
id-token: 'write'
@@ -50,7 +47,7 @@ jobs:
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Build Core
run: yarn nx build @affine/web --skip-nx-cache
run: yarn workspace @affine/web build
env:
R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
@@ -83,7 +80,7 @@ jobs:
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Build Admin
run: yarn nx build @affine/admin --skip-nx-cache
run: yarn workspace @affine/admin build
env:
R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
@@ -115,7 +112,7 @@ jobs:
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Build Mobile
run: yarn nx build @affine/mobile --skip-nx-cache
run: yarn workspace @affine/mobile build
env:
R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
@@ -163,7 +160,6 @@ jobs:
with:
target: ${{ matrix.targets.name }}
package: '@affine/server-native'
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
- name: Upload ${{ matrix.targets.file }}
uses: actions/upload-artifact@v4
with:

View File

@@ -19,7 +19,6 @@ env:
AFFINE_ENV: dev
COVERAGE: true
MACOSX_DEPLOYMENT_TARGET: '10.13'
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/node_modules/.cache/ms-playwright
DEPLOYMENT_TYPE: affine
@@ -173,31 +172,6 @@ jobs:
path: ./test-results
if-no-files-found: ignore
e2e-migration-test:
name: E2E Migration Test
runs-on: ubuntu-latest
env:
DISTRIBUTION: web
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: ./.github/actions/setup-node
with:
playwright-install: true
electron-install: false
full-cache: true
- name: Run playwright tests
run: yarn workspace @affine-test/affine-migration e2e --forbid-only
- name: Upload test results
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: test-results-e2e-migration
path: ./test-results
if-no-files-found: ignore
unit-test:
name: Unit Test
runs-on: ubuntu-latest
@@ -220,7 +194,7 @@ jobs:
path: ./packages/frontend/native
- name: Unit Test
run: yarn nx test:coverage @affine/monorepo
run: yarn test:coverage
- name: Upload unit test coverage results
uses: codecov/codecov-action@v5
@@ -263,7 +237,6 @@ jobs:
with:
target: ${{ matrix.spec.target }}
package: '@affine/native'
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
- name: Upload ${{ steps.filename.outputs.filename }}
uses: actions/upload-artifact@v4
with:
@@ -288,7 +261,6 @@ jobs:
with:
target: 'x86_64-unknown-linux-gnu'
package: '@affine/server-native'
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
- name: Upload server-native.node
uses: actions/upload-artifact@v4
with:
@@ -329,6 +301,7 @@ jobs:
NODE_ENV: test
DISTRIBUTION: web
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
REDIS_SERVER_HOST: localhost
services:
postgres:
image: postgres
@@ -341,6 +314,10 @@ jobs:
--health-retries 5
ports:
- 5432:5432
redis:
image: redis
ports:
- 6379:6379
mailer:
image: mailhog/mailhog
ports:
@@ -379,11 +356,10 @@ jobs:
name: affine
fail_ci_if_error: false
server-native-test:
name: Run server native tests
rust-test:
name: Run native tests
runs-on: ubuntu-latest
env:
RUSTFLAGS: -D warnings
CARGO_TERM_COLOR: always
steps:
- uses: actions/checkout@v4
@@ -405,6 +381,7 @@ jobs:
NODE_ENV: test
DISTRIBUTION: web
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
REDIS_SERVER_HOST: localhost
services:
postgres:
image: postgres
@@ -417,6 +394,10 @@ jobs:
--health-retries 5
ports:
- 5432:5432
redis:
image: redis
ports:
- 6379:6379
mailer:
image: mailhog/mailhog
ports:
@@ -437,32 +418,33 @@ jobs:
fi
- uses: dorny/paths-filter@v3
id: filter
id: apifilter
with:
filters: |
backend:
- 'packages/backend/server/src/**'
changed:
- 'packages/backend/server/src/plugins/copilot/**'
- 'packages/backend/server/tests/copilot.*'
- name: Setup Node.js
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.filter.outputs.backend == 'true' }}
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.apifilter.outputs.changed == 'true' }}
uses: ./.github/actions/setup-node
with:
electron-install: false
full-cache: true
- name: Download server-native.node
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.filter.outputs.backend == 'true' }}
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.apifilter.outputs.changed == 'true' }}
uses: actions/download-artifact@v4
with:
name: server-native.node
path: ./packages/backend/server
- name: Prepare Server Test Environment
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.filter.outputs.backend == 'true' }}
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.apifilter.outputs.changed == 'true' }}
uses: ./.github/actions/server-test-env
- name: Run server tests
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.filter.outputs.backend == 'true' }}
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.apifilter.outputs.changed == 'true' }}
run: yarn workspace @affine/server test:copilot:coverage --forbid-only
env:
CARGO_TARGET_DIR: '${{ github.workspace }}/target'
@@ -470,7 +452,7 @@ jobs:
COPILOT_FAL_API_KEY: ${{ secrets.COPILOT_FAL_API_KEY }}
- name: Upload server test coverage results
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.filter.outputs.backend == 'true' }}
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.apifilter.outputs.changed == 'true' }}
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
@@ -486,6 +468,8 @@ jobs:
DISTRIBUTION: web
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
IN_CI_TEST: true
REDIS_SERVER_HOST: localhost
DEPLOYMENT_TYPE: affine
strategy:
fail-fast: false
matrix:
@@ -505,6 +489,10 @@ jobs:
--health-retries 5
ports:
- 5432:5432
redis:
image: redis
ports:
- 6379:6379
steps:
- uses: actions/checkout@v4
@@ -519,8 +507,17 @@ jobs:
echo "skip=true" >> $GITHUB_OUTPUT
fi
- uses: dorny/paths-filter@v3
id: e2efilter
with:
filters: |
changed:
- 'packages/frontend/core/src/blocksuite/presets/ai/**'
- 'packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/**'
- 'tests/affine-cloud-copilot/**'
- name: Setup Node.js
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' }}
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.e2efilter.outputs.changed == 'true' }}
uses: ./.github/actions/setup-node
with:
playwright-install: true
@@ -528,14 +525,14 @@ jobs:
hard-link-nm: false
- name: Download server-native.node
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' }}
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.e2efilter.outputs.changed == 'true' }}
uses: actions/download-artifact@v4
with:
name: server-native.node
path: ./packages/backend/server
- name: Run Copilot E2E Test ${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' }}
if: ${{ steps.check-blocksuite-update.outputs.skip != 'true' || steps.e2efilter.outputs.changed == 'true' }}
uses: ./.github/actions/copilot-test
with:
script: yarn workspace @affine-test/affine-cloud-copilot e2e --forbid-only --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
@@ -548,6 +545,7 @@ jobs:
env:
DISTRIBUTION: web
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
REDIS_SERVER_HOST: localhost
IN_CI_TEST: true
strategy:
fail-fast: false
@@ -582,6 +580,10 @@ jobs:
--health-retries 5
ports:
- 5432:5432
redis:
image: redis
ports:
- 6379:6379
mailer:
image: mailhog/mailhog
ports:
@@ -671,7 +673,7 @@ jobs:
uses: ./.github/actions/setup-node
timeout-minutes: 10
with:
extra-flags: workspaces focus @affine/electron @affine/monorepo @affine-test/affine-desktop
extra-flags: workspaces focus @affine/electron @affine/monorepo @affine-test/affine-desktop @affine/nbstore @toeverything/infra
playwright-install: true
hard-link-nm: false
enableScripts: false
@@ -766,13 +768,12 @@ jobs:
- check-yarn-binary
- e2e-test
- e2e-mobile-test
- e2e-migration-test
- unit-test
- build-native
- build-server-native
- build-electron-renderer
- server-test
- server-native-test
- rust-test
- copilot-api-test
- copilot-e2e-test
- server-e2e-test

View File

@@ -4,7 +4,6 @@ on:
workflow_dispatch:
env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/node_modules/.cache/ms-playwright
jobs:
@@ -25,7 +24,6 @@ jobs:
with:
target: 'x86_64-unknown-linux-gnu'
package: '@affine/server-native'
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
- name: Upload server-native.node
uses: actions/upload-artifact@v4
with:
@@ -42,6 +40,7 @@ jobs:
NODE_ENV: test
DISTRIBUTION: web
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
REDIS_SERVER_HOST: localhost
services:
postgres:
image: postgres
@@ -54,6 +53,10 @@ jobs:
--health-retries 5
ports:
- 5432:5432
redis:
image: redis
ports:
- 6379:6379
mailer:
image: mailhog/mailhog
ports:
@@ -100,6 +103,7 @@ jobs:
env:
DISTRIBUTION: web
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
REDIS_SERVER_HOST: localhost
IN_CI_TEST: true
strategy:
fail-fast: false
@@ -120,6 +124,10 @@ jobs:
--health-retries 5
ports:
- 5432:5432
redis:
image: redis
ports:
- 6379:6379
steps:
- uses: actions/checkout@v4

View File

@@ -12,8 +12,6 @@ on:
- beta
- stable
- internal
env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
permissions:
contents: 'write'

View File

@@ -60,7 +60,6 @@ jobs:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_RELEASE: ${{ steps.version.outputs.APP_VERSION }}
RELEASE_VERSION: ${{ steps.version.outputs.APP_VERSION }}
SKIP_NX_CACHE: 'true'
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN }}
- name: Upload web artifact
@@ -108,7 +107,7 @@ jobs:
timeout-minutes: 10
uses: ./.github/actions/setup-node
with:
extra-flags: workspaces focus @affine/electron @affine/monorepo
extra-flags: workspaces focus @affine/electron @affine/monorepo @affine/nbstore @toeverything/infra
hard-link-nm: false
nmHoistingLimits: workspaces
enableScripts: false
@@ -117,7 +116,6 @@ jobs:
with:
target: ${{ matrix.spec.target }}
package: '@affine/native'
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
- uses: actions/download-artifact@v4
with:
name: web
@@ -170,14 +168,14 @@ jobs:
mv packages/frontend/apps/electron/out/*/make/deb/${{ matrix.spec.arch }}/*.deb ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-linux-${{ matrix.spec.arch }}.deb
mv packages/frontend/apps/electron/out/*/make/flatpak/*/*.flatpak ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-linux-${{ matrix.spec.arch }}.flatpak
- uses: actions/attest-build-provenance@v1
- uses: actions/attest-build-provenance@v2
if: ${{ matrix.spec.platform == 'darwin' }}
with:
subject-path: |
./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-macos-${{ matrix.spec.arch }}.zip
./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-macos-${{ matrix.spec.arch }}.dmg
- uses: actions/attest-build-provenance@v1
- uses: actions/attest-build-provenance@v2
if: ${{ matrix.spec.platform == 'linux' }}
with:
subject-path: |
@@ -225,7 +223,7 @@ jobs:
timeout-minutes: 10
uses: ./.github/actions/setup-node
with:
extra-flags: workspaces focus @affine/electron @affine/monorepo
extra-flags: workspaces focus @affine/electron @affine/monorepo @affine/nbstore @toeverything/infra
hard-link-nm: false
nmHoistingLimits: workspaces
- name: Build AFFiNE native
@@ -233,7 +231,6 @@ jobs:
with:
target: ${{ matrix.spec.target }}
package: '@affine/native'
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
- uses: actions/download-artifact@v4
with:
name: web
@@ -386,7 +383,7 @@ jobs:
mv packages/frontend/apps/electron/out/*/make/squirrel.windows/${{ matrix.spec.arch }}/*.exe ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-windows-${{ matrix.spec.arch }}.exe
mv packages/frontend/apps/electron/out/*/make/nsis.windows/${{ matrix.spec.arch }}/*.exe ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-windows-${{ matrix.spec.arch }}.nsis.exe
- uses: actions/attest-build-provenance@v1
- uses: actions/attest-build-provenance@v2
with:
subject-path: |
./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-windows-${{ matrix.spec.arch }}.zip
@@ -415,33 +412,37 @@ jobs:
uses: actions/download-artifact@v4
with:
name: affine-darwin-x64-builds
path: ./
path: ./release
- name: Download Artifacts (macos-arm64)
uses: actions/download-artifact@v4
with:
name: affine-darwin-arm64-builds
path: ./
path: ./release
- name: Download Artifacts (windows-x64)
uses: actions/download-artifact@v4
with:
name: affine-win32-x64-builds
path: ./
path: ./release
- name: Download Artifacts (windows-arm64)
uses: actions/download-artifact@v4
with:
name: affine-win32-arm64-builds
path: ./
path: ./release
- name: Download Artifacts (linux-x64)
uses: actions/download-artifact@v4
with:
name: affine-linux-x64-builds
path: ./
path: ./release
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Copy Selfhost Release Files
run: |
cp ./.github/deployment/self-host/compose.yaml ./release/docker-compose.yaml
cp ./.github/deployment/self-host/.env.example ./release/.env.example
- name: Generate Release yml
run: |
node ./packages/frontend/apps/electron/scripts/generate-yml.js
node ./scripts/generate-release-yml.mjs
env:
RELEASE_VERSION: ${{ needs.before-make.outputs.RELEASE_VERSION }}
- name: Create Release Draft
@@ -452,16 +453,7 @@ jobs:
body: ''
draft: ${{ github.event.inputs.is-draft }}
prerelease: ${{ github.event.inputs.is-pre-release }}
files: |
./VERSION
./*.zip
./*.dmg
./*.exe
./*.appimage
./*.deb
./*.flatpak
./*.apk
./*.yml
files: ./release/*
- name: Create Nightly Release Draft
if: ${{ github.ref_type == 'branch' }}
uses: softprops/action-gh-release@v2
@@ -476,13 +468,4 @@ jobs:
body: ''
draft: false
prerelease: true
files: |
./VERSION
./*.zip
./*.dmg
./*.exe
./*.appimage
./*.deb
./*.apk
./*.flatpak
./*.yml
files: ./release/*

View File

@@ -37,9 +37,25 @@ env:
KEYCHAIN_NAME: ${{ github.workspace }}/signing_temp
jobs:
build-ios-web:
output-env:
runs-on: ubuntu-latest
environment: ${{ inputs.build-type || github.event.inputs.build-type }}
outputs:
ENVIRONMENT: ${{ steps.env.outputs.ENVIRONMENT }}
steps:
- name: Output Environment
id: env
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "ENVIRONMENT=${{ github.event.inputs.build-type }}" >> $GITHUB_OUTPUT
else
echo "ENVIRONMENT=" >> $GITHUB_OUTPUT
fi
build-ios-web:
needs:
- output-env
runs-on: ubuntu-latest
environment: ${{ needs.output-env.outputs.ENVIRONMENT }}
outputs:
RELEASE_VERSION: ${{ steps.version.outputs.APP_VERSION }}
steps:
@@ -52,7 +68,7 @@ jobs:
- name: Setup @sentry/cli
uses: ./.github/actions/setup-sentry
- name: Build Mobile
run: yarn nx build @affine/ios --skip-nx-cache
run: yarn workspace @affine/ios build
env:
PUBLIC_PATH: '/'
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN }}
@@ -62,7 +78,6 @@ jobs:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_RELEASE: ${{ steps.version.outputs.APP_VERSION }}
RELEASE_VERSION: ${{ steps.version.outputs.APP_VERSION }}
SKIP_NX_CACHE: 'true'
- name: Upload ios artifact
uses: actions/upload-artifact@v4
with:
@@ -71,7 +86,9 @@ jobs:
build-android-web:
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.build-type || inputs.build-type }}
needs:
- output-env
environment: ${{ needs.output-env.outputs.ENVIRONMENT }}
outputs:
RELEASE_VERSION: ${{ steps.version.outputs.APP_VERSION }}
steps:
@@ -84,7 +101,7 @@ jobs:
- name: Setup @sentry/cli
uses: ./.github/actions/setup-sentry
- name: Build Mobile
run: yarn nx build @affine/android --skip-nx-cache
run: yarn workspace @affine/android build
env:
PUBLIC_PATH: '/'
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN }}
@@ -94,7 +111,6 @@ jobs:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_RELEASE: ${{ steps.version.outputs.APP_VERSION }}
RELEASE_VERSION: ${{ steps.version.outputs.APP_VERSION }}
SKIP_NX_CACHE: 'true'
- name: Upload android artifact
uses: actions/upload-artifact@v4
with:
@@ -132,6 +148,10 @@ jobs:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Setup Rust
uses: ./.github/actions/setup-rust
with:
targets: 'aarch64-apple-ios'
- name: Testflight
if: ${{ env.BUILD_TYPE != 'stable' }}
working-directory: packages/frontend/apps/ios/App
@@ -169,8 +189,15 @@ jobs:
electron-install: false
hard-link-nm: false
enableScripts: false
- name: Setup Rust
uses: ./.github/actions/setup-rust
with:
targets: 'aarch64-linux-android'
- name: Cap sync
run: yarn workspace @affine/android cap sync
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Auth gcloud
id: auth
uses: google-github-actions/auth@v2
@@ -185,6 +212,7 @@ jobs:
with:
distribution: 'temurin'
java-version: '17'
cache: 'gradle'
- name: Auto increment version code
id: bump
if: ${{ env.BUILD_TARGET == 'distribution' }}
@@ -199,6 +227,7 @@ jobs:
AFFINE_ANDROID_KEYSTORE_PASSWORD: ${{ secrets.AFFINE_ANDROID_KEYSTORE_PASSWORD }}
AFFINE_ANDROID_KEYSTORE_ALIAS_PASSWORD: ${{ secrets.AFFINE_ANDROID_KEYSTORE_ALIAS_PASSWORD }}
AFFINE_ANDROID_SIGN_KEYSTORE: ${{ secrets.AFFINE_ANDROID_SIGN_KEYSTORE }}
- name: Upload to Google Play
uses: r0adkll/upload-google-play@v1
if: ${{ env.BUILD_TARGET == 'distribution' }}

View File

@@ -15,7 +15,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Publish
uses: cloudflare/wrangler-action@v3.12.1
uses: cloudflare/wrangler-action@v3.13.0
with:
apiToken: ${{ secrets.CF_API_TOKEN }}
accountId: ${{ secrets.CF_ACCOUNT_ID }}

2
.nvmrc
View File

@@ -1 +1 @@
20.18.0
20.18.1

View File

@@ -12,11 +12,10 @@ storybook-static
web-static
public
packages/backend/server/src/schema.gql
packages/backend/server/src/fundamentals/error/errors.gen.ts
packages/backend/server/src/base/error/errors.gen.ts
packages/frontend/i18n/src/i18n-generated.ts
packages/frontend/i18n/src/i18n-completenesses.json
packages/frontend/graphql/src/graphql/index.ts
tests/affine-legacy/**/static
.yarnrc.yml
packages/frontend/templates/*.gen.ts
packages/frontend/templates/onboarding
@@ -26,3 +25,4 @@ packages/frontend/templates/onboarding
packages/backend/native/index.d.ts
packages/frontend/native/index.d.ts
packages/frontend/native/index.js
compose.yaml

View File

@@ -0,0 +1,19 @@
diff --git a/dist/esm/adapter/external-adapter.js b/dist/esm/adapter/external-adapter.js
index ef7a963d91f08c9e70c8ed9c6b41972bec349319..e682841ec10a4a8a9ce7a79642e58de5c9e664d5 100644
--- a/dist/esm/adapter/external-adapter.js
+++ b/dist/esm/adapter/external-adapter.js
@@ -54,9 +54,11 @@ var adapter = makeAdapter({
type: 'dragenter',
listener: function listener(event) {
// drag operation was started within the document, it won't be an "external" drag
- if (didDragStartLocally) {
- return;
- }
+
+ // we will handle all events actually
+ // if (didDragStartLocally) {
+ // return;
+ // }
// Note: not checking if event was cancelled (`event.defaultPrevented`) as
// cancelling a "dragenter" accepts the drag operation (not prevent it)

View File

@@ -0,0 +1,13 @@
diff --git a/package.json b/package.json
index 5fef2811aa86f3f1f8228daef7d867863e71db72..b795fbd2a0e1cba0b6389ff051220f4e3c52fc13 100644
--- a/package.json
+++ b/package.json
@@ -34,7 +34,7 @@
"deno": "./index.js",
"react-native": "./index.js",
"worker": "./index.js",
- "browser": "./index.dom.js",
+ "browser": "./index.js",
"default": "./index.js"
}
},

File diff suppressed because one or more lines are too long

View File

@@ -12,4 +12,4 @@ npmPublishAccess: public
npmPublishRegistry: "https://registry.npmjs.org"
yarnPath: .yarn/releases/yarn-4.5.1.cjs
yarnPath: .yarn/releases/yarn-4.5.3.cjs

971
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -3,15 +3,19 @@ members = [
"./packages/backend/native",
"./packages/common/native",
"./packages/frontend/native",
"./packages/frontend/native/schema"
"./packages/frontend/native/sqlite_v1",
"./packages/frontend/native/nbstore",
"./packages/frontend/native/schema",
"./packages/frontend/mobile-native",
]
resolver = "2"
[workspace.dependencies]
affine_common = { path = "./packages/common/native" }
criterion2 = { version = "2", default-features = false }
anyhow = "1"
chrono = "0.4"
dotenv = "0.15"
dotenvy = "0.15"
file-format = { version = "0.26", features = ["reader"] }
mimalloc = "0.1"
napi = { version = "3.0.0-alpha.12", features = ["async", "chrono_date", "error_anyhow", "napi9", "serde"] }

View File

@@ -0,0 +1,100 @@
{
"name": "@blocksuite/affine",
"description": "BlockSuite for Affine",
"type": "module",
"scripts": {
"build": "tsc --build --verbose",
"test:unit": "nx vite:test --run --passWithNoTests",
"test:unit:coverage": "nx vite:test --run --coverage",
"test:e2e": "playwright test"
},
"sideEffects": false,
"keywords": [],
"author": "toeverything",
"license": "MIT",
"dependencies": {
"@blocksuite/block-std": "workspace:*",
"@blocksuite/blocks": "workspace:*",
"@blocksuite/global": "workspace:*",
"@blocksuite/inline": "workspace:*",
"@blocksuite/presets": "workspace:*",
"@blocksuite/store": "workspace:*"
},
"exports": {
".": "./src/index.ts",
"./effects": "./src/effects.ts",
"./block-std": "./src/block-std/index.ts",
"./block-std/gfx": "./src/block-std/gfx.ts",
"./global": "./src/global/index.ts",
"./global/utils": "./src/global/utils.ts",
"./global/env": "./src/global/env.ts",
"./global/exceptions": "./src/global/exceptions.ts",
"./global/di": "./src/global/di.ts",
"./global/types": "./src/global/types.ts",
"./store": "./src/store/index.ts",
"./inline": "./src/inline/index.ts",
"./inline/consts": "./src/inline/consts.ts",
"./inline/types": "./src/inline/types.ts",
"./presets": "./src/presets/index.ts",
"./blocks": "./src/blocks/index.ts",
"./blocks/schemas": "./src/blocks/schemas.ts"
},
"typesVersions": {
"*": {
"effects": [
"dist/effects.d.ts"
],
"block-std": [
"dist/block-std/index.d.ts"
],
"block-std/gfx": [
"dist/block-std/gfx.d.ts"
],
"global": [
"dist/global/index.d.ts"
],
"global/utils": [
"dist/global/utils.d.ts"
],
"global/env": [
"dist/global/env.d.ts"
],
"global/exceptions": [
"dist/global/exceptions.d.ts"
],
"global/di": [
"dist/global/di.d.ts"
],
"global/types": [
"dist/global/types.d.ts"
],
"store": [
"dist/store/index.d.ts"
],
"inline": [
"dist/inline/index.d.ts"
],
"inline/consts": [
"dist/inline/consts.d.ts"
],
"inline/types": [
"dist/inline/types.d.ts"
],
"presets": [
"dist/presets/index.d.ts"
],
"blocks": [
"dist/blocks/index.d.ts"
],
"blocks/schemas": [
"dist/blocks/schemas.d.ts"
]
}
},
"files": [
"src",
"dist",
"!src/__tests__",
"!dist/__tests__"
]
}

View File

@@ -0,0 +1 @@
export * from '@blocksuite/block-std/gfx';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/block-std';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/blocks';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/blocks/schemas';

View File

@@ -0,0 +1,7 @@
import { effects as blocksEffects } from '@blocksuite/blocks/effects';
import { effects as presetsEffects } from '@blocksuite/presets/effects';
export function effects() {
blocksEffects();
presetsEffects();
}

View File

@@ -0,0 +1 @@
export * from '@blocksuite/global/di';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/global/env';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/global/exceptions';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/global';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/global/types';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/global/utils';

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1 @@
export * from '@blocksuite/inline/consts';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/inline';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/inline/types';

View File

@@ -0,0 +1 @@
export * from '@blocksuite/presets';

View File

@@ -0,0 +1,5 @@
/* eslint-disable @typescript-eslint/no-restricted-imports */
// oxlint-disable-next-line
// @ts-ignore FIXME: typecheck error
export * from '@blocksuite/store';

View File

@@ -0,0 +1,29 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "./src/",
"outDir": "./dist/",
"noEmit": false
},
"include": ["./src"],
"references": [
{
"path": "../../framework/global"
},
{
"path": "../../framework/store"
},
{
"path": "../../framework/block-std"
},
{
"path": "../../framework/inline"
},
{
"path": "../../blocks"
},
{
"path": "../../presets"
}
]
}

View File

@@ -0,0 +1,4 @@
{
"extends": ["../../../typedoc.base.json"],
"entryPoints": ["src/index.ts"]
}

View File

@@ -0,0 +1,30 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
esbuild: {
target: 'es2018',
},
test: {
globalSetup: '../../../scripts/vitest-global.ts',
include: ['src/__tests__/**/*.unit.spec.ts'],
testTimeout: 1000,
coverage: {
provider: 'istanbul', // or 'c8'
reporter: ['lcov'],
reportsDirectory: '../../../.coverage/affine',
},
/**
* Custom handler for console.log in tests.
*
* Return `false` to ignore the log.
*/
onConsoleLog(log, type) {
if (log.includes('https://lit.dev/msg/dev-mode')) {
return false;
}
console.warn(`Unexpected ${type} log`, log);
throw new Error(log);
},
environment: 'happy-dom',
},
});

View File

@@ -0,0 +1,43 @@
{
"name": "@blocksuite/affine-block-embed",
"description": "Embed blocks for BlockSuite.",
"type": "module",
"scripts": {
"build": "tsc",
"test:unit": "nx vite:test --run --passWithNoTests",
"test:unit:coverage": "nx vite:test --run --coverage",
"test:e2e": "playwright test"
},
"sideEffects": false,
"keywords": [],
"author": "toeverything",
"license": "MIT",
"dependencies": {
"@blocksuite/affine-block-surface": "workspace:*",
"@blocksuite/affine-components": "workspace:*",
"@blocksuite/affine-model": "workspace:*",
"@blocksuite/affine-shared": "workspace:*",
"@blocksuite/block-std": "workspace:*",
"@blocksuite/global": "workspace:*",
"@blocksuite/icons": "^2.1.75",
"@blocksuite/inline": "workspace:*",
"@blocksuite/store": "workspace:*",
"@floating-ui/dom": "^1.6.10",
"@lit/context": "^1.1.2",
"@preact/signals-core": "^1.8.0",
"@toeverything/theme": "^1.1.1",
"lit": "^3.2.0",
"minimatch": "^10.0.1",
"zod": "^3.23.8"
},
"exports": {
".": "./src/index.ts",
"./effects": "./src/effects.ts"
},
"files": [
"src",
"dist",
"!src/__tests__",
"!dist/__tests__"
]
}

View File

@@ -0,0 +1,66 @@
import type { BlockHtmlAdapterMatcher } from '@blocksuite/affine-shared/adapters';
export function createEmbedBlockHtmlAdapterMatcher(
flavour: string,
{
toMatch = () => false,
fromMatch = o => o.node.flavour === flavour,
toBlockSnapshot = {},
fromBlockSnapshot = {
enter: (o, context) => {
const { walkerContext } = context;
// Parse as link
if (
typeof o.node.props.title !== 'string' ||
typeof o.node.props.url !== 'string'
) {
return;
}
walkerContext
.openNode(
{
type: 'element',
tagName: 'div',
properties: {
className: ['affine-paragraph-block-container'],
},
children: [],
},
'children'
)
.openNode(
{
type: 'element',
tagName: 'a',
properties: {
href: o.node.props.url,
},
children: [
{
type: 'text',
value: o.node.props.title,
},
],
},
'children'
)
.closeNode()
.closeNode();
},
},
}: {
toMatch?: BlockHtmlAdapterMatcher['toMatch'];
fromMatch?: BlockHtmlAdapterMatcher['fromMatch'];
toBlockSnapshot?: BlockHtmlAdapterMatcher['toBlockSnapshot'];
fromBlockSnapshot?: BlockHtmlAdapterMatcher['fromBlockSnapshot'];
} = Object.create(null)
): BlockHtmlAdapterMatcher {
return {
flavour,
toMatch,
fromMatch,
toBlockSnapshot,
fromBlockSnapshot,
};
}

View File

@@ -0,0 +1,58 @@
import type { BlockMarkdownAdapterMatcher } from '@blocksuite/affine-shared/adapters';
export function createEmbedBlockMarkdownAdapterMatcher(
flavour: string,
{
toMatch = () => false,
fromMatch = o => o.node.flavour === flavour,
toBlockSnapshot = {},
fromBlockSnapshot = {
enter: (o, context) => {
const { walkerContext } = context;
// Parse as link
if (
typeof o.node.props.title !== 'string' ||
typeof o.node.props.url !== 'string'
) {
return;
}
walkerContext
.openNode(
{
type: 'paragraph',
children: [],
},
'children'
)
.openNode(
{
type: 'link',
url: o.node.props.url,
children: [
{
type: 'text',
value: o.node.props.title,
},
],
},
'children'
)
.closeNode()
.closeNode();
},
},
}: {
toMatch?: BlockMarkdownAdapterMatcher['toMatch'];
fromMatch?: BlockMarkdownAdapterMatcher['fromMatch'];
toBlockSnapshot?: BlockMarkdownAdapterMatcher['toBlockSnapshot'];
fromBlockSnapshot?: BlockMarkdownAdapterMatcher['fromBlockSnapshot'];
} = {}
): BlockMarkdownAdapterMatcher {
return {
flavour,
toMatch,
fromMatch,
toBlockSnapshot,
fromBlockSnapshot,
};
}

View File

@@ -0,0 +1,40 @@
import type { BlockPlainTextAdapterMatcher } from '@blocksuite/affine-shared/adapters';
export function createEmbedBlockPlainTextAdapterMatcher(
flavour: string,
{
toMatch = () => false,
fromMatch = o => o.node.flavour === flavour,
toBlockSnapshot = {},
fromBlockSnapshot = {
enter: (o, context) => {
const { textBuffer } = context;
// Parse as link
if (
typeof o.node.props.title !== 'string' ||
typeof o.node.props.url !== 'string'
) {
return;
}
const buffer = `[${o.node.props.title}](${o.node.props.url})`;
if (buffer.length > 0) {
textBuffer.content += buffer;
textBuffer.content += '\n';
}
},
},
}: {
toMatch?: BlockPlainTextAdapterMatcher['toMatch'];
fromMatch?: BlockPlainTextAdapterMatcher['fromMatch'];
toBlockSnapshot?: BlockPlainTextAdapterMatcher['toBlockSnapshot'];
fromBlockSnapshot?: BlockPlainTextAdapterMatcher['fromBlockSnapshot'];
} = {}
): BlockPlainTextAdapterMatcher {
return {
flavour,
toMatch,
fromMatch,
toBlockSnapshot,
fromBlockSnapshot,
};
}

View File

@@ -0,0 +1,13 @@
import type { ReferenceParams } from '@blocksuite/affine-model';
import { TextUtils } from '@blocksuite/affine-shared/adapters';
export function generateDocUrl(
docBaseUrl: string,
pageId: string,
params: ReferenceParams
) {
const search = TextUtils.toURLSearchParams(params);
const query = search?.size ? `?${search.toString()}` : '';
const url = docBaseUrl ? `${docBaseUrl}/${pageId}${query}` : '';
return url;
}

View File

@@ -0,0 +1,172 @@
import {
CaptionedBlockComponent,
SelectedStyle,
} from '@blocksuite/affine-components/caption';
import type { EmbedCardStyle } from '@blocksuite/affine-model';
import {
EMBED_CARD_HEIGHT,
EMBED_CARD_MIN_WIDTH,
EMBED_CARD_WIDTH,
} from '@blocksuite/affine-shared/consts';
import {
DocModeProvider,
DragHandleConfigExtension,
} from '@blocksuite/affine-shared/services';
import {
captureEventTarget,
convertDragPreviewDocToEdgeless,
convertDragPreviewEdgelessToDoc,
} from '@blocksuite/affine-shared/utils';
import { type BlockService, isGfxBlockComponent } from '@blocksuite/block-std';
import type { GfxCompatibleProps } from '@blocksuite/block-std/gfx';
import type { BlockModel } from '@blocksuite/store';
import type { TemplateResult } from 'lit';
import { html } from 'lit';
import { query } from 'lit/decorators.js';
import { classMap } from 'lit/directives/class-map.js';
import { type StyleInfo, styleMap } from 'lit/directives/style-map.js';
export const EmbedDragHandleOption = DragHandleConfigExtension({
flavour: /affine:embed-*/,
edgeless: true,
onDragEnd: props => {
const { state, draggingElements } = props;
if (
draggingElements.length !== 1 ||
draggingElements[0].model.flavour.match(/affine:embed-*/) === null
)
return false;
const blockComponent = draggingElements[0] as EmbedBlockComponent;
const isInSurface = isGfxBlockComponent(blockComponent);
const target = captureEventTarget(state.raw.target);
const isTargetEdgelessContainer =
target?.classList.contains('edgeless-container');
if (isInSurface) {
const style = blockComponent._cardStyle;
const targetStyle =
style === 'vertical' || style === 'cube' ? 'horizontal' : style;
return convertDragPreviewEdgelessToDoc({
blockComponent,
style: targetStyle,
...props,
});
} else if (isTargetEdgelessContainer) {
const style = blockComponent._cardStyle;
return convertDragPreviewDocToEdgeless({
blockComponent,
cssSelector: '.embed-block-container',
width: EMBED_CARD_WIDTH[style],
height: EMBED_CARD_HEIGHT[style],
...props,
});
}
return false;
},
});
export class EmbedBlockComponent<
Model extends BlockModel<GfxCompatibleProps> = BlockModel<GfxCompatibleProps>,
Service extends BlockService = BlockService,
WidgetName extends string = string,
> extends CaptionedBlockComponent<Model, Service, WidgetName> {
private _fetchAbortController = new AbortController();
_cardStyle: EmbedCardStyle = 'horizontal';
/**
* The actual rendered scale of the embed card.
* By default, it is set to 1.
*/
protected _scale = 1;
blockDraggable = true;
/**
* The style of the embed card.
* You can use this to change the height and width of the card.
* By default, the height and width are set to `_cardHeight` and `_cardWidth` respectively.
*/
protected embedContainerStyle: StyleInfo = {};
renderEmbed = (content: () => TemplateResult) => {
if (
this._cardStyle === 'horizontal' ||
this._cardStyle === 'horizontalThin' ||
this._cardStyle === 'list'
) {
this.style.display = 'block';
const mode = this.std.get(DocModeProvider).getEditorMode();
if (mode === 'edgeless') {
this.style.minWidth = `${EMBED_CARD_MIN_WIDTH}px`;
}
}
const selected = !!this.selected?.is('block');
return html`
<div
draggable="${this.blockDraggable ? 'true' : 'false'}"
class=${classMap({
'embed-block-container': true,
'selected-style': selected,
})}
style=${styleMap({
height: `${this._cardHeight}px`,
width: '100%',
...this.embedContainerStyle,
})}
>
${content()}
</div>
`;
};
/**
* The height of the current embed card. Changes based on the card style.
*/
get _cardHeight() {
return EMBED_CARD_HEIGHT[this._cardStyle];
}
/**
* The width of the current embed card. Changes based on the card style.
*/
get _cardWidth() {
return EMBED_CARD_WIDTH[this._cardStyle];
}
get fetchAbortController() {
return this._fetchAbortController;
}
override connectedCallback() {
super.connectedCallback();
if (this._fetchAbortController.signal.aborted)
this._fetchAbortController = new AbortController();
this.contentEditable = 'false';
}
override disconnectedCallback(): void {
super.disconnectedCallback();
this._fetchAbortController.abort();
}
protected override accessor blockContainerStyles: StyleInfo | undefined = {
margin: '18px 0',
};
@query('.embed-block-container')
protected accessor embedBlock!: HTMLDivElement;
override accessor selectedStyle = SelectedStyle.Border;
override accessor useCaptionEditor = true;
override accessor useZeroWidth = true;
}

View File

@@ -0,0 +1,80 @@
import { css } from 'lit';
export const embedNoteContentStyles = css`
.affine-embed-doc-content-note-blocks affine-divider,
.affine-embed-doc-content-note-blocks affine-divider > * {
margin-top: 0px !important;
margin-bottom: 0px !important;
padding-top: 8px;
padding-bottom: 8px;
}
.affine-embed-doc-content-note-blocks affine-paragraph,
.affine-embed-doc-content-note-blocks affine-list {
margin-top: 4px !important;
margin-bottom: 4px !important;
padding: 0 2px;
}
.affine-embed-doc-content-note-blocks affine-paragraph *,
.affine-embed-doc-content-note-blocks affine-list * {
margin-top: 0px !important;
margin-bottom: 0px !important;
padding-top: 0;
padding-bottom: 0;
line-height: 20px;
font-size: var(--affine-font-xs);
font-weight: 400;
}
.affine-embed-doc-content-note-blocks affine-list .affine-list-block__prefix {
height: 20px;
}
.affine-embed-doc-content-note-blocks affine-paragraph .quote {
padding-left: 15px;
padding-top: 8px;
padding-bottom: 8px;
}
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h1),
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h2),
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h3),
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h4),
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h5),
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h6) {
margin-top: 6px !important;
margin-bottom: 4px !important;
padding: 0 2px;
}
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h1) *,
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h2) *,
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h3) *,
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h4) *,
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h5) *,
.affine-embed-doc-content-note-blocks affine-paragraph:has(.h6) * {
margin-top: 0px !important;
margin-bottom: 0px !important;
padding-top: 0;
padding-bottom: 0;
line-height: 20px;
font-size: var(--affine-font-xs);
font-weight: 600;
}
.affine-embed-linked-doc-block.horizontal {
affine-paragraph,
affine-list {
margin-top: 0 !important;
margin-bottom: 0 !important;
max-height: 40px;
overflow: hidden;
display: flex;
}
affine-paragraph .quote {
padding-top: 4px;
padding-bottom: 4px;
height: 28px;
}
affine-paragraph .quote::after {
height: 20px;
margin-top: 4px !important;
margin-bottom: 4px !important;
}
}
`;

View File

@@ -0,0 +1,81 @@
import { SurfaceBlockComponent } from '@blocksuite/affine-block-surface';
import type { EmbedCardStyle } from '@blocksuite/affine-model';
import {
EMBED_CARD_HEIGHT,
EMBED_CARD_WIDTH,
} from '@blocksuite/affine-shared/consts';
import type { BlockStdScope } from '@blocksuite/block-std';
import { Bound, Vec } from '@blocksuite/global/utils';
interface EmbedCardProperties {
flavour: string;
targetStyle: EmbedCardStyle;
props: Record<string, unknown>;
}
export function insertEmbedCard(
std: BlockStdScope,
properties: EmbedCardProperties
) {
const { host } = std;
const { flavour, targetStyle, props } = properties;
const selectionManager = host.selection;
let blockId: string | undefined;
const textSelection = selectionManager.find('text');
const blockSelection = selectionManager.find('block');
const surfaceSelection = selectionManager.find('surface');
if (textSelection) {
blockId = textSelection.blockId;
} else if (blockSelection) {
blockId = blockSelection.blockId;
} else if (surfaceSelection && surfaceSelection.editing) {
blockId = surfaceSelection.blockId;
}
if (blockId) {
const block = host.view.getBlock(blockId);
if (!block) return;
const parent = host.doc.getParent(block.model);
if (!parent) return;
const index = parent.children.indexOf(block.model);
host.doc.addBlock(flavour as never, props, parent, index + 1);
} else {
const rootId = std.doc.root?.id;
if (!rootId) return;
const edgelessRoot = std.view.getBlock(rootId);
if (!edgelessRoot) return;
// @ts-expect-error TODO: fix after edgeless refactor
edgelessRoot.service.viewport.smoothZoom(1);
// @ts-expect-error TODO: fix after edgeless refactor
const surfaceBlock = edgelessRoot.surface;
if (!(surfaceBlock instanceof SurfaceBlockComponent)) return;
const center = Vec.toVec(surfaceBlock.renderer.viewport.center);
// @ts-expect-error TODO: fix after edgeless refactor
const cardId = edgelessRoot.service.addBlock(
flavour,
{
...props,
xywh: Bound.fromCenter(
center,
EMBED_CARD_WIDTH[targetStyle],
EMBED_CARD_HEIGHT[targetStyle]
).serialize(),
style: targetStyle,
},
surfaceBlock.model
);
// @ts-expect-error TODO: fix after edgeless refactor
edgelessRoot.service.selection.set({
elements: [cardId],
editing: false,
});
// @ts-expect-error TODO: fix after edgeless refactor
edgelessRoot.tools.setEdgelessTool({
type: 'default',
});
}
}

View File

@@ -0,0 +1,99 @@
import type { LinkPreviewData } from '@blocksuite/affine-model';
import { DEFAULT_LINK_PREVIEW_ENDPOINT } from '@blocksuite/affine-shared/consts';
import { isAbortError } from '@blocksuite/affine-shared/utils';
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
export type LinkPreviewResponseData = {
url: string;
title?: string;
siteName?: string;
description?: string;
images?: string[];
mediaType?: string;
contentType?: string;
charset?: string;
videos?: string[];
favicons?: string[];
};
export class LinkPreviewer {
private _endpoint = DEFAULT_LINK_PREVIEW_ENDPOINT;
query = async (
url: string,
signal?: AbortSignal
): Promise<Partial<LinkPreviewData>> => {
if (
(url.startsWith('https://x.com/') ||
url.startsWith('https://www.x.com/') ||
url.startsWith('https://www.twitter.com/') ||
url.startsWith('https://twitter.com/')) &&
url.includes('/status/')
) {
// use api.fxtwitter.com
url =
'https://api.fxtwitter.com/status/' + /\/status\/(.*)/.exec(url)?.[1];
try {
const { tweet } = await fetch(url, { signal }).then(res => res.json());
return {
title: tweet.author.name,
icon: tweet.author.avatar_url,
description: tweet.text,
image: tweet.media?.photos?.[0].url || tweet.author.banner_url,
};
} catch (e) {
console.error(`Failed to fetch tweet: ${url}`);
console.error(e);
return {};
}
} else {
const response = await fetch(this._endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
url,
}),
signal,
})
.then(r => {
if (!r || !r.ok) {
throw new BlockSuiteError(
ErrorCode.DefaultRuntimeError,
`Failed to fetch link preview: ${url}`
);
}
return r;
})
.catch(err => {
if (isAbortError(err)) return null;
console.error(`Failed to fetch link preview: ${url}`);
console.error(err);
return null;
});
if (!response) return {};
const data: LinkPreviewResponseData = await response.json();
return {
title: data.title ? this._getStringFromHTML(data.title) : null,
description: data.description
? this._getStringFromHTML(data.description)
: null,
icon: data.favicons?.[0],
image: data.images?.[0],
};
}
};
setEndpoint = (endpoint: string) => {
this._endpoint = endpoint;
};
private _getStringFromHTML(html: string) {
const div = document.createElement('div');
div.innerHTML = html;
return div.textContent;
}
}

View File

@@ -0,0 +1,297 @@
import type { SurfaceBlockModel } from '@blocksuite/affine-block-surface';
import {
type DocMode,
type ImageBlockModel,
NoteDisplayMode,
} from '@blocksuite/affine-model';
import { EMBED_CARD_HEIGHT } from '@blocksuite/affine-shared/consts';
import { matchFlavours, SpecProvider } from '@blocksuite/affine-shared/utils';
import { BlockStdScope } from '@blocksuite/block-std';
import { assertExists } from '@blocksuite/global/utils';
import {
type BlockModel,
BlockViewType,
type Doc,
type Query,
} from '@blocksuite/store';
import { render, type TemplateResult } from 'lit';
import type { EmbedLinkedDocBlockComponent } from '../embed-linked-doc-block/index.js';
import type { EmbedSyncedDocCard } from '../embed-synced-doc-block/components/embed-synced-doc-card.js';
export function renderLinkedDocInCard(
card: EmbedLinkedDocBlockComponent | EmbedSyncedDocCard
) {
const linkedDoc = card.linkedDoc;
assertExists(
linkedDoc,
`Trying to load page ${card.model.pageId} in linked page block, but the page is not found.`
);
// eslint-disable-next-line sonarjs/no-collapsible-if
if ('bannerContainer' in card) {
if (card.editorMode === 'page') {
renderPageAsBanner(card).catch(e => {
console.error(e);
card.isError = true;
});
}
}
renderNoteContent(card).catch(e => {
console.error(e);
card.isError = true;
});
}
async function renderPageAsBanner(card: EmbedSyncedDocCard) {
const linkedDoc = card.linkedDoc;
assertExists(
linkedDoc,
`Trying to load page ${card.model.pageId} in linked page block, but the page is not found.`
);
const notes = getNotesFromDoc(linkedDoc);
if (!notes) {
card.isBannerEmpty = true;
return;
}
const target = notes.flatMap(note =>
note.children.filter(child => matchFlavours(child, ['affine:image']))
)[0];
if (target) {
await renderImageAsBanner(card, target);
return;
}
card.isBannerEmpty = true;
}
async function renderImageAsBanner(
card: EmbedSyncedDocCard,
image: BlockModel
) {
const sourceId = (image as ImageBlockModel).sourceId;
if (!sourceId) return;
const storage = card.linkedDoc?.blobSync;
if (!storage) return;
const blob = await storage.get(sourceId);
if (!blob) return;
const url = URL.createObjectURL(blob);
const $img = document.createElement('img');
$img.src = url;
await addCover(card, $img);
card.isBannerEmpty = false;
}
async function addCover(
card: EmbedSyncedDocCard,
cover: HTMLElement | TemplateResult<1>
) {
const coverContainer = await card.bannerContainer;
if (!coverContainer) return;
while (coverContainer.firstChild) {
coverContainer.firstChild.remove();
}
if (cover instanceof HTMLElement) {
coverContainer.append(cover);
} else {
render(cover, coverContainer);
}
}
async function renderNoteContent(
card: EmbedLinkedDocBlockComponent | EmbedSyncedDocCard
) {
card.isNoteContentEmpty = true;
const doc = card.linkedDoc;
assertExists(
doc,
`Trying to load page ${card.model.pageId} in linked page block, but the page is not found.`
);
const notes = getNotesFromDoc(doc);
if (!notes) {
return;
}
const cardStyle = card.model.style;
const isHorizontal = cardStyle === 'horizontal';
const allowFlavours: (keyof BlockSuite.BlockModels)[] = isHorizontal
? []
: ['affine:image'];
const noteChildren = notes.flatMap(note =>
note.children.filter(model => {
if (matchFlavours(model, allowFlavours)) {
return true;
}
return filterTextModel(model);
})
);
if (!noteChildren.length) {
return;
}
card.isNoteContentEmpty = false;
const noteContainer = await card.noteContainer;
if (!noteContainer) {
return;
}
while (noteContainer.firstChild) {
noteContainer.firstChild.remove();
}
const noteBlocksContainer = document.createElement('div');
noteBlocksContainer.classList.add('affine-embed-doc-content-note-blocks');
noteBlocksContainer.contentEditable = 'false';
noteContainer.append(noteBlocksContainer);
if (isHorizontal) {
// When the card is horizontal, we only render the first block
noteChildren.splice(1);
} else {
// Before rendering, we can not know the height of each block
// But we can limit the number of blocks to render simply by the height of the card
const cardHeight = EMBED_CARD_HEIGHT[cardStyle];
const minSingleBlockHeight = 20;
const maxBlockCount = Math.floor(cardHeight / minSingleBlockHeight);
if (noteChildren.length > maxBlockCount) {
noteChildren.splice(maxBlockCount);
}
}
const childIds = noteChildren.map(child => child.id);
const ids: string[] = [];
childIds.forEach(block => {
let parent: string | null = block;
while (parent && !ids.includes(parent)) {
ids.push(parent);
parent = doc.blockCollection.crud.getParent(parent);
}
});
const query: Query = {
mode: 'strict',
match: ids.map(id => ({ id, viewType: BlockViewType.Display })),
};
const previewDoc = doc.blockCollection.getDoc({ query });
const previewSpec = SpecProvider.getInstance().getSpec('page:preview');
const previewStd = new BlockStdScope({
doc: previewDoc,
extensions: previewSpec.value,
});
const previewTemplate = previewStd.render();
const fragment = document.createDocumentFragment();
render(previewTemplate, fragment);
noteBlocksContainer.append(fragment);
const contentEditableElements = noteBlocksContainer.querySelectorAll(
'[contenteditable="true"]'
);
contentEditableElements.forEach(element => {
(element as HTMLElement).contentEditable = 'false';
});
}
function filterTextModel(model: BlockModel) {
if (matchFlavours(model, ['affine:paragraph', 'affine:list'])) {
return !!model.text?.toString().length;
}
return false;
}
export function getNotesFromDoc(doc: Doc) {
const notes = doc.root?.children.filter(
child =>
matchFlavours(child, ['affine:note']) &&
child.displayMode !== NoteDisplayMode.EdgelessOnly
);
if (!notes || !notes.length) {
return null;
}
return notes;
}
export function isEmptyDoc(doc: Doc | null, mode: DocMode) {
if (!doc) {
return true;
}
if (mode === 'page') {
const notes = getNotesFromDoc(doc);
if (!notes || !notes.length) {
return true;
}
return notes.every(note => isEmptyNote(note));
} else {
const surface = getSurfaceBlock(doc);
if (surface?.elementModels.length || doc.blockSize > 2) {
return false;
}
return true;
}
}
export function isEmptyNote(note: BlockModel) {
return note.children.every(block => {
return (
block.flavour === 'affine:paragraph' &&
(!block.text || block.text.length === 0)
);
});
}
function getSurfaceBlock(doc: Doc) {
const blocks = doc.getBlocksByFlavour('affine:surface');
return blocks.length !== 0 ? (blocks[0].model as SurfaceBlockModel) : null;
}
/**
* Gets the document content with a max length.
*/
export function getDocContentWithMaxLength(doc: Doc, maxlength = 500) {
const notes = getNotesFromDoc(doc);
if (!notes) return;
const noteChildren = notes.flatMap(note =>
note.children.filter(model => filterTextModel(model))
);
if (!noteChildren.length) return;
let count = 0;
let reached = false;
const texts = [];
for (const model of noteChildren) {
let t = model.text?.toString();
if (t?.length) {
const c: number = count + Math.max(0, texts.length - 1);
if (t.length + c > maxlength) {
t = t.substring(0, maxlength - c);
reached = true;
}
texts.push(t);
count += t.length;
if (reached) {
break;
}
}
}
return texts.join('\n');
}

View File

@@ -0,0 +1,92 @@
import {
blockComponentSymbol,
type BlockService,
type GfxBlockComponent,
GfxElementSymbol,
toGfxBlockComponent,
} from '@blocksuite/block-std';
import type {
GfxBlockElementModel,
GfxCompatibleProps,
} from '@blocksuite/block-std/gfx';
import { Bound } from '@blocksuite/global/utils';
import type { StyleInfo } from 'lit/directives/style-map.js';
import type { EmbedBlockComponent } from './embed-block-element.js';
export function toEdgelessEmbedBlock<
Model extends GfxBlockElementModel<GfxCompatibleProps>,
Service extends BlockService,
WidgetName extends string,
B extends typeof EmbedBlockComponent<Model, Service, WidgetName>,
>(block: B) {
return class extends toGfxBlockComponent(block) {
_isDragging = false;
_isResizing = false;
_isSelected = false;
_showOverlay = false;
override [blockComponentSymbol] = true;
override blockDraggable = false;
protected override embedContainerStyle: StyleInfo = {};
override [GfxElementSymbol] = true;
get bound(): Bound {
return Bound.deserialize(this.model.xywh);
}
get rootService() {
return this.std.getService('affine:page');
}
_handleClick(_: MouseEvent): void {
return;
}
override connectedCallback(): void {
super.connectedCallback();
const rootService = this.rootService;
this._disposables.add(
// @ts-expect-error TODO: fix after edgeless slots are migrated to extension
rootService.slots.elementResizeStart.on(() => {
this._isResizing = true;
this._showOverlay = true;
})
);
this._disposables.add(
// @ts-expect-error TODO: fix after edgeless slots are migrated to extension
rootService.slots.elementResizeEnd.on(() => {
this._isResizing = false;
this._showOverlay =
this._isResizing || this._isDragging || !this._isSelected;
})
);
}
override renderGfxBlock() {
const bound = Bound.deserialize(this.model.xywh);
this.embedContainerStyle.width = `${bound.w}px`;
this.embedContainerStyle.height = `${bound.h}px`;
this.blockContainerStyles = {
width: `${bound.w}px`,
};
this._scale = bound.w / this._cardWidth;
return this.renderPageContent();
}
protected override accessor blockContainerStyles: StyleInfo | undefined =
undefined;
} as B & {
new (...args: any[]): GfxBlockComponent;
};
}

View File

@@ -0,0 +1,47 @@
import {
DarkLoadingIcon,
EmbedCardDarkBannerIcon,
EmbedCardDarkCubeIcon,
EmbedCardDarkHorizontalIcon,
EmbedCardDarkListIcon,
EmbedCardDarkVerticalIcon,
EmbedCardLightBannerIcon,
EmbedCardLightCubeIcon,
EmbedCardLightHorizontalIcon,
EmbedCardLightListIcon,
EmbedCardLightVerticalIcon,
LightLoadingIcon,
} from '@blocksuite/affine-components/icons';
import { ColorScheme } from '@blocksuite/affine-model';
import type { TemplateResult } from 'lit';
type EmbedCardIcons = {
LoadingIcon: TemplateResult<1>;
EmbedCardBannerIcon: TemplateResult<1>;
EmbedCardHorizontalIcon: TemplateResult<1>;
EmbedCardListIcon: TemplateResult<1>;
EmbedCardVerticalIcon: TemplateResult<1>;
EmbedCardCubeIcon: TemplateResult<1>;
};
export function getEmbedCardIcons(theme: ColorScheme): EmbedCardIcons {
if (theme === ColorScheme.Light) {
return {
LoadingIcon: LightLoadingIcon,
EmbedCardBannerIcon: EmbedCardLightBannerIcon,
EmbedCardHorizontalIcon: EmbedCardLightHorizontalIcon,
EmbedCardListIcon: EmbedCardLightListIcon,
EmbedCardVerticalIcon: EmbedCardLightVerticalIcon,
EmbedCardCubeIcon: EmbedCardLightCubeIcon,
};
} else {
return {
LoadingIcon: DarkLoadingIcon,
EmbedCardBannerIcon: EmbedCardDarkBannerIcon,
EmbedCardHorizontalIcon: EmbedCardDarkHorizontalIcon,
EmbedCardListIcon: EmbedCardDarkListIcon,
EmbedCardVerticalIcon: EmbedCardDarkVerticalIcon,
EmbedCardCubeIcon: EmbedCardDarkCubeIcon,
};
}
}

View File

@@ -0,0 +1,131 @@
import { EmbedEdgelessBlockComponent } from './embed-figma-block/embed-edgeless-figma-block.js';
import type { EmbedFigmaBlockService } from './embed-figma-block/embed-figma-service.js';
import { EmbedFigmaBlockComponent } from './embed-figma-block/index.js';
import { EmbedEdgelessGithubBlockComponent } from './embed-github-block/embed-edgeless-github-block.js';
import {
EmbedGithubBlockComponent,
type EmbedGithubBlockService,
} from './embed-github-block/index.js';
import { EmbedHtmlFullscreenToolbar } from './embed-html-block/components/fullscreen-toolbar.js';
import { EmbedEdgelessHtmlBlockComponent } from './embed-html-block/embed-edgeless-html-block.js';
import { EmbedHtmlBlockComponent } from './embed-html-block/index.js';
import type { insertEmbedLinkedDocCommand } from './embed-linked-doc-block/commands/insert-embed-linked-doc.js';
import type {
InsertedLinkType,
insertLinkByQuickSearchCommand,
} from './embed-linked-doc-block/commands/insert-link-by-quick-search.js';
import { EmbedEdgelessLinkedDocBlockComponent } from './embed-linked-doc-block/embed-edgeless-linked-doc-block.js';
import type { EmbedLinkedDocBlockConfig } from './embed-linked-doc-block/embed-linked-doc-config.js';
import { EmbedLinkedDocBlockComponent } from './embed-linked-doc-block/index.js';
import { EmbedEdgelessLoomBlockComponent } from './embed-loom-block/embed-edgeless-loom-bock.js';
import {
EmbedLoomBlockComponent,
type EmbedLoomBlockService,
} from './embed-loom-block/index.js';
import { EmbedSyncedDocCard } from './embed-synced-doc-block/components/embed-synced-doc-card.js';
import { EmbedEdgelessSyncedDocBlockComponent } from './embed-synced-doc-block/embed-edgeless-synced-doc-block.js';
import { EmbedSyncedDocBlockComponent } from './embed-synced-doc-block/index.js';
import { EmbedEdgelessYoutubeBlockComponent } from './embed-youtube-block/embed-edgeless-youtube-block.js';
import {
EmbedYoutubeBlockComponent,
type EmbedYoutubeBlockService,
} from './embed-youtube-block/index.js';
export function effects() {
customElements.define(
'affine-embed-edgeless-figma-block',
EmbedEdgelessBlockComponent
);
customElements.define('affine-embed-figma-block', EmbedFigmaBlockComponent);
customElements.define('affine-embed-html-block', EmbedHtmlBlockComponent);
customElements.define(
'affine-embed-edgeless-html-block',
EmbedEdgelessHtmlBlockComponent
);
customElements.define(
'embed-html-fullscreen-toolbar',
EmbedHtmlFullscreenToolbar
);
customElements.define(
'affine-embed-edgeless-github-block',
EmbedEdgelessGithubBlockComponent
);
customElements.define('affine-embed-github-block', EmbedGithubBlockComponent);
customElements.define(
'affine-embed-edgeless-youtube-block',
EmbedEdgelessYoutubeBlockComponent
);
customElements.define(
'affine-embed-youtube-block',
EmbedYoutubeBlockComponent
);
customElements.define(
'affine-embed-edgeless-loom-block',
EmbedEdgelessLoomBlockComponent
);
customElements.define('affine-embed-loom-block', EmbedLoomBlockComponent);
customElements.define('affine-embed-synced-doc-card', EmbedSyncedDocCard);
customElements.define(
'affine-embed-edgeless-linked-doc-block',
EmbedEdgelessLinkedDocBlockComponent
);
customElements.define(
'affine-embed-linked-doc-block',
EmbedLinkedDocBlockComponent
);
customElements.define(
'affine-embed-edgeless-synced-doc-block',
EmbedEdgelessSyncedDocBlockComponent
);
customElements.define(
'affine-embed-synced-doc-block',
EmbedSyncedDocBlockComponent
);
}
declare global {
interface HTMLElementTagNameMap {
'affine-embed-figma-block': EmbedFigmaBlockComponent;
'affine-embed-edgeless-figma-block': EmbedEdgelessBlockComponent;
'affine-embed-github-block': EmbedGithubBlockComponent;
'affine-embed-edgeless-github-block': EmbedEdgelessGithubBlockComponent;
'affine-embed-html-block': EmbedHtmlBlockComponent;
'affine-embed-edgeless-html-block': EmbedEdgelessHtmlBlockComponent;
'embed-html-fullscreen-toolbar': EmbedHtmlFullscreenToolbar;
'affine-embed-edgeless-loom-block': EmbedEdgelessLoomBlockComponent;
'affine-embed-loom-block': EmbedLoomBlockComponent;
'affine-embed-youtube-block': EmbedYoutubeBlockComponent;
'affine-embed-edgeless-youtube-block': EmbedEdgelessYoutubeBlockComponent;
'affine-embed-synced-doc-card': EmbedSyncedDocCard;
'affine-embed-synced-doc-block': EmbedSyncedDocBlockComponent;
'affine-embed-edgeless-synced-doc-block': EmbedEdgelessSyncedDocBlockComponent;
'affine-embed-linked-doc-block': EmbedLinkedDocBlockComponent;
'affine-embed-edgeless-linked-doc-block': EmbedEdgelessLinkedDocBlockComponent;
}
namespace BlockSuite {
interface BlockServices {
'affine:embed-figma': EmbedFigmaBlockService;
'affine:embed-github': EmbedGithubBlockService;
'affine:embed-loom': EmbedLoomBlockService;
'affine:embed-youtube': EmbedYoutubeBlockService;
}
interface BlockConfigs {
'affine:embed-linked-doc': EmbedLinkedDocBlockConfig;
}
interface CommandContext {
insertedLinkType?: Promise<InsertedLinkType>;
}
interface Commands {
insertEmbedLinkedDoc: typeof insertEmbedLinkedDocCommand;
insertLinkByQuickSearch: typeof insertLinkByQuickSearchCommand;
}
}
}

View File

@@ -0,0 +1,11 @@
import { EmbedFigmaBlockSchema } from '@blocksuite/affine-model';
import { BlockHtmlAdapterExtension } from '@blocksuite/affine-shared/adapters';
import { createEmbedBlockHtmlAdapterMatcher } from '../../common/adapters/html.js';
export const embedFigmaBlockHtmlAdapterMatcher =
createEmbedBlockHtmlAdapterMatcher(EmbedFigmaBlockSchema.model.flavour);
export const EmbedFigmaBlockHtmlAdapterExtension = BlockHtmlAdapterExtension(
embedFigmaBlockHtmlAdapterMatcher
);

View File

@@ -0,0 +1,3 @@
export * from './html.js';
export * from './markdown.js';
export * from './plain-text.js';

View File

@@ -0,0 +1,11 @@
import { EmbedFigmaBlockSchema } from '@blocksuite/affine-model';
import { BlockMarkdownAdapterExtension } from '@blocksuite/affine-shared/adapters';
import { createEmbedBlockMarkdownAdapterMatcher } from '../../common/adapters/markdown.js';
export const embedFigmaBlockMarkdownAdapterMatcher =
createEmbedBlockMarkdownAdapterMatcher(EmbedFigmaBlockSchema.model.flavour);
export const EmbedFigmaMarkdownAdapterExtension = BlockMarkdownAdapterExtension(
embedFigmaBlockMarkdownAdapterMatcher
);

View File

@@ -0,0 +1,10 @@
import { EmbedFigmaBlockSchema } from '@blocksuite/affine-model';
import { BlockPlainTextAdapterExtension } from '@blocksuite/affine-shared/adapters';
import { createEmbedBlockPlainTextAdapterMatcher } from '../../common/adapters/plain-text.js';
export const embedFigmaBlockPlainTextAdapterMatcher =
createEmbedBlockPlainTextAdapterMatcher(EmbedFigmaBlockSchema.model.flavour);
export const EmbedFigmaBlockPlainTextAdapterExtension =
BlockPlainTextAdapterExtension(embedFigmaBlockPlainTextAdapterMatcher);

View File

@@ -0,0 +1,6 @@
import { toEdgelessEmbedBlock } from '../common/to-edgeless-embed-block.js';
import { EmbedFigmaBlockComponent } from './embed-figma-block.js';
export class EmbedEdgelessBlockComponent extends toEdgelessEmbedBlock(
EmbedFigmaBlockComponent
) {}

View File

@@ -0,0 +1,166 @@
import { OpenIcon } from '@blocksuite/affine-components/icons';
import type {
EmbedFigmaModel,
EmbedFigmaStyles,
} from '@blocksuite/affine-model';
import { html } from 'lit';
import { state } from 'lit/decorators.js';
import { classMap } from 'lit/directives/class-map.js';
import { styleMap } from 'lit/directives/style-map.js';
import { EmbedBlockComponent } from '../common/embed-block-element.js';
import type { EmbedFigmaBlockService } from './embed-figma-service.js';
import { FigmaIcon, styles } from './styles.js';
export class EmbedFigmaBlockComponent extends EmbedBlockComponent<
EmbedFigmaModel,
EmbedFigmaBlockService
> {
static override styles = styles;
override _cardStyle: (typeof EmbedFigmaStyles)[number] = 'figma';
protected _isDragging = false;
protected _isResizing = false;
open = () => {
let link = this.model.url;
if (!link.match(/^[a-zA-Z]+:\/\//)) {
link = 'https://' + link;
}
window.open(link, '_blank');
};
refreshData = () => {};
private _handleDoubleClick(event: MouseEvent) {
event.stopPropagation();
this.open();
}
private _selectBlock() {
const selectionManager = this.host.selection;
const blockSelection = selectionManager.create('block', {
blockId: this.blockId,
});
selectionManager.setGroup('note', [blockSelection]);
}
protected _handleClick(event: MouseEvent) {
event.stopPropagation();
this._selectBlock();
}
override connectedCallback() {
super.connectedCallback();
this._cardStyle = this.model.style;
if (!this.model.description && !this.model.title) {
this.doc.withoutTransact(() => {
this.doc.updateBlock(this.model, {
title: 'Figma',
description: this.model.url,
});
});
}
this.disposables.add(
this.model.propsUpdated.on(({ key }) => {
if (key === 'url') {
this.refreshData();
}
})
);
// this is required to prevent iframe from capturing pointer events
this.disposables.add(
this.std.selection.slots.changed.on(() => {
this._isSelected =
!!this.selected?.is('block') || !!this.selected?.is('surface');
this._showOverlay =
this._isResizing || this._isDragging || !this._isSelected;
})
);
// this is required to prevent iframe from capturing pointer events
this.handleEvent('dragStart', () => {
this._isDragging = true;
this._showOverlay =
this._isResizing || this._isDragging || !this._isSelected;
});
this.handleEvent('dragEnd', () => {
this._isDragging = false;
this._showOverlay =
this._isResizing || this._isDragging || !this._isSelected;
});
}
override renderBlock() {
const { title, description, url } = this.model;
const titleText = title ?? 'Figma';
const descriptionText = description ?? url;
return this.renderEmbed(
() => html`
<div
class=${classMap({
'affine-embed-figma-block': true,
selected: this._isSelected,
})}
style=${styleMap({
transform: `scale(${this._scale})`,
transformOrigin: '0 0',
})}
@click=${this._handleClick}
@dblclick=${this._handleDoubleClick}
>
<div class="affine-embed-figma">
<div class="affine-embed-figma-iframe-container">
<iframe
src=${`https://www.figma.com/embed?embed_host=blocksuite&url=${url}`}
allowfullscreen
loading="lazy"
></iframe>
<div
class=${classMap({
'affine-embed-figma-iframe-overlay': true,
hide: !this._showOverlay,
})}
></div>
</div>
</div>
<div class="affine-embed-figma-content">
<div class="affine-embed-figma-content-header">
<div class="affine-embed-figma-content-title-icon">
${FigmaIcon}
</div>
<div class="affine-embed-figma-content-title-text">
${titleText}
</div>
</div>
<div class="affine-embed-figma-content-description">
${descriptionText}
</div>
<div class="affine-embed-figma-content-url" @click=${this.open}>
<span>www.figma.com</span>
<div class="affine-embed-figma-content-url-icon">${OpenIcon}</div>
</div>
</div>
</div>
`
);
}
@state()
protected accessor _isSelected = false;
@state()
protected accessor _showOverlay = true;
}

View File

@@ -0,0 +1,2 @@
export const figmaUrlRegex: RegExp =
/https:\/\/[\w.-]+\.?figma.com\/([\w-]+)\/([0-9a-zA-Z]{22,128})(?:\/.*)?$/;

View File

@@ -0,0 +1,23 @@
import {
EmbedFigmaBlockSchema,
EmbedFigmaStyles,
} from '@blocksuite/affine-model';
import { EmbedOptionProvider } from '@blocksuite/affine-shared/services';
import { BlockService } from '@blocksuite/block-std';
import { figmaUrlRegex } from './embed-figma-model.js';
export class EmbedFigmaBlockService extends BlockService {
static override readonly flavour = EmbedFigmaBlockSchema.model.flavour;
override mounted() {
super.mounted();
this.std.get(EmbedOptionProvider).registerEmbedBlockOptions({
flavour: this.flavour,
urlRegex: figmaUrlRegex,
styles: EmbedFigmaStyles,
viewType: 'embed',
});
}
}

View File

@@ -0,0 +1,18 @@
import {
BlockViewExtension,
type ExtensionType,
FlavourExtension,
} from '@blocksuite/block-std';
import { literal } from 'lit/static-html.js';
import { EmbedFigmaBlockService } from './embed-figma-service.js';
export const EmbedFigmaBlockSpec: ExtensionType[] = [
FlavourExtension('affine:embed-figma'),
EmbedFigmaBlockService,
BlockViewExtension('affine:embed-figma', model => {
return model.parent?.flavour === 'affine:surface'
? literal`affine-embed-edgeless-figma-block`
: literal`affine-embed-figma-block`;
}),
];

View File

@@ -0,0 +1,5 @@
export * from './adapters/index.js';
export * from './embed-figma-block.js';
export * from './embed-figma-model.js';
export * from './embed-figma-spec.js';
export { FigmaIcon } from './styles.js';

View File

@@ -0,0 +1,229 @@
import {
EMBED_CARD_HEIGHT,
EMBED_CARD_WIDTH,
} from '@blocksuite/affine-shared/consts';
import { css, html } from 'lit';
export const styles = css`
.affine-embed-figma-block {
width: ${EMBED_CARD_WIDTH.figma}px;
display: flex;
flex-direction: column;
gap: 20px;
padding: 12px;
border-radius: 8px;
border: 1px solid var(--affine-background-tertiary-color);
opacity: var(--add, 1);
background: var(--affine-background-primary-color);
user-select: none;
aspect-ratio: ${EMBED_CARD_WIDTH.figma} / ${EMBED_CARD_HEIGHT.figma};
}
.affine-embed-figma {
flex-grow: 1;
width: 100%;
opacity: var(--add, 1);
}
.affine-embed-figma img,
.affine-embed-figma object,
.affine-embed-figma svg {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 4px 4px var(--1, 0px) var(--1, 0px);
}
.affine-embed-figma-iframe-container {
height: 100%;
position: relative;
}
.affine-embed-figma-iframe-container > iframe {
width: 100%;
height: 100%;
border-radius: 4px 4px var(--1, 0px) var(--1, 0px);
border: none;
}
.affine-embed-figma-iframe-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.affine-embed-figma-iframe-overlay.hide {
display: none;
}
.affine-embed-figma-content {
display: block;
flex-direction: column;
width: 100%;
height: fit-content;
border-radius: var(--1, 0px);
opacity: var(--add, 1);
}
.affine-embed-figma-content-header {
display: flex;
flex-direction: row;
gap: 8px;
align-items: center;
align-self: stretch;
padding: var(--1, 0px);
border-radius: var(--1, 0px);
opacity: var(--add, 1);
}
.affine-embed-figma-content-title-icon {
display: flex;
width: 20px;
height: 20px;
justify-content: center;
align-items: center;
}
.affine-embed-figma-content-title-icon img,
.affine-embed-figma-content-title-icon object,
.affine-embed-figma-content-title-icon svg {
width: 20px;
height: 20px;
fill: var(--affine-background-primary-color);
}
.affine-embed-figma-content-title-text {
flex: 1 0 0;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-word;
overflow: hidden;
text-overflow: ellipsis;
color: var(--affine-text-primary-color);
font-family: var(--affine-font-family);
font-size: var(--affine-font-sm);
font-style: normal;
font-weight: 600;
line-height: 22px;
}
.affine-embed-figma-content-description {
height: 40px;
position: relative;
word-break: break-word;
white-space: normal;
overflow: hidden;
text-overflow: ellipsis;
color: var(--affine-text-primary-color);
font-family: var(--affine-font-family);
font-size: var(--affine-font-xs);
font-style: normal;
font-weight: 400;
line-height: 20px;
}
.affine-embed-figma-content-description::after {
content: '...';
position: absolute;
right: 0;
bottom: 0;
background-color: var(--affine-background-primary-color);
}
.affine-embed-figma-content-url {
display: flex;
align-items: center;
justify-content: flex-start;
gap: 4px;
width: max-content;
max-width: 100%;
cursor: pointer;
}
.affine-embed-figma-content-url > span {
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
white-space: normal;
overflow: hidden;
text-overflow: ellipsis;
color: var(--affine-text-secondary-color);
font-family: var(--affine-font-family);
font-size: var(--affine-font-xs);
font-style: normal;
font-weight: 400;
line-height: 20px;
}
.affine-embed-figma-content-url:hover > span {
color: var(--affine-link-color);
}
.affine-embed-figma-content-url:hover .open-icon {
fill: var(--affine-link-color);
}
.affine-embed-figma-content-url-icon {
display: flex;
align-items: center;
justify-content: center;
width: 12px;
height: 12px;
}
.affine-embed-figma-content-url-icon .open-icon {
height: 12px;
width: 12px;
fill: var(--affine-text-secondary-color);
}
.affine-embed-figma-block.selected {
.affine-embed-figma-content-url > span {
color: var(--affine-link-color);
}
.affine-embed-figma-content-url .open-icon {
fill: var(--affine-link-color);
}
}
`;
export const FigmaIcon = html`<svg
width="20"
height="20"
viewBox="0 0 20 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M7.66898 17.9165C9.00426 17.9165 10.088 16.7342 10.088 15.2776V12.6387H7.66898C6.3337 12.6387 5.25 13.8209 5.25 15.2776C5.25 16.7342 6.3337 17.9165 7.66898 17.9165Z"
fill="#0ACF83"
/>
<path
d="M5.25 10.0002C5.25 8.54355 6.3337 7.36133 7.66898 7.36133H10.088V12.6391H7.66898C6.3337 12.6391 5.25 11.4569 5.25 10.0002Z"
fill="#A259FF"
/>
<path
d="M5.25 4.72238C5.25 3.26572 6.3337 2.0835 7.66898 2.0835H10.088V7.36127H7.66898C6.3337 7.36127 5.25 6.17905 5.25 4.72238Z"
fill="#F24E1E"
/>
<path
d="M10.0879 2.0835H12.5069C13.8421 2.0835 14.9259 3.26572 14.9259 4.72238C14.9259 6.17905 13.8421 7.36127 12.5069 7.36127H10.0879V2.0835Z"
fill="#FF7262"
/>
<path
d="M14.9259 10.0002C14.9259 11.4569 13.8421 12.6391 12.5069 12.6391C11.1716 12.6391 10.0879 11.4569 10.0879 10.0002C10.0879 8.54355 11.1716 7.36133 12.5069 7.36133C13.8421 7.36133 14.9259 8.54355 14.9259 10.0002Z"
fill="#1ABCFE"
/>
</svg>`;

View File

@@ -0,0 +1,11 @@
import { EmbedGithubBlockSchema } from '@blocksuite/affine-model';
import { BlockHtmlAdapterExtension } from '@blocksuite/affine-shared/adapters';
import { createEmbedBlockHtmlAdapterMatcher } from '../../common/adapters/html.js';
export const embedGithubBlockHtmlAdapterMatcher =
createEmbedBlockHtmlAdapterMatcher(EmbedGithubBlockSchema.model.flavour);
export const EmbedGithubBlockHtmlAdapterExtension = BlockHtmlAdapterExtension(
embedGithubBlockHtmlAdapterMatcher
);

View File

@@ -0,0 +1,3 @@
export * from './html.js';
export * from './markdown.js';
export * from './plain-text.js';

View File

@@ -0,0 +1,10 @@
import { EmbedGithubBlockSchema } from '@blocksuite/affine-model';
import { BlockMarkdownAdapterExtension } from '@blocksuite/affine-shared/adapters';
import { createEmbedBlockMarkdownAdapterMatcher } from '../../common/adapters/markdown.js';
export const embedGithubBlockMarkdownAdapterMatcher =
createEmbedBlockMarkdownAdapterMatcher(EmbedGithubBlockSchema.model.flavour);
export const EmbedGithubMarkdownAdapterExtension =
BlockMarkdownAdapterExtension(embedGithubBlockMarkdownAdapterMatcher);

View File

@@ -0,0 +1,10 @@
import { EmbedGithubBlockSchema } from '@blocksuite/affine-model';
import { BlockPlainTextAdapterExtension } from '@blocksuite/affine-shared/adapters';
import { createEmbedBlockPlainTextAdapterMatcher } from '../../common/adapters/plain-text.js';
export const embedGithubBlockPlainTextAdapterMatcher =
createEmbedBlockPlainTextAdapterMatcher(EmbedGithubBlockSchema.model.flavour);
export const EmbedGithubBlockPlainTextAdapterExtension =
BlockPlainTextAdapterExtension(embedGithubBlockPlainTextAdapterMatcher);

View File

@@ -0,0 +1,6 @@
import { toEdgelessEmbedBlock } from '../common/to-edgeless-embed-block.js';
import { EmbedGithubBlockComponent } from './embed-github-block.js';
export class EmbedEdgelessGithubBlockComponent extends toEdgelessEmbedBlock(
EmbedGithubBlockComponent
) {}

View File

@@ -0,0 +1,275 @@
import { OpenIcon } from '@blocksuite/affine-components/icons';
import type {
EmbedGithubModel,
EmbedGithubStyles,
} from '@blocksuite/affine-model';
import { ThemeProvider } from '@blocksuite/affine-shared/services';
import { html, nothing } from 'lit';
import { property, state } from 'lit/decorators.js';
import { classMap } from 'lit/directives/class-map.js';
import { repeat } from 'lit/directives/repeat.js';
import { styleMap } from 'lit/directives/style-map.js';
import { EmbedBlockComponent } from '../common/embed-block-element.js';
import { getEmbedCardIcons } from '../common/utils.js';
import { githubUrlRegex } from './embed-github-model.js';
import type { EmbedGithubBlockService } from './embed-github-service.js';
import { GithubIcon, styles } from './styles.js';
import {
getGithubStatusIcon,
refreshEmbedGithubStatus,
refreshEmbedGithubUrlData,
} from './utils.js';
export class EmbedGithubBlockComponent extends EmbedBlockComponent<
EmbedGithubModel,
EmbedGithubBlockService
> {
static override styles = styles;
override _cardStyle: (typeof EmbedGithubStyles)[number] = 'horizontal';
open = () => {
let link = this.model.url;
if (!link.match(/^[a-zA-Z]+:\/\//)) {
link = 'https://' + link;
}
window.open(link, '_blank');
};
refreshData = () => {
refreshEmbedGithubUrlData(this, this.fetchAbortController.signal).catch(
console.error
);
};
refreshStatus = () => {
refreshEmbedGithubStatus(this, this.fetchAbortController.signal).catch(
console.error
);
};
private _handleAssigneeClick(assignee: string) {
const link = `https://www.github.com/${assignee}`;
window.open(link, '_blank');
}
private _handleDoubleClick(event: MouseEvent) {
event.stopPropagation();
this.open();
}
private _selectBlock() {
const selectionManager = this.host.selection;
const blockSelection = selectionManager.create('block', {
blockId: this.blockId,
});
selectionManager.setGroup('note', [blockSelection]);
}
protected _handleClick(event: MouseEvent) {
event.stopPropagation();
this._selectBlock();
}
override connectedCallback() {
super.connectedCallback();
this._cardStyle = this.model.style;
if (!this.model.owner || !this.model.repo || !this.model.githubId) {
this.doc.withoutTransact(() => {
const url = this.model.url;
const urlMatch = url.match(githubUrlRegex);
if (urlMatch) {
const [, owner, repo, githubType, githubId] = urlMatch;
this.doc.updateBlock(this.model, {
owner,
repo,
githubType: githubType === 'issue' ? 'issue' : 'pr',
githubId,
});
}
});
}
this.doc.withoutTransact(() => {
if (!this.model.description && !this.model.title) {
this.refreshData();
} else {
this.refreshStatus();
}
});
this.disposables.add(
this.model.propsUpdated.on(({ key }) => {
if (key === 'url') {
this.refreshData();
}
})
);
this.disposables.add(
this.selection.slots.changed.on(() => {
this._isSelected =
!!this.selected?.is('block') || !!this.selected?.is('surface');
})
);
}
override renderBlock() {
const {
title = 'GitHub',
githubType,
status,
statusReason,
owner,
repo,
createdAt,
assignees,
description,
image,
style,
} = this.model;
const loading = this.loading;
const theme = this.std.get(ThemeProvider).theme;
const { LoadingIcon, EmbedCardBannerIcon } = getEmbedCardIcons(theme);
const titleIcon = loading ? LoadingIcon : GithubIcon;
const statusIcon = status
? getGithubStatusIcon(githubType, status, statusReason)
: nothing;
const statusText = loading ? '' : status;
const titleText = loading ? 'Loading...' : title;
const descriptionText = loading ? '' : description;
const bannerImage =
!loading && image
? html`<object type="image/webp" data=${image} draggable="false">
${EmbedCardBannerIcon}
</object>`
: EmbedCardBannerIcon;
let dateText = '';
if (createdAt) {
const date = new Date(createdAt);
dateText = date.toLocaleDateString('en-US', {
month: 'short',
day: 'numeric',
});
const day = date.getDate();
const suffix =
['th', 'st', 'nd', 'rd'][((day / 10) | 0) !== 1 ? day % 10 : 4] || 'th';
dateText = dateText.replace(/\d+/, `${day}${suffix}`);
}
return this.renderEmbed(
() => html`
<div
class=${classMap({
'affine-embed-github-block': true,
loading,
[style]: true,
selected: this._isSelected,
})}
style=${styleMap({
transform: `scale(${this._scale})`,
transformOrigin: '0 0 ',
})}
@click=${this._handleClick}
@dblclick=${this._handleDoubleClick}
>
<div class="affine-embed-github-banner">${bannerImage}</div>
<div class="affine-embed-github-content">
<div class="affine-embed-github-content-title">
<div class="affine-embed-github-content-title-icons">
<div class="affine-embed-github-content-title-site-icon">
${titleIcon}
</div>
${status && statusText
? html`<div
class=${classMap({
'affine-embed-github-content-title-status-icon': true,
[githubType]: true,
[status]: true,
success: statusReason === 'completed',
failure: statusReason === 'not_planned',
})}
>
${statusIcon}
<span>${statusText}</span>
</div>`
: nothing}
</div>
<div class="affine-embed-github-content-title-text">
${titleText}
</div>
</div>
<div class="affine-embed-github-content-description">
${descriptionText}
</div>
${githubType === 'issue' && assignees
? html`
<div class="affine-embed-github-content-assignees">
<div
class="affine-embed-github-content-assignees-text label"
>
Assignees
</div>
<div
class="affine-embed-github-content-assignees-text users"
>
${assignees.length === 0
? html`<span
class="affine-embed-github-content-assignees-text-users placeholder"
>No one</span
>`
: repeat(
assignees,
assignee => assignee,
(assignee, index) =>
html`<span
class="affine-embed-github-content-assignees-text-users user"
@click=${() =>
this._handleAssigneeClick(assignee)}
>${`@${assignee}`}</span
>
${index === assignees.length - 1 ? '' : `, `}`
)}
</div>
</div>
`
: nothing}
<div class="affine-embed-github-content-url" @click=${this.open}>
<span class="affine-embed-github-content-repo"
>${`${owner}/${repo} |`}</span
>
${createdAt
? html`<span class="affine-embed-github-content-date"
>${dateText} |</span
>`
: nothing}
<span>github.com</span>
<div class="affine-embed-github-content-url-icon">
${OpenIcon}
</div>
</div>
</div>
</div>
`
);
}
@state()
private accessor _isSelected = false;
@property({ attribute: false })
accessor loading = false;
}

View File

@@ -0,0 +1,2 @@
export const githubUrlRegex: RegExp =
/^(?:https?:\/\/)?(?:www\.)?github\.com\/([^/]+)\/([^/]+)\/(issue|pull)s?\/(\d+)$/;

View File

@@ -0,0 +1,43 @@
import {
EmbedGithubBlockSchema,
type EmbedGithubModel,
EmbedGithubStyles,
} from '@blocksuite/affine-model';
import { EmbedOptionProvider } from '@blocksuite/affine-shared/services';
import { BlockService } from '@blocksuite/block-std';
import { LinkPreviewer } from '../common/link-previewer.js';
import { githubUrlRegex } from './embed-github-model.js';
import { queryEmbedGithubApiData, queryEmbedGithubData } from './utils.js';
export class EmbedGithubBlockService extends BlockService {
static override readonly flavour = EmbedGithubBlockSchema.model.flavour;
private static readonly linkPreviewer = new LinkPreviewer();
static setLinkPreviewEndpoint =
EmbedGithubBlockService.linkPreviewer.setEndpoint;
queryApiData = (embedGithubModel: EmbedGithubModel, signal?: AbortSignal) => {
return queryEmbedGithubApiData(embedGithubModel, signal);
};
queryUrlData = (embedGithubModel: EmbedGithubModel, signal?: AbortSignal) => {
return queryEmbedGithubData(
embedGithubModel,
EmbedGithubBlockService.linkPreviewer,
signal
);
};
override mounted() {
super.mounted();
this.std.get(EmbedOptionProvider).registerEmbedBlockOptions({
flavour: this.flavour,
urlRegex: githubUrlRegex,
styles: EmbedGithubStyles,
viewType: 'card',
});
}
}

View File

@@ -0,0 +1,18 @@
import {
BlockViewExtension,
type ExtensionType,
FlavourExtension,
} from '@blocksuite/block-std';
import { literal } from 'lit/static-html.js';
import { EmbedGithubBlockService } from './embed-github-service.js';
export const EmbedGithubBlockSpec: ExtensionType[] = [
FlavourExtension('affine:embed-github'),
EmbedGithubBlockService,
BlockViewExtension('affine:embed-github', model => {
return model.parent?.flavour === 'affine:surface'
? literal`affine-embed-edgeless-github-block`
: literal`affine-embed-github-block`;
}),
];

View File

@@ -0,0 +1,5 @@
export * from './adapters/index.js';
export * from './embed-github-block.js';
export * from './embed-github-service.js';
export * from './embed-github-spec.js';
export { GithubIcon } from './styles.js';

View File

@@ -0,0 +1,513 @@
import {
EMBED_CARD_HEIGHT,
EMBED_CARD_WIDTH,
} from '@blocksuite/affine-shared/consts';
import { css, html } from 'lit';
export const styles = css`
.affine-embed-github-block {
box-sizing: border-box;
display: flex;
width: 100%;
height: ${EMBED_CARD_HEIGHT.horizontal}px;
border-radius: 8px;
border: 1px solid var(--affine-background-tertiary-color);
opacity: var(--add, 1);
background: var(--affine-background-primary-color);
user-select: none;
}
.affine-embed-github-content {
display: flex;
flex-grow: 1;
flex-direction: column;
align-self: stretch;
gap: 4px;
padding: 12px;
border-radius: var(--1, 0px);
opacity: var(--add, 1);
}
.affine-embed-github-content-title {
display: flex;
min-height: 22px;
flex-direction: row;
gap: 8px;
align-items: center;
align-self: stretch;
padding: var(--1, 0px);
border-radius: var(--1, 0px);
opacity: var(--add, 1);
}
.affine-embed-github-content-title-icons {
display: flex;
justify-content: center;
align-items: center;
gap: 8px;
}
.affine-embed-github-content-title-icons img,
.affine-embed-github-content-title-icons object,
.affine-embed-github-content-title-icons svg {
width: 16px;
height: 16px;
color: var(--affine-pure-white);
}
.affine-embed-github-content-title-site-icon {
display: flex;
width: 16px;
height: 16px;
justify-content: center;
align-items: center;
.github-icon {
fill: var(--affine-black);
color: var(--affine-black);
}
}
.affine-embed-github-content-title-status-icon {
display: flex;
align-items: center;
gap: 4px;
padding: 3px 6px;
border-radius: 20px;
color: var(--affine-pure-white);
leading-trim: both;
text-edge: cap;
font-feature-settings:
'clig' off,
'liga' off;
text-transform: capitalize;
font-family: var(--affine-font-family);
font-size: 12px;
font-style: normal;
font-weight: 500;
line-height: 16px;
}
.affine-embed-github-content-title-status-icon.issue.open {
background: #238636;
}
.affine-embed-github-content-title-status-icon.issue.closed.success {
background: #8957e5;
}
.affine-embed-github-content-title-status-icon.issue.closed.failure {
background: #6e7681;
}
.affine-embed-github-content-title-status-icon.pr.open {
background: #238636;
}
.affine-embed-github-content-title-status-icon.pr.draft {
background: #6e7681;
}
.affine-embed-github-content-title-status-icon.pr.merged {
background: #8957e5;
}
.affine-embed-github-content-title-status-icon.pr.closed {
background: #c03737;
}
.affine-embed-github-content-title-status-icon > svg {
height: 16px;
width: 16px;
padding: 2px;
}
.affine-embed-github-content-title-status-icon > span {
padding: 0px 1.5px;
}
.affine-embed-github-content-title-text {
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-word;
overflow: hidden;
text-overflow: ellipsis;
color: var(--affine-text-primary-color);
font-family: var(--affine-font-family);
font-size: var(--affine-font-sm);
font-style: normal;
font-weight: 600;
line-height: 22px;
}
.affine-embed-github-content-description {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
flex-grow: 1;
word-break: break-word;
white-space: normal;
overflow: hidden;
text-overflow: ellipsis;
color: var(--affine-text-primary-color);
font-family: var(--affine-font-family);
font-size: var(--affine-font-xs);
font-style: normal;
font-weight: 400;
line-height: 20px;
}
.affine-embed-github-content-assignees {
display: none;
}
.affine-embed-github-content-url {
display: flex;
align-items: center;
justify-content: flex-start;
gap: 4px;
width: max-content;
max-width: 100%;
cursor: pointer;
}
.affine-embed-github-content-url > span {
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
white-space: normal;
overflow: hidden;
text-overflow: ellipsis;
color: var(--affine-text-secondary-color);
font-family: var(--affine-font-family);
font-size: var(--affine-font-xs);
font-style: normal;
font-weight: 400;
line-height: 20px;
}
.affine-embed-github-content-url:hover > span {
color: var(--affine-link-color);
}
.affine-embed-github-content-url:hover .open-icon {
fill: var(--affine-link-color);
}
.affine-embed-github-content-url-icon {
display: flex;
align-items: center;
justify-content: center;
width: 12px;
height: 12px;
}
.affine-embed-github-content-url-icon .open-icon {
height: 12px;
width: 12px;
fill: var(--affine-text-secondary-color);
}
.affine-embed-github-banner {
margin: 12px 0px 0px 12px;
width: 204px;
height: 102px;
opacity: var(--add, 1);
}
.affine-embed-github-banner img,
.affine-embed-github-banner object,
.affine-embed-github-banner svg {
width: 204px;
height: 102px;
object-fit: cover;
border-radius: 4px 4px var(--1, 0px) var(--1, 0px);
}
.affine-embed-github-block.loading {
.affine-embed-github-content-title-text {
color: var(--affine-placeholder-color);
}
}
.affine-embed-github-block.selected {
.affine-embed-github-content-url > span {
color: var(--affine-link-color);
}
.affine-embed-github-content-url .open-icon {
fill: var(--affine-link-color);
}
}
.affine-embed-github-block.list {
height: ${EMBED_CARD_HEIGHT.list}px;
width: ${EMBED_CARD_WIDTH.list}px;
.affine-embed-github-content {
width: 100%;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.affine-embed-github-content-title {
width: 660px;
}
.affine-embed-github-content-repo {
display: none;
}
.affine-embed-github-content-date {
display: none;
}
.affine-embed-github-content-url {
width: 90px;
justify-content: flex-end;
}
.affine-embed-github-content-description {
display: none;
}
.affine-embed-github-banner {
display: none;
}
}
.affine-embed-github-block.horizontal {
width: ${EMBED_CARD_WIDTH.horizontal}px;
height: ${EMBED_CARD_HEIGHT.horizontal}px;
}
.affine-embed-github-block.vertical {
width: ${EMBED_CARD_WIDTH.vertical}px;
height: ${EMBED_CARD_HEIGHT.vertical}px;
flex-direction: column;
.affine-embed-github-content {
width: 100%;
}
.affine-embed-github-content-description {
-webkit-line-clamp: 6;
}
.affine-embed-github-content-assignees {
display: flex;
padding: var(--1, 0px);
align-items: center;
justify-content: flex-start;
gap: 2px;
align-self: stretch;
}
.affine-embed-github-content-assignees-text {
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
font-family: var(--affine-font-family);
font-size: var(--affine-font-xs);
font-style: normal;
font-weight: 600;
line-height: 20px;
}
.affine-embed-github-content-assignees-text.label {
width: 72px;
color: var(--affine-text-primary-color);
font-weight: 600;
}
.affine-embed-github-content-assignees-text.users {
width: calc(100% - 72px);
word-break: break-all;
white-space: normal;
overflow: hidden;
text-overflow: ellipsis;
font-weight: 400;
}
.affine-embed-github-content-assignees-text-users.user {
color: var(--affine-link-color);
cursor: pointer;
}
.affine-embed-github-content-assignees-text-users.placeholder {
color: var(--affine-placeholder-color);
}
.affine-embed-github-banner {
width: 340px;
height: 170px;
margin-left: 12px;
}
.affine-embed-github-banner img,
.affine-embed-github-banner object,
.affine-embed-github-banner svg {
width: 340px;
height: 170px;
}
}
.affine-embed-github-block.cube {
width: ${EMBED_CARD_WIDTH.cube}px;
height: ${EMBED_CARD_HEIGHT.cube}px;
.affine-embed-github-content {
width: 100%;
flex-direction: column;
align-items: flex-start;
justify-content: space-between;
}
.affine-embed-github-content-title {
flex-direction: column;
gap: 4px;
align-items: flex-start;
}
.affine-embed-github-content-title-text {
-webkit-line-clamp: 2;
}
.affine-embed-github-content-description {
display: none;
}
.affine-embed-github-banner {
display: none;
}
.affine-embed-github-content-repo {
display: none;
}
.affine-embed-github-content-date {
display: none;
}
}
`;
export const GithubIcon = html`<svg
class="github-icon"
width="20"
height="20"
viewBox="0 0 16 16"
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M8.00016 1.33334C4.31683 1.33334 1.3335 4.39214 1.3335 8.16864C1.3335 11.1933 3.24183 13.7479 5.89183 14.6536C6.22516 14.7134 6.35016 14.5084 6.35016 14.3289C6.35016 14.1666 6.34183 13.6283 6.34183 13.0559C4.66683 13.372 4.2335 12.6372 4.10016 12.2527C4.02516 12.0562 3.70016 11.4496 3.41683 11.2872C3.1835 11.1591 2.85016 10.8429 3.4085 10.8344C3.9335 10.8259 4.3085 11.33 4.4335 11.535C5.0335 12.5689 5.99183 12.2784 6.37516 12.0989C6.4335 11.6546 6.6085 11.3556 6.80016 11.1847C5.31683 11.0138 3.76683 10.4243 3.76683 7.80978C3.76683 7.06644 4.02516 6.45127 4.45016 5.9728C4.3835 5.80192 4.15016 5.1013 4.51683 4.16145C4.51683 4.16145 5.07516 3.98202 6.35016 4.86206C6.8835 4.70827 7.45016 4.63137 8.01683 4.63137C8.5835 4.63137 9.15016 4.70827 9.6835 4.86206C10.9585 3.97348 11.5168 4.16145 11.5168 4.16145C11.8835 5.1013 11.6502 5.80192 11.5835 5.9728C12.0085 6.45127 12.2668 7.0579 12.2668 7.80978C12.2668 10.4328 10.7085 11.0138 9.22516 11.1847C9.46683 11.3983 9.67516 11.8084 9.67516 12.4492C9.67516 13.3635 9.66683 14.0983 9.66683 14.3289C9.66683 14.5084 9.79183 14.722 10.1252 14.6536C11.4486 14.1955 12.5986 13.3234 13.4133 12.1601C14.228 10.9968 14.6664 9.60079 14.6668 8.16864C14.6668 4.39214 11.6835 1.33334 8.00016 1.33334Z"
/>
</svg> `;
export const GithubIssueOpenIcon = html`<svg
width="16"
height="16"
viewBox="0 0 16 16"
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path>
<path
d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"
></path>
</svg>`;
export const GithubIssueClosedSuccessIcon = html`<svg
aria-hidden="true"
height="16"
viewBox="0 0 16 16"
version="1.1"
width="16"
data-view-component="true"
class="octicon octicon-issue-closed flex-items-center mr-1"
fill="currentColor"
>
<path
d="M11.28 6.78a.75.75 0 0 0-1.06-1.06L7.25 8.69 5.78 7.22a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.06 0l3.5-3.5Z"
></path>
<path
d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-1.5 0a6.5 6.5 0 1 0-13 0 6.5 6.5 0 0 0 13 0Z"
></path>
</svg>`;
export const GithubIssueClosedFailureIcon = html`<svg
aria-hidden="true"
height="16"
viewBox="0 0 16 16"
version="1.1"
width="16"
data-view-component="true"
class="octicon octicon-skip flex-items-center mr-1"
fill="currentColor"
>
<path
d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm9.78-2.22-5.5 5.5a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l5.5-5.5a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"
></path>
</svg>`;
export const GithubPROpenIcon = html`<svg
height="16"
class="octicon octicon-git-pull-request"
viewBox="0 0 16 16"
version="1.1"
width="16"
aria-hidden="true"
fill="currentColor"
>
<path
d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"
></path>
</svg>`;
export const GithubPRDraftIcon = html`<svg
height="16"
class="octicon octicon-git-pull-request-draft"
viewBox="0 0 16 16"
version="1.1"
width="16"
aria-hidden="true"
fill="currentColor"
>
<path
d="M3.25 1A2.25 2.25 0 0 1 4 5.372v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.251 2.251 0 0 1 3.25 1Zm9.5 14a2.25 2.25 0 1 1 0-4.5 2.25 2.25 0 0 1 0 4.5ZM2.5 3.25a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0ZM3.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm9.5 0a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM14 7.5a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Zm0-4.25a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Z"
></path>
</svg>`;
export const GithubPRMergedIcon = html`<svg
height="16"
class="octicon octicon-git-merge"
viewBox="0 0 16 16"
version="1.1"
width="16"
aria-hidden="true"
fill="currentColor"
>
<path
d="M5.45 5.154A4.25 4.25 0 0 0 9.25 7.5h1.378a2.251 2.251 0 1 1 0 1.5H9.25A5.734 5.734 0 0 1 5 7.123v3.505a2.25 2.25 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.95-.218ZM4.25 13.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm8.5-4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM5 3.25a.75.75 0 1 0 0 .005V3.25Z"
></path>
</svg>`;
export const GithubPRClosedIcon = html`<svg
height="16"
class="octicon octicon-git-pull-request-closed"
viewBox="0 0 16 16"
version="1.1"
width="16"
aria-hidden="true"
fill="currentColor"
>
<path
d="M3.25 1A2.25 2.25 0 0 1 4 5.372v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.251 2.251 0 0 1 3.25 1Zm9.5 5.5a.75.75 0 0 1 .75.75v3.378a2.251 2.251 0 1 1-1.5 0V7.25a.75.75 0 0 1 .75-.75Zm-2.03-5.273a.75.75 0 0 1 1.06 0l.97.97.97-.97a.748.748 0 0 1 1.265.332.75.75 0 0 1-.205.729l-.97.97.97.97a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-.97-.97-.97.97a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l.97-.97-.97-.97a.75.75 0 0 1 0-1.06ZM2.5 3.25a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0ZM3.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm9.5 0a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"
></path>
</svg>`;

View File

@@ -0,0 +1,170 @@
import type {
EmbedGithubBlockUrlData,
EmbedGithubModel,
} from '@blocksuite/affine-model';
import { isAbortError } from '@blocksuite/affine-shared/utils';
import { assertExists } from '@blocksuite/global/utils';
import { nothing } from 'lit';
import type { LinkPreviewer } from '../common/link-previewer.js';
import type { EmbedGithubBlockComponent } from './embed-github-block.js';
import {
GithubIssueClosedFailureIcon,
GithubIssueClosedSuccessIcon,
GithubIssueOpenIcon,
GithubPRClosedIcon,
GithubPRDraftIcon,
GithubPRMergedIcon,
GithubPROpenIcon,
} from './styles.js';
export async function queryEmbedGithubData(
embedGithubModel: EmbedGithubModel,
linkPreviewer: LinkPreviewer,
signal?: AbortSignal
): Promise<Partial<EmbedGithubBlockUrlData>> {
const [githubApiData, openGraphData] = await Promise.all([
queryEmbedGithubApiData(embedGithubModel, signal),
linkPreviewer.query(embedGithubModel.url, signal),
]);
return { ...githubApiData, ...openGraphData };
}
export async function queryEmbedGithubApiData(
embedGithubModel: EmbedGithubModel,
signal?: AbortSignal
): Promise<Partial<EmbedGithubBlockUrlData>> {
const { owner, repo, githubType, githubId } = embedGithubModel;
let githubApiData: Partial<EmbedGithubBlockUrlData> = {};
// github's public api has a rate limit of 60 requests per hour
const apiUrl = `https://api.github.com/repos/${owner}/${repo}/${
githubType === 'issue' ? 'issues' : 'pulls'
}/${githubId}`;
const githubApiResponse = await fetch(apiUrl, {
cache: 'no-cache',
signal,
}).catch(() => null);
if (githubApiResponse && githubApiResponse.ok) {
const githubApiJson = await githubApiResponse.json();
const { state, state_reason, draft, merged, created_at, assignees } =
githubApiJson;
const assigneeLogins = assignees.map(
(assignee: { login: string }) => assignee.login
);
let status = state;
if (merged) {
status = 'merged';
} else if (state === 'open' && draft) {
status = 'draft';
}
githubApiData = {
status,
statusReason: state_reason,
createdAt: created_at,
assignees: assigneeLogins,
};
}
return githubApiData;
}
export async function refreshEmbedGithubUrlData(
embedGithubElement: EmbedGithubBlockComponent,
signal?: AbortSignal
): Promise<void> {
let image = null,
status = null,
statusReason = null,
title = null,
description = null,
createdAt = null,
assignees = null;
try {
embedGithubElement.loading = true;
const queryUrlData = embedGithubElement.service?.queryUrlData;
assertExists(queryUrlData);
const githubUrlData = await queryUrlData(embedGithubElement.model);
({
image = null,
status = null,
statusReason = null,
title = null,
description = null,
createdAt = null,
assignees = null,
} = githubUrlData);
if (signal?.aborted) return;
embedGithubElement.doc.updateBlock(embedGithubElement.model, {
image,
status,
statusReason,
title,
description,
createdAt,
assignees,
});
} catch (error) {
if (signal?.aborted || isAbortError(error)) return;
throw Error;
} finally {
embedGithubElement.loading = false;
}
}
export async function refreshEmbedGithubStatus(
embedGithubElement: EmbedGithubBlockComponent,
signal?: AbortSignal
) {
const queryApiData = embedGithubElement.service?.queryApiData;
assertExists(queryApiData);
const githubApiData = await queryApiData(embedGithubElement.model, signal);
if (!githubApiData.status || signal?.aborted) return;
embedGithubElement.doc.updateBlock(embedGithubElement.model, {
status: githubApiData.status,
statusReason: githubApiData.statusReason,
createdAt: githubApiData.createdAt,
assignees: githubApiData.assignees,
});
}
export function getGithubStatusIcon(
type: 'issue' | 'pr',
status: string,
statusReason: string | null
) {
if (type === 'issue') {
if (status === 'open') {
return GithubIssueOpenIcon;
} else if (status === 'closed' && statusReason === 'completed') {
return GithubIssueClosedSuccessIcon;
} else if (status === 'closed' && statusReason === 'not_planned') {
return GithubIssueClosedFailureIcon;
} else {
return nothing;
}
} else if (type === 'pr') {
if (status === 'open') {
return GithubPROpenIcon;
} else if (status === 'draft') {
return GithubPRDraftIcon;
} else if (status === 'merged') {
return GithubPRMergedIcon;
} else if (status === 'closed') {
return GithubPRClosedIcon;
}
}
return nothing;
}

View File

@@ -0,0 +1,171 @@
import {
menu,
popMenu,
popupTargetFromElement,
} from '@blocksuite/affine-components/context-menu';
import { EditPropsStore } from '@blocksuite/affine-shared/services';
import {
CopyIcon,
DoneIcon,
ExpandCloseIcon,
SettingsIcon,
} from '@blocksuite/icons/lit';
import { autoPlacement, flip, offset } from '@floating-ui/dom';
import { css, html, LitElement } from 'lit';
import { property, query, state } from 'lit/decorators.js';
import type { EmbedEdgelessHtmlBlockComponent } from '../embed-edgeless-html-block.js';
export class EmbedHtmlFullscreenToolbar extends LitElement {
static override styles = css`
:host {
box-sizing: border-box;
position: absolute;
z-index: 1;
left: 50%;
transform: translateX(-50%);
bottom: 0;
-webkit-user-select: none;
user-select: none;
}
.toolbar-toggle-control {
padding-bottom: 20px;
}
.toolbar-toggle-control[data-auto-hide='true'] {
transition: 0.27s ease;
padding-top: 100px;
transform: translateY(100px);
}
.toolbar-toggle-control[data-auto-hide='true']:hover {
padding-top: 0;
transform: translateY(0);
}
.fullscreen-toolbar-container {
background: var(--affine-background-overlay-panel-color);
box-shadow: var(--affine-menu-shadow);
border: 1px solid var(--affine-border-color);
border-radius: 40px;
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
padding: 0 20px;
height: 64px;
}
.short-v-divider {
display: inline-block;
background-color: var(--affine-border-color);
width: 1px;
height: 36px;
}
`;
private _popSettings = () => {
this._popperVisible = true;
popMenu(popupTargetFromElement(this._fullScreenToolbarContainer), {
options: {
items: [
() =>
html` <div class="settings-header">
<span>Settings</span>
</div>`,
menu.group({
name: 'thing',
items: [
menu.toggleSwitch({
name: 'Hide toolbar',
on: this.autoHideToolbar,
onChange: on => {
this.autoHideToolbar = on;
},
}),
],
}),
],
onClose: () => {
this._popperVisible = false;
},
},
middleware: [
autoPlacement({ allowedPlacements: ['top-end'] }),
flip(),
offset({ mainAxis: 4, crossAxis: -40 }),
],
container: this.embedHtml.iframeWrapper,
});
};
copyCode = () => {
if (this._copied) return;
this.embedHtml.std.clipboard
.writeToClipboard(items => {
items['text/plain'] = this.embedHtml.model.html ?? '';
return items;
})
.then(() => {
this._copied = true;
setTimeout(() => (this._copied = false), 1500);
})
.catch(console.error);
};
private get autoHideToolbar() {
return (
this.embedHtml.std
.get(EditPropsStore)
.getStorage('autoHideEmbedHTMLFullScreenToolbar') ?? false
);
}
private set autoHideToolbar(val: boolean) {
this.embedHtml.std
.get(EditPropsStore)
.setStorage('autoHideEmbedHTMLFullScreenToolbar', val);
}
override render() {
const hideToolbar = !this._popperVisible && this.autoHideToolbar;
return html`
<div data-auto-hide="${hideToolbar}" class="toolbar-toggle-control">
<div class="fullscreen-toolbar-container">
<icon-button @click="${this.embedHtml.close}"
>${ExpandCloseIcon()}
</icon-button>
<icon-button
@click="${this._popSettings}"
hover="${this._popperVisible}"
>${SettingsIcon()}
</icon-button>
<div class="short-v-divider"></div>
<icon-button class="copy-button" @click="${this.copyCode}"
>${this._copied ? DoneIcon() : CopyIcon()}
</icon-button>
</div>
</div>
`;
}
@state()
private accessor _copied = false;
@query('.fullscreen-toolbar-container')
private accessor _fullScreenToolbarContainer!: HTMLElement;
@state()
private accessor _popperVisible = false;
@property({ attribute: false })
accessor embedHtml!: EmbedEdgelessHtmlBlockComponent;
}

View File

@@ -0,0 +1,6 @@
import { toEdgelessEmbedBlock } from '../common/to-edgeless-embed-block.js';
import { EmbedHtmlBlockComponent } from './embed-html-block.js';
export class EmbedEdgelessHtmlBlockComponent extends toEdgelessEmbedBlock(
EmbedHtmlBlockComponent
) {}

View File

@@ -0,0 +1,145 @@
import type { EmbedHtmlModel, EmbedHtmlStyles } from '@blocksuite/affine-model';
import { html } from 'lit';
import { query, state } from 'lit/decorators.js';
import { classMap } from 'lit/directives/class-map.js';
import { type StyleInfo, styleMap } from 'lit/directives/style-map.js';
import { EmbedBlockComponent } from '../common/embed-block-element.js';
import { HtmlIcon, styles } from './styles.js';
export class EmbedHtmlBlockComponent extends EmbedBlockComponent<EmbedHtmlModel> {
static override styles = styles;
override _cardStyle: (typeof EmbedHtmlStyles)[number] = 'html';
protected _isDragging = false;
protected _isResizing = false;
close = () => {
document.exitFullscreen().catch(console.error);
};
protected embedHtmlStyle: StyleInfo = {};
open = () => {
this.iframeWrapper?.requestFullscreen().catch(console.error);
};
refreshData = () => {};
private _handleDoubleClick(event: MouseEvent) {
event.stopPropagation();
this.open();
}
private _selectBlock() {
const selectionManager = this.host.selection;
const blockSelection = selectionManager.create('block', {
blockId: this.blockId,
});
selectionManager.setGroup('note', [blockSelection]);
}
protected _handleClick(event: MouseEvent) {
event.stopPropagation();
this._selectBlock();
}
override connectedCallback() {
super.connectedCallback();
this._cardStyle = this.model.style;
// this is required to prevent iframe from capturing pointer events
this.disposables.add(
this.std.selection.slots.changed.on(() => {
this._isSelected =
!!this.selected?.is('block') || !!this.selected?.is('surface');
this._showOverlay =
this._isResizing || this._isDragging || !this._isSelected;
})
);
// this is required to prevent iframe from capturing pointer events
this.handleEvent('dragStart', () => {
this._isDragging = true;
this._showOverlay =
this._isResizing || this._isDragging || !this._isSelected;
});
this.handleEvent('dragEnd', () => {
this._isDragging = false;
this._showOverlay =
this._isResizing || this._isDragging || !this._isSelected;
});
}
override renderBlock(): unknown {
const titleText = 'Basic HTML Page Structure';
const htmlSrc = `
<style>
body {
margin: 0;
}
</style>
${this.model.html}
`;
return this.renderEmbed(() => {
if (!this.model.html) {
return html` <div class="affine-html-empty">Empty</div>`;
}
return html`
<div
class=${classMap({
'affine-embed-html-block': true,
selected: this._isSelected,
})}
style=${styleMap(this.embedHtmlStyle)}
@click=${this._handleClick}
@dblclick=${this._handleDoubleClick}
>
<div class="affine-embed-html">
<div class="affine-embed-html-iframe-container">
<div class="embed-html-block-iframe-wrapper" allowfullscreen>
<iframe
class="embed-html-block-iframe"
sandbox="allow-scripts"
scrolling="no"
.srcdoc=${htmlSrc}
loading="lazy"
></iframe>
<embed-html-fullscreen-toolbar
.embedHtml=${this}
></embed-html-fullscreen-toolbar>
</div>
<div
class=${classMap({
'affine-embed-html-iframe-overlay': true,
hide: !this._showOverlay,
})}
></div>
</div>
</div>
<div class="affine-embed-html-title">
<div class="affine-embed-html-title-icon">${HtmlIcon}</div>
<div class="affine-embed-html-title-text">${titleText}</div>
</div>
</div>
`;
});
}
@state()
protected accessor _isSelected = false;
@state()
protected accessor _showOverlay = true;
@query('.embed-html-block-iframe-wrapper')
accessor iframeWrapper!: HTMLDivElement;
}

View File

@@ -0,0 +1,10 @@
import { BlockViewExtension, type ExtensionType } from '@blocksuite/block-std';
import { literal } from 'lit/static-html.js';
export const EmbedHtmlBlockSpec: ExtensionType[] = [
BlockViewExtension('affine:embed-html', model => {
return model.parent?.flavour === 'affine:surface'
? literal`affine-embed-edgeless-html-block`
: literal`affine-embed-html-block`;
}),
];

View File

@@ -0,0 +1,7 @@
export * from './embed-html-block.js';
export * from './embed-html-spec.js';
export {
EMBED_HTML_MIN_HEIGHT,
EMBED_HTML_MIN_WIDTH,
HtmlIcon,
} from './styles.js';

View File

@@ -0,0 +1,150 @@
import { css, html } from 'lit';
export const EMBED_HTML_MIN_WIDTH = 370;
export const EMBED_HTML_MIN_HEIGHT = 80;
export const styles = css`
.affine-embed-html-block {
box-sizing: border-box;
width: 100%;
height: 100%;
display: flex;
padding: 12px;
flex-direction: column;
align-items: flex-start;
gap: 20px;
border-radius: 12px;
border: 1px solid var(--affine-background-tertiary-color);
opacity: var(--add, 1);
background: var(--affine-background-primary-color);
user-select: none;
}
.affine-embed-html {
flex-grow: 1;
width: 100%;
opacity: var(--add, 1);
}
.affine-embed-html img,
.affine-embed-html object,
.affine-embed-html svg {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 4px 4px var(--1, 0px) var(--1, 0px);
}
.affine-embed-html-iframe-container {
position: relative;
width: 100%;
height: 100%;
border-radius: 4px 4px 0px 0px;
box-shadow: var(--affine-shadow-1);
overflow: hidden;
}
.embed-html-block-iframe-wrapper {
position: relative;
width: 100%;
height: 100%;
}
.embed-html-block-iframe-wrapper > iframe {
width: 100%;
height: 100%;
border: none;
}
.embed-html-block-iframe-wrapper affine-menu {
min-width: 296px;
}
.embed-html-block-iframe-wrapper affine-menu .settings-header {
padding: 7px 12px;
font-weight: 500;
font-size: var(--affine-font-xs);
color: var(--affine-text-secondary-color);
}
.embed-html-block-iframe-wrapper > embed-html-fullscreen-toolbar {
visibility: hidden;
}
.embed-html-block-iframe-wrapper:fullscreen > embed-html-fullscreen-toolbar {
visibility: visible;
}
.affine-embed-html-iframe-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.affine-embed-html-iframe-overlay.hide {
display: none;
}
.affine-embed-html-title {
height: fit-content;
display: flex;
align-items: center;
gap: 8px;
padding: var(--1, 0px);
border-radius: var(--1, 0px);
opacity: var(--add, 1);
}
.affine-embed-html-title-icon {
display: flex;
width: 20px;
height: 20px;
justify-content: center;
align-items: center;
}
.affine-embed-html-title-icon img,
.affine-embed-html-title-icon object,
.affine-embed-html-title-icon svg {
width: 20px;
height: 20px;
fill: var(--affine-background-primary-color);
}
.affine-embed-html-title-text {
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-word;
overflow: hidden;
text-overflow: ellipsis;
color: var(--affine-text-primary-color);
font-family: var(--affine-font-family);
font-size: var(--affine-font-sm);
font-style: normal;
font-weight: 600;
line-height: 22px;
}
`;
export const HtmlIcon = html`<svg
width="20"
height="20"
viewBox="0 0 20 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M6.66667 1.875C5.40101 1.875 4.375 2.90101 4.375 4.16667V6.66667C4.375 7.01184 4.65482 7.29167 5 7.29167C5.34518 7.29167 5.625 7.01184 5.625 6.66667V4.16667C5.625 3.59137 6.09137 3.125 6.66667 3.125H12.9349C13.2563 3.125 13.5598 3.27341 13.7571 3.52714L15.8222 6.18232C15.9645 6.36517 16.0417 6.5902 16.0417 6.82185V15C16.0417 15.5753 15.5753 16.0417 15 16.0417H6.66667C6.09137 16.0417 5.625 15.5753 5.625 15V13.75C5.625 13.4048 5.34518 13.125 5 13.125C4.65482 13.125 4.375 13.4048 4.375 13.75V15C4.375 16.2657 5.40101 17.2917 6.66667 17.2917H15C16.2657 17.2917 17.2917 16.2657 17.2917 15V6.82185C17.2917 6.31223 17.1218 5.81716 16.8089 5.4149L14.7438 2.75972C14.3096 2.2015 13.642 1.875 12.9349 1.875H6.66667ZM2.30713 11.4758C2.30713 11.7936 2.47945 11.9727 2.78158 11.9727C3.0837 11.9727 3.25602 11.7936 3.25602 11.4758V10.6679H4.3929V11.4758C4.3929 11.7936 4.56523 11.9727 4.86735 11.9727C5.16947 11.9727 5.3418 11.7936 5.3418 11.4758V9.12821C5.3418 8.81043 5.16947 8.63139 4.86735 8.63139C4.56523 8.63139 4.3929 8.81043 4.3929 9.12821V9.91374H3.25602V9.12821C3.25602 8.81043 3.0837 8.63139 2.78158 8.63139C2.47945 8.63139 2.30713 8.81043 2.30713 9.12821V11.4758ZM6.51672 11.4758C6.51672 11.7936 6.68905 11.9727 6.99117 11.9727C7.29329 11.9727 7.46562 11.7936 7.46562 11.4758V9.44377H7.9423C8.19295 9.44377 8.3608 9.30725 8.3608 9.06555C8.3608 8.82385 8.19743 8.68734 7.9423 8.68734H6.04004C5.78491 8.68734 5.62154 8.82385 5.62154 9.06555C5.62154 9.30725 5.78939 9.44377 6.04004 9.44377H6.51672V11.4758ZM9.05457 11.9727C8.79049 11.9727 8.64054 11.8138 8.64054 11.534V9.25354C8.64054 8.85518 8.85986 8.63139 9.25598 8.63139C9.58944 8.63139 9.76624 8.76343 9.90051 9.11479L10.46 10.5717H10.4779L11.0352 9.11479C11.1694 8.76343 11.3462 8.63139 11.6797 8.63139C12.0758 8.63139 12.2951 8.85518 12.2951 9.25354V11.534C12.2951 11.8138 12.1452 11.9727 11.8811 11.9727C11.617 11.9727 11.4671 11.8138 11.4671 11.534V10.0458H11.4492L10.8069 11.6638C10.742 11.8272 10.639 11.901 10.4712 11.901C10.3011 11.901 10.1914 11.825 10.1288 11.6638L9.48649 10.0458H9.46859V11.534C9.46859 11.8138 9.31864 11.9727 9.05457 11.9727ZM12.745 11.4199C12.745 11.7377 12.9173 11.9167 13.2194 11.9167H14.5868C14.8419 11.9167 15.0053 11.7802 15.0053 11.5385C15.0053 11.2968 14.8374 11.1603 14.5868 11.1603H13.6938V9.12821C13.6938 8.81043 13.5215 8.63139 13.2194 8.63139C12.9173 8.63139 12.745 8.81043 12.745 9.12821V11.4199Z"
fill="#77757D"
/>
</svg> `;

View File

@@ -0,0 +1,64 @@
import { EmbedLinkedDocBlockSchema } from '@blocksuite/affine-model';
import {
BlockHtmlAdapterExtension,
type BlockHtmlAdapterMatcher,
} from '@blocksuite/affine-shared/adapters';
import { generateDocUrl } from '../../common/adapters/utils.js';
export const embedLinkedDocBlockHtmlAdapterMatcher: BlockHtmlAdapterMatcher = {
flavour: EmbedLinkedDocBlockSchema.model.flavour,
toMatch: () => false,
fromMatch: o => o.node.flavour === EmbedLinkedDocBlockSchema.model.flavour,
toBlockSnapshot: {},
fromBlockSnapshot: {
enter: (o, context) => {
const { configs, walkerContext } = context;
// Parse as link
if (!o.node.props.pageId) {
return;
}
const title = configs.get('title:' + o.node.props.pageId) ?? 'untitled';
const url = generateDocUrl(
configs.get('docLinkBaseUrl') ?? '',
String(o.node.props.pageId),
o.node.props.params ?? Object.create(null)
);
walkerContext
.openNode(
{
type: 'element',
tagName: 'div',
properties: {
className: ['affine-paragraph-block-container'],
},
children: [],
},
'children'
)
.openNode(
{
type: 'element',
tagName: 'a',
properties: {
href: url,
},
children: [
{
type: 'text',
value: title,
},
],
},
'children'
)
.closeNode()
.closeNode();
},
},
};
export const EmbedLinkedDocHtmlAdapterExtension = BlockHtmlAdapterExtension(
embedLinkedDocBlockHtmlAdapterMatcher
);

View File

@@ -0,0 +1,3 @@
export * from './html.js';
export * from './markdown.js';
export * from './plain-text.js';

View File

@@ -0,0 +1,57 @@
import { EmbedLinkedDocBlockSchema } from '@blocksuite/affine-model';
import {
BlockMarkdownAdapterExtension,
type BlockMarkdownAdapterMatcher,
} from '@blocksuite/affine-shared/adapters';
import { generateDocUrl } from '../../common/adapters/utils.js';
export const embedLinkedDocBlockMarkdownAdapterMatcher: BlockMarkdownAdapterMatcher =
{
flavour: EmbedLinkedDocBlockSchema.model.flavour,
toMatch: () => false,
fromMatch: o => o.node.flavour === EmbedLinkedDocBlockSchema.model.flavour,
toBlockSnapshot: {},
fromBlockSnapshot: {
enter: (o, context) => {
const { configs, walkerContext } = context;
// Parse as link
if (!o.node.props.pageId) {
return;
}
const title = configs.get('title:' + o.node.props.pageId) ?? 'untitled';
const url = generateDocUrl(
configs.get('docLinkBaseUrl') ?? '',
String(o.node.props.pageId),
o.node.props.params ?? Object.create(null)
);
walkerContext
.openNode(
{
type: 'paragraph',
children: [],
},
'children'
)
.openNode(
{
type: 'link',
url,
title: o.node.props.caption as string | null,
children: [
{
type: 'text',
value: title,
},
],
},
'children'
)
.closeNode()
.closeNode();
},
},
};
export const EmbedLinkedDocMarkdownAdapterExtension =
BlockMarkdownAdapterExtension(embedLinkedDocBlockMarkdownAdapterMatcher);

View File

@@ -0,0 +1,34 @@
import { EmbedLinkedDocBlockSchema } from '@blocksuite/affine-model';
import {
BlockPlainTextAdapterExtension,
type BlockPlainTextAdapterMatcher,
} from '@blocksuite/affine-shared/adapters';
import { generateDocUrl } from '../../common/adapters/utils.js';
export const embedLinkedDocBlockPlainTextAdapterMatcher: BlockPlainTextAdapterMatcher =
{
flavour: EmbedLinkedDocBlockSchema.model.flavour,
toMatch: () => false,
fromMatch: o => o.node.flavour === EmbedLinkedDocBlockSchema.model.flavour,
toBlockSnapshot: {},
fromBlockSnapshot: {
enter: (o, context) => {
const { configs, textBuffer } = context;
// Parse as link
if (!o.node.props.pageId) {
return;
}
const title = configs.get('title:' + o.node.props.pageId) ?? 'untitled';
const url = generateDocUrl(
configs.get('docLinkBaseUrl') ?? '',
String(o.node.props.pageId),
o.node.props.params ?? Object.create(null)
);
textBuffer.content += `${title}: ${url}\n`;
},
},
};
export const EmbedLinkedDocBlockPlainTextAdapterExtension =
BlockPlainTextAdapterExtension(embedLinkedDocBlockPlainTextAdapterMatcher);

View File

@@ -0,0 +1,9 @@
import type { BlockCommands } from '@blocksuite/block-std';
import { insertEmbedLinkedDocCommand } from './insert-embed-linked-doc.js';
import { insertLinkByQuickSearchCommand } from './insert-link-by-quick-search.js';
export const commands: BlockCommands = {
insertEmbedLinkedDoc: insertEmbedLinkedDocCommand,
insertLinkByQuickSearch: insertLinkByQuickSearchCommand,
};

View File

@@ -0,0 +1,21 @@
import type { EmbedCardStyle, ReferenceParams } from '@blocksuite/affine-model';
import type { Command } from '@blocksuite/block-std';
import { insertEmbedCard } from '../../common/insert-embed-card.js';
export const insertEmbedLinkedDocCommand: Command<
never,
'insertedLinkType',
{
docId: string;
params?: ReferenceParams;
}
> = (ctx, next) => {
const { docId, params, std } = ctx;
const flavour = 'affine:embed-linked-doc';
const targetStyle: EmbedCardStyle = 'vertical';
const props: Record<string, unknown> = { pageId: docId };
if (params) props.params = params;
insertEmbedCard(std, { flavour, targetStyle, props });
next();
};

View File

@@ -0,0 +1,48 @@
import { QuickSearchProvider } from '@blocksuite/affine-shared/services';
import type { Command } from '@blocksuite/block-std';
export type InsertedLinkType = {
flavour?: 'affine:bookmark' | 'affine:embed-linked-doc';
} | null;
export const insertLinkByQuickSearchCommand: Command<
never,
'insertedLinkType'
> = (ctx, next) => {
const { std } = ctx;
const quickSearchService = std.getOptional(QuickSearchProvider);
if (!quickSearchService) {
next();
return;
}
const insertedLinkType: Promise<InsertedLinkType> = quickSearchService
.openQuickSearch()
.then(result => {
if (!result) return null;
// add linked doc
if ('docId' in result) {
std.command.exec('insertEmbedLinkedDoc', {
docId: result.docId,
params: result.params,
});
return {
flavour: 'affine:embed-linked-doc',
};
}
// add normal link;
if ('externalUrl' in result) {
// @ts-expect-error TODO: fix after bookmark refactor
std.command.exec('insertBookmark', { url: result.externalUrl });
return {
flavour: 'affine:bookmark',
};
}
return null;
});
next({ insertedLinkType });
};

View File

@@ -0,0 +1,72 @@
import {
EMBED_CARD_HEIGHT,
EMBED_CARD_WIDTH,
} from '@blocksuite/affine-shared/consts';
import { cloneReferenceInfoWithoutAliases } from '@blocksuite/affine-shared/utils';
import { Bound } from '@blocksuite/global/utils';
import { toEdgelessEmbedBlock } from '../common/to-edgeless-embed-block.js';
import { EmbedLinkedDocBlockComponent } from './embed-linked-doc-block.js';
export class EmbedEdgelessLinkedDocBlockComponent extends toEdgelessEmbedBlock(
EmbedLinkedDocBlockComponent
) {
override convertToEmbed = () => {
const { id, doc, caption, xywh } = this.model;
// synced doc entry controlled by awareness flag
const isSyncedDocEnabled = doc.awarenessStore.getFlag(
'enable_synced_doc_block'
);
if (!isSyncedDocEnabled) {
return;
}
const style = 'syncedDoc';
const bound = Bound.deserialize(xywh);
bound.w = EMBED_CARD_WIDTH[style];
bound.h = EMBED_CARD_HEIGHT[style];
const edgelessService = this.rootService;
if (!edgelessService) {
return;
}
// @ts-expect-error TODO: fix after edgeless refactor
const newId = edgelessService.addBlock(
'affine:embed-synced-doc',
{
xywh: bound.serialize(),
caption,
...cloneReferenceInfoWithoutAliases(this.referenceInfo$.peek()),
},
// @ts-expect-error TODO: fix after edgeless refactor
edgelessService.surface
);
this.std.command.exec('reassociateConnectors', {
oldId: id,
newId,
});
// @ts-expect-error TODO: fix after edgeless refactor
edgelessService.selection.set({
editing: false,
elements: [newId],
});
doc.deleteBlock(this.model);
};
get rootService() {
return this.std.getService('affine:page');
}
protected override _handleClick(evt: MouseEvent): void {
if (this.config.handleClick) {
this.config.handleClick(evt, this.host, this.referenceInfo$.peek());
return;
}
}
}

View File

@@ -0,0 +1,557 @@
import { isPeekable, Peekable } from '@blocksuite/affine-components/peek';
import {
REFERENCE_NODE,
RefNodeSlotsProvider,
} from '@blocksuite/affine-components/rich-text';
import type {
DocMode,
EmbedLinkedDocModel,
EmbedLinkedDocStyles,
} from '@blocksuite/affine-model';
import {
EMBED_CARD_HEIGHT,
EMBED_CARD_WIDTH,
} from '@blocksuite/affine-shared/consts';
import {
DocDisplayMetaProvider,
DocModeProvider,
ThemeProvider,
} from '@blocksuite/affine-shared/services';
import {
cloneReferenceInfo,
cloneReferenceInfoWithoutAliases,
matchFlavours,
referenceToNode,
} from '@blocksuite/affine-shared/utils';
import { Bound } from '@blocksuite/global/utils';
import { DocCollection } from '@blocksuite/store';
import { computed } from '@preact/signals-core';
import { html, nothing } from 'lit';
import { property, queryAsync, state } from 'lit/decorators.js';
import { classMap } from 'lit/directives/class-map.js';
import { styleMap } from 'lit/directives/style-map.js';
import { when } from 'lit/directives/when.js';
import { EmbedBlockComponent } from '../common/embed-block-element.js';
import { renderLinkedDocInCard } from '../common/render-linked-doc.js';
import { SyncedDocErrorIcon } from '../embed-synced-doc-block/styles.js';
import {
type EmbedLinkedDocBlockConfig,
EmbedLinkedDocBlockConfigIdentifier,
} from './embed-linked-doc-config.js';
import { styles } from './styles.js';
import { getEmbedLinkedDocIcons } from './utils.js';
@Peekable({
enableOn: ({ doc }: EmbedLinkedDocBlockComponent) => !doc.readonly,
})
export class EmbedLinkedDocBlockComponent extends EmbedBlockComponent<EmbedLinkedDocModel> {
static override styles = styles;
private _load = async () => {
const {
loading = true,
isError = false,
isBannerEmpty = true,
isNoteContentEmpty = true,
} = this.getInitialState();
this._loading = loading;
this.isError = isError;
this.isBannerEmpty = isBannerEmpty;
this.isNoteContentEmpty = isNoteContentEmpty;
if (!this._loading) {
return;
}
const linkedDoc = this.linkedDoc;
if (!linkedDoc) {
this._loading = false;
return;
}
if (!linkedDoc.loaded) {
try {
linkedDoc.load();
} catch (e) {
console.error(e);
this.isError = true;
}
}
if (!this.isError && !linkedDoc.root) {
await new Promise<void>(resolve => {
linkedDoc.slots.rootAdded.once(() => {
resolve();
});
});
}
this._loading = false;
// If it is a link to a block or element, the content will not be rendered.
if (this._referenceToNode) {
return;
}
if (!this.isError) {
const cardStyle = this.model.style;
if (cardStyle === 'horizontal' || cardStyle === 'vertical') {
renderLinkedDocInCard(this);
}
}
};
private _selectBlock = () => {
const selectionManager = this.host.selection;
const blockSelection = selectionManager.create('block', {
blockId: this.blockId,
});
selectionManager.setGroup('note', [blockSelection]);
};
private _setDocUpdatedAt = () => {
const meta = this.doc.collection.meta.getDocMeta(this.model.pageId);
if (meta) {
const date = meta.updatedDate || meta.createDate;
this._docUpdatedAt = new Date(date);
}
};
override _cardStyle: (typeof EmbedLinkedDocStyles)[number] = 'horizontal';
convertToEmbed = () => {
if (this._referenceToNode) return;
const { doc, caption } = this.model;
// synced doc entry controlled by awareness flag
const isSyncedDocEnabled = doc.awarenessStore.getFlag(
'enable_synced_doc_block'
);
if (!isSyncedDocEnabled) {
return;
}
const parent = doc.getParent(this.model);
if (!parent) {
return;
}
const index = parent.children.indexOf(this.model);
doc.addBlock(
'affine:embed-synced-doc',
{
caption,
...cloneReferenceInfoWithoutAliases(this.referenceInfo$.peek()),
},
parent,
index
);
this.std.selection.setGroup('note', []);
doc.deleteBlock(this.model);
};
covertToInline = () => {
const { doc } = this.model;
const parent = doc.getParent(this.model);
if (!parent) {
return;
}
const index = parent.children.indexOf(this.model);
const yText = new DocCollection.Y.Text();
yText.insert(0, REFERENCE_NODE);
yText.format(0, REFERENCE_NODE.length, {
reference: {
type: 'LinkedPage',
...this.referenceInfo$.peek(),
},
});
const text = new doc.Text(yText);
doc.addBlock(
'affine:paragraph',
{
text,
},
parent,
index
);
doc.deleteBlock(this.model);
};
referenceInfo$ = computed(() => {
const { pageId, params, title$, description$ } = this.model;
return cloneReferenceInfo({
pageId,
params,
title: title$.value,
description: description$.value,
});
});
icon$ = computed(() => {
const { pageId, params, title } = this.referenceInfo$.value;
return this.std
.get(DocDisplayMetaProvider)
.icon(pageId, { params, title, referenced: true }).value;
});
open = () => {
this.std
.getOptional(RefNodeSlotsProvider)
?.docLinkClicked.emit(this.referenceInfo$.peek());
};
refreshData = () => {
this._load().catch(e => {
console.error(e);
this.isError = true;
});
};
title$ = computed(() => {
const { pageId, params, title } = this.referenceInfo$.value;
return (
title ||
this.std
.get(DocDisplayMetaProvider)
.title(pageId, { params, title, referenced: true })
);
});
get config(): EmbedLinkedDocBlockConfig {
return (
this.std.provider.getOptional(EmbedLinkedDocBlockConfigIdentifier) || {}
);
}
get docTitle() {
return this.model.title || this.linkedDoc?.meta?.title || 'Untitled';
}
get editorMode() {
return this._linkedDocMode;
}
get linkedDoc() {
return this.std.collection.getDoc(this.model.pageId);
}
private _handleDoubleClick(event: MouseEvent) {
if (this.config.handleDoubleClick) {
this.config.handleDoubleClick(
event,
this.host,
this.referenceInfo$.peek()
);
if (event.defaultPrevented) {
return;
}
}
if (isPeekable(this)) {
return;
}
event.stopPropagation();
this.open();
}
private _isDocEmpty() {
const linkedDoc = this.linkedDoc;
if (!linkedDoc) {
return false;
}
return !!linkedDoc && this.isNoteContentEmpty && this.isBannerEmpty;
}
protected _handleClick(event: MouseEvent) {
if (this.config.handleClick) {
this.config.handleClick(event, this.host, this.referenceInfo$.peek());
if (event.defaultPrevented) {
return;
}
}
this._selectBlock();
}
override connectedCallback() {
super.connectedCallback();
this._cardStyle = this.model.style;
this._referenceToNode = referenceToNode(this.model);
this._load().catch(e => {
console.error(e);
this.isError = true;
});
const linkedDoc = this.linkedDoc;
if (linkedDoc) {
this.disposables.add(
linkedDoc.collection.meta.docMetaUpdated.on(() => {
this._load().catch(e => {
console.error(e);
this.isError = true;
});
})
);
this.disposables.add(
linkedDoc.slots.blockUpdated.on(payload => {
if (
payload.type === 'update' &&
['', 'caption', 'xywh'].includes(payload.props.key)
) {
return;
}
if (payload.type === 'add' && payload.init) {
return;
}
this._load().catch(e => {
console.error(e);
this.isError = true;
});
})
);
this._setDocUpdatedAt();
this.disposables.add(
this.doc.collection.meta.docMetaUpdated.on(() => {
this._setDocUpdatedAt();
})
);
if (this._referenceToNode) {
this._linkedDocMode = this.model.params?.mode ?? 'page';
} else {
const docMode = this.std.get(DocModeProvider);
this._linkedDocMode = docMode.getPrimaryMode(this.model.pageId);
this.disposables.add(
docMode.onPrimaryModeChange(mode => {
this._linkedDocMode = mode;
}, this.model.pageId)
);
}
}
this.disposables.add(
this.model.propsUpdated.on(({ key }) => {
if (key === 'style') {
this._cardStyle = this.model.style;
}
if (key === 'pageId' || key === 'style') {
this._load().catch(e => {
console.error(e);
this.isError = true;
});
}
})
);
}
getInitialState(): {
loading?: boolean;
isError?: boolean;
isNoteContentEmpty?: boolean;
isBannerEmpty?: boolean;
} {
return {};
}
override renderBlock() {
const linkedDoc = this.linkedDoc;
const isDeleted = !linkedDoc;
const isLoading = this._loading;
const isError = this.isError;
const isEmpty = this._isDocEmpty() && this.isBannerEmpty;
const inCanvas = matchFlavours(this.model.parent, ['affine:surface']);
const cardClassMap = classMap({
loading: isLoading,
error: isError,
deleted: isDeleted,
empty: isEmpty,
'banner-empty': this.isBannerEmpty,
'note-empty': this.isNoteContentEmpty,
'in-canvas': inCanvas,
[this._cardStyle]: true,
});
const theme = this.std.get(ThemeProvider).theme;
const {
LoadingIcon,
ReloadIcon,
LinkedDocDeletedBanner,
LinkedDocEmptyBanner,
SyncedDocErrorBanner,
} = getEmbedLinkedDocIcons(theme, this._linkedDocMode, this._cardStyle);
const icon = isError
? SyncedDocErrorIcon
: isLoading
? LoadingIcon
: this.icon$.value;
const title = isLoading ? 'Loading...' : this.title$;
const description = this.model.description$;
const showDefaultNoteContent = isError || isLoading || isDeleted || isEmpty;
const defaultNoteContent = isError
? 'This linked doc failed to load.'
: isLoading
? ''
: isDeleted
? 'This linked doc is deleted.'
: isEmpty
? 'Preview of the doc will be displayed here.'
: '';
const dateText =
this._cardStyle === 'cube'
? this._docUpdatedAt.toLocaleTimeString()
: this._docUpdatedAt.toLocaleString();
const showDefaultBanner = isError || isLoading || isDeleted || isEmpty;
const defaultBanner = isError
? SyncedDocErrorBanner
: isLoading
? LinkedDocEmptyBanner
: isDeleted
? LinkedDocDeletedBanner
: LinkedDocEmptyBanner;
const hasDescriptionAlias = Boolean(description.value);
return this.renderEmbed(
() => html`
<div
class="affine-embed-linked-doc-block ${cardClassMap}"
style=${styleMap({
transform: `scale(${this._scale})`,
transformOrigin: '0 0',
})}
@click=${this._handleClick}
@dblclick=${this._handleDoubleClick}
>
<div class="affine-embed-linked-doc-content">
<div class="affine-embed-linked-doc-content-title">
<div class="affine-embed-linked-doc-content-title-icon">
${icon}
</div>
<div class="affine-embed-linked-doc-content-title-text">
${title}
</div>
</div>
${when(
hasDescriptionAlias,
() =>
html`<div class="affine-embed-linked-doc-content-note alias">
${description}
</div>`,
() =>
when(
showDefaultNoteContent,
() => html`
<div class="affine-embed-linked-doc-content-note default">
${defaultNoteContent}
</div>
`,
() => html`
<div
class="affine-embed-linked-doc-content-note render"
></div>
`
)
)}
${isError
? html`
<div class="affine-embed-linked-doc-card-content-reload">
<div
class="affine-embed-linked-doc-card-content-reload-button"
@click=${this.refreshData}
>
${ReloadIcon} <span>Reload</span>
</div>
</div>
`
: html`
<div class="affine-embed-linked-doc-content-date">
<span>Updated</span>
<span>${dateText}</span>
</div>
`}
</div>
${showDefaultBanner
? html`
<div class="affine-embed-linked-doc-banner default">
${defaultBanner}
</div>
`
: nothing}
</div>
`
);
}
override updated() {
// update card style when linked doc deleted
const linkedDoc = this.linkedDoc;
const { xywh, style } = this.model;
const bound = Bound.deserialize(xywh);
if (linkedDoc && style === 'horizontalThin') {
bound.w = EMBED_CARD_WIDTH.horizontal;
bound.h = EMBED_CARD_HEIGHT.horizontal;
this.doc.withoutTransact(() => {
this.doc.updateBlock(this.model, {
xywh: bound.serialize(),
style: 'horizontal',
});
});
} else if (!linkedDoc && style === 'horizontal') {
bound.w = EMBED_CARD_WIDTH.horizontalThin;
bound.h = EMBED_CARD_HEIGHT.horizontalThin;
this.doc.withoutTransact(() => {
this.doc.updateBlock(this.model, {
xywh: bound.serialize(),
style: 'horizontalThin',
});
});
}
}
@state()
private accessor _docUpdatedAt: Date = new Date();
@state()
private accessor _linkedDocMode: DocMode = 'page';
@state()
private accessor _loading = false;
// reference to block/element
@state()
private accessor _referenceToNode = false;
@property({ attribute: false })
accessor isBannerEmpty = false;
@property({ attribute: false })
accessor isError = false;
@property({ attribute: false })
accessor isNoteContentEmpty = false;
@queryAsync('.affine-embed-linked-doc-content-note.render')
accessor noteContainer!: Promise<HTMLDivElement | null>;
}

Some files were not shown because too many files have changed in this diff Show More