Compare commits

...

372 Commits

Author SHA1 Message Date
darkskygit
7e7a4120aa feat: renew models (#6934) 2024-05-15 09:13:05 +00:00
JimmFly
a61ded3f25 fix(core): add affine.pro to trustedDomain (#6943) 2024-05-15 09:00:15 +00:00
JimmFly
f48cd0dfef fix(core): unexpected history preview style (#6944)
close TOV-865

https://github.com/toeverything/AFFiNE/assets/102217452/3ca12496-b4d9-4caf-a30b-981b52a2f42f
2024-05-15 08:48:37 +00:00
renovate
486044f0fb chore: bump up @aws-sdk/client-s3 version to v3.576.0 (#6936)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@aws-sdk/client-s3](https://togithub.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://togithub.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.575.0` -> `3.576.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.575.0/3.576.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.576.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.576.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.575.0/3.576.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.575.0/3.576.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

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

### [`v3.576.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35760-2024-05-14)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.575.0...v3.576.0)

##### Features

-   **client-s3:** Updated a few x-id in the http uri traits ([dcde25a](dcde25ac4c))

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-05-15 08:32:11 +00:00
renovate
6da566c5f6 chore: bump up nx-cloud version to v19 (#6937)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [nx-cloud](https://nx.app) | [`^18.0.0` -> `^19.0.0`](https://renovatebot.com/diffs/npm/nx-cloud/18.0.0/19.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nx-cloud/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nx-cloud/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nx-cloud/18.0.0/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nx-cloud/18.0.0/19.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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-05-15 08:21:22 +00:00
darkskygit
98e218af93 feat: allow undefined new model (#6933) 2024-05-14 13:05:07 +00:00
LongYinan
b036f1b5c9 Revert "feat: renew models (#6926)"
This reverts commit 5bf9351be4.
2024-05-14 18:46:32 +08:00
darkskygit
8881286025 chore: adjust log level (#6913) 2024-05-14 09:32:29 +00:00
darkskygit
b8333de119 fix: blob test flaky (#6929) 2024-05-14 09:20:58 +00:00
renovate
0d3180fd94 chore: bump up all non-major dependencies (#6918)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@aws-sdk/client-s3](https://togithub.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://togithub.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.574.0` -> `3.575.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.574.0/3.575.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.575.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.575.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.574.0/3.575.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.574.0/3.575.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nx/vite](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/vite)) | [`19.0.2` -> `19.0.3`](https://renovatebot.com/diffs/npm/@nx%2fvite/19.0.2/19.0.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nx%2fvite/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nx%2fvite/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nx%2fvite/19.0.2/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nx%2fvite/19.0.2/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [electron-squirrel-startup](https://togithub.com/mongodb-js/electron-squirrel-startup) | [`1.0.0` -> `1.0.1`](https://renovatebot.com/diffs/npm/electron-squirrel-startup/1.0.0/1.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/electron-squirrel-startup/1.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/electron-squirrel-startup/1.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/electron-squirrel-startup/1.0.0/1.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/electron-squirrel-startup/1.0.0/1.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

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

### [`v3.575.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35750-2024-05-13)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.574.0...v3.575.0)

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

</details>

<details>
<summary>nrwl/nx (@&#8203;nx/vite)</summary>

### [`v19.0.3`](https://togithub.com/nrwl/nx/releases/tag/19.0.3)

[Compare Source](https://togithub.com/nrwl/nx/compare/19.0.2...19.0.3)

##### 19.0.3 (2024-05-13)

##### 🚀 Features

-   **nx-dev:** show banner on documentation pages ([#&#8203;23266](https://togithub.com/nrwl/nx/pull/23266))
-   **nx-dev:** check for missing images ([#&#8203;23248](https://togithub.com/nrwl/nx/pull/23248))
-   **nx-dev:** put banner above menu ([#&#8203;23335](https://togithub.com/nrwl/nx/pull/23335))
-   **react:** Add SvgOptions for NxReactWebpackPlugin and WithNx ([#&#8203;23283](https://togithub.com/nrwl/nx/pull/23283))

##### 🩹 Fixes

-   **core:** include more binary extensions ([#&#8203;22788](https://togithub.com/nrwl/nx/pull/22788), [#&#8203;22861](https://togithub.com/nrwl/nx/pull/22861))
-   **core:** workspace remove generator should handle no root jest config ([#&#8203;23328](https://togithub.com/nrwl/nx/pull/23328))
-   **core:** addPlugin should not conflict on project.json targets ([#&#8203;23264](https://togithub.com/nrwl/nx/pull/23264))
-   **core:** throw a specific error for print-affected and affected graph ([#&#8203;23336](https://togithub.com/nrwl/nx/pull/23336))
-   **js:** Adds mjs files to prettierrcNameOptions ([#&#8203;21796](https://togithub.com/nrwl/nx/pull/21796))
-   **linter:** ensure all spreads are removed from rules before parsing ([#&#8203;23292](https://togithub.com/nrwl/nx/pull/23292))
-   **linter:** log transpilation errors of workspace rules ([#&#8203;21503](https://togithub.com/nrwl/nx/pull/21503))
-   **linter:** rename languageSettings to languageOptions for flat config migration ([#&#8203;22924](https://togithub.com/nrwl/nx/pull/22924))
-   **linter:** fix migrating projects with the eslint plugin ([#&#8203;23147](https://togithub.com/nrwl/nx/pull/23147))
-   **misc:** move e2e-ci to a separate parallel 1 command ([#&#8203;23305](https://togithub.com/nrwl/nx/pull/23305))
-   **module-federation:** Throw an error if remote is invalid ([#&#8203;23100](https://togithub.com/nrwl/nx/pull/23100))
-   **nx-cloud:** ensure generated ci workflows use dlx for nx-cloud ([#&#8203;23333](https://togithub.com/nrwl/nx/pull/23333))
-   **nx-dev:** move table of contents down ([#&#8203;23350](https://togithub.com/nrwl/nx/pull/23350))
-   **storybook:** should handle inferred cypress when generating cypress project [#&#8203;21770](https://togithub.com/nrwl/nx/issues/21770) ([#&#8203;23327](https://togithub.com/nrwl/nx/pull/23327), [#&#8203;21770](https://togithub.com/nrwl/nx/issues/21770))
-   **testing:** resolve absolute paths for ts path mappings in jest resolver ([#&#8203;23346](https://togithub.com/nrwl/nx/pull/23346))
-   **vite:** support passing --watch to inferred vitest commands ([#&#8203;23298](https://togithub.com/nrwl/nx/pull/23298))
-   **vite:** generate vitest cache dir scoped to each project root and normalize vite cache dir ([#&#8203;23330](https://togithub.com/nrwl/nx/pull/23330))

##### ❤️  Thank You

-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Denis Bendrikov
-   Dmitry Zakharov [@&#8203;pumano](https://togithub.com/pumano)
-   Isaac Mann [@&#8203;isaacplmann](https://togithub.com/isaacplmann)
-   James Henry [@&#8203;JamesHenry](https://togithub.com/JamesHenry)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Mehrad Rafigh [@&#8203;mehrad-rafigh](https://togithub.com/mehrad-rafigh)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)
-   Patrick P [@&#8203;ppfenning92](https://togithub.com/ppfenning92)

</details>

<details>
<summary>mongodb-js/electron-squirrel-startup (electron-squirrel-startup)</summary>

### [`v1.0.1`](https://togithub.com/mongodb-js/electron-squirrel-startup/compare/v1.0.0...v1.0.1)

[Compare Source](https://togithub.com/mongodb-js/electron-squirrel-startup/compare/v1.0.0...v1.0.1)

</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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-05-14 09:07:15 +00:00
darkskygit
5bf9351be4 feat: renew models (#6926) 2024-05-14 08:54:58 +00:00
JimmFly
419f1b34b3 fix(core): unexpected toast style in editor (#6924)
<img width="1327" alt="image" src="https://github.com/toeverything/AFFiNE/assets/102217452/16115440-5265-44d6-9f05-b5621436cd59">
2024-05-14 07:39:24 +00:00
JimmFly
1b91ffa6a5 chore: adjust quick search style (#6906)
close TOV-854
<img width="651" alt="image" src="https://github.com/toeverything/AFFiNE/assets/102217452/f281eb82-852c-411d-b3dd-4bf7d7ce74e8">
2024-05-14 07:28:25 +00:00
renovate
431ed770fa chore: bump up blocksuite-canary to v0.15.0-canary-202405131108-aa6f0b7 (#6921)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/block-std](https://togithub.com/toeverything/blocksuite) | [`0.15.0-canary-202405122323-6456127` -> `0.15.0-canary-202405131108-aa6f0b7`](https://renovatebot.com/diffs/npm/@blocksuite%2fblock-std/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2fblock-std/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2fblock-std/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2fblock-std/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2fblock-std/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@blocksuite/blocks](https://togithub.com/toeverything/blocksuite) | [`0.15.0-canary-202405122323-6456127` -> `0.15.0-canary-202405131108-aa6f0b7`](https://renovatebot.com/diffs/npm/@blocksuite%2fblocks/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2fblocks/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2fblocks/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2fblocks/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2fblocks/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@blocksuite/global](https://togithub.com/toeverything/blocksuite) | [`0.15.0-canary-202405122323-6456127` -> `0.15.0-canary-202405131108-aa6f0b7`](https://renovatebot.com/diffs/npm/@blocksuite%2fglobal/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2fglobal/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2fglobal/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2fglobal/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2fglobal/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@blocksuite/inline](https://togithub.com/toeverything/blocksuite) | [`0.15.0-canary-202405122323-6456127` -> `0.15.0-canary-202405131108-aa6f0b7`](https://renovatebot.com/diffs/npm/@blocksuite%2finline/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2finline/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2finline/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2finline/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2finline/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@blocksuite/presets](https://togithub.com/toeverything/blocksuite) | [`0.15.0-canary-202405122323-6456127` -> `0.15.0-canary-202405131108-aa6f0b7`](https://renovatebot.com/diffs/npm/@blocksuite%2fpresets/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2fpresets/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2fpresets/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2fpresets/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2fpresets/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@blocksuite/store](https://togithub.com/toeverything/blocksuite) | [`0.15.0-canary-202405122323-6456127` -> `0.15.0-canary-202405131108-aa6f0b7`](https://renovatebot.com/diffs/npm/@blocksuite%2fstore/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2fstore/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2fstore/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2fstore/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2fstore/0.15.0-canary-202405122323-6456127/0.15.0-canary-202405131108-aa6f0b7?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 these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-05-14 05:48:09 +00:00
pengx17
dd45c80cc4 chore: track doc create action in bs editor (#6915)
fix TOV-855

added shape element create & doc create event tracking in blocksuite editor.
What's still missing:
the control (source) that triggered whiteboard element creation, i.e., from canvas dbclick, dnd or pasting.
2024-05-14 05:35:08 +00:00
Boshen
48de982a6b chore: configure oxlint using .oxlint.json (#6916) 2024-05-14 13:34:18 +08:00
akumatus
261d413607 feat: history timeline shows relative time, such as today and yesterday (#6864)
### TL;DR
First, fixed an i18n issue in history panel. When the browser language is set to Chinese, and the AFFiNE application language is set to English, the language supposed to be English global. But now the language is a mixture of Chinese and English, which is obviously wrong.

![截屏2024-05-08 18.23.21.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/93d8218a-3b26-4b0c-9f15-71a8996556db.png)

Second, design a time formatter to convert timestamp into relative calendar date, such today and yesterday and so on. Long-ago edits will show the exact date like before.

![截屏2024-05-10 15.30.57.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/sJGviKxfE3Ap685cl5bj/dbc59e80-9504-40b1-b712-5c155cb6fa63.png)

### What changed?
- `new Intl.DateTimeFormat` with language option form  `document.documentElement.lang`
- Added `timestampToCalendarDate` function to convert timestamp into relative calendar date
- Updated unit tests
- Updated i18n copywriting

### How to test?
1. Open view history version
2. Check edit timeline
2024-05-13 11:59:48 +00:00
JimmFly
b723dd8ab8 fix(core): the loading of cmdk flashes during synchronization (#6907)
close TOV-852
2024-05-13 09:11:39 +00:00
Brooooooklyn
1cf0263def ci: use matchDepNames in renovate.json (#6905) 2024-05-13 08:04:40 +00:00
renovate
b557c6e6e5 chore: bump up blocksuite-canary to v0.15.0-canary-202405122323-6456127 (#5782)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@blocksuite/block-std](https://togithub.com/toeverything/blocksuite) | [`0.14.0-canary-202405100201-e591bb8` -> `0.15.0-canary-202405122323-6456127`](https://renovatebot.com/diffs/npm/@blocksuite%2fblock-std/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2fblock-std/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2fblock-std/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2fblock-std/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2fblock-std/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@blocksuite/blocks](https://togithub.com/toeverything/blocksuite) | [`0.14.0-canary-202405100201-e591bb8` -> `0.15.0-canary-202405122323-6456127`](https://renovatebot.com/diffs/npm/@blocksuite%2fblocks/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2fblocks/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2fblocks/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2fblocks/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2fblocks/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@blocksuite/global](https://togithub.com/toeverything/blocksuite) | [`0.14.0-canary-202405100201-e591bb8` -> `0.15.0-canary-202405122323-6456127`](https://renovatebot.com/diffs/npm/@blocksuite%2fglobal/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2fglobal/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2fglobal/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2fglobal/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2fglobal/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@blocksuite/inline](https://togithub.com/toeverything/blocksuite) | [`0.14.0-canary-202405100201-e591bb8` -> `0.15.0-canary-202405122323-6456127`](https://renovatebot.com/diffs/npm/@blocksuite%2finline/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2finline/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2finline/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2finline/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2finline/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@blocksuite/presets](https://togithub.com/toeverything/blocksuite) | [`0.14.0-canary-202405100201-e591bb8` -> `0.15.0-canary-202405122323-6456127`](https://renovatebot.com/diffs/npm/@blocksuite%2fpresets/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2fpresets/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2fpresets/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2fpresets/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2fpresets/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@blocksuite/store](https://togithub.com/toeverything/blocksuite) | [`0.14.0-canary-202405100201-e591bb8` -> `0.15.0-canary-202405122323-6456127`](https://renovatebot.com/diffs/npm/@blocksuite%2fstore/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@blocksuite%2fstore/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@blocksuite%2fstore/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@blocksuite%2fstore/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@blocksuite%2fstore/0.14.0-canary-202405100201-e591bb8/0.15.0-canary-202405122323-6456127?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>toeverything/blocksuite (@&#8203;blocksuite/block-std)</summary>

### [`v0.14.0`](https://togithub.com/toeverything/blocksuite/releases/tag/v0.14.0)

BlockSuite v0.14.0 is now released with 348 PRs landed and 5 new contributors.
It's currently used in [Affine 0.14](). This release includes a lot of new features, improvements, and bug fixes.
And it's a version centered around the AI features.

##### AI Features

> \[!IMPORTANT]
> The AI features are only available in the [Affine AI](https://affine.pro/ai) due to the dependency on the backend service.

![AI](https://affine.pro/ai/slide-write.png)

We have added a lot of AI features in this release to support the [Affine AI](https://affine.pro/ai) project.
Thanks to our team members and contributors ([@&#8203;Flrande](https://togithub.com/Flrande), [@&#8203;pengx17](https://togithub.com/pengx17), [@&#8203;fundon](https://togithub.com/fundon), [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice), [@&#8203;zzj3720](https://togithub.com/zzj3720), [@&#8203;doouding](https://togithub.com/doouding), [@&#8203;regischen](https://togithub.com/regischen)) for their hard work on this release.

-   **AI Action Infra**: The AI features are supported by a new AI action infrastructure.
-   **Ask AI Format Bar**: The format bar now has a new button to ask AI for help.
-   **AI Chat Panel**: A new AI panel is added to the right sidebar. It can generate text, images, and slides.
-   **Edgeless AI**: The edgeless elements and blocks now can be interacted with AI actions.

<details>
<summary>

##### Contribution Details

</summary>

-   chore(presets): sync ai create message interface parameters [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6741](https://togithub.com/toeverything/blocksuite/issues/6741))
-   feat: format bar ask ai [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6578](https://togithub.com/toeverything/blocksuite/issues/6578))
-   feat: add slash menu ai button [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6605](https://togithub.com/toeverything/blocksuite/issues/6605))
-   feat: copilot client [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6626](https://togithub.com/toeverything/blocksuite/issues/6626))
-   feat: add basic ai example with backend integration [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6661](https://togithub.com/toeverything/blocksuite/issues/6661))
-   feat: add iframe message template on ai chat panel [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6701](https://togithub.com/toeverything/blocksuite/issues/6701))
-   feat: chat panel [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6645](https://togithub.com/toeverything/blocksuite/issues/6645))
-   feat: add text action renderer [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6740](https://togithub.com/toeverything/blocksuite/issues/6740))
-   feat: add actions renderer [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6756](https://togithub.com/toeverything/blocksuite/issues/6756))
-   feat: add slide action [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6759](https://togithub.com/toeverything/blocksuite/issues/6759))
-   feat: add discard modal for ai panel [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6765](https://togithub.com/toeverything/blocksuite/issues/6765))
-   feat: support copy ai answer and fix ui issues [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6774](https://togithub.com/toeverything/blocksuite/issues/6774))
-   feat: add chat pause [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6836](https://togithub.com/toeverything/blocksuite/issues/6836))
-   feat: support clicking to send content to AI [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6846](https://togithub.com/toeverything/blocksuite/issues/6846))
-   feat: support display answer and error at the same time [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6856](https://togithub.com/toeverything/blocksuite/issues/6856))
-   feat: add image renderer and fix bug [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6863](https://togithub.com/toeverything/blocksuite/issues/6863))
-   feat: pressing escape to stop ai generating [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6917](https://togithub.com/toeverything/blocksuite/issues/6917))
-   feat(blocks): instantiating Copilot in RootService [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6528](https://togithub.com/toeverything/blocksuite/issues/6528))
-   feat(blocks): copilot add EditorHost parameter [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6529](https://togithub.com/toeverything/blocksuite/issues/6529))
-   feat(blocks): support real abort for copilot [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6530](https://togithub.com/toeverything/blocksuite/issues/6530))
-   feat(blocks): add ai action panel [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6567](https://togithub.com/toeverything/blocksuite/issues/6567))
-   feat(blocks): add action config for ai answer ui component [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6580](https://togithub.com/toeverything/blocksuite/issues/6580))
-   feat(blocks): support custom placeholder for paragraph [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6787](https://togithub.com/toeverything/blocksuite/issues/6787))
-   feat(blocks): add esc tip when iframe is fullscreen [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6968](https://togithub.com/toeverything/blocksuite/issues/6968))
-   feat(edgeless): copilot selection widget [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6497](https://togithub.com/toeverything/blocksuite/issues/6497))
-   feat(edgeless): add mindmap support [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6508](https://togithub.com/toeverything/blocksuite/issues/6508))

</details>

##### Infra Improvements

-   Rewrite the view store to support the new block collection and selector. ([#&#8203;6521](https://togithub.com/toeverything/blocksuite/issues/6521), [#&#8203;6672](https://togithub.com/toeverything/blocksuite/issues/6672), [#&#8203;6534](https://togithub.com/toeverything/blocksuite/issues/6534), [#&#8203;6737](https://togithub.com/toeverything/blocksuite/issues/6737), [#&#8203;6780](https://togithub.com/toeverything/blocksuite/issues/6780))
    In previous versions, the view store is responsible for managing the views of the blocks.
    It was designed to control different views of the same block, such as the editor view and the preview view.
    However, we found that it's a anti-pattern to render different views of the same block in the same block tree.
    Which makes it hard to track the view by the block model.
    In this release, we introduce the block collection and selector to make it easier to render different views of the same block.

-   Introduced the draft model for the transformer. ([#&#8203;6630](https://togithub.com/toeverything/blocksuite/issues/6630))
    The draft model is a new model that can be used to transform the block model to a new model.
    It's useful when you want to transform the block model to a new model without changing the original block model.

-   Bson for clipboard. ([#&#8203;6526](https://togithub.com/toeverything/blocksuite/issues/6526), [#&#8203;6562](https://togithub.com/toeverything/blocksuite/issues/6562))
    We use bson for the clipboard mime to optimize the clipboard data serialization and deserialization.

-   Add spec builder. ([#&#8203;6976](https://togithub.com/toeverything/blocksuite/issues/6976))
    The spec builder is a new tool to manage the block specs.

-   Switch to es2022 targets. ([#&#8203;6527](https://togithub.com/toeverything/blocksuite/issues/6527))
    We have switched to the es2022 targets to support the latest JavaScript features.

-   refactor(store): support streaming `editor.doc` from empty state [@&#8203;doodlewind](https://togithub.com/doodlewind) ([#&#8203;6522](https://togithub.com/toeverything/blocksuite/issues/6522))

-   refactor(examples): sync collection lifecycle with provider [@&#8203;doodlewind](https://togithub.com/doodlewind) ([#&#8203;6683](https://togithub.com/toeverything/blocksuite/issues/6683))

##### Embed Doc Polishing

In this release, we have polished the embed doc feature to make it more user-friendly.

-   Move embed reload button. ([#&#8203;6502](https://togithub.com/toeverything/blocksuite/issues/6502))
-   Polish the styles. ([#&#8203;6523](https://togithub.com/toeverything/blocksuite/issues/6523), [#&#8203;6536](https://togithub.com/toeverything/blocksuite/issues/6536))
-   Make embed card toolbar a widget. ([#&#8203;6635](https://togithub.com/toeverything/blocksuite/issues/6635))
-   Fix the issue that creating linked doc from block selection will loss data. ([#&#8203;6510](https://togithub.com/toeverything/blocksuite/issues/6510))
-   Fix the issue that users can't jump into doc inside embed synced doc. ([#&#8203;6531](https://togithub.com/toeverything/blocksuite/issues/6531))

##### Database Enhancements

In this release, the Database has seen a series of enhancements aimed at increasing the fluidity of the editing experience, with improvements to keyboard shortcuts and cursor behavior:

1.  Supports using the Tab key to move the cursor to the next field ([#&#8203;6565](https://togithub.com/toeverything/blocksuite/issues/6565))
2.  Supports selecting additional rows using arrow keys ([#&#8203;6941](https://togithub.com/toeverything/blocksuite/issues/6941))
3.  Clicking on “New Record” now focuses on the title cell of the new row ([#&#8203;6561](https://togithub.com/toeverything/blocksuite/issues/6561))
4.  Supports filling a column with the same content via drag-and-drop ([#&#8203;6895](https://togithub.com/toeverything/blocksuite/issues/6895))

Additionally, enhancements to the title column now allow it to link to another page ([#&#8203;6572](https://togithub.com/toeverything/blocksuite/issues/6572)).
When you drag Kanban cards to the edge, the Kanban will now automatically scroll ([#&#8203;6614](https://togithub.com/toeverything/blocksuite/issues/6614)).
The Database will display as many views as possible instead of just three ([#&#8203;6642](https://togithub.com/toeverything/blocksuite/issues/6642)), and the same goes for filters ([#&#8203;6739](https://togithub.com/toeverything/blocksuite/issues/6739)).

There are also some experimental features that can be enabled through feature flags:

1.  Table now includes a statistics feature ([#&#8203;6560](https://togithub.com/toeverything/blocksuite/issues/6560))
2.  The Database now supports using Todo blocks from all pages as a data source ([#&#8203;6785](https://togithub.com/toeverything/blocksuite/issues/6785))

##### Documentation Improvements

We've added some new examples thanks to [@&#8203;doodlewind](https://togithub.com/doodlewind), [@&#8203;L-Sun](https://togithub.com/L-Sun).

-   Add vanilla-indexeddb example. ([#&#8203;6525](https://togithub.com/toeverything/blocksuite/issues/6525))
-   Add react-indexeddb example. ([#&#8203;6689](https://togithub.com/toeverything/blocksuite/issues/6689))
-   Add react-websocket example. ([#&#8203;6624](https://togithub.com/toeverything/blocksuite/issues/6624))

##### Community Features

-   **Lasso Tool**: A new lasso tool is added to the edgeless whiteboard thanks to [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6602](https://togithub.com/toeverything/blocksuite/issues/6602), [#&#8203;6716](https://togithub.com/toeverything/blocksuite/issues/6716), [#&#8203;6874](https://togithub.com/toeverything/blocksuite/issues/6874))
-   **Pie Menu**: A new pie menu is added to the edgeless whiteboard thanks to [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6493](https://togithub.com/toeverything/blocksuite/issues/6493), [#&#8203;6571](https://togithub.com/toeverything/blocksuite/issues/6571), [#&#8203;6632](https://togithub.com/toeverything/blocksuite/issues/6632), [#&#8203;6553](https://togithub.com/toeverything/blocksuite/issues/6553))

<details>
<summary>

##### Detailed Bug Fixes and Improvements

</summary>

-   chore: remove unused code [@&#8203;c0sc0s](https://togithub.com/c0sc0s) ([#&#8203;6807](https://togithub.com/toeverything/blocksuite/issues/6807))
-   docs: commanddata -> commandcontext [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6938](https://togithub.com/toeverything/blocksuite/issues/6938))
-   feat: remove card view box shadow when doc mode [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6532](https://togithub.com/toeverything/blocksuite/issues/6532))
-   feat: create zod union [@&#8203;F4lkr4m](https://togithub.com/F4lkr4m) ([#&#8203;6855](https://togithub.com/toeverything/blocksuite/issues/6855))
-   feat: create zod union [@&#8203;F4lkr4m](https://togithub.com/F4lkr4m) ([#&#8203;6855](https://togithub.com/toeverything/blocksuite/issues/6855))
-   feat(edgeless): shift key to constrain to axis [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6543](https://togithub.com/toeverything/blocksuite/issues/6543))
-   feat(edgeless): shift + arrow keys to move elements with 10px inc [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6544](https://togithub.com/toeverything/blocksuite/issues/6544))
-   feat(edgeless): connector keep only one shortcut key L [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6573](https://togithub.com/toeverything/blocksuite/issues/6573))
-   feat(edgeless): paste SVG in text/plain mime [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6540](https://togithub.com/toeverything/blocksuite/issues/6540))
-   feat(edgeless): shift + s to toggle between shapes [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6634](https://togithub.com/toeverything/blocksuite/issues/6634))
-   feat(edgeless): note block supports auto complete panel [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6591](https://togithub.com/toeverything/blocksuite/issues/6591))
-   feat(edgeless): font family panel refactoring [@&#8203;RubaXa](https://togithub.com/RubaXa) ([#&#8203;6692](https://togithub.com/toeverything/blocksuite/issues/6692))
-   feat(edgeless): remove the kerning information stored in a font [@&#8203;RubaXa](https://togithub.com/RubaXa) ([#&#8203;6978](https://togithub.com/toeverything/blocksuite/issues/6978))
-   feat(page): html adapter YouTube import [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6705](https://togithub.com/toeverything/blocksuite/issues/6705))
-   fix: publish script [@&#8203;doodlewind](https://togithub.com/doodlewind) ([#&#8203;6524](https://togithub.com/toeverything/blocksuite/issues/6524))
-   fix: deletion behavior in DocsPanel component [@&#8203;congzhou09](https://togithub.com/congzhou09) ([#&#8203;6511](https://togithub.com/toeverything/blocksuite/issues/6511))
-   fix: clean up documentation content [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6558](https://togithub.com/toeverything/blocksuite/issues/6558))
-   fix: arrow up and down works incorrectly [@&#8203;Saul-Mirone](https://togithub.com/Saul-Mirone) ([#&#8203;6593](https://togithub.com/toeverything/blocksuite/issues/6593))
-   fix: placeholder visibility and cursor style in readonly mode [@&#8203;L-Sun](https://togithub.com/L-Sun) ([#&#8203;6686](https://togithub.com/toeverything/blocksuite/issues/6686))
-   fix: frame selection conflicts with note selection [@&#8203;Saul-Mirone](https://togithub.com/Saul-Mirone) ([#&#8203;6802](https://togithub.com/toeverything/blocksuite/issues/6802))
-   fix: bash escape by \` in PR title linting [@&#8203;lawvs](https://togithub.com/lawvs) ([#&#8203;6839](https://togithub.com/toeverything/blocksuite/issues/6839))
-   fix: memory leak [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6977](https://togithub.com/toeverything/blocksuite/issues/6977))
-   fix: should not inherit last text element hasMaxWidth prop [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6990](https://togithub.com/toeverything/blocksuite/issues/6990))
-   fix(blocks): pdf preview [@&#8203;zkwolf](https://togithub.com/zkwolf) ([#&#8203;6659](https://togithub.com/toeverything/blocksuite/issues/6659))
-   fix: catch error in ydoc transaction and doc getter [@&#8203;Saul-Mirone](https://togithub.com/Saul-Mirone) ([#&#8203;6989](https://togithub.com/toeverything/blocksuite/issues/6989))
-   fix(blocks): ignore formart-bar-widget\&block-selection tags when exporting png/pdf [@&#8203;Tzyito](https://togithub.com/Tzyito) ([#&#8203;6711](https://togithub.com/toeverything/blocksuite/issues/6711))
-   fix(blocks): the IME sometimes break because of placeholder [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6734](https://togithub.com/toeverything/blocksuite/issues/6734))
-   fix(blocks): do not log error when parse url hostname [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6779](https://togithub.com/toeverything/blocksuite/issues/6779))
-   fix(blocks): page movement due to scrolling into view [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6776](https://togithub.com/toeverything/blocksuite/issues/6776))
-   fix(blocks): update list number prefix when updating a block [@&#8203;lawvs](https://togithub.com/lawvs) ([#&#8203;6790](https://togithub.com/toeverything/blocksuite/issues/6790))
-   fix(blocks): switch the file-type to [@&#8203;sgtpooki/file-type](https://togithub.com/sgtpooki/file-type) [@&#8203;lawvs](https://togithub.com/lawvs) ([#&#8203;6803](https://togithub.com/toeverything/blocksuite/issues/6803))
-   fix(blocks): should not delete children when transform block type [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6840](https://togithub.com/toeverything/blocksuite/issues/6840))
-   fix(blocks): edge case for toggle link [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6841](https://togithub.com/toeverything/blocksuite/issues/6841))
-   fix(blocks): should not go proxy when it is an onsite image [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6859](https://togithub.com/toeverything/blocksuite/issues/6859))
-   fix(blocks): github icon dark mode [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6864](https://togithub.com/toeverything/blocksuite/issues/6864))
-   fix(blocks): optimize height and position of panels [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6866](https://togithub.com/toeverything/blocksuite/issues/6866))
-   fix(blocks): linked doc horizontal card quote block [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6865](https://togithub.com/toeverything/blocksuite/issues/6865))
-   fix(blocks): video attachments can not be embed [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6869](https://togithub.com/toeverything/blocksuite/issues/6869))
-   fix(blocks): try fix surface ref note portal stuck [@&#8203;EYHN](https://togithub.com/EYHN) ([#&#8203;6867](https://togithub.com/toeverything/blocksuite/issues/6867))
-   fix(blocks): linked doc style without note block or image block [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6876](https://togithub.com/toeverything/blocksuite/issues/6876))
-   fix(blocks): should reset scroll top while retrying [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6882](https://togithub.com/toeverything/blocksuite/issues/6882))
-   fix(blocks): github block title text color [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6887](https://togithub.com/toeverything/blocksuite/issues/6887))
-   fix(blocks): line break in reference node [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6894](https://togithub.com/toeverything/blocksuite/issues/6894))
-   fix(blocks): do not display name in remote cursor when no user info [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6898](https://togithub.com/toeverything/blocksuite/issues/6898))
-   fix(blocks): missing elements when frames are selected [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6915](https://togithub.com/toeverything/blocksuite/issues/6915))
-   fix(blocks): allow users to enter prompt words when content is missing [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6930](https://togithub.com/toeverything/blocksuite/issues/6930))
-   fix(blocks): last pos should be updated in not wheeling [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6939](https://togithub.com/toeverything/blocksuite/issues/6939))
-   fix(blocks): zoom bar toggle button should be displayed when the width of viewport is equal to 1200 [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6954](https://togithub.com/toeverything/blocksuite/issues/6954))
-   fix(blocks): reference node not update as expected [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6958](https://togithub.com/toeverything/blocksuite/issues/6958))
-   fix(blocks): use passive listeners to improve wheel event [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6960](https://togithub.com/toeverything/blocksuite/issues/6960))
-   fix(blocks): support config the vertical scroll container of rich-text [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6965](https://togithub.com/toeverything/blocksuite/issues/6965))
-   fix(blocks): block portal should be `display: block` in firefox [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6909](https://togithub.com/toeverything/blocksuite/issues/6909))
-   fix(database): slow first rendering of the Database Block [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6563](https://togithub.com/toeverything/blocksuite/issues/6563))
-   fix(database): group as Database cannot keep inbound link [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6564](https://togithub.com/toeverything/blocksuite/issues/6564))
-   fix(database): incorrect insertion and focus position [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6569](https://togithub.com/toeverything/blocksuite/issues/6569))
-   fix(database): select all text in the rich-text cell by press Ctrl+A or Cmd+A [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6570](https://togithub.com/toeverything/blocksuite/issues/6570))
-   fix(database): delete the corresponding cell data while removing row data [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6589](https://togithub.com/toeverything/blocksuite/issues/6589))
-   fix(database): cannot move Kanban card when text-field was selected last [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6590](https://togithub.com/toeverything/blocksuite/issues/6590))
-   fix(database): incorrect position of detail panel [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6588](https://togithub.com/toeverything/blocksuite/issues/6588))
-   fix(database): cannot open detail panel [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6596](https://togithub.com/toeverything/blocksuite/issues/6596))
-   fix(database): the first render should not have an empty YText [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6617](https://togithub.com/toeverything/blocksuite/issues/6617))
-   fix(database): soft enter removes next character [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6691](https://togithub.com/toeverything/blocksuite/issues/6691))
-   fix(database): can't scroll in database side details [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6851](https://togithub.com/toeverything/blocksuite/issues/6851))
-   fix(database): can't undo in number cell [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6912](https://togithub.com/toeverything/blocksuite/issues/6912))
-   fix(database): rich-text cell level copy and paste [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6918](https://togithub.com/toeverything/blocksuite/issues/6918))
-   fix(database): cant move to next kanban card if next group is empty [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6910](https://togithub.com/toeverything/blocksuite/issues/6910))
-   fix(database): drag to fill value conflict [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6920](https://togithub.com/toeverything/blocksuite/issues/6920))
-   fix(database): edge-cases for drag to fill [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6942](https://togithub.com/toeverything/blocksuite/issues/6942))
-   fix(edgeless): horizontal pan with mouse under the windows system [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6507](https://togithub.com/toeverything/blocksuite/issues/6507))
-   fix(edgeless): should not be dragged in editing [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6519](https://togithub.com/toeverything/blocksuite/issues/6519))
-   fix(edgeless): copyAsPng on shape with rotation has cutoff edges [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6537](https://togithub.com/toeverything/blocksuite/issues/6537))
-   fix(edgeless): connector missing c and x shortcuts [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6547](https://togithub.com/toeverything/blocksuite/issues/6547))
-   fix(edgeless): copyAsPng failed to copy on image blocks [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6538](https://togithub.com/toeverything/blocksuite/issues/6538))
-   fix(edgeless): auto complete panel position [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6579](https://togithub.com/toeverything/blocksuite/issues/6579))
-   fix(edgeless): connector default color [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6574](https://togithub.com/toeverything/blocksuite/issues/6574))
-   fix(edgeless): auto complete panel position when zooming in and out [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6595](https://togithub.com/toeverything/blocksuite/issues/6595))
-   fix(edgeless): connector indicator style [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6576](https://togithub.com/toeverything/blocksuite/issues/6576))
-   fix(edgeless): code not updated [#&#8203;6622](https://togithub.com/toeverything/blocksuite/issues/6622) [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6633](https://togithub.com/toeverything/blocksuite/issues/6633))
-   fix(edgeless): empty element like group or brush should have correct deserializedXYWH [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6644](https://togithub.com/toeverything/blocksuite/issues/6644))
-   fix(edgeless): click on the whiteboard throw error when the format-bar is active [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6662](https://togithub.com/toeverything/blocksuite/issues/6662))
-   fix(edgeless): stash/pop of surface element [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6648](https://togithub.com/toeverything/blocksuite/issues/6648))
-   fix(edgeless): viewport should not scroll when scrolling in format-bar [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6649](https://togithub.com/toeverything/blocksuite/issues/6649))
-   fix(edgeless): selection when all elements are connectors [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6652](https://togithub.com/toeverything/blocksuite/issues/6652))
-   fix(edgeless): remove redundant variables [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6673](https://togithub.com/toeverything/blocksuite/issues/6673))
-   fix(edgeless): use relative points [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6681](https://togithub.com/toeverything/blocksuite/issues/6681))
-   fix(edgeless): update path in local connector [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6684](https://togithub.com/toeverything/blocksuite/issues/6684))
-   fix(edgeless): connector modes display order issue [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6688](https://togithub.com/toeverything/blocksuite/issues/6688))
-   fix(edgeless): should not switch shapes in editing [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6690](https://togithub.com/toeverything/blocksuite/issues/6690))
-   fix(edgeless): exclude canvas editor when sync range and selection [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6685](https://togithub.com/toeverything/blocksuite/issues/6685))
-   fix(edgeless): element-handle should consider rotation [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6717](https://togithub.com/toeverything/blocksuite/issues/6717))
-   fix(edgeless): curve path bounding box [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6694](https://togithub.com/toeverything/blocksuite/issues/6694))
-   fix(edgeless): refine mindmap [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6736](https://togithub.com/toeverything/blocksuite/issues/6736))
-   fix(edgeless): selection issue with copilot tool [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6791](https://togithub.com/toeverything/blocksuite/issues/6791))
-   fix(edgeless): edgeless issues [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6781](https://togithub.com/toeverything/blocksuite/issues/6781))
-   fix(edgeless): paste as note block if all other cases fails [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6827](https://togithub.com/toeverything/blocksuite/issues/6827))
-   fix(edgeless): optimize ai panel user experience [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6810](https://togithub.com/toeverything/blocksuite/issues/6810))
-   fix(edgeless): mindmap refine [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6824](https://togithub.com/toeverything/blocksuite/issues/6824))
-   fix(edgeless): add a paragraph block when clicking on empty space on the note block [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6870](https://togithub.com/toeverything/blocksuite/issues/6870))
-   fix(edgeless): surface-ref rendering [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6890](https://togithub.com/toeverything/blocksuite/issues/6890))
-   fix(edgeless): hide the template in expand/regenerate mind map [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6888](https://togithub.com/toeverything/blocksuite/issues/6888))
-   fix(edgeless): refine mindmap [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6879](https://togithub.com/toeverything/blocksuite/issues/6879))
-   fix(edgeless): edgeless-index-label has empty reference [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6893](https://togithub.com/toeverything/blocksuite/issues/6893))
-   fix(edgeless): prevent mindmap node from adding to other group [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6899](https://togithub.com/toeverything/blocksuite/issues/6899))
-   fix(edgeless): support for moving elements by scroll wheel [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6789](https://togithub.com/toeverything/blocksuite/issues/6789))
-   fix(edgeless): caret does not display when text is empty [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6953](https://togithub.com/toeverything/blocksuite/issues/6953))
-   fix(edgeless): shape text cannot be edited [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6957](https://togithub.com/toeverything/blocksuite/issues/6957))
-   fix(edgeless): ai panel text layout [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6964](https://togithub.com/toeverything/blocksuite/issues/6964))
-   fix(edgeless): improve element toolbar bottom position [@&#8203;L-Sun](https://togithub.com/L-Sun) ([#&#8203;6969](https://togithub.com/toeverything/blocksuite/issues/6969))
-   fix(edgeless): focus on mindmap after generate [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6972](https://togithub.com/toeverything/blocksuite/issues/6972))
-   fix(edgeless): incorrect cursor style of selected rect [@&#8203;L-Sun](https://togithub.com/L-Sun) ([#&#8203;6983](https://togithub.com/toeverything/blocksuite/issues/6983))
-   fix(edgeless): text element issue [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6991](https://togithub.com/toeverything/blocksuite/issues/6991))
-   fix(edgeless): imporve ai pannel position in edgeless [@&#8203;L-Sun](https://togithub.com/L-Sun) ([#&#8203;6993](https://togithub.com/toeverything/blocksuite/issues/6993))
-   fix(examples): angular compat and list reactivity [@&#8203;doodlewind](https://togithub.com/doodlewind) ([#&#8203;6516](https://togithub.com/toeverything/blocksuite/issues/6516))
-   fix(inline): select line when triple click [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6698](https://togithub.com/toeverything/blocksuite/issues/6698))
-   fix(inline): delete backward not works in the start of line in firefox [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6758](https://togithub.com/toeverything/blocksuite/issues/6758))
-   fix(page): non-spread markdown list export [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6556](https://togithub.com/toeverything/blocksuite/issues/6556))
-   fix(page): should not remove empty line when canceling insertion [@&#8203;lawvs](https://togithub.com/lawvs) ([#&#8203;6584](https://togithub.com/toeverything/blocksuite/issues/6584))
-   fix(page): treat data url as fetchable [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6600](https://togithub.com/toeverything/blocksuite/issues/6600))
-   fix(page): add missing assets back [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6641](https://togithub.com/toeverything/blocksuite/issues/6641))
-   fix(page): the imported markdown file name is displayed by default [@&#8203;Tzyito](https://togithub.com/Tzyito) ([#&#8203;6702](https://togithub.com/toeverything/blocksuite/issues/6702))
-   fix(page): process mime types in adapters [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6732](https://togithub.com/toeverything/blocksuite/issues/6732))
-   fix(page): support notion plain table import [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6743](https://togithub.com/toeverything/blocksuite/issues/6743))
-   fix(page): import markdown file title [@&#8203;zkwolf](https://togithub.com/zkwolf) ([#&#8203;6778](https://togithub.com/toeverything/blocksuite/issues/6778))
-   fix(page): add caption when exporting [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6845](https://togithub.com/toeverything/blocksuite/issues/6845))
-   fix(page): hide placeholder when printing [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6925](https://togithub.com/toeverything/blocksuite/issues/6925))
-   fix(playground): fallback to broadcast channel when failed to connect websocket [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6618](https://togithub.com/toeverything/blocksuite/issues/6618))
-   fix(playground): playground debug menu icon in dev mode [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6742](https://togithub.com/toeverything/blocksuite/issues/6742))
-   fix(playground): generate random doc id for the starter entry [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6955](https://togithub.com/toeverything/blocksuite/issues/6955))
-   fix(presets): fragment import suffix [@&#8203;doodlewind](https://togithub.com/doodlewind) ([#&#8203;6517](https://togithub.com/toeverything/blocksuite/issues/6517))
-   fix(presets): ask ai in slash menu [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6687](https://togithub.com/toeverything/blocksuite/issues/6687))
-   fix(presets): should send markdown to remote api [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6699](https://togithub.com/toeverything/blocksuite/issues/6699))
-   fix(presets): ai message should be encoded [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6707](https://togithub.com/toeverything/blocksuite/issues/6707))
-   fix(presets): expose global namespace BlockSuitePresets [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6715](https://togithub.com/toeverything/blocksuite/issues/6715))
-   fix(presets): ai panel response style [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6718](https://togithub.com/toeverything/blocksuite/issues/6718))
-   fix(presets): fix code error action [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6722](https://togithub.com/toeverything/blocksuite/issues/6722))
-   fix(presets): support code block in ai text renderer [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6723](https://togithub.com/toeverything/blocksuite/issues/6723))
-   fix(presets): should stop propagation pointerdown events [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6725](https://togithub.com/toeverything/blocksuite/issues/6725))
-   fix(presets): continue in chat action [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6726](https://togithub.com/toeverything/blocksuite/issues/6726))
-   fix(presets): ai response insert and replace [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6744](https://togithub.com/toeverything/blocksuite/issues/6744))
-   fix(presets): should extract image when content does not exist [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6760](https://togithub.com/toeverything/blocksuite/issues/6760))
-   fix(presets): requestContinueInChat issue [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6768](https://togithub.com/toeverything/blocksuite/issues/6768))
-   fix(presets): text stream error handling [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6795](https://togithub.com/toeverything/blocksuite/issues/6795))
-   fix(presets): incorrect error message handling [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6798](https://togithub.com/toeverything/blocksuite/issues/6798))
-   fix(presets): filter out image blocks [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6815](https://togithub.com/toeverything/blocksuite/issues/6815))
-   fix(presets): stable get photo url [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6814](https://togithub.com/toeverything/blocksuite/issues/6814))
-   fix(presets): auto scroll answer text to bottom when generating [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6817](https://togithub.com/toeverything/blocksuite/issues/6817))
-   fix(presets): insert and replace [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6819](https://togithub.com/toeverything/blocksuite/issues/6819))
-   fix(presets): should not show discard modal when showing error panel [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6820](https://togithub.com/toeverything/blocksuite/issues/6820))
-   fix(presets): add edgeless ai panel entry [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6821](https://togithub.com/toeverything/blocksuite/issues/6821))
-   fix(presets): should not update ai panel when generation is aborted [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6822](https://togithub.com/toeverything/blocksuite/issues/6822))
-   fix(presets): should preprocess html [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6823](https://togithub.com/toeverything/blocksuite/issues/6823))
-   fix(presets): add login error handle in chat [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6828](https://togithub.com/toeverything/blocksuite/issues/6828))
-   fix(presets): should not send attachments when multiple blocks selected [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6831](https://togithub.com/toeverything/blocksuite/issues/6831))
-   fix(presets): edgeless ai panel response actions [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6835](https://togithub.com/toeverything/blocksuite/issues/6835))
-   fix(presets): fix send attachments logic [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6838](https://togithub.com/toeverything/blocksuite/issues/6838))
-   fix(presets): filter out non text content in text preview [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6843](https://togithub.com/toeverything/blocksuite/issues/6843))
-   fix(presets): update error message [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6837](https://togithub.com/toeverything/blocksuite/issues/6837))
-   fix(presets): optimize ai images [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6847](https://togithub.com/toeverything/blocksuite/issues/6847))
-   fix(presets): review action list items [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6848](https://togithub.com/toeverything/blocksuite/issues/6848))
-   fix(presets): review action list [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6873](https://togithub.com/toeverything/blocksuite/issues/6873))
-   fix(presets): ai text preview without widgets [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6878](https://togithub.com/toeverything/blocksuite/issues/6878))
-   fix(presets): ai action panel icons [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6880](https://togithub.com/toeverything/blocksuite/issues/6880))
-   fix(presets): add canvas export options for generating image [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6881](https://togithub.com/toeverything/blocksuite/issues/6881))
-   fix(presets): move find actions to the last of generate group [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6886](https://togithub.com/toeverything/blocksuite/issues/6886))
-   fix(presets): bring explain this code action back [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6889](https://togithub.com/toeverything/blocksuite/issues/6889))
-   fix(presets): create popper only if more button exists [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6891](https://togithub.com/toeverything/blocksuite/issues/6891))
-   fix(presets): ai star icon size [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6904](https://togithub.com/toeverything/blocksuite/issues/6904))
-   fix(presets): ai panel bottom padding [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6902](https://togithub.com/toeverything/blocksuite/issues/6902))
-   fix(presets): mindmap expand [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6921](https://togithub.com/toeverything/blocksuite/issues/6921))
-   fix(presets): explain image action missing picture [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6919](https://togithub.com/toeverything/blocksuite/issues/6919))
-   fix(presets): optimize make it real action [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6906](https://togithub.com/toeverything/blocksuite/issues/6906))
-   fix(presets): add new note in right position and change icon [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6923](https://togithub.com/toeverything/blocksuite/issues/6923))
-   fix(presets): add user change logic for chat panel [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6932](https://togithub.com/toeverything/blocksuite/issues/6932))
-   fix(presets): update ai action icons [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6933](https://togithub.com/toeverything/blocksuite/issues/6933))
-   fix(presets): ai text renderer default style [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6931](https://togithub.com/toeverything/blocksuite/issues/6931))
-   fix(presets): update slides template [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6935](https://togithub.com/toeverything/blocksuite/issues/6935))
-   fix(presets): trim content directly within function [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6940](https://togithub.com/toeverything/blocksuite/issues/6940))
-   fix(presets): fix insert below in chat [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6952](https://togithub.com/toeverything/blocksuite/issues/6952))
-   fix(presets): chat ui issue [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6959](https://togithub.com/toeverything/blocksuite/issues/6959))
-   fix(presets): insert slide bug [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6961](https://togithub.com/toeverything/blocksuite/issues/6961))
-   fix(presets): optimize insertion position, left alignment [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6951](https://togithub.com/toeverything/blocksuite/issues/6951))
-   fix(presets): refine ai tracking properties [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6966](https://togithub.com/toeverything/blocksuite/issues/6966))
-   fix(presets): update error message [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6967](https://togithub.com/toeverything/blocksuite/issues/6967))
-   fix(presets): limit ai text rendering [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6971](https://togithub.com/toeverything/blocksuite/issues/6971))
-   fix(presets): text renderer scroll behavior [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6973](https://togithub.com/toeverything/blocksuite/issues/6973))
-   fix(presets): chat input support image paste [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6979](https://togithub.com/toeverything/blocksuite/issues/6979))
-   fix(presets): add make it real to doc note [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6980](https://togithub.com/toeverything/blocksuite/issues/6980))
-   fix(presets): add unauthorized event to ai provider [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6987](https://togithub.com/toeverything/blocksuite/issues/6987))
-   fix(presets): improve make it real action [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6988](https://togithub.com/toeverything/blocksuite/issues/6988))
-   fix(std): outline in editor host [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6905](https://togithub.com/toeverything/blocksuite/issues/6905))
-   fix(store): fix export snapshot error [@&#8203;EYHN](https://togithub.com/EYHN) ([#&#8203;6877](https://togithub.com/toeverything/blocksuite/issues/6877))
-   refactor: optimizing element check [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6653](https://togithub.com/toeverything/blocksuite/issues/6653))
-   refactor(database): remove duplicate event listener [@&#8203;golok727](https://togithub.com/golok727) ([#&#8203;6913](https://togithub.com/toeverything/blocksuite/issues/6913))
-   refactor(edgeless): remove redundant code [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6518](https://togithub.com/toeverything/blocksuite/issues/6518))
-   refactor(edgeless): remove duplicate return [@&#8203;shvixxl](https://togithub.com/shvixxl) ([#&#8203;6945](https://togithub.com/toeverything/blocksuite/issues/6945))
-   refactor(store): support more node props in base adapter [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6926](https://togithub.com/toeverything/blocksuite/issues/6926))
-   revert: build: manual split chunks [#&#8203;6654](https://togithub.com/toeverything/blocksuite/issues/6654) [@&#8203;fourdim](https://togithub.com/fourdim) ([#&#8203;6657](https://togithub.com/toeverything/blocksuite/issues/6657))
-   feat(edgeless): edgeless copilot panel [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6620](https://togithub.com/toeverything/blocksuite/issues/6620))
-   feat(edgeless): mindmap gen [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6675](https://togithub.com/toeverything/blocksuite/issues/6675))
-   feat(edgeless): edgeless copilot actions [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6714](https://togithub.com/toeverything/blocksuite/issues/6714))
-   feat(edgeless): edgeless copilot toolbar entry [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6763](https://togithub.com/toeverything/blocksuite/issues/6763))
-   feat(edgeless): expand mindmap action [@&#8203;doouding](https://togithub.com/doouding) ([#&#8203;6852](https://togithub.com/toeverything/blocksuite/issues/6852))
-   feat(playground): add chat panel to playground [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6735](https://togithub.com/toeverything/blocksuite/issues/6735))
-   feat(presets): new chat panel fragment [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6514](https://togithub.com/toeverything/blocksuite/issues/6514))
-   feat(presets): ai actions in format bar [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6679](https://togithub.com/toeverything/blocksuite/issues/6679))
-   feat(presets): support render ai answer text as rich text [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6682](https://togithub.com/toeverything/blocksuite/issues/6682))
-   feat(presets): copilot uses documentation as background knowledge [@&#8203;zzj3720](https://togithub.com/zzj3720) ([#&#8203;6719](https://togithub.com/toeverything/blocksuite/issues/6719))
-   feat(presets): ai create message [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6724](https://togithub.com/toeverything/blocksuite/issues/6724))
-   feat(presets): support image to text [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6727](https://togithub.com/toeverything/blocksuite/issues/6727))
-   feat(presets): add more doc mode actions [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6733](https://togithub.com/toeverything/blocksuite/issues/6733))
-   feat(presets): ai images [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6728](https://togithub.com/toeverything/blocksuite/issues/6728))
-   feat(presets): ai create an image [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6746](https://togithub.com/toeverything/blocksuite/issues/6746))
-   feat(presets): error handling [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6775](https://togithub.com/toeverything/blocksuite/issues/6775))
-   feat(presets): add UnauthorizedError handling [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6809](https://togithub.com/toeverything/blocksuite/issues/6809))
-   feat(presets): add chat copy and more button [@&#8203;regischen](https://togithub.com/regischen) ([#&#8203;6825](https://togithub.com/toeverything/blocksuite/issues/6825))
-   feat(presets): add generating placeholder for some ai actions [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6842](https://togithub.com/toeverything/blocksuite/issues/6842))
-   feat(presets): create an image from user input [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6849](https://togithub.com/toeverything/blocksuite/issues/6849))
-   feat(presets): add actions slots [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6860](https://togithub.com/toeverything/blocksuite/issues/6860))
-   feat(presets): add seed to image generation [@&#8203;fundon](https://togithub.com/fundon) ([#&#8203;6900](https://togithub.com/toeverything/blocksuite/issues/6900))
-   feat(presets): add edgeless actions to doc mode [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6903](https://togithub.com/toeverything/blocksuite/issues/6903))
-   feat(presets): add beta flags for some actions [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6929](https://togithub.com/toeverything/blocksuite/issues/6929))
-   feat(presets): add more tracked actions to ai [@&#8203;pengx17](https://togithub.com/pengx17) ([#&#8203;6948](https://togithub.com/toeverything/blocksuite/issues/6948))
-   fix: move slash menu ai entry to presets [@&#8203;donteatfriedrice](https://togithub.com/donteatfriedrice) ([#&#8203;6677](https://togithub.com/toeverything/blocksuite/issues/6677))
-   fix: should not trigger ai panel when composing [@&#8203;Flrande](https://togithub.com/Flrande) ([#&#8203;6721](https://togithub.com/toeverything/blocksuite/

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-05-13 07:32:56 +00:00
JimmFly
df6d0a2750 fix(core): navigation shortcut keys can't be used when the sidebar is collapsed (#6903)
close #6877
2024-05-13 07:15:40 +00:00
JimmFly
644bd8c817 fix(core): page does not fully stretch the entire screen (#6902)
close AFF-1054

https://github.com/toeverything/AFFiNE/assets/102217452/6e4447b7-380d-402b-9445-1c2d9c036363
2024-05-13 06:25:20 +00:00
EYHN
4ebe8f5fb4 chore(core): improve export snapshot tool (#6863) 2024-05-13 04:00:47 +00:00
JimmFly
f94306703a feat(core): tag groups sorted alphabetically (#6865)
feat(core): tag groups sorted alphabetically
feat(core): add display group to collection page and tag page

<img width="755" alt="image" src="https://github.com/toeverything/AFFiNE/assets/102217452/17a5abbe-cd1a-4ce2-8adc-f9aa5b6d6e77">
2024-05-13 03:48:17 +00:00
pengx17
3e23878e0f feat: add more tracking events (#6866)
Added most tracking events

what is missing:
- still need a way to track events in blocksuite
- some events may not 100% accurate of the one defined in the PRD
2024-05-13 03:36:32 +00:00
pengx17
bd1733b2a9 chore: remove unused file (#6894) 2024-05-13 02:27:21 +00:00
renovate
31f7f6c9cf chore: bump up @napi-rs/cli version to v3.0.0-alpha.55 (#6900)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@napi-rs/cli](https://togithub.com/napi-rs/napi-rs) | [`3.0.0-alpha.54` -> `3.0.0-alpha.55`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.0.0-alpha.54/3.0.0-alpha.55) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fcli/3.0.0-alpha.55?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fcli/3.0.0-alpha.55?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fcli/3.0.0-alpha.54/3.0.0-alpha.55?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fcli/3.0.0-alpha.54/3.0.0-alpha.55?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>napi-rs/napi-rs (@&#8203;napi-rs/cli)</summary>

### [`v3.0.0-alpha.55`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.55)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.54...@napi-rs/cli@3.0.0-alpha.55)

##### Bug Fixes

-   **cli:** prevent the wasm optimization crash the build ([#&#8203;2107](https://togithub.com/napi-rs/napi-rs/issues/2107)) ([c9c3c0e](c9c3c0ed05))
-   **deps:** update dependency [@&#8203;napi-rs/cross-toolchain](https://togithub.com/napi-rs/cross-toolchain) to ^0.0.16 ([#&#8203;2079](https://togithub.com/napi-rs/napi-rs/issues/2079)) ([d022f64](d022f64834))
-   **napi:** set explicit target flag for x86\_64 CI template ([#&#8203;2077](https://togithub.com/napi-rs/napi-rs/issues/2077)) ([ebc1e2c](ebc1e2ca18))

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-05-13 02:16:05 +00:00
pengx17
8af064b663 fix: should not reset identity on app start (#6895) 2024-05-12 12:39:59 +00:00
JimmFly
b8a1fbd6c7 fix(core): add margin to scrollbar when clientBorder has no style (#6867)
close #6684

https://github.com/toeverything/AFFiNE/assets/102217452/9de18009-c718-4bdd-88fd-caafdb5b419c
2024-05-11 05:44:48 +00:00
renovate
e2b057cb93 chore: bump up apple-actions/import-codesign-certs action to v3 (#6869)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [apple-actions/import-codesign-certs](https://togithub.com/apple-actions/import-codesign-certs) | action | major | `v2` -> `v3` |

---

### Release Notes

<details>
<summary>apple-actions/import-codesign-certs (apple-actions/import-codesign-certs)</summary>

### [`v3`](https://togithub.com/Apple-Actions/import-codesign-certs/releases/tag/v3)

[Compare Source](https://togithub.com/apple-actions/import-codesign-certs/compare/v2...v3)

Upgrade to node 20 plus some other changes

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-05-11 05:32:41 +00:00
renovate
9ac8f3177e chore: bump up @aws-sdk/client-s3 version to v3.574.0 (#6882)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@aws-sdk/client-s3](https://togithub.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://togithub.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.572.0` -> `3.574.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.572.0/3.574.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.574.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.574.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.572.0/3.574.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.572.0/3.574.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

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

### [`v3.574.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35740-2024-05-10)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.572.0...v3.574.0)

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

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-05-11 05:20:50 +00:00
renovate
931e9968b8 chore: bump up all non-major dependencies (#6856)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@google-cloud/opentelemetry-cloud-monitoring-exporter](https://togithub.com/GoogleCloudPlatform/opentelemetry-operations-js) | [`^0.17.0` -> `^0.18.0`](https://renovatebot.com/diffs/npm/@google-cloud%2fopentelemetry-cloud-monitoring-exporter/0.17.0/0.18.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@google-cloud%2fopentelemetry-cloud-monitoring-exporter/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@google-cloud%2fopentelemetry-cloud-monitoring-exporter/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@google-cloud%2fopentelemetry-cloud-monitoring-exporter/0.17.0/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@google-cloud%2fopentelemetry-cloud-monitoring-exporter/0.17.0/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@nx/vite](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/vite)) | [`19.0.1` -> `19.0.2`](https://renovatebot.com/diffs/npm/@nx%2fvite/19.0.1/19.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nx%2fvite/19.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nx%2fvite/19.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nx%2fvite/19.0.1/19.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nx%2fvite/19.0.1/19.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [node](https://nodejs.org) ([source](https://togithub.com/nodejs/node)) | `20.13.0` -> `20.13.1` | [![age](https://developer.mend.io/api/mc/badges/age/node-version/node/v20.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/node-version/node/v20.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/node-version/node/v20.13.0/v20.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/node-version/node/v20.13.0/v20.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |  | patch |

---

### Release Notes

<details>
<summary>GoogleCloudPlatform/opentelemetry-operations-js (@&#8203;google-cloud/opentelemetry-cloud-monitoring-exporter)</summary>

### [`v0.18.0`](6508117c22...@google-cloud/opentelemetry-cloud-monitoring-exporter@0.18.0)

[Compare Source](6508117c22...@google-cloud/opentelemetry-cloud-monitoring-exporter@0.18.0)

</details>

<details>
<summary>nrwl/nx (@&#8203;nx/vite)</summary>

### [`v19.0.2`](https://togithub.com/nrwl/nx/releases/tag/19.0.2)

[Compare Source](https://togithub.com/nrwl/nx/compare/19.0.1...19.0.2)

##### 19.0.2 (2024-05-09)

##### 🩹 Fixes

-   **bundling:** rollup does not log build errors ([#&#8203;23141](https://togithub.com/nrwl/nx/pull/23141))
-   **bundling:** resolve index files from ts paths when running esbuild without bundling ([#&#8203;23098](https://togithub.com/nrwl/nx/pull/23098))
-   **core:** set yarn berry nodeLinker correctly in migrate command ([#&#8203;23249](https://togithub.com/nrwl/nx/pull/23249))
-   **core:** show project --web shouldn't error ([#&#8203;23251](https://togithub.com/nrwl/nx/pull/23251))
-   **core:** update getLastValueFromAsyncIterableIterator to support AsyncIterables returned from executors ([#&#8203;23229](https://togithub.com/nrwl/nx/pull/23229))
-   **gradle:** run gradle init if no settings.gradle ([#&#8203;23226](https://togithub.com/nrwl/nx/pull/23226))
-   **linter:** ensure config.rules is spread into rules in flat config migration ([#&#8203;23263](https://togithub.com/nrwl/nx/pull/23263))
-   **misc:** create workspaces and default app with the name as provided ([#&#8203;23196](https://togithub.com/nrwl/nx/pull/23196))
-   ⚠️  **misc:** adjust deprecation messages to v20 ([#&#8203;23223](https://togithub.com/nrwl/nx/pull/23223))
-   **nx-dev:** fix home page mobile menu ([#&#8203;23250](https://togithub.com/nrwl/nx/pull/23250))
-   **release:** ensure changelog renderers are resolvable when processing config ([#&#8203;23214](https://togithub.com/nrwl/nx/pull/23214))
-   **vite:** don't generate tasks for remix projects ([#&#8203;22551](https://togithub.com/nrwl/nx/pull/22551))
-   **vite:** get tsconfig from new path including target ([#&#8203;22775](https://togithub.com/nrwl/nx/pull/22775))
-   **webpack:** fix default compiler option ([#&#8203;22762](https://togithub.com/nrwl/nx/pull/22762))
-   **webpack:** don't overwrite output config ([#&#8203;22116](https://togithub.com/nrwl/nx/pull/22116))
-   **webpack:** publicPath and rebaseRootRelative ([#&#8203;20992](https://togithub.com/nrwl/nx/pull/20992))

##### ⚠️  Breaking Changes

-   **misc:** `nx print-affected` was deprecated in 16.4.0 and has been removed
-   **misc:** `nx affected:graph` was deprecated in 16.4.0 and has been removed
-   **misc:** `criticalPath` and `affectedProjects` properties created for `nx graph --file graph.json` was deprecated in 16.2.0 and has been removed

##### ❤️  Thank You

-   andriizavoiko [@&#8203;andriizavoiko](https://togithub.com/andriizavoiko)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Edward Wang [@&#8203;wzc0415](https://togithub.com/wzc0415)
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Isaac Mann [@&#8203;isaacplmann](https://togithub.com/isaacplmann)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   James Henry [@&#8203;JamesHenry](https://togithub.com/JamesHenry)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Krystian Sowiński [@&#8203;plumcoding](https://togithub.com/plumcoding)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Mateo Tibaquirá
-   Matthias Stemmler [@&#8203;ms-tng](https://togithub.com/ms-tng)
-   Mike Peters
-   Sean Sanker

</details>

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

### [`v20.13.1`](https://togithub.com/nodejs/node/releases/tag/v20.13.1): 2024-05-09, Version 20.13.1 &#x27;Iron&#x27; (LTS), @&#8203;marco-ippolito

[Compare Source](https://togithub.com/nodejs/node/compare/v20.13.0...v20.13.1)

#### 2024-05-09, Version 20.13.1 'Iron' (LTS), [@&#8203;marco-ippolito](https://togithub.com/marco-ippolito)

##### Revert "tools: install npm PowerShell scripts on Windows"

Due to a regression in the npm installation on Windows, this commit reverts the change that installed npm PowerShell scripts on Windows.

##### Commits

-   \[[`b7d80802cc`](https://togithub.com/nodejs/node/commit/b7d80802cc)] - ***Revert*** "**tools**: install npm PowerShell scripts on Windows" (marco-ippolito) [#&#8203;52897](https://togithub.com/nodejs/node/pull/52897)

</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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-05-10 04:21:32 +00:00
pengx17
c07c7c0969 Revert "chore: bump @pengx17/electron-forge-maker-appimage (#6726)" (#6859)
This reverts commit 964e475c5f.

fix #6829
2024-05-10 04:11:06 +00:00
EYHN
f5dceda0cc fix(core): mixpanel error when opt-out (#6861) 2024-05-10 03:58:45 +00:00
donteatfriedrice
203459679c feat: bump blocksuite (#6852)
## Features
- https://github.com/toeverything/BlockSuite/pull/6995 @fundon

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/7002 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/7000 @regischen
- https://github.com/toeverything/BlockSuite/pull/7001 @fundon
- https://github.com/toeverything/BlockSuite/pull/6999 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6997 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6996 @regischen
- https://github.com/toeverything/BlockSuite/pull/6994 @L-Sun

## Refactor

## Misc
2024-05-10 03:46:10 +00:00
renovate
06890d67c7 chore: bump up all non-major dependencies (#6843)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@aws-sdk/client-s3](https://togithub.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://togithub.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.569.0` -> `3.572.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.569.0/3.572.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.572.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.572.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.569.0/3.572.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.569.0/3.572.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@storybook/test-runner](https://togithub.com/storybookjs/test-runner) | [`^0.17.0` -> `^0.18.0`](https://renovatebot.com/diffs/npm/@storybook%2ftest-runner/0.17.0/0.18.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2ftest-runner/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2ftest-runner/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2ftest-runner/0.17.0/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2ftest-runner/0.17.0/0.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [file-format](https://togithub.com/mmalecot/file-format) | `0.24` -> `0.25` | [![age](https://developer.mend.io/api/mc/badges/age/crate/file-format/0.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/file-format/0.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/file-format/0.24.0/0.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/file-format/0.24.0/0.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [yarn](https://togithub.com/yarnpkg/berry) ([source](https://togithub.com/yarnpkg/berry/tree/HEAD/packages/yarnpkg-cli)) | [`4.2.1` -> `4.2.2`](https://renovatebot.com/diffs/npm/yarn/4.2.1/4.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/yarn/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/yarn/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/yarn/4.2.1/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/yarn/4.2.1/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | packageManager | patch |

---

### Release Notes

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

### [`v3.572.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35720-2024-05-08)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.569.0...v3.572.0)

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

</details>

<details>
<summary>storybookjs/test-runner (@&#8203;storybook/test-runner)</summary>

### [`v0.18.0`](https://togithub.com/storybookjs/test-runner/blob/HEAD/CHANGELOG.md#v0180-Thu-May-09-2024)

[Compare Source](https://togithub.com/storybookjs/test-runner/compare/v0.17.0...v0.18.0)

##### 🚀 Enhancement

-   Release 0.18.0 [#&#8203;458](https://togithub.com/storybookjs/test-runner/pull/458) ([@&#8203;skratchdot](https://togithub.com/skratchdot) [@&#8203;yannbf](https://togithub.com/yannbf))
-   Fix coverage reports, add lcov as extra reporter [#&#8203;456](https://togithub.com/storybookjs/test-runner/pull/456) ([@&#8203;yannbf](https://togithub.com/yannbf))

##### 🐛 Bug Fix

-   add `--testTimeout` cli option from jest [#&#8203;409](https://togithub.com/storybookjs/test-runner/pull/409) ([@&#8203;skratchdot](https://togithub.com/skratchdot) [@&#8203;yannbf](https://togithub.com/yannbf))

##### Authors: 2

-   ◬ ([@&#8203;skratchdot](https://togithub.com/skratchdot))
-   Yann Braga ([@&#8203;yannbf](https://togithub.com/yannbf))

***

</details>

<details>
<summary>mmalecot/file-format (file-format)</summary>

### [`v0.25.0`](https://togithub.com/mmalecot/file-format/blob/HEAD/CHANGELOG.md#Version-0250-2024-05-08)

[Compare Source](https://togithub.com/mmalecot/file-format/compare/v0.24.0...v0.25.0)

#### Fixes

-   Fix AutoCAD Drawing (DWG) signature

#### New formats support

-   Glyphs
-   Sketch
-   Sketch 43
-   age encryption

</details>

<details>
<summary>yarnpkg/berry (yarn)</summary>

### [`v4.2.2`](bf24f592eb...effc932614)

[Compare Source](bf24f592eb...effc932614)

</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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-05-09 08:37:29 +00:00
JimmFly
f4a422c0e9 fix(core): keep the delete button from being blocked (#6836)
close #6718
2024-05-09 08:26:32 +00:00
fundon
d8b3a0b6d5 fix: improve make it real action (#6830) 2024-05-09 08:15:34 +00:00
pengx17
917ad1965a fix: mixpanel issues (#6840) 2024-05-09 07:50:15 +00:00
pengx17
3744a0a5e0 feat: handle login required tracking event (#6831) 2024-05-09 07:50:07 +00:00
pengx17
1a9a623310 chore: bump blocksuite (#6844) 2024-05-09 07:49:59 +00:00
CatsJuice
36575ca1b5 chore(core): adjust setting modal's size (#6849) 2024-05-09 07:38:07 +00:00
CatsJuice
9f432a04d4 fix(core): ai plan should show even user not signed in (#6845) 2024-05-09 07:26:27 +00:00
CatsJuice
960b906935 fix(core): avoid shaking when renaming doc in title bar (#6847)
- before
    ![CleanShot 2024-05-09 at 14.42.45.gif](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/LakojjjzZNf6ogjOVwKE/5c7b6beb-d24f-49b8-a2c2-f3ab07f4972a.gif)

- after
    ![CleanShot 2024-05-09 at 14.43.57.gif](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/LakojjjzZNf6ogjOVwKE/325b68b5-a904-425a-b2c4-5f914237b497.gif)
2024-05-09 07:15:14 +00:00
JimmFly
291db7d809 feat(core): add untagged group to GroupBy view (#6837)
close #6688

<img width="743" alt="image" src="https://github.com/toeverything/AFFiNE/assets/102217452/9ffe3cac-0c73-4a8c-8567-8a315eed6548">
2024-05-09 02:30:52 +00:00
CatsJuice
301cc188ca fix(core): adjust ai onboarding copywriting and local onboarding actions (#6834) 2024-05-08 09:18:17 +00:00
EYHN
8d8bd49600 chore(infra): remove compatible code (#6833) 2024-05-08 09:06:33 +00:00
JimmFly
87078ff706 fix(core): member list does not display names correctly (#6835)
close #6818
close AFF-1031
2024-05-08 08:54:11 +00:00
renovate
7f64162a8d chore: bump up all non-major dependencies (#6827)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@nx/vite](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/vite)) | [`19.0.0` -> `19.0.1`](https://renovatebot.com/diffs/npm/@nx%2fvite/19.0.0/19.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nx%2fvite/19.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nx%2fvite/19.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nx%2fvite/19.0.0/19.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nx%2fvite/19.0.0/19.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [node](https://nodejs.org) ([source](https://togithub.com/nodejs/node)) | `20.12.2` -> `20.13.0` | [![age](https://developer.mend.io/api/mc/badges/age/node-version/node/v20.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/node-version/node/v20.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/node-version/node/v20.12.2/v20.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/node-version/node/v20.12.2/v20.13.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |  | minor |

---

### Release Notes

<details>
<summary>nrwl/nx (@&#8203;nx/vite)</summary>

### [`v19.0.1`](https://togithub.com/nrwl/nx/releases/tag/19.0.1)

[Compare Source](https://togithub.com/nrwl/nx/compare/19.0.0...19.0.1)

#### 19.0.1 (2024-05-07)

##### 🚀 Features

-   **core:** add an option to seperate the output of show with provide… ([#&#8203;23172](https://togithub.com/nrwl/nx/pull/23172))
-   **misc:** improve nx cloud setup prompts and messaging ([#&#8203;23218](https://togithub.com/nrwl/nx/pull/23218))

##### 🩹 Fixes

-   **gradle:** use local gradlew instead of sdkman ([#&#8203;23205](https://togithub.com/nrwl/nx/pull/23205))
-   **module-federation:** nested projects should be ordered first when reading from tsconfig paths [#&#8203;20284](https://togithub.com/nrwl/nx/issues/20284) ([#&#8203;23212](https://togithub.com/nrwl/nx/pull/23212), [#&#8203;20284](https://togithub.com/nrwl/nx/issues/20284))

##### ❤️  Thank You

-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Daniel Santiago
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)

</details>

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

### [`v20.13.0`](https://togithub.com/nodejs/node/compare/v20.12.2...v20.13.0)

[Compare Source](https://togithub.com/nodejs/node/compare/v20.12.2...v20.13.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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ0YXJnZXRCcmFuY2giOiJjYW5hcnkiLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
2024-05-08 08:28:25 +00:00
EYHN
e00c697694 fix(core): windows app controls missing (#6832)
fix #6825
2024-05-08 08:17:37 +00:00
Akumatus
4a032eb260 fix: modify experimental features to app-level (#6823) 2024-05-08 12:21:02 +08:00
pengx17
e85548b393 fix: tone action param (#6824) 2024-05-07 12:42:35 +00:00
renovate
0912fe113f chore: bump up oxlint version to v0.3.2 (#6763)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

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

---

### Release Notes

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

### [`v0.3.2`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.3.2): oxlint v0.3.2

[Compare Source](99d46f9e48...a7940868c6)

#### What's Changed

[Oxlint Import Plugin Alpha Release](http://localhost:5173/blog/2024-05-04-import-plugin-alpha.html)

-   feat(linter): [@&#8203;typescript-eslint/prefer-literal-enum-member](https://togithub.com/typescript-eslint/prefer-literal-enum-member) by [@&#8203;kaykdm](https://togithub.com/kaykdm) in [https://github.com/oxc-project/oxc/pull/3134](https://togithub.com/oxc-project/oxc/pull/3134)
-   feat(linter): add more "ban-ts-comment" test cases. by [@&#8203;woai3c](https://togithub.com/woai3c) in [https://github.com/oxc-project/oxc/pull/3107](https://togithub.com/oxc-project/oxc/pull/3107)
-   feat(linter): eslint-plugin-jest/require-hook by [@&#8203;eryue0220](https://togithub.com/eryue0220) in [https://github.com/oxc-project/oxc/pull/3110](https://togithub.com/oxc-project/oxc/pull/3110)
-   feat(linter): eslint/no-await-in-loop by [@&#8203;woai3c](https://togithub.com/woai3c) in [https://github.com/oxc-project/oxc/pull/3070](https://togithub.com/oxc-project/oxc/pull/3070)
-   feat(linter): typescript-eslint/prefer-enum-initializers by [@&#8203;todor-a](https://togithub.com/todor-a) in [https://github.com/oxc-project/oxc/pull/3097](https://togithub.com/oxc-project/oxc/pull/3097)
-   feat(linter/jsdoc): Implement `implements-on-classes` rule by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/3081](https://togithub.com/oxc-project/oxc/pull/3081)
-   feat(linter/jsdoc): Implement check-tag-names rule by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/3029](https://togithub.com/oxc-project/oxc/pull/3029)
-   feat(linter/jsdoc): Implement no-defaults rule by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/3098](https://togithub.com/oxc-project/oxc/pull/3098)
-   feat(linter/jsdoc): Implement require-yields rule by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/3150](https://togithub.com/oxc-project/oxc/pull/3150)
-   feat(linter/jsdoc): Support settings.ignore(Private|Internal) by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/3147](https://togithub.com/oxc-project/oxc/pull/3147)

#### New Contributors

-   [@&#8203;vsn4ik](https://togithub.com/vsn4ik) made their first contribution in [https://github.com/oxc-project/oxc/pull/3118](https://togithub.com/oxc-project/oxc/pull/3118)

**Full Changelog**: https://github.com/oxc-project/oxc/compare/oxlint_v0.3.1...oxlint_v0.3.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.

🔕 **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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMzEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjMzMS4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-05-07 11:22:19 +00:00
renovate
269060d494 chore: bump up @blocksuite/icons version to v2.1.50 (#6577)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

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

---

### Release Notes

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

### [`v2.1.50`](aa76c34aae...937b436274)

[Compare Source](aa76c34aae...937b436274)

### [`v2.1.49`](fc6422fbd4...aa76c34aae)

[Compare Source](fc6422fbd4...aa76c34aae)

### [`v2.1.48`](34162ca6da...fc6422fbd4)

[Compare Source](34162ca6da...fc6422fbd4)

### [`v2.1.47`](740923da0d...34162ca6da)

[Compare Source](740923da0d...34162ca6da)

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjM0MC4xMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
2024-05-07 11:09:38 +00:00
pengx17
6ad5ae2403 fix: chat panel segment (#6820) 2024-05-07 10:41:57 +00:00
renovate
013adc38c0 chore: bump up all non-major dependencies (#6526)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@aws-sdk/client-s3](https://togithub.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://togithub.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.537.0` -> `3.569.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.537.0/3.569.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.569.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.569.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.537.0/3.569.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.537.0/3.569.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@electron-forge/maker-base](https://togithub.com/electron/forge) | [`7.3.1` -> `7.4.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-base/7.3.1/7.4.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-base/7.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-base/7.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-base/7.3.1/7.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-base/7.3.1/7.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | resolutions | minor |
| @&#8203;magic-works/i18n-codegen | [`^0.5.0` -> `^0.6.0`](https://renovatebot.com/diffs/npm/@magic-works%2fi18n-codegen/0.5.0/0.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@magic-works%2fi18n-codegen/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@magic-works%2fi18n-codegen/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@magic-works%2fi18n-codegen/0.5.0/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@magic-works%2fi18n-codegen/0.5.0/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| @&#8203;magic-works/i18n-codegen | [`^0.5.0` -> `^0.6.0`](https://renovatebot.com/diffs/npm/@magic-works%2fi18n-codegen/0.5.0/0.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@magic-works%2fi18n-codegen/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@magic-works%2fi18n-codegen/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@magic-works%2fi18n-codegen/0.5.0/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@magic-works%2fi18n-codegen/0.5.0/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@marsidev/react-turnstile](https://togithub.com/marsidev/react-turnstile) | [`^0.5.4` -> `^0.6.0`](https://renovatebot.com/diffs/npm/@marsidev%2freact-turnstile/0.5.4/0.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@marsidev%2freact-turnstile/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@marsidev%2freact-turnstile/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@marsidev%2freact-turnstile/0.5.4/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@marsidev%2freact-turnstile/0.5.4/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@napi-rs/cli](https://togithub.com/napi-rs/napi-rs) | [`3.0.0-alpha.46` -> `3.0.0-alpha.54`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.0.0-alpha.46/3.0.0-alpha.54) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fcli/3.0.0-alpha.54?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fcli/3.0.0-alpha.54?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fcli/3.0.0-alpha.46/3.0.0-alpha.54?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fcli/3.0.0-alpha.46/3.0.0-alpha.54?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@nestjs/throttler](https://togithub.com/nestjs/throttler) | [`5.0.1` -> `5.1.2`](https://renovatebot.com/diffs/npm/@nestjs%2fthrottler/5.0.1/5.1.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fthrottler/5.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fthrottler/5.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fthrottler/5.0.1/5.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fthrottler/5.0.1/5.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/exporter-prometheus](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.50.0` -> `^0.51.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fexporter-prometheus/0.50.0/0.51.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fexporter-prometheus/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fexporter-prometheus/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fexporter-prometheus/0.50.0/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fexporter-prometheus/0.50.0/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.50.0` -> `^0.51.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation/0.50.0/0.51.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation/0.50.0/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation/0.50.0/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-graphql](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-graphql#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.39.0` -> `^0.40.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-graphql/0.39.0/0.40.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-graphql/0.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-graphql/0.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-graphql/0.39.0/0.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-graphql/0.39.0/0.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-http](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.50.0` -> `^0.51.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-http/0.50.0/0.51.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-http/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-http/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-http/0.50.0/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-http/0.50.0/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-ioredis](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.39.0` -> `^0.40.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-ioredis/0.39.0/0.40.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-ioredis/0.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-ioredis/0.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-ioredis/0.39.0/0.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-ioredis/0.39.0/0.40.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-nestjs-core](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.36.0` -> `^0.37.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-nestjs-core/0.36.0/0.37.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-nestjs-core/0.37.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-nestjs-core/0.37.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-nestjs-core/0.36.0/0.37.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-nestjs-core/0.36.0/0.37.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-socket.io](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.38.0` -> `^0.39.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-socket.io/0.38.0/0.39.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-socket.io/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-socket.io/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-socket.io/0.38.0/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-socket.io/0.38.0/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/sdk-node](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.50.0` -> `^0.51.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-node/0.50.0/0.51.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsdk-node/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsdk-node/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsdk-node/0.50.0/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsdk-node/0.50.0/0.51.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@vitest/coverage-istanbul](https://togithub.com/vitest-dev/vitest/tree/main/packages/coverage-istanbul#readme) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/coverage-istanbul)) | [`1.4.0` -> `1.6.0`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-istanbul/1.4.0/1.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fcoverage-istanbul/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fcoverage-istanbul/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fcoverage-istanbul/1.4.0/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fcoverage-istanbul/1.4.0/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@vitest/ui](https://togithub.com/vitest-dev/vitest/tree/main/packages/ui#readme) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/ui)) | [`1.4.0` -> `1.6.0`](https://renovatebot.com/diffs/npm/@vitest%2fui/1.4.0/1.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fui/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fui/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fui/1.4.0/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fui/1.4.0/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [cloudflare/wrangler-action](https://togithub.com/cloudflare/wrangler-action) | `v3.4.1` -> `v3.5.0` | [![age](https://developer.mend.io/api/mc/badges/age/github-tags/cloudflare%2fwrangler-action/v3.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/cloudflare%2fwrangler-action/v3.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/cloudflare%2fwrangler-action/v3.4.1/v3.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/cloudflare%2fwrangler-action/v3.4.1/v3.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | action | minor |
| [esbuild](https://togithub.com/evanw/esbuild) | [`^0.20.2` -> `^0.21.0`](https://renovatebot.com/diffs/npm/esbuild/0.20.2/0.21.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/esbuild/0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/esbuild/0.20.2/0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.20.2/0.21.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [jotai-devtools](https://togithub.com/jotaijs/jotai-devtools) | [`^0.8.0` -> `^0.9.0`](https://renovatebot.com/diffs/npm/jotai-devtools/0.8.0/0.9.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-devtools/0.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-devtools/0.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-devtools/0.8.0/0.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-devtools/0.8.0/0.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [jotai-devtools](https://togithub.com/jotaijs/jotai-devtools) | [`^0.8.0` -> `^0.9.0`](https://renovatebot.com/diffs/npm/jotai-devtools/0.8.0/0.9.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-devtools/0.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-devtools/0.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-devtools/0.8.0/0.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-devtools/0.8.0/0.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [jotai-scope](https://togithub.com/jotaijs/jotai-scope) | [`^0.5.1` -> `^0.6.0`](https://renovatebot.com/diffs/npm/jotai-scope/0.5.1/0.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-scope/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-scope/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-scope/0.5.1/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-scope/0.5.1/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [node](https://nodejs.org) ([source](https://togithub.com/nodejs/node)) | `20.12.1` -> `20.12.2` | [![age](https://developer.mend.io/api/mc/badges/age/node-version/node/v20.12.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/node-version/node/v20.12.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/node-version/node/v20.12.1/v20.12.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/node-version/node/v20.12.1/v20.12.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |  | patch |
| [react](https://reactjs.org/) ([source](https://togithub.com/facebook/react/tree/HEAD/packages/react)) | [`18.2.0` -> `18.3.1`](https://renovatebot.com/diffs/npm/react/18.2.0/18.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react/18.2.0/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react/18.2.0/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [react](https://reactjs.org/) ([source](https://togithub.com/facebook/react/tree/HEAD/packages/react)) | [`18.2.0` -> `18.3.1`](https://renovatebot.com/diffs/npm/react/18.2.0/18.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react/18.2.0/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react/18.2.0/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [react-dom](https://reactjs.org/) ([source](https://togithub.com/facebook/react/tree/HEAD/packages/react-dom)) | [`18.2.0` -> `18.3.1`](https://renovatebot.com/diffs/npm/react-dom/18.2.0/18.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-dom/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-dom/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-dom/18.2.0/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-dom/18.2.0/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [react-dom](https://reactjs.org/) ([source](https://togithub.com/facebook/react/tree/HEAD/packages/react-dom)) | [`18.2.0` -> `18.3.1`](https://renovatebot.com/diffs/npm/react-dom/18.2.0/18.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-dom/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-dom/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-dom/18.2.0/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-dom/18.2.0/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [react-is](https://reactjs.org/) ([source](https://togithub.com/facebook/react/tree/HEAD/packages/react-is)) | [`18.2.0` -> `18.3.1`](https://renovatebot.com/diffs/npm/react-is/18.2.0/18.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-is/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-is/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-is/18.2.0/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-is/18.2.0/18.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [sqlx](https://togithub.com/launchbadge/sqlx) | `0.7.3` -> `0.7.4` | [![age](https://developer.mend.io/api/mc/badges/age/crate/sqlx/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/sqlx/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/sqlx/0.7.4/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/sqlx/0.7.4/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | build-dependencies | patch |
| [sqlx](https://togithub.com/launchbadge/sqlx) | `0.7.3` -> `0.7.4` | [![age](https://developer.mend.io/api/mc/badges/age/crate/sqlx/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/sqlx/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/sqlx/0.7.4/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/sqlx/0.7.4/0.7.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch |
| [vite-plugin-dts](https://togithub.com/qmhc/vite-plugin-dts) | [`3.8.1` -> `3.9.1`](https://renovatebot.com/diffs/npm/vite-plugin-dts/3.8.1/3.9.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite-plugin-dts/3.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite-plugin-dts/3.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite-plugin-dts/3.8.1/3.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite-plugin-dts/3.8.1/3.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [vitest](https://togithub.com/vitest-dev/vitest) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`1.4.0` -> `1.6.0`](https://renovatebot.com/diffs/npm/vitest/1.4.0/1.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/1.4.0/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/1.4.0/1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [yarn](https://togithub.com/yarnpkg/berry) ([source](https://togithub.com/yarnpkg/berry/tree/HEAD/packages/yarnpkg-cli)) | [`4.1.1` -> `4.2.1`](https://renovatebot.com/diffs/npm/yarn/4.1.1/4.2.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/yarn/4.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/yarn/4.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/yarn/4.1.1/4.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/yarn/4.1.1/4.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | packageManager | minor |

---

### Release Notes

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

### [`v3.569.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35690-2024-05-03)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.568.0...v3.569.0)

##### Bug Fixes

-   **clients:** add deps required by default credential providers ([#&#8203;6055](https://togithub.com/aws/aws-sdk-js-v3/issues/6055)) ([bfa8626](bfa8626854))

### [`v3.568.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35680-2024-05-02)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.567.0...v3.568.0)

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

### [`v3.567.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35670-2024-05-01)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.565.0...v3.567.0)

##### Features

-   end support for Node.js 14.x ([#&#8203;6034](https://togithub.com/aws/aws-sdk-js-v3/issues/6034)) ([d196411](d19641119f))

### [`v3.565.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35650-2024-04-29)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.564.0...v3.565.0)

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

### [`v3.564.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35640-2024-04-26)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.563.0...v3.564.0)

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

### [`v3.563.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35630-2024-04-25)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.556.0...v3.563.0)

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

### [`v3.556.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35560-2024-04-16)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.554.0...v3.556.0)

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

### [`v3.554.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35540-2024-04-11)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.552.0...v3.554.0)

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

### [`v3.552.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35520-2024-04-09)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.550.0...v3.552.0)

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

### [`v3.550.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35500-2024-04-05)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.549.0...v3.550.0)

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

### [`v3.549.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35490-2024-04-04)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.540.0...v3.549.0)

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

### [`v3.540.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35400-2024-03-22)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.537.0...v3.540.0)

##### Bug Fixes

-   **util-endpoints:** augment endpointFunctions inline in endpointResolver functions ([#&#8203;5933](https://togithub.com/aws/aws-sdk-js-v3/issues/5933)) ([42a791d](42a791defb))

</details>

<details>
<summary>electron/forge (@&#8203;electron-forge/maker-base)</summary>

### [`v7.4.0`](https://togithub.com/electron/forge/releases/tag/v7.4.0)

[Compare Source](https://togithub.com/electron/forge/compare/v7.3.1...v7.4.0)

##### What's Changed

##### Highlighted Feature:

-   fix: bump packager minimum dep by [@&#8203;MarshallOfSound](https://togithub.com/MarshallOfSound) in [https://github.com/electron/forge/pull/3551](https://togithub.com/electron/forge/pull/3551)

This version of Forge enables the new Windows ASAR integrity feature in Electron. When ASAR integrity is enabled, your Electron app will verify the header hash of the ASAR archive on runtime. If no hash is present or if there is a mismatch in the hashes, the app will forcefully terminate.

More information about this feature can be found in Electron's documentation here: https://github.com/electron/electron/blob/main/docs/tutorial/asar-integrity.md#using-electron-tooling

##### Bug Fixes and Improvements

-   fix(cli): add `plugin-fuses` to import script by [@&#8203;Santhoshmani1](https://togithub.com/Santhoshmani1) in [https://github.com/electron/forge/pull/3535](https://togithub.com/electron/forge/pull/3535)
-   build(deps): bump dsanders11/github-app-commit-action from 1.3.0 to 1.4.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/electron/forge/pull/3555](https://togithub.com/electron/forge/pull/3555)
-   build(deps): bump dsanders11/project-actions from 1.2.0 to 1.3.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/electron/forge/pull/3557](https://togithub.com/electron/forge/pull/3557)
-   build(deps): bump webpack-dev-middleware from 5.3.3 to 5.3.4 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/electron/forge/pull/3545](https://togithub.com/electron/forge/pull/3545)
-   build(deps): bump actions/checkout from 4.1.1 to 4.1.2 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/electron/forge/pull/3556](https://togithub.com/electron/forge/pull/3556)
-   chore: update listr2 version by [@&#8203;yangannyx](https://togithub.com/yangannyx) in [https://github.com/electron/forge/pull/3542](https://togithub.com/electron/forge/pull/3542)
-   docs: Typo in Interface MakerDMGConfig by [@&#8203;zsewa](https://togithub.com/zsewa) in [https://github.com/electron/forge/pull/3550](https://togithub.com/electron/forge/pull/3550)

##### New Contributors

-   [@&#8203;zsewa](https://togithub.com/zsewa) made their first contribution in [https://github.com/electron/forge/pull/3550](https://togithub.com/electron/forge/pull/3550)
-   [@&#8203;Santhoshmani1](https://togithub.com/Santhoshmani1) made their first contribution in [https://github.com/electron/forge/pull/3535](https://togithub.com/electron/forge/pull/3535)

**Full Changelog**: https://github.com/electron/forge/compare/v7.3.1...v7.4.0

</details>

<details>
<summary>marsidev/react-turnstile (@&#8203;marsidev/react-turnstile)</summary>

### [`v0.6.0`](https://togithub.com/marsidev/react-turnstile/releases/tag/v0.6.0)

[Compare Source](https://togithub.com/marsidev/react-turnstile/compare/v0.5.4...v0.6.0)

#### What's Changed

##### Bug Fixes

-   Prevent widget to be removed when `onWidgetLoad` exists by [@&#8203;marsidev](https://togithub.com/marsidev) in [https://github.com/marsidev/react-turnstile/pull/66](https://togithub.com/marsidev/react-turnstile/pull/66)

##### Minor changes

-   Test changes by [@&#8203;marsidev](https://togithub.com/marsidev) in [https://github.com/marsidev/react-turnstile/pull/63](https://togithub.com/marsidev/react-turnstile/pull/63)
-   Upgrade dependencies by [@&#8203;marsidev](https://togithub.com/marsidev) in [https://github.com/marsidev/react-turnstile/pull/64](https://togithub.com/marsidev/react-turnstile/pull/64)

**Full Changelog**: https://github.com/marsidev/react-turnstile/compare/v0.5.4...v0.6.0

</details>

<details>
<summary>napi-rs/napi-rs (@&#8203;napi-rs/cli)</summary>

### [`v3.0.0-alpha.54`](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.53...@napi-rs/cli@3.0.0-alpha.54)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.53...@napi-rs/cli@3.0.0-alpha.54)

### [`v3.0.0-alpha.53`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.53)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.52...@napi-rs/cli@3.0.0-alpha.53)

#### What's Changed

-   feat(cli): allow sync fs operation between workers/mainThread by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2064](https://togithub.com/napi-rs/napi-rs/pull/2064)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.52...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.53

### [`v3.0.0-alpha.52`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.52)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.51...@napi-rs/cli@3.0.0-alpha.52)

#### What's Changed

-   feat(cli): support generation of literal union from string enum by [@&#8203;inokawa](https://togithub.com/inokawa) in [https://github.com/napi-rs/napi-rs/pull/2054](https://togithub.com/napi-rs/napi-rs/pull/2054)
-   fix(cli): pass fs to browser worker binding by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2062](https://togithub.com/napi-rs/napi-rs/pull/2062)

#### New Contributors

-   [@&#8203;inokawa](https://togithub.com/inokawa) made their first contribution in [https://github.com/napi-rs/napi-rs/pull/2054](https://togithub.com/napi-rs/napi-rs/pull/2054)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.16.4...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.52

### [`v3.0.0-alpha.51`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.51)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.50...@napi-rs/cli@3.0.0-alpha.51)

#### What's Changed

-   feat(cli): improve the browser binding by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2056](https://togithub.com/napi-rs/napi-rs/pull/2056)
-   fix(cli): new project issue by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2058](https://togithub.com/napi-rs/napi-rs/pull/2058)
-   chore: upgrade [@&#8203;tybys/wasm-util](https://togithub.com/tybys/wasm-util) by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2059](https://togithub.com/napi-rs/napi-rs/pull/2059)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.16.4...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.51

### [`v3.0.0-alpha.50`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.50)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.49...@napi-rs/cli@3.0.0-alpha.50)

#### What's Changed

-   feat(cli): optimize wasm output binary by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2049](https://togithub.com/napi-rs/napi-rs/pull/2049)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.49...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.50

### [`v3.0.0-alpha.49`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.49)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.48...@napi-rs/cli@3.0.0-alpha.49)

#### What's Changed

-   chore(deps): update dependency electron to v30 by [@&#8203;renovate](https://togithub.com/renovate) in [https://github.com/napi-rs/napi-rs/pull/2043](https://togithub.com/napi-rs/napi-rs/pull/2043)
-   fix(cli): wasi targets linker envs by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2044](https://togithub.com/napi-rs/napi-rs/pull/2044)
-   feat(cli): allow to define dtsHeader in napi config by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2045](https://togithub.com/napi-rs/napi-rs/pull/2045)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@3.0.0-alpha.2...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.49

### [`v3.0.0-alpha.48`](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.47...@napi-rs/cli@3.0.0-alpha.48)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.47...@napi-rs/cli@3.0.0-alpha.48)

### [`v3.0.0-alpha.47`](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.46...@napi-rs/cli@3.0.0-alpha.47)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.46...@napi-rs/cli@3.0.0-alpha.47)

</details>

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

### [`v5.1.2`](https://togithub.com/nestjs/throttler/blob/HEAD/CHANGELOG.md#512)

[Compare Source](https://togithub.com/nestjs/throttler/compare/v5.1.1...v5.1.2)

##### Patch Changes

-   [`7a431e5`](https://togithub.com/nestjs/throttler/commit/7a431e5): Improve performance by replacing md5 npm package with Node.js crypto module.

### [`v5.1.1`](https://togithub.com/nestjs/throttler/blob/HEAD/CHANGELOG.md#511)

[Compare Source](https://togithub.com/nestjs/throttler/compare/v5.1.0...v5.1.1)

##### Patch Changes

-   [`b06a208`](https://togithub.com/nestjs/throttler/commit/b06a208): Resolves a bug that cause 'this' to be undefined in the 'getTracker' and 'generateKey' methods of the custom ThrottlerGuard

### [`v5.1.0`](https://togithub.com/nestjs/throttler/blob/HEAD/CHANGELOG.md#510)

[Compare Source](https://togithub.com/nestjs/throttler/compare/v5.0.1...v5.1.0)

##### Minor Changes

-   [`903d187`](https://togithub.com/nestjs/throttler/commit/903d187): Allow for throttler definitions to define their own trackers and key generators to allow for more customization of the rate limit process

</details>

<details>
<summary>open-telemetry/opentelemetry-js (@&#8203;opentelemetry/exporter-prometheus)</summary>

### [`v0.51.0`](5231aa2550...3ab4f765d8)

[Compare Source](5231aa2550...3ab4f765d8)

</details>

<details>
<summary>open-telemetry/opentelemetry-js-contrib (@&#8203;opentelemetry/instrumentation-graphql)</summary>

### [`v0.40.0`](32204a362d...fcea8ca0c8)

[Compare Source](17a0bc1da3...96a87b4893)

</details>

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

### [`v1.6.0`](https://togithub.com/vitest-dev/vitest/releases/tag/v1.6.0)

[Compare Source](https://togithub.com/vitest-dev/vitest/compare/v1.5.3...v1.6.0)

#####    🚀 Features

-   Support standalone mode  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5565](https://togithub.com/vitest-dev/vitest/issues/5565) [<samp>(bdce0)</samp>](https://togithub.com/vitest-dev/vitest/commit/bdce0a29)
-   Custom "snapshotEnvironment" option  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5449](https://togithub.com/vitest-dev/vitest/issues/5449) [<samp>(30f72)</samp>](https://togithub.com/vitest-dev/vitest/commit/30f728bc)
-   **benchmark**: Support comparing benchmark result  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) and [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5398](https://togithub.com/vitest-dev/vitest/issues/5398) [<samp>(f8d3d)</samp>](https://togithub.com/vitest-dev/vitest/commit/f8d3d22e)
-   **browser**: Allow injecting scripts  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5656](https://togithub.com/vitest-dev/vitest/issues/5656) [<samp>(21e58)</samp>](https://togithub.com/vitest-dev/vitest/commit/21e58bd8)
-   **reporter**: Support `includeConsoleOutput` and `addFileAttribute` in junit  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5659](https://togithub.com/vitest-dev/vitest/issues/5659) [<samp>(2f913)</samp>](https://togithub.com/vitest-dev/vitest/commit/2f913222)
-   **ui**: Sort items by file name  -  by [@&#8203;btea](https://togithub.com/btea) in [https://github.com/vitest-dev/vitest/issues/5652](https://togithub.com/vitest-dev/vitest/issues/5652) [<samp>(1f726)</samp>](https://togithub.com/vitest-dev/vitest/commit/1f7268fa)

#####    🐞 Bug Fixes

-   Keep order of arguments for .each in custom task collectors  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5640](https://togithub.com/vitest-dev/vitest/issues/5640) [<samp>(7d57c)</samp>](https://togithub.com/vitest-dev/vitest/commit/7d57c116)
-   Call `resolveId('vitest')` after `buildStart`  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5646](https://togithub.com/vitest-dev/vitest/issues/5646) [<samp>(f5faf)</samp>](https://togithub.com/vitest-dev/vitest/commit/f5faf423)
-   Hash the name of the file when caching  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5654](https://togithub.com/vitest-dev/vitest/issues/5654) [<samp>(c9e68)</samp>](https://togithub.com/vitest-dev/vitest/commit/c9e68ced)
-   Don't panic on empty files in node_modules  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) [<samp>(40c29)</samp>](https://togithub.com/vitest-dev/vitest/commit/40c299fe)
-   Use `toJSON` for error serialization  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5526](https://togithub.com/vitest-dev/vitest/issues/5526) [<samp>(19a21)</samp>](https://togithub.com/vitest-dev/vitest/commit/19a21e49)
-   **coverage**:
    -   Exclude `*.test-d.*` by default  -  by [@&#8203;MindfulPol](https://togithub.com/MindfulPol) in [https://github.com/vitest-dev/vitest/issues/5634](https://togithub.com/vitest-dev/vitest/issues/5634) [<samp>(bfe8a)</samp>](https://togithub.com/vitest-dev/vitest/commit/bfe8ad9d)
    -   Apply `vite-node`'s wrapper only to executed files  -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5642](https://togithub.com/vitest-dev/vitest/issues/5642) [<samp>(c9883)</samp>](https://togithub.com/vitest-dev/vitest/commit/c9883f3e)
-   **vm**:
    -   Support network imports  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5610](https://togithub.com/vitest-dev/vitest/issues/5610) [<samp>(103a6)</samp>](https://togithub.com/vitest-dev/vitest/commit/103a6002)

#####    🏎 Performance

-   Improve performance of forks pool  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5592](https://togithub.com/vitest-dev/vitest/issues/5592) [<samp>(d8304)</samp>](https://togithub.com/vitest-dev/vitest/commit/d8304bb4)
-   Unnecessary rpc call when coverage is disabled  -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5658](https://togithub.com/vitest-dev/vitest/issues/5658) [<samp>(c5712)</samp>](https://togithub.com/vitest-dev/vitest/commit/c571276a)

#####     [View changes on GitHub](https://togithub.com/vitest-dev/vitest/compare/v1.5.3...v1.6.0)

### [`v1.5.3`](https://togithub.com/vitest-dev/vitest/releases/tag/v1.5.3)

[Compare Source](https://togithub.com/vitest-dev/vitest/compare/v1.5.2...v1.5.3)

#####    🐞 Bug Fixes

-   Use package.json name for a workspace project if not provided  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5608](https://togithub.com/vitest-dev/vitest/issues/5608) [<samp>(48fba)</samp>](https://togithub.com/vitest-dev/vitest/commit/48fba190)
-   Backport jest iterable equality within object  -  by [@&#8203;sukovanej](https://togithub.com/sukovanej) in [https://github.com/vitest-dev/vitest/issues/5621](https://togithub.com/vitest-dev/vitest/issues/5621) [<samp>(30e5d)</samp>](https://togithub.com/vitest-dev/vitest/commit/30e5dc1b)
-   **browser**: Support benchmark  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5622](https://togithub.com/vitest-dev/vitest/issues/5622) [<samp>(becab)</samp>](https://togithub.com/vitest-dev/vitest/commit/becabb5e)
-   **reporter**: Use default error formatter for JUnit  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5629](https://togithub.com/vitest-dev/vitest/issues/5629) [<samp>(20060)</samp>](https://togithub.com/vitest-dev/vitest/commit/200609cc)

#####     [View changes on GitHub](https://togithub.com/vitest-dev/vitest/compare/v1.5.2...v1.5.3)

### [`v1.5.2`](https://togithub.com/vitest-dev/vitest/releases/tag/v1.5.2)

[Compare Source](https://togithub.com/vitest-dev/vitest/compare/v1.5.1...v1.5.2)

#####    🐞 Bug Fixes

-   Check for null before storing in weakmap  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) [<samp>(ce368)</samp>](https://togithub.com/vitest-dev/vitest/commit/ce368457)

#####     [View changes on GitHub](https://togithub.com/vitest-dev/vitest/compare/v1.5.1...v1.5.2)

### [`v1.5.1`](https://togithub.com/vitest-dev/vitest/releases/tag/v1.5.1)

[Compare Source](https://togithub.com/vitest-dev/vitest/compare/v1.5.0...v1.5.1)

#####    🚀 Features

-   **api**: `startVitest()` to accept `stdout` and `stdin`  -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5493](https://togithub.com/vitest-dev/vitest/issues/5493) [<samp>(780b1)</samp>](https://togithub.com/vitest-dev/vitest/commit/780b187f)
    -   This is listed as a feature, but it doesn't increase the minor version because `startVitest` API is experimental and doesn't follow semver.

#####    🐞 Bug Fixes

-   Close vite servers on all resolved projects  -  by [@&#8203;surc54](https://togithub.com/surc54) in [https://github.com/vitest-dev/vitest/issues/5544](https://togithub.com/vitest-dev/vitest/issues/5544) [<samp>(413ec)</samp>](https://togithub.com/vitest-dev/vitest/commit/413ec5e6)
-   Fix default `import.meta.env.PROD: false`  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5561](https://togithub.com/vitest-dev/vitest/issues/5561) [<samp>(9c649)</samp>](https://togithub.com/vitest-dev/vitest/commit/9c64967f)
-   Resolve cwd correctly when initiating projects  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5582](https://togithub.com/vitest-dev/vitest/issues/5582) [<samp>(ec9d7)</samp>](https://togithub.com/vitest-dev/vitest/commit/ec9d7c93)
-   Always run `onTestFinished` in reverse order  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5598](https://togithub.com/vitest-dev/vitest/issues/5598) [<samp>(23f29)</samp>](https://togithub.com/vitest-dev/vitest/commit/23f29cea)
-   **browser**:
    -   Disable `fileParallelism` by default on browser pool  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5528](https://togithub.com/vitest-dev/vitest/issues/5528) [<samp>(5c69f)</samp>](https://togithub.com/vitest-dev/vitest/commit/5c69f3f5)
    -   Dispose tester iframe on done  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5595](https://togithub.com/vitest-dev/vitest/issues/5595) [<samp>(b2135)</samp>](https://togithub.com/vitest-dev/vitest/commit/b2135710)
-   **coverage**:
    -   Fix bundling of `v8-to-istanbul`  -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5549](https://togithub.com/vitest-dev/vitest/issues/5549) [<samp>(df6a4)</samp>](https://togithub.com/vitest-dev/vitest/commit/df6a4328)
    -   Prevent crash when `cleanOnRerun` is disabled  -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5540](https://togithub.com/vitest-dev/vitest/issues/5540) [<samp>(ea3c1)</samp>](https://togithub.com/vitest-dev/vitest/commit/ea3c16e4)
    -   `thresholds` to compare files relative to root  -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5574](https://togithub.com/vitest-dev/vitest/issues/5574) [<samp>(80265)</samp>](https://togithub.com/vitest-dev/vitest/commit/80265b40)
-   **expect**:
    -   Fix `toEqual` and `toMatchObject` with circular references  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5535](https://togithub.com/vitest-dev/vitest/issues/5535) [<samp>(9e641)</samp>](https://togithub.com/vitest-dev/vitest/commit/9e6417c9)
-   **vitest**:
    -   Fix false positive file filter match with leading slash  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5578](https://togithub.com/vitest-dev/vitest/issues/5578) [<samp>(316eb)</samp>](https://togithub.com/vitest-dev/vitest/commit/316eb739)
    -   Watch the output directory correctly  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5584](https://togithub.com/vitest-dev/vitest/issues/5584) [<samp>(e40f9)</samp>](https://togithub.com/vitest-dev/vitest/commit/e40f9924)
    -   StubEnv casts boolean on PROD/SSR/DEV  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5590](https://togithub.com/vitest-dev/vitest/issues/5590) [<samp>(4da88)</samp>](https://togithub.com/vitest-dev/vitest/commit/4da88045)

#####     [View changes on GitHub](https://togithub.com/vitest-dev/vitest/compare/v1.5.0...v1.5.1)

### [`v1.5.0`](https://togithub.com/vitest-dev/vitest/releases/tag/v1.5.0)

[Compare Source](https://togithub.com/vitest-dev/vitest/compare/v1.4.0...v1.5.0)

#####    🚀 Features

-   Add configuration for diff truncation  -  by [@&#8203;willieho](https://togithub.com/willieho) in [https://github.com/vitest-dev/vitest/issues/5073](https://togithub.com/vitest-dev/vitest/issues/5073) and [https://github.com/vitest-dev/vitest/issues/5333](https://togithub.com/vitest-dev/vitest/issues/5333) [<samp>(6797b)</samp>](https://togithub.com/vitest-dev/vitest/commit/6797b041)
-   Remove unrelated noise from diff for toMatchObject()  -  by [@&#8203;geersch](https://togithub.com/geersch) in [https://github.com/vitest-dev/vitest/issues/5364](https://togithub.com/vitest-dev/vitest/issues/5364) [<samp>(99276)</samp>](https://togithub.com/vitest-dev/vitest/commit/99276399)
-   Allow custom host for --inspect and --inspect-brk  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5509](https://togithub.com/vitest-dev/vitest/issues/5509) [<samp>(61572)</samp>](https://togithub.com/vitest-dev/vitest/commit/6157282c)
-   **coverage**: V8 to ignore empty lines, comments, types  -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5457](https://togithub.com/vitest-dev/vitest/issues/5457) [<samp>(10b89)</samp>](https://togithub.com/vitest-dev/vitest/commit/10b89713)

#####    🐞 Bug Fixes

-   `describe` calls not taking generic type parameters  -  by [@&#8203;aryaemami59](https://togithub.com/aryaemami59) in [https://github.com/vitest-dev/vitest/issues/5415](https://togithub.com/vitest-dev/vitest/issues/5415) [<samp>(16bac)</samp>](https://togithub.com/vitest-dev/vitest/commit/16bacfab)
-   Prevent hang when `process` is mocked  -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5430](https://togithub.com/vitest-dev/vitest/issues/5430) [<samp>(0ec4d)</samp>](https://togithub.com/vitest-dev/vitest/commit/0ec4d0e0)
-   Don't check for "node:internal/console/" in console interceptor in case the environment is not Node.js  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) [<samp>(87d36)</samp>](https://togithub.com/vitest-dev/vitest/commit/87d36a7a)
-   The value received by toMatch should be a string  -  by [@&#8203;btea](https://togithub.com/btea) in [https://github.com/vitest-dev/vitest/issues/5428](https://togithub.com/vitest-dev/vitest/issues/5428) [<samp>(67485)</samp>](https://togithub.c

</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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM0MC4xMCIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSJ9-->
2024-05-07 10:30:58 +00:00
Brooooooklyn
40bea689b1 chore: upgrade playwright (#6815) 2024-05-07 09:55:27 +00:00
darkskygit
8e0a0a7f02 fix: wait activated event (#6814) 2024-05-07 09:44:38 +00:00
EYHN
35ce4adffe fix(core): fix error when server not support ai (#6796) 2024-05-07 08:25:27 +00:00
renovate
a0e0b6b53b chore: bump up rustc version to v1.78.0 (#6813)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rustc](https://togithub.com/rust-lang/rust) | minor | `1.77.2` -> `1.78.0` |

---

### Release Notes

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

### [`v1.78.0`](https://togithub.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1780-2024-05-02)

[Compare Source](https://togithub.com/rust-lang/rust/compare/1.77.2...1.78.0)

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

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

## Language

-   [Stabilize `#[cfg(target_abi = ...)]`](https://togithub.com/rust-lang/rust/pull/119590/)
-   [Stabilize the `#[diagnostic]` namespace and `#[diagnostic::on_unimplemented]` attribute](https://togithub.com/rust-lang/rust/pull/119888/)
-   [Make async-fn-in-trait implementable with concrete signatures](https://togithub.com/rust-lang/rust/pull/120103/)
-   [Make matching on NaN a hard error, and remove the rest of `illegal_floating_point_literal_pattern`](https://togithub.com/rust-lang/rust/pull/116284/)
-   [static mut: allow mutable reference to arbitrary types, not just slices and arrays](https://togithub.com/rust-lang/rust/pull/117614/)
-   [Extend `invalid_reference_casting` to include references casting to bigger memory layout](https://togithub.com/rust-lang/rust/pull/118983/)
-   [Add `non_contiguous_range_endpoints` lint for singleton gaps after exclusive ranges](https://togithub.com/rust-lang/rust/pull/118879/)
-   [Add `wasm_c_abi` lint for use of older wasm-bindgen versions](https://togithub.com/rust-lang/rust/pull/117918/)
    This lint currently only works when using Cargo.
-   [Update `indirect_structural_match` and `pointer_structural_match` lints to match RFC](https://togithub.com/rust-lang/rust/pull/120423/)
-   [Make non-`PartialEq`-typed consts as patterns a hard error](https://togithub.com/rust-lang/rust/pull/120805/)
-   [Split `refining_impl_trait` lint into `_reachable`, `_internal` variants](https://togithub.com/rust-lang/rust/pull/121720/)
-   [Remove unnecessary type inference when using associated types inside of higher ranked `where`-bounds](https://togithub.com/rust-lang/rust/pull/119849)
-   [Weaken eager detection of cyclic types during type inference](https://togithub.com/rust-lang/rust/pull/119989)
-   [`trait Trait: Auto {}`: allow upcasting from `dyn Trait` to `dyn Auto`](https://togithub.com/rust-lang/rust/pull/119338)

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

## Compiler

-   [Made `INVALID_DOC_ATTRIBUTES` lint deny by default](https://togithub.com/rust-lang/rust/pull/111505/)
-   [Increase accuracy of redundant `use` checking](https://togithub.com/rust-lang/rust/pull/117772/)
-   [Suggest moving definition if non-found macro_rules! is defined later](https://togithub.com/rust-lang/rust/pull/121130/)
-   [Lower transmutes from int to pointer type as gep on null](https://togithub.com/rust-lang/rust/pull/121282/)

Target changes:

-   [Windows tier 1 targets now require at least Windows 10](https://togithub.com/rust-lang/rust/pull/115141/)
    -   [Enable CMPXCHG16B, SSE3, SAHF/LAHF and 128-bit Atomics in tier 1 Windows](https://togithub.com/rust-lang/rust/pull/120820/)
-   [Add `wasm32-wasip1` tier 2 (without host tools) target](https://togithub.com/rust-lang/rust/pull/120468/)
-   [Add `wasm32-wasip2` tier 3 target](https://togithub.com/rust-lang/rust/pull/119616/)
-   [Rename `wasm32-wasi-preview1-threads` to `wasm32-wasip1-threads`](https://togithub.com/rust-lang/rust/pull/122170/)
-   [Add `arm64ec-pc-windows-msvc` tier 3 target](https://togithub.com/rust-lang/rust/pull/119199/)
-   [Add `armv8r-none-eabihf` tier 3 target for the Cortex-R52](https://togithub.com/rust-lang/rust/pull/110482/)
-   [Add `loongarch64-unknown-linux-musl` tier 3 target](https://togithub.com/rust-lang/rust/pull/121832/)

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

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

## Libraries

-   [Bump Unicode to version 15.1.0, regenerate tables](https://togithub.com/rust-lang/rust/pull/120777/)
-   [Make align_offset, align_to well-behaved in all cases](https://togithub.com/rust-lang/rust/pull/121201/)
-   [PartialEq, PartialOrd: document expectations for transitive chains](https://togithub.com/rust-lang/rust/pull/115386/)
-   [Optimize away poison guards when std is built with panic=abort](https://togithub.com/rust-lang/rust/pull/100603/)
-   [Replace pthread `RwLock` with custom implementation](https://togithub.com/rust-lang/rust/pull/110211/)
-   [Implement unwind safety for Condvar on all platforms](https://togithub.com/rust-lang/rust/pull/121768/)
-   [Add ASCII fast-path for `char::is_grapheme_extended`](https://togithub.com/rust-lang/rust/pull/121138/)

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

## Stabilized APIs

-   [`impl Read for &Stdin`](https://doc.rust-lang.org/stable/std/io/struct.Stdin.html#impl-Read-for-%26Stdin)
-   [Accept non `'static` lifetimes for several `std::error::Error` related implementations](https://togithub.com/rust-lang/rust/pull/113833/)
-   [Make `impl<Fd: AsFd>` impl take `?Sized`](https://togithub.com/rust-lang/rust/pull/114655/)
-   [`impl From<TryReserveError> for io::Error`](https://doc.rust-lang.org/stable/std/io/struct.Error.html#impl-From%3CTryReserveError%3E-for-Error)

These APIs are now stable in const contexts:

-   [`Barrier::new()`](https://doc.rust-lang.org/stable/std/sync/struct.Barrier.html#method.new)

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

## Cargo

-   [Stabilize lockfile v4](https://togithub.com/rust-lang/cargo/pull/12852/)
-   [Respect `rust-version` when generating lockfile](https://togithub.com/rust-lang/cargo/pull/12861/)
-   [Control `--charset` via auto-detecting config value](https://togithub.com/rust-lang/cargo/pull/13337/)
-   [Support `target.<triple>.rustdocflags` officially](https://togithub.com/rust-lang/cargo/pull/13197/)
-   [Stabilize global cache data tracking](https://togithub.com/rust-lang/cargo/pull/13492/)

<a id="1.78.0-Misc"></a>

## Misc

-   [rustdoc: add `--test-builder-wrapper` arg to support wrappers such as RUSTC_WRAPPER when building doctests](https://togithub.com/rust-lang/rust/pull/114651/)

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

## Compatibility Notes

-   [Many unsafe precondition checks now run for user code with debug assertions enabled](https://togithub.com/rust-lang/rust/pull/120594/)
    This change helps users catch undefined behavior in their code, though the details of how much is checked are generally not stable.
-   [riscv only supports split_debuginfo=off for now](https://togithub.com/rust-lang/rust/pull/120518/)
-   [Consistently check bounds on hidden types of `impl Trait`](https://togithub.com/rust-lang/rust/pull/121679)
-   [Change equality of higher ranked types to not rely on subtyping](https://togithub.com/rust-lang/rust/pull/118247)
-   [When called, additionally check bounds on normalized function return type](https://togithub.com/rust-lang/rust/pull/118882)
-   [Expand coverage for `arithmetic_overflow` lint](https://togithub.com/rust-lang/rust/pull/119432/)
-   [Fix detection of potential interior mutability in `const` initializers](https://togithub.com/rust-lang/rust/issues/121250)
    This code was accidentally accepted. The fix can break generic code that borrows a value of unknown type,
    as there is currently no way to declare "this type has no interior mutability". In the future, stabilizing
    the [`Freeze` trait](https://togithub.com/rust-lang/rust/issues/121675) will allow proper support for such code.

<a id="1.78.0-Internal-Changes"></a>

## Internal Changes

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

-   [Update to LLVM 18](https://togithub.com/rust-lang/rust/pull/120055/)
-   [Build `rustc` with 1CGU on `x86_64-pc-windows-msvc`](https://togithub.com/rust-lang/rust/pull/112267/)
-   [Build `rustc` with 1CGU on `x86_64-apple-darwin`](https://togithub.com/rust-lang/rust/pull/112268/)
-   [Introduce `run-make` V2 infrastructure, a `run_make_support` library and port over 2 tests as example](https://togithub.com/rust-lang/rust/pull/113026/)
-   [Windows: Implement condvar, mutex and rwlock using futex](https://togithub.com/rust-lang/rust/pull/121956/)

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ0YXJnZXRCcmFuY2giOiJjYW5hcnkiLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
2024-05-07 08:14:26 +00:00
pengx17
411f6ddf07 fix: tab switcher on windows desktop (#6812)
![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/f33388aa-cc2d-417f-a742-86ebd74e3d5a.png)
2024-05-07 07:58:13 +00:00
forehalo
7041991967 fix(server): allow promotion codes if no discount applied (#6810) 2024-05-07 07:44:41 +00:00
Brooooooklyn
b2b99ab9df ci: add rust-toolchain auto update config (#6794) 2024-05-07 07:31:41 +00:00
CatsJuice
e7483c7914 fix(core): correct ai related copywritting (#6799) 2024-05-07 07:19:53 +00:00
EYHN
61d0e14c8b fix(core): fix too many subscription request (#6809) 2024-05-07 07:07:28 +00:00
JimmFly
eac55fe1c1 feat(core): add multiDelete to trash page (#6798)
close #6739

https://github.com/toeverything/AFFiNE/assets/102217452/b1779cdf-f617-4188-ad29-70ec1695af1b
2024-05-07 06:54:59 +00:00
EYHN
4751081919 chore: fix blocksuite changelog commit range (#6791) 2024-05-07 06:43:54 +00:00
donteatfriedrice
ee9e8bf56c feat: bump blocksuite (#6797)
## Features

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6973 @donteatfriedrice

## Refactor

## Misc
2024-05-07 05:48:06 +00:00
Brooooooklyn
d76a635b00 chore(core): handle the telemetry warnings in console (#6793) 2024-05-07 04:28:34 +00:00
donteatfriedrice
6cd0c7cd11 feat: bump blocksuite (#6789)
## Features

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6971 @donteatfriedrice

## Refactor
- https://github.com/toeverything/BlockSuite/pull/6970 @fundon

## Misc
2024-05-07 04:01:18 +00:00
pengx17
12806b0e7b fix: do not create hash in frontend (#6788)
blob is already hashed in 6fdf45d4d0/packages/backend/server/src/plugins/copilot/resolver.ts (L294)
2024-05-07 03:50:31 +00:00
renovate
82d4aa8dff chore: bump up nrwl monorepo to v19 (major) (#6783)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nx/vite](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/vite)) | [`18.2.4` -> `19.0.0`](https://renovatebot.com/diffs/npm/@nx%2fvite/18.2.4/19.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nx%2fvite/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nx%2fvite/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nx%2fvite/18.2.4/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nx%2fvite/18.2.4/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [nx](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/nx)) | [`^18.2.4` -> `^19.0.0`](https://renovatebot.com/diffs/npm/nx/18.3.2/19.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nx/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nx/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nx/18.3.2/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nx/18.3.2/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nrwl/nx (@&#8203;nx/vite)</summary>

### [`v19.0.0`](https://togithub.com/nrwl/nx/releases/tag/19.0.0)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.3.4...19.0.0)

### 19.0.0 (2024-05-06)

##### 🚀 Features

-   **bundling:** upgrade rollup to v4 ([#&#8203;22656](https://togithub.com/nrwl/nx/pull/22656))
-   **core:** load native files from tmp location instead of node_modules ([#&#8203;22648](https://togithub.com/nrwl/nx/pull/22648))
-   **core:** add root level forwardAllArgs ([#&#8203;22753](https://togithub.com/nrwl/nx/pull/22753))
-   **core:** add API entrypoint to register metadata ([#&#8203;22773](https://togithub.com/nrwl/nx/pull/22773))
-   **core:** validate that outputs is an array of strings ([#&#8203;22371](https://togithub.com/nrwl/nx/pull/22371))
-   **core:** cleanup for v19 ([#&#8203;22993](https://togithub.com/nrwl/nx/pull/22993))
-   **gradle:** add ci-workflow generator ([#&#8203;23125](https://togithub.com/nrwl/nx/pull/23125))
-   **graph:** add loading spinner on project details ([#&#8203;23023](https://togithub.com/nrwl/nx/pull/23023))
-   **graph:** add target groups and technology icon ([#&#8203;22839](https://togithub.com/nrwl/nx/pull/22839))
-   **graph:** show partial project graph & errors in graph app ([#&#8203;22838](https://togithub.com/nrwl/nx/pull/22838))
-   **graph:** enable watch mode by default ([#&#8203;23092](https://togithub.com/nrwl/nx/pull/23092))
-   **graph:** show tooltips that were previously hidden due to upublished docs ([#&#8203;23099](https://togithub.com/nrwl/nx/pull/23099))
-   **graph:** log errors in console in graph watch mode ([#&#8203;23136](https://togithub.com/nrwl/nx/pull/23136))
-   **js:** add swc cli options --strip-leading-paths ([#&#8203;22856](https://togithub.com/nrwl/nx/pull/22856))
-   **linter:** add convert-to-inferred migration generator ([#&#8203;23142](https://togithub.com/nrwl/nx/pull/23142))
-   **misc:** v19 cleanup for Nx plugins ([#&#8203;23104](https://togithub.com/nrwl/nx/pull/23104))
-   **nextjs:** Add https option for custom server ([#&#8203;22921](https://togithub.com/nrwl/nx/pull/22921))
-   **nx-dev:** new main navigation menu ([#&#8203;22829](https://togithub.com/nrwl/nx/pull/22829))
-   **nx-dev:** disable banner on home page ([#&#8203;22992](https://togithub.com/nrwl/nx/pull/22992))
-   **nx-dev:** add nx blog ([#&#8203;22828](https://togithub.com/nrwl/nx/pull/22828))
-   **nx-dev:** add ui-enterprise library ([#&#8203;23086](https://togithub.com/nrwl/nx/pull/23086))
-   **react:** support react 18.3.1 ([#&#8203;23166](https://togithub.com/nrwl/nx/pull/23166))
-   **react-native:** upgrade react native to 0.72.6 ([#&#8203;22729](https://togithub.com/nrwl/nx/pull/22729))
-   **repo:** split e2e tests ([#&#8203;22927](https://togithub.com/nrwl/nx/pull/22927))
-   **testing:** make playwright default e2e test runner option ([#&#8203;22511](https://togithub.com/nrwl/nx/pull/22511))
-   **testing:** add playwright generator to convert from executors to plugin ([#&#8203;22784](https://togithub.com/nrwl/nx/pull/22784))
-   **testing:** add convert-to-inferred migration generator for cypress ([#&#8203;22884](https://togithub.com/nrwl/nx/pull/22884))
-   **webpack:** change plugin import paths to speed up config loading ([#&#8203;23021](https://togithub.com/nrwl/nx/pull/23021))

##### 🩹 Fixes

-   **angular:** fix loading postcss configuration in ng-packagr executors ([#&#8203;22900](https://togithub.com/nrwl/nx/pull/22900))
-   **angular:** ensure buildable libraries in-process tsconfig file extends from the correct path ([#&#8203;23165](https://togithub.com/nrwl/nx/pull/23165))
-   **bundling:** handle circular dependencies in [@&#8203;nx/esbuild](https://togithub.com/nx/esbuild) getExtraDependencies ([#&#8203;22644](https://togithub.com/nrwl/nx/pull/22644))
-   **core:** repair sourcemap creation in createNodes ([#&#8203;22851](https://togithub.com/nrwl/nx/pull/22851))
-   **core:** load config util supports absolute paths on windows ([#&#8203;22837](https://togithub.com/nrwl/nx/pull/22837))
-   **core:** keep plugin workers until main process shutdown ([#&#8203;22860](https://togithub.com/nrwl/nx/pull/22860))
-   **core:** handle schema validation errors running commands directly ([#&#8203;22864](https://togithub.com/nrwl/nx/pull/22864))
-   **core:** forward args provided to the nx add command to the invoked init generator ([#&#8203;22855](https://togithub.com/nrwl/nx/pull/22855))
-   **core:** fix hashing of external dependencies ([#&#8203;22865](https://togithub.com/nrwl/nx/pull/22865))
-   **core:** group command exit listeners to avoid warning ([#&#8203;22892](https://togithub.com/nrwl/nx/pull/22892))
-   **core:** handle plugin errors from isolation correctly ([#&#8203;22890](https://togithub.com/nrwl/nx/pull/22890))
-   **core:** disable pty on windows until stable ([#&#8203;22910](https://togithub.com/nrwl/nx/pull/22910))
-   **core:** fix cursor being hidden and process shutdown for ctrl c ([#&#8203;22895](https://togithub.com/nrwl/nx/pull/22895))
-   **core:** different commands should not be considered compatible targets ([#&#8203;22863](https://togithub.com/nrwl/nx/pull/22863))
-   **core:** fix pnpm install order on ci workflows ([#&#8203;22580](https://togithub.com/nrwl/nx/pull/22580))
-   **core:** workspace context glob respects exclude ([#&#8203;22939](https://togithub.com/nrwl/nx/pull/22939))
-   **core:** handle events that do not have paths ([#&#8203;22947](https://togithub.com/nrwl/nx/pull/22947))
-   **core:** fix exclude for empty array ([#&#8203;22951](https://togithub.com/nrwl/nx/pull/22951))
-   **core:** move a few api points to return root maps directly ([#&#8203;22949](https://togithub.com/nrwl/nx/pull/22949))
-   **core:** regression register ts transpiler for local plugin ([#&#8203;22964](https://togithub.com/nrwl/nx/pull/22964))
-   **core:** handle created directories when watching on linux ([#&#8203;22980](https://togithub.com/nrwl/nx/pull/22980))
-   **core:** ensure create nodes functions are properly parallelized ([#&#8203;23005](https://togithub.com/nrwl/nx/pull/23005))
-   **core:** nxComponentTestingPreset should not expose bundler option ([#&#8203;23009](https://togithub.com/nrwl/nx/pull/23009))
-   **core:** ensure include and excluded return from plugin worker ([#&#8203;23032](https://togithub.com/nrwl/nx/pull/23032))
-   **core:** read nx.json in the DaemonClient constructor instead of the module ([#&#8203;23033](https://togithub.com/nrwl/nx/pull/23033))
-   **core:** recommend nx reset when graph errors and print error in da… ([#&#8203;23014](https://togithub.com/nrwl/nx/pull/23014))
-   **core:** affect all projects when nx.json is touched ([#&#8203;23036](https://togithub.com/nrwl/nx/pull/23036))
-   **core:** improve performance of pnpm lock file parsing ([#&#8203;23017](https://togithub.com/nrwl/nx/pull/23017))
-   **core:** prevent device status report from being printed during pty execution ([#&#8203;23039](https://togithub.com/nrwl/nx/pull/23039))
-   **core:** ensure daemon socket dir exists when specified in env ([#&#8203;23071](https://togithub.com/nrwl/nx/pull/23071))
-   **core:** do not forward --updatePackageScripts flag to init generators that are not from nx core plugins ([#&#8203;23064](https://togithub.com/nrwl/nx/pull/23064))
-   **core:** local plugins should be able to use {projectRoot} in options block ([#&#8203;23068](https://togithub.com/nrwl/nx/pull/23068))
-   **core:** add import for `performance` to increase compatibility ([#&#8203;23109](https://togithub.com/nrwl/nx/pull/23109))
-   **core:** align padding for output with failed tasks ([#&#8203;23119](https://togithub.com/nrwl/nx/pull/23119))
-   **core:** ensure project with name undefined is not created ([#&#8203;23097](https://togithub.com/nrwl/nx/pull/23097))
-   **core:** catch workspace validity check errors ([#&#8203;23138](https://togithub.com/nrwl/nx/pull/23138))
-   **core:** remove obsolete git track from ci generators ([#&#8203;23134](https://togithub.com/nrwl/nx/pull/23134))
-   **core:** projectName should not be interpolated as undefined ([#&#8203;23145](https://togithub.com/nrwl/nx/pull/23145))
-   **core:** forward process execArgv when using the native runner ([#&#8203;23195](https://togithub.com/nrwl/nx/pull/23195))
-   **core:** ensure setting up nx cloud in nx migrate using the generator from the installed latest version ([#&#8203;23194](https://togithub.com/nrwl/nx/pull/23194))
-   **devkit:** run callback for forEachProjectConfig when target.options is undefined ([#&#8203;23143](https://togithub.com/nrwl/nx/pull/23143))
-   **devkit:** executor-to-plugin-migrator should add // targets hint ([#&#8203;23167](https://togithub.com/nrwl/nx/pull/23167))
-   **devkit:** check if includes is actually necessary ([#&#8203;23181](https://togithub.com/nrwl/nx/pull/23181))
-   **gradle:** change gradle command to be relative path ([#&#8203;22963](https://togithub.com/nrwl/nx/pull/22963))
-   **gradle:** should skip println in project report ([#&#8203;22862](https://togithub.com/nrwl/nx/pull/22862))
-   **gradle:** get gradlew path with projectRoot joins workspaceRoot ([#&#8203;22988](https://togithub.com/nrwl/nx/pull/22988))
-   **gradle:** fix gradlew exec path for root project ([#&#8203;23094](https://togithub.com/nrwl/nx/pull/23094))
-   **gradle:** fix gradle not working for spring ([#&#8203;23130](https://togithub.com/nrwl/nx/pull/23130))
-   **gradle:** add namedInputs to nx.json in gradle init ([#&#8203;23152](https://togithub.com/nrwl/nx/pull/23152))
-   **gradle:** fix gradle github ci workflow ([#&#8203;23154](https://togithub.com/nrwl/nx/pull/23154))
-   **graph:** don't listen to system theme changes in console ([#&#8203;22938](https://togithub.com/nrwl/nx/pull/22938))
-   **graph:** use class sticky for sticky header ([#&#8203;23082](https://togithub.com/nrwl/nx/pull/23082))
-   **graph:** remove dangling - and move button when PDV is rendered in console ([#&#8203;23144](https://togithub.com/nrwl/nx/pull/23144))
-   **graph:** remove redux and useState and useContext hook ([#&#8203;23085](https://togithub.com/nrwl/nx/pull/23085))
-   **graph:** add grayscale to technology icon ([#&#8203;23107](https://togithub.com/nrwl/nx/pull/23107))
-   **js:** ignore yarn corepack check when updating config ([#&#8203;23043](https://togithub.com/nrwl/nx/pull/23043))
-   **js:** typescript plugin target hashing ([#&#8203;23073](https://togithub.com/nrwl/nx/pull/23073))
-   **js:** Correct file path for cjs.js ([#&#8203;23081](https://togithub.com/nrwl/nx/pull/23081))
-   **js:** copy assets handler should handle ignore globs on windows ([#&#8203;23065](https://togithub.com/nrwl/nx/pull/23065))
-   **linter:** do not infer lint tasks for projects without files to lint ([#&#8203;22944](https://togithub.com/nrwl/nx/pull/22944))
-   **linter:** add {options.outputFile} to outputs for inferred targets ([#&#8203;23173](https://togithub.com/nrwl/nx/pull/23173))
-   **misc:** add --verbose support to nx graph ([#&#8203;22889](https://togithub.com/nrwl/nx/pull/22889))
-   **misc:** mark migration for escaping env vars as skipped in nx repair ([#&#8203;22916](https://togithub.com/nrwl/nx/pull/22916))
-   **misc:** don't clear node_modules require cache ([#&#8203;22907](https://togithub.com/nrwl/nx/pull/22907))
-   **misc:** fix cypress option in workspace preset generator ([#&#8203;22975](https://togithub.com/nrwl/nx/pull/22975))
-   **misc:** fix publish script ([#&#8203;22981](https://togithub.com/nrwl/nx/pull/22981))
-   **misc:** perf logging shouldn't be enabled twice ([#&#8203;23012](https://togithub.com/nrwl/nx/pull/23012))
-   **misc:** propogate NX_PERF_LOGGING to plugin workers ([#&#8203;23016](https://togithub.com/nrwl/nx/pull/23016))
-   **misc:** dot nx setup shouldn't include target defaults ([#&#8203;23180](https://togithub.com/nrwl/nx/pull/23180))
-   **misc:** make generated ci workflow work without nx-cloud ([#&#8203;23199](https://togithub.com/nrwl/nx/pull/23199))
-   **nextjs:** Boolean flags do not need a value ([#&#8203;23072](https://togithub.com/nrwl/nx/pull/23072))
-   **node:** e2e target fails out of the box ([#&#8203;22987](https://togithub.com/nrwl/nx/pull/22987))
-   **nx-cloud:** ensure root .env files are loaded during dte ([#&#8203;22859](https://togithub.com/nrwl/nx/pull/22859))
-   **nx-dev:** header styles fix ([#&#8203;23122](https://togithub.com/nrwl/nx/pull/23122))
-   **nx-dev:** fix project details in nx dev ([#&#8203;23175](https://togithub.com/nrwl/nx/pull/23175))
-   **react:** disable tty for next build ([#&#8203;23013](https://togithub.com/nrwl/nx/pull/23013))
-   **remix:** pin testing-library/jest-dom to compatible version ([#&#8203;23161](https://togithub.com/nrwl/nx/pull/23161))
-   **remix:** use remix-serve for static-serve ([#&#8203;23164](https://togithub.com/nrwl/nx/pull/23164))
-   **remix:** ensure default meta tags are always present for generated applications [#&#8203;23037](https://togithub.com/nrwl/nx/issues/23037) ([#&#8203;23169](https://togithub.com/nrwl/nx/pull/23169), [#&#8203;23037](https://togithub.com/nrwl/nx/issues/23037))
-   **repo:** downgrade to macos-13 in publish workflow ([#&#8203;22961](https://togithub.com/nrwl/nx/pull/22961))
-   **repo:** should ensure that unit tests are run correctly across package managers ([#&#8203;22978](https://togithub.com/nrwl/nx/pull/22978))
-   **repo:** fix pnpm version on freebsd ([#&#8203;23045](https://togithub.com/nrwl/nx/pull/23045))
-   **repo:** set version of pnpm for docker publishes ([#&#8203;23129](https://togithub.com/nrwl/nx/pull/23129))
-   **storybook:** handle inherited config correctly when identifying the framework used for inferred tasks ([#&#8203;22953](https://togithub.com/nrwl/nx/pull/22953))
-   **storybook:** allow overriding default inferred task names in storybook plugin ([#&#8203;23030](https://togithub.com/nrwl/nx/pull/23030))
-   **storybook:** do not infer a test-storybook task if [@&#8203;storybook/test-runner](https://togithub.com/storybook/test-runner) is not installed ([#&#8203;23034](https://togithub.com/nrwl/nx/pull/23034))
-   **testing:** fix jest ci target names ([#&#8203;22858](https://togithub.com/nrwl/nx/pull/22858))
-   **testing:** bust require cache in jest plugin so configs reload ([#&#8203;22893](https://togithub.com/nrwl/nx/pull/22893))
-   **testing:** fix test files pattern for jest inferred split tasks ([#&#8203;23025](https://togithub.com/nrwl/nx/pull/23025))
-   **testing:** convert-to-inferred generator should handle legacy cypress executor ([#&#8203;23151](https://togithub.com/nrwl/nx/pull/23151))
-   **testing:** convert-to-inferred generators should add includes only when needed ([#&#8203;23159](https://togithub.com/nrwl/nx/pull/23159))
-   **testing:** convert-to-inferred for cypress should handle nxE2EPreset with no options object ([#&#8203;23171](https://togithub.com/nrwl/nx/pull/23171))
-   **vue:** do not add verbatimImportSyntax to tsconfig ([#&#8203;22905](https://togithub.com/nrwl/nx/pull/22905))
-   **webpack:** should correctly normalize paths in NxWebpackPlugin ([#&#8203;23003](https://togithub.com/nrwl/nx/pull/23003))

##### ❤️  Thank You

-   Benjamin Cabanes [@&#8203;bcabanes](https://togithub.com/bcabanes)
-   Chabbey François
-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Denis Bendrikov
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Isaac Mann [@&#8203;isaacplmann](https://togithub.com/isaacplmann)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   James Henry [@&#8203;JamesHenry](https://togithub.com/JamesHenry)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Jonathan Cammisuli
-   Kyle Cannon [@&#8203;kylecannon](https://togithub.com/kylecannon)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   MaxKless [@&#8203;MaxKless](https://togithub.com/MaxKless)
-   Michal Jez [@&#8203;MJez29](https://togithub.com/MJez29)
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)
-   Richard Roozenboom [@&#8203;Roozenboom](https://togithub.com/Roozenboom)

### [`v18.3.4`](https://togithub.com/nrwl/nx/releases/tag/18.3.4)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.3.3...18.3.4)

#### 18.3.4 (2024-04-25)

##### 🚀 Features

-   **core:** add root level forwardAllArgs ([#&#8203;22753](https://togithub.com/nrwl/nx/pull/22753))

##### 🩹 Fixes

-   **core:** different commands should not be considered compatible targets ([#&#8203;22863](https://togithub.com/nrwl/nx/pull/22863))
-   **core:** fix pnpm install order on ci workflows ([#&#8203;22580](https://togithub.com/nrwl/nx/pull/22580))
-   **core:** workspace context glob respects exclude ([#&#8203;22939](https://togithub.com/nrwl/nx/pull/22939))
-   **core:** handle events that do not have paths ([#&#8203;22947](https://togithub.com/nrwl/nx/pull/22947))
-   **core:** fix exclude for empty array ([#&#8203;22951](https://togithub.com/nrwl/nx/pull/22951))
-   **core:** move a few api points to return root maps directly ([#&#8203;22949](https://togithub.com/nrwl/nx/pull/22949))
-   **core:** regression register ts transpiler for local plugin ([#&#8203;22964](https://togithub.com/nrwl/nx/pull/22964))
-   **core:** handle created directories when watching on linux ([#&#8203;22980](https://togithub.com/nrwl/nx/pull/22980))
-   **core:** ensure create nodes functions are properly parallelized ([#&#8203;23005](https://togithub.com/nrwl/nx/pull/23005))
-   **gradle:** change gradle command to be relative path ([#&#8203;22963](https://togithub.com/nrwl/nx/pull/22963))
-   **gradle:** should skip println in project report ([#&#8203;22862](https://togithub.com/nrwl/nx/pull/22862))
-   **gradle:** get gradlew path with projectRoot joins workspaceRoot ([#&#8203;22988](https://togithub.com/nrwl/nx/pull/22988))
-   **graph:** don't listen to system theme changes in console ([#&#8203;22938](https://togithub.com/nrwl/nx/pull/22938))
-   **linter:** do not infer lint tasks for projects without files to lint ([#&#8203;22944](https://togithub.com/nrwl/nx/pull/22944))
-   **misc:** fix publish script ([#&#8203;22981](https://togithub.com/nrwl/nx/pull/22981))
-   **misc:** perf logging shouldn't be enabled twice ([#&#8203;23012](https://togithub.com/nrwl/nx/pull/23012))
-   **node:** e2e target fails out of the box ([#&#8203;22987](https://togithub.com/nrwl/nx/pull/22987))
-   **repo:** downgrade to macos-13 in publish workflow ([#&#8203;22961](https://togithub.com/nrwl/nx/pull/22961))
-   **storybook:** handle inherited config correctly when identifying the framework used for inferred tasks ([#&#8203;22953](https://togithub.com/nrwl/nx/pull/22953))

##### ❤️  Thank You

-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Jonathan Cammisuli
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   MaxKless [@&#8203;MaxKless](https://togithub.com/MaxKless)
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)
-   Richard Roozenboom [@&#8203;Roozenboom](https://togithub.com/Roozenboom)

### [`v18.3.3`](https://togithub.com/nrwl/nx/releases/tag/18.3.3)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.3.2...18.3.3)

##### 18.3.3 (2024-04-20)

##### 🩹 Fixes

-   **angular:** fix loading postcss configuration in ng-packagr executors ([#&#8203;22900](https://togithub.com/nrwl/nx/pull/22900))
-   **core:** group command exit listeners to avoid warning ([#&#8203;22892](https://togithub.com/nrwl/nx/pull/22892))
-   **core:** handle plugin errors from isolation correctly ([#&#8203;22890](https://togithub.com/nrwl/nx/pull/22890))
-   **core:** disable pty on windows until stable ([#&#8203;22910](https://togithub.com/nrwl/nx/pull/22910))
-   **core:** fix cursor being hidden and process shutdown for ctrl c ([#&#8203;22895](https://togithub.com/nrwl/nx/pull/22895))
-   **misc:** add --verbose support to nx graph ([#&#8203;22889](https://togithub.com/nrwl/nx/pull/22889))
-   **misc:** mark migration for escaping env vars as skipped in nx repair ([#&#8203;22916](https://togithub.com/nrwl/nx/pull/22916))
-   **misc:** don't clear node_modules require cache ([#&#8203;22907](https://togithub.com/nrwl/nx/pull/22907))
-   **testing:** bust require cache in jest plugin so configs reload ([#&#8203;22893](https://togithub.com/nrwl/nx/pull/22893))
-   **vue:** do not add verbatimImportSyntax to tsconfig ([#&#8203;22905](https://togithub.com/nrwl/nx/pull/22905))

##### ❤️  Thank You

-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)

### [`v18.3.2`](https://togithub.com/nrwl/nx/releases/tag/18.3.2)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.3.1...18.3.2)

##### 18.3.2 (2024-04-18)

##### 🚀 Features

-   **core:** load native files from tmp location instead of node_modules ([#&#8203;22648](https://togithub.com/nrwl/nx/pull/22648))

##### 🩹 Fixes

-   **bundling:** handle circular dependencies in [@&#8203;nx/esbuild](https://togithub.com/nx/esbuild) getExtraDependencies ([#&#8203;22644](https://togithub.com/nrwl/nx/pull/22644))
-   **core:** load config util supports absolute paths on windows ([#&#8203;22837](https://togithub.com/nrwl/nx/pull/22837))
-   **core:** keep plugin workers until main process shutdown ([#&#8203;22860](https://togithub.com/nrwl/nx/pull/22860))
-   **core:** handle schema validation errors running commands directly ([#&#8203;22864](https://togithub.com/nrwl/nx/pull/22864))
-   **core:** forward args provided to the nx add command to the invoked init generator ([#&#8203;22855](https://togithub.com/nrwl/nx/pull/22855))
-   **core:** fix hashing of external dependencies ([#&#8203;22865](https://togithub.com/nrwl/nx/pull/22865))
-   **nx-cloud:** ensure root .env files are loaded during dte ([#&#8203;22859](https://togithub.com/nrwl/nx/pull/22859))
-   **testing:** fix jest ci target names ([#&#8203;22858](https://togithub.com/nrwl/nx/pull/22858))

##### ❤️  Thank You

-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Kyle Cannon [@&#8203;kylecannon](https://togithub.com/kylecannon)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   MaxKless [@&#8203;MaxKless](https://togithub.com/MaxKless)

### [`v18.3.1`](https://togithub.com/nrwl/nx/releases/tag/18.3.1)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.3.0...18.3.1)

#### 18.3.1 (2024-04-17)

##### 🩹 Fixes

-   **core:** repair sourcemap creation in createNodes ([#&#8203;22851](https://togithub.com/nrwl/nx/pull/22851))

##### ❤️  Thank You

-   MaxKless [@&#8203;MaxKless](https://togithub.com/MaxKless)

### [`v18.3.0`](https://togithub.com/nrwl/nx/releases/tag/18.3.0)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.2.4...18.3.0)

#### 18.3.0 (2024-04-16)

##### 🚀 Features

-   **core:** add metadata to targets ([#&#8203;22655](https://togithub.com/nrwl/nx/pull/22655))
-   **core:** list crystal plugins with nx report ([#&#8203;22649](https://togithub.com/nrwl/nx/pull/22649))
-   **core:** re-enable running plugins in isolation ([#&#8203;22527](https://togithub.com/nrwl/nx/pull/22527))
-   **core:** load root .env files on daemon ([#&#8203;22786](https://togithub.com/nrwl/nx/pull/22786))
-   **js:** add swc cli options --strip-leading-paths ([#&#8203;22193](https://togithub.com/nrwl/nx/pull/22193))
-   **js:** add swc cli options --strip-leading-paths " ([#&#8203;22193](https://togithub.com/nrwl/nx/pull/22193), [#&#8203;22832](https://togithub.com/nrwl/nx/pull/22832))
-   **misc:** non conflicting init/add flow ([#&#8203;22791](https://togithub.com/nrwl/nx/pull/22791))
-   **nuxt:** update [@&#8203;nuxt/eslint-config](https://togithub.com/nuxt/eslint-config) to a stable version ([#&#8203;22804](https://togithub.com/nrwl/nx/pull/22804))
-   **nx-dev:** link Nx Launch Conf videos ([#&#8203;22690](https://togithub.com/nrwl/nx/pull/22690))
-   **nx-dev:** remember selected tabs ([#&#8203;22699](https://togithub.com/nrwl/nx/pull/22699))
-   **nx-dev:** add contact pages ([#&#8203;22815](https://togithub.com/nrwl/nx/pull/22815))
-   **nx-dev:** banner for webinar ([#&#8203;22824](https://togithub.com/nrwl/nx/pull/22824))
-   **testing:** add ability to split jest tests ([#&#8203;22662](https://togithub.com/nrwl/nx/pull/22662))
-   **testing:** add metadata to playwright targets ([#&#8203;22768](https://togithub.com/nrwl/nx/pull/22768))
-   **vite:** migrate to latest vite-plugin-dts ([#&#8203;22614](https://togithub.com/nrwl/nx/pull/22614))

##### 🩹 Fixes

-   **angular:** prevent false positive validation due to option default value in dev-server executor ([#&#8203;22606](https://togithub.com/nrwl/nx/pull/22606))
-   **angular:** respect skipPackageJson correctly in library generator ([#&#8203;22608](https://togithub.com/nrwl/nx/pull/22608))
-   **angular:** fix @&#8203;nx/angular/src/utils entry point ([#&#8203;22609](https://togithub.com/nrwl/nx/pull/22609))
-   **angular:** fix dynamic module federation generation ([#&#8203;22724](https://togithub.com/nrwl/nx/pull/22724))
-   **angular:** respect skipPackageJson correctly across generators ([#&#8203;22777](https://togithub.com/nrwl/nx/pull/22777))
-   **angular:** execute wrapped schematics post tasks and log messages ([#&#8203;22780](https://togithub.com/nrwl/nx/pull/22780))
-   **bundling:** support exported array of options for rollup ([#&#8203;22703](https://togithub.com/nrwl/nx/pull/22703))
-   **bundling:** print errors from rollup build ([#&#8203;22707](https://togithub.com/nrwl/nx/pull/22707))
-   **bundling:** show codeframes for Rollup build errors ([#&#8203;22845](https://togithub.com/nrwl/nx/pull/22845))
-   **core:** do not assume workspace inputs cause all projects to be af… ([#&#8203;22573](https://togithub.com/nrwl/nx/pull/22573))
-   **core:** write terminal output to cache folder ([#&#8203;22673](https://togithub.com/nrwl/nx/pull/22673))
-   **core:** errors from create dependencies should show properly ([#&#8203;22695](https://togithub.com/nrwl/nx/pull/22695))
-   **core:** not passing props of run-commands to underlying command ([#&#8203;22595](https://togithub.com/nrwl/nx/pull/22595))
-   **core:** update pty version to add windows specific flags ([#&#8203;22711](https://togithub.com/nrwl/nx/pull/22711))
-   **core:** detect imports from template literals in dynamic imports ([#&#8203;22749](https://togithub.com/nrwl/nx/pull/22749))
-   **core:** attach cli args from target options explicitly with '=' ([#&#8203;22756](https://togithub.com/nrwl/nx/pull/22756))
-   **core:** fix plugin exclude option ([#&#8203;22738](https://togithub.com/nrwl/nx/pull/22738))
-   **core:** improve `isCI` to better detect other providers ([#&#8203;22694](https://togithub.com/nrwl/nx/pull/22694))
-   **core:** errors thrown when creating projects should prevent running targets ([#&#8203;22807](https://togithub.com/nrwl/nx/pull/22807))
-   **core:** use name instead of .prototype.name when comparing errors ([#&#8203;22840](https://togithub.com/nrwl/nx/pull/22840))
-   **core:** fix init logging and package.json updates ([#&#8203;22843](https://togithub.com/nrwl/nx/pull/22843))
-   **devkit:** update peer dependency on nx to include Nx 19 ([#&#8203;22811](https://togithub.com/nrwl/nx/pull/22811))
-   **js:** update jest snapshot after vite-plugin-dts bump ([#&#8203;22621](https://togithub.com/nrwl/nx/pull/22621))
-   **js:** append target when generating tmp tsconfig to prevent conflicts [#&#8203;21396](https://togithub.com/nrwl/nx/issues/21396) ([#&#8203;22671](https://togithub.com/nrwl/nx/pull/22671), [#&#8203;21396](https://togithub.com/nrwl/nx/issues/21396))
-   **js:** propagate error from child process to [@&#8203;nx/js](https://togithub.com/nx/js):node executor ([#&#8203;22705](https://togithub.com/nrwl/nx/pull/22705))
-   **js:** do not default to commonjs type field in package.json ([#&#8203;22819](https://togithub.com/nrwl/nx/pull/22819))
-   **misc:** fix optional branch tracking on ci pipeline ([#&#8203;22652](https://togithub.com/nrwl/nx/pull/22652))
-   **module-federation:** serve dynamic remotes statically in their own processes ([#&#8203;22688](https://togithub.com/nrwl/nx/pull/22688))
-   **nextjs:** Adding tailwind should work when creating an app OOTB ([#&#8203;22709](https://togithub.com/nrwl/nx/pull/22709))
-   **nuxt:** use loadConfigFile from devkit rather than [@&#8203;nuxt/kit](https://togithub.com/nuxt/kit) ([#&#8203;22571](https://togithub.com/nrwl/nx/pull/22571))
-   **nx-dev:** Update urls that are 404 ([#&#8203;22653](https://togithub.com/nrwl/nx/pull/22653))
-   **react-native:** storybook relative paths ([#&#8203;22031](https://togithub.com/nrwl/nx/pull/22031))
-   **react-native:** should ask for app name when preset is react native ([#&#8203;22761](https://togithub.com/nrwl/nx/pull/22761))
-   **react-native:** fix unable to resolve on windows ([#&#8203;22759](https://togithub.com/nrwl/nx/pull/22759))
-   **release:** respect root .npmrc registry settings for publishing ([12afa20210](https://togithub.com/nrwl/nx/commit/12afa20210))
-   **release:** do not try to interpolate packageRoot for root project ([#&#8203;22771](https://togithub.com/nrwl/nx/pull/22771))
-   **testing:** fix playwright executor uiPort option schema ([#&#8203;22610](https://togithub.com/nrwl/nx/pull/22610))
-   **testing:** app generators should create correct e2e config at generation time ([#&#8203;22565](https://togithub.com/nrwl/nx/pull/22565))
-   **vite:** ensure cache is created correctly for separate vite and vitest config files [#&#8203;22244](https://togithub.com/nrwl/nx/issues/22244) ([#&#8203;22618](https://togithub.com/nrwl/nx/pull/22618), [#&#8203;22244](https://togithub.com/nrwl/nx/issues/22244))
-   **vite:** pass cli arguments as options to vitest ([#&#8203;22355](https://togithub.com/nrwl/nx/pull/22355))
-   **webpack:** bring back previous SVG and SVGR behavior for React projects ([#&#8203;22628](https://togithub.com/nrwl/nx/pull/22628))
-   **webpack:** support standard webpack config with [@&#8203;nx/webpack](https://togithub.com/nx/webpack):dev-server ([#&#8203;22660](https://togithub.com/nrwl/nx/pull/22660))
-   **webpack:** remove url-loader from dependencies since it is replaced by asset modules ([#&#8203;22698](https://togithub.com/nrwl/nx/pull/22698))
-   **webpack:** typo for outputPath ([#&#8203;22734](https://togithub.com/nrwl/nx/pull/22734))
-   **webpack:** Should work when absolute paths are supplied as output ([#&#8203;22736](https://togithub.com/nrwl/nx/pull/22736))

##### ❤️  Thank You

-   Altan Stalker
-   arekkubaczkowski [@&#8203;arekkubaczkowski](https://togithub.com/arekkubaczkowski)
-   Austin Fahsl [@&#8203;fahslaj](https://togithub.com/fahslaj)
-   Benjamin Cabanes [@&#8203;bcabanes](https://togithub.com/bcabanes)
-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Every [@&#8203;hongxuWei](https://togithub.com/hongxuWei)
-   Isaac Mann [@&#8203;isaacplmann](https://togithub.com/isaacplmann)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Juri Strumpflohner [@&#8203;juristr](https://togithub.com/juristr)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Lucca Miranda [@&#8203;luckened](https://togithub.com/luckened)
-   MaxKless [@&#8203;MaxKless](https://togithub.com/MaxKless)
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)
-   Thomas Dekiere
-   Younes Jaaidi

</details>

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

### [`v19.0.0`](https://togithub.com/nrwl/nx/compare/18.3.4...41d21ab9ac7fa3682ba535979278bb3c4a349654)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.3.4...19.0.0)

### [`v18.3.4`](https://togithub.com/nrwl/nx/releases/tag/18.3.4)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.3.3...18.3.4)

##### 18.3.4 (2024-04-25)

##### 🚀 Features

-   **core:** add root level forwardAllArgs ([#&#8203;22753](https://togithub.com/nrwl/nx/pull/22753))

##### 🩹 Fixes

-   **core:** different commands should not be considered compatible targets ([#&#8203;22863](https://togithub.com/nrwl/nx/pull/22863))
-   **core:** fix pnpm install order on ci workflows ([#&#8203;22580](https://togithub.com/nrwl/nx/pull/22580))
-   **core:** workspace context glob respects exclude ([#&#8203;22939](https://togithub.com/nrwl/nx/pull/22939))
-   **core:** handle events that do not have paths ([#&#8203;22947](https://togithub.com/nrwl/nx/pull/22947))
-   **core:** fix exclude for empty array ([#&#8203;22951](https://togithub.com/nrwl/nx/pull/22951))
-   **core:** move a few api points to return root maps directly ([#&#8203;22949](https://togithub.com/nrwl/nx/pull/22949))
-   **core:** regression register ts transpiler for local plugin ([#&#8203;22964](https://togithub.com/nrwl/nx/pull/22964))
-   **core:** handle created directories when watching on linux ([#&#8203;22980](https://togithub.com/nrwl/nx/pull/22980))
-   **core:** ensure create nodes functions are properly parallelized ([#&#8203;23005](https://togithub.com/nrwl/nx/pull/23005))
-   **gradle:** change gradle command to be relative path ([#&#8203;22963](https://togithub.com/nrwl/nx/pull/22963))
-   **gradle:** should skip println in project report ([#&#8203;22862](https://togithub.com/nrwl/nx/pull/22862))
-   **gradle:** get gradlew path with projectRoot joins workspaceRoot ([#&#8203;22988](https://togithub.com/nrwl/nx/pull/22988))
-   **graph:** don't listen to system theme changes in console ([#&#8203;22938](https://togithub.com/nrwl/nx/pull/22938))
-   **linter:** do not infer lint tasks for projects without files to lint ([#&#8203;22944](https://togithub.com/nrwl/nx/pull/22944))
-   **misc:** fix publish script ([#&#8203;22981](https://togithub.com/nrwl/nx/pull/22981))
-   **misc:** perf logging shouldn't be enabled twice ([#&#8203;23012](https://togithub.com/nrwl/nx/pull/23012))
-   **node:** e2e target fails out of the box ([#&#8203;22987](https://togithub.com/nrwl/nx/pull/22987))
-   **repo:** downgrade to macos-13 in publish workflow ([#&#8203;22961](https://togithub.com/nrwl/nx/pull/22961))
-   **storybook:** handle inherited config correctly when identifying the framework used for inferred tasks ([#&#8203;22953](https://togithub.com/nrwl/nx/pull/22953))

##### ❤️  Thank You

-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Jonathan Cammisuli
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   MaxKless [@&#8203;MaxKless](https://togithub.com/MaxKless)
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)
-   Richard Roozenboom [@&#8203;Roozenboom](https://togithub.com/Roozenboom)

### [`v18.3.3`](https://togithub.com/nrwl/nx/releases/tag/18.3.3)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.3.2...18.3.3)

#### 18.3.3 (2024-04-20)

##### 🩹 Fixes

-   **angular:** fix loading postcss configuration in ng-packagr executors ([#&#8203;22900](https://togithub.com/nrwl/nx/pull/22900))
-   **core:** group command exit listeners to avoid warning ([#&#8203;22892](https://togithub.com/nrwl/nx/pull/22892))
-   **core:** handle plugin errors from isolation correctly ([#&#8203;22890](https://togithub.com/nrwl/nx/pull/22890))
-   **core:** disable pty on windows until stable ([#&#8203;22910](https://togithub.com/nrwl/nx/pull/22910))
-   **core:** fix cursor being hidden and process shutdown for ctrl c ([#&#8203;22895](https://togithub.com/nrwl/nx/pull/22895))
-   **misc:** add --verbose support to nx graph ([#&#8203;22889](https://togithub.com/nrwl/nx/pull/22889))
-   **misc:** mark migration for escaping env vars as skipped in nx repair ([#&#8203;22916](https://togithub.com/nrwl/nx/pull/22916))
-   **misc:** don't clear node_modules require cache ([#&#8203;22907](https://togithub.com/nrwl/nx/pull/22907))
-   **testing:** bust require cache in jest plugin so configs reload ([#&#8203;22893](https://togithub.com/nrwl/nx/pull/22893))
-   **vue:** do not add verbatimImportSyntax to tsconfig ([#&#8203;22905](https://togithub.com/nrwl/nx/pull/22905))

##### ❤️  Thank You

-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ0YXJnZXRCcmFuY2giOiJjYW5hcnkiLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
2024-05-07 03:36:08 +00:00
CatsJuice
7234e2344b feat(core): replace setting content scroll with radix ScrollArea (#6787)
Use global scroll-area style

![CleanShot 2024-05-07 at 10.58.01@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/LakojjjzZNf6ogjOVwKE/5330b59d-fea0-4b2b-a046-1740c8099a19.png)
2024-05-07 03:19:40 +00:00
EYHN
cb3e7d03dc chore: bump blocksuite (#6786)
## Features
- https://github.com/toeverything/BlockSuite/pull/6968 @fundon

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6969 @L-Sun
- https://github.com/toeverything/BlockSuite/pull/6967 @pengx17

## Refactor
- https://github.com/toeverything/BlockSuite/pull/6970 @fundon

## Misc
2024-05-07 03:03:14 +00:00
CatsJuice
f02a16513c fix(core): adjust setting sidebar's workspace avatar (#6785) 2024-05-07 02:51:33 +00:00
CatsJuice
4a74148ea3 fix(component): ensure the colorfulCallback of Avatar in different sizes behaves consistently (#6784) 2024-05-07 02:40:22 +00:00
pengx17
a5e4730a5f refactor: refine ai tracker (#6778)
upstream
https://github.com/toeverything/blocksuite/pull/6966

Added a new solution that inspect on actions event stream and adapt them into the mixpanel format.

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/2631f0dc-5626-45d5-bcaf-60987aec3c7e.png)
2024-05-06 13:34:44 +00:00
pengx17
1ac16a48bf chore: bump blocksuite (#6781)
## Features
- https://github.com/toeverything/BlockSuite/pull/6948 @undefined
- https://github.com/toeverything/BlockSuite/pull/6941 @undefined
- https://github.com/toeverything/BlockSuite/pull/6855 @undefined

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6967 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6966 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6951 @fundon
- https://github.com/toeverything/BlockSuite/pull/6960 @fundon
- https://github.com/toeverything/BlockSuite/pull/6964 @doouding
- https://github.com/toeverything/BlockSuite/pull/6958 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6961 @regischen
- https://github.com/toeverything/BlockSuite/pull/6957 @doouding
- https://github.com/toeverything/BlockSuite/pull/6959 @regischen
- https://github.com/toeverything/BlockSuite/pull/6956 @regischen
- https://github.com/toeverything/BlockSuite/pull/6954 @fundon
- https://github.com/toeverything/BlockSuite/pull/6955 @doouding
- https://github.com/toeverything/BlockSuite/pull/6953 @doouding
- https://github.com/toeverything/BlockSuite/pull/6952 @regischen
- https://github.com/toeverything/BlockSuite/pull/6942 @golok727
- https://github.com/toeverything/BlockSuite/pull/6939 @fundon
- https://github.com/toeverything/BlockSuite/pull/6940 @fundon
- https://github.com/toeverything/BlockSuite/pull/6935 @regischen
- https://github.com/toeverything/BlockSuite/pull/6930 @fundon
- https://github.com/toeverything/BlockSuite/pull/6905 @golok727
- https://github.com/toeverything/BlockSuite/pull/6931 @donteatfriedrice

## Refactor
- https://github.com/toeverything/BlockSuite/pull/6945 @shvixxl

## Misc
- https://github.com/toeverything/BlockSuite/pull/6938 @golok727
- chore: correct typo
2024-05-06 13:23:55 +00:00
darkskygit
8194cb7773 chore: update prompts (#6782) 2024-05-06 12:42:12 +00:00
forehalo
d657f4091a fix(server): do not allow registration through gql (#6775) 2024-05-06 11:11:57 +00:00
pengx17
4ea31cbb35 fix: update prompts (#6779)
fix AFF-1021
2024-05-06 10:58:56 +00:00
JimmFly
6c8e7c8c1d feat(i18n): update language resources (#6767) 2024-05-06 10:47:03 +00:00
darkskygit
13f40f435d feat: improve query performence (#6764) 2024-05-06 09:12:04 +00:00
pengx17
1303a6a8b4 fix: update prompts (find actions) (#6773)
fix AFF-1019
2024-05-06 08:29:51 +00:00
forehalo
3ee794a8f2 fix(server): do not throttle healthy checking api (#6771) 2024-05-06 06:59:50 +00:00
EYHN
527ffa6b3f feat(core): adjust ai term (#6770) 2024-05-06 06:47:06 +00:00
EYHN
94c8662ac1 feat(core): disable ai onboarding video loop (#6769) 2024-05-06 06:47:01 +00:00
EYHN
ec73f69574 fix(core): fix ai onboarding video missing (#6768) 2024-05-06 06:31:03 +00:00
CatsJuice
4aa7cafda3 fix(core): ai related copywritting fix (#6766) 2024-05-06 03:57:04 +00:00
pengx17
625249ca5b docs: update outdated docs (#6756)
fix #5171
2024-05-06 02:03:14 +00:00
forehalo
cebb841430 feat(server): add flag to disable new sign ups (#6752) 2024-04-30 15:19:30 +00:00
pengx17
91ee5e05bb fix: ai chat session handling (#6751)
fix AFF-999
upstream: https://github.com/toeverything/blocksuite/pull/6932
2024-04-30 15:08:27 +00:00
pengx17
0c175ada31 fix: remove dnd for workspace list (#6754)
fix TOV-399
2024-04-30 14:57:38 +00:00
EYHN
0a1241436f fix(templates): fix typo (#6750) 2024-04-30 08:54:24 +00:00
pengx17
5586de61fb chore: bump blocksuite (#6753)
## Features
- https://github.com/toeverything/BlockSuite/pull/6929 @pengx17

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6931 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6925 @fourdim
- https://github.com/toeverything/BlockSuite/pull/6928 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6933 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6932 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6920 @golok727
- https://github.com/toeverything/BlockSuite/pull/6927 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6923 @regischen
- https://github.com/toeverything/BlockSuite/pull/6906 @fundon

## Refactor
- https://github.com/toeverything/BlockSuite/pull/6926 @fourdim

## Misc
2024-04-30 08:40:32 +00:00
forehalo
f566457dcf test(server): payment tests (#6737) 2024-04-30 06:59:54 +00:00
pengx17
1f97437320 fix(core): input overflow issue (#6748) 2024-04-30 13:18:20 +08:00
pengx17
eb7904bf62 fix(core): prompt message tunning (#6747)
fix AFF-1003
2024-04-30 13:18:20 +08:00
EYHN
2420b2849f chore(core): remove unused module (#6744) 2024-04-30 04:58:15 +00:00
EYHN
764da784ae feat(core): add enable cloud failed notify (#6741) 2024-04-30 04:46:09 +00:00
EYHN
148e058cde refactor(core): remove once signed in event (#6740)
This once signed in event does not work properly.
2024-04-30 04:46:02 +00:00
forehalo
a14194c482 fix(server): blob controller permission (#6746) 2024-04-30 03:47:00 +00:00
pengx17
9b28e7313f fix(core): make it real action (#6745) 2024-04-30 03:33:09 +00:00
EYHN
a1169a43c9 chore: bump blocksuite (#6742)
## Features
- https://github.com/toeverything/BlockSuite/pull/6917 @undefined
- https://github.com/toeverything/BlockSuite/pull/6895 @golok727

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6906 @fundon
- https://github.com/toeverything/BlockSuite/pull/6919 @fundon
- https://github.com/toeverything/BlockSuite/pull/6921 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6910 @golok727
- https://github.com/toeverything/BlockSuite/pull/6918 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6915 @fundon
- https://github.com/toeverything/BlockSuite/pull/6912 @golok727
- https://github.com/toeverything/BlockSuite/pull/6789 @fundon
- https://github.com/toeverything/BlockSuite/pull/6909 @fundon

## Refactor
- https://github.com/toeverything/BlockSuite/pull/6913 @golok727

## Misc
2024-04-29 12:26:08 +00:00
EYHN
1323a0fc5f feat(core): prefetch onboarding video (#6736)
![CleanShot 2024-04-29 at 17.32.41@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/21ebbc62-c4a2-496c-af05-600a2ded2a9d.png)
2024-04-29 12:13:16 +00:00
pengx17
5c861939a5 fix(core): show toast for requestRunInEdgeless (#6715) 2024-04-29 11:14:07 +00:00
pengx17
7c5a259e84 fix(core): update prompts (#6738)
Update prompts:

When sending a message to openai, we actually send two messages.
There are two issues here:

1. the role in the first message shall be user or system
2. the content in the first message is not being interpolated at all.

```
[
  {
    role: "assistant",
    createdAt: "2024-04-27T06:30:34.820Z",
    params: {
      language: "French",
    },
    content: "You are a translation expert, please translate the following content into French, and only perform the translation action, keeping the translated content in the same format as the original content:\n\n          \"\"\"\"\n\n          \n\n          \"\"\"\"",
  },
  {
    role: "user",
    content: "Basic things you should know:",
    attachments: undefined,
    params: {
      language: "French",
    },
    createdAt: "2024-04-29T09:42:11.466Z",
  },
]
```

In this PR I removed `content` from prompts and let open ai use the second message (user) as the input.
2024-04-29 11:02:16 +00:00
EYHN
1d3c477c65 chore: enable source map on production (#6731) 2024-04-29 09:42:35 +00:00
Brooooooklyn
301d517892 chore: delete removed next-auth patch (#6729) 2024-04-29 09:30:09 +00:00
EYHN
20116eb940 chore: remove unused y-indexeddb (#6728) 2024-04-29 09:14:42 +00:00
Brooooooklyn
9c8168a066 chore: upgrade Rust to 1.77.2 (#6732) 2024-04-29 09:03:18 +00:00
EYHN
6202ba5ada refactor(core): remove jump once (#6733)
Previously, we marked `jumpOnce: true` on `doc.meta` to open a specific doc after creating a new workspace. This pr removes `jumpOnce` and directly jumps to the specific doc URL.

This PR also fixes an error when opening the all-page page, because the all-page page scans the jumpOnce attribute of all docs, and the code in it will fail on damaged data.
2024-04-29 08:51:31 +00:00
CatsJuice
5e8fe28326 chore(core): replace ai onboarding videos (#6730) 2024-04-29 07:07:43 +00:00
pengx17
964e475c5f chore: bump @pengx17/electron-forge-maker-appimage (#6726)
fix https://github.com/toeverything/AFFiNE/issues/6722
add `--no-sandbox --disable-setuid-sandbox` to appimage run
2024-04-29 04:57:52 +00:00
pengx17
905d7d18e4 chore: bump blocksuite (#6725) 2024-04-29 04:57:46 +00:00
Brooooooklyn
81729703d9 chore(server): use native file-type implementation (#6686) 2024-04-29 04:46:26 +00:00
EYHN
f98db24391 fix(core): fix opt out telemetry cause error (#6723) 2024-04-29 04:03:31 +00:00
EYHN
704532bd2f fix(core): adjust notify style (#6724) 2024-04-29 03:51:41 +00:00
CatsJuice
8d342f85ad fix(core): workspace avatar hover radius (#6717) 2024-04-29 02:27:21 +00:00
Brooooooklyn
fed2503782 refactor(server): rename @affine/storage to @affine/server-native (#6682)
- Close https://github.com/toeverything/AFFiNE/issues/6680
2024-04-29 02:14:20 +00:00
EYHN
236c6e00df fix(infra): reduce workspace avatar request (#6713) 2024-04-28 07:06:27 +00:00
fundon
7584ab4b91 feat(core): add seed to fal (#6712) 2024-04-26 11:40:09 +00:00
darkskygit
b639e52dca feat: allow custom seed (#6709) 2024-04-26 11:40:07 +00:00
pengx17
5d114ea965 refactor(electron): cleanup secondary db logic (#6710) 2024-04-26 10:57:09 +00:00
pengx17
d015be24e6 fix: incorrect mixpanel param (#6706) 2024-04-26 10:45:29 +00:00
darkskygit
850bbee629 test: copilot unit & e2e test (#6649)
fix CLOUD-31
2024-04-26 09:43:35 +00:00
EYHN
f015a11181 chore: bump blocksuite (#6707)
## Features
- https://github.com/toeverything/BlockSuite/pull/6785 @zzj3720

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6894 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6893 @doouding
- https://github.com/toeverything/BlockSuite/pull/6891 @fundon
- https://github.com/toeverything/BlockSuite/pull/6879 @doouding
- https://github.com/toeverything/BlockSuite/pull/6885 @regischen
- https://github.com/toeverything/BlockSuite/pull/6888 @doouding
- https://github.com/toeverything/BlockSuite/pull/6890 @doouding
- https://github.com/toeverything/BlockSuite/pull/6889 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6887 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6877 @EYHN
- https://github.com/toeverything/BlockSuite/pull/6882 @fundon
- https://github.com/toeverything/BlockSuite/pull/6886 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6884 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6881 @fundon
- https://github.com/toeverything/BlockSuite/pull/6880 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6878 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6876 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6873 @pengx17

## Refactor

## Misc
- https://github.com/toeverything/BlockSuite/pull/6874 @doouding
2024-04-26 07:42:37 +00:00
pengx17
cc17d3287e fix: open in chat does not work when the panel is not opened (#6703)
https://github.com/toeverything/AFFiNE/pull/6503 does not work with "open in chat".
IMO resetting tab whenever opening right panel does not make too much sense. @zanwei

fix AFF-951
2024-04-26 03:50:40 +00:00
CatsJuice
5b5c27b6ce feat(core): add ai pricing tip for plans page (#6704) 2024-04-26 03:28:28 +00:00
darkskygit
8bdd940ac8 fix: some event missing with multiple env webhook (#6705) 2024-04-26 02:56:09 +00:00
darkskygit
15c1e46680 chore: use default throttler replace strict throttler (#6698) 2024-04-26 02:18:20 +00:00
forehalo
2c228a35f8 fix(server): stripe webhook calls in random order (#6702) 2024-04-25 12:22:07 +00:00
darkskygit
a0c219e036 feat: use default params if not provided (#6701) 2024-04-25 10:59:46 +00:00
forehalo
3297486e31 fix(server): skip throttle for currentUser (#6700) 2024-04-25 09:45:31 +00:00
pengx17
6237bf18ab build(electron): nsis typo (#6697) 2024-04-25 09:10:34 +00:00
darkskygit
ea3f427918 fix: large transaction (#6695) 2024-04-25 08:33:21 +00:00
dependabot
74b7d024be chore(deps): bump rustls from 0.21.10 to 0.21.11 (#6683)
Bumps [rustls](https://github.com/rustls/rustls) from 0.21.10 to 0.21.11.
<details>
<summary>Commits</summary>
<ul>
<li><a href="7b8d1dbc1e"><code>7b8d1db</code></a> Prepare 0.21.11</li>
<li><a href="ebcb4782f2"><code>ebcb478</code></a> complete_io: bail out if progress is impossible</li>
<li><a href="20f35dfb6d"><code>20f35df</code></a> Regression test for <code>complete_io</code> infinite loop bug</li>
<li><a href="2f2aae15a4"><code>2f2aae1</code></a> Don't specially handle unauthenticated close_notify alerts</li>
<li><a href="e163587b98"><code>e163587</code></a> Don't deny warnings from nightly clippy</li>
<li><a href="9f864874cf"><code>9f86487</code></a> server::handy: fix new nightly clippy lint</li>
<li><a href="7e0e8ab599"><code>7e0e8ab</code></a> Correct assorted clippy warnings in test code</li>
<li><a href="3587d98f4e"><code>3587d98</code></a> Apply clippy suggestions from Rust 1.72</li>
<li><a href="d082e837b3"><code>d082e83</code></a> Address <code>clippy::redundant_static_lifetimes</code></li>
<li><a href="5e7a06ca45"><code>5e7a06c</code></a> Address <code>clippy::slow_vector_initialization</code></li>
<li>Additional commits viewable in <a href="https://github.com/rustls/rustls/compare/v/0.21.10...v/0.21.11">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rustls&package-manager=cargo&previous-version=0.21.10&new-version=0.21.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/toeverything/AFFiNE/network/alerts).

</details>
2024-04-25 07:47:47 +00:00
renovate
6af849e875 chore: bump up supertest version to v7 (#6690)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [supertest](https://togithub.com/ladjs/supertest) | [`^6.3.4` -> `^7.0.0`](https://renovatebot.com/diffs/npm/supertest/6.3.4/7.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/supertest/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/supertest/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/supertest/6.3.4/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/supertest/6.3.4/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>ladjs/supertest (supertest)</summary>

### [`v7.0.0`](https://togithub.com/ladjs/supertest/releases/tag/v7.0.0)

[Compare Source](https://togithub.com/ladjs/supertest/compare/v6.3.4...v7.0.0)

-   Merge pull request [#&#8203;834](https://togithub.com/ladjs/supertest/issues/834) from Bruception/master  [`225118c`](https://togithub.com/ladjs/supertest/commit/225118c)
-   Fix TestAgent not inheriting Agent properties  [`f290431`](https://togithub.com/ladjs/supertest/commit/f290431)
-   fix: bump deps, drop Node.js v<14.16.0  [`1e18c20`](https://togithub.com/ladjs/supertest/commit/1e18c20)

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMxMy4xIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-04-25 07:32:48 +00:00
pengx17
050efe3749 fix(core): update prompts (#6693)
update based on latest docs
2024-04-25 05:26:50 +00:00
EYHN
20a0d0b1db chore: bump blocksuite (#6694)
## Features
- https://github.com/toeverything/BlockSuite/pull/6863 @regischen
- https://github.com/toeverything/BlockSuite/pull/6852 @doouding
- https://github.com/toeverything/BlockSuite/pull/6860 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6856 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6849 @fundon

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6873 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6870 @golok727
- https://github.com/toeverything/BlockSuite/pull/6851 @golok727
- https://github.com/toeverything/BlockSuite/pull/6848 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6847 @fundon
- https://github.com/toeverything/BlockSuite/pull/6867 @EYHN
- https://github.com/toeverything/BlockSuite/pull/6868 @fundon
- https://github.com/toeverything/BlockSuite/pull/6869 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6865 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6866 @fundon
- https://github.com/toeverything/BlockSuite/pull/6864 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6824 @undefined
- https://github.com/toeverything/BlockSuite/pull/6859 @fundon
- https://github.com/toeverything/BlockSuite/pull/6853 @fundon
- https://github.com/toeverything/BlockSuite/pull/6854 @fundon
- https://github.com/toeverything/BlockSuite/pull/6845 @fourdim

## Refactor
- https://github.com/toeverything/BlockSuite/pull/6872 @fundon

## Misc
2024-04-25 05:12:02 +00:00
EYHN
c0cd33b65a fix(core): fix react error (#6692)
![CleanShot 2024-04-25 at 10.24.10.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/ec016ccd-d924-49d8-ad90-3ae0c47c5b8f.png)
2024-04-25 04:39:25 +00:00
pengx17
042be1216c build(electron): nsis updater compatibility fix (#6681) 2024-04-25 03:52:29 +00:00
pengx17
bfcf4a105e build(electron): add nsis build to release-desktop workflow (#6677)
Updater may break after this PR and will be fixed in the next one

After this PR, we will have two windows installer options
- affine-0.14.0-canary.9-canary-windows-x64.exe
- affine-0.14.0-canary.9-canary-windows-x64.nsis.exe (added)
2024-04-25 03:52:27 +00:00
pengx17
0b380f94c7 build(electron): add nsis script for windows installer (#6674)
This pr only includes how to bundle the app into an installer after package step.

todo (not in this pr)
- [ ] make sure updater can work for both nsis & squirrel
- [ ] integrate nsis build into github action workflow

Advantage over Squirrel:
- allowing user to specify the installation location
- better uninstaller

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/b75f1076-62e7-445c-bbf9-d7be00dbfc59.png)

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/c9ddc58c-512e-487e-80c8-7c4bd51482a8.png)

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/cfc5c281-e044-4929-a261-b02a4619117b.png)
2024-04-25 03:30:04 +00:00
forehalo
a697ebe340 feat(core): orm (#6536) 2024-04-25 03:03:45 +00:00
JimmFly
31b284a2d0 feat(core): add fallback component to member list (#6672)
<img width="549" alt="image" src="https://github.com/toeverything/AFFiNE/assets/102217452/7246002f-ebfb-4486-abbc-35bbee8fba0e">
2024-04-25 02:27:39 +00:00
CatsJuice
2a2b1cea28 feat(core): add indicator for general ai onboarding dialog (#6687) 2024-04-25 02:09:52 +00:00
renovate
21cbef4e20 chore: bump up cssnano version to v7 (#6691)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [cssnano](https://togithub.com/cssnano/cssnano) | [`^6.1.2` -> `^7.0.0`](https://renovatebot.com/diffs/npm/cssnano/6.1.2/7.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/cssnano/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/cssnano/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/cssnano/6.1.2/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cssnano/6.1.2/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>cssnano/cssnano (cssnano)</summary>

### [`v7.0.0`](https://togithub.com/cssnano/cssnano/compare/cssnano-preset-advanced@6.1.2...cssnano-preset-advanced@7.0.0)

[Compare Source](https://togithub.com/cssnano/cssnano/compare/cssnano@6.1.2...cssnano@7.0.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.

🔕 **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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMxMy4xIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-04-25 01:33:14 +00:00
CatsJuice
59214af3ad fix(core): adjust payment related copywriting (#6655) 2024-04-24 16:05:09 +00:00
fundon
0d8bab18df fix(core): should set type of uploaded file (#6689)
<img width="609" alt="Screenshot 2024-04-24 at 20 43 45" src="https://github.com/toeverything/AFFiNE/assets/27926/8e3897d7-2aab-491c-abfe-8ac553ea99b3">
2024-04-24 15:43:18 +00:00
JimmFly
350fec5397 feat(core): optimize the shift multi-selection function of doc list (#6675)
close TOV-701

https://github.com/toeverything/AFFiNE/assets/102217452/8813e603-1cc2-469f-a7c1-b18e49a14871
2024-04-24 07:56:13 +00:00
doouding
6525c99631 feat(server): new prompt for expand mind map (#6678)
feat(server): new prompt for expand mind map

feat: add migration file
2024-04-24 07:10:11 +00:00
EYHN
e5baa81a50 chore: bump blocksuite (#6673) 2024-04-23 08:39:23 +00:00
darkskygit
cbe9e10d44 chore: add copilot vision dev mode polyfill (#6671) 2024-04-23 07:41:02 +00:00
pengx17
f1b03989fa fix: error handling in sse (#6663) 2024-04-23 03:46:49 +00:00
darkskygit
64ad83f889 feat: handle stream error (#6653) 2024-04-23 03:46:46 +00:00
darkskygit
01a0f60d03 fix: history attachment query (#6670) 2024-04-23 03:34:59 +00:00
EYHN
c425cfa598 chore: bump blocksuite (#6666)
## Features
- https://github.com/toeverything/BlockSuite/pull/6842 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6836 @regischen

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6837 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6803 @lawvs
- https://github.com/toeverything/BlockSuite/pull/6843 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6838 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6834 @regischen
- https://github.com/toeverything/BlockSuite/pull/6835 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6831 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6827 @golok727
- https://github.com/toeverything/BlockSuite/pull/6828 @regischen

## Refactor

## Misc
2024-04-23 01:38:23 +00:00
regischen
a20a3fbbf8 feat: provide closeStream (#6659)
Upstream https://github.com/toeverything/blocksuite/pull/6836
2024-04-22 14:35:13 +00:00
CatsJuice
6ec97b27c4 feat(core): open desktop directly in subscription landing page (#6661) 2024-04-22 14:21:58 +00:00
pengx17
71a5be5385 fix(server): update prompts (#6664)
fix AFF-921
2024-04-22 14:09:53 +00:00
renovate
62e277d66c chore: bump up oxlint version to v0.3.1 (#6662)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

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

---

### Release Notes

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

### [`v0.3.1`](b29aabd6f1...99d46f9e48)

[Compare Source](b29aabd6f1...99d46f9e48)

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMxMy4xIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-04-22 11:24:21 +00:00
CatsJuice
e13024580d feat(core): add ai subscription landing page (#6657) 2024-04-22 09:03:27 +00:00
EYHN
d36b5e14aa feat(core): try cloud link (#6660) 2024-04-22 08:51:02 +00:00
forehalo
94de6f5853 fix(server): always return created timestamp of chat messages (#6658) 2024-04-22 08:39:42 +00:00
EYHN
b7ade43c2e feat(core): adjust help island style (#6651) 2024-04-22 08:27:28 +00:00
EYHN
ab7282213b feat(core): adjust workspace avatar style (#6652)
![CleanShot 2024-04-22 at 12 13 04@2x](https://github.com/toeverything/AFFiNE/assets/13579374/225966de-6c2f-4bdc-a460-b96d15447808)
2024-04-22 08:16:41 +00:00
EYHN
9fd3f29d1b fix(core): fix home page init cloud (#6654) 2024-04-22 08:05:20 +00:00
renovate
6c84b7acac chore: bump up oxlint version to v0.3.0 (#6636)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

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

---

### Release Notes

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

### [`v0.3.0`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.3.0): oxlint v0.3.0

[Compare Source](04f5fc0186...b29aabd6f1)

#### What's Changed

##### Potential breaking change

-   `-D all` no longer enables nursery rules, use `-D all -D nursery` instead

##### Features

-   support eslint globals by [@&#8203;Boshen](https://togithub.com/Boshen) in [https://github.com/oxc-project/oxc/pull/3038](https://togithub.com/oxc-project/oxc/pull/3038)
-   change no-empty-static-block to correctness
-   implement `--format checkstyle` by [@&#8203;Boshen](https://togithub.com/Boshen) in [https://github.com/oxc-project/oxc/pull/3044](https://togithub.com/oxc-project/oxc/pull/3044)
-   implement `--format unix` by [@&#8203;Boshen](https://togithub.com/Boshen) in [https://github.com/oxc-project/oxc/pull/3039](https://togithub.com/oxc-project/oxc/pull/3039)
-   implement fixer for `typescript-eslint/consistent-type-definitions` by [@&#8203;todor-a](https://togithub.com/todor-a) in [https://github.com/oxc-project/oxc/pull/3045](https://togithub.com/oxc-project/oxc/pull/3045)

##### Fixes

-   fix crashing with `unwrap` in import/no-cycle by [@&#8203;Boshen](https://togithub.com/Boshen) in [https://github.com/oxc-project/oxc/pull/3035](https://togithub.com/oxc-project/oxc/pull/3035)

**Full Changelog**: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.18...oxlint_v0.3.0

### [`v0.2.18`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.2.18): oxlint v0.2.18

[Compare Source](df11d10a22...04f5fc0186)

#### What's Changed

##### New Rules

-   correctness: eslint-plugin-unicorn no await in promise methods by [@&#8203;camc314](https://togithub.com/camc314) in [https://github.com/oxc-project/oxc/pull/2963](https://togithub.com/oxc-project/oxc/pull/2963)
-   correctness: eslint-plugin-unicorn no single promise in promise methods by [@&#8203;camc314](https://togithub.com/camc314) in [https://github.com/oxc-project/oxc/pull/2962](https://togithub.com/oxc-project/oxc/pull/2962)

##### Features

-   Add --jsdoc-plugin flag by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/2935](https://togithub.com/oxc-project/oxc/pull/2935)
-   Implement plugin-jsdoc/check-property-names by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/2989](https://togithub.com/oxc-project/oxc/pull/2989)
-   eslint/max-len by [@&#8203;woai3c](https://togithub.com/woai3c) in [https://github.com/oxc-project/oxc/pull/2874](https://togithub.com/oxc-project/oxc/pull/2874)
-   remove import/no-unresolved by [@&#8203;Boshen](https://togithub.com/Boshen) in [https://github.com/oxc-project/oxc/pull/3023](https://togithub.com/oxc-project/oxc/pull/3023)
-   support `oxlint-disable` alongside `eslint-disable` by [@&#8203;Boshen](https://togithub.com/Boshen) in [https://github.com/oxc-project/oxc/pull/3024](https://togithub.com/oxc-project/oxc/pull/3024)
-   jsdoc: Implement require-property rule by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/3011](https://togithub.com/oxc-project/oxc/pull/3011)
-   jsdoc: Implement require-property-(type|name|description) rules by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/3013](https://togithub.com/oxc-project/oxc/pull/3013)

#### New Contributors

-   [@&#8203;branchseer](https://togithub.com/branchseer) made their first contribution in [https://github.com/oxc-project/oxc/pull/2943](https://togithub.com/oxc-project/oxc/pull/2943)
-   [@&#8203;woai3c](https://togithub.com/woai3c) made their first contribution in [https://github.com/oxc-project/oxc/pull/2874](https://togithub.com/oxc-project/oxc/pull/2874)

**Full Changelog**: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.17...oxlint_v0.2.18

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMDEuNCIsInVwZGF0ZWRJblZlciI6IjM3LjMxMy4xIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-04-22 07:27:26 +00:00
forehalo
e8bcb75602 fix(server): use post request to consume magic link token (#6656) 2024-04-22 07:15:26 +00:00
random-dudde
f288e3ee25 ci: bash escape vulnerability (#6640)
Co-authored-by: EYHN <cneyhn@gmail.com>
Co-authored-by: LongYinan <lynweklm@gmail.com>
2024-04-22 06:30:11 +00:00
CatsJuice
d7e08215d7 feat(core): show login modal if not logged in when using ai (#6632)
![CleanShot 2024-04-22 at 09.05.42.gif](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/LakojjjzZNf6ogjOVwKE/61b35d07-5d5a-4df9-859b-17cf7a9c20cf.gif)
2024-04-22 03:26:01 +00:00
renovate
efe3b0537e chore: bump up electron version to v30 (#6573)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [electron](https://togithub.com/electron/electron) | [`^29.3.0` -> `^30.0.0`](https://renovatebot.com/diffs/npm/electron/29.3.0/30.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/electron/30.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/electron/30.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/electron/29.3.0/30.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/electron/29.3.0/30.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

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

### [`v30.0.0`](https://togithub.com/electron/electron/compare/v29.3.0...v30.0.0)

[Compare Source](https://togithub.com/electron/electron/compare/v29.3.0...v30.0.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.

🔕 **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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI5My4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2024-04-22 03:13:26 +00:00
darkskygit
ae679a937f fix: copilot storage config (#6650) 2024-04-22 03:00:18 +00:00
pengx17
1dda0fd34c feat: add mixpanel tracking for ai (#6643) 2024-04-20 05:43:35 +00:00
renovate
b4a760574e chore: Lock file maintenance (#5249)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44Ny4yIiwidXBkYXRlZEluVmVyIjoiMzcuMjQ1LjAiLCJ0YXJnZXRCcmFuY2giOiJjYW5hcnkifQ==-->
2024-04-19 20:14:13 +00:00
renovate
5077003e84 chore: bump up storybook-dark-mode version to v4 (#6136)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [storybook-dark-mode](https://togithub.com/hipstersmoothie/storybook-dark-mode) | [`^3.0.3` -> `^4.0.0`](https://renovatebot.com/diffs/npm/storybook-dark-mode/3.0.3/4.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/storybook-dark-mode/4.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/storybook-dark-mode/4.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/storybook-dark-mode/3.0.3/4.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/storybook-dark-mode/3.0.3/4.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>hipstersmoothie/storybook-dark-mode (storybook-dark-mode)</summary>

### [`v4.0.1`](https://togithub.com/hipstersmoothie/storybook-dark-mode/blob/HEAD/CHANGELOG.md#v401-Mon-Mar-18-2024)

[Compare Source](https://togithub.com/hipstersmoothie/storybook-dark-mode/compare/v4.0.0...v4.0.1)

🎉 This release contains work from a new contributor! 🎉

Thank you, Lauri Luotola ([@&#8203;leiit](https://togithub.com/leiit)), for all your work!

##### 🐛 Bug Fix

-   Fix `useDarkMode` to use correct channel [#&#8203;266](https://togithub.com/hipstersmoothie/storybook-dark-mode/pull/266) ([@&#8203;leiit](https://togithub.com/leiit))

##### 🔩 Dependency Updates

-   Update dependency [@&#8203;storybook/icons](https://togithub.com/storybook/icons) to v1.2.9 [#&#8203;253](https://togithub.com/hipstersmoothie/storybook-dark-mode/pull/253) ([@&#8203;renovate\[bot\]](https://togithub.com/renovate\[bot]))

##### Authors: 2

-   [@&#8203;renovate\[bot\]](https://togithub.com/renovate\[bot])
-   Lauri Luotola ([@&#8203;leiit](https://togithub.com/leiit))

***

### [`v4.0.0`](https://togithub.com/hipstersmoothie/storybook-dark-mode/blob/HEAD/CHANGELOG.md#v400-Fri-Mar-15-2024)

[Compare Source](https://togithub.com/hipstersmoothie/storybook-dark-mode/compare/v3.0.3...v4.0.0)

🎉 This release contains work from new contributors! 🎉

Thanks for all your work!

❤️ Sergey Kozlov ([@&#8203;dartess](https://togithub.com/dartess))

❤️ Rohan Poojary ([@&#8203;RohanPoojary1107](https://togithub.com/RohanPoojary1107))

##### 💥 Breaking Change

-   Storybook 8 [#&#8203;251](https://togithub.com/hipstersmoothie/storybook-dark-mode/pull/251) ([@&#8203;dartess](https://togithub.com/dartess))

##### ⚠️ Pushed to `master`

-   update auto ([@&#8203;hipstersmoothie](https://togithub.com/hipstersmoothie))

##### 📝 Documentation

-   Update addons import in readme code examples [#&#8203;243](https://togithub.com/hipstersmoothie/storybook-dark-mode/pull/243) ([@&#8203;RohanPoojary1107](https://togithub.com/RohanPoojary1107))

##### Authors: 3

-   Andrew Lisowski ([@&#8203;hipstersmoothie](https://togithub.com/hipstersmoothie))
-   Rohan Poojary ([@&#8203;RohanPoojary1107](https://togithub.com/RohanPoojary1107))
-   Sergey Kozlov ([@&#8203;dartess](https://togithub.com/dartess))

***

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNDUuMCIsInVwZGF0ZWRJblZlciI6IjM3LjMwMS40IiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-19 13:59:11 +00:00
CatsJuice
13e2a3dbae fix(core): remove sidebar user avatar menu item's rightArrow icon (#6633) 2024-04-19 13:47:28 +00:00
forehalo
098e717688 chore(server): remove useless free subscription enum (#6634) 2024-04-19 13:34:59 +00:00
darkskygit
657a5250ad feat: update chat prompt (#6639)
fix AFF-878
fix AFF-852 (maybe)
2024-04-19 12:34:02 +00:00
pengx17
94a70a5f3a chore: bump blocksuite (#6635)
## Features
- https://github.com/toeverything/BlockSuite/pull/6825 @regischen

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6828 @regischen
- https://github.com/toeverything/BlockSuite/pull/6823 @fundon
- https://github.com/toeverything/BlockSuite/pull/6822 @fundon
- https://github.com/toeverything/BlockSuite/pull/6826 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6794 @fundon
- https://github.com/toeverything/BlockSuite/pull/6821 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6781 @doouding
- https://github.com/toeverything/BlockSuite/pull/6820 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6819 @regischen
- https://github.com/toeverything/BlockSuite/pull/6817 @donteatfriedrice

## Refactor

## Misc
2024-04-19 09:50:17 +00:00
darkskygit
97669acb40 chore: enable ai feature in dev (#6618) 2024-04-19 08:12:53 +00:00
pengx17
6d5dbbd7f4 fix: move toTextStream to affine (#6628) 2024-04-19 07:59:24 +00:00
Brooooooklyn
6d62ba856c chore: apply backend-config to the graphql service (#6631) 2024-04-19 07:35:11 +00:00
EYHN
5e243de392 feat(server): auto refresh session (#6613) 2024-04-19 07:00:12 +00:00
EYHN
a2fa9149ff feat(templates): add stickers (#6629) 2024-04-19 06:47:29 +00:00
EYHN
4085cc6728 fix(core): fix subscribe link for pro plan (#6627) 2024-04-19 06:36:38 +00:00
JimmFly
9d412d22cb fix(core): drag and drop files into doc (#6630)
close #6625
2024-04-19 06:25:17 +00:00
pengx17
8c0732ddf1 fix: handle 401 errors (#6611)
upstream https://github.com/toeverything/blocksuite/pull/6809
2024-04-19 03:51:41 +00:00
pengx17
99bf7c79d1 chore: bump blocksuite (#6626)
## Features
- https://github.com/toeverything/BlockSuite/pull/6809 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6787 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6774 @donteatfriedrice

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6817 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6811 @regischen
- https://github.com/toeverything/BlockSuite/pull/6814 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6813 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6812 @doouding
- https://github.com/toeverything/BlockSuite/pull/6815 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6808 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6804 @regischen
- https://github.com/toeverything/BlockSuite/pull/6797 @regischen
- https://github.com/toeverything/BlockSuite/pull/6802 @Saul-Mirone
- https://github.com/toeverything/BlockSuite/pull/6801 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6798 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6795 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6790 @lawvs
- https://github.com/toeverything/BlockSuite/pull/6778 @zkwolf
- https://github.com/toeverything/BlockSuite/pull/6792 @fundon

## Refactor

## Misc
- https://github.com/toeverything/BlockSuite/pull/6807 @c0sc0s
- https://github.com/toeverything/BlockSuite/pull/6806 @Saul-Mirone
- https://github.com/toeverything/BlockSuite/pull/6800 @fourdim
2024-04-19 03:51:38 +00:00
fundon
7772a103fa fix(server): dev user configuration issue (#6619) 2024-04-19 03:40:04 +00:00
darkskygit
3cc3af8d5d feat: remove message query (#6622)
related #6620
2024-04-18 16:30:10 +00:00
CatsJuice
7970d9b8c9 feat(core): add local ai onboarding dialog (#6600) 2024-04-18 15:48:20 +00:00
darkskygit
28f2ff24b9 fix: copilot blob process (#6612) 2024-04-18 15:36:30 +00:00
EYHN
6a23fe37a7 feat(core): reduce profile loading time (#6616) 2024-04-18 15:23:12 +00:00
pengx17
c3438fde21 fix(core): always create message for ai (#6620) 2024-04-18 15:09:36 +00:00
EYHN
08cd940e6b fix(server): fix unstable test (#6621) 2024-04-18 14:53:24 +00:00
darkskygit
b3b9e9a056 chore: cleanup outdated api (#6604) 2024-04-18 14:42:46 +00:00
EYHN
a537f8eb0b fix(electron): cookie expires too short (#6615) 2024-04-18 13:41:56 +00:00
EYHN
09832dc940 feat(core): add subscribe link (#6610) 2024-04-18 13:28:32 +00:00
fundon
5437c6567b fix(component): banner should not affect the editor layout (#6605)
https://github.com/toeverything/AFFiNE/assets/27926/6aacb16c-02ca-4693-afe8-628bef507811
2024-04-18 13:16:10 +00:00
CatsJuice
9cb6dcd93d feat(core): check user's subscription at ai onboarding stage (#6608) 2024-04-18 11:28:06 +00:00
pengx17
e232b0b285 fix: should not swallow copilot errors (#6609) 2024-04-18 09:59:31 +00:00
soumyasen10
19f8407d7f fix: disable default save page as (#6548)
Co-authored-by: Peng Xiao <pengxiao@outlook.com>
2024-04-18 16:19:03 +08:00
forehalo
d9e6561762 feat(server): add created timestamp to history (#6607) 2024-04-18 07:06:47 +00:00
pengx17
5fc56a20ac feat: adopt createMessage upload api (#6596) 2024-04-18 06:55:29 +00:00
Peng Xiao
10653eccbc fix: provide user info for copilot (#6606) 2024-04-18 11:10:17 +08:00
DarkSky
ccb3bed91e feat: add blob upload support for copilot (#6584) 2024-04-17 14:05:38 +00:00
pengx17
e806169f60 fix(core): missing copilot param (#6602) 2024-04-17 13:27:16 +00:00
pengx17
f9f0490190 fix(core): provide photoengine (#6574) 2024-04-17 13:27:11 +00:00
pengx17
03a7f9939e fix: ai error handling (#6588)
upstream: https://github.com/toeverything/blocksuite/pull/6775
2024-04-17 13:27:05 +00:00
pengx17
09a984d113 chore: bump blocksuite (#6601)
## Features
- https://github.com/toeverything/BlockSuite/pull/6763 @doouding
- https://github.com/toeverything/BlockSuite/pull/6780 @Saul-Mirone
- https://github.com/toeverything/BlockSuite/pull/6775 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6765 @donteatfriedrice

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6792 @fundon
- https://github.com/toeverything/BlockSuite/pull/6791 @fundon
- https://github.com/toeverything/BlockSuite/pull/6776 @fundon
- https://github.com/toeverything/BlockSuite/pull/6779 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6771 @fundon
- https://github.com/toeverything/BlockSuite/pull/6769 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6768 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6758 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6743 @fourdim
- https://github.com/toeverything/BlockSuite/pull/6762 @regischen

## Refactor
- https://github.com/toeverything/BlockSuite/pull/6786 @regischen
- https://github.com/toeverything/BlockSuite/pull/6764 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6772 @fundon

## Misc
- https://github.com/toeverything/BlockSuite/pull/6766 @fourdim
2024-04-17 13:27:00 +00:00
JimmFly
bcee1bbd81 feat(component): adjust notify styles (#6578)
Change the styles of `notify.error`, `notify.warning`, and `notify.success` from `alert` to `normal`
Add custom `iconColor` option
2024-04-17 12:36:42 +00:00
JimmFly
8b66c1d752 fix(component): retrieve lost scroll bars in editor (#6597)
close TOV-805
close #6589
2024-04-17 11:59:12 +00:00
EYHN
f86646b931 feat(core): enrich pwa manifest.json (#6599) 2024-04-17 19:14:25 +08:00
liuyi
07aeab6ac8 fix(server): app cannot start in graphql only flavor (#6598) 2024-04-17 18:29:04 +08:00
EYHN
4b933466f4 fix(storybook): remove storybook testing (#6595)
remove tests/storybook

@affine/components storybook still exists
2024-04-17 17:27:33 +08:00
EYHN
ed96c4ece4 fix(core): fix navigate not working (#6594)
navigate sometimes doesn't work

It seems that we shouldn't pass the parent component's navigate function to the child component, but adding an effect to delay the child component rendering seems to work.
2024-04-17 16:43:29 +08:00
DarkSky
ec186a65e7 fix(server): avoid store unpaid subscriptions (#6593) 2024-04-17 16:43:17 +08:00
EYHN
c83d090282 fix(core): revalidate subscription info when open ai usage panel (#6591) 2024-04-17 16:36:12 +08:00
liuyi
e53d5e2e3d chore(server): clean up throttler (#6326) 2024-04-17 16:32:26 +08:00
forehalo
651a99a48e fix(server): avoid store unpaid subscriptions 2024-04-17 16:25:03 +08:00
liuyi
5b315bfc81 fix(server): only returns active subscriptions (#6590) 2024-04-17 16:19:34 +08:00
EYHN
6ca174bb14 fix(core): revalidate subscription info when open ai usage panel 2024-04-17 15:54:01 +08:00
EYHN
c7373d4651 feat(infra): framework (#6403)
* Business are implemented in modules
* All modules are split into `services`, `entities`, `stores`, to achieve better abstraction
* most of asynchronous loading has been changed to `effect` implementation, with a good retry strategy
* critical network requests have been cached, app can be used offline normally.
* user session has been cached, and will be used offline.
* `workspace list provider` and `factory provider` are unified into `workspace flavor provider`
* `page` has been rename to `doc`, unified with `blocksuite`
2024-04-17 15:20:13 +08:00
EYHN
06fda3b62c feat(infra): framework 2024-04-17 15:09:09 +08:00
forehalo
ab17a05df3 fix(core): give page reference correct link (#6587) 2024-04-17 03:56:24 +00:00
forehalo
66a272fb8b fix(core): unable to redirect to same origin paths (#6586) 2024-04-17 03:25:31 +00:00
darkskygit
83d8587a45 fix: missing feature upsert (#6585) 2024-04-17 02:01:01 +00:00
forehalo
e1c292b8b5 feat(server): support registering ai early access users (#6565) 2024-04-16 13:54:08 +00:00
darkskygit
677c4711df feat: unsplash api proxy (#6572) 2024-04-16 13:33:07 +00:00
CatsJuice
bb329944ed feat(core): optimize ai onboarding trigger logic (#6579)
- don't open edgeless ai-onboarding dialog until general ai onboarding and setting modal closed
- clip edgeless ai onboarding thumb to avoid "black border"
- correct "try for free"
- replace edgeless ai onboarding lottie resources
2024-04-16 13:18:10 +00:00
CatsJuice
c222cf7b96 fix(core): wrong pricing state in billing ai card (#6583) 2024-04-16 13:07:23 +00:00
JimmFly
f6fcbd8ea9 fix(core): signIn page style (#6582) 2024-04-16 12:56:12 +00:00
darkskygit
3d15e8353b feat: refresh prompts (#6568) 2024-04-16 10:26:54 +00:00
Brooooooklyn
b1eb0d2bc1 chore: remove vite from resolutions (#6580) 2024-04-16 10:15:56 +00:00
darkskygit
1b0864eb60 feat: check quota correctly (#6561) 2024-04-16 09:41:48 +00:00
regischen
0ca8a23dd8 fix: move help land position (#6571)
Before:
<img width="1614" alt="image" src="https://github.com/toeverything/AFFiNE/assets/58546692/24d4c550-4070-48a5-a851-40d6f26ea120">

After:
<img width="1106" alt="image" src="https://github.com/toeverything/AFFiNE/assets/58546692/88e1b7ea-8a69-45a2-9beb-780dfd1bd996">
<img width="949" alt="image" src="https://github.com/toeverything/AFFiNE/assets/58546692/8fd328c5-e8e8-402a-b18e-436056d2374f">

Cause the icon will be on top of chat input.
2024-04-16 08:11:37 +00:00
pengx17
ebb38a42a0 fix: temporary fix for running electron tests (#6576)
a workaround for spawn EINVAL error.
Found this issue according to https://github.com/node-red/node-red/pull/4652

~~In our case the electron app is spawned by playwright. I am still investigating the issue but don't know how long it takes.~~

Upstream fix: https://github.com/microsoft/playwright/pull/30382
2024-04-16 06:57:17 +00:00
renovate
a98471daa2 chore: bump up @testing-library/react version to v15 (#6531)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@testing-library/react](https://togithub.com/testing-library/react-testing-library) | [`^14.2.1` -> `^15.0.0`](https://renovatebot.com/diffs/npm/@testing-library%2freact/14.2.1/15.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@testing-library%2freact/15.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@testing-library%2freact/15.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@testing-library%2freact/14.2.1/15.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@testing-library%2freact/14.2.1/15.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

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

### [`v15.0.2`](https://togithub.com/testing-library/react-testing-library/compare/v15.0.1...c63b873072d62c858959c2a19e68f8e2cc0b11be)

[Compare Source](https://togithub.com/testing-library/react-testing-library/compare/v15.0.1...v15.0.2)

### [`v15.0.1`](https://togithub.com/testing-library/react-testing-library/compare/v15.0.0...1645d21950ab8e3c6740b7e51b8a179a4c975c24)

[Compare Source](https://togithub.com/testing-library/react-testing-library/compare/v15.0.0...v15.0.1)

### [`v15.0.0`](https://togithub.com/testing-library/react-testing-library/compare/v14.3.0...787cb85f8baa3d2e2a9916b7dad12c0a76d787a4)

[Compare Source](https://togithub.com/testing-library/react-testing-library/compare/v14.3.1...v15.0.0)

### [`v14.3.1`](https://togithub.com/testing-library/react-testing-library/releases/tag/v14.3.1)

[Compare Source](https://togithub.com/testing-library/react-testing-library/compare/v14.3.0...v14.3.1)

##### Bug Fixes

-   Stop using nullish coalescing ([#&#8203;1300](https://togithub.com/testing-library/react-testing-library/issues/1300)) ([8434a24](8434a24ce7))

### [`v14.3.0`](https://togithub.com/testing-library/react-testing-library/compare/v14.2.2...9c4a46d5b9923c21c936d206614a8febcc939fc2)

[Compare Source](https://togithub.com/testing-library/react-testing-library/compare/v14.2.2...v14.3.0)

### [`v14.2.2`](https://togithub.com/testing-library/react-testing-library/compare/v14.2.1...3da62fd9741ca74bcd0d2bc668ba76a2d8f3751f)

[Compare Source](https://togithub.com/testing-library/react-testing-library/compare/v14.2.1...v14.2.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.

🔕 **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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI5My4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-15 14:49:10 +00:00
fundon
b2ca8249c1 fix(core): should choose different models based on content or attachments (#6567) 2024-04-15 13:12:57 +00:00
regischen
4b24722f3d chore: bump blocksuite (#6566)
## Features

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6761 @regischen
- https://github.com/toeverything/BlockSuite/pull/6760 @fundon

## Refactor

## Misc
2024-04-15 12:59:01 +00:00
pengx17
af2b3a43bd chore: bump bs (#6563)
## Features

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6760 @fundon
- https://github.com/toeverything/BlockSuite/pull/6757 @fundon

## Refactor

## Misc
2024-04-15 10:29:54 +00:00
regischen
50292ba008 feat: add slide action (#6560) 2024-04-15 09:47:46 +00:00
fundon
d00879aceb feat: ai create an image (#6538)
Related to https://github.com/toeverything/blocksuite/pull/6746
2024-04-15 09:32:21 +00:00
pengx17
da320957ed fix: bump bs (#6562)
## Features
- https://github.com/toeverything/BlockSuite/pull/6759 @regischen
- https://github.com/toeverything/BlockSuite/pull/6746 @fundon
- https://github.com/toeverything/BlockSuite/pull/6756 @regischen

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6757 @fundon
- https://github.com/toeverything/BlockSuite/pull/6750 @fundon

## Refactor

## Misc
2024-04-15 09:20:04 +00:00
regischen
a15ceb8dde fix: add action field in histories gql (#6558) 2024-04-15 08:15:47 +00:00
JimmFly
cbba5d3c17 fix(core): the page flashes when click the share button (#6557)
close TOV-706
2024-04-15 07:39:03 +00:00
CatsJuice
b93e79c59d feat(core): ai onboarding for edgeless mode (#6556) 2024-04-15 07:25:37 +00:00
CatsJuice
257e946d5d feat(core): add ai onboarding (#6544) 2024-04-15 07:25:31 +00:00
EYHN
8bb597d7ad fix(core): fix flaky e2e (#6559) 2024-04-15 07:11:36 +00:00
darkskygit
1a3d1a5421 fix: upgrade plan correctly (#6543) 2024-04-15 06:20:24 +00:00
JimmFly
1217ef258b feat(core): copy to the clipboard whilst creating a shared link (#6555)
close TOV-797
2024-04-15 06:08:45 +00:00
JimmFly
c25c99d75f chore(core): update i18n resources (#6533) 2024-04-15 05:56:56 +00:00
pengx17
6fe0c4be6c fix(electron): close app while on fullscreen should be minimize instead (#6534) 2024-04-15 05:44:58 +00:00
pengx17
e1eb925704 refactor(core): remove copilot client from presets (#6546)
depends on https://github.com/toeverything/blocksuite/pull/6748
2024-04-15 05:31:32 +00:00
pengx17
2b69fde937 chore(core): bump bs (#6553)
## Features

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6750 @fundon
- https://github.com/toeverything/BlockSuite/pull/6747 @fundon
- https://github.com/toeverything/BlockSuite/pull/6753 @regischen
- https://github.com/toeverything/BlockSuite/pull/6744 @donteatfriedrice

## Refactor
- https://github.com/toeverything/BlockSuite/pull/6748 @pengx17

## Misc
2024-04-15 05:31:29 +00:00
pengx17
9151a5d5e4 fix: storybook build issue (#6554) 2024-04-15 05:19:42 +00:00
Brooooooklyn
c76c1b6abd ci: fix environment variables config in deploy/release (#6552) 2024-04-15 04:27:43 +00:00
donteatfriedrice
7b35722288 feat: bump blocksuite (#6541)
## Features
- https://github.com/toeverything/BlockSuite/pull/6737 @Saul-Mirone
- https://github.com/toeverything/BlockSuite/pull/6735 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6740 @regischen

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6744 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6742 @doouding

## Refactor

## Misc
- https://github.com/toeverything/BlockSuite/pull/6741 @fundon
2024-04-15 03:06:38 +00:00
CatsJuice
bb1294f425 fix(core): description of cancel is incorrect when cloud subscription is activated (#6530) 2024-04-15 02:54:41 +00:00
EYHN
d11d69ddf6 feat(core): move help island to workbench (#6535) 2024-04-15 02:29:15 +00:00
EYHN
1656b33ce3 feat(core): use zip snapshot for onboarding page (#6495) 2024-04-15 02:16:08 +00:00
pengx17
9b620ecbc9 fix(core): use backend prompts (#6542) 2024-04-12 21:29:14 +08:00
darkskygit
2336638996 fix: cannot query chat history (#6539) 2024-04-12 12:16:43 +00:00
darkskygit
fc51b68674 fix: pick copilot provider depend on model (#6540) 2024-04-12 12:01:39 +00:00
JimmFly
62f90e5f10 fix(core): restore lost activation state of sidebar menu items (#6520)
https://github.com/toeverything/AFFiNE/assets/102217452/41a53a43-e17d-41b5-b8e5-2ca42bcfae0a
2024-04-12 10:36:04 +00:00
CatsJuice
6a535b94c3 feat(core): create and open cloud workspace if not exists after logged in (#6511)
Only execute when `initCloud=true` is specified in the URL search params.
2024-04-12 09:55:45 +00:00
darkskygit
e77475aca5 feat: detailed copilot histories (#6523) 2024-04-12 08:39:32 +00:00
EYHN
9e7a2fcf0e feat(server): add pro quota to dev user (#6532) 2024-04-12 06:45:18 +00:00
EYHN
1e12d4a2cb feat(core): remove ai from experimental features (#6529) 2024-04-12 06:45:10 +00:00
JimmFly
6112e977cc feat(core): adjust the display settings to be independent for each workspace (#6502)
close TOV-793
2024-04-12 06:32:31 +00:00
JimmFly
9c38acf081 feat(core): add new doc button to collection item (#6521)
https://github.com/toeverything/AFFiNE/assets/102217452/3da65392-cee8-4f51-a05d-82e27027fa78
2024-04-12 06:19:11 +00:00
CatsJuice
d40052c748 feat(core): add ai usage in account-setting (#6516) 2024-04-12 06:06:11 +00:00
regischen
244e3fd71b fix: change action (#6519) 2024-04-12 05:17:10 +00:00
pengx17
8769aef0aa fix(core): disable micromark debug output (#6528) 2024-04-12 03:58:53 +00:00
pengx17
4a67c84c73 fix(core): chat panel display on cont in chat (#6527) 2024-04-12 03:58:43 +00:00
fundon
13b39fc5f3 feat(core): ai images (#6506) 2024-04-12 03:58:33 +00:00
pengx17
1697cd76fe chore(core): bump blocksuite (#6525)
## Features
- https://github.com/toeverything/BlockSuite/pull/6728 @fundon
- https://github.com/toeverything/BlockSuite/pull/6714 @doouding
- https://github.com/toeverything/BlockSuite/pull/6733 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6560 @golok727
- https://github.com/toeverything/BlockSuite/pull/6727 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6645 @regischen
- https://github.com/toeverything/BlockSuite/pull/6724 @fundon
- https://github.com/toeverything/BlockSuite/pull/6719 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6682 @donteatfriedrice

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6734 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6732 @fourdim
- https://github.com/toeverything/BlockSuite/pull/6726 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6721 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6725 @fundon
- https://github.com/toeverything/BlockSuite/pull/6716 @golok727
- https://github.com/toeverything/BlockSuite/pull/6723 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6722 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6718 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6702 @Tzyito
- https://github.com/toeverything/BlockSuite/pull/6711 @Tzyito
- https://github.com/toeverything/BlockSuite/pull/6694 @fundon
- https://github.com/toeverything/BlockSuite/pull/6717 @golok727

## Refactor
- https://github.com/toeverything/BlockSuite/pull/6672 @Saul-Mirone

## Misc
- https://github.com/toeverything/BlockSuite/pull/6720 @raintoway
2024-04-12 03:58:25 +00:00
pengx17
f03e20b97e fix(core): should pass mode to AffineEditorContainer (#6522)
Without mode there will be some features missing in blocksuite
2024-04-11 11:17:14 +00:00
renovate
66231e0e41 chore: bump up oxlint version to v0.2.17 (#5778)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

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

---

### Release Notes

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

### [`v0.2.17`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.2.17): oxlint v0.2.17

[Compare Source](7066d55153...df11d10a22)

##### What's Changed

-   feat(linter): eslint-plugin-jest/prefer-lowercase-title by [@&#8203;eryue0220](https://togithub.com/eryue0220) in [https://github.com/oxc-project/oxc/pull/2911](https://togithub.com/oxc-project/oxc/pull/2911)
-   feat(linter): typescript-eslint/consistent-type-definitions by [@&#8203;todor-a](https://togithub.com/todor-a) in [https://github.com/oxc-project/oxc/pull/2885](https://togithub.com/oxc-project/oxc/pull/2885)
-   fix(cli): fix `oxlint --format json` yields 0 files to lint by [@&#8203;Boshen](https://togithub.com/Boshen) in [https://github.com/oxc-project/oxc/pull/2940](https://togithub.com/oxc-project/oxc/pull/2940)
-   fix(cli): if format is json do not print summary information ([#&#8203;2899](https://togithub.com/oxc-project/oxc/issues/2899)) by [@&#8203;kalvenschraut](https://togithub.com/kalvenschraut) in [https://github.com/oxc-project/oxc/pull/2925](https://togithub.com/oxc-project/oxc/pull/2925)
-   fix(linter): import/no-cycle ignore type-only imports by [@&#8203;JohnDaly](https://togithub.com/JohnDaly) in [https://github.com/oxc-project/oxc/pull/2924](https://togithub.com/oxc-project/oxc/pull/2924)
-   refactor(semantic/jsdoc): Rework JSDoc struct for better Span handling by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/2917](https://togithub.com/oxc-project/oxc/pull/2917)

##### New Contributors

-   [@&#8203;bradzacher](https://togithub.com/bradzacher) made their first contribution in [https://github.com/oxc-project/oxc/pull/2938](https://togithub.com/oxc-project/oxc/pull/2938)

**Full Changelog**: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.16...oxlint_v0.2.17

### [`v0.2.16`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.2.16): oxlint v0.2.16

[Compare Source](e7307ed23c...7066d55153)

#### What's Changed

-   feat(linter): [@&#8203;typescript-eslint/prefer-for-of](https://togithub.com/typescript-eslint/prefer-for-of) by [@&#8203;charnog](https://togithub.com/charnog) in [https://github.com/oxc-project/oxc/pull/2789](https://togithub.com/oxc-project/oxc/pull/2789)
-   feat(linter): Implement jsdoc/check-access by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/2642](https://togithub.com/oxc-project/oxc/pull/2642)
-   feat(linter): Implement jsdoc/empty-tags by [@&#8203;leaysgur](https://togithub.com/leaysgur) in [https://github.com/oxc-project/oxc/pull/2893](https://togithub.com/oxc-project/oxc/pull/2893)
-   feat(linter): eslint-plugin-jest/prefer-mock-promise-sorthand by [@&#8203;eryue0220](https://togithub.com/eryue0220) in [https://github.com/oxc-project/oxc/pull/2864](https://togithub.com/oxc-project/oxc/pull/2864)
-   feat(linter/import): Add `ignoreTypes` option for the `import/no-cycle` rule by [@&#8203;JohnDaly](https://togithub.com/JohnDaly) in [https://github.com/oxc-project/oxc/pull/2905](https://togithub.com/oxc-project/oxc/pull/2905)
-   fix(ast): `FinallyClause` won't get visited as `BlockStatement` anymore. by [@&#8203;rzvxa](https://togithub.com/rzvxa) in [https://github.com/oxc-project/oxc/pull/2881](https://togithub.com/oxc-project/oxc/pull/2881)
-   fix(linter): handle self closing script tags in astro partial loader ([#&#8203;2017](https://togithub.com/oxc-project/oxc/issues/2017)) by [@&#8203;kalvenschraut](https://togithub.com/kalvenschraut) in [https://github.com/oxc-project/oxc/pull/2907](https://togithub.com/oxc-project/oxc/pull/2907)
-   fix(linter): svelte partial loader handle generics ([#&#8203;2875](https://togithub.com/oxc-project/oxc/issues/2875)) by [@&#8203;kalvenschraut](https://togithub.com/kalvenschraut) in [https://github.com/oxc-project/oxc/pull/2906](https://togithub.com/oxc-project/oxc/pull/2906)

#### New Contributors

-   [@&#8203;charnog](https://togithub.com/charnog) made their first contribution in [https://github.com/oxc-project/oxc/pull/2789](https://togithub.com/oxc-project/oxc/pull/2789)
-   [@&#8203;kalvenschraut](https://togithub.com/kalvenschraut) made their first contribution in [https://github.com/oxc-project/oxc/pull/2906](https://togithub.com/oxc-project/oxc/pull/2906)
-   [@&#8203;JohnDaly](https://togithub.com/JohnDaly) made their first contribution in [https://github.com/oxc-project/oxc/pull/2905](https://togithub.com/oxc-project/oxc/pull/2905)

**Full Changelog**: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.15...oxlint_v0.2.16

### [`v0.2.15`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.2.15): oxlint v0.2.15

[Compare Source](b1343d7bcb...e7307ed23c)

#### What's Changed

-   feat(linter): default_param_last by [@&#8203;JoSeBu1](https://togithub.com/JoSeBu1) in [https://github.com/oxc-project/oxc/pull/2756](https://togithub.com/oxc-project/oxc/pull/2756)
-   feat(linter): eslint-plugin-jest/no-untyped-mock-factory by [@&#8203;eryue0220](https://togithub.com/eryue0220) in [https://github.com/oxc-project/oxc/pull/2807](https://togithub.com/oxc-project/oxc/pull/2807)
-   feat(linter): eslint-plugin-jest/prefer-comparison-matcher by [@&#8203;eryue0220](https://togithub.com/eryue0220) in [https://github.com/oxc-project/oxc/pull/2806](https://togithub.com/oxc-project/oxc/pull/2806)
-   feat(linter): eslint-plugin-react checked-requires-onchange-or-readonly by [@&#8203;keita-hino](https://togithub.com/keita-hino) in [https://github.com/oxc-project/oxc/pull/2754](https://togithub.com/oxc-project/oxc/pull/2754)
-   feat(linter): eslint/no-iterator by [@&#8203;JoSeBu1](https://togithub.com/JoSeBu1) in [https://github.com/oxc-project/oxc/pull/2758](https://togithub.com/oxc-project/oxc/pull/2758)
-   feat(linter): fallback to the default tsconfig path by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2842](https://togithub.com/oxc-project/oxc/pull/2842)
-   feat(linter): no_script_url by [@&#8203;JoSeBu1](https://togithub.com/JoSeBu1) in [https://github.com/oxc-project/oxc/pull/2761](https://togithub.com/oxc-project/oxc/pull/2761)
-   feat(linter/import) check deep namespace in namespace rule by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2805](https://togithub.com/oxc-project/oxc/pull/2805)
-   feat(linter/import) check module import in no_duplicates by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2771](https://togithub.com/oxc-project/oxc/pull/2771)
-   feat(linter/import) check type import in no_duplicates by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2777](https://togithub.com/oxc-project/oxc/pull/2777)
-   feat(linter/import) support allow_computed option in namespace by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2840](https://togithub.com/oxc-project/oxc/pull/2840)
-   feat(linter/import) support check re-export in named by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2769](https://togithub.com/oxc-project/oxc/pull/2769)
-   feat(linter/import): ignore type-only imports and exports in no_unresolved by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2849](https://togithub.com/oxc-project/oxc/pull/2849)
-   fix(linter/import): false positive for indirect export in namespace by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2862](https://togithub.com/oxc-project/oxc/pull/2862)
-   fix(linter/import): ignore export declaration in no-duplicates by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [https://github.com/oxc-project/oxc/pull/2863](https://togithub.com/oxc-project/oxc/pull/2863)
-   fix(linter/max-lines): only report codes that exceed the line limit by [@&#8203;mysteryven](https://togithub.com/mysteryven) in [https://github.com/oxc-project/oxc/pull/2778](https://togithub.com/oxc-project/oxc/pull/2778)
-   fix(parser): add support for empty module declaration by [@&#8203;rzvxa](https://togithub.com/rzvxa) in [https://github.com/oxc-project/oxc/pull/2834](https://togithub.com/oxc-project/oxc/pull/2834)

#### New Contributors

-   [@&#8203;rzvxa](https://togithub.com/rzvxa) made their first contribution in [https://github.com/oxc-project/oxc/pull/2764](https://togithub.com/oxc-project/oxc/pull/2764)

**Full Changelog**: https://github.com/oxc-project/oxc/compare/oxlint_v0.2.14...oxlint_v0.2.15

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-11 10:51:02 +00:00
JimmFly
7a1eb63d42 fix(core): unexpected routing jump behavior (#6524)
https://github.com/toeverything/AFFiNE/assets/102217452/b4dba402-b07d-4f8e-a118-a35eb6e7d317
2024-04-11 10:30:45 +00:00
renovate
313952c45d chore: bump up all non-major dependencies (#6235)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@aws-sdk/client-s3](https://togithub.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://togithub.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.537.0` -> `3.552.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.537.0/3.552.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.552.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.552.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.537.0/3.552.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.537.0/3.552.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@electron-forge/maker-base](https://togithub.com/electron/forge) | [`7.3.0` -> `7.3.1`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-base/7.3.0/7.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-base/7.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-base/7.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-base/7.3.0/7.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-base/7.3.0/7.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@napi-rs/cli](https://togithub.com/napi-rs/napi-rs) | [`3.0.0-alpha.43` -> `3.0.0-alpha.46`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.0.0-alpha.43/3.0.0-alpha.46) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fcli/3.0.0-alpha.46?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fcli/3.0.0-alpha.46?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fcli/3.0.0-alpha.43/3.0.0-alpha.46?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fcli/3.0.0-alpha.43/3.0.0-alpha.46?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nx/vite](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/vite)) | [`18.1.2` -> `18.2.4`](https://renovatebot.com/diffs/npm/@nx%2fvite/18.1.2/18.2.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nx%2fvite/18.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nx%2fvite/18.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nx%2fvite/18.1.2/18.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nx%2fvite/18.1.2/18.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/exporter-prometheus](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.49.0` -> `^0.50.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fexporter-prometheus/0.49.1/0.50.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fexporter-prometheus/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fexporter-prometheus/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fexporter-prometheus/0.49.1/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fexporter-prometheus/0.49.1/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/instrumentation](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.49.0` -> `^0.50.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation/0.49.1/0.50.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation/0.49.1/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation/0.49.1/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/instrumentation-graphql](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-graphql#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.38.0` -> `^0.39.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-graphql/0.38.0/0.39.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-graphql/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-graphql/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-graphql/0.38.0/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-graphql/0.38.0/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/instrumentation-http](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.49.0` -> `^0.50.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-http/0.49.1/0.50.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-http/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-http/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-http/0.49.1/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-http/0.49.1/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/instrumentation-ioredis](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.38.0` -> `^0.39.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-ioredis/0.38.0/0.39.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-ioredis/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-ioredis/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-ioredis/0.38.0/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-ioredis/0.38.0/0.39.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/instrumentation-nestjs-core](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.35.0` -> `^0.36.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-nestjs-core/0.35.0/0.36.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-nestjs-core/0.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-nestjs-core/0.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-nestjs-core/0.35.0/0.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-nestjs-core/0.35.0/0.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/instrumentation-socket.io](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.37.0` -> `^0.38.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-socket.io/0.37.0/0.38.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-socket.io/0.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-socket.io/0.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-socket.io/0.37.0/0.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-socket.io/0.37.0/0.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/sdk-node](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.49.0` -> `^0.50.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-node/0.49.1/0.50.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsdk-node/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsdk-node/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsdk-node/0.49.1/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsdk-node/0.49.1/0.50.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [eslint-plugin-import-x](https://togithub.com/un-ts/eslint-plugin-import-x) | [`^0.4.1` -> `^0.5.0`](https://renovatebot.com/diffs/npm/eslint-plugin-import-x/0.4.4/0.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-import-x/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-import-x/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-import-x/0.4.4/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-import-x/0.4.4/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [eslint-plugin-sonarjs](https://togithub.com/SonarSource/eslint-plugin-sonarjs) | [`^0.24.0` -> `^0.25.0`](https://renovatebot.com/diffs/npm/eslint-plugin-sonarjs/0.24.0/0.25.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-sonarjs/0.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-sonarjs/0.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-sonarjs/0.24.0/0.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-sonarjs/0.24.0/0.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [vite-plugin-dts](https://togithub.com/qmhc/vite-plugin-dts) | [`3.7.3` -> `3.8.1`](https://renovatebot.com/diffs/npm/vite-plugin-dts/3.7.3/3.8.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite-plugin-dts/3.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite-plugin-dts/3.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite-plugin-dts/3.7.3/3.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite-plugin-dts/3.7.3/3.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

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

### [`v3.552.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35520-2024-04-09)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.550.0...v3.552.0)

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

### [`v3.550.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35500-2024-04-05)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.549.0...v3.550.0)

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

### [`v3.549.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35490-2024-04-04)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.540.0...v3.549.0)

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

### [`v3.540.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35400-2024-03-22)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.537.0...v3.540.0)

##### Bug Fixes

-   **util-endpoints:** augment endpointFunctions inline in endpointResolver functions ([#&#8203;5933](https://togithub.com/aws/aws-sdk-js-v3/issues/5933)) ([42a791d](42a791defb))

</details>

<details>
<summary>electron/forge (@&#8203;electron-forge/maker-base)</summary>

### [`v7.3.1`](https://togithub.com/electron/forge/releases/tag/v7.3.1)

[Compare Source](https://togithub.com/electron/forge/compare/v7.3.0...v7.3.1)

##### What's Changed

##### Highlighted Feature:

-   build: Bump [@&#8203;electron/windows-sign](https://togithub.com/electron/windows-sign) deps by [@&#8203;felixrieseberg](https://togithub.com/felixrieseberg) in [https://github.com/electron/forge/pull/3524](https://togithub.com/electron/forge/pull/3524)

This change enables advanced code signing with \[[@&#8203;electron/windows-sign](https://togithub.com/electron/windows-sign)]\[[@&#8203;electron/windows-sign](https://togithub.com/electron/windows-sign)], supporting two different ways to codesign your application and the installer:

1.  Modern: By passing a `windowsSign` option, which will be passed to \[[@&#8203;electron/windows-sign](https://togithub.com/electron/windows-sign)]. This method allows full customization of the code-signing process - and supports more complicated scenarios like cloud-hosted EV certificates, custom sign pipelines, and per-file overrides. It also supports all existing "simple" codesigning scenarios, including just passing a certificate file and password. Please see https://github.com/[@&#8203;electron/windows-sign](https://togithub.com/electron/windows-sign) for all possible configuration options.

    When passing `windowsSign`, do not pass any other available parameters at the top level (like `certificateFile`, `certificatePassword`, or `signWithParams`).

2.  Legacy: By passing the top-level settings (`certificateFile`, `certificatePassword`, and `signWithParams`). For simple codesigning scenarios, there's no reason not to use this method - it'll work just as fine as the modern method.

##### Bug Fixes and Improvements

-   fix(publisher-github): don't sanitize asset names before upload by [@&#8203;dsanders11](https://togithub.com/dsanders11) in [https://github.com/electron/forge/pull/3485](https://togithub.com/electron/forge/pull/3485)

-   build: bump memory limit for docs:generate script by [@&#8203;dsanders11](https://togithub.com/dsanders11) in [https://github.com/electron/forge/pull/3500](https://togithub.com/electron/forge/pull/3500)

-   build: fix keyv type resolution warning during dev by [@&#8203;MarshallOfSound](https://togithub.com/MarshallOfSound) in [https://github.com/electron/forge/pull/3507](https://togithub.com/electron/forge/pull/3507)

-   build(deps): bump actions/setup-node from 4.0.1 to 4.0.2 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/electron/forge/pull/3522](https://togithub.com/electron/forge/pull/3522)

-   build(deps): bump follow-redirects from 1.15.4 to 1.15.6 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/electron/forge/pull/3537](https://togithub.com/electron/forge/pull/3537)

-   ci(windows): pin version of wix toolset to v3.14.0 by [@&#8203;erickzhao](https://togithub.com/erickzhao) in [https://github.com/electron/forge/pull/3525](https://togithub.com/electron/forge/pull/3525)

-   docs: update forge create-electron-app template to match tutorial by [@&#8203;alicelovescake](https://togithub.com/alicelovescake) in [https://github.com/electron/forge/pull/3528](https://togithub.com/electron/forge/pull/3528)

##### New Contributors

-   [@&#8203;alicelovescake](https://togithub.com/alicelovescake) made their first contribution in [https://github.com/electron/forge/pull/3528](https://togithub.com/electron/forge/pull/3528)

**Full Changelog**: https://github.com/electron/forge/compare/v7.3.0...v7.3.1

![image](https://togithub.com/electron/forge/assets/33054982/3ebd6e16-0db8-4c66-bdb0-dc4461b8226d)

</details>

<details>
<summary>napi-rs/napi-rs (@&#8203;napi-rs/cli)</summary>

### [`v3.0.0-alpha.46`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.46)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.45...@napi-rs/cli@3.0.0-alpha.46)

#### What's Changed

-   fix(deps): update dependency emnapi to v1.1.1 by [@&#8203;renovate](https://togithub.com/renovate) in [https://github.com/napi-rs/napi-rs/pull/2017](https://togithub.com/napi-rs/napi-rs/pull/2017)
-   feat(cli): add support for armv7-unknown-linux-muslebihf by [@&#8203;sapphi-red](https://togithub.com/sapphi-red) in [https://github.com/napi-rs/napi-rs/pull/2019](https://togithub.com/napi-rs/napi-rs/pull/2019)
-   feat(cli): add support for powerpc64le-unknown-linux-gnu by [@&#8203;sapphi-red](https://togithub.com/sapphi-red) in [https://github.com/napi-rs/napi-rs/pull/2023](https://togithub.com/napi-rs/napi-rs/pull/2023)
-   feat(cli): add support for s390x-unknown-linux-gnu by [@&#8203;sapphi-red](https://togithub.com/sapphi-red) in [https://github.com/napi-rs/napi-rs/pull/2028](https://togithub.com/napi-rs/napi-rs/pull/2028)
-   feat(cli): support wasm32-wasipxx targets by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2030](https://togithub.com/napi-rs/napi-rs/pull/2030)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.45...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.46

### [`v3.0.0-alpha.45`](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.44...@napi-rs/cli@3.0.0-alpha.45)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.44...@napi-rs/cli@3.0.0-alpha.45)

### [`v3.0.0-alpha.44`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.44)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.43...@napi-rs/cli@3.0.0-alpha.44)

#### What's Changed

-   fix(cli): cleanup js binding template by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1984](https://togithub.com/napi-rs/napi-rs/pull/1984)
-   chore(deps): lock file maintenance by [@&#8203;renovate](https://togithub.com/renovate) in [https://github.com/napi-rs/napi-rs/pull/1987](https://togithub.com/napi-rs/napi-rs/pull/1987)
-   chore(deps): update yarn to v4.1.1 by [@&#8203;renovate](https://togithub.com/renovate) in [https://github.com/napi-rs/napi-rs/pull/1989](https://togithub.com/napi-rs/napi-rs/pull/1989)
-   ci: fix arm64 job by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1998](https://togithub.com/napi-rs/napi-rs/pull/1998)
-   chore(deps): bump follow-redirects from 1.15.5 to 1.15.6 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/napi-rs/napi-rs/pull/2004](https://togithub.com/napi-rs/napi-rs/pull/2004)
-   fix(deps): update dependency emnapi to v1.1.0 by [@&#8203;renovate](https://togithub.com/renovate) in [https://github.com/napi-rs/napi-rs/pull/2006](https://togithub.com/napi-rs/napi-rs/pull/2006)
-   chore(wasm-runtime): upgrade emnapi by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/2008](https://togithub.com/napi-rs/napi-rs/pull/2008)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.16.0...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.44

</details>

<details>
<summary>nrwl/nx (@&#8203;nx/vite)</summary>

### [`v18.2.4`](https://togithub.com/nrwl/nx/releases/tag/18.2.4)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.2.3...18.2.4)

##### 18.2.4 (2024-04-09)

##### 🩹 Fixes

-   **angular:** fix dynamic module federation generation ([#&#8203;22724](https://togithub.com/nrwl/nx/pull/22724))
-   **core:** update pty version to add windows specific flags ([#&#8203;22711](https://togithub.com/nrwl/nx/pull/22711))
-   **nextjs:** Adding tailwind should work when creating an app OOTB ([#&#8203;22709](https://togithub.com/nrwl/nx/pull/22709))

##### ❤️  Thank You

-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)

### [`v18.2.3`](https://togithub.com/nrwl/nx/releases/tag/18.2.3)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.2.2...18.2.3)

#### 18.2.3 (2024-04-05)

##### 🚀 Features

-   **core:** list crystal plugins with nx report ([#&#8203;22649](https://togithub.com/nrwl/nx/pull/22649))

##### 🩹 Fixes

-   **bundling:** print errors from rollup build ([#&#8203;22707](https://togithub.com/nrwl/nx/pull/22707))
-   **core:** write terminal output to cache folder ([#&#8203;22673](https://togithub.com/nrwl/nx/pull/22673))
-   **core:** errors from create dependencies should show properly ([#&#8203;22695](https://togithub.com/nrwl/nx/pull/22695))
-   **core:** not passing props of run-commands to underlying command ([#&#8203;22595](https://togithub.com/nrwl/nx/pull/22595))
-   **js:** update jest snapshot after vite-plugin-dts bump ([#&#8203;22621](https://togithub.com/nrwl/nx/pull/22621))
-   **js:** append target when generating tmp tsconfig to prevent conflicts [#&#8203;21396](https://togithub.com/nrwl/nx/issues/21396) ([#&#8203;22671](https://togithub.com/nrwl/nx/pull/22671), [#&#8203;21396](https://togithub.com/nrwl/nx/issues/21396))
-   **js:** propagate error from child process to [@&#8203;nx/js](https://togithub.com/nx/js):node executor ([#&#8203;22705](https://togithub.com/nrwl/nx/pull/22705))
-   **misc:** fix optional branch tracking on ci pipeline ([#&#8203;22652](https://togithub.com/nrwl/nx/pull/22652))
-   **module-federation:** serve dynamic remotes statically in their own processes ([#&#8203;22688](https://togithub.com/nrwl/nx/pull/22688))
-   **nx-dev:** Update urls that are 404 ([#&#8203;22653](https://togithub.com/nrwl/nx/pull/22653))
-   **release:** respect root .npmrc registry settings for publishing ([9dd97c43a1](https://togithub.com/nrwl/nx/commit/9dd97c43a1))
-   **testing:** fix playwright executor uiPort option schema ([#&#8203;22610](https://togithub.com/nrwl/nx/pull/22610))
-   **testing:** app generators should create correct e2e config at generation time ([#&#8203;22565](https://togithub.com/nrwl/nx/pull/22565))
-   **vite:** ensure cache is created correctly for separate vite and vitest config files [#&#8203;22244](https://togithub.com/nrwl/nx/issues/22244) ([#&#8203;22618](https://togithub.com/nrwl/nx/pull/22618), [#&#8203;22244](https://togithub.com/nrwl/nx/issues/22244))
-   **webpack:** bring back previous SVG and SVGR behavior for React projects ([#&#8203;22628](https://togithub.com/nrwl/nx/pull/22628))
-   **webpack:** support standard webpack config with [@&#8203;nx/webpack](https://togithub.com/nx/webpack):dev-server ([#&#8203;22660](https://togithub.com/nrwl/nx/pull/22660))
-   **webpack:** remove url-loader from dependencies since it is replaced by asset modules ([#&#8203;22698](https://togithub.com/nrwl/nx/pull/22698))

##### ❤️  Thank You

-   Altan Stalker
-   Austin Fahsl [@&#8203;fahslaj](https://togithub.com/fahslaj)
-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)

### [`v18.2.2`](https://togithub.com/nrwl/nx/releases/tag/18.2.2)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.2.1...18.2.2)

#### 18.2.2 (2024-04-02)

##### 🚀 Features

-   **vite:** migrate to latest vite-plugin-dts ([#&#8203;22614](https://togithub.com/nrwl/nx/pull/22614))

##### 🩹 Fixes

-   **angular:** prevent false positive validation due to option default value in dev-server executor ([#&#8203;22606](https://togithub.com/nrwl/nx/pull/22606))
-   **angular:** respect skipPackageJson correctly in library generator ([#&#8203;22608](https://togithub.com/nrwl/nx/pull/22608))
-   **angular:** fix @&#8203;nx/angular/src/utils entry point ([#&#8203;22609](https://togithub.com/nrwl/nx/pull/22609))
-   **core:** do not assume workspace inputs cause all projects to be af… ([#&#8203;22573](https://togithub.com/nrwl/nx/pull/22573))
-   **react-native:** storybook relative paths ([#&#8203;22031](https://togithub.com/nrwl/nx/pull/22031))

##### ❤️  Thank You

-   arekkubaczkowski [@&#8203;arekkubaczkowski](https://togithub.com/arekkubaczkowski)
-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)

### [`v18.2.1`](https://togithub.com/nrwl/nx/releases/tag/18.2.1)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.2.0...18.2.1)

##### 18.2.1 (2024-03-28)

##### 🩹 Fixes

-   **nuxt:** use loadConfigFile from devkit rather than [@&#8203;nuxt/kit](https://togithub.com/nuxt/kit) ([#&#8203;22571](https://togithub.com/nrwl/nx/pull/22571))

##### ❤️  Thank You

-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)

### [`v18.2.0`](https://togithub.com/nrwl/nx/releases/tag/18.2.0)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.1.3...18.2.0)

##### 18.2.0 (2024-03-28)

##### 🚀 Features

-   **angular:** support angular 17.3.0 ([#&#8203;22202](https://togithub.com/nrwl/nx/pull/22202))
-   **bundling:** refactor rollup executor to perform single build for all formats ([#&#8203;22436](https://togithub.com/nrwl/nx/pull/22436))
-   **core:** add ability to add metadata to projects ([#&#8203;22299](https://togithub.com/nrwl/nx/pull/22299))
-   **core:** create structured project graph errors with all plugin er… ([#&#8203;22404](https://togithub.com/nrwl/nx/pull/22404))
-   **core:** add ability to scope plugins ([#&#8203;22379](https://togithub.com/nrwl/nx/pull/22379))
-   **gradle:** add gradle init generator ([#&#8203;22245](https://togithub.com/nrwl/nx/pull/22245))
-   **gradle:** make gradle public ([#&#8203;22399](https://togithub.com/nrwl/nx/pull/22399))
-   **gradle:** add gradle init generator ([#&#8203;22245](https://togithub.com/nrwl/nx/pull/22245))
-   **gradle:** add technology ([#&#8203;22528](https://togithub.com/nrwl/nx/pull/22528))
-   **graph:** remove polyfills from graph client ([#&#8203;22494](https://togithub.com/nrwl/nx/pull/22494))
-   **testing:** infer open-cypress task ([#&#8203;22556](https://togithub.com/nrwl/nx/pull/22556))
-   **webpack:** create build log for remotes to help debug errors ([#&#8203;22539](https://togithub.com/nrwl/nx/pull/22539))

##### 🩹 Fixes

-   **angular:** target correct versions of ng-packagr to create stylesheet worker synchronously ([#&#8203;22485](https://togithub.com/nrwl/nx/pull/22485))
-   **angular:** prevent creating stylesheet worker multiple times in ng-packagr executors ([#&#8203;22491](https://togithub.com/nrwl/nx/pull/22491))
-   **bundling:** prevent sensitive keys from being bundled ([#&#8203;22413](https://togithub.com/nrwl/nx/pull/22413))
-   **bundling:** prevent sensitive keys from being bundled ([#&#8203;22413](https://togithub.com/nrwl/nx/pull/22413))
-   **core:** override Path env variable on Windows platform ([#&#8203;22382](https://togithub.com/nrwl/nx/pull/22382))
-   **core:** Should work if extends is a string ([a00f6438b9](https://togithub.com/nrwl/nx/commit/a00f6438b9))
-   **core:** fix no plugins found for nx init without packge.json ([#&#8203;22434](https://togithub.com/nrwl/nx/pull/22434))
-   **core:** exponential backoff retry on cache put fail ([#&#8203;21926](https://togithub.com/nrwl/nx/pull/21926))
-   **core:** override Path env variable on Windows platform ([#&#8203;22382](https://togithub.com/nrwl/nx/pull/22382))
-   **core:** Should work if extends is a string ([66ae83e569](https://togithub.com/nrwl/nx/commit/66ae83e569))
-   **core:** fix no plugins found for nx init without packge.json ([#&#8203;22434](https://togithub.com/nrwl/nx/pull/22434))
-   **core:** exponential backoff retry on cache put fail ([#&#8203;21926](https://togithub.com/nrwl/nx/pull/21926))
-   **core:** cannot read property kind of undefined ([#&#8203;21715](https://togithub.com/nrwl/nx/pull/21715))
-   **core:** rethrow unknown errors during incremental graph calculation ([#&#8203;22522](https://togithub.com/nrwl/nx/pull/22522))
-   **core:** ignore yarn/cache when watching with the daemon ([#&#8203;22516](https://togithub.com/nrwl/nx/pull/22516))
-   **core:** handle undefined properties in schemas with additionalProperties ([#&#8203;22426](https://togithub.com/nrwl/nx/pull/22426))
-   **core:** fix caching outputs which have symlinks ([#&#8203;22548](https://togithub.com/nrwl/nx/pull/22548))
-   **gradle:** fix missing tasks ([#&#8203;22400](https://togithub.com/nrwl/nx/pull/22400))
-   **gradle:** fix gradle plugin path ([#&#8203;22405](https://togithub.com/nrwl/nx/pull/22405))
-   **gradle:** fix missing tasks ([#&#8203;22400](https://togithub.com/nrwl/nx/pull/22400))
-   **gradle:** fix gradle plugin path ([#&#8203;22405](https://togithub.com/nrwl/nx/pull/22405))
-   **gradle:** fix gradle to work on windows ([#&#8203;22470](https://togithub.com/nrwl/nx/pull/22470))
-   **gradle:** fix gradle icon ([#&#8203;22553](https://togithub.com/nrwl/nx/pull/22553))
-   **gradle:** only allow certain types of task to be cached ([#&#8203;22559](https://togithub.com/nrwl/nx/pull/22559))
-   **gradle:** add [@&#8203;nx/gradle](https://togithub.com/nx/gradle) to nx migrations ([#&#8203;22567](https://togithub.com/nrwl/nx/pull/22567))
-   **js:** update babel preset to specify minor version of core-js for better optimization ([#&#8203;22433](https://togithub.com/nrwl/nx/pull/22433))
-   **js:** match core-js version with babel options ([#&#8203;22493](https://togithub.com/nrwl/nx/pull/22493))
-   **js:** migrate core-js to 3.36 for workspaces that use it ([#&#8203;22495](https://togithub.com/nrwl/nx/pull/22495))
-   **js:** handle case where tslib or [@&#8203;swc/helpers](https://togithub.com/swc/helpers) are missing from externalNodes ([#&#8203;22523](https://togithub.com/nrwl/nx/pull/22523))
-   **js:** do not write cached lockfile parsed results when an error is… ([#&#8203;22526](https://togithub.com/nrwl/nx/pull/22526))
-   **linter:** convert parser options to flat config even is parser is missing ([#&#8203;22388](https://togithub.com/nrwl/nx/pull/22388))
-   **linter:** convert parser options to flat config even is parser is missing ([#&#8203;22388](https://togithub.com/nrwl/nx/pull/22388))
-   **misc:** handle cwd correctly when generating artifacts with as-provided ([#&#8203;22411](https://togithub.com/nrwl/nx/pull/22411))
-   **misc:** handle cwd correctly when generating artifacts with as-provided ([#&#8203;22411](https://togithub.com/nrwl/nx/pull/22411))
-   **misc:** align nx init package.json scripts handling when deselecting all plugins ([#&#8203;22490](https://togithub.com/nrwl/nx/pull/22490))
-   **react:** HMR for withModuleFederation [#&#8203;22300](https://togithub.com/nrwl/nx/issues/22300) ([#&#8203;22562](https://togithub.com/nrwl/nx/pull/22562), [#&#8203;22300](https://togithub.com/nrwl/nx/issues/22300))
-   **remix:** generate correct e2e config if Crystal is used ([#&#8203;22558](https://togithub.com/nrwl/nx/pull/22558))
-   **rollup:** remove exports field from @&#8203;nx/rollup/package.json since is a breaking change ([#&#8203;22545](https://togithub.com/nrwl/nx/pull/22545))
-   **storybook:** do not set cacheableOperations if not previously set ([#&#8203;22535](https://togithub.com/nrwl/nx/pull/22535))
-   **testing:** remove root from the cypress ci-e2e group ([#&#8203;22468](https://togithub.com/nrwl/nx/pull/22468))
-   **testing:** name group of e2e ci tasks distinctly from target name ([#&#8203;22525](https://togithub.com/nrwl/nx/pull/22525))
-   **web:** spa flag should correctly define redirect ([#&#8203;22487](https://togithub.com/nrwl/nx/pull/22487))
-   **webpack:** Stylus loader path ([#&#8203;22373](https://togithub.com/nrwl/nx/pull/22373))
-   **webpack:** Stylus loader path ([#&#8203;22373](https://togithub.com/nrwl/nx/pull/22373))
-   **webpack:** pass options from executor to NxWebpackPlugin correctly ([#&#8203;22529](https://togithub.com/nrwl/nx/pull/22529))
-   **webpack:** resolve assets from executor options as relative to workspace root ([#&#8203;22544](https://togithub.com/nrwl/nx/pull/22544))

##### ❤️  Thank You

-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Joel Pelaez Jorge
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Maxence LEFEBVRE
-   MaxKless [@&#8203;MaxKless](https://togithub.com/MaxKless)
-   Mike Pham
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)

### [`v18.1.3`](https://togithub.com/nrwl/nx/releases/tag/18.1.3)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.1.2...18.1.3)

##### 18.1.3 (2024-03-25)

##### 🚀 Features

-   **gradle:** add gradle init generator ([#&#8203;22245](https://togithub.com/nrwl/nx/pull/22245))

##### 🩹 Fixes

-   **angular:** prevent creating stylesheet worker multiple times in ng-packagr executors ([#&#8203;22491](https://togithub.com/nrwl/nx/pull/22491))
-   **bundling:** prevent sensitive keys from being bundled ([#&#8203;22413](https://togithub.com/nrwl/nx/pull/22413))
-   **core:** override Path env variable on Windows platform ([#&#8203;22382](https://togithub.com/nrwl/nx/pull/22382))
-   **core:** Should work if extends is a string ([66ae83e569](https://togithub.com/nrwl/nx/commit/66ae83e569))
-   **core:** fix no plugins found for nx init without packge.json ([#&#8203;22434](https://togithub.com/nrwl/nx/pull/22434))
-   **core:** exponential backoff retry on cache put fail ([#&#8203;21926](https://togithub.com/nrwl/nx/pull/21926))
-   **gradle:** fix missing tasks ([#&#8203;22400](https://togithub.com/nrwl/nx/pull/22400))
-   **gradle:** fix gradle plugin path ([#&#8203;22405](https://togithub.com/nrwl/nx/pull/22405))
-   **linter:** convert parser options to flat config even is parser is missing ([#&#8203;22388](https://togithub.com/nrwl/nx/pull/22388))
-   **misc:** handle cwd correctly when generating artifacts with as-provided ([#&#8203;22411](https://togithub.com/nrwl/nx/pull/22411))
-   **webpack:** Stylus loader path ([#&#8203;22373](https://togithub.com/nrwl/nx/pull/22373))

##### ❤️  Thank You

-   Emily Xiong
-   Jack Hsu
-   Jason Jean
-   Joel Pelaez Jorge
-   Leosvel Pérez Espinosa
-   Mike Pham
-   Miroslav Jonaš
-   Nicholas Cunningham

</details>

<details>
<summary>open-telemetry/opentelemetry-js (@&#8203;opentelemetry/exporter-prometheus)</summary>

### [`v0.50.0`](3920b158d0...5231aa2550)

[Compare Source](3920b158d0...5231aa2550)

</details>

<details>
<summary>open-telemetry/opentelemetry-js-contrib (@&#8203;opentelemetry/instrumentation-graphql)</summary>

### [`v0.39.0`](9d19ca4103...17a0bc1da3)

[Compare Source](9d19ca4103...17a0bc1da3)

### [`v0.38.1`](32204a362d...39c34df61f)

[Compare Source](fcea8ca0c8...9d19ca4103)

</details>

<details>
<summary>un-ts/eslint-plugin-import-x (eslint-plugin-import-x)</summary>

### [`v0.5.0`](https://togithub.com/un-ts/eslint-plugin-import-x/blob/HEAD/CHANGELOG.md#050)

[Compare Source](https://togithub.com/un-ts/eslint-plugin-import-x/compare/v0.4.4...v0.5.0)

##### Minor Changes

-   [#&#8203;66](https://togithub.com/un-ts/eslint-plugin-import-x/pull/66) [`49418a0`](49418a0352) Thanks [@&#8203;JounQin](https://togithub.com/JounQin)! - chore(dep)!: drop eslint <8.56 support

-   [#&#8203;66](https://togithub.com/un-ts/eslint-plugin-import-x/pull/66) [`49418a0`](49418a0352) Thanks [@&#8203;JounQin](https://togithub.com/JounQin)! - feat!: upgrade [@&#8203;typescript-eslint/utils](https://togithub.com/typescript-eslint/utils) to v7

</details>

<details>
<summary>SonarSource/eslint-plugin-sonarjs (eslint-plugin-sonarjs)</summary>

### [`v0.25.1`](https://togithub.com/SonarSource/eslint-plugin-sonarjs/releases/tag/0.25.1)

[Compare Source](https://togithub.com/SonarSource/eslint-plugin-sonarjs/compare/0.25.0...0.25.1)

##### What's Changed

-   Resolve issue [#&#8203;456](https://togithub.com/SonarSource/eslint-plugin-sonarjs/issues/456) - [@&#8203;typescript-eslint/utils](https://togithub.com/typescript-eslint/utils) dependency is missing by [@&#8203;ericmorand-sonarsource](https://togithub.com/ericmorand-sonarsource) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/457](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/457)
-   Bump the project manifest version to 0.25.1 by [@&#8203;ericmorand-sonarsource](https://togithub.com/ericmorand-sonarsource) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/458](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/458)

##### New Contributors

-   [@&#8203;ericmorand-sonarsource](https://togithub.com/ericmorand-sonarsource) made their first contribution in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/457](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/457)

**Full Changelog**: https://github.com/SonarSource/eslint-plugin-sonarjs/compare/0.25.0...0.25.1

### [`v0.25.0`](https://togithub.com/SonarSource/eslint-plugin-sonarjs/releases/tag/0.25.0)

[Compare Source](https://togithub.com/SonarSource/eslint-plugin-sonarjs/compare/0.24.0...0.25.0)

#### What's Changed

-   Prepare for next development iteration by [@&#8203;yassin-kammoun-sonarsource](https://togithub.com/yassin-kammoun-sonarsource) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/446](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/446)
-   Fix FP 3699 (no-use-of-empty-return-values) to handle ambient functions by [@&#8203;zglicz](https://togithub.com/zglicz) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/451](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/451)
-   Make no-unused-collection not trigger if writing to elements of said collection by [@&#8203;zglicz](https://togithub.com/zglicz) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/452](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/452)
-   Replace devDependency `@typescript-eslint/experimental-utils` with `@typescript-eslint/utils` by [@&#8203;yassin-kammoun-sonarsource](https://togithub.com/yassin-kammoun-sonarsource) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/453](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/453)

#### New Contributors

-   [@&#8203;zglicz](https://togithub.com/zglicz) made their first contribution in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/451](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/451)

**Full Changelog**: https://github.com/SonarSource/eslint-plugin-sonarjs/compare/0.24.0...0.25.0

</details>

<details>
<summary>qmhc/vite-plugin-dts (vite-plugin-dts)</summary>

### [`v3.8.1`](https://togithub.com/qmhc/vite-plugin-dts/blob/HEAD/CHANGELOG.md#381-2024-03-28)

[Compare Source](https://togithub.com/qmhc/vite-plugin-dts/compare/v3.8.0...v3.8.1)

##### Bug Fixes

-   correct process property names in imports ([fb320fb](fb320fb814)), closes [#&#8203;316](https://togithub.com/qmhc/vite-plugin-dts/issues/316)

### [`v3.8.0`](https://togithub.com/qmhc/vite-plugin-dts/blob/HEAD/CHANGELOG.md#380-2024-03-27)

[Compare Source](https://togithub.com/qmhc/vite-plugin-dts/compare/v3.7.3...v3.8.0)

##### Bug Fixes

-   add syntactic and semantic diagnostics ([#&#8203;310](https://togithub.com/qmhc/vite-plugin-dts/issues/310)) ([7c10782](7c10782284))

##### Features

-   collect declared modules when rollup types ([39606bd](39606bd345)), closes [#&#8203;240](https://togithub.com/qmhc/vite-plugin-dts/issues/240)

#### [3.7.3](https://togithub.com/qmhc/vite-plugin-dts/compare/v3.7.2...v3.7.3) (2024-02-21)

##### Bug Fixes

-   incorrect process for removing pure import ([d0c0c86](d0c0c867d6)), closes [#&#8203;301](https://togithub.com/qmhc/vite-plugin-dts/issues/301)

#### [3.7.2](https://togithub.com/qmhc/vite-plugin-dts/compare/v3.7.1...v3.7.2) (2024-01-24)

##### Bug Fixes

-   correct match result for alias form tsconfig ([88469d0](88469d0e6a)), closes [#&#8203;298](https://togithub.com/qmhc/vite-plugin-dts/issues/298)

#### [3.7.1](https://togithub.com/qmhc/vite-plugin-dts/compare/v3.7.0...v3.7.1) (2024-01-15)

##### Bug Fixes

-   improve aliases replacement logic ([e8827cb](e8827cb6c8)), closes [#&#8203;294](https://togithub.com/qmhc/vite-plugin-dts/issues/294)
-   manually collect compiler options for types rollup ([0d0b255](0d0b255ad2)), closes [#&#8203;297](https://togithub.com/qmhc/vite-plugin-dts/issues/297)

</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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-11 10:17:32 +00:00
JimmFly
8579ac63a2 feat(core): set the right sidebar to display TOC by default (#6503)
https://github.com/toeverything/AFFiNE/assets/102217452/e37ee798-0b22-4ad4-8bf7-ed32eafc89d0
2024-04-11 10:04:39 +00:00
JimmFly
9dd4c74115 chore(core): update description of the workspace member (#6492)
close AFF-805
2024-04-11 09:53:03 +00:00
DarkSky
db1206dbd5 fix: re-create session should skip rewrite messages (#6513) 2024-04-11 12:22:45 +08:00
renovate
5cd4c051fd chore: bump up @testing-library/react version to v15 (#6508)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@testing-library/react](https://togithub.com/testing-library/react-testing-library) | [`^14.2.1` -> `^15.0.0`](https://renovatebot.com/diffs/npm/@testing-library%2freact/14.2.1/15.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@testing-library%2freact/15.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@testing-library%2freact/15.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@testing-library%2freact/14.2.1/15.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@testing-library%2freact/14.2.1/15.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

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

### [`v15.0.0`](https://togithub.com/testing-library/react-testing-library/compare/v14.3.0...787cb85f8baa3d2e2a9916b7dad12c0a76d787a4)

[Compare Source](https://togithub.com/testing-library/react-testing-library/compare/v14.3.0...v15.0.0)

### [`v14.3.0`](https://togithub.com/testing-library/react-testing-library/compare/v14.2.2...9c4a46d5b9923c21c936d206614a8febcc939fc2)

[Compare Source](https://togithub.com/testing-library/react-testing-library/compare/v14.2.2...v14.3.0)

### [`v14.2.2`](https://togithub.com/testing-library/react-testing-library/compare/v14.2.1...3da62fd9741ca74bcd0d2bc668ba76a2d8f3751f)

[Compare Source](https://togithub.com/testing-library/react-testing-library/compare/v14.2.1...v14.2.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.

🔕 **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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-11 03:23:27 +00:00
renovate
aaeae8ebcd chore: bump up stripe version to v15 (#6512)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [stripe](https://togithub.com/stripe/stripe-node) | [`^14.18.0` -> `^15.0.0`](https://renovatebot.com/diffs/npm/stripe/14.18.0/15.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/stripe/15.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/stripe/15.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/stripe/14.18.0/15.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/stripe/14.18.0/15.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

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

### [`v15.0.0`](https://togithub.com/stripe/stripe-node/blob/HEAD/CHANGELOG.md#1500---2024-04-10)

[Compare Source](https://togithub.com/stripe/stripe-node/compare/v14.25.0...v15.0.0)

-   [#&#8203;2057](https://togithub.com/stripe/stripe-node/pull/2057)

    -   This release changes the pinned API version to `2024-04-10`. Please read the [API Upgrade Guide](https://stripe.com/docs/upgrades#2024-04-10) and carefully review the API changes before upgrading.

##### ⚠️ Breaking changes

-   Rename event type `InvoiceitemCreatedEvent` to `InvoiceItemCreatedEvent`
-   Rename event type `InvoiceitemDeletedEvent` to `InvoiceItemDeletedEvent`
-   Rename `features` to `marketing_features` on `ProductCreateOptions`, `ProductUpdateOptions`, and `Product`.

##### ⚠️ Removal of enum values, properties and events that are no longer part of the publicly documented Stripe API

-   Remove `subscription_pause` from the below as the feature to pause subscription on the portal has been deprecated.
    -   `BillingPortal.Configuration.Features`
    -   `BillingPortal.ConfigurationCreateParams.Features`
    -   `BillingPortal.ConfigurationUpdateParams.Features`
-   Remove the below deprecated values for the type `BalanceTransaction.Type`
    -   `obligation_inbound`
    -   `obligation_payout`
    -   `obligation_payout_failure`
    -   `'obligation_reversal_outbound'`
-   Remove deprecated value `various` for the type `Climate.Supplier.RemovalPathway`
-   Remove deprecated events
    -   `invoiceitem.updated`
    -   `order.created`
    -   `recipient.created`
    -   `recipient.deleted`
    -   `recipient.updated`
    -   `sku.created`
    -   `sku.deleted`
    -   `sku.updated`
-   Remove types for the deprecated events
    -   `InvoiceItemUpdatedEvent`
    -   `OrderCreatedEvent`
    -   `RecipientCreatedEvent`
    -   `RecipientDeletedEvent`
    -   `RecipientUpdatedEvent`
    -   `SKUCreatedEvent`
    -   `SKUDeletedEvent`
-   Remove the deprecated value `include_and_require` for the type`InvoiceCreateParams.PendingInvoiceItemsBehavior`
-   Remove the deprecated value `service_tax` for the types `TaxRate.TaxType`, `TaxRateCreateParams.TaxType`, `TaxRateUpdateParams.TaxType`, and `InvoiceUpdateLineItemParams.TaxAmount.TaxRateData`
-   Remove `request_incremental_authorization` from `PaymentIntentCreateParams.PaymentMethodOptions.CardPresent`, `PaymentIntentUpdateParams.PaymentMethodOptions.CardPresent` and `PaymentIntentConfirmParams.PaymentMethodOptions.CardPresent`
-   Remove support for `id_bank_transfer`, `multibanco`, `netbanking`, `pay_by_bank`, and `upi` on `PaymentMethodConfiguration`
-   Remove the deprecated value `obligation` for the type `Reporting.ReportRunCreateParams.Parameters.ReportingCategory`
-   Remove the deprecated value `challenge_only` from the type `SetupIntent.PaymentMethodOptions.Card.RequestThreeDSecure`
-   Remove the legacy field `rendering_options` in `Invoice`, `InvoiceCreateOptions` and `InvoiceUpdateOptions`. Use `rendering` instead.

### [`v14.25.0`](https://togithub.com/stripe/stripe-node/blob/HEAD/CHANGELOG.md#14250---2024-04-09)

[Compare Source](https://togithub.com/stripe/stripe-node/compare/v14.24.0...v14.25.0)

-   [#&#8203;2059](https://togithub.com/stripe/stripe-node/pull/2059) Update generated code
    -   Add support for new resources `Entitlements.ActiveEntitlement` and `Entitlements.Feature`
    -   Add support for `list` and `retrieve` methods on resource `ActiveEntitlement`
    -   Add support for `create`, `list`, `retrieve`, and `update` methods on resource `Feature`
    -   Add support for `controller` on `AccountCreateParams`
    -   Add support for `fees`, `losses`, `requirement_collection`, and `stripe_dashboard` on `Account.controller`
    -   Add support for new value `none` on enum `Account.type`
    -   Add support for `event_name` on `Billing.MeterEventAdjustmentCreateParams` and `Billing.MeterEventAdjustment`
    -   Add support for `cancel` and `type` on `Billing.MeterEventAdjustment`

### [`v14.24.0`](https://togithub.com/stripe/stripe-node/blob/HEAD/CHANGELOG.md#14240---2024-04-04)

[Compare Source](https://togithub.com/stripe/stripe-node/compare/v14.23.0...v14.24.0)

-   [#&#8203;2053](https://togithub.com/stripe/stripe-node/pull/2053) Update generated code
    -   Change `Charge.payment_method_details.us_bank_account.payment_reference`, `PaymentIntent.next_action.swish_handle_redirect_or_display_qr_code.hosted_instructions_url`, `PaymentIntent.next_action.swish_handle_redirect_or_display_qr_code.mobile_auth_url`, `PaymentIntent.next_action.swish_handle_redirect_or_display_qr_code.qr_code.data`, `PaymentIntent.next_action.swish_handle_redirect_or_display_qr_code.qr_code.image_url_png`, `PaymentIntent.next_action.swish_handle_redirect_or_display_qr_code.qr_code.image_url_svg`, `PaymentIntent.next_action.swish_handle_redirect_or_display_qr_code.qr_code`, and `PaymentIntent.payment_method_options.swish.reference` to be required
    -   Change type of `Checkout.SessionCreateParams.payment_method_options.swish.reference` from `emptyable(string)` to `string`
    -   Add support for `subscription_item` on `Discount`
    -   Add support for `email` and `phone` on `Identity.VerificationReport`, `Identity.VerificationSession.options`, `Identity.VerificationSession.verified_outputs`, `Identity.VerificationSessionCreateParams.options`, and `Identity.VerificationSessionUpdateParams.options`
    -   Add support for `verification_flow` on `Identity.VerificationReport`, `Identity.VerificationSessionCreateParams`, and `Identity.VerificationSession`
    -   Add support for new value `verification_flow` on enums `Identity.VerificationReport.type` and `Identity.VerificationSession.type`
    -   Add support for `provided_details` on `Identity.VerificationSessionCreateParams`, `Identity.VerificationSessionUpdateParams`, and `Identity.VerificationSession`
    -   Change `Identity.VerificationSessionCreateParams.type` to be optional
    -   Add support for new values `email_unverified_other`, `email_verification_declined`, `phone_unverified_other`, and `phone_verification_declined` on enum `Identity.VerificationSession.last_error.code`
    -   Add support for `promotion_code` on `InvoiceCreateParams.discounts[]`, `InvoiceItemCreateParams.discounts[]`, `InvoiceItemUpdateParams.discounts[]`, `InvoiceUpdateParams.discounts[]`, `QuoteCreateParams.discounts[]`, and `QuoteUpdateParams.discounts[]`
    -   Add support for `discounts` on `InvoiceUpcomingLinesParams.subscription_items[]`, `InvoiceUpcomingParams.subscription_items[]`, `QuoteCreateParams.line_items[]`, `QuoteUpdateParams.line_items[]`, `SubscriptionCreateParams.add_invoice_items[]`, `SubscriptionCreateParams.items[]`, `SubscriptionCreateParams`, `SubscriptionItemCreateParams`, `SubscriptionItemUpdateParams`, `SubscriptionItem`, `SubscriptionSchedule.phases[].add_invoice_items[]`, `SubscriptionSchedule.phases[].items[]`, `SubscriptionSchedule.phases[]`, `SubscriptionScheduleCreateParams.phases[].add_invoice_items[]`, `SubscriptionScheduleCreateParams.phases[].items[]`, `SubscriptionScheduleCreateParams.phases[]`, `SubscriptionScheduleUpdateParams.phases[].add_invoice_items[]`, `SubscriptionScheduleUpdateParams.phases[].items[]`, `SubscriptionScheduleUpdateParams.phases[]`, `SubscriptionUpdateParams.add_invoice_items[]`, `SubscriptionUpdateParams.items[]`, `SubscriptionUpdateParams`, and `Subscription`
    -   Change type of `Invoice.discounts` from `array(expandable(deletable($Discount))) | null` to `array(expandable(deletable($Discount)))`
    -   Add support for `allowed_merchant_countries` and `blocked_merchant_countries` on `Issuing.Card.spending_controls`, `Issuing.CardCreateParams.spending_controls`, `Issuing.CardUpdateParams.spending_controls`, `Issuing.Cardholder.spending_controls`, `Issuing.CardholderCreateParams.spending_controls`, and `Issuing.CardholderUpdateParams.spending_controls`
    -   Add support for `zip` on `PaymentMethodConfigurationCreateParams`, `PaymentMethodConfigurationUpdateParams`, and `PaymentMethodConfiguration`
    -   Add support for `offline` on `SetupAttempt.payment_method_details.card_present`
    -   Add support for `card_present` on `SetupIntent.payment_method_options`, `SetupIntentConfirmParams.payment_method_options`, `SetupIntentCreateParams.payment_method_options`, and `SetupIntentUpdateParams.payment_method_options`
    -   Add support for new value `mobile_phone_reader` on enums `Terminal.Reader.device_type` and `Terminal.ReaderListParams.device_type`

### [`v14.23.0`](https://togithub.com/stripe/stripe-node/blob/HEAD/CHANGELOG.md#14230---2024-03-28)

[Compare Source](https://togithub.com/stripe/stripe-node/compare/v14.22.0...v14.23.0)

-   [#&#8203;2046](https://togithub.com/stripe/stripe-node/pull/2046) Update generated code
    -   Add support for new resources `Billing.MeterEventAdjustment`, `Billing.MeterEvent`, and `Billing.Meter`
    -   Add support for `create`, `deactivate`, `list`, `reactivate`, `retrieve`, and `update` methods on resource `Meter`
    -   Add support for `create` method on resources `MeterEventAdjustment` and `MeterEvent`
    -   Add support for `amazon_pay_payments` on `Account.capabilities`, `AccountCreateParams.capabilities`, and `AccountUpdateParams.capabilities`
    -   Add support for new value `verification_failed_representative_authority` on enums `Account.future_requirements.errors[].code`, `Account.requirements.errors[].code`, `BankAccount.future_requirements.errors[].code`, and `BankAccount.requirements.errors[].code`
    -   Add support for `destination_on_behalf_of_charge_management` on `AccountSession.components.payment_details.features`, `AccountSession.components.payments.features`, `AccountSessionCreateParams.components.payment_details.features`, and `AccountSessionCreateParams.components.payments.features`
    -   Add support for `mandate` on `Charge.payment_method_details.us_bank_account`, `Treasury.InboundTransfer.origin_payment_method_details.us_bank_account`, `Treasury.OutboundPayment.destination_payment_method_details.us_bank_account`, and `Treasury.OutboundTransfer.destination_payment_method_details.us_bank_account`
    -   Add support for `second_line` on `Issuing.CardCreateParams`
    -   Add support for `meter` on `PlanCreateParams`, `Plan`, `Price.recurring`, `PriceCreateParams.recurring`, and `PriceListParams.recurring`
-   [#&#8203;2045](https://togithub.com/stripe/stripe-node/pull/2045) esbuild test project fixes

### [`v14.22.0`](https://togithub.com/stripe/stripe-node/blob/HEAD/CHANGELOG.md#14220---2024-03-21)

[Compare Source](https://togithub.com/stripe/stripe-node/compare/v14.21.0...v14.22.0)

-   [#&#8203;2040](https://togithub.com/stripe/stripe-node/pull/2040) Update generated code
    -   Add support for new resources `ConfirmationToken` and `Forwarding.Request`
    -   Add support for `retrieve` method on resource `ConfirmationToken`
    -   Add support for `create`, `list`, and `retrieve` methods on resource `Request`
    -   Add support for `mobilepay_payments` on `Account.capabilities`, `AccountCreateParams.capabilities`, and `AccountUpdateParams.capabilities`
    -   Add support for new values `forwarding_api_inactive`, `forwarding_api_invalid_parameter`, `forwarding_api_upstream_connection_error`, and `forwarding_api_upstream_connection_timeout` on enums `Invoice.last_finalization_error.code`, `PaymentIntent.last_payment_error.code`, `SetupAttempt.setup_error.code`, `SetupIntent.last_setup_error.code`, and `StripeError.code`
    -   Add support for `mobilepay` on `Charge.payment_method_details`, `PaymentIntent.payment_method_options`, `PaymentIntentConfirmParams.payment_method_data`, `PaymentIntentConfirmParams.payment_method_options`, `PaymentIntentCreateParams.payment_method_data`, `PaymentIntentCreateParams.payment_method_options`, `PaymentIntentUpdateParams.payment_method_data`, `PaymentIntentUpdateParams.payment_method_options`, `PaymentMethodCreateParams`, `PaymentMethod`, `SetupIntentConfirmParams.payment_method_data`, `SetupIntentCreateParams.payment_method_data`, and `SetupIntentUpdateParams.payment_method_data`
    -   Add support for `payment_reference` on `Charge.payment_method_details.us_bank_account`
    -   Add support for new value `mobilepay` on enums `CustomerListPaymentMethodsParams.type`, `PaymentMethodCreateParams.type`, and `PaymentMethodListParams.type`
    -   Add support for `confirmation_token` on `PaymentIntentConfirmParams`, `PaymentIntentCreateParams`, `SetupIntentConfirmParams`, and `SetupIntentCreateParams`
    -   Add support for new value `mobilepay` on enums `PaymentIntentConfirmParams.payment_method_data.type`, `PaymentIntentCreateParams.payment_method_data.type`, `PaymentIntentUpdateParams.payment_method_data.type`, `SetupIntentConfirmParams.payment_method_data.type`, `SetupIntentCreateParams.payment_method_data.type`, and `SetupIntentUpdateParams.payment_method_data.type`
    -   Add support for new value `mobilepay` on enum `PaymentMethod.type`
    -   Add support for `name` on `Terminal.ConfigurationCreateParams`, `Terminal.ConfigurationUpdateParams`, and `Terminal.Configuration`
    -   Add support for `payout` on `Treasury.ReceivedDebit.linked_flows`
-   [#&#8203;2043](https://togithub.com/stripe/stripe-node/pull/2043) Don't mutate error.type during minification

### [`v14.21.0`](https://togithub.com/stripe/stripe-node/blob/HEAD/CHANGELOG.md#14210---2024-03-14)

[Compare Source](https://togithub.com/stripe/stripe-node/compare/v14.20.0...v14.21.0)

-   [#&#8203;2035](https://togithub.com/stripe/stripe-node/pull/2035) Update generated code
    -   Add support for new resources `Issuing.PersonalizationDesign` and `Issuing.PhysicalBundle`
    -   Add support for `create`, `list`, `retrieve`, and `update` methods on resource `PersonalizationDesign`
    -   Add support for `list` and `retrieve` methods on resource `PhysicalBundle`
    -   Add support for `personalization_design` on `Issuing.CardCreateParams`, `Issuing.CardListParams`, `Issuing.CardUpdateParams`, and `Issuing.Card`
    -   Change type of `SubscriptionCreateParams.application_fee_percent` and `SubscriptionUpdateParams.application_fee_percent` from `number` to `emptyStringable(number)`
    -   Add support for `sepa_debit` on `Subscription.payment_settings.payment_method_options`, `SubscriptionCreateParams.payment_settings.payment_method_options`, and `SubscriptionUpdateParams.payment_settings.payment_method_options`

### [`v14.20.0`](https://togithub.com/stripe/stripe-node/blob/HEAD/CHANGELOG.md#14200---2024-03-07)

[Compare Source](https://togithub.com/stripe/stripe-node/compare/v14.19.0...v14.20.0)

-   [#&#8203;2033](https://togithub.com/stripe/stripe-node/pull/2033) Update generated code
    -   Add support for `documents` on `AccountSession.components` and `AccountSessionCreateParams.components`
    -   Add support for `request_three_d_secure` on `Checkout.Session.payment_method_options.card` and `Checkout.SessionCreateParams.payment_method_options.card`
    -   Add support for `created` on `CreditNoteListParams`
    -   Add support for `sepa_debit` on `Invoice.payment_settings.payment_method_options`, `InvoiceCreateParams.payment_settings.payment_method_options`, and `InvoiceUpdateParams.payment_settings.payment_method_options`

### [`v14.19.0`](https://togithub.com/stripe/stripe-node/blob/HEAD/CHANGELOG.md#14190---2024-02-29)

[Compare Source](https://togithub.com/stripe/stripe-node/compare/v14.18.0...v14.19.0)

-   [#&#8203;2029](https://togithub.com/stripe/stripe-node/pull/2029) Update generated code
    -   Change `Identity.VerificationReport.type`, `SubscriptionSchedule.default_settings.invoice_settings.account_tax_ids`, `SubscriptionSchedule.phases[].invoice_settings.account_tax_ids`, and `TaxId.owner` to be required
    -   Change type of `Identity.VerificationSession.type` from `enum('document'|'id_number') | null` to `enum('document'|'id_number')`
    -   Add support for `number` on `InvoiceCreateParams` and `InvoiceUpdateParams`
    -   Add support for `enable_customer_cancellation` on `Terminal.Reader.action.process_payment_intent.process_config`, `Terminal.Reader.action.process_setup_intent.process_config`, `Terminal.ReaderProcessPaymentIntentParams.process_config`, and `Terminal.ReaderProcessSetupIntentParams.process_config`
    -   Add support for `refund_payment_config` on `Terminal.Reader.action.refund_payment` and `Terminal.ReaderRefundPaymentParams`
    -   Add support for `payment_method` on `TokenCreateParams.bank_account`
-   [#&#8203;2027](https://togithub.com/stripe/stripe-node/pull/2027) vscode settings: true -> "explicit"

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-11 03:12:46 +00:00
EYHN
c92bec0ebb chore: bump blocksuite (#6448)
## Features
- https://github.com/toeverything/BlockSuite/pull/6679 @pengx17
- https://github.com/toeverything/BlockSuite/pull/6620 @doouding
- https://github.com/toeverything/BlockSuite/pull/6602 @golok727
- https://github.com/toeverything/BlockSuite/pull/6661 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6591 @fundon
- https://github.com/toeverything/BlockSuite/pull/6634 @golok727
- https://github.com/toeverything/BlockSuite/pull/6626 @regischen
- https://github.com/toeverything/BlockSuite/pull/6630 @Saul-Mirone
- https://github.com/toeverything/BlockSuite/pull/6605 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6614 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6508 @doouding
- https://github.com/toeverything/BlockSuite/pull/6578 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6572 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6571 @golok727
- https://github.com/toeverything/BlockSuite/pull/6573 @fundon
- https://github.com/toeverything/BlockSuite/pull/6580 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6540 @golok727
- https://github.com/toeverything/BlockSuite/pull/6567 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6565 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6561 @zzj3720

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6677 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6681 @fundon
- https://github.com/toeverything/BlockSuite/pull/6673 @fundon
- https://github.com/toeverything/BlockSuite/pull/6652 @fundon
- https://github.com/toeverything/BlockSuite/pull/6641 @fourdim
- https://github.com/toeverything/BlockSuite/pull/6649 @golok727
- https://github.com/toeverything/BlockSuite/pull/6648 @doouding
- https://github.com/toeverything/BlockSuite/pull/6662 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6659 @zkwolf
- https://github.com/toeverything/BlockSuite/pull/6644 @doouding
- https://github.com/toeverything/BlockSuite/pull/6633 @golok727
- https://github.com/toeverything/BlockSuite/pull/6632 @golok727
- https://github.com/toeverything/BlockSuite/pull/6622 @RubaXa
- https://github.com/toeverything/BlockSuite/pull/6622 @RubaXa
- https://github.com/toeverything/BlockSuite/pull/6622 @RubaXa
- https://github.com/toeverything/BlockSuite/pull/6622 @RubaXa
- https://github.com/toeverything/BlockSuite/pull/6622 @RubaXa
- https://github.com/toeverything/BlockSuite/pull/6600 @fourdim
- https://github.com/toeverything/BlockSuite/pull/6617 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6618 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6576 @fundon
- https://github.com/toeverything/BlockSuite/pull/6595 @fundon
- https://github.com/toeverything/BlockSuite/pull/6596 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6574 @fundon
- https://github.com/toeverything/BlockSuite/pull/6593 @Saul-Mirone
- https://github.com/toeverything/BlockSuite/pull/6588 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6590 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6589 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6584 @lawvs
- https://github.com/toeverything/BlockSuite/pull/6579 @fundon
- https://github.com/toeverything/BlockSuite/pull/6538 @golok727
- https://github.com/toeverything/BlockSuite/pull/6570 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6569 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6564 @zzj3720
- https://github.com/toeverything/BlockSuite/pull/6563 @zzj3720

## Refactor
- https://github.com/toeverything/BlockSuite/pull/6683 @doodlewind
- https://github.com/toeverything/BlockSuite/pull/6668 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6635 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6653 @fundon
- https://github.com/toeverything/BlockSuite/pull/6615 @Flrande
- https://github.com/toeverything/BlockSuite/pull/6534 @Saul-Mirone
- https://github.com/toeverything/BlockSuite/pull/6553 @golok727

## Misc
- chore(examples): cleanup types
- https://github.com/toeverything/BlockSuite/pull/6664 @fourdim
- https://github.com/toeverything/BlockSuite/pull/6657 @fourdim
- https://github.com/toeverything/BlockSuite/pull/6654 @fourdim
- https://github.com/toeverything/BlockSuite/pull/6587 @Saul-Mirone
- https://github.com/toeverything/BlockSuite/pull/6562 @donteatfriedrice
2024-04-10 12:25:37 +00:00
darkskygit
9f349a2300 feat: text to image impl (#6437)
fix CLOUD-18
fix CLOUD-28
fix CLOUD-29
2024-04-10 12:13:39 +00:00
darkskygit
7c38a54f81 feat: copilot controller (#6272)
fix CLOUD-27
2024-04-10 11:58:40 +00:00
darkskygit
e6a576551a feat: add copilot impl (#6230)
fix CLOUD-22
fix CLOUD-24
2024-04-10 11:15:32 +00:00
darkskygit
46a368d7f1 feat: add session impl (#6254) 2024-04-10 11:15:25 +00:00
CatsJuice
8a02c81745 feat(core): remove toggle workspace onboarding dialog (#6501) 2024-04-10 09:07:59 +00:00
CatsJuice
a0c92b9966 feat(core): i18n for pricing plans (#6499)
feat(core): adjust pricing plans style

feat(core): i18n for pricing plans
2024-04-10 08:09:14 +00:00
JimmFly
6ea20e477b feat(core): add sign in to not found page (#6496)
close AFF-211
2024-04-10 07:27:02 +00:00
L-Sun
7d131ee9fc fix(core): viewport element not found in share page (#6453) 2024-04-10 15:26:22 +08:00
EYHN
939fa9cef0 fix(component): sign up password max length notify (#6467)
The input `maxLength` causes password to be automatically truncated without notice user.
2024-04-10 06:20:21 +00:00
JimmFly
a83f49e700 fix(core): unexpected horizontal scrolling after jump to block (#6475)
close TOV-788
2024-04-09 15:18:15 +00:00
CatsJuice
4a93582799 feat(core): ai subscription in billing page (#6476) 2024-04-09 08:54:54 +00:00
EYHN
97c4ae48b5 fix(infra): fix sync issues on old ids (#6474) 2024-04-09 04:40:15 +00:00
JimmFly
142896c41a fix(core): remove unexpected duplicate notification (#6477)
close TOV-775
2024-04-09 04:28:31 +00:00
JimmFly
5064ef2a94 fix(core): remove duplicate windows controls when right sidebar is expanded (#6480)
close TOV-786
2024-04-09 04:17:32 +00:00
JimmFly
8bcc89f8fc feat(core): add responsive styles to collection filter (#6486)
https://github.com/toeverything/AFFiNE/assets/102217452/caa4c09b-e1fd-4bd0-a504-535925607e2f
2024-04-09 04:05:18 +00:00
renovate
891ab6ab51 chore: bump up style-loader version to v4 (#6490)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [style-loader](https://togithub.com/webpack-contrib/style-loader) | [`^3.3.4` -> `^4.0.0`](https://renovatebot.com/diffs/npm/style-loader/3.3.4/4.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/style-loader/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/style-loader/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/style-loader/3.3.4/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/style-loader/3.3.4/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>webpack-contrib/style-loader (style-loader)</summary>

### [`v4.0.0`](https://togithub.com/webpack-contrib/style-loader/blob/HEAD/CHANGELOG.md#400-2024-04-08)

[Compare Source](https://togithub.com/webpack-contrib/style-loader/compare/v3.3.4...v4.0.0)

##### ⚠ BREAKING CHANGES

-   minimum supported webpack version is `5.27.0`
-   minimum support Node.js version is `18.12.0`
-   the `insert` option can only be a selector or the path to the module

Migration:

Before:

**webpack.config.js**

```js
module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: [
          {
            loader: "style-loader",
            options: {
              injectType: "styleTag",
              styleTagTransform: function (css, style) {
                // Do something ...
                style.innerHTML = `${css}.modify{}\n`;

                document.head.appendChild(style);
              },
            },
          },
          "css-loader",
        ],
      },
    ],
  },
};
```

After:

**insert-function.js**

```js
function insert(css, style) {
  var parent = options.target || document.head;

  parent.appendChild(element);
}

module.exports = insert;
```

**webpack.config.js**

```js
module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: [
          {
            loader: "style-loader",
            options: {
              insert: require.resolve("./insert.js"),
            },
          },
          "css-loader",
        ],
      },
    ],
  },
};
```

-   the `styleTagTransform` option can only be the path to the module

Migration:

Before:

**webpack.config.js**

```js
module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: [
          {
            loader: "style-loader",
            options: {
              injectType: "styleTag",
              styleTagTransform: function (css, style) {
                // Do something ...
                style.innerHTML = `${css}.modify{}\n`;

                document.head.appendChild(style);
              },
            },
          },
          "css-loader",
        ],
      },
    ],
  },
};
```

After:

**style-tag-transform-function.js**

```js
function styleTagTransform(css, style) {
  // Do something ...
  style.innerHTML = `${css}.modify{}\n`;

  document.head.appendChild(style);
}

module.exports = styleTagTransform;
```

**webpack.config.js**

```js
module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: [
          {
            loader: "style-loader",
            options: {
              styleTagTransform: require.resolve("./style-tag-transform-function.js"),
            },
          },
          "css-loader",
        ],
      },
    ],
  },
};
```

##### Bug Fixes

-   css experiments logic ([#&#8203;617](https://togithub.com/webpack-contrib/style-loader/issues/617)) ([8b9fc97](8b9fc97662))

##### [3.3.3](https://togithub.com/webpack-contrib/style-loader/compare/v3.3.2...v3.3.3) (2023-05-19)

##### Bug Fixes

-   compatibility with built-in CSS support ([#&#8203;605](https://togithub.com/webpack-contrib/style-loader/issues/605)) ([9636f58](9636f58054))

##### [3.3.2](https://togithub.com/webpack-contrib/style-loader/compare/v3.3.1...v3.3.2) (2023-03-13)

##### Bug Fixes

-   noop in environment without DOM API ([#&#8203;597](https://togithub.com/webpack-contrib/style-loader/issues/597)) ([03d3df3](03d3df3c36))

##### [3.3.1](https://togithub.com/webpack-contrib/style-loader/compare/v3.3.0...v3.3.1) (2021-10-21)

##### Bug Fixes

-   small perf improvement ([#&#8203;544](https://togithub.com/webpack-contrib/style-loader/issues/544)) ([610524e](610524ef62))

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-09 03:52:32 +00:00
CatsJuice
803b17ae78 style(component): remove button's shadow (#6481) 2024-04-09 03:06:28 +00:00
CatsJuice
d9504e4eb7 fix(core): avoid flicking when click sidebar user avatar (#6482) 2024-04-09 02:52:51 +00:00
renovate
f590d84711 chore: bump up vite version to v5.0.13 [SECURITY] (#6455)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [vite](https://vitejs.dev) ([source](https://togithub.com/vitejs/vite/tree/HEAD/packages/vite)) | [`5.0.12` -> `5.0.13`](https://renovatebot.com/diffs/npm/vite/5.0.12/5.0.13) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite/5.0.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/5.0.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/5.0.12/5.0.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/5.0.12/5.0.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

### GitHub Vulnerability Alerts

#### [CVE-2024-31207](https://togithub.com/vitejs/vite/security/advisories/GHSA-8jhw-289h-jh2g)

### Summary
[Vite dev server option](https://vitejs.dev/config/server-options.html#server-fs-deny) `server.fs.deny` did not deny requests for patterns with directories. An example of such a pattern is `/foo/**/*`.

### Impact
Only apps setting a custom `server.fs.deny` that includes a pattern with directories, and explicitly exposing the Vite dev server to the network (using `--host` or [`server.host` config option](https://vitejs.dev/config/server-options.html#server-host)) are affected.

### Patches
Fixed in vite@5.2.6, vite@5.1.7, vite@5.0.13, vite@4.5.3, vite@3.2.10, vite@2.9.18

### Details
`server.fs.deny` uses picomatch with the config of `{ matchBase: true }`. [matchBase](https://togithub.com/micromatch/picomatch/blob/master/README.md#options:~:text=Description-,basename,-boolean) only matches the basename of the file, not the path due to a bug ([https://github.com/micromatch/picomatch/issues/89](https://togithub.com/micromatch/picomatch/issues/89)). The vite config docs read like you should be able to set fs.deny to glob with picomatch. Vite also does not set `{ dot: true }` and that causes [dotfiles not to be denied](https://togithub.com/micromatch/picomatch/blob/master/README.md#options:~:text=error%20is%20thrown.-,dot,-boolean) unless they are explicitly defined.

**Reproduction**

Set fs.deny to `['**/.git/**']` and then curl for `/.git/config`.

* with `matchBase: true`, you can get any file under  `.git/` (config, HEAD, etc).
* with `matchBase: false`, you cannot get any file under  `.git/` (config, HEAD, etc).

---

### Release Notes

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

### [`v5.0.13`](https://togithub.com/vitejs/vite/releases/tag/v5.0.13)

[Compare Source](https://togithub.com/vitejs/vite/compare/v5.0.12...v5.0.13)

Please refer to [CHANGELOG.md](https://togithub.com/vitejs/vite/blob/v5.0.13/packages/vite/CHANGELOG.md) for details.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (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.

🔕 **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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-08 13:20:31 +00:00
forehalo
b01a8bb2ab fix(server): give s3 client a default request timeout (#6483) 2024-04-08 08:41:55 +00:00
dependabot
9f66b810a6 build(deps): bump whoami from 1.4.1 to 1.5.1 (#6471)
Bumps [whoami](https://github.com/ardaku/whoami) from 1.4.1 to 1.5.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/ardaku/whoami/blob/v1/CHANGELOG.md">whoami's changelog</a>.</em></p>
<blockquote>
<h2>[1.5.1] - 2024-03-09</h2>
<h3>Fixed</h3>
<ul>
<li>Broken link in docs</li>
</ul>
<h2>[1.5.0] - 2024-03-03</h2>
<h3>Added</h3>
<ul>
<li>WASI support</li>
<li>Redox support</li>
<li>Fallible functions
<ul>
<li><code>whoami::fallible::devicename()</code></li>
<li><code>whoami::fallible::devicename_os()</code></li>
<li><code>whoami::fallible::distro()</code></li>
<li><code>whoami::fallible::hostname()</code> - notably doesn't normalize to lowercase</li>
<li><code>whoami::fallible::realname()</code></li>
<li><code>whoami::fallible::realname_os()</code></li>
<li><code>whoami::fallible::username()</code></li>
<li><code>whoami::fallible::username_os()</code></li>
</ul>
</li>
<li><code>whoami::Language</code></li>
<li><code>whoami::Country</code></li>
<li><code>whoami::langs()</code></li>
<li><code>whoami::fallible::account()</code></li>
<li><code>whoami::fallible::account_os()</code></li>
<li><code>whoami::DesktopEnv::is_gtk()</code></li>
<li><code>whoami::DesktopEnv::is_kde()</code></li>
</ul>
<h3>Removed</h3>
<ul>
<li>Generated device names that infer casing based on the hostname when the
device name is not available - now returns the hostname unchanged</li>
<li>Partial (potentially unsound) support for Android, iOS, watchOS, tvOS,
Fuchsia, Haiku, Solaris, and a few others.  These targets now use the &quot;fake&quot;
implementation.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Deprecated <code>whoami::distro_os()</code></li>
<li>Deprecated <code>whoami::hostname()</code></li>
<li>Deprecated <code>whoami::hostname_os()</code></li>
<li>Deprecated <code>whoami::lang()</code></li>
<li>illumos and Redox are no longer untested targets</li>
<li>Documented that illumos and Redox have a higher MSRV (Rust 1.65) than other
targets</li>
<li>Display implementation on <code>Platform::Illumos</code> now displays in lowercase:
illumos</li>
</ul>
<h3>Fixed</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="74a0c3b8b8"><code>74a0c3b</code></a> Prepare to release whoami 1.5.1 (<a href="https://redirect.github.com/ardaku/whoami/issues/109">#109</a>)</li>
<li><a href="7789b3f9dd"><code>7789b3f</code></a> Backport v2 -&gt; v1: Test docs in CI (<a href="https://redirect.github.com/ardaku/whoami/issues/108">#108</a>)</li>
<li><a href="4bbaf5201b"><code>4bbaf52</code></a> Prevent future potential UB in unix wrapper for <code>getpwuid()</code> (<a href="https://redirect.github.com/ardaku/whoami/issues/104">#104</a>)</li>
<li><a href="358dc0ef16"><code>358dc0e</code></a> WhoAmI 1.5.0 Release (<a href="https://redirect.github.com/ardaku/whoami/issues/94">#94</a>)</li>
<li><a href="d6ee13ed9e"><code>d6ee13e</code></a> Fix Instances of Memory Corruption on Illumos (<a href="https://redirect.github.com/ardaku/whoami/issues/93">#93</a>)</li>
<li><a href="953e702c0b"><code>953e702</code></a> Support Redox (<a href="https://redirect.github.com/ardaku/whoami/issues/92">#92</a>)</li>
<li><a href="5bc73e4e63"><code>5bc73e4</code></a> Preserve OS case for hostnames (<a href="https://redirect.github.com/ardaku/whoami/issues/86">#86</a>)</li>
<li><a href="29d5f22103"><code>29d5f22</code></a> Support WASI (<a href="https://redirect.github.com/ardaku/whoami/issues/84">#84</a>)</li>
<li><a href="d7885e7c75"><code>d7885e7</code></a> Add <code>Target</code> trait for implementing new targets (<a href="https://redirect.github.com/ardaku/whoami/issues/80">#80</a>)</li>
<li><a href="e3da4c56f9"><code>e3da4c5</code></a> Add <code>langs()</code> function, deprecate <code>lang()</code> (<a href="https://redirect.github.com/ardaku/whoami/issues/78">#78</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/ardaku/whoami/compare/v1.4.1...v1.5.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=whoami&package-manager=cargo&previous-version=1.4.1&new-version=1.5.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/toeverything/AFFiNE/network/alerts).

</details>
2024-04-08 02:46:13 +00:00
renovate
4736776ae9 chore: bump up jotai-effect version to v1 (#6472)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [jotai-effect](https://togithub.com/jotaijs/jotai-effect) | [`^0.6.0` -> `^1.0.0`](https://renovatebot.com/diffs/npm/jotai-effect/0.6.0/1.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-effect/1.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-effect/1.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-effect/0.6.0/1.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-effect/0.6.0/1.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>jotaijs/jotai-effect (jotai-effect)</summary>

### [`v1.0.0`](https://togithub.com/jotaijs/jotai-effect/releases/tag/v1.0.0)

[Compare Source](https://togithub.com/jotaijs/jotai-effect/compare/v0.6.0...v1.0.0)

I am thrilled to announce the release of Jotai Effect version 1.0! This milestone represents a significant achievement marking its readiness for production use.

Jotai Effect was started last October with the aim of providing a utility package for reactive side effects within the Jotai ecosystem. Over the past six months, I have been closely monitoring the API's stability and its effectiveness in real-world applications.

For those eagerly waiting for Jotai to be considered production-ready, the moment has finally arrived. The feedback from our community has been overwhelmingly positive, and today, I'm confident that Jotai Effect is ready for its prime time.

I couldn't have reached this point without the help of our amazing contributors, Daishi Kato ([@&#8203;dai-shi](https://togithub.com/dai-shi)) and Alex Yang ([@&#8203;himself65](https://togithub.com/himself65)). Their early contributions were pivotal in honing the library to what it is today. Additionally, I want to extend my gratitude to our vibrant community on [Discord](https://discord.com/invite/poimandres) for their continuous support and feedback.
Thank you.

As we celebrate this release, I encourage you to explore [Jotai Effect](https://jotai.org/docs/extensions/effect) and discover how it can streamline your reactive programming workflows. Happy Coding!

Best regards,
David Maskasky

*The full discussion can be viewed [here](https://togithub.com/jotaijs/jotai-effect/discussions/34).*

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-08 02:12:52 +00:00
renovate
4351dc8541 chore: bump up css-loader version to v7 (#6458)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [css-loader](https://togithub.com/webpack-contrib/css-loader) | [`^6.10.0` -> `^7.0.0`](https://renovatebot.com/diffs/npm/css-loader/6.10.0/7.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/css-loader/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/css-loader/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/css-loader/6.10.0/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/css-loader/6.10.0/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>webpack-contrib/css-loader (css-loader)</summary>

### [`v7.0.0`](https://togithub.com/webpack-contrib/css-loader/blob/HEAD/CHANGELOG.md#700-2024-04-04)

[Compare Source](https://togithub.com/webpack-contrib/css-loader/compare/v6.11.0...v7.0.0)

##### ⚠ BREAKING CHANGES

-   The `modules.namedExport` option is `true` by default if you enable the `esModule` option

Migration guide:

Before:

```js
import style from "./style.css";

console.log(style.myClass);
```

After:

```js
import * as style from "./style.css";

console.log(style.myClass);
```

-   The `modules.exportLocalsConvention` has the value `as-is` when the `modules.namedExport` option is `true` and you don't specify a value
-   Minimum supported webpack version is `5.27.0`
-   Minimum supported Node.js version is `18.12.0`

##### Features

-   The `modules.namedExports` option works fine with any `modules.exportLocalsConvention` values ([f96a110](f96a11007d))
-   Added dashed variants for the `modules.exportLocalsConvention` options ([40e1668](40e1668b83))

### [`v6.11.0`](https://togithub.com/webpack-contrib/css-loader/blob/HEAD/CHANGELOG.md#6110-2024-04-03)

[Compare Source](https://togithub.com/webpack-contrib/css-loader/compare/v6.10.0...v6.11.0)

##### Features

-   supports multiple composes ([#&#8203;1582](https://togithub.com/webpack-contrib/css-loader/issues/1582)) ([bbca614](bbca61411d))

##### Bug Fixes

-   do not break `@scope` at-rule without params ([#&#8203;1581](https://togithub.com/webpack-contrib/css-loader/issues/1581)) ([e022e3b](e022e3bb40))

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-08 01:55:38 +00:00
renovate
39c90a4428 chore: bump up undici version to v6.11.1 [SECURITY] (#6457)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

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

### GitHub Vulnerability Alerts

#### [CVE-2024-30260](https://togithub.com/nodejs/undici/security/advisories/GHSA-m4v8-wqvr-p9f7)

### Impact

Undici cleared Authorization and Proxy-Authorization headers for `fetch()`, but did not clear them for `undici.request()`.

### Patches

This has been patched in 6805746680.
Fixes has been released in v5.28.4 and v6.11.1.

### Workarounds

use `fetch()` or disable `maxRedirections`.

### References

Linzi Shang reported this.

* https://hackerone.com/reports/2408074
* https://github.com/nodejs/undici/security/advisories/GHSA-3787-6prv-h9w3

#### [CVE-2024-30261](https://togithub.com/nodejs/undici/security/advisories/GHSA-9qxr-qj54-h672)

### Impact

If an attacker can alter the `integrity` option passed to `fetch()`, they can let `fetch()` accept requests as valid even if they have been tampered.

### Patches

Fixed in d542b8cd39.
Fixes has been released in v5.28.4 and v6.11.1.

### Workarounds

Ensure that `integrity` cannot be tampered with.

### References

https://hackerone.com/reports/2377760

---

### Release Notes

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

### [`v6.11.1`](https://togithub.com/nodejs/undici/compare/v6.11.0...6df3c738d03dc4014a26640316bf699950d62024)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.11.0...v6.11.1)

### [`v6.11.0`](https://togithub.com/nodejs/undici/compare/v6.10.2...ee5f892f3955eaca37730ed30349153ba203e9cd)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.10.2...v6.11.0)

### [`v6.10.2`](https://togithub.com/nodejs/undici/releases/tag/v6.10.2)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.10.1...v6.10.2)

##### What's Changed

-   Do not fail test if streams support typed arrays by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2978](https://togithub.com/nodejs/undici/pull/2978)
-   fix(fetch): properly redirect non-ascii location header url by [@&#8203;Xvezda](https://togithub.com/Xvezda) in [https://github.com/nodejs/undici/pull/2971](https://togithub.com/nodejs/undici/pull/2971)
-   perf: Remove double-stringify in setCookie by [@&#8203;peterver](https://togithub.com/peterver) in [https://github.com/nodejs/undici/pull/2980](https://togithub.com/nodejs/undici/pull/2980)
-   \[fix [#&#8203;2982](https://togithub.com/nodejs/undici/issues/2982)] use DispatcherInterceptor type for Dispatcher#Compose by [@&#8203;clovis-guillemot](https://togithub.com/clovis-guillemot) in [https://github.com/nodejs/undici/pull/2983](https://togithub.com/nodejs/undici/pull/2983)
-   fix: make EventSource properties enumerable by [@&#8203;MattBidewell](https://togithub.com/MattBidewell) in [https://github.com/nodejs/undici/pull/2987](https://togithub.com/nodejs/undici/pull/2987)
-   docs: ✏️ fixed benchmark links by [@&#8203;benhalverson](https://togithub.com/benhalverson) in [https://github.com/nodejs/undici/pull/2991](https://togithub.com/nodejs/undici/pull/2991)
-   fix([#&#8203;2986](https://togithub.com/nodejs/undici/issues/2986)): bad start check by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [https://github.com/nodejs/undici/pull/2992](https://togithub.com/nodejs/undici/pull/2992)
-   fix(H2 Client): bind stream 'data' listener only after received 'response' event by [@&#8203;St3ffGv4](https://togithub.com/St3ffGv4) in [https://github.com/nodejs/undici/pull/2985](https://togithub.com/nodejs/undici/pull/2985)
-   feat:  added search input by [@&#8203;benhalverson](https://togithub.com/benhalverson) in [https://github.com/nodejs/undici/pull/2993](https://togithub.com/nodejs/undici/pull/2993)
-   chore: validate responses can be consumed without a Content-Length or… by [@&#8203;jacob-ebey](https://togithub.com/jacob-ebey) in [https://github.com/nodejs/undici/pull/2995](https://togithub.com/nodejs/undici/pull/2995)
-   fix error message by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2998](https://togithub.com/nodejs/undici/pull/2998)
-   Revert "perf: reuse TextDecoder instance ([#&#8203;2863](https://togithub.com/nodejs/undici/issues/2863))" by [@&#8203;panva](https://togithub.com/panva) in [https://github.com/nodejs/undici/pull/2999](https://togithub.com/nodejs/undici/pull/2999)
-   test: remove only by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [https://github.com/nodejs/undici/pull/3001](https://togithub.com/nodejs/undici/pull/3001)

##### New Contributors

-   [@&#8203;Xvezda](https://togithub.com/Xvezda) made their first contribution in [https://github.com/nodejs/undici/pull/2971](https://togithub.com/nodejs/undici/pull/2971)
-   [@&#8203;peterver](https://togithub.com/peterver) made their first contribution in [https://github.com/nodejs/undici/pull/2980](https://togithub.com/nodejs/undici/pull/2980)
-   [@&#8203;clovis-guillemot](https://togithub.com/clovis-guillemot) made their first contribution in [https://github.com/nodejs/undici/pull/2983](https://togithub.com/nodejs/undici/pull/2983)
-   [@&#8203;MattBidewell](https://togithub.com/MattBidewell) made their first contribution in [https://github.com/nodejs/undici/pull/2987](https://togithub.com/nodejs/undici/pull/2987)
-   [@&#8203;benhalverson](https://togithub.com/benhalverson) made their first contribution in [https://github.com/nodejs/undici/pull/2991](https://togithub.com/nodejs/undici/pull/2991)
-   [@&#8203;St3ffGv4](https://togithub.com/St3ffGv4) made their first contribution in [https://github.com/nodejs/undici/pull/2985](https://togithub.com/nodejs/undici/pull/2985)
-   [@&#8203;jacob-ebey](https://togithub.com/jacob-ebey) made their first contribution in [https://github.com/nodejs/undici/pull/2995](https://togithub.com/nodejs/undici/pull/2995)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.10.0...v6.10.2

### [`v6.10.1`](https://togithub.com/nodejs/undici/compare/v6.10.0...dd3918fee4f90e02fb93ff1bc04e707144041938)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.10.0...v6.10.1)

### [`v6.10.0`](https://togithub.com/nodejs/undici/releases/tag/v6.10.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.9.0...v6.10.0)

#### What's Changed

-   test: fix flakyness of issue-803 test by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2960](https://togithub.com/nodejs/undici/pull/2960)
-   Cleanup format by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2959](https://togithub.com/nodejs/undici/pull/2959)
-   Chore: run tests daily against node nightly by [@&#8203;mweberxyz](https://togithub.com/mweberxyz) in [https://github.com/nodejs/undici/pull/2969](https://togithub.com/nodejs/undici/pull/2969)
-   fix: fix retry handler option by [@&#8203;acommodari](https://togithub.com/acommodari) in [https://github.com/nodejs/undici/pull/2962](https://togithub.com/nodejs/undici/pull/2962)
-   build(deps): bump node from `4999fa1` to `577f8eb` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2974](https://togithub.com/nodejs/undici/pull/2974)
-   feat(TS): add types for composed dispatchers by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [https://github.com/nodejs/undici/pull/2967](https://togithub.com/nodejs/undici/pull/2967)
-   fix: count for error response and network errors by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [https://github.com/nodejs/undici/pull/2966](https://togithub.com/nodejs/undici/pull/2966)

#### New Contributors

-   [@&#8203;mweberxyz](https://togithub.com/mweberxyz) made their first contribution in [https://github.com/nodejs/undici/pull/2969](https://togithub.com/nodejs/undici/pull/2969)
-   [@&#8203;acommodari](https://togithub.com/acommodari) made their first contribution in [https://github.com/nodejs/undici/pull/2962](https://togithub.com/nodejs/undici/pull/2962)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.9.0...v6.10.0

### [`v6.9.0`](https://togithub.com/nodejs/undici/releases/tag/v6.9.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.8.0...v6.9.0)

#### What's Changed

-   feat: add new dispatch compose by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [https://github.com/nodejs/undici/pull/2826](https://togithub.com/nodejs/undici/pull/2826)
-   ci: add macos-latest to test-matrix by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2952](https://togithub.com/nodejs/undici/pull/2952)
-   types: align RequestInit.body type with lib.dom.ts by [@&#8203;jdufresne](https://togithub.com/jdufresne) in [https://github.com/nodejs/undici/pull/2956](https://togithub.com/nodejs/undici/pull/2956)
-   ci: pin versions of github actions by [@&#8203;UlisesGascon](https://togithub.com/UlisesGascon) in [https://github.com/nodejs/undici/pull/2957](https://togithub.com/nodejs/undici/pull/2957)
-   fetch: improve output for FormData, Response, Request by [@&#8203;mertcanaltin](https://togithub.com/mertcanaltin) in [https://github.com/nodejs/undici/pull/2955](https://togithub.com/nodejs/undici/pull/2955)
-   perf: optimize collectASequenceOfBytes by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2958](https://togithub.com/nodejs/undici/pull/2958)

#### New Contributors

-   [@&#8203;jdufresne](https://togithub.com/jdufresne) made their first contribution in [https://github.com/nodejs/undici/pull/2956](https://togithub.com/nodejs/undici/pull/2956)
-   [@&#8203;UlisesGascon](https://togithub.com/UlisesGascon) made their first contribution in [https://github.com/nodejs/undici/pull/2957](https://togithub.com/nodejs/undici/pull/2957)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.8.0...v6.9.0

### [`v6.8.0`](https://togithub.com/nodejs/undici/releases/tag/v6.8.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.7.1...v6.8.0)

#### What's Changed

-   fix: send correct SNI for proxy connections by [@&#8203;chrros95](https://togithub.com/chrros95) in [https://github.com/nodejs/undici/pull/2939](https://togithub.com/nodejs/undici/pull/2939)
-   build(deps): bump node from `8bf9240` to `7bfef1d` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2937](https://togithub.com/nodejs/undici/pull/2937)
-   fetch: improve util.inspect output for web specifications by [@&#8203;mertcanaltin](https://togithub.com/mertcanaltin) in [https://github.com/nodejs/undici/pull/2938](https://togithub.com/nodejs/undici/pull/2938)
-   ci: fix broken ci on windows and node v21 because of libuv bug by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2941](https://togithub.com/nodejs/undici/pull/2941)
-   perf: improve getResolveErrorBodyCallback by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2940](https://togithub.com/nodejs/undici/pull/2940)
-   fix: don't assign kAgent twice by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2942](https://togithub.com/nodejs/undici/pull/2942)
-   perf: dump immediatly if known size exceeds limit by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2882](https://togithub.com/nodejs/undici/pull/2882)
-   build(deps): bump node from `7bfef1d` to `4999fa1` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2946](https://togithub.com/nodejs/undici/pull/2946)
-   try to fix windows failure by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2950](https://togithub.com/nodejs/undici/pull/2950)
-   perf: improve parsing form-data by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2944](https://togithub.com/nodejs/undici/pull/2944)

#### New Contributors

-   [@&#8203;chrros95](https://togithub.com/chrros95) made their first contribution in [https://github.com/nodejs/undici/pull/2939](https://togithub.com/nodejs/undici/pull/2939)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.7.1...v6.8.0

### [`v6.7.1`](https://togithub.com/nodejs/undici/releases/tag/v6.7.1)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.7.0...v6.7.1)

#### What's Changed

-   fetch: use EOL of os-module by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2915](https://togithub.com/nodejs/undici/pull/2915)
-   ci: only send codecov from ubuntu and node by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2914](https://togithub.com/nodejs/undici/pull/2914)
-   tests: improve skip for unix.js tests, remove skipped tests by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2916](https://togithub.com/nodejs/undici/pull/2916)
-   chore: fix typo in isHistoryNavigation comments by [@&#8203;kachick](https://togithub.com/kachick) in [https://github.com/nodejs/undici/pull/2920](https://togithub.com/nodejs/undici/pull/2920)
-   fix(benchmark): set body correctly by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2918](https://togithub.com/nodejs/undici/pull/2918)
-   chore: increase test coverage to 100% for /lib/api/api-request.js by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2912](https://togithub.com/nodejs/undici/pull/2912)
-   fix: chunksDecode cuts off 3 characters at the end if having BOM by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2922](https://togithub.com/nodejs/undici/pull/2922)
-   docs: clarify URI parsing behavior of ProxyAgent constructor by [@&#8203;rossilor95](https://togithub.com/rossilor95) in [https://github.com/nodejs/undici/pull/2893](https://togithub.com/nodejs/undici/pull/2893)
-   implement sync formdata parser by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2911](https://togithub.com/nodejs/undici/pull/2911)
-   Fix docs links and add examples to sidebar by [@&#8203;tastypackets](https://togithub.com/tastypackets) in [https://github.com/nodejs/undici/pull/2895](https://togithub.com/nodejs/undici/pull/2895)
-   doc: update diagnostics channel request headers type change by [@&#8203;jessezhang91](https://togithub.com/jessezhang91) in [https://github.com/nodejs/undici/pull/2925](https://togithub.com/nodejs/undici/pull/2925)
-   perf: optimize getResolveErrorBodyCallback by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2921](https://togithub.com/nodejs/undici/pull/2921)
-   override request dispatcher from init by [@&#8203;matthieusieben](https://togithub.com/matthieusieben) in [https://github.com/nodejs/undici/pull/2928](https://togithub.com/nodejs/undici/pull/2928)
-   add busboy tests by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2924](https://togithub.com/nodejs/undici/pull/2924)
-   fix(benchmark): make it fair by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2929](https://togithub.com/nodejs/undici/pull/2929)
-   Revert "chore: remove no-simd wasm" by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2935](https://togithub.com/nodejs/undici/pull/2935)
-   build(deps): bump node from `d3271e4` to `8bf9240` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2936](https://togithub.com/nodejs/undici/pull/2936)
-   Flip link between docs and README by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2933](https://togithub.com/nodejs/undici/pull/2933)

#### New Contributors

-   [@&#8203;kachick](https://togithub.com/kachick) made their first contribution in [https://github.com/nodejs/undici/pull/2920](https://togithub.com/nodejs/undici/pull/2920)
-   [@&#8203;tastypackets](https://togithub.com/tastypackets) made their first contribution in [https://github.com/nodejs/undici/pull/2895](https://togithub.com/nodejs/undici/pull/2895)
-   [@&#8203;jessezhang91](https://togithub.com/jessezhang91) made their first contribution in [https://github.com/nodejs/undici/pull/2925](https://togithub.com/nodejs/undici/pull/2925)
-   [@&#8203;matthieusieben](https://togithub.com/matthieusieben) made their first contribution in [https://github.com/nodejs/undici/pull/2928](https://togithub.com/nodejs/undici/pull/2928)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.7.0...v6.7.1

### [`v6.7.0`](https://togithub.com/nodejs/undici/releases/tag/v6.7.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.6.2...v6.7.0)

#### What's Changed

-   test: remove t.diagnostics() calls in push-dont-push.js test by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2715](https://togithub.com/nodejs/undici/pull/2715)
-   fix: fix flaky debug test by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2714](https://togithub.com/nodejs/undici/pull/2714)
-   fix: HTTP2 tweaks by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [https://github.com/nodejs/undici/pull/2711](https://togithub.com/nodejs/undici/pull/2711)
-   test: improve cookie tests by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2693](https://togithub.com/nodejs/undici/pull/2693)
-   test: response.url after redirect is set to target url by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2716](https://togithub.com/nodejs/undici/pull/2716)
-   chore: remove mocha and chai by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2696](https://togithub.com/nodejs/undici/pull/2696)
-   test: replace t.pass with t.ok by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2721](https://togithub.com/nodejs/undici/pull/2721)
-   perf: remove redundant operation in FormData by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2726](https://togithub.com/nodejs/undici/pull/2726)
-   Add support for passing iterable objects as headers by [@&#8203;JaoodxD](https://togithub.com/JaoodxD) in [https://github.com/nodejs/undici/pull/2708](https://togithub.com/nodejs/undici/pull/2708)
-   chore: refine esbuild & node detection by [@&#8203;mochaaP](https://togithub.com/mochaaP) in [https://github.com/nodejs/undici/pull/2677](https://togithub.com/nodejs/undici/pull/2677)
-   chore: rephrase some comments by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2717](https://togithub.com/nodejs/undici/pull/2717)
-   test: replace t.type with t.ok and instanceof by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2720](https://togithub.com/nodejs/undici/pull/2720)
-   remove useless options in web streams by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2729](https://togithub.com/nodejs/undici/pull/2729)
-   Let's add superagent to the benchmark. closes [#&#8203;2730](https://togithub.com/nodejs/undici/issues/2730) by [@&#8203;eddienubes](https://togithub.com/eddienubes) in [https://github.com/nodejs/undici/pull/2731](https://togithub.com/nodejs/undici/pull/2731)
-   convert node build to latin1 by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2673](https://togithub.com/nodejs/undici/pull/2673)
-   simplify formData body parsing by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2735](https://togithub.com/nodejs/undici/pull/2735)
-   chore: migrate a batch of tests to node test runner no. 1 by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2719](https://togithub.com/nodejs/undici/pull/2719)
-   chore: migrate a batch of tests to node test runner no. 2 by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2737](https://togithub.com/nodejs/undici/pull/2737)
-   chore: migrate a batch of tests to node test runner no. 4 by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2739](https://togithub.com/nodejs/undici/pull/2739)
-   chore: migrate a batch of tests to node test runner no. 5 by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2740](https://togithub.com/nodejs/undici/pull/2740)
-   chore: migrate a batch of tests to node test runner no. 3 by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2738](https://togithub.com/nodejs/undici/pull/2738)
-   chore: migrate a batch of tests to node test runner no. 6 by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2741](https://togithub.com/nodejs/undici/pull/2741)
-   chore: migrate a batch of tests to node test runner no. 8 by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2744](https://togithub.com/nodejs/undici/pull/2744)
-   chore: migrate a batch of tests to node test runner no. 7 by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2742](https://togithub.com/nodejs/undici/pull/2742)
-   build(deps-dev): bump cronometro from 2.0.2 to 3.0.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2749](https://togithub.com/nodejs/undici/pull/2749)
-   perf: always use the same prototype Iterator by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2743](https://togithub.com/nodejs/undici/pull/2743)
-   chore: migrate a batch of tests to node test runner no. 9, remove tap by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2746](https://togithub.com/nodejs/undici/pull/2746)
-   chore: remove usage of http-errors in proxy example by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2753](https://togithub.com/nodejs/undici/pull/2753)
-   fix: dont ship wasm files of llhttp via npm by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2752](https://togithub.com/nodejs/undici/pull/2752)
-   fix: handle request body as late as possible by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2734](https://togithub.com/nodejs/undici/pull/2734)
-   perf(tree): avoid recursive calls by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2755](https://togithub.com/nodejs/undici/pull/2755)
-   docs: fix favicon by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2758](https://togithub.com/nodejs/undici/pull/2758)
-   chore: use mermaid engine and mermaid in markdown by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2759](https://togithub.com/nodejs/undici/pull/2759)
-   chore: remove sinon dev dependency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2767](https://togithub.com/nodejs/undici/pull/2767)
-   tests: skip test/node-test/debug on node 21.6.2 and windows by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2765](https://togithub.com/nodejs/undici/pull/2765)
-   chore: improve usage of skip in tests by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2761](https://togithub.com/nodejs/undici/pull/2761)
-   feat: improve mock error breadcrumbs by [@&#8203;rossilor95](https://togithub.com/rossilor95) in [https://github.com/nodejs/undici/pull/2774](https://togithub.com/nodejs/undici/pull/2774)
-   expose MessageEvent in fetch bundle by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2770](https://togithub.com/nodejs/undici/pull/2770)
-   test: always exit with 0 when running in Node's Daily WPT Report CI job by [@&#8203;panva](https://togithub.com/panva) in [https://github.com/nodejs/undici/pull/2778](https://togithub.com/nodejs/undici/pull/2778)
-   fix: add node prefix for util to fix issue in env with min version node 18 by [@&#8203;riderx](https://togithub.com/riderx) in [https://github.com/nodejs/undici/pull/2775](https://togithub.com/nodejs/undici/pull/2775)
-   perf: improve perf of parseRawHeaders by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2781](https://togithub.com/nodejs/undici/pull/2781)
-   fix: make mock-agent.js test more resilient by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2780](https://togithub.com/nodejs/undici/pull/2780)
-   chore: make some test run even without internet connection by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2786](https://togithub.com/nodejs/undici/pull/2786)
-   mock: improve validateReplyParameters by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2783](https://togithub.com/nodejs/undici/pull/2783)
-   perf: improve TernarySearchTree by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2782](https://togithub.com/nodejs/undici/pull/2782)
-   fix: convert HeadersInit to sequence/dictionary correctly by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2784](https://togithub.com/nodejs/undici/pull/2784)
-   chore: improve getFieldValue by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2785](https://togithub.com/nodejs/undici/pull/2785)
-   Add RetryHandler to sidebar by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2797](https://togithub.com/nodejs/undici/pull/2797)
-   Add RetryAgent by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2798](https://togithub.com/nodejs/undici/pull/2798)
-   build(deps): bump step-security/harden-runner from 2.6.0 to 2.7.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2690](https://togithub.com/nodejs/undici/pull/2690)
-   build(deps): bump actions/checkout from 4.1.0 to 4.1.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2393](https://togithub.com/nodejs/undici/pull/2393)
-   build(deps): bump actions/upload-artifact from 3.1.3 to 4.3.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2799](https://togithub.com/nodejs/undici/pull/2799)
-   build(deps): bump node from 20-alpine to 21-alpine in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2803](https://togithub.com/nodejs/undici/pull/2803)
-   perf: improve sort algorithm by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2756](https://togithub.com/nodejs/undici/pull/2756)
-   refactor: move web stuff into their own folder by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2793](https://togithub.com/nodejs/undici/pull/2793)
-   `s/ dispactgher/dispatcher/` by [@&#8203;steveluscher](https://togithub.com/steveluscher) in [https://github.com/nodejs/undici/pull/2807](https://togithub.com/nodejs/undici/pull/2807)
-   Use paralellelRequests instead of connections to calculate req/sec in benchmarks by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2800](https://togithub.com/nodejs/undici/pull/2800)
-   Split out documentation into separate directory by [@&#8203;Ethan-Arrowood](https://togithub.com/Ethan-Arrowood) in [https://github.com/nodejs/undici/pull/2788](https://togithub.com/nodejs/undici/pull/2788)
-   build(deps): bump fastify/github-action-merge-dependabot from 3.9.1 to 3.10.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2820](https://togithub.com/nodejs/undici/pull/2820)
-   build(deps): bump actions/dependency-review-action from 4.0.0 to 4.1.3 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2821](https://togithub.com/nodejs/undici/pull/2821)
-   build(deps): bump github/codeql-action from 3.23.2 to 3.24.4 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2818](https://togithub.com/nodejs/undici/pull/2818)
-   build(deps): bump actions/setup-node from 4.0.1 to 4.0.2 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2819](https://togithub.com/nodejs/undici/pull/2819)
-   fix: move CNAME and .nojekyll to root by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2822](https://togithub.com/nodejs/undici/pull/2822)
-   remove all fetchParam event handlers by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2823](https://togithub.com/nodejs/undici/pull/2823)
-   feat: refactor ProxyAgent constructor to also accept single URL argument by [@&#8203;rossilor95](https://togithub.com/rossilor95) in [https://github.com/nodejs/undici/pull/2810](https://togithub.com/nodejs/undici/pull/2810)
-   fix: isCTLExcludingHtab by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2790](https://togithub.com/nodejs/undici/pull/2790)
-   refactor: move files into logical folders by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2813](https://togithub.com/nodejs/undici/pull/2813)
-   refactor: move fixed-queeu to dispatcher and rm node folder by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2827](https://togithub.com/nodejs/undici/pull/2827)
-   chore: create package.json in benchmarks by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2766](https://togithub.com/nodejs/undici/pull/2766)
-   build(deps): bump github/codeql-action from 3.24.4 to 3.24.5 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2829](https://togithub.com/nodejs/undici/pull/2829)
-   chore: use lts for pubish types workflow by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2830](https://togithub.com/nodejs/undici/pull/2830)
-   add dispatcher option to Request by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2831](https://togithub.com/nodejs/undici/pull/2831)
-   fix url referrer wpt by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2832](https://togithub.com/nodejs/undici/pull/2832)
-   refactor: remove own sort logic by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2834](https://togithub.com/nodejs/undici/pull/2834)
-   fix(fetch): prevent crash when `fetch` is aborted with `null` as the `AbortSignal's` `reason` by [@&#8203;steveluscher](https://togithub.com/steveluscher) in [https://github.com/nodejs/undici/pull/2833](https://togithub.com/nodejs/undici/pull/2833)
-   refactor: avoid http2 dynamic dispatch in socket handlers by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2839](https://togithub.com/nodejs/undici/pull/2839)
-   build(deps-dev): bump proxy from 1.0.2 to 2.1.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2137](https://togithub.com/nodejs/undici/pull/2137)
-   perf(tree): reduce overhead of build TernarySearchTree by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2840](https://togithub.com/nodejs/undici/pull/2840)
-   webidl: implement resizable arraybuffer checks by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2094](https://togithub.com/nodejs/undici/pull/2094)
-   websocket server only needs to reply with a single subprotocol by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2845](https://togithub.com/nodejs/undici/pull/2845)
-   unite webidl stringification by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2843](https://togithub.com/nodejs/undici/pull/2843)
-   fix: deflake connect-timeout test by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2851](https://togithub.com/nodejs/undici/pull/2851)
-   fix: coverage reporting by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2763](https://togithub.com/nodejs/undici/pull/2763)
-   fix: pipelining logic is not relevant for h2 by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2850](https://togithub.com/nodejs/undici/pull/2850)
-   processBody doesn't need to return a promise by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2858](https://togithub.com/nodejs/undici/pull/2858)
-   refactor: split client into client-h1/h2 by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2848](https://togithub.com/nodejs/undici/pull/2848)
-   ci: fix concurrency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2862](https://togithub.com/nodejs/undici/pull/2862)
-   perf: improve performance of isValidSubprotocol by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2861](https://togithub.com/nodejs/undici/pull/2861)
-   perf: reuse TextDecoder instance by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2863](https://togithub.com/nodejs/undici/pull/2863)
-   chore: restructure benchmarks, use kebab-case by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2864](https://togithub.com/nodejs/undici/pull/2864)
-   cookies: improve perf of toIMFDate by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2867](https://togithub.com/nodejs/undici/pull/2867)
-   cookies: fix validateCookiePath by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2866](https://togithub.com/nodejs/undici/pull/2866)
-   refactor: move out more h2 from core client by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2860](https://togithub.com/nodejs/undici/pull/2860)
-   mock: improve test coverage of buildHeadersFromArray by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2872](https://togithub.com/nodejs/undici/pull/2872)
-   fix: remove broken build request hack by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2874](https://togithub.com/nodejs/undici/pull/2874)
-   chore: filenames should use kebab-case by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2873](https://togithub.com/nodejs/undici/pull/2873)
-   refactor: split out last h1 specific code from core by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2876](https://togithub.com/nodejs/undici/pull/2876)
-   fix: make pipelining limit work for h2 by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2875](https://togithub.com/nodejs/undici/pull/2875)
-   fix: http2 doesn't have pipelining queue by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2878](https://togithub.com/nodejs/undici/pull/2878)
-   fix: minor connect cleanup by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2877](https://togithub.com/nodejs/undici/pull/2877)
-   Request headers types by [@&#8203;JaoodxD](https://togithub.com/JaoodxD) in [https://github.com/nodejs/undici/pull/2879](https://togithub.com/nodejs/undici/pull/2879)
-   ci: remove concurrency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2880](https://togithub.com/nodejs/undici/pull/2880)
-   fix: prefer queueMicrotask by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2881](https://togithub.com/nodejs/undici/pull/2881)
-   chore: remove no-simd wasm by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2871](https://togithub.com/nodejs/undici/pull/2871)
-   cookies: improve validateCookieValue by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2883](https://togithub.com/nodejs/undici/pull/2883)
-   cookies: improve validateCookieName by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2884](https://togithub.com/nodejs/undici/pull/2884)
-   Properly parse set-cookie header using http2 by [@&#8203;jeanp413](https://togithub.com/jeanp413) in [https://github.com/nodejs/undici/pull/2886](https://togithub.com/nodejs/undici/pull/2886)
-   doc deprecate bodymixin.formData by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2892](https://togithub.com/nodejs/undici/pull/2892)
-   perf: optimize check invalid field-vchar by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2889](https://togithub.com/nodejs/undici/pull/2889)
-   build(deps): bump github/codeql-action from 3.24.5 to 3.24.6 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2897](https://togithub.com/nodejs/undici/pull/2897)
-   fix issue 2898 by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2900](https://togithub.com/nodejs/undici/pull/2900)
-   tests: ignore catch block when requiring crypto module by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2901](https://togithub.com/nodejs/undici/pull/2901)
-   websocket: remove dead code in parseCloseBody by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2902](https://togithub.com/nodejs/undici/pull/2902)
-   fix: tests dont need process.exit by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2909](https://togithub.com/nodejs/undici/pull/2909)
-   chore: remove proxyquire by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2906](https://togithub.com/nodejs/undici/pull/2906)
-   chore: remove import-fresh as devDependency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2908](https://togithub.com/nodejs/undici/pull/2908)
-   perf(headers): a single set-cookie by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2903](https://togithub.com/nodejs/undici/pull/2903)
-   websocket: improve .close() by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2865](https://togithub.com/nodejs/undici/pull/2865)
-   feat: add sending data benchmark by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2905](https://togithub.com/nodejs/undici/pull/2905)
-   ci: integrate workflows into nodejs.yml by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2899](https://togithub.com/nodejs/undici/pull/2899)

#### New Contributors

-   [@&#8203;JaoodxD](https://togithub.com/JaoodxD) made their first contribution in [https://github.com/nodejs/undici/pull/2708](https://togithub.com/nodejs/undici/pull/2708)
-   [@&#8203;eddienubes](https://togithub.com/eddienubes) made their first contribution in [https://github.com/nodejs/undici/pull/2731](https://togithub.com/nodejs/undici/pull/2731)
-   [@&#8203;riderx](https://togithub.com/riderx) made their first contribution in [https://github.com/nodejs/undici/pull/2775](https://togithub.com/nodejs/undici/pull/2775)
-   [@&#8203;steveluscher](https://togithub.com/steveluscher) made their first contribution in [https://github.com/nodejs/undici/pull/2807](https://togithub.com/nodejs/undici/pull/2807)
-   [@&#8203;jeanp413](https://togithub.com/jeanp413) made their first contribution in [https://github.com/nodejs/undici/pull/2886](https://togithub.com/nodejs/undici/pull/2886)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.6.2...v6.7.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (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.

🔕 **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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjkuMiIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-04-08 01:42:52 +00:00
liuyi
edef9b2735 fix(server): only auto apply coupon in pro subscription (#6452) 2024-04-03 17:13:18 +08:00
liuyi
6fa4b7da54 feat(core): avoid popup window being blocked (#6451) 2024-04-03 16:50:09 +08:00
CatsJuice
3e9e2ce93b feat(core): pricing plans ai subscription ui (#6449) 2024-04-03 08:04:30 +00:00
JimmFly
e7de20f648 fix(core): add max-height to tag filter (#6442)
close TOV-778
close #6334
2024-04-03 04:04:37 +00:00
forehalo
2dc628eca5 fix(server): doc cache makes publish mode updating failed (#6444) 2024-04-03 03:34:01 +00:00
JimmFly
dde4e165c6 feat(core): add confirm modal to add new doc button (#6436) 2024-04-03 03:14:06 +00:00
JimmFly
f93ffbeb6f fix(core): unexpected collection item drag event (#6443)
close TOV-785

before:

https://github.com/toeverything/AFFiNE/assets/102217452/71b563a5-7a1a-4ec5-871f-8de373742bad
2024-04-02 14:24:19 +00:00
JimmFly
4624a4923d feat(core): add favorite operation to all collection (#6428)
https://github.com/toeverything/AFFiNE/assets/102217452/d90553aa-6076-4ecc-996b-a8398991982a
2024-04-02 08:35:26 +00:00
CatsJuice
381be8a982 fix(component): useConfirmModal can't be closed automatically when 'onConfirm' is non-async (#6439) 2024-04-02 08:23:27 +00:00
darkskygit
3c01d944fb feat: add prompt service (#6241)
fix CLOUD-19
2024-04-02 07:04:54 +00:00
darkskygit
593161dccb feat: basic copilot plugin implement (#6229)
fix CLOUD-25
2024-04-02 07:04:49 +00:00
EYHN
366e0a4b60 feat(server): adjust telemetry config (#6424) 2024-04-02 03:44:48 +00:00
EYHN
8bd2408b0c fix(core): selfhost should not use favicon from affine.pro (#6425) 2024-04-02 03:31:34 +00:00
CatsJuice
9127bfae67 refactor(core): replace all notification relies on jotai (#6417)
- remove all notification that implemented with jotai and replaced with new `notify`
- Add some notify presets:
  - `notify.error`
  - `notify.success`
  - `notify.warning`
2024-04-02 03:19:07 +00:00
CatsJuice
a4cd51e503 refactor(component): new notification center implemented with sonner (#6416)
The Notification has been reimplemented using sooner, no longer relies on jotai, and new story has been added.

- Before
  ```ts
  import { pushNotificationAtom } from '@affine/component/notification-center';
  import { useSetAtom } from 'jotai';

  export const Component = () => {
    const pushNotification = useSetAtom(pushNotificationAtom);
    pushNotification({ ... });
  }
  ```

- After
  ```ts
  import { notify } from "@affine/component";

  export const Component = () => {
    notify({ ... });
  }
  ```
2024-04-02 03:18:57 +00:00
EYHN
80c7750f4a fix(core): selfhost redirect url (#6426) 2024-04-01 13:26:39 +00:00
Taylor Hoffmann
94ea6a07b3 fix: broken links in README.md (#6418) 2024-04-01 17:12:15 +08:00
JimmFly
62d9b0c959 fix(core): unexpected editable state after trash page refresh (#6433)
close TOV-772
2024-04-01 08:16:17 +00:00
JimmFly
2631b41e6d feat(core): add new doc button to collection page (#6423)
close TOV-64

You can add this document to the collection while creating a new document on the collection page.

<img width="790" alt="image" src="https://github.com/toeverything/AFFiNE/assets/102217452/828f80af-a1a5-47c2-98c2-a574cf79052c">
2024-04-01 08:05:23 +00:00
EYHN
9c6eba8971 fix(electron): fix build script (#6422) 2024-04-01 07:51:35 +00:00
CatsJuice
f4e1e23120 feat(core): add cloud usage in sidebar avatar menu (#6400)
- Extract logic of getting cloud storage usage information into new hook
- Move `<StorageProgress />`: `component` → `core`
- Set minimum progress `0.5%`
- Add cloud usage progress bar in sidebar user avatar's dropdown

![CleanShot 2024-03-29 at 17.10.04@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/LakojjjzZNf6ogjOVwKE/1fe9371a-a870-49a1-b4bb-b923c2fa4fe6.png)
2024-04-01 07:41:20 +00:00
CatsJuice
af2158cb0c feat(core): compatible with multiple subscriptions (#6277) 2024-04-01 07:28:33 +00:00
pengx17
9381757982 fix(electron): wayland build (#6404)
![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/4a064576-fcda-4a7c-b646-48d55cd118c0.png)
2024-04-01 07:14:49 +00:00
pengx17
23cb309714 fix: onboarding app should also setup app storage config (#6427) 2024-04-01 07:04:39 +00:00
JimmFly
e33ab170d7 fix(core): edit button missing in shared page (#6398) 2024-04-01 06:50:21 +00:00
pengx17
b15ae21c45 fix(electron): optimize bundle size by removing unused dependencies (#6415)
Should greatly reduce the size of helper.js and could speed up the time on starting the client app.

fix https://github.com/toeverything/AFFiNE/issues/6312

Before:

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/681d6766-7d48-4574-b791-49e2c0ae6e1b.png)

After:
![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/ab13e624-7e03-407d-9538-3b9452694402.png)
2024-03-30 09:06:10 +00:00
CatsJuice
506efdf02c feat(core): make the synchronous animation trigger less frequently (#6412) 2024-03-30 08:11:05 +00:00
pengx17
f41d587d65 chore: upgrade cmdk to 1.0.0 (#6401)
Also include the command score into our own repo for some tweaks.

Might fix https://github.com/toeverything/AFFiNE/issues/6322
2024-03-30 08:00:21 +00:00
Brooooooklyn
822bbb54a4 chore(core): add more telemetry (#6402) 2024-03-30 07:46:23 +00:00
EYHN
1c648c2425 test(infra): add test for livedata with react (#6397) 2024-03-29 07:10:40 +00:00
Brooooooklyn
c1eb7b657a fix(templates): missing deps (#6396) 2024-03-29 06:56:52 +00:00
JimmFly
2576a69eb6 fix(core): unexpected response style of shared page (#6383) 2024-03-29 05:29:54 +00:00
pengx17
c7e10c2283 feat(core): fav item reordering (#6302) 2024-03-29 04:04:27 +00:00
pengx17
35af526eb2 feat: allow collections to be added to favorites (#6288) 2024-03-29 04:04:17 +00:00
pengx17
5490944d04 refactor(core): favorite adapter (#6285)
1. abstraction over favourites that supports different type of resources
2. sorting abstraction
2024-03-29 04:04:08 +00:00
LongYinan
296362ced1 ci: fix build frontend image step 2024-03-29 12:02:23 +08:00
CatsJuice
f1c70d5df0 fix(core): reload user session after signing out (#6381) 2024-03-29 03:47:18 +00:00
Brooooooklyn
c078f32a83 chore: bump Rust to 1.77 (#6316) 2024-03-29 03:45:59 +00:00
CatsJuice
605a5abee8 fix(core): user info should be updated when session reloaded (#6382) 2024-03-29 03:25:13 +00:00
pengx17
0abd24654d fix(electron): appimage wayland support (#6371)
Turns out the only solution for now is to patch the AppRun script in the AppImage using https://github.com/toeverything/electron-forge-maker-appimage/blob/master/scripts/patch-apprun.sh

fix #6340, fix #6252

Some references:
- https://github.com/audacity/audacity/issues/2498
- https://github.com/develar/app-builder/issues/104
2024-03-29 02:47:20 +00:00
CatsJuice
35715ab1d8 feat(core): sidebar local workspace enable cloud directly (#6366)
- Add a new hook `useEnableClould`, remove `<EnableAffineClouldModal />`
- Sidebar local workspace list item support enable AFFiNE Cloud
2024-03-29 02:08:09 +00:00
JimmFly
1a873ecf3c feat(core): add shortcut for multi select docs (#6318)
close TOV-701
In All Doc, `Shift + Click` has been added to activate the multiple selection state.
2024-03-29 01:40:23 +00:00
darkskygit
0ce6401a6f feat: update crawler rules (#6369) 2024-03-29 01:33:12 +00:00
CatsJuice
d14552b5af fix(core): sidebar workspace list can't scroll on mobile (#6370) 2024-03-29 01:25:13 +00:00
Brooooooklyn
7cd75824a4 fix(core): use ResizeObserver polyfill (#6360)
- Close https://github.com/toeverything/AFFiNE/issues/6359
2024-03-28 10:48:22 +00:00
Brooooooklyn
c2847e2082 chore(core): split sentry and setup into web/electron (#6357) 2024-03-28 10:24:25 +00:00
JimmFly
88d04e23e9 feat(core): update i18n resources (#6362)
close TOV-769

<img width="712" alt="image" src="https://github.com/toeverything/AFFiNE/assets/102217452/902a0771-e8df-46e2-8d7c-1f453a7099e6">
2024-03-28 10:11:25 +00:00
Jo Kroese
7526dea705 docs: correct typos and improve grammar in README (#6358) 2024-03-28 17:14:44 +08:00
fundon
ef354f1643 fix(core): prevent frequent sign-in (#6339) 2024-03-28 07:35:32 +00:00
CatsJuice
8ed38d7c0d fix(component): uppercase avatar letter fallback (#6354) 2024-03-28 07:24:11 +00:00
CatsJuice
fbe7a346c6 fix(core): adjust sidebar workspace card syncing tooltip style (#6356) 2024-03-28 07:13:27 +00:00
forehalo
f69649c922 ci: separate image build to a standalone workflow (#6167) 2024-03-28 04:02:13 +00:00
pengx17
e53744b740 fix: should use fullscreen to control where to place macos window controls (#6351) 2024-03-28 03:40:46 +00:00
EYHN
4e7652f108 fix(infra): fix white screen issue (#6350) 2024-03-28 02:12:25 +00:00
darkskygit
e24b6e4ddc docs: update supported version (#6344) 2024-03-27 15:35:21 +00:00
EYHN
ba9dad95b4 fix(core): improve performance (#6345) 2024-03-27 14:01:54 +00:00
CatsJuice
710edd28db feat(core): open restore history confirm modal with hook (#6343) 2024-03-27 13:30:36 +00:00
CatsJuice
d412635f6b feat(component): new hook to open confirm modal (#6342)
new exports from `@affine/component`:
```ts
import { ConfirmModalProvider, useConfirmModal } from "@affine/component"
```

Open confirm modal with hook:

```ts
const Component = () => {
  const { openConfirmModal } = useConformModal();

  const open = () => {
    openConfirmModal({
      // props of ConfirmModal
      /**
       * will show loading state when confirm clicked, and close after onConfirm finished
       */
      onConfirm: async () => {
        await new Promise((r) => setTimeout(r, 2000));
      },
    });
  }
  return <Button onClick={open}>Open</Button>
}
```
2024-03-27 13:30:30 +00:00
Brooooooklyn
39facba92e fix(core): opt out telemetry condition (#6341) 2024-03-27 08:37:15 +00:00
1124 changed files with 92157 additions and 28457 deletions

View File

@@ -9,10 +9,10 @@ corepack prepare yarn@stable --activate
yarn install
# Build Server Dependencies
yarn workspace @affine/storage build
yarn workspace @affine/server-native build
# Create database
yarn workspace @affine/server prisma db push
# Create user username: affine, password: affine
echo "INSERT INTO \"users\"(\"id\",\"name\",\"email\",\"email_verified\",\"created_at\",\"password\") VALUES('99f3ad04-7c9b-441e-a6db-79f73aa64db9','affine','affine@affine.pro','2024-02-26 15:54:16.974','2024-02-26 15:54:16.974+00','\$argon2id\$v=19\$m=19456,t=2,p=1\$esDS3QCHRH0Kmeh87YPm5Q\$9S+jf+xzw2Hicj6nkWltvaaaXX3dQIxAFwCfFa9o38A');" | yarn workspace @affine/server prisma db execute --stdin
echo "INSERT INTO \"users\"(\"id\",\"name\",\"email\",\"email_verified\",\"created_at\",\"password\") VALUES('99f3ad04-7c9b-441e-a6db-79f73aa64db9','affine','affine@affine.pro','2024-02-26 15:54:16.974','2024-02-26 15:54:16.974+00','\$argon2id\$v=19\$m=19456,t=2,p=1\$esDS3QCHRH0Kmeh87YPm5Q\$9S+jf+xzw2Hicj6nkWltvaaaXX3dQIxAFwCfFa9o38A');" | yarn workspace @affine/server prisma db execute --stdin

View File

@@ -12,4 +12,4 @@ static
web-static
public
packages/frontend/i18n/src/i18n-generated.ts
packages/frontend/templates/edgeless-templates.gen.ts
packages/frontend/templates/*.gen.ts

View File

@@ -48,14 +48,11 @@ const allPackages = [
'packages/frontend/i18n',
'packages/frontend/native',
'packages/frontend/templates',
'packages/frontend/workspace-impl',
'packages/common/debug',
'packages/common/env',
'packages/common/infra',
'packages/common/theme',
'packages/common/y-indexeddb',
'tools/cli',
'tests/storybook',
];
/**
@@ -234,7 +231,7 @@ const config = {
},
},
...allPackages.map(pkg => ({
files: [`${pkg}/src/**/*.ts`, `${pkg}/src/**/*.tsx`],
files: [`${pkg}/src/**/*.ts`, `${pkg}/src/**/*.tsx`, `${pkg}/**/*.mjs`],
rules: {
'@typescript-eslint/no-restricted-imports': [
'error',

View File

@@ -13,8 +13,10 @@ const {
R2_ACCOUNT_ID,
R2_ACCESS_KEY_ID,
R2_SECRET_ACCESS_KEY,
ENABLE_CAPTCHA,
CAPTCHA_TURNSTILE_SECRET,
COPILOT_OPENAI_API_KEY,
COPILOT_FAL_API_KEY,
COPILOT_UNSPLASH_API_KEY,
MAILER_SENDER,
MAILER_USER,
MAILER_PASSWORD,
@@ -97,8 +99,12 @@ const createHelmCommand = ({ isDryRun }) => {
`--set graphql.replicaCount=${graphqlReplicaCount}`,
`--set-string graphql.image.tag="${imageTag}"`,
`--set graphql.app.host=${host}`,
`--set graphql.app.captcha.enabled=${ENABLE_CAPTCHA}`,
`--set graphql.app.captcha.enabled=true`,
`--set-string graphql.app.captcha.turnstile.secret="${CAPTCHA_TURNSTILE_SECRET}"`,
`--set graphql.app.copilot.enabled=true`,
`--set-string graphql.app.copilot.openai.key="${COPILOT_OPENAI_API_KEY}"`,
`--set-string graphql.app.copilot.fal.key="${COPILOT_FAL_API_KEY}"`,
`--set-string graphql.app.copilot.unsplash.key="${COPILOT_UNSPLASH_API_KEY}"`,
`--set graphql.app.objectStorage.r2.enabled=true`,
`--set-string graphql.app.objectStorage.r2.accountId="${R2_ACCOUNT_ID}"`,
`--set-string graphql.app.objectStorage.r2.accessKeyId="${R2_ACCESS_KEY_ID}"`,

View File

@@ -30,6 +30,9 @@ services:
- NODE_ENV=production
- AFFINE_ADMIN_EMAIL=${AFFINE_ADMIN_EMAIL}
- AFFINE_ADMIN_PASSWORD=${AFFINE_ADMIN_PASSWORD}
# 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
redis:
image: redis
container_name: affine_redis

View File

@@ -0,0 +1,11 @@
{{- if .Values.app.copilot.enabled -}}
apiVersion: v1
kind: Secret
metadata:
name: "{{ .Values.app.copilot.secretName }}"
type: Opaque
data:
openaiSecret: {{ .Values.app.copilot.openai.key | b64enc }}
falSecret: {{ .Values.app.copilot.fal.key | b64enc }}
unsplashSecret: {{ .Values.app.copilot.unsplash.key | b64enc }}
{{- end }}

View File

@@ -148,6 +148,23 @@ spec:
name: "{{ .Values.app.captcha.secretName }}"
key: turnstileSecret
{{ end }}
{{ if .Values.app.copilot.enabled }}
- name: COPILOT_OPENAI_API_KEY
valueFrom:
secretKeyRef:
name: "{{ .Values.app.copilot.secretName }}"
key: openaiSecret
- name: COPILOT_FAL_API_KEY
valueFrom:
secretKeyRef:
name: "{{ .Values.app.copilot.secretName }}"
key: falSecret
- name: COPILOT_UNSPLASH_API_KEY
valueFrom:
secretKeyRef:
name: "{{ .Values.app.copilot.secretName }}"
key: unsplashSecret
{{ end }}
{{ if .Values.app.oauth.google.enabled }}
- name: OAUTH_GOOGLE_ENABLED
value: "true"

View File

@@ -24,6 +24,11 @@ app:
secretName: captcha
turnstile:
secret: ''
copilot:
enable: false
secretName: copilot
openai:
key: ''
objectStorage:
r2:
enabled: false

View File

@@ -35,6 +35,8 @@ graphql:
service:
type: ClusterIP
port: 3000
annotations:
cloud.google.com/backend-config: '{"default": "affine-backendconfig"}'
sync:
service:

14
.github/labeler.yml vendored
View File

@@ -29,11 +29,6 @@ mod:plugin-cli:
- any-glob-to-any-file:
- 'tools/plugin-cli/**/*'
mod:workspace-impl:
- changed-files:
- any-glob-to-any-file:
- 'packages/frontend/workspace-impl/**/*'
mod:i18n:
- changed-files:
- any-glob-to-any-file:
@@ -49,10 +44,10 @@ mod:component:
- any-glob-to-any-file:
- 'packages/frontend/component/**/*'
mod:storage:
mod:server-native:
- changed-files:
- any-glob-to-any-file:
- 'packages/backend/storage/**/*'
- 'packages/backend/native/**/*'
mod:native:
- changed-files:
@@ -74,11 +69,6 @@ rust:
- '**/rust-toolchain.toml'
- '**/rustfmt.toml'
package:y-indexeddb:
- changed-files:
- any-glob-to-any-file:
- 'packages/common/y-indexeddb/**/*'
app:core:
- changed-files:
- any-glob-to-any-file:

29
.github/renovate.json vendored
View File

@@ -13,7 +13,7 @@
],
"packageRules": [
{
"matchPackageNames": ["napi", "napi-build", "napi-derive"],
"matchDepNames": ["napi", "napi-build", "napi-derive"],
"rangeStrategy": "replace",
"groupName": "napi-rs"
},
@@ -33,11 +33,7 @@
"groupName": "opentelemetry"
},
{
"matchPackageNames": [
"@prisma/client",
"@prisma/instrumentation",
"prisma"
],
"matchDepNames": ["@prisma/client", "@prisma/instrumentation", "prisma"],
"rangeStrategy": "replace",
"groupName": "prisma"
},
@@ -47,7 +43,7 @@
"groupName": "electron-forge"
},
{
"matchPackageNames": ["oxlint"],
"matchDepNames": ["oxlint"],
"rangeStrategy": "replace",
"groupName": "oxlint"
},
@@ -69,6 +65,11 @@
"matchPackagePatterns": ["*"],
"rangeStrategy": "replace",
"excludePackagePatterns": ["^@blocksuite/"]
},
{
"groupName": "rust toolchain",
"matchManagers": ["custom.regex"],
"matchDepNames": ["rustc"]
}
],
"commitMessagePrefix": "chore: ",
@@ -79,5 +80,17 @@
"lockFileMaintenance": {
"enabled": true,
"extends": ["schedule:weekly"]
}
},
"customManagers": [
{
"customType": "regex",
"fileMatch": ["^rust-toolchain\\.toml?$"],
"matchStrings": [
"channel\\s*=\\s*\"(?<currentValue>\\d+\\.\\d+(\\.\\d+)?)\""
],
"depNameTemplate": "rustc",
"packageNameTemplate": "rust-lang/rust",
"datasourceTemplate": "github-releases"
}
]
}

View File

@@ -0,0 +1,25 @@
name: Build Selfhost Image
on:
workflow_dispatch:
inputs:
flavor:
description: 'Select distribution to build'
type: choice
default: canary
options:
- canary
- beta
- stable
permissions:
contents: 'write'
id-token: 'write'
packages: 'write'
jobs:
build-image:
name: Build Image
uses: ./.github/workflows/build-server-image.yml
with:
flavor: ${{ github.event.inputs.flavor }}

192
.github/workflows/build-server-image.yml vendored Normal file
View File

@@ -0,0 +1,192 @@
name: Build Images
on:
workflow_call:
inputs:
flavor:
type: string
required: true
env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
permissions:
contents: 'write'
id-token: 'write'
packages: 'write'
jobs:
build-server:
name: Build Server
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Version
id: version
uses: ./.github/actions/setup-version
- name: Setup Node.js
uses: ./.github/actions/setup-node
with:
electron-install: false
extra-flags: workspaces focus @affine/server
- name: Build Server
run: yarn workspace @affine/server build
- name: Upload server dist
uses: actions/upload-artifact@v4
with:
name: server-dist
path: ./packages/backend/server/dist
if-no-files-found: error
build-web-selfhost:
name: Build @affine/web selfhost
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.flavor }}
steps:
- uses: actions/checkout@v4
- name: Setup Version
id: version
uses: ./.github/actions/setup-version
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Build Core
run: yarn nx build @affine/web --skip-nx-cache
env:
BUILD_TYPE: ${{ github.event.inputs.flavor }}
SHOULD_REPORT_TRACE: false
PUBLIC_PATH: '/'
SELF_HOSTED: true
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN }}
- name: Download selfhost fonts
run: node ./scripts/download-blocksuite-fonts.mjs
- name: Upload web artifact
uses: actions/upload-artifact@v4
with:
name: selfhost-web
path: ./packages/frontend/web/dist
if-no-files-found: error
build-server-native:
name: Build Server native - ${{ matrix.targets.name }}
runs-on: ubuntu-latest
strategy:
matrix:
targets:
- name: x86_64-unknown-linux-gnu
file: server-native.node
- name: aarch64-unknown-linux-gnu
file: server-native.arm64.node
- name: armv7-unknown-linux-gnueabihf
file: server-native.armv7.node
steps:
- uses: actions/checkout@v4
- name: Setup Version
id: version
uses: ./.github/actions/setup-version
- name: Setup Node.js
uses: ./.github/actions/setup-node
with:
electron-install: false
extra-flags: workspaces focus @affine/server-native
- name: Build Rust
uses: ./.github/actions/build-rust
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:
name: ${{ matrix.targets.file }}
path: ./packages/backend/native/server-native.node
if-no-files-found: error
build-docker:
name: Build Docker
runs-on: ubuntu-latest
needs:
- build-server
- build-web-selfhost
- build-server-native
steps:
- uses: actions/checkout@v4
- name: Download server dist
uses: actions/download-artifact@v4
with:
name: server-dist
path: ./packages/backend/server/dist
- name: Download server-native.node
uses: actions/download-artifact@v4
with:
name: server-native.node
path: ./packages/backend/server
- name: Download server-native.node arm64
uses: actions/download-artifact@v4
with:
name: server-native.arm64.node
path: ./packages/backend/native
- name: Download server-native.node arm64
uses: actions/download-artifact@v4
with:
name: server-native.armv7.node
path: .
- name: move server-native files
run: |
mv ./packages/backend/native/server-native.node ./packages/backend/server/server-native.arm64.node
mv server-native.node ./packages/backend/server/server-native.armv7.node
- name: Setup env
run: |
echo "GIT_SHORT_HASH=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV"
if [ -z "${{ inputs.flavor }}" ]
then
echo "RELEASE_FLAVOR=canary" >> "$GITHUB_ENV"
else
echo "RELEASE_FLAVOR=${{ inputs.flavor }}" >> "$GITHUB_ENV"
fi
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
logout: false
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# setup node without cache configuration
# Prisma cache is not compatible with docker build cache
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: https://npm.pkg.github.com
scope: '@toeverything'
- name: Download selfhost web artifact
uses: actions/download-artifact@v4
with:
name: selfhost-web
path: ./packages/frontend/web/dist
- name: Install Node.js dependencies
run: |
yarn config set --json supportedArchitectures.cpu '["x64", "arm64", "arm"]'
yarn config set --json supportedArchitectures.libc '["glibc"]'
yarn workspaces focus @affine/server --production
- name: Generate Prisma client
run: yarn workspace @affine/server prisma generate
- name: Build graphql Dockerfile
uses: docker/build-push-action@v5
with:
context: .
push: true
pull: true
platforms: linux/amd64,linux/arm64,linux/arm/v7
provenance: true
file: .github/deployment/node/Dockerfile
tags: ghcr.io/toeverything/affine-graphql:${{env.RELEASE_FLAVOR}}-${{ env.GIT_SHORT_HASH }},ghcr.io/toeverything/affine-graphql:${{env.RELEASE_FLAVOR}}

View File

@@ -241,8 +241,8 @@ jobs:
path: ./packages/frontend/native/${{ steps.filename.outputs.filename }}
if-no-files-found: error
build-storage:
name: Build Storage
build-server-native:
name: Build Server native
runs-on: ubuntu-latest
env:
CARGO_PROFILE_RELEASE_DEBUG: '1'
@@ -251,19 +251,19 @@ jobs:
- name: Setup Node.js
uses: ./.github/actions/setup-node
with:
extra-flags: workspaces focus @affine/storage
extra-flags: workspaces focus @affine/server-native
electron-install: false
- name: Build Rust
uses: ./.github/actions/build-rust
with:
target: 'x86_64-unknown-linux-gnu'
package: '@affine/storage'
package: '@affine/server-native'
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
- name: Upload storage.node
- name: Upload server-native.node
uses: actions/upload-artifact@v4
with:
name: storage.node
path: ./packages/backend/storage/storage.node
name: server-native.node
path: ./packages/backend/native/server-native.node
if-no-files-found: error
build-web:
@@ -280,8 +280,10 @@ jobs:
- name: Build Web
# always skip cache because its fast, and cache configuration is always changing
run: yarn nx build @affine/web --skip-nx-cache
env:
DISTRIBUTION: 'desktop'
- name: zip web
run: tar -czf dist.tar.gz --directory=packages/frontend/web/dist .
run: tar -czf dist.tar.gz --directory=packages/frontend/electron/renderer/dist .
- name: Upload web artifact
uses: actions/upload-artifact@v4
with:
@@ -292,7 +294,7 @@ jobs:
server-test:
name: Server Test
runs-on: ubuntu-latest
needs: build-storage
needs: build-server-native
env:
NODE_ENV: test
DISTRIBUTION: browser
@@ -322,10 +324,10 @@ jobs:
electron-install: false
full-cache: true
- name: Download storage.node
- name: Download server-native.node
uses: actions/download-artifact@v4
with:
name: storage.node
name: server-native.node
path: ./packages/backend/server
- name: Initialize database
@@ -349,6 +351,7 @@ jobs:
env:
CARGO_TARGET_DIR: '${{ github.workspace }}/target'
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
COPILOT_OPENAI_API_KEY: ${{ secrets.COPILOT_OPENAI_API_KEY }}
- name: Upload server test coverage results
uses: codecov/codecov-action@v4
@@ -381,7 +384,7 @@ jobs:
yarn workspace @affine/electron build:dev
xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn workspace @affine-test/affine-desktop-cloud e2e
needs:
- build-storage
- build-server-native
- build-native
services:
postgres:
@@ -409,10 +412,10 @@ jobs:
playwright-install: true
hard-link-nm: false
- name: Download storage.node
- name: Download server-native.node
uses: actions/download-artifact@v4
with:
name: storage.node
name: server-native.node
path: ./packages/backend/server
- name: Download affine.linux-x64-gnu.node
@@ -544,7 +547,6 @@ jobs:
run: yarn workspace @affine/electron make --platform=linux --arch=x64
if: ${{ matrix.spec.target == 'x86_64-unknown-linux-gnu' }}
env:
SKIP_PLUGIN_BUILD: 1
SKIP_WEB_BUILD: 1
HOIST_NODE_MODULES: 1

View File

@@ -13,32 +13,20 @@ on:
- stable
- internal
env:
APP_NAME: affine
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
MIXPANEL_TOKEN: '389c0615a69b57cca7d3fa0a4824c930'
permissions:
contents: 'write'
id-token: 'write'
packages: 'write'
jobs:
build-server:
name: Build Server
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Version
id: version
uses: ./.github/actions/setup-version
- name: Setup Node.js
uses: ./.github/actions/setup-node
with:
electron-install: false
extra-flags: workspaces focus @affine/server
- name: Build Server
run: yarn workspace @affine/server build
- name: Upload server dist
uses: actions/upload-artifact@v4
with:
name: server-dist
path: ./packages/backend/server/dist
if-no-files-found: error
build-server-image:
name: Build Server Image
uses: ./.github/workflows/build-server-image.yml
with:
flavor: ${{ github.event.inputs.flavor }}
build-web:
name: Build @affine/web
runs-on: ubuntu-latest
@@ -61,10 +49,11 @@ jobs:
TRACE_REPORT_ENDPOINT: ${{ secrets.TRACE_REPORT_ENDPOINT }}
CAPTCHA_SITE_KEY: ${{ secrets.CAPTCHA_SITE_KEY }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
SENTRY_PROJECT: 'affine-web'
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
PERFSEE_TOKEN: ${{ secrets.PERFSEE_TOKEN }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN }}
- name: Upload web artifact
uses: actions/upload-artifact@v4
with:
@@ -72,112 +61,18 @@ jobs:
path: ./packages/frontend/web/dist
if-no-files-found: error
build-web-selfhost:
name: Build @affine/web selfhost
build-frontend-image:
name: Build Frontend Image
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.flavor }}
steps:
- uses: actions/checkout@v4
- name: Setup Version
id: version
uses: ./.github/actions/setup-version
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Build Core
run: yarn nx build @affine/web --skip-nx-cache
env:
BUILD_TYPE: ${{ github.event.inputs.flavor }}
SHOULD_REPORT_TRACE: false
PUBLIC_PATH: '/'
SELF_HOSTED: true
- name: Download selfhost fonts
run: node ./scripts/download-blocksuite-fonts.mjs
- name: Upload web artifact
uses: actions/upload-artifact@v4
with:
name: selfhost-web
path: ./packages/frontend/web/dist
if-no-files-found: error
build-storage:
name: Build Storage - ${{ matrix.targets.name }}
runs-on: ubuntu-latest
strategy:
matrix:
targets:
- name: x86_64-unknown-linux-gnu
file: storage.node
- name: aarch64-unknown-linux-gnu
file: storage.arm64.node
- name: armv7-unknown-linux-gnueabihf
file: storage.armv7.node
steps:
- uses: actions/checkout@v4
- name: Setup Version
id: version
uses: ./.github/actions/setup-version
- name: Setup Node.js
uses: ./.github/actions/setup-node
with:
electron-install: false
extra-flags: workspaces focus @affine/storage
- name: Build Rust
uses: ./.github/actions/build-rust
with:
target: ${{ matrix.targets.name }}
package: '@affine/storage'
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
- name: Upload ${{ matrix.targets.file }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.targets.file }}
path: ./packages/backend/storage/storage.node
if-no-files-found: error
build-docker:
name: Build Docker
runs-on: ubuntu-latest
permissions:
contents: 'write'
id-token: 'write'
packages: 'write'
needs:
- build-server
- build-web
- build-web-selfhost
- build-storage
steps:
- uses: actions/checkout@v4
- name: Download core artifact
- name: Download web artifact
uses: actions/download-artifact@v4
with:
name: web
path: ./packages/frontend/web/dist
- name: Download server dist
uses: actions/download-artifact@v4
with:
name: server-dist
path: ./packages/backend/server/dist
- name: Download storage.node
uses: actions/download-artifact@v4
with:
name: storage.node
path: ./packages/backend/server
- name: Download storage.node arm64
uses: actions/download-artifact@v4
with:
name: storage.arm64.node
path: ./packages/backend/storage
- name: Download storage.node arm64
uses: actions/download-artifact@v4
with:
name: storage.armv7.node
path: .
- name: move storage files
run: |
mv ./packages/backend/storage/storage.node ./packages/backend/server/storage.arm64.node
mv storage.node ./packages/backend/server/storage.armv7.node
- name: Setup env
run: |
echo "GIT_SHORT_HASH=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV"
@@ -187,7 +82,6 @@ jobs:
else
echo "RELEASE_FLAVOR=${{ inputs.flavor }}" >> "$GITHUB_ENV"
fi
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
@@ -210,53 +104,13 @@ jobs:
file: .github/deployment/front/Dockerfile
tags: ghcr.io/toeverything/affine-front:${{env.RELEASE_FLAVOR}}-${{ env.GIT_SHORT_HASH }},ghcr.io/toeverything/affine-front:${{env.RELEASE_FLAVOR}}
# setup node without cache configuration
# Prisma cache is not compatible with docker build cache
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: https://npm.pkg.github.com
scope: '@toeverything'
- name: Remove web dist
run: rm -rf ./packages/frontend/web/dist
- name: Download selfhost web artifact
uses: actions/download-artifact@v4
with:
name: selfhost-web
path: ./packages/frontend/web/dist
- name: Install Node.js dependencies
run: |
yarn config set --json supportedArchitectures.cpu '["x64", "arm64", "arm"]'
yarn config set --json supportedArchitectures.libc '["glibc"]'
yarn workspaces focus @affine/server --production
- name: Generate Prisma client
run: yarn workspace @affine/server prisma generate
- name: Build graphql Dockerfile
uses: docker/build-push-action@v5
with:
context: .
push: true
pull: true
platforms: linux/amd64,linux/arm64,linux/arm/v7
provenance: true
file: .github/deployment/node/Dockerfile
tags: ghcr.io/toeverything/affine-graphql:${{env.RELEASE_FLAVOR}}-${{ env.GIT_SHORT_HASH }},ghcr.io/toeverything/affine-graphql:${{env.RELEASE_FLAVOR}}
deploy:
name: Deploy to cluster
if: ${{ github.event_name == 'workflow_dispatch' }}
environment: ${{ github.event.inputs.flavor }}
permissions:
contents: 'write'
id-token: 'write'
needs:
- build-docker
- build-frontend-image
- build-server-image
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -279,8 +133,10 @@ jobs:
R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
ENABLE_CAPTCHA: true
CAPTCHA_TURNSTILE_SECRET: ${{ secrets.CAPTCHA_TURNSTILE_SECRET }}
COPILOT_OPENAI_API_KEY: ${{ secrets.COPILOT_OPENAI_API_KEY }}
COPILOT_FAL_API_KEY: ${{ secrets.COPILOT_FAL_API_KEY }}
COPILOT_UNSPLASH_API_KEY: ${{ secrets.COPILOT_UNSPLASH_API_KEY }}
MAILER_SENDER: ${{ secrets.OAUTH_EMAIL_SENDER }}
MAILER_USER: ${{ secrets.OAUTH_EMAIL_LOGIN }}
MAILER_PASSWORD: ${{ secrets.OAUTH_EMAIL_PASSWORD }}

View File

@@ -25,4 +25,7 @@ jobs:
node-version-file: '.nvmrc'
- name: Install dependencies
run: yarn workspaces focus @affine/commitlint-config
- run: echo "${{ github.event.pull_request.title }}" | yarn workspace @affine/commitlint-config commitlint -g ./.commitlintrc.json
- name: Check PR title
env:
TITLE: ${{ github.event.pull_request.title }}
run: echo "$TITLE" | yarn workspace @affine/commitlint-config commitlint -g ./.commitlintrc.json

View File

@@ -1,51 +0,0 @@
name: Publish Storybook
env:
NODE_OPTIONS: --max-old-space-size=4096
on:
workflow_dispatch:
push:
branches:
- canary
pull_request:
branches:
- canary
paths-ignore:
- README.md
- .github/**
- packages/backend/server
- packages/frontend/electron
- '!.github/workflows/publish-storybook.yml'
jobs:
publish-storybook:
name: Publish Storybook
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.merge_commit_sha }}
# This is required to fetch all commits for chromatic
fetch-depth: 0
- name: Setup Node.js
uses: ./.github/actions/setup-node
with:
electron-install: false
- uses: chromaui/action-next@v1
with:
workingDir: tests/storybook
buildScriptName: build
exitOnceUploaded: true
onlyChanged: false
diagnostics: true
env:
CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
NODE_OPTIONS: ${{ env.NODE_OPTIONS }}
- uses: actions/upload-artifact@v4
if: always()
with:
name: chromatic-build-artifacts-${{ github.run_id }}
path: |
chromatic-diagnostics.json
**/build-storybook.log

View File

@@ -1,51 +0,0 @@
name: Publish UI Storybook
env:
NODE_OPTIONS: --max-old-space-size=4096
on:
workflow_dispatch:
push:
branches:
- canary
pull_request:
branches:
- canary
paths-ignore:
- README.md
- .github/**
- packages/backend/server
- packages/frontend/electron
- '!.github/workflows/publish-storybook.yml'
jobs:
publish-ui-storybook:
name: Publish UI Storybook
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.merge_commit_sha }}
# This is required to fetch all commits for chromatic
fetch-depth: 0
- name: Setup Node.js
uses: ./.github/actions/setup-node
with:
electron-install: false
- uses: chromaui/action-next@v1
with:
workingDir: packages/frontend/component
buildScriptName: build:storybook
exitOnceUploaded: true
onlyChanged: false
diagnostics: true
env:
CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_UI_PROJECT_TOKEN }}
NODE_OPTIONS: ${{ env.NODE_OPTIONS }}
- uses: actions/upload-artifact@v4
if: always()
with:
name: chromatic-build-artifacts-${{ github.run_id }}
path: |
chromatic-diagnostics.json
**/build-storybook.log

View File

@@ -33,7 +33,6 @@ env:
DEBUG: napi:*
APP_NAME: affine
MACOSX_DEPLOYMENT_TARGET: '10.13'
MIXPANEL_TOKEN: '389c0615a69b57cca7d3fa0a4824c930'
jobs:
before-make:
@@ -54,12 +53,12 @@ jobs:
run: yarn workspace @affine/electron generate-assets
env:
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
SENTRY_PROJECT: 'affine'
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
RELEASE_VERSION: ${{ steps.version.outputs.APP_VERSION }}
SKIP_PLUGIN_BUILD: 'true'
SKIP_NX_CACHE: 'true'
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN }}
- name: Upload web artifact
uses: actions/upload-artifact@v4
@@ -90,6 +89,11 @@ jobs:
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
SKIP_GENERATE_ASSETS: 1
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: 'affine'
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Setup Version
@@ -119,15 +123,20 @@ jobs:
- name: Signing By Apple Developer ID
if: ${{ matrix.spec.platform == 'darwin' }}
uses: apple-actions/import-codesign-certs@v2
uses: apple-actions/import-codesign-certs@v3
with:
p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
- name: Install fuse on Linux (for patching AppImage)
if: ${{ matrix.spec.platform == 'linux' }}
run: |
sudo add-apt-repository universe
sudo apt install libfuse2 -y
- name: make
run: yarn workspace @affine/electron make --platform=${{ matrix.spec.platform }} --arch=${{ matrix.spec.arch }}
env:
SKIP_PLUGIN_BUILD: 1
SKIP_WEB_BUILD: 1
HOIST_NODE_MODULES: 1
@@ -169,6 +178,11 @@ jobs:
FILES_TO_BE_SIGNED: ${{ steps.get_files_to_be_signed.outputs.FILES_TO_BE_SIGNED }}
env:
SKIP_GENERATE_ASSETS: 1
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: 'affine'
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
MIXPANEL_TOKEN: ${{ secrets.MIXPANEL_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Setup Version
@@ -198,7 +212,6 @@ jobs:
- name: package
run: yarn workspace @affine/electron package --platform=${{ matrix.spec.platform }} --arch=${{ matrix.spec.arch }}
env:
SKIP_PLUGIN_BUILD: 1
SKIP_WEB_BUILD: 1
HOIST_NODE_MODULES: 1
@@ -244,6 +257,10 @@ jobs:
- name: Setup Node.js
timeout-minutes: 10
uses: ./.github/actions/setup-node
with:
extra-flags: workspaces focus @affine/electron @affine/monorepo
hard-link-nm: false
nmHoistingLimits: workspaces
- name: Download and overwrite packaged artifacts
uses: actions/download-artifact@v4
with:
@@ -255,6 +272,9 @@ jobs:
- name: Make squirrel.windows installer
run: yarn workspace @affine/electron make-squirrel --platform=${{ matrix.spec.platform }} --arch=${{ matrix.spec.arch }}
- name: Make nsis.windows installer
run: yarn workspace @affine/electron make-nsis --platform=${{ matrix.spec.platform }} --arch=${{ matrix.spec.arch }}
- name: Zip artifacts for faster upload
run: Compress-Archive -CompressionLevel Fastest -Path packages/frontend/electron/out/${{ env.BUILD_TYPE }}/make/* -DestinationPath archive.zip
@@ -302,7 +322,7 @@ jobs:
mkdir -p builds
mv packages/frontend/electron/out/*/make/zip/win32/x64/AFFiNE*-win32-x64-*.zip ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-windows-x64.zip
mv packages/frontend/electron/out/*/make/squirrel.windows/x64/*.exe ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-windows-x64.exe
mv packages/frontend/electron/out/*/make/squirrel.windows/x64/*.msi ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-windows-x64.msi
mv packages/frontend/electron/out/*/make/nsis.windows/x64/*.exe ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-windows-x64.nsis.exe
- name: Upload Artifact
uses: actions/upload-artifact@v4

View File

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

2
.nvmrc
View File

@@ -1 +1 @@
20
20.13.1

View File

@@ -16,12 +16,11 @@ packages/frontend/i18n/src/i18n-generated.ts
packages/frontend/graphql/src/graphql/index.ts
tests/affine-legacy/**/static
.yarnrc.yml
packages/frontend/templates/edgeless-templates.gen.ts
packages/frontend/templates/templates.gen.ts
packages/frontend/templates/*.gen.ts
packages/frontend/templates/onboarding
# auto-generated by NAPI-RS
# fixme(@joooye34): need script to check and generate ignore list here
packages/backend/storage/index.d.ts
packages/backend/native/index.d.ts
packages/frontend/native/index.d.ts
packages/frontend/native/index.js

File diff suppressed because one or more lines are too long

View File

@@ -1,15 +0,0 @@
diff --git a/package.json b/package.json
index ca30bca63196b923fa5a27eb85ce2ee890222d36..39e9d08dea40f25568a39bfbc0154458d32c8a66 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,10 @@
"types": "./index.d.ts",
"default": "./index.js"
},
+ "./core": {
+ "types": "./core/index.d.ts",
+ "default": "./core/index.js"
+ },
"./adapters": {
"types": "./adapters.d.ts"
},

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.1.1.cjs
yarnPath: .yarn/releases/yarn-4.2.2.cjs

758
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@ resolver = "2"
members = [
"./packages/frontend/native",
"./packages/frontend/native/schema",
"./packages/backend/storage",
"./packages/backend/native",
]
[profile.dev.package.sqlx-macros]

View File

@@ -10,7 +10,7 @@
</a>
<br/>
<p align="center">
A privacy-focussed, local-first, open-source, and ready-to-use alternative for Notion & Miro. <br />
A privacy-focused, local-first, open-source, and ready-to-use alternative for Notion & Miro. <br />
One hyper-fused platform for wildly creative minds.
</p>
@@ -49,7 +49,7 @@
## Getting started & staying tuned with us.
Star us, and you will receive all releases notifications from GitHub without any delay!
Star us, and you will receive all release notifications from GitHub without any delay!
<img src="https://user-images.githubusercontent.com/79301703/230891830-0110681e-8c7e-483b-b6d9-9e42b291b9ef.gif" style="width: 100%"/>
@@ -65,7 +65,7 @@ AFFiNE is an open-source, all-in-one workspace and an operating system for all t
**Multimodal AI partner ready to kick in any work**
- Write up professional work report? Turn an outline into expressive and presentable slides? Summary an article into a well-structured mindmap? Sorting your job plan and backlog for tasks? Or....draw and code prototype apps and web pages directly all with one prompt? With you, AFFiNE AI pushes your creativity to the edge of your imagination.
- Write up professional work report? Turn an outline into expressive and presentable slides? Summary an article into a well-structured mindmap? Sorting your job plan and backlog for tasks? Or... draw and code prototype apps and web pages directly all with one prompt? With you, AFFiNE AI pushes your creativity to the edge of your imagination.
**Local-first & Real-time collaborative**
@@ -73,7 +73,7 @@ AFFiNE is an open-source, all-in-one workspace and an operating system for all t
**Self-host & Shape your own AFFiNE**
- You have the freedom to manage, self-host, fork and build your own AFFiNE. Plugin community and third-party blocks is coming soon. More tractions on [Blocksuite](block-suite.com). Check there to learn how to [self-host AFFiNE](https://docs.affine.pro/docs/self-host-affine-).
- You have the freedom to manage, self-host, fork and build your own AFFiNE. Plugin community and third-party blocks are coming soon. More tractions on [Blocksuite](https://blocksuite.io). Check there to learn how to [self-host AFFiNE](https://docs.affine.pro/docs/self-host-affine).
## Acknowledgement
@@ -83,7 +83,7 @@ AFFiNE is an open-source, all-in-one workspace and an operating system for all t
- Trello with their Kanban
- Airtable & Miro with their no-code programable datasheets
- Miro & Whimiscal with their edgeless visual whiteboard
- Remnote & Capacities with their object-based tag system
- Remote & Capacities with their object-based tag system
There is a large overlap of their atomic “building blocks” between these apps. They are not open source, nor do they have a plugin system like Vscode for contributors to customize. We want to have something that contains all the features we love and also goes one step even further.
@@ -104,17 +104,16 @@ For **bug reports**, **feature requests** and other **suggestions** you can also
For **translation** and **language support** you can visit our [i18n General Space](https://community.affine.pro/c/i18n-general).
Looking for **others ways to contribute** and wondering where to start? Check out the [AFFiNE Ambassador program](https://community.affine.pro/c/start-here/affine-ambassador), we work closely with passionate community members and provide them with a wide-range of support and resources.
Looking for **other ways to contribute** and wondering where to start? Check out the [AFFiNE Ambassador program](https://community.affine.pro/c/start-here/affine-ambassador), we work closely with passionate community members and provide them with a wide range of support and resources.
If you have questions, you are welcome to contact us. One of the best places to get more info and learn more is in the [AFFiNE Community](https://community.affine.pro) where you can engage with other like-minded individuals.
## Ecosystem
| Name | | |
| -------------------------------------------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| [@affine/component](packages/frontend/component) | AFFiNE Component Resources | [![](https://img.shields.io/codecov/c/github/toeverything/affine?style=flat-square)](https://affine-storybook.vercel.app/) |
| [@toeverything/y-indexeddb](packages/common/y-indexeddb) | IndexedDB database adapter for Yjs | [![](https://img.shields.io/npm/dm/@toeverything/y-indexeddb?style=flat-square&color=eee)](https://www.npmjs.com/package/@toeverything/y-indexeddb) |
| [@toeverything/theme](packages/common/theme) | AFFiNE theme | [![](https://img.shields.io/npm/dm/@toeverything/theme?style=flat-square&color=eee)](https://www.npmjs.com/package/@toeverything/theme) |
| Name | | |
| ------------------------------------------------ | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| [@affine/component](packages/frontend/component) | AFFiNE Component Resources | ![](https://img.shields.io/codecov/c/github/toeverything/affine?style=flat-square) |
| [@toeverything/theme](packages/common/theme) | AFFiNE theme | [![](https://img.shields.io/npm/dm/@toeverything/theme?style=flat-square&color=eee)](https://www.npmjs.com/package/@toeverything/theme) |
## Upstreams
@@ -143,15 +142,15 @@ We would like to express our gratitude to all the individuals who have already c
## Self-Host
Begin with Docker to deploy your own feature-rich, unrestricted version of AFFiNE. Our team is diligently updating to the latest version. For more information on how to self-host AFFiNE, please refer to our [documentation](https://docs.affine.pro/docs/self-host-affine-).
Begin with Docker to deploy your own feature-rich, unrestricted version of AFFiNE. Our team is diligently updating to the latest version. For more information on how to self-host AFFiNE, please refer to our [documentation](https://docs.affine.pro/docs/self-host-affine).
## Hiring
Some amazing companies including AFFiNE are looking for developers! Are you interesgo to iour discord channel AFFiNE and/or its partners? Check out some of the latest [jobs available].
Some amazing companies, including AFFiNE, are looking for developers! Are you interested in joining AFFiNE or its partners? Check out our Discord channel for some of the latest jobs available.
## Feature Request
For feature request, please see [community.affine.pro](https://community.affine.pro/c/feature-requests/).
For feature requests, please see [community.affine.pro](https://community.affine.pro/c/feature-requests/).
## Building
@@ -186,7 +185,7 @@ See [LICENSE] for details.
[jobs available]: ./docs/jobs.md
[latest packages]: https://github.com/toeverything/AFFiNE/pkgs/container/affine-self-hosted
[contributor license agreement]: https://github.com/toeverything/affine/edit/canary/.github/CLA.md
[rust-version-icon]: https://img.shields.io/badge/Rust-1.76.0-dea584
[rust-version-icon]: https://img.shields.io/badge/Rust-1.77.2-dea584
[stars-icon]: https://img.shields.io/github/stars/toeverything/AFFiNE.svg?style=flat&logo=github&colorB=red&label=stars
[codecov]: https://codecov.io/gh/toeverything/affine/branch/canary/graphs/badge.svg?branch=canary
[node-version-icon]: https://img.shields.io/badge/node-%3E=18.16.1-success

View File

@@ -6,8 +6,8 @@ We recommend users to always use the latest major version. Security updates will
| Version | Supported |
| --------------- | ------------------ |
| 0.12.x (stable) | :white_check_mark: |
| < 0.12.x | :x: |
| 0.13.x (stable) | :white_check_mark: |
| < 0.13.x | :x: |
## Reporting a Vulnerability

View File

@@ -2,7 +2,7 @@
> **Warning**:
>
> This document has not been updated for a while.
> This document is not guaranteed to be up-to-date.
> If you find any outdated information, please feel free to open an issue or submit a PR.
> **Note**
@@ -27,7 +27,7 @@ We suggest develop our product under node.js LTS(Long-term support) version
install [Node LTS version](https://nodejs.org/en/download)
> Up to now, the major node.js version is 18.x
> Up to now, the major node.js version is 20.x
#### Option 2: Use node version manager
@@ -76,7 +76,7 @@ Once Developer Mode is enabled, execute the following command with administrator
```sh
# Enable symbolic links
git config --global core.symlinks true
# Clone the repository, also need to be run with administrator privileges
# Clone the repository
git clone https://github.com/toeverything/AFFiNE
```
@@ -93,7 +93,7 @@ yarn workspace @affine/native build
### Build Server Dependencies
```sh
yarn workspace @affine/storage build
yarn workspace @affine/server-native build
```
## Testing

View File

@@ -1,93 +1 @@
# Welcome to our contributing guide <!-- omit in toc -->
Thank you for investing your time in contributing to our project! Any contribution you make will be reflected on our GitHub :sparkles:.
Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable. Join our [Discord](https://discord.com/invite/yz6tGVsf5p) server for more.
In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR.
Use the table of contents icon on the top left corner of this document to get to a specific section of this guide quickly.
## New contributor guide
Currently we have two versions of AFFiNE:
- [AFFiNE Pre-Alpha](https://livedemo.affine.pro/). This version uses the branch `Pre-Alpha`, it is no longer actively developed but contains some different functions and features.
- [AFFiNE Alpha](https://pathfinder.affine.pro/). This version uses the `canary` branch, this is the latest version under active development.
To get an overview of the project, read the [README](../README.md). Here are some resources to help you get started with open source contributions:
- [Finding ways to contribute to open source on GitHub](https://docs.github.com/en/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github)
- [Set up Git](https://docs.github.com/en/get-started/quickstart/set-up-git)
- [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow)
- [Collaborating with pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests)
## Getting started
Check to see what [types of contributions](types-of-contributions.md) we accept before making changes. Some of them don't even require writing a single line of code :sparkles:.
### Issues
#### Create a new issue or feature request
If you spot a problem, [search if an issue already exists](https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-issues-and-pull-requests#search-by-the-title-body-or-comments). If a related issue doesn't exist, you can open a new issue using a relevant [issue form](https://github.com/toeverything/AFFiNE/issues/new/choose).
#### Solve an issue
Scan through our [existing issues](https://github.com/toeverything/AFFiNE/issues) to find one that interests you. You can narrow down the search using `labels` as filters. See our [Labels](https://github.com/toeverything/AFFiNE/labels) for more information. As a general rule, we dont assign issues to anyone. If you find an issue to work on, you are welcome to open a PR with a fix.
### Make Changes
#### Make changes in the UI
Click **Make a contribution** at the bottom of any docs page to make small changes such as a typo, sentence fix, or a broken link. This takes you to the `.md` file where you can make your changes and [create a pull request](#pull-request) for a review.
#### Make changes in a codespace
For more information about using a codespace for working on GitHub documentation, see "[Working in a codespace](https://github.com/github/docs/blob/main/contributing/codespace.md)."
#### Make changes locally
1. [Install Git LFS](https://docs.github.com/en/github/managing-large-files/versioning-large-files/installing-git-large-file-storage).
2. Fork the repository.
- Using GitHub Desktop:
- [Getting started with GitHub Desktop](https://docs.github.com/en/desktop/installing-and-configuring-github-desktop/getting-started-with-github-desktop) will guide you through setting up Desktop.
- Once Desktop is set up, you can use it to [fork the repo](https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/cloning-and-forking-repositories-from-github-desktop)!
- Using the command line:
- [Fork the repo](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo#fork-an-example-repository) so that you can make your changes without affecting the original project until you're ready to merge them.
3. Install or update to **Node.js v16**.
4. Create a working branch and start with your changes!
### Commit your update
Commit the changes once you are happy with them.
Reach out the community members for necessary help.
Once your changes are ready, don't forget to self-review to speed up the review process:zap:.
### Pull Request
When you're finished with the changes, create a pull request, also known as a PR.
- Fill the "Ready for review" template so that we can review your PR. This template helps reviewers understand your changes as well as the purpose of your pull request.
- Don't forget to [link PR to issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) if you are solving one.
- Enable the checkbox to [allow maintainer edits](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork) so the branch can be updated for a merge.
Once you submit your PR, a Docs team member will review your proposal. We may ask questions or request for additional information.
- We may ask for changes to be made before a PR can be merged, either using [suggested changes](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request) or pull request comments. You can apply suggested changes directly through the UI. You can make any other changes in your fork, then commit them to your branch.
- As you update your PR and apply changes, mark each conversation as [resolved](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#resolving-conversations).
- If you run into any merge issues, checkout this [git tutorial](https://github.com/skills/resolve-merge-conflicts) to help you resolve merge conflicts and other issues.
### Your PR is merged!
Congratulations :tada::tada: The AFFiNE team thanks you :sparkles:.
Once your PR is merged, your contributions will be publicly visible on our GitHub.
Now that you are part of the AFFiNE community, see how else you can join and help over at [GitBook](https://docs.affine.pro/affine/)
# Please visit https://docs.affine.pro/docs/contributing

View File

@@ -1,5 +1,10 @@
# Building AFFiNE Desktop Client App
> **Warning**:
>
> This document is not guaranteed to be up-to-date.
> If you find any outdated information, please feel free to open an issue or submit a PR.
## Table of Contents
- [Prerequisites](#prerequisites)
@@ -7,35 +12,100 @@
- [Build](#build)
- [CI](#ci)
## Things you may need to know before getting started
Building the desktop client app for the moment is a bit more complicated than building the web app. The client right now is an Electron app that wraps the prebuilt web app, with parts of the native modules written in Rust, which means we have the following source modules to build a desktop client app:
1. `packages/frontend/core`: the web app
2. `packages/frontend/native`: the native modules written in Rust (mostly the sqlite bindings)
3. `packages/frontend/electron`: the Electron app (containing main & helper process, and the electron entry point in `packages/frontend/electron/renderer`)
#3 is dependent on #1 and #2, and relies on electron-forge to make the final app & installer. To get a deep understanding of how the desktop client app is built, you may want to read the workflow file in [release-desktop.yml](/.github/workflows/release-desktop.yml).
Due to [some limitations of Electron builder](https://github.com/yarnpkg/berry/issues/4804), you may need to have two separate yarn config for building the core and the desktop client app:
1. build frontend (with default yarn settings)
2. build electron (reinstall with hoisting off)
We will explain the steps in the following sections.
## Prerequisites
Before you start building AFFiNE Desktop Client Application, please [install Rust toolchain first](https://www.rust-lang.org/learn/get-started).
Before you start building AFFiNE Desktop Client Application, please following the same steps in [BUILDING#Prerequisites](./BUILDING.md#prerequisites) to install Node.js and Rust.
Note that if you encounter any issues with installing Rust and crates, try following [this guide (zh-CN)](https://course.rs/first-try/slowly-downloading.html) to set up alternative registries.
On Windows, you must enable symbolic links this code repo. See [#### Windows](./BUILDING.md#Windows).
## Development
## Build, package & make the desktop client app
To run AFFiNE Desktop Client Application locally, run the following commands:
### 0. Build the native modules
```sh
# in repo root
yarn install
yarn dev
Please refer to `Build Native Dependencies` section in [BUILDING.md](./BUILDING.md#Build-Native-Dependencies) to build the native modules.
# in packages/frontend/native
yarn build
### 1. Build the core
# in packages/frontend/electron
yarn dev
On Mac & Linux
```shell
BUILD_TYPE=canary SKIP_NX_CACHE=1 yarn workspace @affine/electron generate-assets
```
Now you should see the Electron app window popping up shortly.
On Windows (powershell)
## Build
```powershell
$env:BUILD_TYPE="canary"
$env:SKIP_NX_CACHE=1
$env:DISTRIBUTION=desktop
$env:SKIP_WEB_BUILD=1
yarn build --skip-nx-cache
```
To build the desktop client application, run `yarn make` in `packages/frontend/electron`.
### 2. Re-config yarn, clean up the node_modules and reinstall the dependencies
Note: you may want to comment out `osxSign` and `osxNotarize` in `forge.config.js` to avoid signing and notarizing the app.
As we said before, you need to reinstall the dependencies with hoisting off. You can do this by running the following command:
```shell
yarn config set nmMode classic
yarn config set nmHoistingLimits workspaces
```
Then, clean up all node_modules and reinstall the dependencies:
On Mac & Linux
```shell
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
yarn install
```
On Windows (powershell)
```powershell
dir -Path . -Filter node_modules -recurse | foreach {echo $_.fullname; rm -r -Force $_.fullname}
yarn install
```
### 3. Build the desktop client app installer
#### Mac & Linux
Note: you need to comment out `osxSign` and `osxNotarize` in `forge.config.js` to skip signing and notarizing the app.
```shell
BUILD_TYPE=canary SKIP_WEB_BUILD=1 HOIST_NODE_MODULES=1 yarn workspace @affine/electron make
```
#### Windows
Making the windows installer is a bit different. Right now we provide two installer options: squirrel and nsis.
```powershell
$env:BUILD_TYPE="canary"
$env:SKIP_WEB_BUILD=1
$env:HOIST_NODE_MODULES=1
yarn workspace @affine/electron package
yarn workspace @affine/electron make-squirrel
yarn workspace @affine/electron make-nsis
```
Once the build is complete, you can find the paths to the binaries in the terminal output.

View File

@@ -1,256 +0,0 @@
# Behind the code - Code Design and Architecture of the AFFiNE platform
## Introduction
This document delves into the design and architecture of the AFFiNE platform, providing insights for developers interested in contributing to AFFiNE or gaining a better understanding of our design principles.
## Addressing the Challenge
AFFiNE is a platform designed to be the next-generation collaborative knowledge base for professionals. It is local-first, yet collaborative; It is robust as a foundational platform, yet friendly to extend. We believe that a knowledge base that truly meets the needs of professionals in different scenarios should be open-source and open to the community. By using AFFiNE, people can take full control of their data and workflow, thus achieving data sovereignty.
To do so, we should have a stable plugin system that is easy to use by the community and a well-modularized editor for customizability. Let's list the challenges from the perspective of data modeling, UI and feature plugins, and cross-platform support.
### Data might come from anywhere and go anywhere, in spite of the cloud
AFFiNE provides users with flexibility and control over their data storage. Our platform is designed to prioritize user ownership of data, which means data in AFFiNE is always accessible from local devices like a laptop's local file or the browser's indexedDB. In the mean while, data can also be stored in centralised cloud-native way.
Thanks to our use of CRDTs (Conflict-free Replicated Data Types), data in AFFiNE is always conflict-free, similar to a auto-resolve-conflict Git. This means that data synchronization, sharing, and real-time collaboration are seamless and can occur across any network layer so long as the data as passed. As a result, developers do not need to worry about whether the data was generated locally or remotely, as CRDTs treat both equally.
While a server-centric backend is supported with AFFiNE, it is not suggested. By having a local-first architecture, AFFiNE users can have real-time responsive UI, optimal performance and effortlessly synchronize data across multiple devices and locations. This includes peer-to-peer file replication, storing file in local or cloud storage, saving it to a server-side database, or using AFFiNE Cloud for real-time collaboration and synchronization.
### Customizable UI and features
AFFiNE is a platform that allows users to customize the UI and features of each part.
We need to consider the following cases:
- Pluggable features: Some features can be disabled or enabled. For example, individuals who use AFFiNE for personal purposes may not need authentication or collaboration features. On the other hand, enterprise users may require authentication and strong security.
- SDK for the developers, the developers can modify or build their own feature or UI plugins, such as AI writing support, self-hosted databases, or domain-specific editable blocks.
### Diverse platforms
AFFiNE supports various platforms, including desktop, mobile, and web while being local-first. However, it's important to note that certain features may differ on different platforms, and it's also possible for data and editor versions to become mismatched.
## The solution
### Loading Mechanism
The AFFiNE is built on the web platform, meaning that most code runs on the JavaScript runtime(v8, QuickJS).
Some interfaces, like in the Desktop, will be implemented in the native code like Rust.
But eventually, the main logic of AFFiNE is running on the JavaScript runtime. Since it is a single-threaded runtime, we need to ensure that the code is running in a non-blocking way.
Some logic has to be running in the blocking way.
We have to set up the environment before starting the core.
And for the Workspace, like local workspace or cloud workspace, we have to load the data from the storage before rendering the UI.
During this period, there will be transition animation and skeleton UI.
```mermaid
graph LR
subgraph Interactive unavailable
A[Loading] --> B[Setup Environment]
B --> C[Loading Initial Data]
C --> D[Skeleton UI]
end
D --> E[Render UI]
E --> F[Async fetching Data] --> E
```
In this way, we need to boost the performance of the loading process.
The initial data is the most costly part of the process.
We must ensure that the initial data is loaded as quickly as possible.
Here is an obvious conclusion that only one Workspace is active simultaneously in one browser.
So we need to load the data of the active Workspace as the initial data.
And other workspaces can be loaded in the background asynchronously.
For example, the local Workspace is saved in the browser's indexedDB.
One way to boost the performance is to use the Web Worker to load the data in the background.
Here is one pseudocode:
```tsx
// worker.ts
import { openDB } from 'idb';
const db = await openDB('local-db' /* ... */);
const data = await db.getAll('data');
self.postMessage(data);
// main.ts
const worker = new Worker('./worker.ts', { type: 'module' });
await new Promise<Data>(resolve => {
worker.addEventListener('message', e => resolve(e.data));
});
// ready to render the UI
renderUI(data);
```
We use React Suspense to deal with the initial data loading in the real code.
```tsx
import { atom, useAtom, useAtomValue, useSetAtom } from 'jotai';
const currentWorkspaceIdAtom = atom(null);
const currentWorkspaceAtom = atom<Workspace>(async get => {
const workspaceId = await get(currentWorkspaceIdAtom);
// async load the workspace data
return Workspace;
});
const Workspace = () => {
const currentWorkspace = useAtomValue(currentWorkspaceAtom);
return <WorkspaceUI workspace={currentWorkspace} />;
};
const App = () => {
const router = useRouter();
const workspaceId = router.query.workspaceId;
const [currentWorkspaceId, set] = useAtom(currentWorkspaceIdAtom);
if (!currentWorkspaceId) {
set(workspaceId);
return <Loading />;
}
return (
<Suspense fallback={<Skeleton />}>
<Workspace />
</Suspense>
);
};
```
### Data Storage and UI Rendering
We assume that the data is stored in different places and loaded differently.
In the current version, we have two places to store the data: local and Cloud storage.
The local storage is the browser's indexedDB, the default storage for the local Workspace.
The cloud storage is the AFFiNE Cloud, which is the default storage for the cloud workspace.
But since the Time to Interactive(TTI) is the most important metric for performance and user experience,
all initial data is loaded in the indexedDB.
And other data will be loaded and updated in the background.
With this design concept, we have the following data structure:
```ts
import { Workspace as Store } from '@blocksuite/store';
interface Provider {
type: 'local-indexeddb' | 'affine-cloud' | 'desktop-sqlite';
background: boolean; // if the provider is background, we will load the data in the background
necessary: boolean; // if the provider is necessary, we will block the UI rendering until this provider is ready
}
interface Workspace {
id: string;
store: Store;
providers: Provider[];
}
```
The `provider` is a connector that bridges the current data in memory and the data in another place.
You can combine different providers to build different data storage and loading strategy.
For example, if there is only `affine-cloud`,
the data will be only loaded from the Cloud and not saved in the local storage,
which might be useful for the enterprise user.
Also, we want to distinguish the different types of Workspace.
Even though the providers are enough for the Workspace, when we display the Workspace in the UI, we need to know the type of Workspace.
AFFiNE Cloud Workspace needs user authentication; the local Workspace does not need it.
And there should have a way to create, read, update, and delete the Workspace.
Hence, we combine all details of the Workspace as we mentioned above into the `WorkspacePlugin` type.
```ts
import React from 'react';
interface UI<WorkspaceType> {
DetailPage: React.FC<UIProps<WorkspaceType>>;
SettingPage: React.FC<UIProps<WorkspaceType>>;
SettingPage: React.FC<UIProps<WorkspaceType>>;
}
interface CRUD<WorkspaceType> {
create: () => Promise<WorkspaceType>;
read: (id: string) => Promise<WorkspaceType>;
list: () => Promise<WorkspaceType[]>;
delete: (Workspace: WorkspaceType) => Promise<WorkspaceType>;
}
interface WorkspacePlugin<WorkspaceType> {
type: WorkspaceType;
ui: UI<WorkspaceType>;
crud: CRUD<WorkspaceType>;
}
```
```mermaid
graph TB
WorkspaceCRUD --> Cloud
WorkspaceCRUD --> SelfHostCloud
subgraph Remote
Cloud[AFFiNE Cloud]
SelfHostCloud[Self Host AFFiNE Server]
end
subgraph Computer
WorkspaceCRUD --> DesktopSqlite[Desktop Sqlite]
subgraph JavaScript Runtime
IndexedDB[IndexedDB]
WorkspaceCRUD --> IndexedDB
subgraph Next.js
Entry((entry point))
Entry --> NextApp[Next.js App]
NextApp --> App[App]
end
subgraph Workspace Runtime
App[App] --> WorkspaceUI
WorkspacePlugin[Workspace Plugin]
WorkspacePlugin[Workspace Plugin] --> WorkspaceUI
WorkspacePlugin[Workspace Plugin] --> WorkspaceCRUD[Workspace CRUD]
WorkspaceUI[Workspace UI] --> WorkspaceCRUD
WorkspaceUI -->|async init| Provider
Provider -->|update ui| WorkspaceUI
Provider -->|update data| WorkspaceCRUD
end
end
end
```
Notice that we do not assume the Workspace UI has to be written in React.js(for now, it has to be),
In the future, we can support other UI frameworks instead, like Vue and Svelte.
### Workspace Loading Details
```mermaid
flowchart TD
subgraph JavaScript Runtime
subgraph Next.js
Start((entry point)) -->|setup environment| OnMount{On mount}
OnMount -->|empty data| Init[Init Workspaces]
Init --> LoadData
OnMount -->|already have data| LoadData>Load data]
LoadData --> CurrentWorkspace[Current workspace]
LoadData --> Workspaces[Workspaces]
Workspaces --> Providers[Providers]
subgraph React
Router([Router]) -->|sync `query.workspaceId`| CurrentWorkspace
CurrentWorkspace -->|sync `currentWorkspaceId`| Router
CurrentWorkspace -->|render| WorkspaceUI[Workspace UI]
end
end
Providers -->|push new update| Persistence[(Persistence)]
Persistence -->|patch workspace| Providers
end
```

View File

@@ -29,13 +29,6 @@ It includes the global constants, browser and system check.
This package should be imported at the very beginning of the entry point.
### `@affine/workspace-impl`
Current we have two workspace plugin:
- `local` for local workspace, which is the default workspace type.
- `affine` for cloud workspace, which is the workspace type for AFFiNE Cloud with OctoBase backend.
#### Design principles
- Each workspace plugin has its state and is isolated from other workspace plugins.
@@ -60,13 +53,3 @@ yarn dev
### `@affine/electron`
See [building desktop client app](../building-desktop-client-app.md).
### `@affine/storybook`
```shell
yarn workspace @affine/storybook storybook
```
## What's next?
- [Behind the code](./behind-the-code.md)

View File

@@ -1,5 +1,10 @@
This document explains how to start server (@affine/server) locally with Docker
> **Warning**:
>
> This document is not guaranteed to be up-to-date.
> If you find any outdated information, please feel free to open an issue or submit a PR.
## Run postgresql in docker
```
@@ -81,7 +86,7 @@ yarn workspace @affine/server prisma studio
```
# build native
yarn workspace @affine/storage build
yarn workspace @affine/server-native build
yarn workspace @affine/native build
```

View File

@@ -9,7 +9,7 @@
"devDependencies": {
"nodemon": "^3.1.0",
"serve": "^14.2.1",
"typedoc": "^0.25.8"
"typedoc": "^0.25.13"
},
"nodemonConfig": {
"watch": [

16
oxlint.json Normal file
View File

@@ -0,0 +1,16 @@
{
"rules": {
// allow
"import/named": "allow",
"no-await-in-loop": "allow",
// deny
"unicorn/prefer-array-some": "error",
"unicorn/no-useless-promise-resolve-reject": "error",
"import/no-cycle": [
"error",
{
"ignoreTypes": true
}
]
}
}

View File

@@ -21,16 +21,14 @@
"dev:electron": "yarn workspace @affine/electron dev",
"build": "yarn nx build @affine/web",
"build:electron": "yarn nx build @affine/electron",
"build:storage": "yarn nx run-many -t build -p @affine/storage",
"build:storybook": "yarn nx build @affine/storybook",
"build:server-native": "yarn nx run-many -t build -p @affine/server-native",
"start:web-static": "yarn workspace @affine/web static-server",
"start:storybook": "yarn exec serve tests/storybook/storybook-static -l 6006",
"serve:test-static": "yarn exec serve tests/fixtures --cors -p 8081",
"lint:eslint": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" eslint . --ext .js,mjs,.ts,.tsx --cache",
"lint:eslint:fix": "yarn lint:eslint --fix",
"lint:prettier": "prettier --ignore-unknown --cache --check .",
"lint:prettier:fix": "prettier --ignore-unknown --cache --write .",
"lint:ox": "oxlint --import-plugin --deny-warnings -D correctness -D nursery -D prefer-array-some -D no-useless-promise-resolve-reject -D perf -A no-undef -A consistent-type-exports -A default -A named -A ban-ts-comment -A export -A no-unresolved -A no-default-export -A no-duplicates -A no-side-effects-in-initialization -A no-named-as-default -A getter-return",
"lint:ox": "oxlint -c oxlint.json --deny-warnings --import-plugin -D correctness -D perf",
"lint": "yarn lint:eslint && yarn lint:prettier",
"lint:fix": "yarn lint:eslint:fix && yarn lint:prettier:fix",
"test": "vitest --run",
@@ -56,64 +54,63 @@
"devDependencies": {
"@affine-test/kit": "workspace:*",
"@affine/cli": "workspace:*",
"@commitlint/cli": "^19.0.0",
"@commitlint/config-conventional": "^19.0.0",
"@commitlint/cli": "^19.2.1",
"@commitlint/config-conventional": "^19.1.0",
"@faker-js/faker": "^8.4.1",
"@istanbuljs/schema": "^0.1.3",
"@magic-works/i18n-codegen": "^0.5.0",
"@nx/vite": "18.1.2",
"@playwright/test": "^1.41.2",
"@magic-works/i18n-codegen": "^0.6.0",
"@nx/vite": "19.0.3",
"@playwright/test": "^1.44.0",
"@taplo/cli": "^0.7.0",
"@testing-library/react": "^14.2.1",
"@testing-library/react": "^15.0.0",
"@toeverything/infra": "workspace:*",
"@types/affine__env": "workspace:*",
"@types/eslint": "^8.56.3",
"@types/node": "^20.11.20",
"@typescript-eslint/eslint-plugin": "^7.0.2",
"@typescript-eslint/parser": "^7.0.2",
"@vanilla-extract/vite-plugin": "^4.0.4",
"@vanilla-extract/webpack-plugin": "^2.3.6",
"@types/eslint": "^8.56.7",
"@types/node": "^20.12.7",
"@typescript-eslint/eslint-plugin": "^7.6.0",
"@typescript-eslint/parser": "^7.6.0",
"@vanilla-extract/vite-plugin": "^4.0.7",
"@vanilla-extract/webpack-plugin": "^2.3.7",
"@vitejs/plugin-react-swc": "^3.6.0",
"@vitest/coverage-istanbul": "1.4.0",
"@vitest/ui": "1.4.0",
"@vitest/coverage-istanbul": "1.6.0",
"@vitest/ui": "1.6.0",
"cross-env": "^7.0.3",
"electron": "^29.0.1",
"eslint": "^8.56.0",
"electron": "^30.0.0",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import-x": "^0.4.1",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-import-x": "^0.5.0",
"eslint-plugin-react": "^7.34.1",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-rxjs": "^5.0.3",
"eslint-plugin-simple-import-sort": "^12.0.0",
"eslint-plugin-sonarjs": "^0.24.0",
"eslint-plugin-unicorn": "^51.0.1",
"eslint-plugin-sonarjs": "^0.25.1",
"eslint-plugin-unicorn": "^52.0.0",
"eslint-plugin-unused-imports": "^3.1.0",
"eslint-plugin-vue": "^9.22.0",
"eslint-plugin-vue": "^9.24.1",
"fake-indexeddb": "5.0.2",
"happy-dom": "^14.0.0",
"happy-dom": "^14.7.1",
"husky": "^9.0.11",
"lint-staged": "^15.2.2",
"msw": "^2.2.1",
"nanoid": "^5.0.6",
"nx": "^18.0.4",
"msw": "^2.2.13",
"nanoid": "^5.0.7",
"nx": "^19.0.0",
"nyc": "^15.1.0",
"oxlint": "0.2.14",
"oxlint": "0.3.2",
"prettier": "^3.2.5",
"semver": "^7.6.0",
"serve": "^14.2.1",
"string-width": "^7.1.0",
"ts-node": "^10.9.2",
"typescript": "^5.3.3",
"vite": "^5.1.4",
"typescript": "^5.4.5",
"vite": "^5.2.8",
"vite-plugin-istanbul": "^6.0.0",
"vite-plugin-static-copy": "^1.0.1",
"vitest": "1.4.0",
"vite-plugin-static-copy": "^1.0.2",
"vitest": "1.6.0",
"vitest-fetch-mock": "^0.2.2",
"vitest-mock-extended": "^1.3.1"
},
"packageManager": "yarn@4.1.1",
"packageManager": "yarn@4.2.2",
"resolutions": {
"vite": "^5.0.6",
"array-buffer-byte-length": "npm:@nolyfill/array-buffer-byte-length@latest",
"array-includes": "npm:@nolyfill/array-includes@latest",
"array.prototype.flat": "npm:@nolyfill/array.prototype.flat@latest",
@@ -169,7 +166,7 @@
"unbox-primitive": "npm:@nolyfill/unbox-primitive@latest",
"which-boxed-primitive": "npm:@nolyfill/which-boxed-primitive@latest",
"which-typed-array": "npm:@nolyfill/which-typed-array@latest",
"@reforged/maker-appimage/@electron-forge/maker-base": "7.3.0",
"@reforged/maker-appimage/@electron-forge/maker-base": "7.4.0",
"macos-alias": "npm:@napi-rs/macos-alias@0.0.4",
"fs-xattr": "npm:@napi-rs/xattr@latest",
"@radix-ui/react-dialog": "npm:@radix-ui/react-dialog@latest"

View File

@@ -1,5 +1,5 @@
[package]
name = "affine_storage"
name = "affine_server_native"
version = "1.0.0"
edition = "2021"
@@ -8,6 +8,7 @@ crate-type = ["cdylib"]
[dependencies]
chrono = "0.4"
file-format = { version = "0.25", features = ["reader"] }
napi = { version = "2", default-features = false, features = [
"napi5",
"async",

View File

@@ -1,6 +1,8 @@
/* auto-generated by NAPI-RS */
/* eslint-disable */
export function getMime(input: Uint8Array): string
/**
* Merge updates in form like `Y.applyUpdate(doc, update)` way and return the
* result binary.

View File

@@ -3,9 +3,9 @@ import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
/** @type {import('.')} */
const binding = require('./storage.node');
const binding = require('./server-native.node');
export const Storage = binding.Storage;
export const mergeUpdatesInApplyWay = binding.mergeUpdatesInApplyWay;
export const verifyChallengeResponse = binding.verifyChallengeResponse;
export const mintChallengeResponse = binding.mintChallengeResponse;
export const getMime = binding.getMime;

View File

@@ -1,5 +1,5 @@
{
"name": "@affine/storage",
"name": "@affine/server-native",
"version": "0.14.0",
"engines": {
"node": ">= 10.16.0 < 11 || >= 11.8.0"
@@ -10,13 +10,13 @@
"types": "index.d.ts",
"exports": {
".": {
"require": "./storage.node",
"require": "./server-native.node",
"import": "./index.js",
"types": "./index.d.ts"
}
},
"napi": {
"binaryName": "storage",
"binaryName": "server-native",
"targets": [
"aarch64-apple-darwin",
"aarch64-unknown-linux-gnu",
@@ -29,16 +29,13 @@
"scripts": {
"test": "node --test ./__tests__/**/*.spec.js",
"build": "napi build --release --strip --no-const-enum",
"build:debug": "napi build",
"prepublishOnly": "napi prepublish -t npm",
"artifacts": "napi artifacts",
"version": "napi version"
"build:debug": "napi build"
},
"devDependencies": {
"@napi-rs/cli": "3.0.0-alpha.43",
"lib0": "^0.2.89",
"nx": "^18.0.4",
"nx-cloud": "^18.0.0",
"yjs": "^13.6.12"
"@napi-rs/cli": "3.0.0-alpha.55",
"lib0": "^0.2.93",
"nx": "^19.0.0",
"nx-cloud": "^19.0.0",
"yjs": "^13.6.14"
}
}

View File

@@ -1,9 +1,9 @@
{
"name": "@affine/storage",
"name": "@affine/server-native",
"$schema": "../../../node_modules/nx/schemas/project-schema.json",
"projectType": "application",
"root": "packages/backend/storage",
"sourceRoot": "packages/backend/storage/src",
"root": "packages/backend/native",
"sourceRoot": "packages/backend/native/src",
"targets": {
"build": {
"executor": "nx:run-script",

View File

@@ -0,0 +1,8 @@
use napi_derive::napi;
#[napi]
pub fn get_mime(input: &[u8]) -> String {
file_format::FileFormat::from_bytes(input)
.media_type()
.to_string()
}

View File

@@ -1,5 +1,6 @@
#![deny(clippy::all)]
pub mod file_type;
pub mod hashcash;
use std::fmt::{Debug, Display};

View File

@@ -11,7 +11,7 @@ yarn
### Build Native binding
```bash
yarn workspace @affine/storage build
yarn workspace @affine/server-native build
```
### Run server

View File

@@ -0,0 +1,16 @@
-- CreateEnum
CREATE TYPE "AiPromptRole" AS ENUM ('system', 'assistant', 'user');
-- CreateTable
CREATE TABLE "ai_prompts" (
"id" VARCHAR NOT NULL,
"name" VARCHAR(20) NOT NULL,
"idx" INTEGER NOT NULL,
"role" "AiPromptRole" NOT NULL,
"content" TEXT NOT NULL,
"created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ai_prompts_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "ai_prompts_name_idx_key" ON "ai_prompts"("name", "idx");

View File

@@ -0,0 +1,25 @@
-- CreateTable
CREATE TABLE "ai_sessions" (
"id" VARCHAR(36) NOT NULL,
"user_id" VARCHAR NOT NULL,
"workspace_id" VARCHAR NOT NULL,
"doc_id" VARCHAR NOT NULL,
"prompt_name" VARCHAR NOT NULL,
"action" BOOLEAN NOT NULL,
"flavor" VARCHAR NOT NULL,
"model" VARCHAR NOT NULL,
"messages" JSON NOT NULL,
"created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMPTZ(6) NOT NULL,
CONSTRAINT "ai_sessions_pkey" PRIMARY KEY ("id")
);
-- AddForeignKey
ALTER TABLE "ai_sessions" ADD CONSTRAINT "ai_sessions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "ai_sessions" ADD CONSTRAINT "ai_sessions_workspace_id_fkey" FOREIGN KEY ("workspace_id") REFERENCES "workspaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "ai_sessions" ADD CONSTRAINT "ai_sessions_doc_id_workspace_id_fkey" FOREIGN KEY ("doc_id", "workspace_id") REFERENCES "snapshots"("guid", "workspace_id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@@ -0,0 +1,87 @@
/*
Warnings:
- You are about to drop the `ai_prompts` table. If the table is not empty, all the data it contains will be lost.
- You are about to drop the `ai_sessions` table. If the table is not empty, all the data it contains will be lost.
*/
-- DropForeignKey
ALTER TABLE "ai_sessions" DROP CONSTRAINT "ai_sessions_doc_id_workspace_id_fkey";
-- DropForeignKey
ALTER TABLE "ai_sessions" DROP CONSTRAINT "ai_sessions_user_id_fkey";
-- DropForeignKey
ALTER TABLE "ai_sessions" DROP CONSTRAINT "ai_sessions_workspace_id_fkey";
-- DropTable
DROP TABLE "ai_prompts";
-- DropTable
DROP TABLE "ai_sessions";
-- CreateTable
CREATE TABLE "ai_prompts_messages" (
"prompt_id" INTEGER NOT NULL,
"idx" INTEGER NOT NULL,
"role" "AiPromptRole" NOT NULL,
"content" TEXT NOT NULL,
"attachments" JSON,
"params" JSON,
"created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- CreateTable
CREATE TABLE "ai_prompts_metadata" (
"id" SERIAL NOT NULL,
"name" VARCHAR(32) NOT NULL,
"action" VARCHAR,
"model" VARCHAR,
"created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ai_prompts_metadata_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "ai_sessions_messages" (
"id" VARCHAR(36) NOT NULL,
"session_id" VARCHAR(36) NOT NULL,
"role" "AiPromptRole" NOT NULL,
"content" TEXT NOT NULL,
"attachments" JSON,
"params" JSON,
"created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMPTZ(6) NOT NULL,
CONSTRAINT "ai_sessions_messages_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "ai_sessions_metadata" (
"id" VARCHAR(36) NOT NULL,
"user_id" VARCHAR(36) NOT NULL,
"workspace_id" VARCHAR(36) NOT NULL,
"doc_id" VARCHAR(36) NOT NULL,
"prompt_name" VARCHAR(32) NOT NULL,
"created_at" TIMESTAMPTZ(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ai_sessions_metadata_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "ai_prompts_messages_prompt_id_idx_key" ON "ai_prompts_messages"("prompt_id", "idx");
-- CreateIndex
CREATE UNIQUE INDEX "ai_prompts_metadata_name_key" ON "ai_prompts_metadata"("name");
-- AddForeignKey
ALTER TABLE "ai_prompts_messages" ADD CONSTRAINT "ai_prompts_messages_prompt_id_fkey" FOREIGN KEY ("prompt_id") REFERENCES "ai_prompts_metadata"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "ai_sessions_messages" ADD CONSTRAINT "ai_sessions_messages_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "ai_sessions_metadata"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "ai_sessions_metadata" ADD CONSTRAINT "ai_sessions_metadata_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "ai_sessions_metadata" ADD CONSTRAINT "ai_sessions_metadata_prompt_name_fkey" FOREIGN KEY ("prompt_name") REFERENCES "ai_prompts_metadata"("name") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@@ -0,0 +1,5 @@
-- CreateIndex
CREATE INDEX "user_features_user_id_idx" ON "user_features"("user_id");
-- CreateIndex
CREATE INDEX "users_email_idx" ON "users"("email");

View File

@@ -18,104 +18,106 @@
"predeploy": "yarn prisma migrate deploy && node --import ./scripts/register.js ./dist/data/index.js run"
},
"dependencies": {
"@apollo/server": "^4.10.0",
"@auth/prisma-adapter": "^1.4.0",
"@aws-sdk/client-s3": "^3.536.0",
"@google-cloud/opentelemetry-cloud-monitoring-exporter": "^0.17.0",
"@apollo/server": "^4.10.2",
"@aws-sdk/client-s3": "^3.552.0",
"@google-cloud/opentelemetry-cloud-monitoring-exporter": "^0.18.0",
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.1.0",
"@google-cloud/opentelemetry-resource-util": "^2.1.0",
"@keyv/redis": "^2.8.4",
"@nestjs/apollo": "^12.1.0",
"@nestjs/common": "^10.3.3",
"@nestjs/core": "^10.3.3",
"@nestjs/common": "^10.3.7",
"@nestjs/core": "^10.3.7",
"@nestjs/event-emitter": "^2.0.4",
"@nestjs/graphql": "^12.1.1",
"@nestjs/platform-express": "^10.3.3",
"@nestjs/platform-socket.io": "^10.3.3",
"@nestjs/platform-express": "^10.3.7",
"@nestjs/platform-socket.io": "^10.3.7",
"@nestjs/schedule": "^4.0.1",
"@nestjs/serve-static": "^4.0.1",
"@nestjs/throttler": "^5.0.1",
"@nestjs/websockets": "^10.3.3",
"@node-rs/argon2": "^1.7.2",
"@node-rs/crc32": "^1.9.2",
"@node-rs/jsonwebtoken": "^0.5.0",
"@opentelemetry/api": "^1.7.0",
"@opentelemetry/core": "^1.21.0",
"@opentelemetry/exporter-prometheus": "^0.49.0",
"@opentelemetry/exporter-zipkin": "^1.21.0",
"@nestjs/serve-static": "^4.0.2",
"@nestjs/throttler": "5.1.2",
"@nestjs/websockets": "^10.3.7",
"@node-rs/argon2": "^1.8.0",
"@node-rs/crc32": "^1.10.0",
"@node-rs/jsonwebtoken": "^0.5.2",
"@opentelemetry/api": "^1.8.0",
"@opentelemetry/core": "^1.23.0",
"@opentelemetry/exporter-prometheus": "^0.51.0",
"@opentelemetry/exporter-zipkin": "^1.23.0",
"@opentelemetry/host-metrics": "^0.35.0",
"@opentelemetry/instrumentation": "^0.49.0",
"@opentelemetry/instrumentation-graphql": "^0.38.0",
"@opentelemetry/instrumentation-http": "^0.49.0",
"@opentelemetry/instrumentation-ioredis": "^0.38.0",
"@opentelemetry/instrumentation-nestjs-core": "^0.35.0",
"@opentelemetry/instrumentation-socket.io": "^0.37.0",
"@opentelemetry/resources": "^1.21.0",
"@opentelemetry/sdk-metrics": "^1.21.0",
"@opentelemetry/sdk-node": "^0.49.0",
"@opentelemetry/sdk-trace-node": "^1.21.0",
"@opentelemetry/semantic-conventions": "^1.21.0",
"@prisma/client": "^5.10.2",
"@prisma/instrumentation": "^5.10.2",
"@socket.io/redis-adapter": "^8.2.1",
"@opentelemetry/instrumentation": "^0.51.0",
"@opentelemetry/instrumentation-graphql": "^0.40.0",
"@opentelemetry/instrumentation-http": "^0.51.0",
"@opentelemetry/instrumentation-ioredis": "^0.40.0",
"@opentelemetry/instrumentation-nestjs-core": "^0.37.0",
"@opentelemetry/instrumentation-socket.io": "^0.39.0",
"@opentelemetry/resources": "^1.23.0",
"@opentelemetry/sdk-metrics": "^1.23.0",
"@opentelemetry/sdk-node": "^0.51.0",
"@opentelemetry/sdk-trace-node": "^1.23.0",
"@opentelemetry/semantic-conventions": "^1.23.0",
"@prisma/client": "^5.12.1",
"@prisma/instrumentation": "^5.12.1",
"@socket.io/redis-adapter": "^8.3.0",
"cookie-parser": "^1.4.6",
"dotenv": "^16.4.5",
"dotenv-cli": "^7.3.0",
"express": "^4.18.2",
"file-type": "^19.0.0",
"get-stream": "^9.0.0",
"dotenv-cli": "^7.4.1",
"express": "^4.19.2",
"get-stream": "^9.0.1",
"graphql": "^16.8.1",
"graphql-scalars": "^1.22.4",
"graphql-scalars": "^1.23.0",
"graphql-type-json": "^0.3.2",
"graphql-upload": "^16.0.2",
"ioredis": "^5.3.2",
"keyv": "^4.5.4",
"lodash-es": "^4.17.21",
"mixpanel": "^0.18.0",
"nanoid": "^5.0.6",
"mustache": "^4.2.0",
"nanoid": "^5.0.7",
"nest-commander": "^3.12.5",
"nestjs-throttler-storage-redis": "^0.4.1",
"nodemailer": "^6.9.10",
"nodemailer": "^6.9.13",
"on-headers": "^1.0.2",
"openai": "^4.33.0",
"parse-duration": "^1.1.0",
"pretty-time": "^1.1.0",
"prisma": "^5.10.2",
"prom-client": "^15.1.0",
"reflect-metadata": "^0.2.1",
"prisma": "^5.12.1",
"prom-client": "^15.1.1",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1",
"semver": "^7.6.0",
"socket.io": "^4.7.4",
"stripe": "^14.18.0",
"socket.io": "^4.7.5",
"stripe": "^15.0.0",
"tiktoken": "^1.0.13",
"ts-node": "^10.9.2",
"typescript": "^5.3.3",
"typescript": "^5.4.5",
"ws": "^8.16.0",
"yjs": "^13.6.12",
"yjs": "^13.6.14",
"zod": "^3.22.4"
},
"devDependencies": {
"@affine-test/kit": "workspace:*",
"@affine/storage": "workspace:*",
"@affine/server-native": "workspace:*",
"@napi-rs/image": "^1.9.1",
"@nestjs/testing": "^10.3.3",
"@types/cookie-parser": "^1.4.6",
"@nestjs/testing": "^10.3.7",
"@types/cookie-parser": "^1.4.7",
"@types/engine.io": "^3.1.10",
"@types/express": "^4.17.21",
"@types/graphql-upload": "^16.0.7",
"@types/keyv": "^4.2.0",
"@types/lodash-es": "^4.17.12",
"@types/mixpanel": "^2.14.8",
"@types/node": "^20.11.20",
"@types/mustache": "^4.2.5",
"@types/node": "^20.12.7",
"@types/nodemailer": "^6.4.14",
"@types/on-headers": "^1.0.3",
"@types/pretty-time": "^1.1.5",
"@types/sinon": "^17.0.3",
"@types/supertest": "^6.0.2",
"@types/ws": "^8.5.10",
"ava": "^6.1.1",
"ava": "^6.1.2",
"c8": "^9.1.0",
"nodemon": "^3.1.0",
"sinon": "^17.0.1",
"supertest": "^6.3.4"
"supertest": "^7.0.0"
},
"ava": {
"timeout": "1m",

View File

@@ -30,7 +30,9 @@ model User {
pagePermissions WorkspacePageUserPermission[]
connectedAccounts ConnectedAccount[]
sessions UserSession[]
aiSessions AiSession[]
@@index([email])
@@map("users")
}
@@ -194,6 +196,7 @@ model UserFeatures {
feature Features @relation(fields: [featureId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([userId])
@@map("user_features")
}
@@ -422,6 +425,75 @@ model UserInvoice {
@@map("user_invoices")
}
enum AiPromptRole {
system
assistant
user
}
model AiPromptMessage {
promptId Int @map("prompt_id") @db.Integer
// if a group of prompts contains multiple sentences, idx specifies the order of each sentence
idx Int @db.Integer
// system/assistant/user
role AiPromptRole
// prompt content
content String @db.Text
attachments Json? @db.Json
params Json? @db.Json
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
prompt AiPrompt @relation(fields: [promptId], references: [id], onDelete: Cascade)
@@unique([promptId, idx])
@@map("ai_prompts_messages")
}
model AiPrompt {
id Int @id @default(autoincrement()) @db.Integer
name String @unique @db.VarChar(32)
// an mark identifying which view to use to display the session
// it is only used in the frontend and does not affect the backend
action String? @db.VarChar
model String? @db.VarChar
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
messages AiPromptMessage[]
sessions AiSession[]
@@map("ai_prompts_metadata")
}
model AiSessionMessage {
id String @id @default(uuid()) @db.VarChar(36)
sessionId String @map("session_id") @db.VarChar(36)
role AiPromptRole
content String @db.Text
attachments Json? @db.Json
params Json? @db.Json
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(6)
session AiSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)
@@map("ai_sessions_messages")
}
model AiSession {
id String @id @default(uuid()) @db.VarChar(36)
userId String @map("user_id") @db.VarChar(36)
workspaceId String @map("workspace_id") @db.VarChar(36)
docId String @map("doc_id") @db.VarChar(36)
promptName String @map("prompt_name") @db.VarChar(32)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
prompt AiPrompt @relation(fields: [promptName], references: [name], onDelete: Cascade)
messages AiSessionMessage[]
@@map("ai_sessions_metadata")
}
model DataMigration {
id String @id @default(uuid()) @db.VarChar(36)
name String @db.VarChar

View File

@@ -1,12 +1,13 @@
import { Controller, Get } from '@nestjs/common';
import { Public } from './core/auth';
import { Config } from './fundamentals/config';
import { Config, SkipThrottle } from './fundamentals';
@Controller('/')
export class AppController {
constructor(private readonly config: Config) {}
@SkipThrottle()
@Public()
@Get()
info() {

View File

@@ -1,13 +1,12 @@
import { join } from 'node:path';
import { Logger, Module } from '@nestjs/common';
import { APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core';
import { ScheduleModule } from '@nestjs/schedule';
import { ServeStaticModule } from '@nestjs/serve-static';
import { get } from 'lodash-es';
import { AppController } from './app.controller';
import { AuthGuard, AuthModule } from './core/auth';
import { AuthModule } from './core/auth';
import { ADD_ENABLED_FEATURES, ServerConfigModule } from './core/config';
import { DocModule } from './core/doc';
import { FeatureModule } from './core/features';
@@ -17,7 +16,7 @@ import { SyncModule } from './core/sync';
import { UserModule } from './core/user';
import { WorkspaceModule } from './core/workspaces';
import { getOptionalModuleMetadata } from './fundamentals';
import { CacheInterceptor, CacheModule } from './fundamentals/cache';
import { CacheModule } from './fundamentals/cache';
import type { AvailablePlugins } from './fundamentals/config';
import { Config, ConfigModule } from './fundamentals/config';
import { EventModule } from './fundamentals/event';
@@ -103,16 +102,6 @@ export class AppModuleBuilder {
compile() {
@Module({
providers: [
{
provide: APP_INTERCEPTOR,
useClass: CacheInterceptor,
},
{
provide: APP_GUARD,
useClass: AuthGuard,
},
],
imports: this.modules,
controllers: this.config.isSelfhosted ? [] : [AppController],
})
@@ -135,13 +124,12 @@ function buildAppModule() {
.use(DocModule)
// sync server only
.useIf(config => config.flavor.sync, SyncModule)
.useIf(config => config.flavor.sync, WebSocketModule, SyncModule)
// graphql server only
.useIf(
config => config.flavor.graphql,
ServerConfigModule,
WebSocketModule,
GqlModule,
StorageModule,
UserModule,

View File

@@ -4,7 +4,12 @@ import type { NestExpressApplication } from '@nestjs/platform-express';
import cookieParser from 'cookie-parser';
import graphqlUploadExpress from 'graphql-upload/graphqlUploadExpress.mjs';
import { GlobalExceptionFilter } from './fundamentals';
import { AuthGuard } from './core/auth';
import {
CacheInterceptor,
CloudThrottlerGuard,
GlobalExceptionFilter,
} from './fundamentals';
import { SocketIoAdapter, SocketIoAdapterImpl } from './fundamentals/websocket';
import { serverTimingAndCache } from './middleware/timing';
@@ -28,6 +33,8 @@ export async function createApp() {
})
);
app.useGlobalGuards(app.get(AuthGuard), app.get(CloudThrottlerGuard));
app.useGlobalInterceptors(app.get(CacheInterceptor));
app.useGlobalFilters(new GlobalExceptionFilter(app.getHttpAdapter()));
app.use(cookieParser());

View File

@@ -19,6 +19,9 @@ AFFiNE.ENV_MAP = {
MAILER_SECURE: ['mailer.secure', 'boolean'],
THROTTLE_TTL: ['rateLimiter.ttl', 'int'],
THROTTLE_LIMIT: ['rateLimiter.limit', 'int'],
COPILOT_OPENAI_API_KEY: 'plugins.copilot.openai.apiKey',
COPILOT_FAL_API_KEY: 'plugins.copilot.fal.apiKey',
COPILOT_UNSPLASH_API_KEY: 'plugins.copilot.unsplashKey',
REDIS_SERVER_HOST: 'plugins.redis.host',
REDIS_SERVER_PORT: ['plugins.redis.port', 'int'],
REDIS_SERVER_USER: 'plugins.redis.username',
@@ -36,4 +39,5 @@ AFFiNE.ENV_MAP = {
'featureFlags.syncClientVersionCheck',
'boolean',
],
TELEMETRY_ENABLE: ['telemetry.enabled', 'boolean'],
};

View File

@@ -36,8 +36,17 @@ if (env.R2_OBJECT_STORAGE_ACCOUNT_ID) {
AFFiNE.storage.storages.blob.bucket = `workspace-blobs-${
AFFiNE.affine.canary ? 'canary' : 'prod'
}`;
AFFiNE.storage.storages.copilot.provider = 'cloudflare-r2';
AFFiNE.storage.storages.copilot.bucket = `workspace-copilot-${
AFFiNE.affine.canary ? 'canary' : 'prod'
}`;
}
AFFiNE.plugins.use('copilot', {
openai: {},
fal: {},
});
AFFiNE.plugins.use('redis');
AFFiNE.plugins.use('payment', {
stripe: {

View File

@@ -53,6 +53,9 @@ AFFiNE.port = 3010;
// AFFiNE.metrics.enabled = true;
//
// /* Authentication Settings */
// /* Whether allow anyone signup */
// AFFiNE.auth.allowSignup = true;
//
// /* User Signup password limitation */
// AFFiNE.auth.password = {
// minLength: 8,

View File

@@ -14,7 +14,12 @@ import {
} from '@nestjs/common';
import type { Request, Response } from 'express';
import { PaymentRequiredException, URLHelper } from '../../fundamentals';
import {
Config,
PaymentRequiredException,
Throttle,
URLHelper,
} from '../../fundamentals';
import { UserService } from '../user';
import { validators } from '../utils/validators';
import { CurrentUser } from './current-user';
@@ -27,13 +32,20 @@ class SignInCredential {
password?: string;
}
class MagicLinkCredential {
email!: string;
token!: string;
}
@Throttle('strict')
@Controller('/api/auth')
export class AuthController {
constructor(
private readonly url: URLHelper,
private readonly auth: AuthService,
private readonly user: UserService,
private readonly token: TokenService
private readonly token: TokenService,
private readonly config: Config
) {}
@Public()
@@ -64,6 +76,10 @@ export class AuthController {
} else {
// send email magic link
const user = await this.user.findUserByEmail(credential.email);
if (!user && !this.config.auth.allowSignup) {
throw new BadRequestException('You are not allows to sign up.');
}
const result = await this.sendSignInEmail(
{ email: credential.email, signUp: !user },
redirectUri
@@ -85,7 +101,7 @@ export class AuthController {
) {
const token = await this.token.createToken(TokenType.SignIn, email);
const magicLink = this.url.link('/api/auth/magic-link', {
const magicLink = this.url.link('/magic-link', {
token,
email,
redirect_uri: redirectUri,
@@ -124,20 +140,16 @@ export class AuthController {
}
@Public()
@Get('/magic-link')
@Post('/magic-link')
async magicLinkSignIn(
@Req() req: Request,
@Res() res: Response,
@Query('token') token?: string,
@Query('email') email?: string,
@Query('redirect_uri') redirectUri = this.url.home
@Body() { email, token }: MagicLinkCredential
) {
if (!token || !email) {
throw new BadRequestException('Invalid Sign-in mail Token');
throw new BadRequestException('Missing sign-in mail token');
}
email = decodeURIComponent(email);
token = decodeURIComponent(token);
validators.assertValidEmail(email);
const valid = await this.token.verifyToken(TokenType.SignIn, token, {
@@ -145,7 +157,7 @@ export class AuthController {
});
if (!valid) {
throw new BadRequestException('Invalid Sign-in mail Token');
throw new BadRequestException('Invalid sign-in mail token');
}
const user = await this.user.fulfillUser(email, {
@@ -155,9 +167,10 @@ export class AuthController {
await this.auth.setCookie(req, res, user);
return this.url.safeRedirect(res, redirectUri);
res.send({ id: user.id, email: user.email, name: user.name });
}
@Throttle('default', { limit: 1200 })
@Public()
@Get('/session')
async currentSessionUser(@CurrentUser() user?: CurrentUser) {
@@ -166,6 +179,7 @@ export class AuthController {
};
}
@Throttle('default', { limit: 1200 })
@Public()
@Get('/sessions')
async currentSessionUsers(@Req() req: Request) {

View File

@@ -36,7 +36,7 @@ export class AuthGuard implements CanActivate, OnModuleInit {
}
async canActivate(context: ExecutionContext) {
const { req } = getRequestResponseFromContext(context);
const { req, res } = getRequestResponseFromContext(context);
// check cookie
let sessionToken: string | undefined =
@@ -51,9 +51,22 @@ export class AuthGuard implements CanActivate, OnModuleInit {
req.headers[AuthService.authUserSeqHeaderName]
);
const user = await this.auth.getUser(sessionToken, userSeq);
const { user, expiresAt } = await this.auth.getUser(
sessionToken,
userSeq
);
if (res && user && expiresAt) {
await this.auth.refreshUserSessionIfNeeded(
req,
res,
sessionToken,
user.id,
expiresAt
);
}
if (user) {
req.sid = sessionToken;
req.user = user;
}
}

View File

@@ -1,16 +1,18 @@
import { Module } from '@nestjs/common';
import { FeatureModule } from '../features';
import { QuotaModule } from '../quota';
import { UserModule } from '../user';
import { AuthController } from './controller';
import { AuthGuard } from './guard';
import { AuthResolver } from './resolver';
import { AuthService } from './service';
import { TokenService, TokenType } from './token';
@Module({
imports: [FeatureModule, UserModule],
providers: [AuthService, AuthResolver, TokenService],
exports: [AuthService],
imports: [FeatureModule, UserModule, QuotaModule],
providers: [AuthService, AuthResolver, TokenService, AuthGuard],
exports: [AuthService, AuthGuard],
controllers: [AuthController],
})
export class AuthModule {}

View File

@@ -1,11 +1,6 @@
import {
BadRequestException,
ForbiddenException,
UseGuards,
} from '@nestjs/common';
import { BadRequestException, ForbiddenException } from '@nestjs/common';
import {
Args,
Context,
Field,
Mutation,
ObjectType,
@@ -14,9 +9,8 @@ import {
ResolveField,
Resolver,
} from '@nestjs/graphql';
import type { Request, Response } from 'express';
import { CloudThrottlerGuard, Config, Throttle } from '../../fundamentals';
import { Config, SkipThrottle, Throttle } from '../../fundamentals';
import { UserService } from '../user';
import { UserType } from '../user/types';
import { validators } from '../utils/validators';
@@ -37,13 +31,7 @@ export class ClientTokenType {
sessionToken?: string;
}
/**
* Auth resolver
* Token rate limit: 20 req/m
* Sign up/in rate limit: 10 req/m
* Other rate limit: 5 req/m
*/
@UseGuards(CloudThrottlerGuard)
@Throttle('strict')
@Resolver(() => UserType)
export class AuthResolver {
constructor(
@@ -53,12 +41,7 @@ export class AuthResolver {
private readonly token: TokenService
) {}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@SkipThrottle()
@Public()
@Query(() => UserType, {
name: 'currentUser',
@@ -69,12 +52,6 @@ export class AuthResolver {
return user;
}
@Throttle({
default: {
limit: 20,
ttl: 60,
},
})
@ResolveField(() => ClientTokenType, {
name: 'token',
deprecationReason: 'use [/api/auth/authorize]',
@@ -100,53 +77,6 @@ export class AuthResolver {
};
}
@Public()
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Mutation(() => UserType)
async signUp(
@Context() ctx: { req: Request; res: Response },
@Args('name') name: string,
@Args('email') email: string,
@Args('password') password: string
) {
validators.assertValidCredential({ email, password });
const user = await this.auth.signUp(name, email, password);
await this.auth.setCookie(ctx.req, ctx.res, user);
ctx.req.user = user;
return user;
}
@Public()
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Mutation(() => UserType)
async signIn(
@Context() ctx: { req: Request; res: Response },
@Args('email') email: string,
@Args('password') password: string
) {
validators.assertValidEmail(email);
const user = await this.auth.signIn(email, password);
await this.auth.setCookie(ctx.req, ctx.res, user);
ctx.req.user = user;
return user;
}
@Throttle({
default: {
limit: 5,
ttl: 60,
},
})
@Mutation(() => UserType)
async changePassword(
@CurrentUser() user: CurrentUser,
@@ -172,12 +102,6 @@ export class AuthResolver {
return user;
}
@Throttle({
default: {
limit: 5,
ttl: 60,
},
})
@Mutation(() => UserType)
async changeEmail(
@CurrentUser() user: CurrentUser,
@@ -202,12 +126,6 @@ export class AuthResolver {
return user;
}
@Throttle({
default: {
limit: 5,
ttl: 60,
},
})
@Mutation(() => Boolean)
async sendChangePasswordEmail(
@CurrentUser() user: CurrentUser,
@@ -235,12 +153,6 @@ export class AuthResolver {
return !res.rejected.length;
}
@Throttle({
default: {
limit: 5,
ttl: 60,
},
})
@Mutation(() => Boolean)
async sendSetPasswordEmail(
@CurrentUser() user: CurrentUser,
@@ -273,12 +185,6 @@ export class AuthResolver {
// 4. user open confirm email page from new email
// 5. user click confirm button
// 6. send notification email
@Throttle({
default: {
limit: 5,
ttl: 60,
},
})
@Mutation(() => Boolean)
async sendChangeEmail(
@CurrentUser() user: CurrentUser,
@@ -299,12 +205,6 @@ export class AuthResolver {
return !res.rejected.length;
}
@Throttle({
default: {
limit: 5,
ttl: 60,
},
})
@Mutation(() => Boolean)
async sendVerifyChangeEmail(
@CurrentUser() user: CurrentUser,
@@ -347,12 +247,6 @@ export class AuthResolver {
return !res.rejected.length;
}
@Throttle({
default: {
limit: 5,
ttl: 60,
},
})
@Mutation(() => Boolean)
async sendVerifyEmail(
@CurrentUser() user: CurrentUser,
@@ -367,12 +261,6 @@ export class AuthResolver {
return !res.rejected.length;
}
@Throttle({
default: {
limit: 5,
ttl: 60,
},
})
@Mutation(() => Boolean)
async verifyEmail(
@CurrentUser() user: CurrentUser,

View File

@@ -11,6 +11,8 @@ import { assign, omit } from 'lodash-es';
import { Config, CryptoHelper, MailService } from '../../fundamentals';
import { FeatureManagementService } from '../features/management';
import { QuotaService } from '../quota/service';
import { QuotaType } from '../quota/types';
import { UserService } from '../user/service';
import type { CurrentUser } from './current-user';
@@ -68,15 +70,28 @@ export class AuthService implements OnApplicationBootstrap {
private readonly db: PrismaClient,
private readonly mailer: MailService,
private readonly feature: FeatureManagementService,
private readonly quota: QuotaService,
private readonly user: UserService,
private readonly crypto: CryptoHelper
) {}
async onApplicationBootstrap() {
if (this.config.node.dev) {
await this.signUp('Dev User', 'dev@affine.pro', 'dev').catch(() => {
try {
const [email, name, pwd] = ['dev@affine.pro', 'Dev User', 'dev'];
let devUser = await this.user.findUserByEmail(email);
if (!devUser) {
devUser = await this.user.createUser({
email,
name,
password: await this.crypto.encryptPassword(pwd),
});
}
await this.quota.switchUserQuota(devUser.id, QuotaType.ProPlanV1);
await this.feature.addCopilot(devUser.id);
} catch (e) {
// ignore
});
}
}
}
@@ -131,24 +146,27 @@ export class AuthService implements OnApplicationBootstrap {
return sessionUser(user);
}
async getUser(token: string, seq = 0): Promise<CurrentUser | null> {
async getUser(
token: string,
seq = 0
): Promise<{ user: CurrentUser | null; expiresAt: Date | null }> {
const session = await this.getSession(token);
// no such session
if (!session) {
return null;
return { user: null, expiresAt: null };
}
const userSession = session.userSessions.at(seq);
// no such user session
if (!userSession) {
return null;
return { user: null, expiresAt: null };
}
// user session expired
if (userSession.expiresAt && userSession.expiresAt <= new Date()) {
return null;
return { user: null, expiresAt: null };
}
const user = await this.db.user.findUnique({
@@ -156,10 +174,10 @@ export class AuthService implements OnApplicationBootstrap {
});
if (!user) {
return null;
return { user: null, expiresAt: null };
}
return sessionUser(user);
return { user: sessionUser(user), expiresAt: userSession.expiresAt };
}
async getUserList(token: string) {
@@ -255,6 +273,43 @@ export class AuthService implements OnApplicationBootstrap {
});
}
async refreshUserSessionIfNeeded(
_req: Request,
res: Response,
sessionId: string,
userId: string,
expiresAt: Date,
ttr = this.config.auth.session.ttr
): Promise<boolean> {
if (expiresAt && expiresAt.getTime() - Date.now() > ttr * 1000) {
// no need to refresh
return false;
}
const newExpiresAt = new Date(
Date.now() + this.config.auth.session.ttl * 1000
);
await this.db.userSession.update({
where: {
sessionId_userId: {
sessionId,
userId,
},
},
data: {
expiresAt: newExpiresAt,
},
});
res.cookie(AuthService.sessionCookieName, sessionId, {
expires: newExpiresAt,
...this.cookieOptions,
});
return true;
}
async createUserSession(
user: { id: string },
existingSession?: string,

View File

@@ -70,14 +70,17 @@ export class TokenService {
!expired && (!record.credential || record.credential === credential);
if ((expired || valid) && !keep) {
await this.db.verificationToken.delete({
const deleted = await this.db.verificationToken.deleteMany({
where: {
type_token: {
token,
type,
},
token,
type,
},
});
// already deleted, means token has been used
if (!deleted.count) {
return null;
}
}
return valid ? record : null;

View File

@@ -5,6 +5,7 @@ import { DeploymentType } from '../fundamentals';
import { Public } from './auth';
export enum ServerFeature {
Copilot = 'copilot',
Payment = 'payment',
OAuth = 'oauth',
}
@@ -66,6 +67,9 @@ export class ServerConfigType {
description: 'credentials requirement',
})
credentialsRequirement!: CredentialsRequirementType;
@Field({ description: 'enable telemetry' })
enableTelemetry!: boolean;
}
export class ServerConfigResolver {
@@ -87,6 +91,7 @@ export class ServerConfigResolver {
credentialsRequirement: {
password: AFFiNE.auth.password,
},
enableTelemetry: AFFiNE.telemetry.enabled,
};
}
}

View File

@@ -102,7 +102,9 @@ export class DocHistoryManager {
description: 'How many times the snapshot history created',
})
.add(1);
this.logger.log(`History created for ${id} in workspace ${workspaceId}.`);
this.logger.debug(
`History created for ${id} in workspace ${workspaceId}.`
);
}
}

View File

@@ -54,10 +54,35 @@ export class UnlimitedWorkspaceFeatureConfig extends FeatureConfig {
}
}
export class UnlimitedCopilotFeatureConfig extends FeatureConfig {
override config!: Feature & { feature: FeatureType.UnlimitedCopilot };
constructor(data: any) {
super(data);
if (this.config.feature !== FeatureType.UnlimitedCopilot) {
throw new Error('Invalid feature config: type is not AIEarlyAccess');
}
}
}
export class AIEarlyAccessFeatureConfig extends FeatureConfig {
override config!: Feature & { feature: FeatureType.AIEarlyAccess };
constructor(data: any) {
super(data);
if (this.config.feature !== FeatureType.AIEarlyAccess) {
throw new Error('Invalid feature config: type is not AIEarlyAccess');
}
}
}
const FeatureConfigMap = {
[FeatureType.Copilot]: CopilotFeatureConfig,
[FeatureType.EarlyAccess]: EarlyAccessFeatureConfig,
[FeatureType.AIEarlyAccess]: AIEarlyAccessFeatureConfig,
[FeatureType.UnlimitedWorkspace]: UnlimitedWorkspaceFeatureConfig,
[FeatureType.UnlimitedCopilot]: UnlimitedCopilotFeatureConfig,
};
export type FeatureConfigType<F extends FeatureType> = InstanceType<

View File

@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';
import { FeatureManagementService } from './management';
import { EarlyAccessType, FeatureManagementService } from './management';
import { FeatureService } from './service';
/**
@@ -15,6 +15,11 @@ import { FeatureService } from './service';
})
export class FeatureModule {}
export { type CommonFeature, commonFeatureSchema } from './types';
export { FeatureKind, Features, FeatureType } from './types';
export { FeatureManagementService, FeatureService };
export {
type CommonFeature,
commonFeatureSchema,
FeatureKind,
Features,
FeatureType,
} from './types';
export { EarlyAccessType, FeatureManagementService, FeatureService };

View File

@@ -7,6 +7,11 @@ import { FeatureType } from './types';
const STAFF = ['@toeverything.info'];
export enum EarlyAccessType {
App = 'app',
AI = 'ai',
}
@Injectable()
export class FeatureManagementService {
protected logger = new Logger(FeatureManagementService.name);
@@ -30,25 +35,43 @@ export class FeatureManagementService {
}
// ======== Early Access ========
async addEarlyAccess(userId: string) {
async addEarlyAccess(
userId: string,
type: EarlyAccessType = EarlyAccessType.App
) {
return this.feature.addUserFeature(
userId,
FeatureType.EarlyAccess,
2,
type === EarlyAccessType.App
? FeatureType.EarlyAccess
: FeatureType.AIEarlyAccess,
'Early access user'
);
}
async removeEarlyAccess(userId: string) {
return this.feature.removeUserFeature(userId, FeatureType.EarlyAccess);
async removeEarlyAccess(
userId: string,
type: EarlyAccessType = EarlyAccessType.App
) {
return this.feature.removeUserFeature(
userId,
type === EarlyAccessType.App
? FeatureType.EarlyAccess
: FeatureType.AIEarlyAccess
);
}
async listEarlyAccess() {
return this.feature.listFeatureUsers(FeatureType.EarlyAccess);
async listEarlyAccess(type: EarlyAccessType = EarlyAccessType.App) {
return this.feature.listFeatureUsers(
type === EarlyAccessType.App
? FeatureType.EarlyAccess
: FeatureType.AIEarlyAccess
);
}
async isEarlyAccessUser(email: string) {
async isEarlyAccessUser(
email: string,
type: EarlyAccessType = EarlyAccessType.App
) {
const user = await this.prisma.user.findFirst({
where: {
email: {
@@ -57,9 +80,15 @@ export class FeatureManagementService {
},
},
});
if (user) {
const canEarlyAccess = await this.feature
.hasUserFeature(user.id, FeatureType.EarlyAccess)
.hasUserFeature(
user.id,
type === EarlyAccessType.App
? FeatureType.EarlyAccess
: FeatureType.AIEarlyAccess
)
.catch(() => false);
return canEarlyAccess;
@@ -68,31 +97,52 @@ export class FeatureManagementService {
}
/// check early access by email
async canEarlyAccess(email: string) {
async canEarlyAccess(
email: string,
type: EarlyAccessType = EarlyAccessType.App
) {
if (this.config.featureFlags.earlyAccessPreview && !this.isStaff(email)) {
return this.isEarlyAccessUser(email);
return this.isEarlyAccessUser(email, type);
} else {
return true;
}
}
// ======== CopilotFeature ========
async addCopilot(userId: string, reason = 'Copilot plan user') {
return this.feature.addUserFeature(
userId,
FeatureType.UnlimitedCopilot,
reason
);
}
async removeCopilot(userId: string) {
return this.feature.removeUserFeature(userId, FeatureType.UnlimitedCopilot);
}
async isCopilotUser(userId: string) {
return await this.feature.hasUserFeature(
userId,
FeatureType.UnlimitedCopilot
);
}
// ======== User Feature ========
async getActivatedUserFeatures(userId: string): Promise<FeatureType[]> {
const features = await this.feature.getActivatedUserFeatures(userId);
return features.map(f => f.feature.name);
}
// ======== Workspace Feature ========
async addWorkspaceFeatures(
workspaceId: string,
feature: FeatureType,
version?: number,
reason?: string
) {
const latestVersions = await this.feature.getFeaturesVersion();
// use latest version if not specified
const latestVersion = version || latestVersions[feature];
if (!Number.isInteger(latestVersion)) {
throw new Error(`Version of feature ${feature} not found`);
}
return this.feature.addWorkspaceFeature(
workspaceId,
feature,
latestVersion,
reason || 'add feature by api'
);
}
@@ -115,10 +165,4 @@ export class FeatureManagementService {
async listFeatureWorkspaces(feature: FeatureType) {
return this.feature.listFeatureWorkspaces(feature);
}
async getUserFeatures(userId: string): Promise<FeatureType[]> {
return (await this.feature.getUserFeatures(userId)).map(
f => f.feature.name
);
}
}

View File

@@ -8,33 +8,6 @@ import { FeatureKind, FeatureType } from './types';
@Injectable()
export class FeatureService {
constructor(private readonly prisma: PrismaClient) {}
async getFeaturesVersion() {
const features = await this.prisma.features.findMany({
where: {
type: FeatureKind.Feature,
},
select: {
feature: true,
version: true,
},
});
return features.reduce(
(acc, feature) => {
// only keep the latest version
if (acc[feature.feature]) {
if (acc[feature.feature] < feature.version) {
acc[feature.feature] = feature.version;
}
} else {
acc[feature.feature] = feature.version;
}
return acc;
},
{} as Record<string, number>
);
}
async getFeature<F extends FeatureType>(
feature: F
): Promise<FeatureConfigType<F> | undefined> {
@@ -59,7 +32,6 @@ export class FeatureService {
async addUserFeature(
userId: string,
feature: FeatureType,
version: number,
reason: string,
expiredAt?: Date | string
) {
@@ -77,29 +49,30 @@ export class FeatureService {
createdAt: 'desc',
},
});
if (latestFlag) {
return latestFlag.id;
} else {
const featureId = await tx.features
.findFirst({
where: { feature, type: FeatureKind.Feature },
orderBy: { version: 'desc' },
select: { id: true },
})
.then(r => r?.id);
if (!featureId) {
throw new Error(`Feature ${feature} not found`);
}
return tx.userFeatures
.create({
data: {
reason,
expiredAt,
activated: true,
user: {
connect: {
id: userId,
},
},
feature: {
connect: {
feature_version: {
feature,
version,
},
type: FeatureKind.Feature,
},
},
userId,
featureId,
},
})
.then(r => r.id);
@@ -133,10 +106,35 @@ export class FeatureService {
async getUserFeatures(userId: string) {
const features = await this.prisma.userFeatures.findMany({
where: {
user: { id: userId },
feature: {
type: FeatureKind.Feature,
},
userId,
feature: { type: FeatureKind.Feature },
},
select: {
activated: true,
reason: true,
createdAt: true,
expiredAt: true,
featureId: true,
},
});
const configs = await Promise.all(
features.map(async feature => ({
...feature,
feature: await getFeature(this.prisma, feature.featureId),
}))
);
return configs.filter(feature => !!feature.feature);
}
async getActivatedUserFeatures(userId: string) {
const features = await this.prisma.userFeatures.findMany({
where: {
userId,
feature: { type: FeatureKind.Feature },
activated: true,
OR: [{ expiredAt: null }, { expiredAt: { gt: new Date() } }],
},
select: {
activated: true,
@@ -193,6 +191,7 @@ export class FeatureService {
feature,
type: FeatureKind.Feature,
},
OR: [{ expiredAt: null }, { expiredAt: { gt: new Date() } }],
},
})
.then(count => count > 0);
@@ -203,7 +202,6 @@ export class FeatureService {
async addWorkspaceFeature(
workspaceId: string,
feature: FeatureType,
version: number,
reason: string,
expiredAt?: Date | string
) {
@@ -224,26 +222,27 @@ export class FeatureService {
if (latestFlag) {
return latestFlag.id;
} else {
// use latest version of feature
const featureId = await tx.features
.findFirst({
where: { feature, type: FeatureKind.Feature },
select: { id: true },
orderBy: { version: 'desc' },
})
.then(r => r?.id);
if (!featureId) {
throw new Error(`Feature ${feature} not found`);
}
return tx.workspaceFeatures
.create({
data: {
reason,
expiredAt,
activated: true,
workspace: {
connect: {
id: workspaceId,
},
},
feature: {
connect: {
feature_version: {
feature,
version,
},
type: FeatureKind.Feature,
},
},
workspaceId,
featureId,
},
})
.then(r => r.id);

View File

@@ -1,8 +1,12 @@
import { registerEnumType } from '@nestjs/graphql';
export enum FeatureType {
Copilot = 'copilot',
// user feature
EarlyAccess = 'early_access',
AIEarlyAccess = 'ai_early_access',
UnlimitedCopilot = 'unlimited_copilot',
// workspace feature
Copilot = 'copilot',
UnlimitedWorkspace = 'unlimited_workspace',
}

View File

@@ -9,3 +9,8 @@ export const featureEarlyAccess = z.object({
whitelist: z.string().array(),
}),
});
export const featureAIEarlyAccess = z.object({
feature: z.literal(FeatureType.AIEarlyAccess),
configs: z.object({}),
});

View File

@@ -2,7 +2,8 @@ import { z } from 'zod';
import { FeatureType } from './common';
import { featureCopilot } from './copilot';
import { featureEarlyAccess } from './early-access';
import { featureAIEarlyAccess, featureEarlyAccess } from './early-access';
import { featureUnlimitedCopilot } from './unlimited-copilot';
import { featureUnlimitedWorkspace } from './unlimited-workspace';
/// ======== common schema ========
@@ -52,6 +53,18 @@ export const Features: Feature[] = [
version: 1,
configs: {},
},
{
feature: FeatureType.UnlimitedCopilot,
type: FeatureKind.Feature,
version: 1,
configs: {},
},
{
feature: FeatureType.AIEarlyAccess,
type: FeatureKind.Feature,
version: 1,
configs: {},
},
];
/// ======== schema infer ========
@@ -64,7 +77,9 @@ export const FeatureSchema = commonFeatureSchema
z.discriminatedUnion('feature', [
featureCopilot,
featureEarlyAccess,
featureAIEarlyAccess,
featureUnlimitedWorkspace,
featureUnlimitedCopilot,
])
);

View File

@@ -0,0 +1,8 @@
import { z } from 'zod';
import { FeatureType } from './common';
export const featureUnlimitedCopilot = z.object({
feature: z.literal(FeatureType.UnlimitedCopilot),
configs: z.object({}),
});

View File

@@ -20,5 +20,5 @@ import { QuotaManagementService } from './storage';
export class QuotaModule {}
export { QuotaManagementService, QuotaService };
export { Quota_FreePlanV1_1, Quota_ProPlanV1, Quotas } from './schema';
export { Quota_FreePlanV1_1, Quota_ProPlanV1 } from './schema';
export { QuotaQueryType, QuotaType } from './types';

View File

@@ -79,6 +79,10 @@ export class QuotaConfig {
return this.config.configs.memberLimit;
}
get copilotActionLimit() {
return this.config.configs.copilotActionLimit || undefined;
}
get humanReadable() {
return {
name: this.config.configs.name,
@@ -86,6 +90,9 @@ export class QuotaConfig {
storageQuota: formatSize(this.storageQuota),
historyPeriod: formatDate(this.historyPeriod),
memberLimit: this.memberLimit.toString(),
copilotActionLimit: this.copilotActionLimit
? `${this.copilotActionLimit} times`
: 'Unlimited',
};
}
}

View File

@@ -93,14 +93,85 @@ export const Quotas: Quota[] = [
memberLimit: 3,
},
},
{
feature: QuotaType.FreePlanV1,
type: FeatureKind.Quota,
version: 4,
configs: {
// quota name
name: 'Free',
// single blob limit 10MB
blobLimit: 10 * OneMB,
// server limit will larger then client to handle a edge case:
// when a user downgrades from pro to free, he can still continue
// to upload previously added files that exceed the free limit
// NOTE: this is a product decision, may change in future
businessBlobLimit: 100 * OneMB,
// total blob limit 10GB
storageQuota: 10 * OneGB,
// history period of validity 7 days
historyPeriod: 7 * OneDay,
// member limit 3
memberLimit: 3,
// copilot action limit 10
copilotActionLimit: 10,
},
},
{
feature: QuotaType.ProPlanV1,
type: FeatureKind.Quota,
version: 2,
configs: {
// quota name
name: 'Pro',
// single blob limit 100MB
blobLimit: 100 * OneMB,
// total blob limit 100GB
storageQuota: 100 * OneGB,
// history period of validity 30 days
historyPeriod: 30 * OneDay,
// member limit 10
memberLimit: 10,
// copilot action limit 10
copilotActionLimit: 10,
},
},
{
feature: QuotaType.RestrictedPlanV1,
type: FeatureKind.Quota,
version: 2,
configs: {
// quota name
name: 'Restricted',
// single blob limit 10MB
blobLimit: OneMB,
// total blob limit 1GB
storageQuota: 10 * OneMB,
// history period of validity 30 days
historyPeriod: 30 * OneDay,
// member limit 10
memberLimit: 10,
// copilot action limit 10
copilotActionLimit: 10,
},
},
];
export function getLatestQuota(type: QuotaType) {
const quota = Quotas.filter(f => f.feature === type);
quota.sort((a, b) => b.version - a.version);
return quota[0];
}
export const FreePlan = getLatestQuota(QuotaType.FreePlanV1);
export const ProPlan = getLatestQuota(QuotaType.ProPlanV1);
export const Quota_FreePlanV1_1 = {
feature: Quotas[4].feature,
version: Quotas[4].version,
feature: Quotas[5].feature,
version: Quotas[5].version,
};
export const Quota_ProPlanV1 = {
feature: Quotas[1].feature,
version: Quotas[1].version,
feature: Quotas[6].feature,
version: Quotas[6].version,
};

View File

@@ -3,21 +3,23 @@ import { PrismaClient } from '@prisma/client';
import type { EventPayload } from '../../fundamentals';
import { OnEvent, PrismaTransaction } from '../../fundamentals';
import { FeatureKind } from '../features';
import { SubscriptionPlan } from '../../plugins/payment/types';
import { FeatureKind, FeatureManagementService } from '../features';
import { QuotaConfig } from './quota';
import { QuotaType } from './types';
@Injectable()
export class QuotaService {
constructor(private readonly prisma: PrismaClient) {}
constructor(
private readonly prisma: PrismaClient,
private readonly feature: FeatureManagementService
) {}
// get activated user quota
async getUserQuota(userId: string) {
const quota = await this.prisma.userFeatures.findFirst({
where: {
user: {
id: userId,
},
userId,
feature: {
type: FeatureKind.Quota,
},
@@ -44,9 +46,7 @@ export class QuotaService {
async getUserQuotas(userId: string) {
const quotas = await this.prisma.userFeatures.findMany({
where: {
user: {
id: userId,
},
userId,
feature: {
type: FeatureKind.Quota,
},
@@ -92,14 +92,17 @@ export class QuotaService {
return;
}
const latestPlanVersion = await tx.features.aggregate({
where: {
feature: quota,
},
_max: {
version: true,
},
});
const featureId = await tx.features
.findFirst({
where: { feature: quota, type: FeatureKind.Quota },
select: { id: true },
orderBy: { version: 'desc' },
})
.then(f => f?.id);
if (!featureId) {
throw new Error(`Quota ${quota} not found`);
}
// we will deactivate all exists quota for this user
await tx.userFeatures.updateMany({
@@ -117,20 +120,8 @@ export class QuotaService {
await tx.userFeatures.create({
data: {
user: {
connect: {
id: userId,
},
},
feature: {
connect: {
feature_version: {
feature: quota,
version: latestPlanVersion._max.version || 1,
},
type: FeatureKind.Quota,
},
},
userId,
featureId,
reason: reason ?? 'switch quota',
activated: true,
expiredAt,
@@ -159,22 +150,42 @@ export class QuotaService {
@OnEvent('user.subscription.activated')
async onSubscriptionUpdated({
userId,
plan,
}: EventPayload<'user.subscription.activated'>) {
await this.switchUserQuota(
userId,
QuotaType.ProPlanV1,
'subscription activated'
);
switch (plan) {
case SubscriptionPlan.AI:
await this.feature.addCopilot(userId, 'subscription activated');
break;
case SubscriptionPlan.Pro:
await this.switchUserQuota(
userId,
QuotaType.ProPlanV1,
'subscription activated'
);
break;
default:
break;
}
}
@OnEvent('user.subscription.canceled')
async onSubscriptionCanceled(
userId: EventPayload<'user.subscription.canceled'>
) {
await this.switchUserQuota(
userId,
QuotaType.FreePlanV1,
'subscription canceled'
);
async onSubscriptionCanceled({
userId,
plan,
}: EventPayload<'user.subscription.canceled'>) {
switch (plan) {
case SubscriptionPlan.AI:
await this.feature.removeCopilot(userId);
break;
case SubscriptionPlan.Pro:
await this.switchUserQuota(
userId,
QuotaType.FreePlanV1,
'subscription canceled'
);
break;
default:
break;
}
}
}

View File

@@ -7,7 +7,10 @@ import { OneGB } from './constant';
import { QuotaService } from './service';
import { formatSize, QuotaQueryType } from './types';
type QuotaBusinessType = QuotaQueryType & { businessBlobLimit: number };
type QuotaBusinessType = QuotaQueryType & {
businessBlobLimit: number;
unlimited: boolean;
};
@Injectable()
export class QuotaManagementService {
@@ -33,6 +36,7 @@ export class QuotaManagementService {
storageQuota: quota.feature.storageQuota,
historyPeriod: quota.feature.historyPeriod,
memberLimit: quota.feature.memberLimit,
copilotActionLimit: quota.feature.copilotActionLimit,
};
}
@@ -58,6 +62,54 @@ export class QuotaManagementService {
}, 0);
}
private generateQuotaCalculator(
quota: number,
blobLimit: number,
usedSize: number,
unlimited = false
) {
const checkExceeded = (recvSize: number) => {
const total = usedSize + recvSize;
// only skip total storage check if workspace has unlimited feature
if (total > quota && !unlimited) {
this.logger.warn(`storage size limit exceeded: ${total} > ${quota}`);
return true;
} else if (recvSize > blobLimit) {
this.logger.warn(
`blob size limit exceeded: ${recvSize} > ${blobLimit}`
);
return true;
} else {
return false;
}
};
return checkExceeded;
}
async getQuotaCalculator(userId: string) {
const quota = await this.getUserQuota(userId);
const { storageQuota, businessBlobLimit } = quota;
const usedSize = await this.getUserUsage(userId);
return this.generateQuotaCalculator(
storageQuota,
businessBlobLimit,
usedSize
);
}
async getQuotaCalculatorByWorkspace(workspaceId: string) {
const { storageQuota, usedSize, businessBlobLimit, unlimited } =
await this.getWorkspaceUsage(workspaceId);
return this.generateQuotaCalculator(
storageQuota,
businessBlobLimit,
usedSize,
unlimited
);
}
// get workspace's owner quota and total size of used
// quota was apply to owner's account
async getWorkspaceUsage(workspaceId: string): Promise<QuotaBusinessType> {
@@ -72,11 +124,18 @@ export class QuotaManagementService {
historyPeriod,
memberLimit,
storageQuota,
copilotActionLimit,
humanReadable,
},
} = await this.quota.getUserQuota(owner.id);
// get all workspaces size of owner used
const usedSize = await this.getUserUsage(owner.id);
// relax restrictions if workspace has unlimited feature
// todo(@darkskygit): need a mechanism to allow feature as a middleware to edit quota
const unlimited = await this.feature.hasWorkspaceFeature(
workspaceId,
FeatureType.UnlimitedWorkspace
);
const quota = {
name,
@@ -85,17 +144,13 @@ export class QuotaManagementService {
historyPeriod,
memberLimit,
storageQuota,
copilotActionLimit,
humanReadable,
usedSize,
unlimited,
};
// relax restrictions if workspace has unlimited feature
// todo(@darkskygit): need a mechanism to allow feature as a middleware to edit quota
const unlimited = await this.feature.hasWorkspaceFeature(
workspaceId,
FeatureType.UnlimitedWorkspace
);
if (unlimited) {
if (quota.unlimited) {
return this.mergeUnlimitedQuota(quota);
}

View File

@@ -34,6 +34,7 @@ const quotaPlan = z.object({
historyPeriod: z.number().positive().int(),
memberLimit: z.number().positive().int(),
businessBlobLimit: z.number().positive().int().nullish(),
copilotActionLimit: z.number().positive().int().nullish(),
}),
});
@@ -65,6 +66,9 @@ export class HumanReadableQuotaType {
@Field(() => String)
memberLimit!: string;
@Field(() => String, { nullable: true })
copilotActionLimit?: string;
}
@ObjectType()
@@ -84,6 +88,9 @@ export class QuotaQueryType {
@Field(() => SafeIntResolver)
storageQuota!: number;
@Field(() => SafeIntResolver, { nullable: true })
copilotActionLimit?: number;
@Field(() => HumanReadableQuotaType)
humanReadable!: HumanReadableQuotaType;

View File

@@ -1,22 +1,24 @@
import { BadRequestException, ForbiddenException } from '@nestjs/common';
import {
BadRequestException,
ForbiddenException,
UseGuards,
} from '@nestjs/common';
import { Args, Context, Int, Mutation, Query, Resolver } from '@nestjs/graphql';
Args,
Context,
Int,
Mutation,
Query,
registerEnumType,
Resolver,
} from '@nestjs/graphql';
import { CloudThrottlerGuard, Throttle } from '../../fundamentals';
import { CurrentUser } from '../auth/current-user';
import { sessionUser } from '../auth/service';
import { FeatureManagementService } from '../features';
import { EarlyAccessType, FeatureManagementService } from '../features';
import { UserService } from './service';
import { UserType } from './types';
/**
* User resolver
* All op rate limit: 10 req/m
*/
@UseGuards(CloudThrottlerGuard)
registerEnumType(EarlyAccessType, {
name: 'EarlyAccessType',
});
@Resolver(() => UserType)
export class UserManagementResolver {
constructor(
@@ -24,37 +26,26 @@ export class UserManagementResolver {
private readonly feature: FeatureManagementService
) {}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Mutation(() => Int)
async addToEarlyAccess(
@CurrentUser() currentUser: CurrentUser,
@Args('email') email: string
@Args('email') email: string,
@Args({ name: 'type', type: () => EarlyAccessType }) type: EarlyAccessType
): Promise<number> {
if (!this.feature.isStaff(currentUser.email)) {
throw new ForbiddenException('You are not allowed to do this');
}
const user = await this.users.findUserByEmail(email);
if (user) {
return this.feature.addEarlyAccess(user.id);
return this.feature.addEarlyAccess(user.id, type);
} else {
const user = await this.users.createAnonymousUser(email, {
registered: false,
});
return this.feature.addEarlyAccess(user.id);
return this.feature.addEarlyAccess(user.id, type);
}
}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Mutation(() => Int)
async removeEarlyAccess(
@CurrentUser() currentUser: CurrentUser,
@@ -70,12 +61,6 @@ export class UserManagementResolver {
return this.feature.removeEarlyAccess(user.id);
}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Query(() => [UserType])
async earlyAccessUsers(
@Context() ctx: { isAdminQuery: boolean },

View File

@@ -1,4 +1,4 @@
import { BadRequestException, UseGuards } from '@nestjs/common';
import { BadRequestException } from '@nestjs/common';
import {
Args,
Int,
@@ -14,7 +14,6 @@ import { isNil, omitBy } from 'lodash-es';
import type { FileUpload } from '../../fundamentals';
import {
CloudThrottlerGuard,
EventEmitter,
PaymentRequiredException,
Throttle,
@@ -35,11 +34,6 @@ import {
UserType,
} from './types';
/**
* User resolver
* All op rate limit: 10 req/m
*/
@UseGuards(CloudThrottlerGuard)
@Resolver(() => UserType)
export class UserResolver {
constructor(
@@ -51,12 +45,7 @@ export class UserResolver {
private readonly event: EventEmitter
) {}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Throttle('strict')
@Query(() => UserOrLimitedUser, {
name: 'user',
description: 'Get user by email',
@@ -90,7 +79,6 @@ export class UserResolver {
};
}
@Throttle({ default: { limit: 10, ttl: 60 } })
@ResolveField(() => UserQuotaType, { name: 'quota', nullable: true })
async getQuota(@CurrentUser() me: User) {
const quota = await this.quota.getUserQuota(me.id);
@@ -98,7 +86,6 @@ export class UserResolver {
return quota.feature;
}
@Throttle({ default: { limit: 10, ttl: 60 } })
@ResolveField(() => Int, {
name: 'invoiceCount',
description: 'Get user invoice count',
@@ -109,21 +96,14 @@ export class UserResolver {
});
}
@Throttle({ default: { limit: 10, ttl: 60 } })
@ResolveField(() => [FeatureType], {
name: 'features',
description: 'Enabled features of a user',
})
async userFeatures(@CurrentUser() user: CurrentUser) {
return this.feature.getUserFeatures(user.id);
return this.feature.getActivatedUserFeatures(user.id);
}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Mutation(() => UserType, {
name: 'uploadAvatar',
description: 'Upload user avatar',
@@ -153,12 +133,6 @@ export class UserResolver {
});
}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Mutation(() => UserType, {
name: 'updateProfile',
})
@@ -180,12 +154,6 @@ export class UserResolver {
);
}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Mutation(() => RemoveAvatar, {
name: 'removeAvatar',
description: 'Remove user avatar',
@@ -201,12 +169,6 @@ export class UserResolver {
return { success: true };
}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Mutation(() => DeleteAccount)
async deleteAccount(
@CurrentUser() user: CurrentUser

View File

@@ -35,6 +35,7 @@ export class UserService {
async createUser(data: Prisma.UserCreateInput) {
return this.prisma.user.create({
select: this.defaultUserSelect,
data: {
...this.userCreatingData,
...data,
@@ -113,18 +114,32 @@ export class UserService {
Pick<Prisma.UserCreateInput, 'emailVerifiedAt' | 'registered'>
>
) {
return this.prisma.user.upsert({
select: this.defaultUserSelect,
where: {
email,
},
update: data,
create: {
email,
const user = await this.findUserByEmail(email);
if (!user) {
return this.createUser({
...this.userCreatingData,
email,
name: email.split('@')[0],
...data,
},
});
});
} else {
if (user.registered) {
delete data.registered;
}
if (user.emailVerifiedAt) {
delete data.emailVerifiedAt;
}
if (Object.keys(data).length) {
return await this.prisma.user.update({
select: this.defaultUserSelect,
where: { id: user.id },
data,
});
}
}
return user;
}
async deleteUser(id: string) {

View File

@@ -36,10 +36,23 @@ export class WorkspacesController {
@Get('/:id/blobs/:name')
@CallTimer('controllers', 'workspace_get_blob')
async blob(
@CurrentUser() user: CurrentUser | undefined,
@Param('id') workspaceId: string,
@Param('name') name: string,
@Res() res: Response
) {
// if workspace is public or have any public page, then allow to access
// otherwise, check permission
if (
!(await this.permission.isPublicAccessible(
workspaceId,
workspaceId,
user?.id
))
) {
throw new ForbiddenException('Permission denied');
}
const { body, metadata } = await this.storage.get(workspaceId, name);
if (!body) {
@@ -74,7 +87,7 @@ export class WorkspacesController {
const docId = new DocID(guid, ws);
if (
// if a user has the permission
!(await this.permission.isAccessible(
!(await this.permission.isPublicAccessible(
docId.workspace,
docId.guid,
user?.id
@@ -109,11 +122,6 @@ export class WorkspacesController {
}
res.setHeader('content-type', 'application/octet-stream');
res.setHeader(
'last-modified',
new Date(binResponse.timestamp).toUTCString()
);
res.setHeader('cache-control', 'private, max-age=2592000');
res.send(binResponse.binary);
}

View File

@@ -1,4 +1,4 @@
import { ForbiddenException, UseGuards } from '@nestjs/common';
import { ForbiddenException } from '@nestjs/common';
import {
Args,
Int,
@@ -9,13 +9,11 @@ import {
Resolver,
} from '@nestjs/graphql';
import { CloudThrottlerGuard, Throttle } from '../../fundamentals';
import { CurrentUser } from '../auth';
import { FeatureManagementService, FeatureType } from '../features';
import { PermissionService } from './permission';
import { WorkspaceType } from './types';
@UseGuards(CloudThrottlerGuard)
@Resolver(() => WorkspaceType)
export class WorkspaceManagementResolver {
constructor(
@@ -23,12 +21,6 @@ export class WorkspaceManagementResolver {
private readonly permission: PermissionService
) {}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Mutation(() => Int)
async addWorkspaceFeature(
@CurrentUser() currentUser: CurrentUser,
@@ -42,12 +34,6 @@ export class WorkspaceManagementResolver {
return this.feature.addWorkspaceFeatures(workspaceId, feature);
}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Mutation(() => Int)
async removeWorkspaceFeature(
@CurrentUser() currentUser: CurrentUser,
@@ -61,12 +47,6 @@ export class WorkspaceManagementResolver {
return this.feature.removeWorkspaceFeature(workspaceId, feature);
}
@Throttle({
default: {
limit: 10,
ttl: 60,
},
})
@Query(() => [WorkspaceType])
async listWorkspaceFeatures(
@CurrentUser() user: CurrentUser,
@@ -101,7 +81,6 @@ export class WorkspaceManagementResolver {
.addWorkspaceFeatures(
workspaceId,
feature,
undefined,
'add by experimental feature api'
)
.then(id => id > 0);
@@ -117,12 +96,7 @@ export class WorkspaceManagementResolver {
async availableFeatures(
@CurrentUser() user: CurrentUser
): Promise<FeatureType[]> {
const isEarlyAccessUser = await this.feature.isEarlyAccessUser(user.email);
if (isEarlyAccessUser) {
return [FeatureType.Copilot];
} else {
return [];
}
return await this.feature.getActivatedUserFeatures(user.id);
}
@ResolveField(() => [FeatureType], {

View File

@@ -26,6 +26,22 @@ export class PermissionService {
return data?.type as Permission;
}
/**
* check whether a workspace exists and has any one can access it
* @param workspaceId workspace id
* @returns
*/
async hasWorkspace(workspaceId: string) {
return await this.prisma.workspaceUserPermission
.count({
where: {
workspaceId,
accepted: true,
},
})
.then(count => count > 0);
}
async getOwnedWorkspaces(userId: string) {
return this.prisma.workspaceUserPermission
.findMany({
@@ -65,10 +81,26 @@ export class PermissionService {
});
}
async isAccessible(ws: string, id: string, user?: string): Promise<boolean> {
// workspace
/**
* check if a doc binary is accessible by a user
*/
async isPublicAccessible(
ws: string,
id: string,
user?: string
): Promise<boolean> {
if (ws === id) {
return this.tryCheckWorkspace(ws, user, Permission.Read);
// if workspace is public or have any public page, then allow to access
const [isPublicWorkspace, publicPages] = await Promise.all([
this.tryCheckWorkspace(ws, user, Permission.Read),
this.prisma.workspacePage.count({
where: {
workspaceId: ws,
public: true,
},
}),
]);
return isPublicWorkspace || publicPages > 0;
}
return this.tryCheckPage(ws, id, user);
@@ -96,6 +128,23 @@ export class PermissionService {
return count !== 0;
}
/**
* only check permission if the workspace is a cloud workspace
* @param workspaceId workspace id
* @param userId user id, check if is a public workspace if not provided
* @param permission default is read
*/
async checkCloudWorkspace(
workspaceId: string,
userId?: string,
permission: Permission = Permission.Read
) {
const hasWorkspace = await this.hasWorkspace(workspaceId);
if (hasWorkspace) {
await this.checkWorkspace(workspaceId, userId, permission);
}
}
async checkWorkspace(
ws: string,
user?: string,
@@ -122,21 +171,6 @@ export class PermissionService {
if (count > 0) {
return true;
}
const publicPage = await this.prisma.workspacePage.findFirst({
select: {
pageId: true,
},
where: {
workspaceId: ws,
public: true,
},
});
// has any public pages
if (publicPage) {
return true;
}
}
if (user) {
@@ -263,6 +297,25 @@ export class PermissionService {
/// End regin: workspace permission
/// Start regin: page permission
/**
* only check permission if the workspace is a cloud workspace
* @param workspaceId workspace id
* @param pageId page id aka doc id
* @param userId user id, check if is a public page if not provided
* @param permission default is read
*/
async checkCloudPagePermission(
workspaceId: string,
pageId: string,
userId?: string,
permission = Permission.Read
) {
const hasWorkspace = await this.hasWorkspace(workspaceId);
if (hasWorkspace) {
await this.checkPagePermission(workspaceId, pageId, userId, permission);
}
}
async checkPagePermission(
ws: string,
page: string,

View File

@@ -1,9 +1,4 @@
import {
ForbiddenException,
Logger,
PayloadTooLargeException,
UseGuards,
} from '@nestjs/common';
import { Logger, PayloadTooLargeException, UseGuards } from '@nestjs/common';
import {
Args,
Int,
@@ -23,7 +18,6 @@ import {
PreventCache,
} from '../../../fundamentals';
import { CurrentUser } from '../../auth';
import { FeatureManagementService, FeatureType } from '../../features';
import { QuotaManagementService } from '../../quota';
import { WorkspaceBlobStorage } from '../../storage';
import { PermissionService } from '../permission';
@@ -35,7 +29,6 @@ export class WorkspaceBlobResolver {
logger = new Logger(WorkspaceBlobResolver.name);
constructor(
private readonly permissions: PermissionService,
private readonly feature: FeatureManagementService,
private readonly quota: QuotaManagementService,
private readonly storage: WorkspaceBlobStorage
) {}
@@ -130,34 +123,8 @@ export class WorkspaceBlobResolver {
Permission.Write
);
const { storageQuota, usedSize, businessBlobLimit } =
await this.quota.getWorkspaceUsage(workspaceId);
const unlimited = await this.feature.hasWorkspaceFeature(
workspaceId,
FeatureType.UnlimitedWorkspace
);
const checkExceeded = (recvSize: number) => {
if (!storageQuota) {
throw new ForbiddenException('Cannot find user quota.');
}
const total = usedSize + recvSize;
// only skip total storage check if workspace has unlimited feature
if (total > storageQuota && !unlimited) {
this.logger.log(
`storage size limit exceeded: ${total} > ${storageQuota}`
);
return true;
} else if (recvSize > businessBlobLimit) {
this.logger.log(
`blob size limit exceeded: ${recvSize} > ${businessBlobLimit}`
);
return true;
} else {
return false;
}
};
const checkExceeded =
await this.quota.getQuotaCalculatorByWorkspace(workspaceId);
if (checkExceeded(0)) {
throw new PayloadTooLargeException(

View File

@@ -1,4 +1,3 @@
import { UseGuards } from '@nestjs/common';
import {
Args,
Field,
@@ -12,7 +11,6 @@ import {
} from '@nestjs/graphql';
import type { SnapshotHistory } from '@prisma/client';
import { CloudThrottlerGuard } from '../../../fundamentals';
import { CurrentUser } from '../../auth';
import { DocHistoryManager } from '../../doc';
import { DocID } from '../../utils/doc';
@@ -31,7 +29,6 @@ class DocHistoryType implements Partial<SnapshotHistory> {
timestamp!: Date;
}
@UseGuards(CloudThrottlerGuard)
@Resolver(() => WorkspaceType)
export class DocHistoryResolver {
constructor(

View File

@@ -1,4 +1,4 @@
import { BadRequestException, UseGuards } from '@nestjs/common';
import { BadRequestException } from '@nestjs/common';
import {
Args,
Field,
@@ -12,7 +12,6 @@ import {
import type { WorkspacePage as PrismaWorkspacePage } from '@prisma/client';
import { PrismaClient } from '@prisma/client';
import { CloudThrottlerGuard } from '../../../fundamentals';
import { CurrentUser } from '../../auth';
import { DocID } from '../../utils/doc';
import { PermissionService, PublicPageMode } from '../permission';
@@ -38,7 +37,6 @@ class WorkspacePage implements Partial<PrismaWorkspacePage> {
public!: boolean;
}
@UseGuards(CloudThrottlerGuard)
@Resolver(() => WorkspaceType)
export class PagePermissionResolver {
constructor(
@@ -78,12 +76,30 @@ export class PagePermissionResolver {
});
}
@ResolveField(() => WorkspacePage, {
description: 'Get public page of a workspace by page id.',
complexity: 2,
nullable: true,
})
async publicPage(
@Parent() workspace: WorkspaceType,
@Args('pageId') pageId: string
) {
return this.prisma.workspacePage.findFirst({
where: {
workspaceId: workspace.id,
pageId,
public: true,
},
});
}
/**
* @deprecated
*/
@Mutation(() => Boolean, {
name: 'sharePage',
deprecationReason: 'renamed to publicPage',
deprecationReason: 'renamed to publishPage',
})
async deprecatedSharePage(
@CurrentUser() user: CurrentUser,

View File

@@ -4,7 +4,6 @@ import {
Logger,
NotFoundException,
PayloadTooLargeException,
UseGuards,
} from '@nestjs/common';
import {
Args,
@@ -22,7 +21,6 @@ import { applyUpdate, Doc } from 'yjs';
import type { FileUpload } from '../../../fundamentals';
import {
CloudThrottlerGuard,
EventEmitter,
MailService,
MutexService,
@@ -48,7 +46,6 @@ import { defaultWorkspaceAvatar } from '../utils';
* Public apis rate limit: 10 req/m
* Other rate limit: 120 req/m
*/
@UseGuards(CloudThrottlerGuard)
@Resolver(() => WorkspaceType)
export class WorkspaceResolver {
private readonly logger = new Logger(WorkspaceResolver.name);
@@ -191,28 +188,6 @@ export class WorkspaceResolver {
});
}
@Throttle({
default: {
limit: 10,
ttl: 30,
},
})
@Public()
@Query(() => WorkspaceType, {
description: 'Get public workspace by id',
})
async publicWorkspace(@Args('id') id: string) {
const workspace = await this.prisma.workspace.findUnique({
where: { id },
});
if (workspace?.public) {
return workspace;
}
throw new NotFoundException("Workspace doesn't exist");
}
@Query(() => WorkspaceType, {
description: 'Get workspace by id',
})
@@ -243,11 +218,7 @@ export class WorkspaceResolver {
permissions: {
create: {
type: Permission.Owner,
user: {
connect: {
id: user.id,
},
},
userId: user.id,
accepted: true,
},
},
@@ -422,15 +393,10 @@ export class WorkspaceResolver {
}
}
@Throttle({
default: {
limit: 10,
ttl: 30,
},
})
@Throttle('strict')
@Public()
@Query(() => InvitationType, {
description: 'Update workspace',
description: 'send workspace invitation',
})
async getInviteInfo(@Args('inviteId') inviteId: string) {
const workspaceId = await this.prisma.workspaceUserPermission

View File

@@ -1,6 +1,6 @@
import { PrismaClient } from '@prisma/client';
import { Quotas } from '../../core/quota';
import { Quotas } from '../../core/quota/schema';
import { upgradeQuotaVersion } from './utils/user-quotas';
export class NewFreePlan1705395933447 {

View File

@@ -1,6 +1,6 @@
import { PrismaClient } from '@prisma/client';
import { Quotas } from '../../core/quota';
import { Quotas } from '../../core/quota/schema';
import { upgradeQuotaVersion } from './utils/user-quotas';
export class BusinessBlobLimit1706513866287 {

View File

@@ -0,0 +1,13 @@
import { PrismaClient } from '@prisma/client';
import { refreshPrompts } from './utils/prompts';
export class Prompts1712068777394 {
// do the migration
static async up(db: PrismaClient) {
await refreshPrompts(db);
}
// revert the migration
static async down(_db: PrismaClient) {}
}

View File

@@ -0,0 +1,19 @@
import { PrismaClient } from '@prisma/client';
import { QuotaType } from '../../core/quota/types';
import { upgradeLatestQuotaVersion } from './utils/user-quotas';
export class RefreshFreePlan1712224382221 {
// do the migration
static async up(db: PrismaClient) {
// free plan 1.1
await upgradeLatestQuotaVersion(
db,
QuotaType.FreePlanV1,
'free plan 1.1 migration'
);
}
// revert the migration
static async down(_db: PrismaClient) {}
}

View File

@@ -0,0 +1,23 @@
import { PrismaClient } from '@prisma/client';
import { QuotaType } from '../../core/quota/types';
import { upgradeLatestQuotaVersion } from './utils/user-quotas';
export class CopilotFeature1713164714634 {
// do the migration
static async up(db: PrismaClient) {
await upgradeLatestQuotaVersion(
db,
QuotaType.ProPlanV1,
'pro plan 1.1 migration'
);
await upgradeLatestQuotaVersion(
db,
QuotaType.RestrictedPlanV1,
'restricted plan 1.1 migration'
);
}
// revert the migration
static async down(_db: PrismaClient) {}
}

Some files were not shown because too many files have changed in this diff Show More