mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-02 02:00:49 +08:00
c8cdc488db15344a696e9f9a2bd4e2750ea45742
11253 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c8cdc488db |
feat(server): entitlement primitive (#14964)
#### PR Dependency Tree * **PR #14964** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added entitlement resolution to validate licenses and derive plan, quotas, expiry and flags. * Introduced persistent quota/entitlement state for users and workspaces with legacy sync behavior. * Real-time quota-state operations and change events for monitoring usage. * **Chores** * Updated workspace dependencies to add cryptography/hash crates. * **Tests** * Added native entitlement tests covering validation, quantity handling, and signature/expiry cases. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/toeverything/AFFiNE/pull/14964) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
542da0b347 |
feat(editor): improve latex editing support (#14924)
## Summary - support converting selected text into inline LaTeX equations - support turning text blocks into LaTeX equation blocks - add equation entries to editor toolbars while keeping inline equation with text formatting actions ## Tests - yarn tsc -b blocksuite/affine/inlines/latex/tsconfig.json blocksuite/affine/blocks/note/tsconfig.json blocksuite/affine/blocks/root/tsconfig.json blocksuite/affine/rich-text/tsconfig.json blocksuite/affine/widgets/keyboard-toolbar/tsconfig.json --pretty false - git diff --check origin/canary...HEAD <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Equation block support with conversion from existing blocks. * Inline LaTeX insertion added to the inline formatting toolbar. * Equation action added to the keyboard toolbar; Equation blocks searchable via math/equation/latex aliases. * **Improvements** * Inline LaTeX editor opens and syncs more reliably; selection/convert flow preserves distinct LaTeX values when converting in reverse order. * **Tests** * New e2e tests for inline LaTeX conversions and value preservation. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/toeverything/AFFiNE/pull/14924) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
7280fe33bc |
chore: bump up Node.js to v22.22.3 (#14961)
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [node](https://nodejs.org) ([source](https://redirect.github.com/nodejs/node)) | patch | `22.22.2` → `22.22.3` | --- ### Release Notes <details> <summary>nodejs/node (node)</summary> ### [`v22.22.3`](https://redirect.github.com/nodejs/node/releases/tag/v22.22.3): 2026-05-13, Version 22.22.3 'Jod' (LTS), @​marco-ippolito [Compare Source](https://redirect.github.com/nodejs/node/compare/v22.22.2...v22.22.3) ##### Commits - \[[`4f780905c5`](https://redirect.github.com/nodejs/node/commit/4f780905c5)] - **crypto**: fix potential null pointer dereference when BIO\_meth\_new() fails (Nora Dossche) [#​61788](https://redirect.github.com/nodejs/node/pull/61788) - \[[`4a09efb947`](https://redirect.github.com/nodejs/node/commit/4a09efb947)] - **crypto**: update root certificates to NSS 3.121 (Node.js GitHub Bot) [#​62485](https://redirect.github.com/nodejs/node/pull/62485) - \[[`e4c0d99839`](https://redirect.github.com/nodejs/node/commit/e4c0d99839)] - **deps**: update timezone to 2026a (Node.js GitHub Bot) [#​62164](https://redirect.github.com/nodejs/node/pull/62164) - \[[`0226c8dd7a`](https://redirect.github.com/nodejs/node/commit/0226c8dd7a)] - **deps**: update simdjson to 4.5.0 (Node.js GitHub Bot) [#​62382](https://redirect.github.com/nodejs/node/pull/62382) - \[[`e742ab748c`](https://redirect.github.com/nodejs/node/commit/e742ab748c)] - **deps**: update sqlite to 3.51.3 (Node.js GitHub Bot) [#​62256](https://redirect.github.com/nodejs/node/pull/62256) - \[[`73cac0571a`](https://redirect.github.com/nodejs/node/commit/73cac0571a)] - **deps**: update amaro to 1.1.8 (Node.js GitHub Bot) [#​62151](https://redirect.github.com/nodejs/node/pull/62151) - \[[`ae5c162b93`](https://redirect.github.com/nodejs/node/commit/ae5c162b93)] - **deps**: update amaro to 1.1.7 (Node.js GitHub Bot) [#​61730](https://redirect.github.com/nodejs/node/pull/61730) - \[[`b819cb9977`](https://redirect.github.com/nodejs/node/commit/b819cb9977)] - **deps**: update amaro to 1.1.6 (Node.js GitHub Bot) [#​61603](https://redirect.github.com/nodejs/node/pull/61603) - \[[`bbcce09dc7`](https://redirect.github.com/nodejs/node/commit/bbcce09dc7)] - **deps**: update sqlite to 3.52.0 (Node.js GitHub Bot) [#​62150](https://redirect.github.com/nodejs/node/pull/62150) - \[[`22ff2d81ce`](https://redirect.github.com/nodejs/node/commit/22ff2d81ce)] - **deps**: update simdjson to 4.3.1 (Node.js GitHub Bot) [#​61930](https://redirect.github.com/nodejs/node/pull/61930) - \[[`f49b51d75c`](https://redirect.github.com/nodejs/node/commit/f49b51d75c)] - **deps**: update acorn-walk to 8.3.5 (Node.js GitHub Bot) [#​61928](https://redirect.github.com/nodejs/node/pull/61928) - \[[`1a5cec0d49`](https://redirect.github.com/nodejs/node/commit/1a5cec0d49)] - **deps**: update acorn to 8.16.0 (Node.js GitHub Bot) [#​61925](https://redirect.github.com/nodejs/node/pull/61925) - \[[`d339497688`](https://redirect.github.com/nodejs/node/commit/d339497688)] - **deps**: update nbytes to 0.1.3 (Node.js GitHub Bot) [#​61879](https://redirect.github.com/nodejs/node/pull/61879) - \[[`3ff8ffd459`](https://redirect.github.com/nodejs/node/commit/3ff8ffd459)] - **deps**: remove stale OpenSSL arch configs (René) [#​61834](https://redirect.github.com/nodejs/node/pull/61834) - \[[`b8ddbc1e9a`](https://redirect.github.com/nodejs/node/commit/b8ddbc1e9a)] - **deps**: update llhttp to 9.3.1 (Node.js GitHub Bot) [#​61827](https://redirect.github.com/nodejs/node/pull/61827) - \[[`ffda97afd4`](https://redirect.github.com/nodejs/node/commit/ffda97afd4)] - **deps**: update googletest to [`2461743`](https://redirect.github.com/nodejs/node/commit/2461743991f9aa53e9a3625eafcbacd81a3c74cd) (Node.js GitHub Bot) [#​62484](https://redirect.github.com/nodejs/node/pull/62484) - \[[`79aa32cf4f`](https://redirect.github.com/nodejs/node/commit/79aa32cf4f)] - **deps**: update googletest to [`73a63ea`](https://redirect.github.com/nodejs/node/commit/73a63ea05dc8ca29ec1d2c1d66481dd0de1950f1) (Node.js GitHub Bot) [#​61927](https://redirect.github.com/nodejs/node/pull/61927) - \[[`b6957e13b6`](https://redirect.github.com/nodejs/node/commit/b6957e13b6)] - **deps**: update archs files for openssl-3.5.6 (Node.js GitHub Bot) [#​62629](https://redirect.github.com/nodejs/node/pull/62629) - \[[`3a27669063`](https://redirect.github.com/nodejs/node/commit/3a27669063)] - **deps**: upgrade openssl sources to openssl-3.5.6 (Node.js GitHub Bot) [#​62629](https://redirect.github.com/nodejs/node/pull/62629) - \[[`d568a1bb53`](https://redirect.github.com/nodejs/node/commit/d568a1bb53)] - **deps**: upgrade npm to 10.9.8 (npm team) [#​62463](https://redirect.github.com/nodejs/node/pull/62463) - \[[`ec11f3c1d5`](https://redirect.github.com/nodejs/node/commit/ec11f3c1d5)] - **deps**: V8: backport [`85b3900`](https://redirect.github.com/nodejs/node/commit/85b390089e51) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`08609712ed`](https://redirect.github.com/nodejs/node/commit/08609712ed)] - **deps**: V8: backport [`1b27e46`](https://redirect.github.com/nodejs/node/commit/1b27e4674f11) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`dcc60d5ab2`](https://redirect.github.com/nodejs/node/commit/dcc60d5ab2)] - **deps**: V8: backport [`9997fc0`](https://redirect.github.com/nodejs/node/commit/9997fc013952) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`1d1f4451fb`](https://redirect.github.com/nodejs/node/commit/1d1f4451fb)] - **deps**: V8: cherry-pick [`b96e40d`](https://redirect.github.com/nodejs/node/commit/b96e40d5ac85) (Clemens Backes) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`2268567237`](https://redirect.github.com/nodejs/node/commit/2268567237)] - **deps**: V8: cherry-pick [`7cb6188`](https://redirect.github.com/nodejs/node/commit/7cb6188cf913) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`92804cdbea`](https://redirect.github.com/nodejs/node/commit/92804cdbea)] - **deps**: V8: cherry-pick [`e7ccf0a`](https://redirect.github.com/nodejs/node/commit/e7ccf0af1bdd) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`eae2c27a40`](https://redirect.github.com/nodejs/node/commit/eae2c27a40)] - **deps**: V8: cherry-pick [`8e214ec`](https://redirect.github.com/nodejs/node/commit/8e214ec3ec8c) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`a1799a49bb`](https://redirect.github.com/nodejs/node/commit/a1799a49bb)] - **deps**: V8: backport [`63b8849`](https://redirect.github.com/nodejs/node/commit/63b8849d73ae) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`a2df2d8731`](https://redirect.github.com/nodejs/node/commit/a2df2d8731)] - **deps**: V8: backport [`3239427`](https://redirect.github.com/nodejs/node/commit/323942700cfe) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`e3d65c7dca`](https://redirect.github.com/nodejs/node/commit/e3d65c7dca)] - **deps**: V8: backport [`89dc6ea`](https://redirect.github.com/nodejs/node/commit/89dc6eab605c) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`5e7db133de`](https://redirect.github.com/nodejs/node/commit/5e7db133de)] - **deps**: V8: backport [`910cb91`](https://redirect.github.com/nodejs/node/commit/910cb91733dc) (Jakob Kummerow) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`d0c24a28af`](https://redirect.github.com/nodejs/node/commit/d0c24a28af)] - **deps**: V8: cherry-pick [`b8f91e5`](https://redirect.github.com/nodejs/node/commit/b8f91e510e0f) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`d358687824`](https://redirect.github.com/nodejs/node/commit/d358687824)] - **deps**: V8: cherry-pick [`cf03d55`](https://redirect.github.com/nodejs/node/commit/cf03d55db2a0) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`67c8b2c349`](https://redirect.github.com/nodejs/node/commit/67c8b2c349)] - **deps**: V8: cherry-pick [`692f3d5`](https://redirect.github.com/nodejs/node/commit/692f3d526a38) (Sébastien Doeraene) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`71e5a59ffd`](https://redirect.github.com/nodejs/node/commit/71e5a59ffd)] - **deps**: V8: cherry-pick [`c734674`](https://redirect.github.com/nodejs/node/commit/c734674e03f9) (Manos Koukoutos) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`f0dbe81c7b`](https://redirect.github.com/nodejs/node/commit/f0dbe81c7b)] - **deps**: V8: cherry-pick [`b2f3aea`](https://redirect.github.com/nodejs/node/commit/b2f3aea23a01) (Thibaud Michaud) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`d333f480c3`](https://redirect.github.com/nodejs/node/commit/d333f480c3)] - **deps**: V8: cherry-pick [`5f1342c`](https://redirect.github.com/nodejs/node/commit/5f1342c20b59) (Matthias Liedtke) [#​62783](https://redirect.github.com/nodejs/node/pull/62783) - \[[`db722725bb`](https://redirect.github.com/nodejs/node/commit/db722725bb)] - **deps**: use npm undici\@​six tag in `update-undici.sh` (Matteo Collina) [#​63012](https://redirect.github.com/nodejs/node/pull/63012) - \[[`9b57979d9c`](https://redirect.github.com/nodejs/node/commit/9b57979d9c)] - **doc**: add Rafael to last security release steward (Rafael Gonzaga) [#​62423](https://redirect.github.com/nodejs/node/pull/62423) - \[[`d8075585bf`](https://redirect.github.com/nodejs/node/commit/d8075585bf)] - **doc**: add path to vulnerabilities.json mention (Rafael Gonzaga) [#​62355](https://redirect.github.com/nodejs/node/pull/62355) - \[[`6ec9a70204`](https://redirect.github.com/nodejs/node/commit/6ec9a70204)] - **doc**: clarify fs.ReadStream and fs.WriteStream are not constructable (Kit Dallege) [#​62208](https://redirect.github.com/nodejs/node/pull/62208) - \[[`1fc86fcb6e`](https://redirect.github.com/nodejs/node/commit/1fc86fcb6e)] - **doc**: add note (and caveat) for `mock.module` about customization hooks (Jacob Smith) [#​62075](https://redirect.github.com/nodejs/node/pull/62075) - \[[`491be80bd9`](https://redirect.github.com/nodejs/node/commit/491be80bd9)] - **doc**: add efekrskl as triager (Efe) [#​61876](https://redirect.github.com/nodejs/node/pull/61876) - \[[`18558293a3`](https://redirect.github.com/nodejs/node/commit/18558293a3)] - **doc**: fix module.stripTypeScriptTypes indentation (René) [#​61992](https://redirect.github.com/nodejs/node/pull/61992) - \[[`8e20976522`](https://redirect.github.com/nodejs/node/commit/8e20976522)] - **doc**: explicitly mention Slack handle (Rafael Gonzaga) [#​61986](https://redirect.github.com/nodejs/node/pull/61986) - \[[`70b8e6b4fb`](https://redirect.github.com/nodejs/node/commit/70b8e6b4fb)] - **doc**: rename invalid `function` parameter (René) [#​61942](https://redirect.github.com/nodejs/node/pull/61942) - \[[`4045c76f6c`](https://redirect.github.com/nodejs/node/commit/4045c76f6c)] - **doc**: clarify status of feature request issues (Antoine du Hamel) [#​61505](https://redirect.github.com/nodejs/node/pull/61505) - \[[`c54652f2aa`](https://redirect.github.com/nodejs/node/commit/c54652f2aa)] - **doc**: remove incorrect mention of `module` in `typescript.md` (Rob Palmer) [#​61839](https://redirect.github.com/nodejs/node/pull/61839) - \[[`9fad6cedf5`](https://redirect.github.com/nodejs/node/commit/9fad6cedf5)] - **doc**: clarify async caveats for `events.once()` (René) [#​61572](https://redirect.github.com/nodejs/node/pull/61572) - \[[`2f1e5733fe`](https://redirect.github.com/nodejs/node/commit/2f1e5733fe)] - **doc**: update Juan's security steward info (Juan José) [#​61754](https://redirect.github.com/nodejs/node/pull/61754) - \[[`a64bdb5068`](https://redirect.github.com/nodejs/node/commit/a64bdb5068)] - **doc**: fix overstated Date header requirement in response.sendDate (Kit Dallege) [#​62206](https://redirect.github.com/nodejs/node/pull/62206) - \[[`02797de923`](https://redirect.github.com/nodejs/node/commit/02797de923)] - **doc**: fix small environment\_variables typo (chris) [#​62279](https://redirect.github.com/nodejs/node/pull/62279) - \[[`f22ebdc809`](https://redirect.github.com/nodejs/node/commit/f22ebdc809)] - **doc**: fix small logic error in DETECT\_MODULE\_SYNTAX (René) [#​62025](https://redirect.github.com/nodejs/node/pull/62025) - \[[`9f4508062a`](https://redirect.github.com/nodejs/node/commit/9f4508062a)] - **doc**: fix methods being documented as properties in `process.md` (Antoine du Hamel) [#​61765](https://redirect.github.com/nodejs/node/pull/61765) - \[[`3ea39ff135`](https://redirect.github.com/nodejs/node/commit/3ea39ff135)] - **doc**: fix dropdown menu being obscured at <600px due to stacking context (Jeff) [#​61735](https://redirect.github.com/nodejs/node/pull/61735) - \[[`c22445079b`](https://redirect.github.com/nodejs/node/commit/c22445079b)] - **doc**: fix spacing in process message event (Aviv Keller) [#​61756](https://redirect.github.com/nodejs/node/pull/61756) - \[[`32831b5223`](https://redirect.github.com/nodejs/node/commit/32831b5223)] - **doc**: fix broken links of net.md (YuSheng Chen) [#​61673](https://redirect.github.com/nodejs/node/pull/61673) - \[[`005508d509`](https://redirect.github.com/nodejs/node/commit/005508d509)] - **doc**: remove obsolete Boxstarter automated install (Mike McCready) [#​61785](https://redirect.github.com/nodejs/node/pull/61785) - \[[`37c2fd6f7d`](https://redirect.github.com/nodejs/node/commit/37c2fd6f7d)] - **esm**: fix path normalization in `finalizeResolution` (Antoine du Hamel) [#​62080](https://redirect.github.com/nodejs/node/pull/62080) - \[[`1769d74613`](https://redirect.github.com/nodejs/node/commit/1769d74613)] - **esm**: populate separate cache for require(esm) in imported CJS (Joyee Cheung) [#​59679](https://redirect.github.com/nodejs/node/pull/59679) - \[[`ee02966ffc`](https://redirect.github.com/nodejs/node/commit/ee02966ffc)] - **http**: fix keep-alive socket reuse race in requestOnFinish (Martin Slota) [#​61710](https://redirect.github.com/nodejs/node/pull/61710) - \[[`2fdb5ce6cc`](https://redirect.github.com/nodejs/node/commit/2fdb5ce6cc)] - **http2**: fix FileHandle leak in respondWithFile (sangwook) [#​61707](https://redirect.github.com/nodejs/node/pull/61707) - \[[`aa2c1eca04`](https://redirect.github.com/nodejs/node/commit/aa2c1eca04)] - **lib**: fix source map url parse in dynamic imports (Chengzhong Wu) [#​61990](https://redirect.github.com/nodejs/node/pull/61990) - \[[`785b00cbeb`](https://redirect.github.com/nodejs/node/commit/785b00cbeb)] - **meta**: pass release version to release worker (flakey5) [#​62777](https://redirect.github.com/nodejs/node/pull/62777) - \[[`447fb9a0b5`](https://redirect.github.com/nodejs/node/commit/447fb9a0b5)] - **meta**: persist sccache daemon until end of build workflows (René) [#​61639](https://redirect.github.com/nodejs/node/pull/61639) - \[[`5065a0acb3`](https://redirect.github.com/nodejs/node/commit/5065a0acb3)] - **module**: do not invoke resolve hooks twice for imported cjs (Joyee Cheung) [#​61529](https://redirect.github.com/nodejs/node/pull/61529) - \[[`9a2e21305d`](https://redirect.github.com/nodejs/node/commit/9a2e21305d)] - **module**: do not wrap module.\_load when tracing is not enabled (Joyee Cheung) [#​61479](https://redirect.github.com/nodejs/node/pull/61479) - \[[`b9240bc063`](https://redirect.github.com/nodejs/node/commit/b9240bc063)] - **module**: fix sync resolve hooks for require with node: prefixes (Joyee Cheung) [#​61088](https://redirect.github.com/nodejs/node/pull/61088) - \[[`2e91b28aaf`](https://redirect.github.com/nodejs/node/commit/2e91b28aaf)] - **module**: handle null source from async loader hooks in sync hooks (Joyee Cheung) [#​59929](https://redirect.github.com/nodejs/node/pull/59929) - \[[`39147c154e`](https://redirect.github.com/nodejs/node/commit/39147c154e)] - **module**: use sync cjs when importing cts (Marco Ippolito) [#​60072](https://redirect.github.com/nodejs/node/pull/60072) - \[[`12a2462b2c`](https://redirect.github.com/nodejs/node/commit/12a2462b2c)] - **module**: only put directly require-d ESM into require.cache (Joyee Cheung) [#​59874](https://redirect.github.com/nodejs/node/pull/59874) - \[[`cf39566277`](https://redirect.github.com/nodejs/node/commit/cf39566277)] - **src**: fix flags argument offset in JSUdpWrap (Weixie Cui) [#​61948](https://redirect.github.com/nodejs/node/pull/61948) - \[[`578a9a9230`](https://redirect.github.com/nodejs/node/commit/578a9a9230)] - **src**: clamp WriteUtf8 capacity to INT\_MAX in EncodeInto (semimikoh) [#​62621](https://redirect.github.com/nodejs/node/pull/62621) - \[[`57c3035fec`](https://redirect.github.com/nodejs/node/commit/57c3035fec)] - **stream**: fix decoded fromList chunk boundary check (Thomas Watson) [#​61884](https://redirect.github.com/nodejs/node/pull/61884) - \[[`57fb008bb8`](https://redirect.github.com/nodejs/node/commit/57fb008bb8)] - **test**: update tls junk data error expectations (Filip Skokan) [#​62629](https://redirect.github.com/nodejs/node/pull/62629) - \[[`363f9a9d18`](https://redirect.github.com/nodejs/node/commit/363f9a9d18)] - **test**: skip `test-url` on `--shared-ada` builds (Antoine du Hamel) [#​62019](https://redirect.github.com/nodejs/node/pull/62019) - \[[`daaead342b`](https://redirect.github.com/nodejs/node/commit/daaead342b)] - **test**: simplify encodeInto large buffer regression test (semimikoh) [#​62621](https://redirect.github.com/nodejs/node/pull/62621) - \[[`ecfa766b41`](https://redirect.github.com/nodejs/node/commit/ecfa766b41)] - **tools**: fix auto-start-ci (Antoine du Hamel) [#​61900](https://redirect.github.com/nodejs/node/pull/61900) - \[[`17c0a610af`](https://redirect.github.com/nodejs/node/commit/17c0a610af)] - **tools**: fix parsing of commit trailers in `lint-release-proposal` GHA (Antoine du Hamel) [#​62077](https://redirect.github.com/nodejs/node/pull/62077) - \[[`89ad7dc63b`](https://redirect.github.com/nodejs/node/commit/89ad7dc63b)] - **tools**: enforce removal of `lts-watch-*` labels on release proposals (Antoine du Hamel) [#​61672](https://redirect.github.com/nodejs/node/pull/61672) - \[[`5f9bb8ef0c`](https://redirect.github.com/nodejs/node/commit/5f9bb8ef0c)] - **tools**: revert tools GHA workflow to ubuntu-latest (Richard Lau) [#​62024](https://redirect.github.com/nodejs/node/pull/62024) - \[[`977ef80ac1`](https://redirect.github.com/nodejs/node/commit/977ef80ac1)] - **url**: process crash via malformed UNC hostname in pathToFileURL() (Nicola Del Gobbo) [#​62574](https://redirect.github.com/nodejs/node/pull/62574) - \[[`ad8f518a81`](https://redirect.github.com/nodejs/node/commit/ad8f518a81)] - **zlib**: fix use-after-free when reset() is called during write (Matteo Collina) [#​62325](https://redirect.github.com/nodejs/node/pull/62325) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
f626dbd590 |
fix(server): realtime loading (#14959)
#### PR Dependency Tree * **PR #14959** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Rewired realtime and copilot services to require their runtime dependencies, improving reliability and removing nullable/optional runtime paths. * **Tests** * Centralized service creation in tests with helper factories and added checks ensuring realtime dependency injection is configured as expected. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/toeverything/AFFiNE/pull/14959) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
419fc5d5e0 |
chore: bump up Recouse/EventSource version to from: "0.1.8" (#14960)
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [Recouse/EventSource](https://redirect.github.com/Recouse/EventSource) | patch | `from: "0.1.7"` → `from: "0.1.8"` | --- ### Release Notes <details> <summary>Recouse/EventSource (Recouse/EventSource)</summary> ### [`v0.1.8`](https://redirect.github.com/Recouse/EventSource/releases/tag/0.1.8) [Compare Source](https://redirect.github.com/Recouse/EventSource/compare/0.1.7...0.1.8) #### What's Changed - Fix O(n²) performance in ServerEventParser.parse() by [@​liefran-sim](https://redirect.github.com/liefran-sim) in [#​49](https://redirect.github.com/Recouse/EventSource/pull/49) #### New Contributors - [@​liefran-sim](https://redirect.github.com/liefran-sim) made their first contribution in [#​49](https://redirect.github.com/Recouse/EventSource/pull/49) **Full Changelog**: <https://github.com/Recouse/EventSource/compare/0.1.7...0.1.8> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzMuNiIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
1201f7c350 |
chore: bump rspack (#14957)
#### PR Dependency Tree * **PR #14957** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated minimum Node version requirement to 22.12.0 or later. * Updated build tool dependencies including rspack and related packages. * Removed CI-specific logging behavior from development server. * Migrated to native HTML plugin integration for improved build efficiency. * Simplified build configuration by removing unused experimental options. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/toeverything/AFFiNE/pull/14957) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
4b4def3a11 |
feat(server): gemini embedding 2 support (#14956)
#### PR Dependency Tree * **PR #14956** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes * **Bug Fixes** * Improved Gemini Vertex provider configuration validation logic for enhanced reliability. * Refined Google Vertex publisher base URL construction handling. * **Tests** * Added test coverage for Gemini Embedding 2 model resolution. * Added test coverage for Gemini Vertex provider Google Cloud integration. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/toeverything/AFFiNE/pull/14956) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
2b22fe4692 |
chore: bump up nestjs (#13791)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@nestjs/apollo](https://redirect.github.com/nestjs/graphql) | [`13.2.4` → `13.4.0`](https://renovatebot.com/diffs/npm/@nestjs%2fapollo/13.2.4/13.4.0) |  |  | | [@nestjs/common](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common)) | [`11.1.18` → `11.1.20`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/11.1.18/11.1.20) |  |  | | [@nestjs/core](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core)) | [`11.1.18` → `11.1.20`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/11.1.18/11.1.20) |  |  | | [@nestjs/graphql](https://redirect.github.com/nestjs/graphql) | [`13.2.5` → `13.4.0`](https://renovatebot.com/diffs/npm/@nestjs%2fgraphql/13.2.5/13.4.0) |  |  | | [@nestjs/platform-express](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-express)) | [`11.1.18` → `11.1.20`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-express/11.1.18/11.1.20) |  |  | | [@nestjs/platform-socket.io](https://nestjs.com) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io)) | [`11.1.18` → `11.1.20`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-socket.io/11.1.18/11.1.20) |  |  | | [@nestjs/schedule](https://redirect.github.com/nestjs/schedule) | [`6.1.1` → `6.1.3`](https://renovatebot.com/diffs/npm/@nestjs%2fschedule/6.1.1/6.1.3) |  |  | | [@nestjs/swagger](https://redirect.github.com/nestjs/swagger) | [`11.2.7` → `11.4.2`](https://renovatebot.com/diffs/npm/@nestjs%2fswagger/11.2.7/11.4.2) |  |  | | [@nestjs/websockets](https://redirect.github.com/nestjs/nest) ([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/websockets)) | [`11.1.18` → `11.1.20`](https://renovatebot.com/diffs/npm/@nestjs%2fwebsockets/11.1.18/11.1.20) |  |  | --- ### Release Notes <details> <summary>nestjs/graphql (@​nestjs/apollo)</summary> ### [`v13.4.0`](https://redirect.github.com/nestjs/graphql/releases/tag/v13.4.0) [Compare Source](https://redirect.github.com/nestjs/graphql/compare/v13.3.0...v13.4.0) #### 13.4.0 (2026-04-30) ##### Features - `apollo`, `graphql`, `mercurius` - [#​3811](https://redirect.github.com/nestjs/graphql/pull/3811) feat(graphql): Add registerIn option for module-scoped type filtering ([@​joe-re](https://redirect.github.com/joe-re)) ##### Bug fixes - `graphql` - [#​3959](https://redirect.github.com/nestjs/graphql/pull/3959) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): stop double-registering PickType inputs ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3960](https://redirect.github.com/nestjs/graphql/pull/3960) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): de-duplicate per-target metadata in TargetMetadataCollection ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - `apollo`, `graphql` - [#​3962](https://redirect.github.com/nestjs/graphql/pull/3962) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): restore Timestamp scalar parsers in federation factory ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) ##### Enhancements - `graphql` - [#​3963](https://redirect.github.com/nestjs/graphql/pull/3963) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): validate registerEnumType/createUnionType options eagerly ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) ##### Dependencies - `graphql` - [#​3954](https://redirect.github.com/nestjs/graphql/pull/3954) fix(deps): update graphql-tools monorepo ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) ##### Committers: 3 - Masato Noguchi ([@​joe-re](https://redirect.github.com/joe-re)) - Mateus Welter Goettems ([@​mateuswgoettems](https://redirect.github.com/mateuswgoettems)) - Yogeshwaran C ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) ### [`v13.3.0`](https://redirect.github.com/nestjs/graphql/releases/tag/v13.3.0) [Compare Source](https://redirect.github.com/nestjs/graphql/compare/v13.2.5...v13.3.0) #### 13.3.0 (2026-04-22) ##### Bug fixes - `graphql` - [#​3949](https://redirect.github.com/nestjs/graphql/pull/3949) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): count args for parenless arrow functions ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3952](https://redirect.github.com/nestjs/graphql/pull/3952) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): keep class directive when a field has the same SDL ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3946](https://redirect.github.com/nestjs/graphql/pull/3946) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): emit enum key for Args defaultValue in generated SDL ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3934](https://redirect.github.com/nestjs/graphql/pull/3934) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): treat single-key string enums as enums in plugin type detection ([@​maruthang](https://redirect.github.com/maruthang)) - [#​3939](https://redirect.github.com/nestjs/graphql/pull/3939) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): preserve ResolveField options for all overloads ([@​maruthang](https://redirect.github.com/maruthang)) - `apollo` - [#​3940](https://redirect.github.com/nestjs/graphql/pull/3940) fix(apollo): preserve HTTP 200 for execution-level GraphQL errors ([@​maruthang](https://redirect.github.com/maruthang)) ##### Enhancements - `graphql` - [#​3838](https://redirect.github.com/nestjs/graphql/pull/3838) perf(graphql): bypass ExternalContextCreator for scalar ResolveField fast-path ([@​ArielSafar](https://redirect.github.com/ArielSafar)) - [#​3950](https://redirect.github.com/nestjs/graphql/pull/3950) feat([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): forward specifiedByURL and extensions on custom scalars ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3951](https://redirect.github.com/nestjs/graphql/pull/3951) feat([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): accept array of SDL strings in [@​Directive](https://redirect.github.com/Directive) ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3944](https://redirect.github.com/nestjs/graphql/pull/3944) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): emit clearer error when nested object type is used in mapped input ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3943](https://redirect.github.com/nestjs/graphql/pull/3943) feat([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): add conditional exports for browser shim ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3942](https://redirect.github.com/nestjs/graphql/pull/3942) feat([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): default federation to v2.12 directives ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3936](https://redirect.github.com/nestjs/graphql/pull/3936) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): allow CustomScalar methods to return null ([@​maruthang](https://redirect.github.com/maruthang)) - `apollo`, `graphql` - [#​3948](https://redirect.github.com/nestjs/graphql/pull/3948) feat([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): support directives on enums and unions ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) ##### Dependencies - `graphql` - [#​3925](https://redirect.github.com/nestjs/graphql/pull/3925) chore(deps): update dependency ts-morph to v28 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3918](https://redirect.github.com/nestjs/graphql/pull/3918) fix(deps): update graphql-tools monorepo ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - `mercurius` - [#​3928](https://redirect.github.com/nestjs/graphql/pull/3928) chore(deps): update dependency fastify to v5.8.5 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3858](https://redirect.github.com/nestjs/graphql/pull/3858) chore(deps): update dependency [@​mercuriusjs/gateway](https://redirect.github.com/mercuriusjs/gateway) to v5.2.0 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3920](https://redirect.github.com/nestjs/graphql/pull/3920) chore(deps): update dependency mercurius to v16.9.0 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) ##### Committers: 3 - Ariel Safar ([@​ArielSafar](https://redirect.github.com/ArielSafar)) - Maruthan G ([@​maruthang](https://redirect.github.com/maruthang)) - Yogeshwaran C ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) ### [`v13.2.5`](https://redirect.github.com/nestjs/graphql/releases/tag/v13.2.5) [Compare Source](https://redirect.github.com/nestjs/graphql/compare/v13.2.4...v13.2.5) ##### 13.2.5 (2026-04-09) ##### Bug fixes - `graphql` - [#​3846](https://redirect.github.com/nestjs/graphql/pull/3846) fix([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): handle definitions factory typename option ([@​NicolasGn](https://redirect.github.com/NicolasGn)) ##### Enhancements - `graphql` - [#​3889](https://redirect.github.com/nestjs/graphql/pull/3889) feat([@​nestjs/graphql](https://redirect.github.com/nestjs/graphql)): add stopOnApplicationShutdown option for graceful shutdown ([@​dgfh0450](https://redirect.github.com/dgfh0450)) ##### Dependencies - `graphql` - [#​3894](https://redirect.github.com/nestjs/graphql/pull/3894) fix(deps): update dependency graphql-ws to v6.0.8 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3852](https://redirect.github.com/nestjs/graphql/pull/3852) chore(deps): update dependency graphql to v16.13.2 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3888](https://redirect.github.com/nestjs/graphql/pull/3888) fix(deps): update dependency ws to v8.20.0 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3901](https://redirect.github.com/nestjs/graphql/pull/3901) fix(deps): update dependency [@​nestjs/mapped-types](https://redirect.github.com/nestjs/mapped-types) to v2.1.1 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3904](https://redirect.github.com/nestjs/graphql/pull/3904) fix(deps): update dependency lodash to v4.18.1 \[security] ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - `apollo` - [#​3902](https://redirect.github.com/nestjs/graphql/pull/3902) fix(deps): update dependency lodash.omit to v4.18.0 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3897](https://redirect.github.com/nestjs/graphql/pull/3897) chore(deps): update dependency [@​apollo/server](https://redirect.github.com/apollo/server) to v5.5.0 \[security] ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3881](https://redirect.github.com/nestjs/graphql/pull/3881) chore(deps): update dependency [@​apollo/gateway](https://redirect.github.com/apollo/gateway) to v2.10.5 \[security] ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - `mercurius` - [#​3899](https://redirect.github.com/nestjs/graphql/pull/3899) chore(deps): update dependency [@​mercuriusjs/federation](https://redirect.github.com/mercuriusjs/federation) to v5.1.1 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3890](https://redirect.github.com/nestjs/graphql/pull/3890) chore(deps): update dependency fastify to v5.8.4 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) - [#​3868](https://redirect.github.com/nestjs/graphql/pull/3868) chore(deps): update dependency mercurius to v16.8.0 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) ##### Committers: 2 - Nicolas Guégan ([@​NicolasGn](https://redirect.github.com/NicolasGn)) - YoonDH ([@​dgfh0450](https://redirect.github.com/dgfh0450)) </details> <details> <summary>nestjs/nest (@​nestjs/common)</summary> ### [`v11.1.20`](https://redirect.github.com/nestjs/nest/compare/v11.1.19...7caeb3fb70de81085c4c3e8502a2a0e62e4f8eda) [Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.19...v11.1.20) ### [`v11.1.19`](https://redirect.github.com/nestjs/nest/releases/tag/v11.1.19) [Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.18...v11.1.19) #### v11.1.19 (2026-04-13) ##### Bug fixes - `microservices` - [#​16762](https://redirect.github.com/nestjs/nest/pull/16762) fix(microservices): use backing field for consumer CRASH event listener ([@​burhanharoon](https://redirect.github.com/burhanharoon)) - [#​16764](https://redirect.github.com/nestjs/nest/pull/16764) fix(microservices): prevent stack overflow in jsonsocket.handledata() ([@​kamilmysliwiec](https://redirect.github.com/kamilmysliwiec)) ##### Committers: 2 - Burhan Haroon⚡ ([@​burhanharoon](https://redirect.github.com/burhanharoon)) - Kamil Mysliwiec ([@​kamilmysliwiec](https://redirect.github.com/kamilmysliwiec)) </details> <details> <summary>nestjs/nest (@​nestjs/core)</summary> ### [`v11.1.20`](https://redirect.github.com/nestjs/nest/compare/v11.1.19...7caeb3fb70de81085c4c3e8502a2a0e62e4f8eda) [Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.19...v11.1.20) ### [`v11.1.19`](https://redirect.github.com/nestjs/nest/releases/tag/v11.1.19) [Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.18...v11.1.19) ##### v11.1.19 (2026-04-13) ##### Bug fixes - `microservices` - [#​16762](https://redirect.github.com/nestjs/nest/pull/16762) fix(microservices): use backing field for consumer CRASH event listener ([@​burhanharoon](https://redirect.github.com/burhanharoon)) - [#​16764](https://redirect.github.com/nestjs/nest/pull/16764) fix(microservices): prevent stack overflow in jsonsocket.handledata() ([@​kamilmysliwiec](https://redirect.github.com/kamilmysliwiec)) ##### Committers: 2 - Burhan Haroon⚡ ([@​burhanharoon](https://redirect.github.com/burhanharoon)) - Kamil Mysliwiec ([@​kamilmysliwiec](https://redirect.github.com/kamilmysliwiec)) </details> <details> <summary>nestjs/nest (@​nestjs/platform-express)</summary> ### [`v11.1.20`](https://redirect.github.com/nestjs/nest/compare/v11.1.19...7caeb3fb70de81085c4c3e8502a2a0e62e4f8eda) [Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.19...v11.1.20) ### [`v11.1.19`](https://redirect.github.com/nestjs/nest/releases/tag/v11.1.19) [Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.18...v11.1.19) ##### v11.1.19 (2026-04-13) ##### Bug fixes - `microservices` - [#​16762](https://redirect.github.com/nestjs/nest/pull/16762) fix(microservices): use backing field for consumer CRASH event listener ([@​burhanharoon](https://redirect.github.com/burhanharoon)) - [#​16764](https://redirect.github.com/nestjs/nest/pull/16764) fix(microservices): prevent stack overflow in jsonsocket.handledata() ([@​kamilmysliwiec](https://redirect.github.com/kamilmysliwiec)) ##### Committers: 2 - Burhan Haroon⚡ ([@​burhanharoon](https://redirect.github.com/burhanharoon)) - Kamil Mysliwiec ([@​kamilmysliwiec](https://redirect.github.com/kamilmysliwiec)) </details> <details> <summary>nestjs/nest (@​nestjs/platform-socket.io)</summary> ### [`v11.1.20`](https://redirect.github.com/nestjs/nest/releases/tag/v11.1.20) [Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.19...v11.1.20) ##### v11.1.20 (2026-05-13) ##### Bug fixes - `core`, `testing` - [#​16939](https://redirect.github.com/nestjs/nest/pull/16939) fix(core): fix deeply nested transient providers resolution ([@​kamilmysliwiec](https://redirect.github.com/kamilmysliwiec)) - `core` - [#​16861](https://redirect.github.com/nestjs/nest/pull/16861) fix(core): fix [@​Sse](https://redirect.github.com/Sse) losing events on complete ([@​MatthiasBrehmer](https://redirect.github.com/MatthiasBrehmer)) - [#​16753](https://redirect.github.com/nestjs/nest/pull/16753) fix(core): defer sse writehead until after lifecycle completes ([@​jkalberer](https://redirect.github.com/jkalberer)) - [#​16782](https://redirect.github.com/nestjs/nest/pull/16782) fix(core): use strict null check for SSE message id ([@​burhanharoon](https://redirect.github.com/burhanharoon)) - `microservices` - [#​16850](https://redirect.github.com/nestjs/nest/pull/16850) fix(microservices): ServerRMQ crashes at boot when [@​MessagePattern](https://redirect.github.com/MessagePattern)(undefined) is combined with wildcards: true ([@​lavieennoir](https://redirect.github.com/lavieennoir)) - `common` - [#​16845](https://redirect.github.com/nestjs/nest/pull/16845) fix(common): accept zero timestamp in parse date pipe ([@​Mysh3ll](https://redirect.github.com/Mysh3ll)) - `platform-socket.io` - [#​16742](https://redirect.github.com/nestjs/nest/pull/16742) fix(socket.io): Deduplicate disconnect listener in bindMessageHandlers ([@​fru1tworld](https://redirect.github.com/fru1tworld)) ##### Enhancements - `microservices` - [#​16676](https://redirect.github.com/nestjs/nest/pull/16676) feat(microservices): add return buffers option for binary data ([@​Forceres](https://redirect.github.com/Forceres)) - [#​16826](https://redirect.github.com/nestjs/nest/pull/16826) feat(microservices): handle rmq blocked/unblocked connection events ([@​thisalihassan](https://redirect.github.com/thisalihassan)) - `common` - [#​16902](https://redirect.github.com/nestjs/nest/pull/16902) fix(common): filetype validator buffer message ([@​QusaiAlbonni](https://redirect.github.com/QusaiAlbonni)) - `platform-express` - [#​16844](https://redirect.github.com/nestjs/nest/pull/16844) feat(platform-express): add defParamCharset to MulterOptions ([@​starnayuta](https://redirect.github.com/starnayuta)) ##### Dependencies - `platform-ws` - [#​16941](https://redirect.github.com/nestjs/nest/pull/16941) chore(deps): bump ws from 8.20.0 to 8.20.1 ([@​dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) ##### Committers: 13 - Ali Hassan ([@​thisalihassan](https://redirect.github.com/thisalihassan)) - Burhan Haroon⚡ ([@​burhanharoon](https://redirect.github.com/burhanharoon)) - Dmytro Khyzhniak ([@​lavieennoir](https://redirect.github.com/lavieennoir)) - Harsh Rathod ([@​harshrathod50](https://redirect.github.com/harshrathod50)) - IlyaCredo ([@​Forceres](https://redirect.github.com/Forceres)) - Kamil Mysliwiec ([@​kamilmysliwiec](https://redirect.github.com/kamilmysliwiec)) - Mysh3ll ([@​Mysh3ll](https://redirect.github.com/Mysh3ll)) - [@​MatthiasBrehmer](https://redirect.github.com/MatthiasBrehmer) - [@​QusaiAlbonni](https://redirect.github.com/QusaiAlbonni) - [@​jkalberer](https://redirect.github.com/jkalberer) - [@​pazaderey](https://redirect.github.com/pazaderey) - fru1tworld ([@​fru1tworld](https://redirect.github.com/fru1tworld)) - starnayuta ([@​starnayuta](https://redirect.github.com/starnayuta)) ### [`v11.1.19`](https://redirect.github.com/nestjs/nest/releases/tag/v11.1.19) [Compare Source](https://redirect.github.com/nestjs/nest/compare/v11.1.18...v11.1.19) #### v11.1.19 (2026-04-13) ##### Bug fixes - `microservices` - [#​16762](https://redirect.github.com/nestjs/nest/pull/16762) fix(microservices): use backing field for consumer CRASH event listener ([@​burhanharoon](https://redirect.github.com/burhanharoon)) - [#​16764](https://redirect.github.com/nestjs/nest/pull/16764) fix(microservices): prevent stack overflow in jsonsocket.handledata() ([@​kamilmysliwiec](https://redirect.github.com/kamilmysliwiec)) ##### Committers: 2 - Burhan Haroon⚡ ([@​burhanharoon](https://redirect.github.com/burhanharoon)) - Kamil Mysliwiec ([@​kamilmysliwiec](https://redirect.github.com/kamilmysliwiec)) </details> <details> <summary>nestjs/schedule (@​nestjs/schedule)</summary> ### [`v6.1.3`](https://redirect.github.com/nestjs/schedule/releases/tag/6.1.3) [Compare Source](https://redirect.github.com/nestjs/schedule/compare/6.1.2...6.1.3) #### What's Changed - feat(cron): add initialDelay option to defer first job execution by [@​kyungseopk1m](https://redirect.github.com/kyungseopk1m) in [#​2251](https://redirect.github.com/nestjs/schedule/pull/2251) **Full Changelog**: <https://github.com/nestjs/schedule/compare/6.1.2...6.1.3> ### [`v6.1.2`](https://redirect.github.com/nestjs/schedule/releases/tag/6.1.2) [Compare Source](https://redirect.github.com/nestjs/schedule/compare/6.1.1...6.1.2) - Merge pull request [#​2247](https://redirect.github.com/nestjs/schedule/issues/2247) from kyungseopk1m/feat/cron-initial-delay ([`a57ce2c`](https://redirect.github.com/nestjs/schedule/commit/a57ce2c)) - chore(deps): update dependency prettier to v3.8.3 ([#​2248](https://redirect.github.com/nestjs/schedule/issues/2248)) ([`bb3490d`](https://redirect.github.com/nestjs/schedule/commit/bb3490d)) - feat(cron): add initialDelay option to defer first job execution ([`1c5677f`](https://redirect.github.com/nestjs/schedule/commit/1c5677f)) - Merge pull request [#​2245](https://redirect.github.com/nestjs/schedule/issues/2245) from nestjs/renovate/nest-monorepo ([`59046bd`](https://redirect.github.com/nestjs/schedule/commit/59046bd)) - Merge pull request [#​2246](https://redirect.github.com/nestjs/schedule/issues/2246) from nestjs/renovate/oxlint-monorepo ([`be4eee3`](https://redirect.github.com/nestjs/schedule/commit/be4eee3)) - chore(deps): update dependency oxlint to v1.60.0 ([`32a9ce2`](https://redirect.github.com/nestjs/schedule/commit/32a9ce2)) - chore(deps): update nest monorepo to v11.1.19 ([`7d3844f`](https://redirect.github.com/nestjs/schedule/commit/7d3844f)) - chore: migrate to oxlint, vitest, ts6 ([`29de71b`](https://redirect.github.com/nestjs/schedule/commit/29de71b)) - chore(deps): update dependency globals to v17.5.0 ([#​2244](https://redirect.github.com/nestjs/schedule/issues/2244)) ([`6c62cca`](https://redirect.github.com/nestjs/schedule/commit/6c62cca)) - chore(deps): update dependency sinon to v21.1.2 ([#​2243](https://redirect.github.com/nestjs/schedule/issues/2243)) ([`ee3b31a`](https://redirect.github.com/nestjs/schedule/commit/ee3b31a)) - chore(deps): update dependency sinon to v21.1.1 ([#​2241](https://redirect.github.com/nestjs/schedule/issues/2241)) ([`eba9799`](https://redirect.github.com/nestjs/schedule/commit/eba9799)) - Merge pull request [#​2242](https://redirect.github.com/nestjs/schedule/issues/2242) from nestjs/renovate/prettier-3.x ([`c3ad0f7`](https://redirect.github.com/nestjs/schedule/commit/c3ad0f7)) - chore(deps): update dependency prettier to v3.8.2 ([`798e2a9`](https://redirect.github.com/nestjs/schedule/commit/798e2a9)) - Merge pull request [#​2199](https://redirect.github.com/nestjs/schedule/issues/2199) from nestjs/renovate/cimg-node-24.x ([`a05354a`](https://redirect.github.com/nestjs/schedule/commit/a05354a)) - chore(deps): update dependency typescript-eslint to v8.58.1 ([#​2240](https://redirect.github.com/nestjs/schedule/issues/2240)) ([`0367ac1`](https://redirect.github.com/nestjs/schedule/commit/0367ac1)) - chore(deps): update dependency eslint to v10.2.0 ([#​2239](https://redirect.github.com/nestjs/schedule/issues/2239)) ([`fa93e06`](https://redirect.github.com/nestjs/schedule/commit/fa93e06)) - chore(deps): update nest monorepo to v11.1.18 ([#​2238](https://redirect.github.com/nestjs/schedule/issues/2238)) ([`8cd4c02`](https://redirect.github.com/nestjs/schedule/commit/8cd4c02)) - chore(deps): update dependency [@​types/node](https://redirect.github.com/types/node) to v24.12.2 ([#​2237](https://redirect.github.com/nestjs/schedule/issues/2237)) ([`01482df`](https://redirect.github.com/nestjs/schedule/commit/01482df)) - chore(deps): update dependency [@​types/sinon](https://redirect.github.com/types/sinon) to v21.0.1 ([#​2236](https://redirect.github.com/nestjs/schedule/issues/2236)) ([`f05b5bd`](https://redirect.github.com/nestjs/schedule/commit/f05b5bd)) - chore(deps): update dependency ts-jest to v29.4.9 ([#​2235](https://redirect.github.com/nestjs/schedule/issues/2235)) ([`af545e6`](https://redirect.github.com/nestjs/schedule/commit/af545e6)) - chore(deps): update dependency typescript-eslint to v8.58.0 ([#​2233](https://redirect.github.com/nestjs/schedule/issues/2233)) ([`4dad22a`](https://redirect.github.com/nestjs/schedule/commit/4dad22a)) - chore(deps): update node.js to v24.14.1 ([`28db9bc`](https://redirect.github.com/nestjs/schedule/commit/28db9bc)) - chore(deps): update dependency eslint to v10.1.0 ([#​2232](https://redirect.github.com/nestjs/schedule/issues/2232)) ([`413f390`](https://redirect.github.com/nestjs/schedule/commit/413f390)) - chore(deps): update nest monorepo to v11.1.17 ([#​2230](https://redirect.github.com/nestjs/schedule/issues/2230)) ([`46c2bc5`](https://redirect.github.com/nestjs/schedule/commit/46c2bc5)) - chore(deps): update dependency typescript-eslint to v8.57.1 ([#​2231](https://redirect.github.com/nestjs/schedule/issues/2231)) ([`8fd063b`](https://redirect.github.com/nestjs/schedule/commit/8fd063b)) - chore(deps): update dependency sinon to v21.0.3 ([#​2229](https://redirect.github.com/nestjs/schedule/issues/2229)) ([`1671ad9`](https://redirect.github.com/nestjs/schedule/commit/1671ad9)) - chore(deps): update commitlint monorepo to v20.5.0 ([#​2228](https://redirect.github.com/nestjs/schedule/issues/2228)) ([`2ecd2f1`](https://redirect.github.com/nestjs/schedule/commit/2ecd2f1)) - chore(deps): update dependency lint-staged to v16.4.0 ([#​2227](https://redirect.github.com/nestjs/schedule/issues/2227)) ([`aa0de01`](https://redirect.github.com/nestjs/schedule/commit/aa0de01)) - chore(deps): update commitlint monorepo to v20.4.4 ([#​2226](https://redirect.github.com/nestjs/schedule/issues/2226)) ([`75034fe`](https://redirect.github.com/nestjs/schedule/commit/75034fe)) - chore(deps): update dependency lint-staged to v16.3.3 ([#​2225](https://redirect.github.com/nestjs/schedule/issues/2225)) ([`f1c7d31`](https://redirect.github.com/nestjs/schedule/commit/f1c7d31)) - chore(deps): update dependency jest to v30.3.0 ([#​2224](https://redirect.github.com/nestjs/schedule/issues/2224)) ([`1a208d4`](https://redirect.github.com/nestjs/schedule/commit/1a208d4)) - chore(deps): update dependency typescript-eslint to v8.57.0 ([#​2223](https://redirect.github.com/nestjs/schedule/issues/2223)) ([`60dd2c9`](https://redirect.github.com/nestjs/schedule/commit/60dd2c9)) - chore(deps): update dependency eslint to v10.0.3 ([#​2221](https://redirect.github.com/nestjs/schedule/issues/2221)) ([`791b6ba`](https://redirect.github.com/nestjs/schedule/commit/791b6ba)) - chore(deps): update dependency [@​eslint/eslintrc](https://redirect.github.com/eslint/eslintrc) to v3.3.5 ([#​2220](https://redirect.github.com/nestjs/schedule/issues/2220)) ([`0da1ca7`](https://redirect.github.com/nestjs/schedule/commit/0da1ca7)) - chore(deps): update dependency [@​types/node](https://redirect.github.com/types/node) to v24.12.0 ([#​2219](https://redirect.github.com/nestjs/schedule/issues/2219)) ([`934a93e`](https://redirect.github.com/nestjs/schedule/commit/934a93e)) - chore(deps): update nest monorepo to v11.1.16 ([#​2218](https://redirect.github.com/nestjs/schedule/issues/2218)) ([`5f44e9b`](https://redirect.github.com/nestjs/schedule/commit/5f44e9b)) - chore(deps): update dependency sinon to v21.0.2 ([#​2217](https://redirect.github.com/nestjs/schedule/issues/2217)) ([`b807746`](https://redirect.github.com/nestjs/schedule/commit/b807746)) - chore(deps): update dependency lint-staged to v16.3.2 ([#​2216](https://redirect.github.com/nestjs/schedule/issues/2216)) ([`4ca32bd`](https://redirect.github.com/nestjs/schedule/commit/4ca32bd)) - chore(deps): update commitlint monorepo to v20.4.3 ([#​2215](https://redirect.github.com/nestjs/schedule/issues/2215)) ([`d3ceb76`](https://redirect.github.com/nestjs/schedule/commit/d3ceb76)) - chore(deps): update nest monorepo to v11.1.15 ([#​2214](https://redirect.github.com/nestjs/schedule/issues/2214)) ([`b084ffc`](https://redirect.github.com/nestjs/schedule/commit/b084ffc)) - chore(deps): update dependency lint-staged to v16.3.1 ([#​2213](https://redirect.github.com/nestjs/schedule/issues/2213)) ([`8a201b2`](https://redirect.github.com/nestjs/schedule/commit/8a201b2)) - chore(deps): update dependency globals to v17.4.0 ([#​2212](https://redirect.github.com/nestjs/schedule/issues/2212)) ([`6f61793`](https://redirect.github.com/nestjs/schedule/commit/6f61793)) - chore(deps): update dependency lint-staged to v16.3.0 ([#​2211](https://redirect.github.com/nestjs/schedule/issues/2211)) ([`aa9213a`](https://redirect.github.com/nestjs/schedule/commit/aa9213a)) - chore(deps): update dependency [@​types/node](https://redirect.github.com/types/node) to v24.11.0 ([#​2210](https://redirect.github.com/nestjs/schedule/issues/2210)) ([`c70b928`](https://redirect.github.com/nestjs/schedule/commit/c70b928)) - chore(deps): update dependency [@​types/node](https://redirect.github.com/types/node) to v24.10.15 ([#​2209](https://redirect.github.com/nestjs/schedule/issues/2209)) ([`0f596b9`](https://redirect.github.com/nestjs/schedule/commit/0f596b9)) - chore(deps): update dependency [@​types/node](https://redirect.github.com/types/node) to v24.10.14 ([#​2208](https://redirect.github.com/nestjs/schedule/issues/2208)) ([`dac8cca`](https://redirect.github.com/nestjs/schedule/commit/dac8cca)) - chore(deps): update dependency eslint to v10.0.2 ([#​2207](https://redirect.github.com/nestjs/schedule/issues/2207)) ([`abe6fce`](https://redirect.github.com/nestjs/schedule/commit/abe6fce)) - chore(deps): update dependency [@​eslint/eslintrc](https://redirect.github.com/eslint/eslintrc) to v3.3.4 ([#​2206](https://redirect.github.com/nestjs/schedule/issues/2206)) ([`cb32a40`](https://redirect.github.com/nestjs/schedule/commit/cb32a40)) - chore(deps): update dependency typescript-eslint to v8.56.1 ([#​2205](https://redirect.github.com/nestjs/schedule/issues/2205)) ([`88e1e6c`](https://redirect.github.com/nestjs/schedule/commit/88e1e6c)) - chore(deps): update dependency eslint to v10.0.1 ([#​2204](https://redirect.github.com/nestjs/schedule/issues/2204)) ([`55e5406`](https://redirect.github.com/nestjs/schedule/commit/55e5406)) - chore(deps): update commitlint monorepo to v20.4.2 ([#​2203](https://redirect.github.com/nestjs/schedule/issues/2203)) ([`4e55d62`](https://redirect.github.com/nestjs/schedule/commit/4e55d62)) - chore(deps): update nest monorepo to v11.1.14 ([#​2202](https://redirect.github.com/nestjs/schedule/issues/2202)) ([`d23ea1a`](https://redirect.github.com/nestjs/schedule/commit/d23ea1a)) - chore(deps): update eslint monorepo to v10 ([#​2195](https://redirect.github.com/nestjs/schedule/issues/2195)) ([`c2fcbc3`](https://redirect.github.com/nestjs/schedule/commit/c2fcbc3)) - chore(deps): update dependency typescript-eslint to v8.56.0 ([#​2201](https://redirect.github.com/nestjs/schedule/issues/2201)) ([`a93ebc4`](https://redirect.github.com/nestjs/schedule/commit/a93ebc4)) - chore(deps): update dependency rimraf to v6.1.3 ([#​2200](https://redirect.github.com/nestjs/schedule/issues/2200)) ([`1906e80`](https://redirect.github.com/nestjs/schedule/commit/1906e80)) - chore(deps): update dependency [@​types/node](https://redirect.github.com/types/node) to v24.10.13 ([#​2198](https://redirect.github.com/nestjs/schedule/issues/2198)) ([`244cb84`](https://redirect.github.com/nestjs/schedule/commit/244cb84)) - chore(deps): update dependency typescript-eslint to v8.55.0 ([#​2197](https://redirect.github.com/nestjs/schedule/issues/2197)) ([`6b00083`](https://redirect.github.com/nestjs/schedule/commit/6b00083)) - chore(deps): update dependency [@​types/node](https://redirect.github.com/types/node) to v24.10.12 ([#​2196](https://redirect.github.com/nestjs/schedule/issues/2196)) ([`b310c95`](https://redirect.github.com/nestjs/schedule/commit/b310c95)) - chore(deps): update dependency [@​types/node](https://redirect.github.com/types/node) to v24.10.11 ([#​2194](https://redirect.github.com/nestjs/schedule/issues/2194)) ([`d05dca5`](https://redirect.github.com/nestjs/schedule/commit/d05dca5)) </details> <details> <summary>nestjs/swagger (@​nestjs/swagger)</summary> ### [`v11.4.2`](https://redirect.github.com/nestjs/swagger/compare/11.4.1...b0a35f3b20bedc6e6756f476cee182700a199b6e) [Compare Source](https://redirect.github.com/nestjs/swagger/compare/11.4.1...11.4.2) ### [`v11.4.1`](https://redirect.github.com/nestjs/swagger/compare/11.4.0...14bd8f58d6011a1be03e266e39e472be0d4d3795) [Compare Source](https://redirect.github.com/nestjs/swagger/compare/11.4.0...11.4.1) ### [`v11.4.0`](https://redirect.github.com/nestjs/swagger/releases/tag/11.4.0) [Compare Source](https://redirect.github.com/nestjs/swagger/compare/11.3.2...11.4.0) #### 11.4.0 (2026-04-22) ##### Features - [#​3868](https://redirect.github.com/nestjs/swagger/pull/3868) feat(plugin): auto-mark optional [@​Query](https://redirect.github.com/Query) parameters as required: false ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3725](https://redirect.github.com/nestjs/swagger/pull/3725) feat(swagger): add OpenAPI 3.2 hierarchical tags support ([@​apt-bh](https://redirect.github.com/apt-bh)) ##### Bug fixes - [#​3874](https://redirect.github.com/nestjs/swagger/pull/3874) fix(document-builder): accept multi-digit OpenAPI version segments ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3873](https://redirect.github.com/nestjs/swagger/pull/3873) fix(plugin): strip regex delimiters and flags from [@​Matches](https://redirect.github.com/Matches) patterns ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3870](https://redirect.github.com/nestjs/swagger/pull/3870) fix(decorators): forward all OpenAPI parameter fields in [@​ApiHeader](https://redirect.github.com/ApiHeader) ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3872](https://redirect.github.com/nestjs/swagger/pull/3872) fix(plugin): emit [@​throws](https://redirect.github.com/throws) descriptions as proper string literals ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [#​3782](https://redirect.github.com/nestjs/swagger/pull/3782) fix(schema): preserve example metadata for non-body params with named types ([@​maruthang](https://redirect.github.com/maruthang)) - [#​3761](https://redirect.github.com/nestjs/swagger/pull/3761) fix(plugin): support boolean literal types and boolean enum values ([@​lucreiss](https://redirect.github.com/lucreiss)) ##### Enhancements - [#​3865](https://redirect.github.com/nestjs/swagger/pull/3865) feat(schema-object-factory): include class name chain in circular dependency errors ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) ##### Committers: 4 - Lu R A ([@​lucreiss](https://redirect.github.com/lucreiss)) - Maruthan G ([@​maruthang](https://redirect.github.com/maruthang)) - Yogeshwaran C ([@​yogeshwaran-c](https://redirect.github.com/yogeshwaran-c)) - [@​apt-bh](https://redirect.github.com/apt-bh) ### [`v11.3.2`](https://redirect.github.com/nestjs/swagger/compare/11.3.1...b16a1e19a8b7161e13c01c636acf3a187eabbd06) [Compare Source](https://redirect.github.com/nestjs/swagger/compare/11.3.1...11.3.2) ### [`v11.3.1`](https://redirect.github.com/nestjs/swagger/compare/11.3.0...93744af0bb923daeebcc2b674bc7957d778d3953) [Compare Source](https://redirect.github.com/nestjs/swagger/compare/11.3.0...11.3.1) ### [`v11.3.0`](https://redirect.github.com/nestjs/swagger/releases/tag/11.3.0) [Compare Source](https://redirect.github.com/nestjs/swagger/compare/11.2.7...11.3.0) #### 11.3.0 (2026-04-15) ##### Bug fixes - [#​3826](https://redirect.github.com/nestjs/swagger/pull/3826) fix: support nullable field in [@​ApiResponse](https://redirect.github.com/ApiResponse) decorator ([@​Nedunchezhiyan-M](https://redirect.github.com/Nedunchezhiyan-M)) - [#​3784](https://redirect.github.com/nestjs/swagger/pull/3784) fix(schema): include type field when nullable is used with allOf ([@​maruthang](https://redirect.github.com/maruthang)) - [#​3774](https://redirect.github.com/nestjs/swagger/pull/3774) fix enum issue ([@​SupunGeethanjana](https://redirect.github.com/SupunGeethanjana)) - [#​3798](https://redirect.github.com/nestjs/swagger/pull/3798) fix(plugin): normalize workspace package import paths in metadata generator ([@​maruthang](https://redirect.github.com/maruthang)) - [#​3821](https://redirect.github.com/nestjs/swagger/pull/3821) fix(plugin): handle same-file type references in SWC readonly metadata generation ([@​maruthang](https://redirect.github.com/maruthang)) - [#​3822](https://redirect.github.com/nestjs/swagger/pull/3822) fix(type-helpers): eagerly apply plugin metadata properties in mapped type helpers ([@​maruthang](https://redirect.github.com/maruthang)) - [#​3840](https://redirect.github.com/nestjs/swagger/pull/3840) fix: use child class type when re-declaring an inherited [@​ApiProperty](https://redirect.github.com/ApiProperty) ([@​Nedunchezhiyan-M](https://redirect.github.com/Nedunchezhiyan-M)) ##### Enhancements - [#​3449](https://redirect.github.com/nestjs/swagger/pull/3449) feat(api-header): add example property to ApiHeader decorator ([@​leemhoon00](https://redirect.github.com/leemhoon00)) - [#​3787](https://redirect.github.com/nestjs/swagger/pull/3787) feat(decorators): support RegExp instances in [@​ApiProperty](https://redirect.github.com/ApiProperty)({ pattern }) ([@​temrjan](https://redirect.github.com/temrjan)) - [#​3699](https://redirect.github.com/nestjs/swagger/pull/3699) feat(api-body): add support for encoding in ApiBody decorator ([@​lamuertepeluda](https://redirect.github.com/lamuertepeluda)) - [#​3824](https://redirect.github.com/nestjs/swagger/pull/3824) feat: support async patchDocumentOnRequest hook ([@​Nedunchezhiyan-M](https://redirect.github.com/Nedunchezhiyan-M)) - [#​3834](https://redirect.github.com/nestjs/swagger/pull/3834) feat: expose generateSchema utility for programmatic schema access ([@​Nedunchezhiyan-M](https://redirect.github.com/Nedunchezhiyan-M)) - [#​3836](https://redirect.github.com/nestjs/swagger/pull/3836) feat(plugin): add autoFillEnumName option to suppress duplicate enum schemas ([@​Nedunchezhiyan-M](https://redirect.github.com/Nedunchezhiyan-M)) - [#​3837](https://redirect.github.com/nestjs/swagger/pull/3837) feat: merge descriptions when multiple decorators share the same HTTP status code ([@​Nedunchezhiyan-M](https://redirect.github.com/Nedunchezhiyan-M)) - [#​3839](https://redirect.github.com/nestjs/swagger/pull/3839) feat: add excludeDynamicDefaults option to strip runtime-evaluated schema defaults ([@​Nedunchezhiyan-M](https://redirect.github.com/Nedunchezhiyan-M)) - [#​3841](https://redirect.github.com/nestjs/swagger/pull/3841) feat: add DeepPartialType mapped-type helper for recursive optional properties ([@​Nedunchezhiyan-M](https://redirect.github.com/Nedunchezhiyan-M)) ##### Dependencies - [#​3850](https://redirect.github.com/nestjs/swagger/pull/3850) fix(deps): update dependency swagger-ui-dist to v5.32.4 ([@​renovate\[bot\]](https://redirect.github.com/apps/renovate)) ##### Committers: 7 - JongHun Lim ([@​leemhoon00](https://redirect.github.com/leemhoon00)) - Maruthan G ([@​maruthang](https://redirect.github.com/maruthang)) - Rajasekar Janakiraman ([@​rajasekar33](https://redirect.github.com/rajasekar33)) - Supun Geethanjana Jayasinghe ([@​SupunGeethanjana](https://redirect.github.com/SupunGeethanjana)) - Temrjan ([@​temrjan](https://redirect.github.com/temrjan)) - Vito Macchia ([@​lamuertepeluda](https://redirect.github.com/lamuertepeluda)) - [@​Nedunchezhiyan-M](https://redirect.github.com/Nedunchezhiyan-M) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNTYuMSIsInVwZGF0ZWRJblZlciI6IjQzLjE3My42IiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
659072183c | chore: bump deps | ||
|
|
e222f06e94 |
feat(editor): extract chat runtime (#14937)
#### PR Dependency Tree * **PR #14937** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Centralized AI event system and a runtime powering chat sessions and actions. * **Improvements** * Chat UI (composer, messages, toolbar, tabs, panels) now syncs with runtime snapshots for more consistent state. * Improved session/tab lifecycle (create, fork, delete), context embedding status, and history handling. * More reliable send/stop/retry flows, better telemetry scoping, and clearer upgrade/login/insert-template prompts. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
322f2ba986 | fix(server): migrate old tables (#14954) | ||
|
|
f19a922793 |
chore: bump up @opentelemetry/sdk-node version to ^0.217.0 [SECURITY] (#14945)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@opentelemetry/sdk-node](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`^0.215.0` → `^0.217.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-node/0.215.0/0.217.0) |  |  | --- ### Prometheus exporter process crash via malformed HTTP request [CVE-2026-44902](https://nvd.nist.gov/vuln/detail/CVE-2026-44902) / [GHSA-q7rr-3cgh-j5r3](https://redirect.github.com/advisories/GHSA-q7rr-3cgh-j5r3) <details> <summary>More information</summary> #### Details ##### Summary A single malformed HTTP request crashes any Node.js process running the OpenTelemetry JS Prometheus exporter. The metrics endpoint (default `0.0.0.0:9464`) has no error handling around URL parsing, so a request with an invalid URI causes an uncaught `TypeError` that terminates the process. **You are affected by this vulnerability if either of the following apply to your application:** * you directly use `@opentelemetry/exporter-prometheus` in your code through its built-in server. * your `OTEL_METRICS_EXPORTER` environment variable includes `prometheus` **AND** * you use `@opentelemetry/sdk-node` * you use `@opentelemetry/auto-instrumentations-node` via `--require @​opentelemetry/auto-instrumentations-node/register`/`--import @​opentelemetry/auto-instrumentations-node/register` ##### Impact **Denial of service.** Any application using the OpenTelemetry Prometheus exporter’s built-in server can be crashed by a single unauthenticated network packet sent to the metrics port. No authentication, special privileges, or prior access is required. ##### Remediation ##### Update to the fixed version Update `@opentelemetry/exporter-prometheus` and `@opentelemetry/sdk-node` to version **0.217.0** or later. Update `@opentelemetry/auto-instrumentations-node` to version **0.75.0** or later. This release adds proper error handling around the URL constructor, returning an HTTP `400` response on parse failure rather than allowing the exception to propagate and crash the process. ``` npm install @​opentelemetry/exporter-prometheus@latest ``` ##### Do Not Expose the Endpoint to Untrusted Users > [!IMPORTANT] > The following mitigations reduce exposure but do not fully remediate the vulnerability. Any client that *can* reach the metrics endpoint - including your own Prometheus scraper host if compromised - could still trigger the crash. Updating to **0.217.0** is the recommended resolution. If updating is not immediately feasible, restrict access to the metrics endpoint so that it is not reachable by untrusted or unauthenticated network clients. For example: * **Bind to localhost only** by setting the `host` option to `127.0.0.1` when configuring the `PrometheusExporter`, so the port is not exposed on public or shared network interfaces * **Use a firewall or network policy** to restrict access to port `9464` (or whichever port you have configured) to only trusted Prometheus scrape hosts * **Place the endpoint behind a reverse proxy** that filters or validates incoming requests before they reach the exporter ##### Details In `PrometheusExporter.ts`, the `_requestHandler` calls `new URL(request.url, this._baseUrl)` without any error handling. Node's HTTP parser accepts absolute-form URIs (e.g. `http://`) for proxy compatibility, including malformed ones. When `request.url` is `"http://"`, the `URL` constructor throws `TypeError: Invalid URL`. Since there is no try-catch in the handler, the exception propagates as an uncaught exception and crashes the process. The Prometheus metrics endpoint is unauthenticated by design (Prometheus scrapes it) and binds to `0.0.0.0` by default, meaning it is reachable by any network client that can connect to the metrics port. ##### Proof of Concept Start any Node.js application with the Prometheus exporter running on the default port `9464`, then send a single raw TCP packet: ``` echo -ne 'GET http:// HTTP/1.1\r\nHost: localhost\r\n\r\n' | nc localhost 9464 ``` The process crashes immediately with: ``` TypeError: Invalid URL at new URL (...) at PrometheusExporter._requestHandler (...) ``` #### Severity - CVSS Score: 7.5 / 10 (High) - Vector String: `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H` #### References - [https://github.com/open-telemetry/opentelemetry-js/security/advisories/GHSA-q7rr-3cgh-j5r3](https://redirect.github.com/open-telemetry/opentelemetry-js/security/advisories/GHSA-q7rr-3cgh-j5r3) - [https://github.com/advisories/GHSA-q7rr-3cgh-j5r3](https://redirect.github.com/advisories/GHSA-q7rr-3cgh-j5r3) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-q7rr-3cgh-j5r3) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Release Notes <details> <summary>open-telemetry/opentelemetry-js (@​opentelemetry/sdk-node)</summary> ### [`v0.217.0`](https://redirect.github.com/open-telemetry/opentelemetry-js/compare/2400d8389a4469f7a81ccd3be2f0b2c2dd6faaf7...74cde1b674508ccc0ed2601ac43a80ff2d35114c) [Compare Source](https://redirect.github.com/open-telemetry/opentelemetry-js/compare/2400d8389a4469f7a81ccd3be2f0b2c2dd6faaf7...74cde1b674508ccc0ed2601ac43a80ff2d35114c) ### [`v0.216.0`](https://redirect.github.com/open-telemetry/opentelemetry-js/compare/a0476eef3cb973bfcc0c2e41f868dd7b484c2ed8...2400d8389a4469f7a81ccd3be2f0b2c2dd6faaf7) [Compare Source](https://redirect.github.com/open-telemetry/opentelemetry-js/compare/a0476eef3cb973bfcc0c2e41f868dd7b484c2ed8...2400d8389a4469f7a81ccd3be2f0b2c2dd6faaf7) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>v2026.5.13-canary.954 |
||
|
|
a1d150a748 |
fix(server): realtime module not loaded (#14952)
#### PR Dependency Tree * **PR #14952** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Optimized workspace invite link fetching by separating it from general workspace configuration queries for improved performance. * Reorganized transcription-related backend modules to better separate concerns and enable real-time functionality. * **Chores** * Updated generated GraphQL types and iOS query definitions to reflect API changes. [](https://app.coderabbit.ai/change-stack/toeverything/AFFiNE/pull/14952) <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
ac6d0d35af |
chore: bump up @opentelemetry/exporter-prometheus version to ^0.217.0 [SECURITY] (#14944)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@opentelemetry/exporter-prometheus](https://redirect.github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus) ([source](https://redirect.github.com/open-telemetry/opentelemetry-js)) | [`^0.215.0` → `^0.217.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fexporter-prometheus/0.215.0/0.217.0) |  |  | --- ### Prometheus exporter process crash via malformed HTTP request [CVE-2026-44902](https://nvd.nist.gov/vuln/detail/CVE-2026-44902) / [GHSA-q7rr-3cgh-j5r3](https://redirect.github.com/advisories/GHSA-q7rr-3cgh-j5r3) <details> <summary>More information</summary> #### Details ##### Summary A single malformed HTTP request crashes any Node.js process running the OpenTelemetry JS Prometheus exporter. The metrics endpoint (default `0.0.0.0:9464`) has no error handling around URL parsing, so a request with an invalid URI causes an uncaught `TypeError` that terminates the process. **You are affected by this vulnerability if either of the following apply to your application:** * you directly use `@opentelemetry/exporter-prometheus` in your code through its built-in server. * your `OTEL_METRICS_EXPORTER` environment variable includes `prometheus` **AND** * you use `@opentelemetry/sdk-node` * you use `@opentelemetry/auto-instrumentations-node` via `--require @​opentelemetry/auto-instrumentations-node/register`/`--import @​opentelemetry/auto-instrumentations-node/register` ##### Impact **Denial of service.** Any application using the OpenTelemetry Prometheus exporter’s built-in server can be crashed by a single unauthenticated network packet sent to the metrics port. No authentication, special privileges, or prior access is required. ##### Remediation ##### Update to the fixed version Update `@opentelemetry/exporter-prometheus` and `@opentelemetry/sdk-node` to version **0.217.0** or later. Update `@opentelemetry/auto-instrumentations-node` to version **0.75.0** or later. This release adds proper error handling around the URL constructor, returning an HTTP `400` response on parse failure rather than allowing the exception to propagate and crash the process. ``` npm install @​opentelemetry/exporter-prometheus@latest ``` ##### Do Not Expose the Endpoint to Untrusted Users > [!IMPORTANT] > The following mitigations reduce exposure but do not fully remediate the vulnerability. Any client that *can* reach the metrics endpoint - including your own Prometheus scraper host if compromised - could still trigger the crash. Updating to **0.217.0** is the recommended resolution. If updating is not immediately feasible, restrict access to the metrics endpoint so that it is not reachable by untrusted or unauthenticated network clients. For example: * **Bind to localhost only** by setting the `host` option to `127.0.0.1` when configuring the `PrometheusExporter`, so the port is not exposed on public or shared network interfaces * **Use a firewall or network policy** to restrict access to port `9464` (or whichever port you have configured) to only trusted Prometheus scrape hosts * **Place the endpoint behind a reverse proxy** that filters or validates incoming requests before they reach the exporter ##### Details In `PrometheusExporter.ts`, the `_requestHandler` calls `new URL(request.url, this._baseUrl)` without any error handling. Node's HTTP parser accepts absolute-form URIs (e.g. `http://`) for proxy compatibility, including malformed ones. When `request.url` is `"http://"`, the `URL` constructor throws `TypeError: Invalid URL`. Since there is no try-catch in the handler, the exception propagates as an uncaught exception and crashes the process. The Prometheus metrics endpoint is unauthenticated by design (Prometheus scrapes it) and binds to `0.0.0.0` by default, meaning it is reachable by any network client that can connect to the metrics port. ##### Proof of Concept Start any Node.js application with the Prometheus exporter running on the default port `9464`, then send a single raw TCP packet: ``` echo -ne 'GET http:// HTTP/1.1\r\nHost: localhost\r\n\r\n' | nc localhost 9464 ``` The process crashes immediately with: ``` TypeError: Invalid URL at new URL (...) at PrometheusExporter._requestHandler (...) ``` #### Severity - CVSS Score: 7.5 / 10 (High) - Vector String: `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H` #### References - [https://github.com/open-telemetry/opentelemetry-js/security/advisories/GHSA-q7rr-3cgh-j5r3](https://redirect.github.com/open-telemetry/opentelemetry-js/security/advisories/GHSA-q7rr-3cgh-j5r3) - [https://github.com/advisories/GHSA-q7rr-3cgh-j5r3](https://redirect.github.com/advisories/GHSA-q7rr-3cgh-j5r3) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-q7rr-3cgh-j5r3) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Release Notes <details> <summary>open-telemetry/opentelemetry-js (@​opentelemetry/exporter-prometheus)</summary> ### [`v0.217.0`](https://redirect.github.com/open-telemetry/opentelemetry-js/compare/2400d8389a4469f7a81ccd3be2f0b2c2dd6faaf7...74cde1b674508ccc0ed2601ac43a80ff2d35114c) [Compare Source](https://redirect.github.com/open-telemetry/opentelemetry-js/compare/2400d8389a4469f7a81ccd3be2f0b2c2dd6faaf7...74cde1b674508ccc0ed2601ac43a80ff2d35114c) ### [`v0.216.0`](https://redirect.github.com/open-telemetry/opentelemetry-js/compare/a0476eef3cb973bfcc0c2e41f868dd7b484c2ed8...2400d8389a4469f7a81ccd3be2f0b2c2dd6faaf7) [Compare Source](https://redirect.github.com/open-telemetry/opentelemetry-js/compare/a0476eef3cb973bfcc0c2e41f868dd7b484c2ed8...2400d8389a4469f7a81ccd3be2f0b2c2dd6faaf7) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>v2026.5.12-canary.955 |
||
|
|
6b720206c6 |
chore: bump up mermaid version to v11.15.0 [SECURITY] (#14946)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [mermaid](https://redirect.github.com/mermaid-js/mermaid) | [`11.13.0` → `11.15.0`](https://renovatebot.com/diffs/npm/mermaid/11.13.0/11.15.0) |  |  | --- ### Mermaid: Improper sanitization of `classDef` in state diagrams leads to HTML injection [CVE-2026-41149](https://nvd.nist.gov/vuln/detail/CVE-2026-41149) / [GHSA-ghcm-xqfw-q4vr](https://redirect.github.com/advisories/GHSA-ghcm-xqfw-q4vr) <details> <summary>More information</summary> #### Details ##### Impact Under the default configuration, Mermaid state diagram's `classDef` allow DOM injection that escapes the SVG, although `<script>` tags are removed, preventing XSS. ##### Proof-of-concept ``` stateDiagram-v2 classDef xss fill:red</style></svg><style>*{x:x;y:y;overflow:visible!important;contain:none!important;transform:none!important;filter:none!important;clip-path:none!important}</style><div style="x:x;y:y;color:red;font:5em/1 monospace;display:grid;place-items:center;z-index:2147483647;width:100vw;height:100vh;position:fixed;top:0;left:0;background:black">HACKED</div><svg><style>a:b [*] --> A:::xss ``` ##### Patches - [v11.15.0](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0) (see [37ff937f1da2e19f882fd1db01235db4d01f4056](https://redirect.github.com/mermaid-js/mermaid/commit/37ff937f1da2e19f882fd1db01235db4d01f4056)) - [v10.9.6](https://redirect.github.com/mermaid-js/mermaid/releases/tag/v10.9.6) (see [4e2d512bf5bf6f9de1a8f0a48da78dc4d09ac4f3](https://redirect.github.com/mermaid-js/mermaid/commit/4e2d512bf5bf6f9de1a8f0a48da78dc4d09ac4f3)) ##### Workarounds If you can not update to a patched version, setting [`"securityLevel": "sandbox"`](https://mermaid.js.org/config/schema-docs/config.html#securitylevel) will prevent this, by rendering the mermaid diagram in a sandboxed `<iframe>`. ##### Credits Thanks to @​zsxsoft from @​KeenSecurityLab for reporting this vulnerability. #### Severity - CVSS Score: 5.3 / 10 (Medium) - Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L` #### References - [https://github.com/mermaid-js/mermaid/security/advisories/GHSA-ghcm-xqfw-q4vr](https://redirect.github.com/mermaid-js/mermaid/security/advisories/GHSA-ghcm-xqfw-q4vr) - [https://github.com/mermaid-js/mermaid/commit/37ff937f1da2e19f882fd1db01235db4d01f4056](https://redirect.github.com/mermaid-js/mermaid/commit/37ff937f1da2e19f882fd1db01235db4d01f4056) - [https://github.com/mermaid-js/mermaid/commit/4e2d512bf5bf6f9de1a8f0a48da78dc4d09ac4f3](https://redirect.github.com/mermaid-js/mermaid/commit/4e2d512bf5bf6f9de1a8f0a48da78dc4d09ac4f3) - [https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0) - [https://github.com/mermaid-js/mermaid/releases/tag/v10.9.6](https://redirect.github.com/mermaid-js/mermaid/releases/tag/v10.9.6) - [https://mermaid.js.org/config/schema-docs/config.html#securitylevel](https://mermaid.js.org/config/schema-docs/config.html#securitylevel) - [https://github.com/advisories/GHSA-ghcm-xqfw-q4vr](https://redirect.github.com/advisories/GHSA-ghcm-xqfw-q4vr) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-ghcm-xqfw-q4vr) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Mermaid: Improper sanitization of `classDefs` in diagrams leads to CSS injection [CVE-2026-41148](https://nvd.nist.gov/vuln/detail/CVE-2026-41148) / [GHSA-xcj9-5m2h-648r](https://redirect.github.com/advisories/GHSA-xcj9-5m2h-648r) <details> <summary>More information</summary> #### Details ##### Details The state diagram and any other diagram type that routes user-controlled style strings through createCssStyles parser for Mermaid v11.14.0 and earlier captures `classDef` values with an unrestricted regex: ```jison // packages/mermaid/src/diagrams/state/parser/stateDiagram.jison:83 <CLASSDEFID>[^\n]* { this.popState(); return 'CLASSDEF_STYLEOPTS' } ``` The value passes unsanitized through `addStyleClass()` -> `createCssStyles()` -> `style.innerHTML` (mermaidAPI.ts:418). A `}` in the value closes the generated CSS selector, and everything after becomes a new CSS rule on the page. ##### PoC ``` stateDiagram-v2 classDef x }*{ background-image: url("http://media.giphy.com/media/SggILpMXO7Xt6/giphy.gif")} ``` Live demo: <https://mermaid.live/edit#pako:eNpFjzFvgzAQhf-KdVNbEcBgMHhtlkqtOnSJKi8ONsYKBmRMlRTx3-skanvTfbp7996t0IxSAYPZC6_2Rmgn7O4rQ00v5nmvWnRG29OKjqI5aTcug9wZK7RiaHH9A4fO-4kliVXSiFibqbvEzWjvnHxo_fI6vR3e6cGXyX2qTcvhcYMItDMSmHeLisAqZ8UVYeUDQhx8p6ziwEIrhTtx4MNVM4nhcxztrywE0h2wVvRzoGWS_z_8rahBKvcckntgmN5OAFvhDIzUNCZZQXCR5nVaZkUEF2BVFpOcEkoxxhUuyRbB980yjStapKHqoKFlhvPtB7BFZEU> ##### Patches This has been patched in: - [v11.15.0](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0) (see [e9b0f34d8d82a6260077764ee45e1d7d90957a0f](https://redirect.github.com/mermaid-js/mermaid/commit/e9b0f34d8d82a6260077764ee45e1d7d90957a0f)) - [v10.9.6](https://redirect.github.com/mermaid-js/mermaid/releases/tag/v10.9.6) (see [8fead23c59166b7bab6a39eac81acebee2859102](https://redirect.github.com/mermaid-js/mermaid/commit/8fead23c59166b7bab6a39eac81acebee2859102)) ##### Workarounds Setting [`"securityLevel": "sandbox"`](https://mermaid.js.org/config/schema-docs/config.html#securitylevel) will prevent this, by rendering the mermaid diagram in a sandboxed `<iframe>`. ##### Impact Enables page defacement, user tracking via `url()` callbacks, and DOM attribute exfiltration via CSS `:has()` selectors. #### Severity - CVSS Score: 5.3 / 10 (Medium) - Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L` #### References - [https://github.com/mermaid-js/mermaid/security/advisories/GHSA-xcj9-5m2h-648r](https://redirect.github.com/mermaid-js/mermaid/security/advisories/GHSA-xcj9-5m2h-648r) - [https://github.com/mermaid-js/mermaid/commit/8fead23c59166b7bab6a39eac81acebee2859102](https://redirect.github.com/mermaid-js/mermaid/commit/8fead23c59166b7bab6a39eac81acebee2859102) - [https://github.com/mermaid-js/mermaid/commit/e9b0f34d8d82a6260077764ee45e1d7d90957a0f](https://redirect.github.com/mermaid-js/mermaid/commit/e9b0f34d8d82a6260077764ee45e1d7d90957a0f) - [https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0) - [https://github.com/mermaid-js/mermaid/releases/tag/v10.9.6](https://redirect.github.com/mermaid-js/mermaid/releases/tag/v10.9.6) - [https://mermaid.js.org/config/schema-docs/config.html#securitylevel](https://mermaid.js.org/config/schema-docs/config.html#securitylevel) - [https://github.com/advisories/GHSA-xcj9-5m2h-648r](https://redirect.github.com/advisories/GHSA-xcj9-5m2h-648r) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-xcj9-5m2h-648r) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Mermaid: Improper sanitization of configuration leads to CSS injection [CVE-2026-41159](https://nvd.nist.gov/vuln/detail/CVE-2026-41159) / [GHSA-87f9-hvmw-gh4p](https://redirect.github.com/advisories/GHSA-87f9-hvmw-gh4p) <details> <summary>More information</summary> #### Details ##### Impact Mermaid's default configuration allows injecting CSS that applies outside of the Mermaid diagram via the `fontFamily`, `themeCSS`, and `altFontFamily` configuration options. Live demo: [mermaid.live](https://mermaid.live/edit#pako:eNpNjktLxDAUhf9KvFBR6JS-60QQfODKlUvJ5k6TtsEmKTHFGUP-u-mI6Nmdy3fOPR56wwVQSBIvtXSUeAaD0e4ZlZxPDChhcLxFfwiEauOuLq_9Afv30ZpVczpaITS5kGox1qF2gfSeBwYhJAnThAyz-ewntI68vG5-0z3Z7e7IA9OQwmglB-rsKlJQwircLPgNZeAmocTPAi4GXGfHgOkQYwvqN2PUbzJuGSegA84f0a0LRyeeJI4W_xChubCPcbQD2pwbgHo4Aq2aKmvbqq3zoiu7pizqFE6RybN9VFfFY1HWXRVS-Dr_zLObrt7_V_gGGXZlGg) Example code: ``` %%{init: {"fontFamily": "x;a{b} :not(&){background:green !important} c{d}"}}%% flowchart LR A --> B ``` The injected CSS exploits stylis's `&` (scope reference) handling. `:not(&)` escapes the `#mermaid-xxx` automatic scoping, applying styles to all page elements. Global at-rules (`@font-face`, `@keyframes`, `@counter-style`) are also injectable as stylis hoists them to top level. This allows page defacement and DOM attribute exfiltration via CSS `:has()` selectors. ##### Patches - [v11.15.0](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0) (see [64769738d5b59211e1decb471ffbaca8afec51aa](https://redirect.github.com/mermaid-js/mermaid/commit/64769738d5b59211e1decb471ffbaca8afec51aa)) - [v10.9.6](https://redirect.github.com/mermaid-js/mermaid/releases/tag/v10.9.6) (see [a9d9f0d8eb790349121508688cd338253fd80d76](https://redirect.github.com/mermaid-js/mermaid/commit/a9d9f0d8eb790349121508688cd338253fd80d76)) ##### Workarounds If you can't upgrade mermaid, you can set the [`secure`](https://mermaid.js.org/config/schema-docs/config.html#secure) config value in the mermaid config to avoid allowing diagrams to modify `fontFamily`, `themeCSS`, `altFontFamily`, and `themeVariables`. Setting [`"securityLevel": "sandbox"`](https://mermaid.js.org/config/schema-docs/config.html#securitylevel) will also prevent this. ##### Credits Reported by @​zsxsoft on behalf of @​KeenSecurityLab #### Severity - CVSS Score: 5.3 / 10 (Medium) - Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L` #### References - [https://github.com/mermaid-js/mermaid/security/advisories/GHSA-87f9-hvmw-gh4p](https://redirect.github.com/mermaid-js/mermaid/security/advisories/GHSA-87f9-hvmw-gh4p) - [https://github.com/mermaid-js/mermaid/commit/64769738d5b59211e1decb471ffbaca8afec51aa](https://redirect.github.com/mermaid-js/mermaid/commit/64769738d5b59211e1decb471ffbaca8afec51aa) - [https://github.com/mermaid-js/mermaid/commit/a9d9f0d8eb790349121508688cd338253fd80d76](https://redirect.github.com/mermaid-js/mermaid/commit/a9d9f0d8eb790349121508688cd338253fd80d76) - [https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0) - [https://github.com/mermaid-js/mermaid/releases/tag/v10.9.6](https://redirect.github.com/mermaid-js/mermaid/releases/tag/v10.9.6) - [https://github.com/advisories/GHSA-87f9-hvmw-gh4p](https://redirect.github.com/advisories/GHSA-87f9-hvmw-gh4p) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-87f9-hvmw-gh4p) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Mermaid Gantt Charts are vulnerable to an Infinite Loop DoS [CVE-2026-41150](https://nvd.nist.gov/vuln/detail/CVE-2026-41150) / [GHSA-6m6c-36f7-fhxh](https://redirect.github.com/advisories/GHSA-6m6c-36f7-fhxh) <details> <summary>More information</summary> #### Details ##### Impact Mermaid v11.14.0 and earlier are vulnerable to a denial-of-service attack when rendering gantt charts, if they use the [`excludes` attribute](https://mermaid.js.org/syntax/gantt.html?#excludes) to exclude all dates. Example: ``` gantt excludes monday,tuesday,wednesday,thursday,friday,saturday,sunday DoS :2025-01-01, 1d ``` `mermaid.parse` is unaffected, unless you then call the `ganttDb.getTasks()` (which is called when rendering a diagram). ##### Patches This has been patched in: - [v11.15.0](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0) (see [faafb5d49106dd32c367f3882505f2dd625aa30e](https://redirect.github.com/mermaid-js/mermaid/commit/faafb5d49106dd32c367f3882505f2dd625aa30e)) - [v10.9.6](https://redirect.github.com/mermaid-js/mermaid/releases/tag/v10.9.6) (see [a59ea56174712ee5430dfd5bc877cb5151f501a6](https://redirect.github.com/mermaid-js/mermaid/commit/a59ea56174712ee5430dfd5bc877cb5151f501a6)) ##### Workarounds There are no workarounds available without updating to a newer version of mermaid. #### Severity - CVSS Score: 5.3 / 10 (Medium) - Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:L` #### References - [https://github.com/mermaid-js/mermaid/security/advisories/GHSA-6m6c-36f7-fhxh](https://redirect.github.com/mermaid-js/mermaid/security/advisories/GHSA-6m6c-36f7-fhxh) - [https://github.com/mermaid-js/mermaid/commit/a59ea56174712ee5430dfd5bc877cb5151f501a6](https://redirect.github.com/mermaid-js/mermaid/commit/a59ea56174712ee5430dfd5bc877cb5151f501a6) - [https://github.com/mermaid-js/mermaid/commit/faafb5d49106dd32c367f3882505f2dd625aa30e](https://redirect.github.com/mermaid-js/mermaid/commit/faafb5d49106dd32c367f3882505f2dd625aa30e) - [https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0) - [https://github.com/mermaid-js/mermaid/releases/tag/v10.9.6](https://redirect.github.com/mermaid-js/mermaid/releases/tag/v10.9.6) - [https://github.com/advisories/GHSA-6m6c-36f7-fhxh](https://redirect.github.com/advisories/GHSA-6m6c-36f7-fhxh) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-6m6c-36f7-fhxh) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Release Notes <details> <summary>mermaid-js/mermaid (mermaid)</summary> ### [`v11.15.0`](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.15.0) [Compare Source](https://redirect.github.com/mermaid-js/mermaid/compare/mermaid@11.14.0...mermaid@11.15.0) ##### Minor Changes - [#​7174](https://redirect.github.com/mermaid-js/mermaid/pull/7174) [`0aca217`](https://redirect.github.com/mermaid-js/mermaid/commit/0aca21739c0d1fcaaa206e04a6cd574ebc415483) Thanks [@​milesspencer35](https://redirect.github.com/milesspencer35)! - feat(sequence): Add support for decimal start and increment values in the `autonumber` directive - [#​7512](https://redirect.github.com/mermaid-js/mermaid/pull/7512) [`8e17492`](https://redirect.github.com/mermaid-js/mermaid/commit/8e17492f7365ba50896382feb69a23efd9d8a22d) Thanks [@​aruncveli](https://redirect.github.com/aruncveli)! - feat(flowchart): add datastore shape In Data flow diagrams, a datastore/warehouse/file/database is used to represent data persistence. It is denoted by a rectangle with only top and bottom borders, and can be used in flowcharts with `A@{ shape: datastore, label: "Datastore" }`. - [#​6440](https://redirect.github.com/mermaid-js/mermaid/pull/6440) [`9ad8dde`](https://redirect.github.com/mermaid-js/mermaid/commit/9ad8dde6d049adde85d8ed2d476c09b5820f3f4b) Thanks [@​yordis](https://redirect.github.com/yordis), [@​lgazo](https://redirect.github.com/lgazo)! - feat: add Event Modeling diagram - [#​7707](https://redirect.github.com/mermaid-js/mermaid/pull/7707) [`27db774`](https://redirect.github.com/mermaid-js/mermaid/commit/27db774627be1cee881961dfd0d2cb21cd01b79d) Thanks [@​txmxthy](https://redirect.github.com/txmxthy)! - feat(architecture): expose four fcose layout knobs for `architecture-beta` diagrams (`nodeSeparation`, `idealEdgeLengthMultiplier`, `edgeElasticity`, `numIter`) so authors can tune layout density and spread overlapping siblings without changing diagram source - [#​7604](https://redirect.github.com/mermaid-js/mermaid/pull/7604) [`bf9502f`](https://redirect.github.com/mermaid-js/mermaid/commit/bf9502fb6012a4b724679b401ac928f5ee55161c) Thanks [@​M-a-c](https://redirect.github.com/M-a-c)! - feat(class): add nested namespace support for class diagrams via dot notation and syntactic nesting If you have namespaces in class diagrams that use `.`s already and want to render them without nesting (≤v11.14.0 behaviour), you can use set `class.hierarchicalNamespaces=false` in your mermaid config: ```yaml config: class: hierarchicalNamespaces: false ``` - [#​7272](https://redirect.github.com/mermaid-js/mermaid/pull/7272) [`88cdd3d`](https://redirect.github.com/mermaid-js/mermaid/commit/88cdd3dc0aab9577174561b04e14760c565a232b) Thanks [@​xinbenlv](https://redirect.github.com/xinbenlv)! - feat(sankey): add outlined label style, configurable nodeWidth/nodePadding, and custom node colors ##### Patch Changes - [#​7737](https://redirect.github.com/mermaid-js/mermaid/pull/7737) [`e9b0f34`](https://redirect.github.com/mermaid-js/mermaid/commit/e9b0f34d8d82a6260077764ee45e1d7d90957a0f) Thanks [@​ashishjain0512](https://redirect.github.com/ashishjain0512)! - fix: prevent unbalanced CSS styles in classDefs - [#​7737](https://redirect.github.com/mermaid-js/mermaid/pull/7737) [`37ff937`](https://redirect.github.com/mermaid-js/mermaid/commit/37ff937f1da2e19f882fd1db01235db4d01f4056) Thanks [@​ashishjain0512](https://redirect.github.com/ashishjain0512)! - fix: create CSS styles using the CSSOM This removes some invalid CSS and normalizes some CSS formatting. - [#​7508](https://redirect.github.com/mermaid-js/mermaid/pull/7508) [`bfe60cc`](https://redirect.github.com/mermaid-js/mermaid/commit/bfe60cc67b9a6dec64f9161f58e4d24a06c42b65) Thanks [@​biiab](https://redirect.github.com/biiab)! - fix(stateDiagram): `end note` now only closes a note when used on a new line - [#​7737](https://redirect.github.com/mermaid-js/mermaid/pull/7737) [`faafb5d`](https://redirect.github.com/mermaid-js/mermaid/commit/faafb5d49106dd32c367f3882505f2dd625aa30e) Thanks [@​ashishjain0512](https://redirect.github.com/ashishjain0512)! - fix(gantt): add iteration limit for `excludes` field - [#​7737](https://redirect.github.com/mermaid-js/mermaid/pull/7737) [`65f8be2`](https://redirect.github.com/mermaid-js/mermaid/commit/65f8be2a42faf869b811469571983cba7eeeca99) Thanks [@​ashishjain0512](https://redirect.github.com/ashishjain0512)! - fix: disallow some CSS at-rules in custom CSS - [#​7726](https://redirect.github.com/mermaid-js/mermaid/pull/7726) [`1502f32`](https://redirect.github.com/mermaid-js/mermaid/commit/1502f32f3c5fb944925b0c527fbbde3c4f041824) Thanks [@​aloisklink](https://redirect.github.com/aloisklink)! - fix(wardley): fix unnecessary sanitization of text - [#​7578](https://redirect.github.com/mermaid-js/mermaid/pull/7578) [`1f98db8`](https://redirect.github.com/mermaid-js/mermaid/commit/1f98db8e326299ac97a2fa60abfd509d8f5f16e2) Thanks [@​Gaston202](https://redirect.github.com/Gaston202)! - fix(class): self-referential class multiplicity labels no longer rendered multiple times Fixes [#​7560](https://redirect.github.com/mermaid-js/mermaid/issues/7560). Resolves an issue where cardinality labels on self-referential class relationships were rendered three times due to edge splitting in the dagre layout. The fix ensures that each sub-edge only carries its relevant label positions. - [#​7592](https://redirect.github.com/mermaid-js/mermaid/pull/7592) [`2343e38`](https://redirect.github.com/mermaid-js/mermaid/commit/2343e38498a3b31f8ce5e79f1f009e0b56fbe086) Thanks [@​knsv-bot](https://redirect.github.com/knsv-bot)! - fix(sequence): add background box behind alt/else section title labels in sequence diagrams - [#​7589](https://redirect.github.com/mermaid-js/mermaid/pull/7589) [`7fb9509`](https://redirect.github.com/mermaid-js/mermaid/commit/7fb9509b8b5cb1dc48519dc60cf6cdc6afba0462) Thanks [@​NYCU-Chung](https://redirect.github.com/NYCU-Chung)! - fix(block): prevent column widths from shrinking when mixing different column spans - [#​7632](https://redirect.github.com/mermaid-js/mermaid/pull/7632) [`3f9e0f1`](https://redirect.github.com/mermaid-js/mermaid/commit/3f9e0f15bedc1e2c71ddb6b34192d1a21124cfc2) Thanks [@​ekiauhce](https://redirect.github.com/ekiauhce)! - fix(sequence): correct messageAlign label position for right-to-left arrows in sequence diagrams - [#​7642](https://redirect.github.com/mermaid-js/mermaid/pull/7642) [`7a8fb85`](https://redirect.github.com/mermaid-js/mermaid/commit/7a8fb8532c57ecc55b3711454ab0e505a4291445) Thanks [@​tractorjuice](https://redirect.github.com/tractorjuice)! - fix(wardley): allow hyphens in unquoted component names Multi-word names containing hyphens — e.g. `real-time processing`, `end-user`, `on-call engineer` — now parse without quoting, bringing the grammar in line with the OnlineWardleyMaps (OWM) convention. `A->B` (no-space arrow) still tokenises correctly. - [#​7523](https://redirect.github.com/mermaid-js/mermaid/pull/7523) [`5144ed4`](https://redirect.github.com/mermaid-js/mermaid/commit/5144ed4b138ae0f4836bab4c163c575e0a767dd3) Thanks [@​darshanr0107](https://redirect.github.com/darshanr0107)! - fix(block): Arrow blocks in block-beta diagrams not spanning the specified number of columns when using `:n` syntax. - [#​7262](https://redirect.github.com/mermaid-js/mermaid/pull/7262) [`13d9bfa`](https://redirect.github.com/mermaid-js/mermaid/commit/13d9bfa4748e845a9eec7d6265ba496d2278f26e) Thanks [@​darshanr0107](https://redirect.github.com/darshanr0107)! - fix(block): Ensure block diagram hexagon blocks respect column spanning syntax - [#​7684](https://redirect.github.com/mermaid-js/mermaid/pull/7684) [`e14bb88`](https://redirect.github.com/mermaid-js/mermaid/commit/e14bb88bdb940124cdb0a107025653bf93745c99) Thanks [@​aloisklink](https://redirect.github.com/aloisklink)! - fix: loosen `uuid` dependency range to allow v14 Mermaid does not use any of the vulnerable code in CVE-2026-41907, but this allows users to silence any `npm audit` alerts on it. - [#​7633](https://redirect.github.com/mermaid-js/mermaid/pull/7633) [`9217c0d`](https://redirect.github.com/mermaid-js/mermaid/commit/9217c0d8b221b423af80e420b7adae901acf6c8c) Thanks [@​Felix-Garci](https://redirect.github.com/Felix-Garci)! - fix(block): add support for all arrow types in block diagrams - [#​7587](https://redirect.github.com/mermaid-js/mermaid/pull/7587) [`5e7eb62`](https://redirect.github.com/mermaid-js/mermaid/commit/5e7eb62e3aba6b5df559f5c839a868e5b7f40e72) Thanks [@​MaddyGuthridge](https://redirect.github.com/MaddyGuthridge)! - chore: drop lodash-es in favour of es-toolkit - [#​7693](https://redirect.github.com/mermaid-js/mermaid/pull/7693) [`afaf306`](https://redirect.github.com/mermaid-js/mermaid/commit/afaf3062381d115d66744413151b642f124dd9ba) Thanks [@​dull-bird](https://redirect.github.com/dull-bird)! - fix(quadrant-chart): allow CJK, emoji, Latin-1 accented characters, and other non-ASCII text in unquoted axis/quadrant/point labels. Previously the lexer only matched ASCII `[A-Za-z]+` for text tokens, even though the grammar referenced `UNICODE_TEXT`. Bare Chinese, Japanese, Korean, emoji, and accented Latin characters in labels caused a parse error. Added a `[^\x00-\x7F]+` lexer rule to emit `UNICODE_TEXT` and included it in the `alphaNumToken` grammar rule. Fixes [#​7120](https://redirect.github.com/mermaid-js/mermaid/issues/7120). - [#​7737](https://redirect.github.com/mermaid-js/mermaid/pull/7737) [`4755553`](https://redirect.github.com/mermaid-js/mermaid/commit/4755553d5fb6d1217809e43ffb8fc54d6a73e482) Thanks [@​ashishjain0512](https://redirect.github.com/ashishjain0512)! - fix: improve D3 types for mermaidAPI funcs - [#​7737](https://redirect.github.com/mermaid-js/mermaid/pull/7737) [`6476973`](https://redirect.github.com/mermaid-js/mermaid/commit/64769738d5b59211e1decb471ffbaca8afec51aa) Thanks [@​ashishjain0512](https://redirect.github.com/ashishjain0512)! - fix: handle `&` when namespacing CSS rules - [#​7520](https://redirect.github.com/mermaid-js/mermaid/pull/7520) [`8c1a0c1`](https://redirect.github.com/mermaid-js/mermaid/commit/8c1a0c1fd19587c6772d6966fe9d217e5cd1356c) Thanks [@​RodrigojndSantos](https://redirect.github.com/RodrigojndSantos)! - fix(stateDiagram): comments starting with one `%` are no longer treated as comments Switch to using two `%%` if you want to write a comment. - Updated dependencies \[[`7a8fb85`](https://redirect.github.com/mermaid-js/mermaid/commit/7a8fb8532c57ecc55b3711454ab0e505a4291445), [`675a64c`](https://redirect.github.com/mermaid-js/mermaid/commit/675a64ca0e3cde8728ca715991623c3fc055ce88)]: - [@​mermaid-js/parser](https://redirect.github.com/mermaid-js/parser)@​1.1.1 ### [`v11.14.0`](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4011.14.0) [Compare Source](https://redirect.github.com/mermaid-js/mermaid/compare/mermaid@11.13.0...mermaid@11.14.0) Thanks to our awesome mermaid community that contributed to this release: [@​ashishjain0512](https://redirect.github.com/ashishjain0512), [@​tractorjuice](https://redirect.github.com/tractorjuice), [@​autofix-ci\[bot\]](https://redirect.github.com/autofix-ci%5Bbot%5D), [@​aloisklink](https://redirect.github.com/aloisklink), [@​knsv](https://redirect.github.com/knsv), [@​kibanana](https://redirect.github.com/kibanana), [@​chandershekhar22](https://redirect.github.com/chandershekhar22), [@​khalil](https://redirect.github.com/khalil), [@​ytatsuno](https://redirect.github.com/ytatsuno), [@​sidharthv96](https://redirect.github.com/sidharthv96), [@​github-actions\[bot\]](https://redirect.github.com/github-actions%5Bbot%5D), [@​dripcoding](https://redirect.github.com/dripcoding), [@​knsv-bot](https://redirect.github.com/knsv-bot), [@​jeroensmink98](https://redirect.github.com/jeroensmink98), [@​Alex9583](https://redirect.github.com/Alex9583), [@​GhassenS](https://redirect.github.com/GhassenS), [@​omkarht](https://redirect.github.com/omkarht), [@​darshanr0107](https://redirect.github.com/darshanr0107), [@​leentaylor](https://redirect.github.com/leentaylor), [@​lee-treehouse](https://redirect.github.com/lee-treehouse), [@​veeceey](https://redirect.github.com/veeceey), [@​turntrout](https://redirect.github.com/turntrout), [@​Mermaid-Chart](https://redirect.github.com/Mermaid-Chart), [@​BambioGaming](https://redirect.github.com/BambioGaming), Claude ### Releases #### [@​mermaid-js/examples](https://redirect.github.com/mermaid-js/examples)@​1.2.0 ##### Minor Changes - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - add new TreeView diagram #### mermaid\@​11.14.0 ##### Minor Changes - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - Add Wardley Maps diagram type (beta) Adds Wardley Maps as a new diagram type to Mermaid (available as `wardley-beta`). Wardley Maps are visual representations of business strategy that help map value chains and component evolution. Features: - Component positioning with \[visibility, evolution] coordinates (OWM format) - Anchors for users/customers - Multiple link types: dependencies, flows, labeled links - Evolution arrows and trend indicators - Custom evolution stages with optional dual labels - Custom stage widths using [@​boundary](https://redirect.github.com/boundary) notation - Pipeline components with visibility inheritance - Annotations, notes, and visual elements - Source strategy markers: build, buy, outsource, market - Inertia indicators - Theme integration Implementation includes parser, D3.js renderer, unit tests, E2E tests, and comprehensive documentation. - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look styling for state diagrams - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look support for sequence diagrams with drop shadows, and enhanced styling - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: add `randomize` config option for architecture diagrams, defaulting to `false` for deterministic layout - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: Add option to change timeline direction - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - Fix duplicate SVG element IDs when rendering multiple diagrams on the same page. Internal element IDs (nodes, edges, markers, clusters) are now prefixed with the diagram's SVG element ID across all diagram types. Custom CSS or JS using exact ID selectors like `#arrowhead` should use attribute-ending selectors like `[id$="-arrowhead"]` instead. - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look styling for ER diagrams - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look styling for requirement diagrams - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: add theme support for data label colour in xy chart - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look styling for mindmap diagrams - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look for mermaid flowchart diagrams - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look and themes for class diagram - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: add showDataLabelOutsideBar option for xy chart - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look support for timeline diagram with drop shadows, additoinal redux themes and enhanced styling - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look and themes for gitGraph diagram - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - add new TreeView diagram ##### Patch Changes - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - add link to ishikawa diagram on mermaid.js.org - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - docs: document valid duration token formats in gantt.md - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: ER diagram parsing when using "1" as entity identifier on right side The parser was incorrectly tokenizing the second "1" in patterns like `a many to 1 1:` because the lookahead rule only checked for alphabetic characters after whitespace, not digits. Added a new lookahead pattern `"1"(?=\s+[0-9])` to correctly identify the cardinality alias before a numeric entity name. Fixes [#​7472](https://redirect.github.com/mermaid-js/mermaid/issues/7472) - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: scope cytoscape label style mapping to edges with labels to prevent console warnings - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: support inline annotation syntax in class diagrams (class Shape <<interface>>) - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: Align branch label background with text for multi-line labels in LR GitGraph layout - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: preserve cause hierarchy when ishikawa effect is indented more than causes - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - refactor: remove unused createGraphWithElements function and add regression test for open edge arrowheads - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: Prevent long pie chart titles from being clipped by expanding the viewBox - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: prevent sequence diagram hang when "as" is used without a trailing space in participant declarations - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: warn when `style` statement targets a non-existent node in flowcharts - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: group state diagram SVG children under single root <g> element - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: Allow :::className syntax inside composite state blocks - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) Thanks [@​aloisklink](https://redirect.github.com/aloisklink), [@​BambioGaming](https://redirect.github.com/BambioGaming)! - fix: prevent escaping `<` and `&` when `htmlLabels: false` - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: treemap title and labels use theme-aware colors for dark backgrounds - Updated dependencies \[[`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519)]: - [@​mermaid-js/parser](https://redirect.github.com/mermaid-js/parser)@​1.1.0 #### [@​mermaid-js/parser](https://redirect.github.com/mermaid-js/parser)@​1.1.0 ##### Minor Changes - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - add new TreeView diagram #### [@​mermaid-js/tiny](https://redirect.github.com/mermaid-js/tiny)@​11.14.0 ##### Minor Changes - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - Add Wardley Maps diagram type (beta) Adds Wardley Maps as a new diagram type to Mermaid (available as `wardley-beta`). Wardley Maps are visual representations of business strategy that help map value chains and component evolution. Features: - Component positioning with \[visibility, evolution] coordinates (OWM format) - Anchors for users/customers - Multiple link types: dependencies, flows, labeled links - Evolution arrows and trend indicators - Custom evolution stages with optional dual labels - Custom stage widths using [@​boundary](https://redirect.github.com/boundary) notation - Pipeline components with visibility inheritance - Annotations, notes, and visual elements - Source strategy markers: build, buy, outsource, market - Inertia indicators - Theme integration Implementation includes parser, D3.js renderer, unit tests, E2E tests, and comprehensive documentation. - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look styling for state diagrams - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look support for sequence diagrams with drop shadows, and enhanced styling - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: add `randomize` config option for architecture diagrams, defaulting to `false` for deterministic layout - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: Add option to change timeline direction - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - Fix duplicate SVG element IDs when rendering multiple diagrams on the same page. Internal element IDs (nodes, edges, markers, clusters) are now prefixed with the diagram's SVG element ID across all diagram types. Custom CSS or JS using exact ID selectors like `#arrowhead` should use attribute-ending selectors like `[id$="-arrowhead"]` instead. - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look styling for ER diagrams - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look styling for requirement diagrams - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: add theme support for data label colour in xy chart - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look styling for mindmap diagrams - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look for mermaid flowchart diagrams - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look and themes for class diagram - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: add showDataLabelOutsideBar option for xy chart - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look support for timeline diagram with drop shadows, additoinal redux themes and enhanced styling - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - feat: implement neo look and themes for gitGraph diagram - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - add new TreeView diagram ##### Patch Changes - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - add link to ishikawa diagram on mermaid.js.org - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - docs: document valid duration token formats in gantt.md - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: ER diagram parsing when using "1" as entity identifier on right side The parser was incorrectly tokenizing the second "1" in patterns like `a many to 1 1:` because the lookahead rule only checked for alphabetic characters after whitespace, not digits. Added a new lookahead pattern `"1"(?=\s+[0-9])` to correctly identify the cardinality alias before a numeric entity name. Fixes [#​7472](https://redirect.github.com/mermaid-js/mermaid/issues/7472) - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: scope cytoscape label style mapping to edges with labels to prevent console warnings - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: support inline annotation syntax in class diagrams (class Shape <<interface>>) - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: Align branch label background with text for multi-line labels in LR GitGraph layout - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: preserve cause hierarchy when ishikawa effect is indented more than causes - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - refactor: remove unused createGraphWithElements function and add regression test for open edge arrowheads - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: Prevent long pie chart titles from being clipped by expanding the viewBox - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: prevent sequence diagram hang when "as" is used without a trailing space in participant declarations - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: warn when `style` statement targets a non-existent node in flowcharts - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: group state diagram SVG children under single root <g> element - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: Allow :::className syntax inside composite state blocks - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) Thanks [@​aloisklink](https://redirect.github.com/aloisklink), [@​BambioGaming](https://redirect.github.com/BambioGaming)! - fix: prevent escaping `<` and `&` when `htmlLabels: false` - [#​7526](https://redirect.github.com/mermaid-js/mermaid/pull/7526) [`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519) - fix: treemap title and labels use theme-aware colors for dark backgrounds - Updated dependencies \[[`efe218a`](https://redirect.github.com/mermaid-js/mermaid/commit/efe218a47fb5a4c2bd5489b48ce69213b141e519)]: - [@​mermaid-js/parser](https://redirect.github.com/mermaid-js/parser)@​1.1.0 </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
76d57aa389 |
feat(editor): allow date picker to navigate back to year 1000 (#14942)
Fixes #14935 ## Summary The date picker had a hardcoded `_minYear = 1970` in [`date-picker.ts`](blocksuite/affine/components/src/date-picker/date-picker.ts), which prevented users from selecting dates earlier than 1970. This blocked legitimate use cases like historical and genealogical research (see the reporter's comment on #14935). ## Fix Lower the date picker's `_minYear` from `1970` to `1000`. The underlying storage is just a `zod.number()` (Unix timestamp in ms), which supports negative values, so no data-layer or backend changes are required — this is a UI-only constraint relaxation. ## Demo <img width="2044" height="1250" alt="image" src="https://github.com/user-attachments/assets/4b25b333-89c4-48e6-9f91-81781d680200" /> ## Test plan - [x] Insert a database in a doc → add a Date column - [x] Click a date cell → open the picker → click the year label → navigate back through decades - [x] Confirm the calendar reaches years well before 1970 (verified at May 1805) - [x] Confirm the calendar correctly renders weekdays for historical dates - [x] Confirm picking a modern date still works as before <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Date picker now allows selecting dates from year 1000 onward, expanding historical date coverage. * **Bug Fixes** * Navigation (month switches and keyboard arrows) now keeps the selection cursor within the allowed year range, preventing out-of-range jumps. [](https://app.coderabbit.ai/change-stack/toeverything/AFFiNE/pull/14942) <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
db0ff0a9df |
feat(core): migrate more pull to realtime (#14936)
#### PR Dependency Tree * **PR #14936** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Consolidated realtime subscription patterns for consistent, more reliable live updates across comments, notifications, transcription tasks, and embedding progress. * Standardized realtime room naming and subscription keys for deterministic delivery. * **New Features** * Introduced a reusable live-query mechanism powering realtime snapshot + event workflows used by comments, notifications, transcript tasks, and embedding progress. * **Tests** * Added tests covering live-query behavior and deterministic subscription key generation. [](https://app.coderabbit.ai/change-stack/toeverything/AFFiNE/pull/14936) <!-- end of auto-generated comment: release notes by coderabbit.ai -->v2026.5.11-canary.1015 |
||
|
|
8cf00738c2 |
feat(server): realtime notification & task status (#14934)
#### PR Dependency Tree * **PR #14934** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Full realtime platform added: live notifications, comments, embedding progress, and transcription task updates via realtime subscriptions. * **Chores** * Frontend switched from polling/GraphQL queries to realtime channels; legacy query fields marked deprecated and client libs updated to use realtime APIs. [](https://app.coderabbit.ai/change-stack/toeverything/AFFiNE/pull/14934) <!-- end of auto-generated comment: release notes by coderabbit.ai --> #### PR Dependency Tree * **PR #14934** 👈 * **PR #14936** This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) |
||
|
|
417d31cabe |
fix(core): ui state (#14933)
#### PR Dependency Tree * **PR #14933** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added draft tab option to AI chat interface * Introduced "Current document" session history view in chat history popover * Added control to show/hide "New Chat" button * **Improvements** * Enhanced chat history preservation when switching between sessions * Prevented duplicate session creation requests * Improved message handling during session transitions and generation [](https://app.coderabbit.ai/change-stack/toeverything/AFFiNE/pull/14933) <!-- end of auto-generated comment: release notes by coderabbit.ai -->v2026.5.10-canary.931 |
||
|
|
fcc45a3f44 |
fix(server): caldav compatibility (#14930)
fix #14411 fix #14909 Some CalDAV servers do not implement standard responses; add compatibility for these servers. #### PR Dependency Tree * **PR #14930** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved CalDAV discovery error handling to gracefully fall back when the server returns certain error statuses. * **New Features** * CalDAV account linking now returns the number of discovered calendars associated with the account. <!-- end of auto-generated comment: release notes by coderabbit.ai -->v2026.5.9-canary.931 |
||
|
|
bcbde16c04 | feat(server): native safe fetch (#14931) | ||
|
|
32a94d68dc | chore: add utils | ||
|
|
5813e7dd77 | chore: update i18n v2026.5.7-canary.951 | ||
|
|
ac37d07e74 |
feat(editor): add Bear backup import and markdown zip folder hierarchy (#14599)
## Summary
- Add Bear `.bear2bk` backup importer (TextBundle-based zip format)
- Enhance markdown zip import to preserve folder structure from zip
paths
- Add colored highlight (`<mark data-color="...">`) support to HTML
adapter
### Bear Import Details
Bear backups are zip archives of TextBundle directories. The importer:
- Parses Bear-specific markdown (highlights `==text==`, callouts `>
[!NOTE]`, inline tags `#tag`)
- Extracts creation/modification dates from `info.json` metadata
- Filters out trashed notes
- Converts Bear tags to AFFiNE tags (consolidated by root segment)
- Builds folder hierarchy from nested tag paths (e.g.,
`#work/projects/alpha`)
- Uses JSZip for lazy decompression to handle large backups without OOM
### Markdown Zip Folder Hierarchy
`importMarkdownZip` now returns `{ docIds, folderHierarchy }` instead of
just `docIds[]`, enabling the UI to recreate the zip's directory
structure as AFFiNE folders.
## Related Issues
- Implements the TextBundle-based import approach suggested in #14115 /
Discussion #14142
- Addresses folder structure preservation requested in #10003
- Partially addresses frontmatter metadata import from #11286
## Test Plan
- [ ] Import a Bear `.bear2bk` backup file via the import dialog
- [ ] Verify tags are created and assigned to documents
- [ ] Verify folder hierarchy matches Bear's nested tag structure
- [ ] Verify creation/modification dates are preserved
- [ ] Verify highlighted text and callouts render correctly
- [ ] Verify images and attachments are imported
- [ ] Import a markdown zip with nested folders, verify folder structure
is recreated
- [ ] Verify trashed Bear notes are excluded
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Bear (.bear2bk) backup import: bulk import notes, convert/dedupe tags,
create nested folders, and return imported doc IDs plus folder
hierarchy; UI import option and progress integrated.
* Markdown ZIP import now returns an optional folder hierarchy alongside
created doc IDs.
* **Bug Fixes / Improvements**
* Highlighting: mark elements validate color names, default safely, and
apply consistent background styling.
* **Chores**
* Added runtime dependency for ZIP handling.
* **Documentation**
* Added localization strings and i18n accessors for Bear import UI.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: DarkSky <25152247+darkskygit@users.noreply.github.com>
|
||
|
|
429e7f495d |
chore: bump up link-preview-js version to v4.0.1 [SECURITY] (#14917)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [link-preview-js](https://redirect.github.com/OP-Engineering/link-preview-js) | [`4.0.0` → `4.0.1`](https://renovatebot.com/diffs/npm/link-preview-js/4.0.0/4.0.1) |  |  | --- ### link-preview-js vulnerable to IPv6 and internal loopback attacks [CVE-2026-43897](https://nvd.nist.gov/vuln/detail/CVE-2026-43897) / [GHSA-4gp8-rjrq-ch6q](https://redirect.github.com/advisories/GHSA-4gp8-rjrq-ch6q) <details> <summary>More information</summary> #### Details ##### Impact The library did not check for IPv6 loopback attacks. There was also a DNS attack, where an address could be resolved into an internal IP. This could cause internal data leaks. ##### Patches Problem has been patched in version 4.0.1. However, it cannot be completely solved by the package alone. The regex used for validation has been tightened for IPv6 addresses. The DNS resolving, however, is more difficult. The regex has been tightened to prohibit .internal, .local, .nip.io and .sslip.io addresses, however there can be other services not on the list, therefore it is imperative that users use the resolveDNSHost option to do DNS resolution before fetching content. To that regard a (scary) error message has been added when the option is not set. ##### Workarounds Users can do their own validation before fetching content. Reported by https://github.com/Andrew-most-likely #### Severity - CVSS Score: 8.7 / 10 (High) - Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N` #### References - [https://github.com/OP-Engineering/link-preview-js/security/advisories/GHSA-4gp8-rjrq-ch6q](https://redirect.github.com/OP-Engineering/link-preview-js/security/advisories/GHSA-4gp8-rjrq-ch6q) - [https://github.com/OP-Engineering/link-preview-js/pull/179](https://redirect.github.com/OP-Engineering/link-preview-js/pull/179) - [https://github.com/OP-Engineering/link-preview-js/commit/4396d48909fab37553c0e93e26447fe218363ede](https://redirect.github.com/OP-Engineering/link-preview-js/commit/4396d48909fab37553c0e93e26447fe218363ede) - [https://github.com/OP-Engineering/link-preview-js/releases/tag/4.0.1](https://redirect.github.com/OP-Engineering/link-preview-js/releases/tag/4.0.1) - [https://github.com/advisories/GHSA-4gp8-rjrq-ch6q](https://redirect.github.com/advisories/GHSA-4gp8-rjrq-ch6q) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-4gp8-rjrq-ch6q) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Release Notes <details> <summary>OP-Engineering/link-preview-js (link-preview-js)</summary> ### [`v4.0.1`](https://redirect.github.com/OP-Engineering/link-preview-js/releases/tag/4.0.1) [Compare Source](https://redirect.github.com/OP-Engineering/link-preview-js/compare/4.0.0...4.0.1) #### What's Changed - Loopback fixes by [@​ospfranco](https://redirect.github.com/ospfranco) in [#​179](https://redirect.github.com/OP-Engineering/link-preview-js/pull/179) **Full Changelog**: <https://github.com/OP-Engineering/link-preview-js/compare/4.0.0...4.0.1> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
339f89220a | fix(core): prevent navigation panel from reordering while typing (#14831) | ||
|
|
440ff0c342 |
fix(editor): resolve UX inconsistencies in the AI chat interface (#14850)
# Closes #14189. Fixes the three UX issues reported in the original bug report, plus one small adjacent polish on the right-sidebar toggle that was requested during review. Each concern in the issue is addressed end-to-end, with the same treatment applied to both places the AI chat panel lives: the **sidebar chat panel** (right panel on a doc page) and the **standalone `/chat` page**. --- ## 1. `+` button → persistent multi-session tabs (issue point 1) **Before:** clicking `+` called `createFreshSession()` (standalone) or `newSession()` (sidebar), both of which tore down the current chat content and replaced it in place. There was no way to keep two chats open at once. **After:** a browser/IDE-style tab strip lives above the chat content. Each open session gets its own tab with a close `×`; the active tab is highlighted; `+` now adds a tab rather than replacing the chat. ### Details - New Lit component `ai-chat-tabs` ([packages/frontend/core/src/blocksuite/ai/components/ai-chat-toolbar/ai-chat-tabs.ts](packages/frontend/core/src/blocksuite/ai/components/ai-chat-toolbar/ai-chat-tabs.ts)). - Tab title is derived from `session.title` → first user message → `"New chat"`. - Horizontal scroll when tabs overflow, with a `wheel` handler that converts mouse wheel / trackpad vertical swipe into horizontal scroll (native horizontal trackpad swipes also work natively via `overflow-x: auto`). - Auto `scrollIntoView({ inline: 'nearest' })` on active tab change, so a newly created or newly selected tab slides into view instead of staying hidden behind the toolbar. - Close `×` removes the tab from the strip but leaves the session on the server (matches the existing **Chat history** dropdown semantics — the session is still reachable there). Closing the active tab switches to an adjacent one; closing the last tab starts a fresh session. - Persistence: open session IDs are saved per-workspace in `localStorage` under `ai-chat-open-tabs:{workspaceId}`. On mount, the React pages hydrate those IDs via `AIProvider.session.getSession` / `CopilotClient.getSession` — no new backend or schema work. - Wiring: identical effects on both variants ([chat.tsx (sidebar)](packages/frontend/core/src/desktop/pages/workspace/detail-page/tabs/chat.tsx) and [chat/index.tsx (standalone)](packages/frontend/core/src/desktop/pages/workspace/chat/index.tsx)) — hydrate → sync active session into tabs → persist. - The tab strip sits on the same row as the existing toolbar icons (pin / history / `+`), separated by `flex: 1` + `min-width: 0` so the tabs scroll cleanly up to the toolbar boundary. - The `ShadowlessElement` base class injects its static CSS globally, and the `:host` selector does not match in a React-rooted DOM — the component uses tag-selector CSS (`ai-chat-tabs { display: flex; … }`) instead. ## 2. Drag-and-drop attachments (issue point 2) **Before:** the chat input accepted no DnD. Attaching anything required the `+` → file-picker flow. **After:** the chat input accepts OS files via native HTML5 DnD and AFFiNE documents via the repo's existing pragmatic-drag-and-drop infrastructure. ### Details - Native handlers (`dragenter/over/leave/drop`) on [ai-chat-input.ts](packages/frontend/core/src/blocksuite/ai/components/ai-chat-input/ai-chat-input.ts) accept OS files: images go into the image preview grid, other files become attachment chips, with the same 50 MB per-file cap as the `+` picker. - Internal AFFiNE document drags from the nav panel land as doc chips, handled via `dropTargetForElements` from `@atlaskit/pragmatic-drag-and-drop` (same library the rest of the app already uses for internal DnD). - A "Drop to attach" overlay appears during drag, reusing the existing focused-border token (`--affine-v2-layer-insideBorder-primaryBorder`) for visual consistency with the focused state. - The image/file routing logic that previously lived inline in `add-popover.ts` was factored into a shared helper [attachment-utils.ts](packages/frontend/core/src/blocksuite/ai/components/ai-chat-chips/attachment-utils.ts) (`addFilesToChat`), so the `+` picker and the drop handler stay in lockstep. - Analytics: extended the `addEmbeddingDoc.control` union in [events.ts](packages/frontend/track/src/events.ts) with `'dragDrop'` so drag-originated attachments are distinguishable from button-initiated ones in telemetry. - `@atlaskit/pragmatic-drag-and-drop` is promoted from a transitive dependency (via `@affine/component`) to a direct dependency of `@affine/core` and `yarn.lock` is refreshed accordingly. ## 3. Chat-history tooltip + icon (issue point 3) **Before:** hovering the chat-history button showed a tooltip whose background did not invert for dark theme (`--affine-tooltip` is not theme-aware), and the icon was `ArrowDownSmallIcon` — a chevron that does not convey "history." **After:** the tooltip primitive itself is theme-aware (every tooltip in the app benefits, not just the chat one), and the icon is the semantically-clear `HistoryIcon`. ### Details - [tooltip.ts](blocksuite/affine/components/src/tooltip/tooltip.ts) now uses `var(--affine-v2-tooltips-background, var(--affine-tooltip))` and `var(--affine-v2-tooltips-foreground, var(--affine-white))`. The V2 tokens auto-invert with theme; the old vars remain as fallbacks so components that override via the existing `tooltipStyle` escape hatch continue to work. - Triangle arrow colors updated to use the same V2 token. - [ai-chat-toolbar.ts](packages/frontend/core/src/blocksuite/ai/components/ai-chat-toolbar/ai-chat-toolbar.ts): `ArrowDownSmallIcon` → `HistoryIcon`; added `data-testid="ai-panel-chat-history"` for future e2e coverage. ## 4. Right-sidebar toggle: tooltips + open-state icon *(adjacent polish)* Not part of the original issue, but surfaced while testing the tab strip — neither of the two right-sidebar toggle buttons had hover affordance, and both used the same icon regardless of the sidebar's state. - Added `tooltip="Open sidebar"` on the route-container button shown when the sidebar is hidden. - Added `tooltip="Close sidebar"` on the sidebar-header button shown when the sidebar is expanded. - The close button now renders a small inline `RightSidebarOpenIcon` variant: same outline as `RightSidebarIcon`, but with the right panel filled in the AFFiNE accent color to convey the open state. Icon shape change is self-contained — no new icon asset added to `@blocksuite/icons`. --- ## Commits - `2adc0c7` — fix(ai-chat): theme-aware tooltip + semantic chat-history icon *(2 files)* - `bf26974` — feat(ai-chat): drag-and-drop file and doc attachments in chat input *(7 files)* - `fca29c8` — feat(ai-chat): persistent multi-session tab strip *(8 files)* - `7d5dffe` — feat(workbench): tooltips and open-state icon for the right-sidebar toggle *(2 files)* Kept ordered smallest → largest blast radius so the history is easy to bisect. --- ## Test plan Verified locally against a fresh server stack (postgres / redis / mailpit via compose, migrations run) signed in as `dev@affine.pro`, in both `/chat` and the sidebar chat on a doc page, in light and dark themes: - [x] Tooltip: hover the chat-history icon in dark mode → tooltip is dark-on-light; toggle to light mode → tooltip is light-on-dark. Existing tooltips on other surfaces (slash menu, edgeless, linked-doc) still render correctly. - [x] Icon: chat-history button renders the history glyph (clock), not a chevron. - [x] Drag-and-drop (OS file): drop a PDF / PNG / TXT onto the input → overlay shows → chips/images appear; file > 50 MB → rejected silently (same as `+` picker). - [x] Drag-and-drop (internal doc): drag an AFFiNE doc from the nav panel → becomes a doc chip. - [x] Pin-picker, `+` picker, paste-image — all unchanged. - [x] Tab strip: first chat auto-becomes a tab on first message; `+` adds tab; click tab switches chat; `×` removes tab and switches to adjacent; close last tab → new fresh tab spawns. - [x] Reload browser → tab strip rehydrates from localStorage with the same sessions. - [x] Tab overflow: 12+ tabs → horizontal scroll via trackpad vertical swipe, trackpad horizontal swipe, and mouse wheel; active tab auto-scrolls into view on `+` click. - [x] Right-sidebar: hover both toggle buttons → tooltips appear; open the sidebar → close button shows the filled right-panel icon. - [x] `yarn lint:ox` and lint-staged both clean on every commit. Not verified locally (no local model key configured): the assistant actually streams a response. Drop/chip flow is independent of that path. ## Out of scope / follow-ups - No new unit or Playwright tests — the fixes are visually verifiable and reuse existing reducer / state paths. Happy to add tests if reviewers prefer. - `@affine/native` is not required for the web dev stack; I only built `@affine/server-native`. Irrelevant to the PR diff. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Multi-tab chat UI with a tabs component, open/close/switch actions, and per-workspace persistence/restoration. * Drag-and-drop attachments into chat input (files and docs). * **UI/UX** * Tooltip theming moved to v2 variables (includes arrow color). * Sidebar toggle/close buttons now show tooltips. * “Drop to attach” overlay and updated history icon. * **Behavior** * Unified attachment handling with 50MB validation and toast notices. * **Analytics** * Attachment events record drag-and-drop as a control method. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: DarkSky <25152247+darkskygit@users.noreply.github.com> |
||
|
|
eb9cc22502 | feat(server): refactor for byok (#14911) | ||
|
|
4e169ea5c7 |
fix(editor): cross browser test stability (#14897)
#### PR Dependency Tree * **PR #14897** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved reliability of shape and connector detection by forcing full DOM renders during waits. * Fixed race conditions in code-block theme loading and cleanup when components unmount. * Refined viewport element discovery to correctly handle rotated/canvas-layer elements and avoid stale DOM removal. * **Tests** * Increased polling timeouts and retries to reduce flakiness. * Disabled per-file parallelism and ensured test setup performs full cleanup before starting; extended test timeout. <!-- end of auto-generated comment: release notes by coderabbit.ai -->v2026.5.6-canary.947 |
||
|
|
9e412f58ec |
feat(editor): add collapse/expand functionality to code block component (#14884)
This PR fixes #14040 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Code blocks can be collapsed and expanded via a toolbar toggle (visible when the document is editable). * Collapsed code blocks show a limited preview (~8 lines) with a bottom fade overlay and reduced padding. * Toolbar button updates icon and tooltip to reflect collapsed/expanded state. * Collapse state is preserved on the block so its current collapsed/expanded setting is retained. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
5d234ad6a8 |
fix(editor): single-letter tags in select/multi-select table cell (#14808)
### Summary of Changes Resolves #14715 and #14280. When a user types into a **Select/Multi-Select** table cell to create/choose a tag, that character is stashed on the cell container (setTagDraft) instead of going through valueSetFromString. Opening the tag picker reads it via consumeTagDraftFromTableCellHost. ### Verification - Added unit test to check that single-character input doesn't immediately call valueSetFromString. https://github.com/user-attachments/assets/432b2693-52f9-4ab4-a694-8440aea007a3 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Tag selection popups now initialize with draft text from keypresses in tag columns, improving user experience when editing tags. * **Tests** * Added comprehensive hotkey tests for single-select and multi-select tag column behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
1ad088398f | fix(server): test & schema | ||
|
|
74d5ebad13 |
fix(editor): stretch latex preview content (#14857)
### Summary of Changes Resolves #13340. Change align-items to stretch to full width to avoid tag/label from overlapping with equation. ### Screenshot Verification **Before** <img width="661" height="256" alt="Screenshot 2026-04-19 at 5 58 03 PM" src="https://github.com/user-attachments/assets/a99d0138-838f-4f91-bd63-cbd07710484c" /> **After** <img width="614" height="275" alt="Screenshot 2026-04-19 at 5 58 16 PM" src="https://github.com/user-attachments/assets/7e62ab09-f290-4b6e-9cd6-d20b8f990da3" /> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Style** * Improved the vertical alignment of LaTeX block content to better utilize container space. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
a1800cf8b2 |
feat(editor): remove max-height restriction from mermaid preview container (#14882)
This PR fixes #14874 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes * **Bug Fixes** * Removed height limitation on Mermaid diagram previews in code blocks, allowing larger diagrams to render at their full size without being constrained by a fixed maximum height. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
fa66139230 |
feat(server): add flag for calendar enable (#14896)
#### PR Dependency Tree * **PR #14896** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added configuration option to manage Google Calendar account linking access. Administrators can now disable new account connections to control calendar service integrations. When disabled, the Google provider is hidden from available options and new linking attempts are blocked, while existing accounts remain fully functional. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
027d163921 |
fix(server): add embedding table repair (#14895)
fix #14894 #### PR Dependency Tree * **PR #14895** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Improved database initialization for self-hosted deployments with automatic creation and repair of embedding tables and indexes, applied only when related base tables and extensions are present. * Updated pre-deploy process to run Prisma migrations, perform embedding-table maintenance, and execute additional data migrations as part of setup. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
39abb936b8 |
fix(core): prevent Alt+Key shortcuts from hijacking macOS Option-key input (#14866)
Fixes #14519 ## Summary On macOS, the Option key combined with a letter produces locale input characters (e.g. Polish layout: Option+S → `ś`, Option+L → `ł`). The AFFiNE command registry registers shortcuts like `Alt+KeyS` (used for Page ↔ Edgeless mode switch) via `tinykeys`, which matches on `event.code` (the physical key) — so it fires even when the user was actually typing a non-ASCII character. Reported in #14519: Polish users cannot type `ś` inside AFFiNE because Option+S triggers the mode switch instead. ## Fix In the command registry handler ([registry.ts](packages/frontend/core/src/commands/registry/registry.ts)), skip the command when Alt is the only modifier **and** the key produced a non-ASCII character — the user intends to type the character, not invoke the shortcut. Matches the existing handling in blocksuite's `keymap.ts` (added for the same class of issue in #14059). ## Demo https://github.com/user-attachments/assets/eb6d2e69-39bf-4236-a886-9e2bde425626 ## Verified locally (macOS) - Switched input source to Polish - Typed `właśnie` in an AFFiNE doc — all characters including `ś` (Option+S), `ł` (Option+L) now produce the correct output - Previously Option+S would toggle edgeless mode - US layout (Option+S → `ß`) and other locale chars (ą, ń, ę) also now pass through correctly - Regular Cmd-based shortcuts (Cmd+K, Cmd+S, etc.) unaffected because the guard excludes `metaKey` ## Test plan - [x] On macOS, add Polish input source (System Settings → Keyboard → Input Sources → +) - [x] Switch to Polish layout - [x] In any AFFiNE doc, type Option+S → `ś` appears (not mode switch) - [x] Confirm other shortcuts (Cmd+K, Cmd+Enter, etc.) still work - [x] Confirm on US layout that Option+S produces `ß` (OS default) without firing the mode switch <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Fixed keyboard event handling with Alt key and non-ASCII characters to prevent unintended command execution. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
9751cab16c |
fix(editor): native table column resize broken in edgeless mode (#14824)
Fixes #14717 ## Summary When a native `affine:table` block is placed in a note on the edgeless canvas, dragging the column resize handle (or the column/row drag handles) causes the canvas to pan instead of triggering the resize/drag, because the edgeless `DragController` listens at the `pointerdown` level — earlier than `SelectionController`'s existing `mousedown` handler. ## Fix Two interception layers added to `blocksuite/affine/blocks/table/src/selection-controller.ts`, matching the working pattern in `affine:database`'s `database-header-column.ts`: 1. **DOM-level `pointerdown` `stopPropagation()`** in `dragListener()` — prevents the edgeless `DragController` from capturing the event before BlockSuite's event system sees it. 2. **`handleEvent('dragStart', ...)`** in `hostConnected()` — returns `true` when the target is a resize/drag handle, so the BlockSuite event dispatcher doesn't route to the edgeless tool controller. Selectors guarded: `[data-width-adjust-column-id]`, `[data-drag-column-id]`, `[data-drag-row-id]`. Mobile and readonly states preserved (matching existing `dragListener()` guards). <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved drag-and-drop interaction handling for table operations, including column width adjustment and row/column dragging. Enhanced event handling to prevent unintended drag actions and ensure proper behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
5e97e67ecd |
fix(editor): prevent connector label from breaking after click + move in empty label editor (#14830)
### Problem ●In edgeless mode, after clicking and moving in a connector's label editor, if the label editor has empty content at the end of the editing, the label editor for that connector can not be triggered again. ●The following video demonstrates this issue: https://github.com/user-attachments/assets/8d300720-5ed8-4f9c-90fa-fbf059417ff8 ### Root Cause **Direct cause** ●The `labelOffset` property is **stashed** at drag-start, but is **not properly popped** afterward. As a result, when `mountConnectorLabelEditor()` is called the second time (`packages/affine/gfx/connector/src/text/edgeless-connector-label-editor.ts`), `connector.labelOffset` returns `undefined` instead of the default value provided by the `@field` decorator. **Why moving after clicking incorrectly triggers a drag-start** ●The root issue lies in the interaction between click and drag event handling. Here's the actual flow: 1.`dispatcher.add('click', () => true)` is registered in `EdgelessConnectorLabelEditor`. 2.On pointer-down, both `ClickController` and `DragController` receive the event. 3.On pointer-up, `ClickController` fires a **synthetic click**. The handler from step 1 returns `true`, triggering `context.get('defaultState').event.stopPropagation()`. 4.This prevents the native pointer-up from bubbling to `DragController`. However, a subsequent pointer-move still causes `DragController` to **incorrectly synthesize a drag-start + drag-move**. **Fundamental root cause** ●The line `context.get('defaultState').event.stopPropagation()` in `UIEventDispatcher::run()` stops **both** synthetic and native event bubbling. It should only stop synthetic event propagation. ●The synthetic event bubbling stopping is already properly handled by the immediate `return` statement on the next line, because the runners are prepared in strict order (current → parent → grandparent → ... → global) by `UIEventDispatcher::_getEventScope()` and then **executed sequentially** in `UIEventDispatcher::run()`. ### Fix ●Since I cannot rule out that other (current or future) event handlers may rely on this native event bubbling stopping behavior, I chose not to remove the `context.get('defaultState').event.stopPropagation()` line completely. Instead, I added a new constant and now skip `stopPropagation()` **only** for the following synthetic events: ```ts const syntheticEventNames = new Set(['click', 'doubleClick', 'tripleClick']); ``` These currently represent all known synthetic click events triggered from pointer-up. ### After ●The video below shows the behavior after this fix. https://github.com/user-attachments/assets/65b8a3ce-0767-4d80-986b-8bc6081ddd4c |
||
|
|
7046ad7bf4 |
fix(editor): align selection/handle/remote/text overlays with blocks (#14862)
# Closes #14855. ## The bug When an `affine:embed-synced-doc` is placed on an edgeless canvas and resized which sets `model.props.scale` to a value ≠ 1 - the block-selection frame rendered **inside** that embedded editor is drawn offset from the actual block boundary. The reporter hit this in Safari, but the root cause is platform-independent.  ## Root cause `affine-embed-edgeless-synced-doc-block` applies `transform: scale(modelScale)` to its `.affine-embed-synced-doc-container` so the embedded editor visually fits inside its edgeless xywh ([embed-edgeless-synced-doc-block.ts#L48-L58](https://github.com/toeverything/AFFiNE/blob/canary/blocksuite/affine/blocks/embed-doc/src/embed-synced-doc-block/embed-edgeless-synced-doc-block.ts#L48-L58)). The inner `Viewport` exposes that outer scale as `viewScale = boundingClientRect.width / offsetWidth`. PR #14015 and PR #14074 already taught the surface canvas and `GfxBlockComponent.getCSSTransform` to compensate by dividing by `viewScale`. But several selection-related overlays that render inside the same scaled container were **not** updated in those PRs. They either: - read `viewport.toViewCoord(x, y)` - which returns `(x - viewportX) * zoom * viewScale` and drop the result into CSS `left` / `top` inside the scaled container, or - hand-build a `translate(translateX, translateY) scale(zoom)` transform without `viewScale` compensation. The outer CSS `scale(viewScale)` then re-applies the scale, leaving the overlays one factor of `viewScale` away from their blocks. That's exactly the misalignment in the screenshot - the rect's size looks right but its position is offset. ## The fix Mirror the pattern shipped in #14074 everywhere the inner overlays are placed: - position: `(model - viewportX) * zoom / viewScale` - transform scale: `zoom / viewScale` - translate: `translateX / viewScale, translateY / viewScale` This keeps the overlays in the same reference frame as `GfxBlockComponent.getCSSTransform` so they line up with the block they're framing. When `viewScale === 1` (normal edgeless canvas, outside any embed) every `/ viewScale` is a no-op and behaviour is unchanged. ## Why this is safe - When `viewScale === 1` - every existing caller outside `embed-edgeless-synced-doc` - the math reduces to the original expression byte-for-byte. - The fix strictly mirrors the invariant already adopted by `GfxBlockComponent.getCSSTransform` in #14074. It's the same division by `viewScale` applied in the same place. - No public API, type, or DOM structure changed. ## Scope / known limitations - The `Viewport._cachedBoundingClientRect` cache is only invalidated by its own `ResizeObserver` ([viewport.ts#L500-L505](https://github.com/toeverything/AFFiNE/blob/canary/blocksuite/framework/std/src/gfx/viewport.ts#L500-L505)). A CSS-transform change on an ancestor (e.g. the user panning/zooming the outer edgeless canvas) does not fire it, so in theory `viewScale` can go stale between outer-viewport updates. In practice this hasn't come up in repro - the inner viewport's shell is observed and fires whenever layout shifts. If it turns out to matter I'm happy to add a `viewport.onResize()` refresh hook off the existing `GfxViewportInitializer` in a follow-up. - No integration test added - the existing `blocksuite/integration-test/edgeless/` suite has no `embed-synced-doc` harness. Adding one is a larger scope; can follow up if requested. ## Test plan - [x] `yarn typecheck` - passes - [x] `yarn lint:ox` - `0 warnings, 0 errors` - [x] `yarn prettier --write` on the 5 touched files - no changes - [ ] Manual: on canary, create an edgeless canvas, drop an embed-synced-doc, resize with `Shift` held so `model.props.scale` ≠ 1, select any block inside, and verify the blue selection frame sits flush with the block's boundary (confirm on Safari, Chrome, Firefox). - [ ] Regression check: on a normal edgeless canvas (no embed), verify element selection, drag handle, and text/shape inline editors still render correctly (these code paths hit `viewScale === 1` and should be unchanged). ## Related PRs - #14015 - fixed surface canvas at non-1 `viewScale`. - #14074 - fixed `GfxBlockComponent.getCSSTransform` at non-1 `viewScale`. This PR completes that series by covering the selection overlays. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Fixed positioning and scaling of inline text editors, selection rectangles, drag handles, and remote cursors so overlays and editors remain correctly aligned and sized when the viewport uses an additional outer scale/transform during zooming and panning. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
e90e3e537c | fix(server): lint | ||
|
|
d64f368623 |
feat(server): refactor copilot (#14892)
#### PR Dependency Tree * **PR #14892** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) |
||
|
|
fa8f1a096c |
fix(server): allow custom R2 jurisdictional endpoint (#14848)
## Summary This PR fixes `cloudflare-r2` storage configuration so jurisdictional R2 endpoints (for example EU buckets) work correctly. Closes #14847 ## Problem `cloudflare-r2` currently ignores `config.endpoint` and always uses: `https://<accountId>.r2.cloudflarestorage.com` That breaks uploads for jurisdictional buckets that require endpoints like: `https://<accountId>.eu.r2.cloudflarestorage.com` ## Changes - Updated `R2StorageProvider` endpoint resolution: - use `config.endpoint` when provided - otherwise fall back to `https://${accountId}.r2.cloudflarestorage.com` - Kept `forcePathStyle: true` behavior unchanged - Updated validation to require `accountId` **or** `endpoint` - Improved storage schema descriptions to mention jurisdiction endpoints - Added focused unit tests for: - default account endpoint behavior - custom jurisdiction endpoint behavior ## Backward Compatibility - Existing R2 configs that only provide `accountId` continue to work exactly as before. - New behavior only applies when a custom `config.endpoint` is explicitly set. ## Tests - Added: `packages/backend/server/src/base/storage/__tests__/r2.spec.ts` - Verifies both default and custom endpoint selection paths. _Disclaimer: parts of this PR were implemented with AI assistance._ <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Cloudflare R2 config adds an optional "jurisdiction" (EU) option and consistent endpoint derivation for S3-compatible providers. * **Documentation** * Storage configuration schemas clarified: S3 endpoint is optional/derived from region; R2 endpoint removed from schema and jurisdiction documented. * **Tests** * Added tests validating R2 endpoint selection for default, EU-jurisdiction, undefined-jurisdiction, and missing-account scenarios. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: DarkSky <25152247+darkskygit@users.noreply.github.com> |
||
|
|
fb6291cb15 | fix: deps dedup | ||
|
|
694158eea3 |
feat(playground): export Y.Doc from debug menu (#14893)
## Summary - add an Export Y.Doc debug menu item - encode the active store spaceDoc with Y.encodeStateAsUpdate - download the update as a binary ydoc-update file ## Test - yarn workspace @blocksuite/playground build <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added Y.Doc export functionality to the debug menu, enabling users to download the current space document state as a binary update file through the "Test Operations" → "Export" menu. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
207bd9387e | fix(docs): redirect links | ||
|
|
78a9942f19 | fix: ci | ||
|
|
0ccfacbc29 | feat(docs): migrate bs docs | ||
|
|
bf6fc66943 |
chore: bump up postcss version to v8.5.10 [SECURITY] (#14877)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [postcss](https://postcss.org/) ([source](https://redirect.github.com/postcss/postcss)) | [`8.5.6` → `8.5.10`](https://renovatebot.com/diffs/npm/postcss/8.5.6/8.5.10) |  |  | --- ### PostCSS has XSS via Unescaped </style> in its CSS Stringify Output [CVE-2026-41305](https://nvd.nist.gov/vuln/detail/CVE-2026-41305) / [GHSA-qx2v-qp2m-jg93](https://redirect.github.com/advisories/GHSA-qx2v-qp2m-jg93) <details> <summary>More information</summary> #### Details ##### PostCSS: XSS via Unescaped `</style>` in CSS Stringify Output ##### Summary PostCSS v8.5.5 (latest) does not escape `</style>` sequences when stringifying CSS ASTs. When user-submitted CSS is parsed and re-stringified for embedding in HTML `<style>` tags, `</style>` in CSS values breaks out of the style context, enabling XSS. ##### Proof of Concept ```javascript const postcss = require('postcss'); // Parse user CSS and re-stringify for page embedding const userCSS = 'body { content: "</style><script>alert(1)</script><style>"; }'; const ast = postcss.parse(userCSS); const output = ast.toResult().css; const html = `<style>${output}</style>`; console.log(html); // <style>body { content: "</style><script>alert(1)</script><style>"; }</style> // // Browser: </style> closes the style tag, <script> executes ``` **Tested output** (Node.js v22, postcss v8.5.5): ``` Input: body { content: "</style><script>alert(1)</script><style>"; } Output: body { content: "</style><script>alert(1)</script><style>"; } Contains </style>: true ``` ##### Impact Impact non-bundler use cases since bundlers for XSS on their own. Requires some PostCSS plugin to have malware code, which can inject XSS to website. ##### Suggested Fix Escape `</style` in all stringified output values: ```javascript output = output.replace(/<\/(style)/gi, '<\\/$1'); ``` ##### Credits Discovered and reported by [Sunil Kumar](https://tharvid.in) ([@​TharVid](https://redirect.github.com/TharVid)) #### Severity - CVSS Score: 6.1 / 10 (Medium) - Vector String: `CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N` #### References - [https://github.com/postcss/postcss/security/advisories/GHSA-qx2v-qp2m-jg93](https://redirect.github.com/postcss/postcss/security/advisories/GHSA-qx2v-qp2m-jg93) - [https://nvd.nist.gov/vuln/detail/CVE-2026-41305](https://nvd.nist.gov/vuln/detail/CVE-2026-41305) - [https://github.com/postcss/postcss/releases/tag/8.5.10](https://redirect.github.com/postcss/postcss/releases/tag/8.5.10) - [https://github.com/advisories/GHSA-qx2v-qp2m-jg93](https://redirect.github.com/advisories/GHSA-qx2v-qp2m-jg93) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-qx2v-qp2m-jg93) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Release Notes <details> <summary>postcss/postcss (postcss)</summary> ### [`v8.5.10`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8510) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.5.9...8.5.10) - Fixed XSS via unescaped `</style>` in non-bundler cases (by [@​TharVid](https://redirect.github.com/TharVid)). ### [`v8.5.9`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#859) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.5.8...8.5.9) - Speed up source map encoding paring in case of the error. ### [`v8.5.8`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#858) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.5.7...8.5.8) - Fixed `Processor#version`. ### [`v8.5.7`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#857) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.5.6...8.5.7) - Improved source map annotation cleaning performance (by CodeAnt AI). </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNDEuMyIsInVwZGF0ZWRJblZlciI6IjQzLjE0MS4zIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
df482c9cf2 |
chore: bump up uuid version to v14 [SECURITY] (#14870)
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [uuid](https://redirect.github.com/uuidjs/uuid) | [`^13.0.0` → `^14.0.0`](https://renovatebot.com/diffs/npm/uuid/13.0.0/14.0.0) |  |  | --- ### uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided [GHSA-w5hq-g745-h8pq](https://redirect.github.com/advisories/GHSA-w5hq-g745-h8pq) <details> <summary>More information</summary> #### Details ##### Summary `v3`, `v5`, and `v6` accept external output buffers but do not reject out-of-range writes (small `buf` or large `offset`). By contrast, `v4`, `v1`, and `v7` explicitly throw `RangeError` on invalid bounds. This inconsistency allows **silent partial writes** into caller-provided buffers. ##### Affected code - `src/v35.ts` (`v3`/`v5` path) writes `buf[offset + i]` without bounds validation. - `src/v6.ts` writes `buf[offset + i]` without bounds validation. ##### Reproducible PoC ```bash cd /home/StrawHat/uuid npm ci npm run build node --input-type=module -e " import {v4,v5,v6} from './dist-node/index.js'; const ns='6ba7b810-9dad-11d1-80b4-00c04fd430c8'; for (const [name,fn] of [ ['v4',()=>v4({},new Uint8Array(8),4)], ['v5',()=>v5('x',ns,new Uint8Array(8),4)], ['v6',()=>v6({},new Uint8Array(8),4)], ]) { try { fn(); console.log(name,'NO_THROW'); } catch(e){ console.log(name,'THREW',e.name); } }" ``` Observed: - `v4 THREW RangeError` - `v5 NO_THROW` - `v6 NO_THROW` Example partial overwrite evidence captured during audit: ```text same true buf [ 170, 170, 170, 170, 75, 224, 100, 63 ] v6 [ 187, 187, 187, 187, 31, 19, 185, 64 ] ``` ##### Security impact - **Primary**: integrity/robustness issue (silent partial output). - If an application assumes full UUID writes into preallocated buffers, this can produce malformed/truncated/partially stale identifiers without error. - In systems where caller-controlled offsets/buffer sizes are exposed indirectly, this may become a security-relevant logic flaw. ##### Suggested fix Add the same guard used by `v4`/`v1`/`v7`: ```ts if (offset < 0 || offset + 16 > buf.length) { throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`); } ``` Apply to: - `src/v35.ts` (covers `v3` and `v5`) - `src/v6.ts` #### Severity - CVSS Score: 6.3 / 10 (Medium) - Vector String: `CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N` #### References - [https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq](https://redirect.github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq) - [https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34](https://redirect.github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34) - [https://github.com/uuidjs/uuid/releases/tag/v14.0.0](https://redirect.github.com/uuidjs/uuid/releases/tag/v14.0.0) - [https://github.com/advisories/GHSA-w5hq-g745-h8pq](https://redirect.github.com/advisories/GHSA-w5hq-g745-h8pq) This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-w5hq-g745-h8pq) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Release Notes <details> <summary>uuidjs/uuid (uuid)</summary> ### [`v14.0.0`](https://redirect.github.com/uuidjs/uuid/blob/HEAD/CHANGELOG.md#1400-2026-04-19) [Compare Source](https://redirect.github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0) ##### Security - Fixes [GHSA-w5hq-g745-h8pq](https://redirect.github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq): `v3()`, `v5()`, and `v6()` did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid `offset` was provided. A `RangeError` is now thrown if `offset < 0` or `offset + 16 > buf.length`. ##### ⚠ BREAKING CHANGES - `crypto` is now expected to be globally defined (requires node\@​20+) ([#​935](https://redirect.github.com/uuidjs/uuid/issues/935)) - drop node\@​18 support ([#​934](https://redirect.github.com/uuidjs/uuid/issues/934)) - upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "" - 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:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjEzOS40IiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |