[](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [node](https://nodejs.org) ([source](https://togithub.com/nodejs/node)) | | major | `18` -> `20` | | [node](https://nodejs.org) ([source](https://togithub.com/nodejs/node)) | engines | major | [`>=18.16.1 <19.0.0` -> `<21.0.0`](https://renovatebot.com/diffs/npm/node/v18.19.1/v20.11.1) | | [node](https://togithub.com/nodejs/node) | final | major | `18-bookworm-slim` -> `20-bookworm-slim` | --- ### Release Notes <details> <summary>nodejs/node (node)</summary> ### [`v20.11.1`](https://togithub.com/nodejs/node/compare/v20.11.0...v20.11.1) [Compare Source](https://togithub.com/nodejs/node/compare/v20.11.0...v20.11.1) ### [`v20.11.0`](https://togithub.com/nodejs/node/compare/v20.10.0...v20.11.0) [Compare Source](https://togithub.com/nodejs/node/compare/v20.10.0...v20.11.0) ### [`v20.10.0`](https://togithub.com/nodejs/node/compare/v20.9.0...v20.10.0) [Compare Source](https://togithub.com/nodejs/node/compare/v20.9.0...v20.10.0) ### [`v20.9.0`](https://togithub.com/nodejs/node/compare/v20.8.1...v20.9.0) [Compare Source](https://togithub.com/nodejs/node/compare/v20.8.1...v20.9.0) ### [`v20.8.1`](https://togithub.com/nodejs/node/releases/tag/v20.8.1): 2023-10-13, Version 20.8.1 (Current), @​RafaelGSS [Compare Source](https://togithub.com/nodejs/node/compare/v20.8.0...v20.8.1) This is a security release. ##### Notable Changes The following CVEs are fixed in this release: - [CVE-2023-44487](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-44487): `nghttp2` Security Release (High) - [CVE-2023-45143](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-45143): `undici` Security Release (High) - [CVE-2023-39332](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-39332): Path traversal through path stored in Uint8Array (High) - [CVE-2023-39331](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-39331): Permission model improperly protects against path traversal (High) - [CVE-2023-38552](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-38552): Integrity checks according to policies can be circumvented (Medium) - [CVE-2023-39333](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-39333): Code injection via WebAssembly export names (Low) More detailed information on each of the vulnerabilities can be found in [October 2023 Security Releases](https://nodejs.org/en/blog/vulnerability/october-2023-security-releases/) blog post. ##### Commits - \[[`c86883e844`](https://togithub.com/nodejs/node/commit/c86883e844)] - **deps**: update nghttp2 to 1.57.0 (James M Snell) [#​50121](https://togithub.com/nodejs/node/pull/50121) - \[[`2860631359`](https://togithub.com/nodejs/node/commit/2860631359)] - **deps**: update undici to v5.26.3 (Matteo Collina) [#​50153](https://togithub.com/nodejs/node/pull/50153) - \[[`cd37838bf8`](https://togithub.com/nodejs/node/commit/cd37838bf8)] - **lib**: let deps require `node` prefixed modules (Matthew Aitken) [#​50047](https://togithub.com/nodejs/node/pull/50047) - \[[`f5c90b2951`](https://togithub.com/nodejs/node/commit/f5c90b2951)] - **module**: fix code injection through export names (Tobias Nießen) [nodejs-private/node-private#461](https://togithub.com/nodejs-private/node-private/pull/461) - \[[`fa5dae1944`](https://togithub.com/nodejs/node/commit/fa5dae1944)] - **permission**: fix Uint8Array path traversal (Tobias Nießen) [nodejs-private/node-private#456](https://togithub.com/nodejs-private/node-private/pull/456) - \[[`cd35275111`](https://togithub.com/nodejs/node/commit/cd35275111)] - **permission**: improve path traversal protection (Tobias Nießen) [nodejs-private/node-private#456](https://togithub.com/nodejs-private/node-private/pull/456) - \[[`a4cb7fc7c0`](https://togithub.com/nodejs/node/commit/a4cb7fc7c0)] - **policy**: use tamper-proof integrity check function (Tobias Nießen) [nodejs-private/node-private#462](https://togithub.com/nodejs-private/node-private/pull/462) ### [`v20.8.0`](https://togithub.com/nodejs/node/releases/tag/v20.8.0): 2023-09-28, Version 20.8.0 (Current), @​ruyadorno [Compare Source](https://togithub.com/nodejs/node/compare/v20.7.0...v20.8.0) ##### Notable Changes ##### Stream performance improvements Performance improvements to writable and readable streams, improving the creation and destruction by ±15% and reducing the memory overhead each stream takes in Node.js Contributed by Benjamin Gruenbaum in [#​49745](https://togithub.com/nodejs/node/pull/49745) and Raz Luvaton in [#​49834](https://togithub.com/nodejs/node/pull/49834). Performance improvements for readable webstream, improving readable stream async iterator consumption by ±140% and improving readable stream `pipeTo` consumption by ±60% Contributed by Raz Luvaton in [#​49662](https://togithub.com/nodejs/node/pull/49662) and [#​49690](https://togithub.com/nodejs/node/pull/49690). ##### Rework of memory management in `vm` APIs with the `importModuleDynamically` option This rework addressed a series of long-standing memory leaks and use-after-free issues in the following APIs that support `importModuleDynamically`: - `vm.Script` - `vm.compileFunction` - `vm.SyntheticModule` - `vm.SourceTextModule` This should enable affected users (in particular Jest users) to upgrade from older versions of Node.js. Contributed by Joyee Cheung in [#​48510](https://togithub.com/nodejs/node/pull/48510). ##### Other notable changes - \[[`32d4d29d02`](https://togithub.com/nodejs/node/commit/32d4d29d02)] - **deps**: add v8::Object::SetInternalFieldForNodeCore() (Joyee Cheung) [#​49874](https://togithub.com/nodejs/node/pull/49874) - \[[`0e686d096b`](https://togithub.com/nodejs/node/commit/0e686d096b)] - **doc**: deprecate `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) [#​49683](https://togithub.com/nodejs/node/pull/49683) - \[[`a5dd057540`](https://togithub.com/nodejs/node/commit/a5dd057540)] - **doc**: deprecate `util.toUSVString` (Yagiz Nizipli) [#​49725](https://togithub.com/nodejs/node/pull/49725) - \[[`7b6a73172f`](https://togithub.com/nodejs/node/commit/7b6a73172f)] - **doc**: deprecate calling `promisify` on a function that returns a promise (Antoine du Hamel) [#​49647](https://togithub.com/nodejs/node/pull/49647) - \[[`1beefd5f16`](https://togithub.com/nodejs/node/commit/1beefd5f16)] - **esm**: set all hooks as release candidate (Geoffrey Booth) [#​49597](https://togithub.com/nodejs/node/pull/49597) - \[[`b0ce78a75b`](https://togithub.com/nodejs/node/commit/b0ce78a75b)] - **module**: fix the leak in SourceTextModule and ContextifySript (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`4e578f8ab1`](https://togithub.com/nodejs/node/commit/4e578f8ab1)] - **module**: fix leak of vm.SyntheticModule (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`69e4218772`](https://togithub.com/nodejs/node/commit/69e4218772)] - **module**: use symbol in WeakMap to manage host defined options (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`14ece0aa76`](https://togithub.com/nodejs/node/commit/14ece0aa76)] - **(SEMVER-MINOR)** **src**: allow embedders to override NODE_MODULE_VERSION (Cheng Zhao) [#​49279](https://togithub.com/nodejs/node/pull/49279) - \[[`9fd67fbff0`](https://togithub.com/nodejs/node/commit/9fd67fbff0)] - **stream**: use bitmap in writable state (Raz Luvaton) [#​49834](https://togithub.com/nodejs/node/pull/49834) - \[[`0ccd4638ac`](https://togithub.com/nodejs/node/commit/0ccd4638ac)] - **stream**: use bitmap in readable state (Benjamin Gruenbaum) [#​49745](https://togithub.com/nodejs/node/pull/49745) - \[[`7c5e322346`](https://togithub.com/nodejs/node/commit/7c5e322346)] - **stream**: improve webstream readable async iterator performance (Raz Luvaton) [#​49662](https://togithub.com/nodejs/node/pull/49662) - \[[`80b342cc38`](https://togithub.com/nodejs/node/commit/80b342cc38)] - **(SEMVER-MINOR)** **test_runner**: accept `testOnly` in `run` (Moshe Atlow) [#​49753](https://togithub.com/nodejs/node/pull/49753) - \[[`17a05b141d`](https://togithub.com/nodejs/node/commit/17a05b141d)] - **(SEMVER-MINOR)** **test_runner**: add junit reporter (Moshe Atlow) [#​49614](https://togithub.com/nodejs/node/pull/49614) ##### Commits - \[[`4879e3fbbe`](https://togithub.com/nodejs/node/commit/4879e3fbbe)] - **benchmark**: add a benchmark for read() of ReadableStreams (Debadree Chatterjee) [#​49622](https://togithub.com/nodejs/node/pull/49622) - \[[`78a6c73157`](https://togithub.com/nodejs/node/commit/78a6c73157)] - **benchmark**: shorten pipe-to by reducing number of chunks (Raz Luvaton) [#​49577](https://togithub.com/nodejs/node/pull/49577) - \[[`4126a6e4c9`](https://togithub.com/nodejs/node/commit/4126a6e4c9)] - **benchmark**: fix webstream pipe-to (Raz Luvaton) [#​49552](https://togithub.com/nodejs/node/pull/49552) - \[[`6010a91825`](https://togithub.com/nodejs/node/commit/6010a91825)] - **bootstrap**: do not expand argv1 for snapshots (Joyee Cheung) [#​49506](https://togithub.com/nodejs/node/pull/49506) - \[[`8480280c4b`](https://togithub.com/nodejs/node/commit/8480280c4b)] - **bootstrap**: only use the isolate snapshot when compiling code cache (Joyee Cheung) [#​49288](https://togithub.com/nodejs/node/pull/49288) - \[[`b30754aa87`](https://togithub.com/nodejs/node/commit/b30754aa87)] - **build**: run embedtest using node executable (Joyee Cheung) [#​49506](https://togithub.com/nodejs/node/pull/49506) - \[[`31db0b8e2b`](https://togithub.com/nodejs/node/commit/31db0b8e2b)] - **build**: add --write-snapshot-as-array-literals to configure.py (Joyee Cheung) [#​49312](https://togithub.com/nodejs/node/pull/49312) - \[[`6fcb51d3ba`](https://togithub.com/nodejs/node/commit/6fcb51d3ba)] - **debugger**: use `internal/url.URL` instead of `url.parse` (LiviaMedeiros) [#​49590](https://togithub.com/nodejs/node/pull/49590) - \[[`32d4d29d02`](https://togithub.com/nodejs/node/commit/32d4d29d02)] - **deps**: add v8::Object::SetInternalFieldForNodeCore() (Joyee Cheung) [#​49874](https://togithub.com/nodejs/node/pull/49874) - \[[`ad37cadc3f`](https://togithub.com/nodejs/node/commit/ad37cadc3f)] - **deps**: V8: backport [`de9a5de`](https://togithub.com/nodejs/node/commit/de9a5de2274f) (Joyee Cheung) [#​49703](https://togithub.com/nodejs/node/pull/49703) - \[[`cdd1c66222`](https://togithub.com/nodejs/node/commit/cdd1c66222)] - **deps**: V8: cherry-pick [`b33bf2d`](https://togithub.com/nodejs/node/commit/b33bf2dfd261) (Joyee Cheung) [#​49703](https://togithub.com/nodejs/node/pull/49703) - \[[`61d18d6473`](https://togithub.com/nodejs/node/commit/61d18d6473)] - **deps**: update undici to 5.24.0 (Node.js GitHub Bot) [#​49559](https://togithub.com/nodejs/node/pull/49559) - \[[`b8a4fef393`](https://togithub.com/nodejs/node/commit/b8a4fef393)] - **deps**: remove pthread-fixes.c from uv.gyp (Ben Noordhuis) [#​49744](https://togithub.com/nodejs/node/pull/49744) - \[[`6c86c0683c`](https://togithub.com/nodejs/node/commit/6c86c0683c)] - **deps**: update googletest to [`d1467f5`](https://togithub.com/nodejs/node/commit/d1467f5) (Node.js GitHub Bot) [#​49676](https://togithub.com/nodejs/node/pull/49676) - \[[`1424404742`](https://togithub.com/nodejs/node/commit/1424404742)] - **deps**: update nghttp2 to 1.56.0 (Node.js GitHub Bot) [#​49582](https://togithub.com/nodejs/node/pull/49582) - \[[`15b54ff95d`](https://togithub.com/nodejs/node/commit/15b54ff95d)] - **deps**: update googletest to [`8a6feab`](https://togithub.com/nodejs/node/commit/8a6feab) (Node.js GitHub Bot) [#​49463](https://togithub.com/nodejs/node/pull/49463) - \[[`2ceab877c2`](https://togithub.com/nodejs/node/commit/2ceab877c2)] - **deps**: update corepack to 0.20.0 (Node.js GitHub Bot) [#​49464](https://togithub.com/nodejs/node/pull/49464) - \[[`4814872ddc`](https://togithub.com/nodejs/node/commit/4814872ddc)] - **doc**: fix `DEP0176` number (LiviaMedeiros) [#​49858](https://togithub.com/nodejs/node/pull/49858) - \[[`0e686d096b`](https://togithub.com/nodejs/node/commit/0e686d096b)] - **doc**: deprecate `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) [#​49683](https://togithub.com/nodejs/node/pull/49683) - \[[`5877c403a2`](https://togithub.com/nodejs/node/commit/5877c403a2)] - **doc**: add mertcanaltin as a triager (mert.altin) [#​49826](https://togithub.com/nodejs/node/pull/49826) - \[[`864fe56432`](https://togithub.com/nodejs/node/commit/864fe56432)] - **doc**: add `git node backport` way to the backporting guide (Raz Luvaton) [#​49760](https://togithub.com/nodejs/node/pull/49760) - \[[`e0f93492d5`](https://togithub.com/nodejs/node/commit/e0f93492d5)] - **doc**: improve documentation about ICU data fallback (Joyee Cheung) [#​49666](https://togithub.com/nodejs/node/pull/49666) - \[[`a5dd057540`](https://togithub.com/nodejs/node/commit/a5dd057540)] - **doc**: deprecate `util.toUSVString` (Yagiz Nizipli) [#​49725](https://togithub.com/nodejs/node/pull/49725) - \[[`774c1cfd52`](https://togithub.com/nodejs/node/commit/774c1cfd52)] - **doc**: add missing function call to example for `util.promisify` (Jungku Lee) [#​49719](https://togithub.com/nodejs/node/pull/49719) - \[[`fe78a34845`](https://togithub.com/nodejs/node/commit/fe78a34845)] - **doc**: update output of example in `mimeParams.set()` (Deokjin Kim) [#​49718](https://togithub.com/nodejs/node/pull/49718) - \[[`4175ea33bd`](https://togithub.com/nodejs/node/commit/4175ea33bd)] - **doc**: add missed `inspect` with numericSeparator to example (Deokjin Kim) [#​49717](https://togithub.com/nodejs/node/pull/49717) - \[[`3a88571972`](https://togithub.com/nodejs/node/commit/3a88571972)] - **doc**: fix history comments (Antoine du Hamel) [#​49701](https://togithub.com/nodejs/node/pull/49701) - \[[`db4ab1ccbb`](https://togithub.com/nodejs/node/commit/db4ab1ccbb)] - **doc**: add missing history info for `import.meta.resolve` (Antoine du Hamel) [#​49700](https://togithub.com/nodejs/node/pull/49700) - \[[`a304d1ee19`](https://togithub.com/nodejs/node/commit/a304d1ee19)] - **doc**: link maintaining deps to pull-request.md (Marco Ippolito) [#​49716](https://togithub.com/nodejs/node/pull/49716) - \[[`35294486ad`](https://togithub.com/nodejs/node/commit/35294486ad)] - **doc**: fix print results in `events` (Jungku Lee) [#​49548](https://togithub.com/nodejs/node/pull/49548) - \[[`9f0b0e15c9`](https://togithub.com/nodejs/node/commit/9f0b0e15c9)] - **doc**: alphabetize cli.md sections (Geoffrey Booth) [#​49668](https://togithub.com/nodejs/node/pull/49668) - \[[`7b6a73172f`](https://togithub.com/nodejs/node/commit/7b6a73172f)] - **doc**: deprecate calling `promisify` on a function that returns a promise (Antoine du Hamel) [#​49647](https://togithub.com/nodejs/node/pull/49647) - \[[`d316b32fff`](https://togithub.com/nodejs/node/commit/d316b32fff)] - **doc**: update `corepack.md` to account for 0.20.0 changes (Antoine du Hamel) [#​49486](https://togithub.com/nodejs/node/pull/49486) - \[[`c2eac7dc7c`](https://togithub.com/nodejs/node/commit/c2eac7dc7c)] - **doc**: remove `@anonrig` from performance initiative (Yagiz Nizipli) [#​49641](https://togithub.com/nodejs/node/pull/49641) - \[[`3d839fbf87`](https://togithub.com/nodejs/node/commit/3d839fbf87)] - **doc**: mark Node.js 16 as End-of-Life (Richard Lau) [#​49651](https://togithub.com/nodejs/node/pull/49651) - \[[`53fb5aead8`](https://togithub.com/nodejs/node/commit/53fb5aead8)] - **doc**: save user preference for JS flavor (Vidar Eldøy) [#​49526](https://togithub.com/nodejs/node/pull/49526) - \[[`e3594d5658`](https://togithub.com/nodejs/node/commit/e3594d5658)] - **doc**: update documentation for node:process warning (Shubham Pandey) [#​49517](https://togithub.com/nodejs/node/pull/49517) - \[[`8e033c3963`](https://togithub.com/nodejs/node/commit/8e033c3963)] - **doc**: rename possibly confusing variable and CSS class (Antoine du Hamel) [#​49536](https://togithub.com/nodejs/node/pull/49536) - \[[`d0e0eb4bb3`](https://togithub.com/nodejs/node/commit/d0e0eb4bb3)] - **doc**: update outdated history info (Antoine du Hamel) [#​49530](https://togithub.com/nodejs/node/pull/49530) - \[[`b4724e2e3a`](https://togithub.com/nodejs/node/commit/b4724e2e3a)] - **doc**: close a parenthesis (Sébastien Règne) [#​49525](https://togithub.com/nodejs/node/pull/49525) - \[[`0471c5798e`](https://togithub.com/nodejs/node/commit/0471c5798e)] - **doc**: cast GetInternalField() return type to v8::Value in addons.md (Joyee Cheung) [#​49439](https://togithub.com/nodejs/node/pull/49439) - \[[`9f8bea3dda`](https://togithub.com/nodejs/node/commit/9f8bea3dda)] - **doc**: fix documentation for input option in child_process (Ariel Weiss) [#​49481](https://togithub.com/nodejs/node/pull/49481) - \[[`f3fea92f8a`](https://togithub.com/nodejs/node/commit/f3fea92f8a)] - **doc**: fix missing imports in `test.run` code examples (Oshri Asulin) [#​49489](https://togithub.com/nodejs/node/pull/49489) - \[[`e426b77b67`](https://togithub.com/nodejs/node/commit/e426b77b67)] - **doc**: fix documentation for fs.createWriteStream highWaterMark option (Mert Can Altın) [#​49456](https://togithub.com/nodejs/node/pull/49456) - \[[`2b119108ff`](https://togithub.com/nodejs/node/commit/2b119108ff)] - **doc**: updated releasers instructions for node.js website (Claudio W) [#​49427](https://togithub.com/nodejs/node/pull/49427) - \[[`b9d4a80183`](https://togithub.com/nodejs/node/commit/b9d4a80183)] - **doc**: edit `import.meta.resolve` documentation (Antoine du Hamel) [#​49247](https://togithub.com/nodejs/node/pull/49247) - \[[`f67433f666`](https://togithub.com/nodejs/node/commit/f67433f666)] - **doc,tools**: switch to `@node-core/utils` (Michaël Zasso) [#​49851](https://togithub.com/nodejs/node/pull/49851) - \[[`142e256fc5`](https://togithub.com/nodejs/node/commit/142e256fc5)] - **errors**: improve classRegExp in errors.js (Uzlopak) [#​49643](https://togithub.com/nodejs/node/pull/49643) - \[[`6377f1bce2`](https://togithub.com/nodejs/node/commit/6377f1bce2)] - **errors**: use `determineSpecificType` in more error messages (Antoine du Hamel) [#​49580](https://togithub.com/nodejs/node/pull/49580) - \[[`05f0fcb4c4`](https://togithub.com/nodejs/node/commit/05f0fcb4c4)] - **esm**: identify parent importing a url with invalid host (Jacob Smith) [#​49736](https://togithub.com/nodejs/node/pull/49736) - \[[`8a6f5fb8f3`](https://togithub.com/nodejs/node/commit/8a6f5fb8f3)] - **esm**: fix return type of `import.meta.resolve` (Antoine du Hamel) [#​49698](https://togithub.com/nodejs/node/pull/49698) - \[[`a6140f1b8c`](https://togithub.com/nodejs/node/commit/a6140f1b8c)] - **esm**: update loaders warning (Geoffrey Booth) [#​49633](https://togithub.com/nodejs/node/pull/49633) - \[[`521a9327e0`](https://togithub.com/nodejs/node/commit/521a9327e0)] - **esm**: fix support for `URL` instances in `register` (Antoine du Hamel) [#​49655](https://togithub.com/nodejs/node/pull/49655) - \[[`3a9ea0925a`](https://togithub.com/nodejs/node/commit/3a9ea0925a)] - **esm**: clarify ERR_REQUIRE_ESM errors (Daniel Compton) [#​49521](https://togithub.com/nodejs/node/pull/49521) - \[[`1beefd5f16`](https://togithub.com/nodejs/node/commit/1beefd5f16)] - **esm**: set all hooks as release candidate (Geoffrey Booth) [#​49597](https://togithub.com/nodejs/node/pull/49597) - \[[`be48267888`](https://togithub.com/nodejs/node/commit/be48267888)] - **esm**: remove return value for `Module.register` (Antoine du Hamel) [#​49529](https://togithub.com/nodejs/node/pull/49529) - \[[`e74a075124`](https://togithub.com/nodejs/node/commit/e74a075124)] - **esm**: refactor test-esm-loader-resolve-type (Geoffrey Booth) [#​49493](https://togithub.com/nodejs/node/pull/49493) - \[[`17823b3533`](https://togithub.com/nodejs/node/commit/17823b3533)] - **esm**: refactor test-esm-named-exports (Geoffrey Booth) [#​49493](https://togithub.com/nodejs/node/pull/49493) - \[[`f34bd15ac1`](https://togithub.com/nodejs/node/commit/f34bd15ac1)] - **esm**: refactor mocking test (Geoffrey Booth) [#​49465](https://togithub.com/nodejs/node/pull/49465) - \[[`ec323bbd99`](https://togithub.com/nodejs/node/commit/ec323bbd99)] - **fs**: replace `SetMethodNoSideEffect` in node_file (CanadaHonk) [#​49857](https://togithub.com/nodejs/node/pull/49857) - \[[`6acf800123`](https://togithub.com/nodejs/node/commit/6acf800123)] - **fs**: improve error performance for `unlinkSync` (CanadaHonk) [#​49856](https://togithub.com/nodejs/node/pull/49856) - \[[`31702c9403`](https://togithub.com/nodejs/node/commit/31702c9403)] - **fs**: improve `readFileSync` with file descriptors (Yagiz Nizipli) [#​49691](https://togithub.com/nodejs/node/pull/49691) - \[[`835f9fe7b9`](https://togithub.com/nodejs/node/commit/835f9fe7b9)] - **fs**: fix file descriptor validator (Yagiz Nizipli) [#​49752](https://togithub.com/nodejs/node/pull/49752) - \[[`b618fe262f`](https://togithub.com/nodejs/node/commit/b618fe262f)] - **fs**: improve error performance of `opendirSync` (Yagiz Nizipli) [#​49705](https://togithub.com/nodejs/node/pull/49705) - \[[`938471ef55`](https://togithub.com/nodejs/node/commit/938471ef55)] - **fs**: improve error performance of sync methods (Yagiz Nizipli) [#​49593](https://togithub.com/nodejs/node/pull/49593) - \[[`db3fc6d087`](https://togithub.com/nodejs/node/commit/db3fc6d087)] - **fs**: fix readdir and opendir recursive with unknown file types (William Marlow) [#​49603](https://togithub.com/nodejs/node/pull/49603) - \[[`0f020ed22d`](https://togithub.com/nodejs/node/commit/0f020ed22d)] - **gyp**: put cctest filenames in variables (Cheng Zhao) [#​49178](https://togithub.com/nodejs/node/pull/49178) - \[[`0ce1e94d12`](https://togithub.com/nodejs/node/commit/0ce1e94d12)] - **lib**: update encoding sets in `WHATWG API` (Jungku Lee) [#​49610](https://togithub.com/nodejs/node/pull/49610) - \[[`efd6815a7a`](https://togithub.com/nodejs/node/commit/efd6815a7a)] - **lib**: fix `internalBinding` typings (Yagiz Nizipli) [#​49742](https://togithub.com/nodejs/node/pull/49742) - \[[`1287d5b74e`](https://togithub.com/nodejs/node/commit/1287d5b74e)] - **lib**: allow byob reader for 'blob.stream()' (Debadree Chatterjee) [#​49713](https://togithub.com/nodejs/node/pull/49713) - \[[`bbc710522d`](https://togithub.com/nodejs/node/commit/bbc710522d)] - **lib**: reset the cwd cache before execution (Maël Nison) [#​49684](https://togithub.com/nodejs/node/pull/49684) - \[[`f62d649e4d`](https://togithub.com/nodejs/node/commit/f62d649e4d)] - **lib**: use internal `fileURLToPath` (Deokjin Kim) [#​49558](https://togithub.com/nodejs/node/pull/49558) - \[[`e515046941`](https://togithub.com/nodejs/node/commit/e515046941)] - **lib**: use internal `pathToFileURL` (Livia Medeiros) [#​49553](https://togithub.com/nodejs/node/pull/49553) - \[[`00608e8070`](https://togithub.com/nodejs/node/commit/00608e8070)] - **lib**: check SharedArrayBuffer availability in freeze_intrinsics.js (Milan Burda) [#​49482](https://togithub.com/nodejs/node/pull/49482) - \[[`8bfbe7079c`](https://togithub.com/nodejs/node/commit/8bfbe7079c)] - **meta**: fix linter error (Antoine du Hamel) [#​49755](https://togithub.com/nodejs/node/pull/49755) - \[[`58f7a9e096`](https://togithub.com/nodejs/node/commit/58f7a9e096)] - **meta**: add primordials strategic initiative (Benjamin Gruenbaum) [#​49706](https://togithub.com/nodejs/node/pull/49706) - \[[`5366027756`](https://togithub.com/nodejs/node/commit/5366027756)] - **meta**: bump github/codeql-action from 2.21.2 to 2.21.5 (dependabot\[bot]) [#​49438](https://togithub.com/nodejs/node/pull/49438) - \[[`fe26b74082`](https://togithub.com/nodejs/node/commit/fe26b74082)] - **meta**: bump rtCamp/action-slack-notify from 2.2.0 to 2.2.1 (dependabot\[bot]) [#​49437](https://togithub.com/nodejs/node/pull/49437) - \[[`b0ce78a75b`](https://togithub.com/nodejs/node/commit/b0ce78a75b)] - **module**: fix the leak in SourceTextModule and ContextifySript (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`4e578f8ab1`](https://togithub.com/nodejs/node/commit/4e578f8ab1)] - **module**: fix leak of vm.SyntheticModule (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`69e4218772`](https://togithub.com/nodejs/node/commit/69e4218772)] - **module**: use symbol in WeakMap to manage host defined options (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`96874e8fbc`](https://togithub.com/nodejs/node/commit/96874e8fbc)] - **node-api**: enable uncaught exceptions policy by default (Chengzhong Wu) [#​49313](https://togithub.com/nodejs/node/pull/49313) - \[[`b931aeadfd`](https://togithub.com/nodejs/node/commit/b931aeadfd)] - **perf_hooks**: reduce overhead of new performance_entries (Vinicius Lourenço) [#​49803](https://togithub.com/nodejs/node/pull/49803) - \[[`ad043bac31`](https://togithub.com/nodejs/node/commit/ad043bac31)] - **process**: add custom dir support for heapsnapshot-signal (Jithil P Ponnan) [#​47854](https://togithub.com/nodejs/node/pull/47854) - \[[`8a7c10194c`](https://togithub.com/nodejs/node/commit/8a7c10194c)] - **repl**: don't accumulate excess indentation in .load (Daniel X Moore) [#​49461](https://togithub.com/nodejs/node/pull/49461) - \[[`10a2adeed5`](https://togithub.com/nodejs/node/commit/10a2adeed5)] - **src**: improve error message when ICU data cannot be initialized (Joyee Cheung) [#​49666](https://togithub.com/nodejs/node/pull/49666) - \[[`ce37688bac`](https://togithub.com/nodejs/node/commit/ce37688bac)] - **src**: remove unnecessary todo (Rafael Gonzaga) [#​49227](https://togithub.com/nodejs/node/pull/49227) - \[[`f611583b71`](https://togithub.com/nodejs/node/commit/f611583b71)] - **src**: use SNAPSHOT_SERDES to log snapshot ser/deserialization (Joyee Cheung) [#​49637](https://togithub.com/nodejs/node/pull/49637) - \[[`a597cb8457`](https://togithub.com/nodejs/node/commit/a597cb8457)] - **src**: port Pipe to uv_pipe_bind2, uv_pipe_connect2 (Geoff Goodman) [#​49667](https://togithub.com/nodejs/node/pull/49667) - \[[`fb21062338`](https://togithub.com/nodejs/node/commit/fb21062338)] - **src**: set --rehash-snapshot explicitly (Joyee Cheung) [#​49556](https://togithub.com/nodejs/node/pull/49556) - \[[`14ece0aa76`](https://togithub.com/nodejs/node/commit/14ece0aa76)] - **(SEMVER-MINOR)** **src**: allow embedders to override NODE_MODULE_VERSION (Cheng Zhao) [#​49279](https://togithub.com/nodejs/node/pull/49279) - \[[`4b5e23c71b`](https://togithub.com/nodejs/node/commit/4b5e23c71b)] - **src**: set ModuleWrap internal fields only once (Joyee Cheung) [#​49391](https://togithub.com/nodejs/node/pull/49391) - \[[`2d3f5c7cab`](https://togithub.com/nodejs/node/commit/2d3f5c7cab)] - **src**: fix fs_type_to_name default value (Mustafa Ateş Uzun) [#​49239](https://togithub.com/nodejs/node/pull/49239) - \[[`cfbcb1059c`](https://togithub.com/nodejs/node/commit/cfbcb1059c)] - **src**: fix comment on StreamResource (rogertyang) [#​49193](https://togithub.com/nodejs/node/pull/49193) - \[[`39fb83ad16`](https://togithub.com/nodejs/node/commit/39fb83ad16)] - **src**: do not rely on the internal field being default to undefined (Joyee Cheung) [#​49413](https://togithub.com/nodejs/node/pull/49413) - \[[`9fd67fbff0`](https://togithub.com/nodejs/node/commit/9fd67fbff0)] - **stream**: use bitmap in writable state (Raz Luvaton) [#​49834](https://togithub.com/nodejs/node/pull/49834) - \[[`0ccd4638ac`](https://togithub.com/nodejs/node/commit/0ccd4638ac)] - **stream**: use bitmap in readable state (Benjamin Gruenbaum) [#​49745](https://togithub.com/nodejs/node/pull/49745) - \[[`b29d927010`](https://togithub.com/nodejs/node/commit/b29d927010)] - **stream**: improve readable webstream `pipeTo` (Raz Luvaton) [#​49690](https://togithub.com/nodejs/node/pull/49690) - \[[`7c5e322346`](https://togithub.com/nodejs/node/commit/7c5e322346)] - **stream**: improve webstream readable async iterator performance (Raz Luvaton) [#​49662](https://togithub.com/nodejs/node/pull/49662) - \[[`be211ef818`](https://togithub.com/nodejs/node/commit/be211ef818)] - **test**: deflake test-vm-contextified-script-leak (Joyee Cheung) [#​49710](https://togithub.com/nodejs/node/pull/49710) - \[[`355f10dab2`](https://togithub.com/nodejs/node/commit/355f10dab2)] - **test**: use checkIfCollectable in vm leak tests (Joyee Cheung) [#​49671](https://togithub.com/nodejs/node/pull/49671) - \[[`17cfc531aa`](https://togithub.com/nodejs/node/commit/17cfc531aa)] - **test**: add checkIfCollectable to test/common/gc.js (Joyee Cheung) [#​49671](https://togithub.com/nodejs/node/pull/49671) - \[[`e49a573752`](https://togithub.com/nodejs/node/commit/e49a573752)] - **test**: add os setPriority, getPriority test coverage (Wael) [#​38771](https://togithub.com/nodejs/node/pull/38771) - \[[`5f02711522`](https://togithub.com/nodejs/node/commit/5f02711522)] - **test**: deflake test-runner-output (Moshe Atlow) [#​49878](https://togithub.com/nodejs/node/pull/49878) - \[[`cd9754d6a7`](https://togithub.com/nodejs/node/commit/cd9754d6a7)] - **test**: mark test-runner-output as flaky (Joyee Cheung) [#​49854](https://togithub.com/nodejs/node/pull/49854) - \[[`5ad00424dd`](https://togithub.com/nodejs/node/commit/5ad00424dd)] - **test**: use mustSucceed instead of mustCall (SiddharthDevulapalli) [#​49788](https://togithub.com/nodejs/node/pull/49788) - \[[`3db9b40081`](https://togithub.com/nodejs/node/commit/3db9b40081)] - **test**: refactor test-readline-async-iterators into a benchmark (Shubham Pandey) [#​49237](https://togithub.com/nodejs/node/pull/49237) - \[[`2cc5ad7859`](https://togithub.com/nodejs/node/commit/2cc5ad7859)] - ***Revert*** "**test**: mark test-http-regr-[gh-2928](https://togithub.com/nodejs/node/issues/2928) as flaky" (Luigi Pinca) [#​49708](https://togithub.com/nodejs/node/pull/49708) - \[[`e5185b053c`](https://togithub.com/nodejs/node/commit/e5185b053c)] - **test**: use `fs.constants` for `fs.access` constants (Livia Medeiros) [#​49685](https://togithub.com/nodejs/node/pull/49685) - \[[`b9e5b43462`](https://togithub.com/nodejs/node/commit/b9e5b43462)] - **test**: deflake test-http-regr-[gh-2928](https://togithub.com/nodejs/node/issues/2928) (Luigi Pinca) [#​49574](https://togithub.com/nodejs/node/pull/49574) - \[[`1fffda504e`](https://togithub.com/nodejs/node/commit/1fffda504e)] - **test**: fix argument computation in embedtest (Joyee Cheung) [#​49506](https://togithub.com/nodejs/node/pull/49506) - \[[`6e56f2db52`](https://togithub.com/nodejs/node/commit/6e56f2db52)] - **test**: skip test-child-process-stdio-reuse-readable-stdio on Windows (Joyee Cheung) [#​49621](https://togithub.com/nodejs/node/pull/49621) - \[[`ab3afb330d`](https://togithub.com/nodejs/node/commit/ab3afb330d)] - **test**: mark test-runner-watch-mode as flaky (Joyee Cheung) [#​49627](https://togithub.com/nodejs/node/pull/49627) - \[[`185d9b50db`](https://togithub.com/nodejs/node/commit/185d9b50db)] - **test**: deflake test-tls-socket-close (Luigi Pinca) [#​49575](https://togithub.com/nodejs/node/pull/49575) - \[[`c70c74a9e6`](https://togithub.com/nodejs/node/commit/c70c74a9e6)] - **test**: show more info on failure in test-cli-syntax-require.js (Joyee Cheung) [#​49561](https://togithub.com/nodejs/node/pull/49561) - \[[`ed7c6d1114`](https://togithub.com/nodejs/node/commit/ed7c6d1114)] - **test**: mark test-http-regr-[gh-2928](https://togithub.com/nodejs/node/issues/2928) as flaky (Joyee Cheung) [#​49565](https://togithub.com/nodejs/node/pull/49565) - \[[`3599eebab9`](https://togithub.com/nodejs/node/commit/3599eebab9)] - **test**: use spawnSyncAndExitWithoutError in sea tests (Joyee Cheung) [#​49543](https://togithub.com/nodejs/node/pull/49543) - \[[`f79b153e89`](https://togithub.com/nodejs/node/commit/f79b153e89)] - **test**: use spawnSyncAndExitWithoutError in test/common/sea.js (Joyee Cheung) [#​49543](https://togithub.com/nodejs/node/pull/49543) - \[[`c079c73769`](https://togithub.com/nodejs/node/commit/c079c73769)] - **test**: use setImmediate() in test-heapdump-shadowrealm.js (Joyee Cheung) [#​49573](https://togithub.com/nodejs/node/pull/49573) - \[[`667a92493c`](https://togithub.com/nodejs/node/commit/667a92493c)] - **test**: skip test-child-process-pipe-dataflow.js on Windows (Joyee Cheung) [#​49563](https://togithub.com/nodejs/node/pull/49563) - \[[`91af0a9a3c`](https://togithub.com/nodejs/node/commit/91af0a9a3c)] - ***Revert*** "**test**: ignore the copied entry_point.c" (Chengzhong Wu) [#​49515](https://togithub.com/nodejs/node/pull/49515) - \[[`567afc71b8`](https://togithub.com/nodejs/node/commit/567afc71b8)] - **test**: avoid copying test source files (Chengzhong Wu) [#​49515](https://togithub.com/nodejs/node/pull/49515) - \[[`ced25a976d`](https://togithub.com/nodejs/node/commit/ced25a976d)] - **test**: increase coverage of `Module.register` and `initialize` hook (Antoine du Hamel) [#​49532](https://togithub.com/nodejs/node/pull/49532) - \[[`be02fbdb8a`](https://togithub.com/nodejs/node/commit/be02fbdb8a)] - **test**: isolate `globalPreload` tests (Geoffrey Booth) [#​49545](https://togithub.com/nodejs/node/pull/49545) - \[[`f214428845`](https://togithub.com/nodejs/node/commit/f214428845)] - **test**: split test-crypto-dh to avoid timeout on slow machines in the CI (Joyee Cheung) [#​49492](https://togithub.com/nodejs/node/pull/49492) - \[[`3987094569`](https://togithub.com/nodejs/node/commit/3987094569)] - **test**: make `test-dotenv-node-options` locale-independent (Livia Medeiros) [#​49470](https://togithub.com/nodejs/node/pull/49470) - \[[`34c1741792`](https://togithub.com/nodejs/node/commit/34c1741792)] - **test**: add test for urlstrings usage in `node:fs` (Livia Medeiros) [#​49471](https://togithub.com/nodejs/node/pull/49471) - \[[`c3c6c4f007`](https://togithub.com/nodejs/node/commit/c3c6c4f007)] - **test**: make test-worker-prof more robust (Joyee Cheung) [#​49274](https://togithub.com/nodejs/node/pull/49274) - \[[`843df1a4da`](https://togithub.com/nodejs/node/commit/843df1a4da)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#​49714](https://togithub.com/nodejs/node/pull/49714) - \[[`80b342cc38`](https://togithub.com/nodejs/node/commit/80b342cc38)] - **(SEMVER-MINOR)** **test_runner**: accept `testOnly` in `run` (Moshe Atlow) [#​49753](https://togithub.com/nodejs/node/pull/49753) - \[[`76865515b9`](https://togithub.com/nodejs/node/commit/76865515b9)] - **test_runner**: fix test runner watch mode when no positional arguments (Moshe Atlow) [#​49578](https://togithub.com/nodejs/node/pull/49578) - \[[`17a05b141d`](https://togithub.com/nodejs/node/commit/17a05b141d)] - **(SEMVER-MINOR)** **test_runner**: add junit reporter (Moshe Atlow) [#​49614](https://togithub.com/nodejs/node/pull/49614) - \[[`5672e38457`](https://togithub.com/nodejs/node/commit/5672e38457)] - **test_runner**: add jsdocs to mock.js (Caio Borghi) [#​49555](https://togithub.com/nodejs/node/pull/49555) - \[[`b4d42a8f2b`](https://togithub.com/nodejs/node/commit/b4d42a8f2b)] - **test_runner**: fix invalid timer call (Erick Wendel) [#​49477](https://togithub.com/nodejs/node/pull/49477) - \[[`f755e6786b`](https://togithub.com/nodejs/node/commit/f755e6786b)] - **test_runner**: add jsdocs to MockTimers (Erick Wendel) [#​49476](https://togithub.com/nodejs/node/pull/49476) - \[[`e7285d4bf0`](https://togithub.com/nodejs/node/commit/e7285d4bf0)] - **test_runner**: fix typescript coverage (Moshe Atlow) [#​49406](https://togithub.com/nodejs/node/pull/49406) - \[[`07a2e29bf3`](https://togithub.com/nodejs/node/commit/07a2e29bf3)] - **tools**: support updating [@​reporters/github](https://togithub.com/reporters/github) manually (Moshe Atlow) [#​49871](https://togithub.com/nodejs/node/pull/49871) - \[[`5ac6722031`](https://togithub.com/nodejs/node/commit/5ac6722031)] - **tools**: skip ruff on tools/node_modules (Moshe Atlow) [#​49838](https://togithub.com/nodejs/node/pull/49838) - \[[`462228bd24`](https://togithub.com/nodejs/node/commit/462228bd24)] - **tools**: fix uvwasi updater (Michael Dawson) [#​49682](https://togithub.com/nodejs/node/pull/49682) - \[[`ff81bfb958`](https://togithub.com/nodejs/node/commit/ff81bfb958)] - **tools**: update lint-md-dependencies to rollup@3.29.2 (Node.js GitHub Bot) [#​49679](https://togithub.com/nodejs/node/pull/49679) - \[[`08ffc6344c`](https://togithub.com/nodejs/node/commit/08ffc6344c)] - **tools**: restrict internal code from using public `url` module (LiviaMedeiros) [#​49590](https://togithub.com/nodejs/node/pull/49590) - \[[`728ebf6c97`](https://togithub.com/nodejs/node/commit/728ebf6c97)] - **tools**: update eslint to 8.49.0 (Node.js GitHub Bot) [#​49586](https://togithub.com/nodejs/node/pull/49586) - \[[`20d038ffb1`](https://togithub.com/nodejs/node/commit/20d038ffb1)] - **tools**: update lint-md-dependencies to rollup@3.29.0 unified@11.0.3 (Node.js GitHub Bot) [#​49584](https://togithub.com/nodejs/node/pull/49584) - \[[`210c15bd12`](https://togithub.com/nodejs/node/commit/210c15bd12)] - **tools**: allow passing absolute path of config.gypi in js2c (Cheng Zhao) [#​49162](https://togithub.com/nodejs/node/pull/49162) - \[[`e341efe173`](https://togithub.com/nodejs/node/commit/e341efe173)] - **tools**: configure never-stale label correctly (Michaël Zasso) [#​49498](https://togithub.com/nodejs/node/pull/49498) - \[[`a8a8a498ce`](https://togithub.com/nodejs/node/commit/a8a8a498ce)] - **tools**: update doc dependencies (Node.js GitHub Bot) [#​49467](https://togithub.com/nodejs/node/pull/49467) - \[[`ac06607f9e`](https://togithub.com/nodejs/node/commit/ac06607f9e)] - **typings**: fix missing property in `ExportedHooks` (Antoine du Hamel) [#​49567](https://togithub.com/nodejs/node/pull/49567) - \[[`097b59807a`](https://togithub.com/nodejs/node/commit/097b59807a)] - **url**: improve invalid url performance (Yagiz Nizipli) [#​49692](https://togithub.com/nodejs/node/pull/49692) - \[[`7c2060cfac`](https://togithub.com/nodejs/node/commit/7c2060cfac)] - **util**: add `getCwdSafe` internal util fn (João Lenon) [#​48434](https://togithub.com/nodejs/node/pull/48434) - \[[`c23c60f545`](https://togithub.com/nodejs/node/commit/c23c60f545)] - **zlib**: disable CRC32 SIMD optimization (Luigi Pinca) [#​49511](https://togithub.com/nodejs/node/pull/49511) ### [`v20.7.0`](https://togithub.com/nodejs/node/releases/tag/v20.7.0): 2023-09-18, Version 20.7.0 (Current), @​UlisesGascon [Compare Source](https://togithub.com/nodejs/node/compare/v20.6.1...v20.7.0) ##### Notable Changes - \[[`022f1b70c1`](https://togithub.com/nodejs/node/commit/022f1b70c1)] - **src**: support multiple `--env-file` declarations (Yagiz Nizipli) [#​49542](https://togithub.com/nodejs/node/pull/49542) - \[[`4a1d1cad61`](https://togithub.com/nodejs/node/commit/4a1d1cad61)] - **crypto**: update root certificates to NSS 3.93 (Node.js GitHub Bot) [#​49341](https://togithub.com/nodejs/node/pull/49341) - \[[`a1a65f593c`](https://togithub.com/nodejs/node/commit/a1a65f593c)] - **deps**: upgrade npm to 10.1.0 (npm team) [#​49570](https://togithub.com/nodejs/node/pull/49570) - \[[`6c2480cad9`](https://togithub.com/nodejs/node/commit/6c2480cad9)] - **(SEMVER-MINOR)** **deps**: upgrade npm to 10.0.0 (npm team) [#​49423](https://togithub.com/nodejs/node/pull/49423) - \[[`bef900e56b`](https://togithub.com/nodejs/node/commit/bef900e56b)] - **doc**: move and rename loaders section (Geoffrey Booth) [#​49261](https://togithub.com/nodejs/node/pull/49261) - \[[`db4ce8a593`](https://togithub.com/nodejs/node/commit/db4ce8a593)] - **doc**: add release key for Ulises Gascon (Ulises Gascón) [#​49196](https://togithub.com/nodejs/node/pull/49196) - \[[`11c85ffa98`](https://togithub.com/nodejs/node/commit/11c85ffa98)] - **(SEMVER-MINOR)** **lib**: add api to detect whether source-maps are enabled (翠 / green) [#​46391](https://togithub.com/nodejs/node/pull/46391) - \[[`ec51e25ed7`](https://togithub.com/nodejs/node/commit/ec51e25ed7)] - **src,permission**: add multiple allow-fs-\* flags (Carlos Espa) [#​49047](https://togithub.com/nodejs/node/pull/49047) - \[[`efdc95fbc0`](https://togithub.com/nodejs/node/commit/efdc95fbc0)] - **(SEMVER-MINOR)** **test_runner**: expose location of tests (Colin Ihrig) [#​48975](https://togithub.com/nodejs/node/pull/48975) ##### Commits - \[[`e84515594e`](https://togithub.com/nodejs/node/commit/e84515594e)] - **benchmark**: use `tmpdir.resolve()` (Livia Medeiros) [#​49137](https://togithub.com/nodejs/node/pull/49137) - \[[`f37444e896`](https://togithub.com/nodejs/node/commit/f37444e896)] - **bootstrap**: build code cache from deserialized isolate (Joyee Cheung) [#​49099](https://togithub.com/nodejs/node/pull/49099) - \[[`af6dc1754d`](https://togithub.com/nodejs/node/commit/af6dc1754d)] - **bootstrap**: do not generate code cache in an unfinalized isolate (Joyee Cheung) [#​49108](https://togithub.com/nodejs/node/pull/49108) - \[[`cade5716df`](https://togithub.com/nodejs/node/commit/cade5716df)] - **build**: add symlink to `compile_commands.json` file if needed (Juan José) [#​49260](https://togithub.com/nodejs/node/pull/49260) - \[[`34a2590b05`](https://togithub.com/nodejs/node/commit/34a2590b05)] - **build**: expand when we run internet tests (Michael Dawson) [#​49218](https://togithub.com/nodejs/node/pull/49218) - \[[`f637fd46ab`](https://togithub.com/nodejs/node/commit/f637fd46ab)] - **build**: fix typo `libray` -> `library` (configure.py) (michalbiesek) [#​49106](https://togithub.com/nodejs/node/pull/49106) - \[[`ef3d8dd493`](https://togithub.com/nodejs/node/commit/ef3d8dd493)] - **crypto**: remove webcrypto EdDSA key checks and properties (Filip Skokan) [#​49408](https://togithub.com/nodejs/node/pull/49408) - \[[`4a1d1cad61`](https://togithub.com/nodejs/node/commit/4a1d1cad61)] - **crypto**: update root certificates to NSS 3.93 (Node.js GitHub Bot) [#​49341](https://togithub.com/nodejs/node/pull/49341) - \[[`7eb10a38ea`](https://togithub.com/nodejs/node/commit/7eb10a38ea)] - **crypto**: remove getDefaultEncoding() (Tobias Nießen) [#​49170](https://togithub.com/nodejs/node/pull/49170) - \[[`772496c030`](https://togithub.com/nodejs/node/commit/772496c030)] - **crypto**: remove default encoding from DiffieHellman (Tobias Nießen) [#​49169](https://togithub.com/nodejs/node/pull/49169) - \[[`c795083232`](https://togithub.com/nodejs/node/commit/c795083232)] - **crypto**: remove default encoding from Hash/Hmac (Tobias Nießen) [#​49167](https://togithub.com/nodejs/node/pull/49167) - \[[`08197aa010`](https://togithub.com/nodejs/node/commit/08197aa010)] - **crypto**: remove default encoding from sign/verify (Tobias Nießen) [#​49145](https://togithub.com/nodejs/node/pull/49145) - \[[`a1a65f593c`](https://togithub.com/nodejs/node/commit/a1a65f593c)] - **deps**: upgrade npm to 10.1.0 (npm team) [#​49570](https://togithub.com/nodejs/node/pull/49570) - \[[`6c2480cad9`](https://togithub.com/nodejs/node/commit/6c2480cad9)] - **(SEMVER-MINOR)** **deps**: upgrade npm to 10.0.0 (npm team) [#​49423](https://togithub.com/nodejs/node/pull/49423) - \[[`84195d9584`](https://togithub.com/nodejs/node/commit/84195d9584)] - **deps**: add missing thread-common.c in uv.gyp (Santiago Gimeno) [#​49410](https://togithub.com/nodejs/node/pull/49410) - \[[`5b70b68b3d`](https://togithub.com/nodejs/node/commit/5b70b68b3d)] - **deps**: V8: cherry-pick [`eadaef5`](https://togithub.com/nodejs/node/commit/eadaef581c29) (Adam Majer) [#​49401](https://togithub.com/nodejs/node/pull/49401) - \[[`fe34d632e8`](https://togithub.com/nodejs/node/commit/fe34d632e8)] - **deps**: update zlib to 1.2.13.1-motley-f5fd0ad (Node.js GitHub Bot) [#​49252](https://togithub.com/nodejs/node/pull/49252) - \[[`db4ce8a593`](https://togithub.com/nodejs/node/commit/db4ce8a593)] - **doc**: add release key for Ulises Gascon (Ulises Gascón) [#​49196](https://togithub.com/nodejs/node/pull/49196) - \[[`e5f3a694cf`](https://togithub.com/nodejs/node/commit/e5f3a694cf)] - **doc**: fix node-api call example (Chengzhong Wu) [#​49395](https://togithub.com/nodejs/node/pull/49395) - \[[`021345a724`](https://togithub.com/nodejs/node/commit/021345a724)] - **doc**: add news issue for Diagnostics WG (Michael Dawson) [#​49306](https://togithub.com/nodejs/node/pull/49306) - \[[`f82347266b`](https://togithub.com/nodejs/node/commit/f82347266b)] - **doc**: clarify policy expectations (Rafael Gonzaga) [#​48947](https://togithub.com/nodejs/node/pull/48947) - \[[`73cfd9c895`](https://togithub.com/nodejs/node/commit/73cfd9c895)] - **doc**: add print results for examples in `StringDecoder` (Jungku Lee) [#​49326](https://togithub.com/nodejs/node/pull/49326) - \[[`63ab591416`](https://togithub.com/nodejs/node/commit/63ab591416)] - **doc**: update outdated reference to NIST SP 800-131A (Tobias Nießen) [#​49316](https://togithub.com/nodejs/node/pull/49316) - \[[`935dfe2afd`](https://togithub.com/nodejs/node/commit/935dfe2afd)] - **doc**: use `cjs` as block code's type in `MockTimers` (Deokjin Kim) [#​49309](https://togithub.com/nodejs/node/pull/49309) - \[[`7c0cd2fb87`](https://togithub.com/nodejs/node/commit/7c0cd2fb87)] - **doc**: update `options.filter` description for `fs.cp` (Shubham Pandey) [#​49289](https://togithub.com/nodejs/node/pull/49289) - \[[`f72e79ea67`](https://togithub.com/nodejs/node/commit/f72e79ea67)] - **doc**: add riscv64 to list of architectures (Stewart X Addison) [#​49284](https://togithub.com/nodejs/node/pull/49284) - \[[`d19c710064`](https://togithub.com/nodejs/node/commit/d19c710064)] - **doc**: avoid "not currently recommended" (Tobias Nießen) [#​49300](https://togithub.com/nodejs/node/pull/49300) - \[[`ae656101c0`](https://togithub.com/nodejs/node/commit/ae656101c0)] - **doc**: update module hooks docs (Geoffrey Booth) [#​49265](https://togithub.com/nodejs/node/pull/49265) - \[[`fefbdb92f2`](https://togithub.com/nodejs/node/commit/fefbdb92f2)] - **doc**: modify param description for end(),write() in `StringDecoder` (Jungku Lee) [#​49285](https://togithub.com/nodejs/node/pull/49285) - \[[`59e66a1ebe`](https://togithub.com/nodejs/node/commit/59e66a1ebe)] - **doc**: use NODE_API_SUPPORTED_VERSION_MAX in release doc (Cheng Zhao) [#​49268](https://togithub.com/nodejs/node/pull/49268) - \[[`ac3b88449b`](https://togithub.com/nodejs/node/commit/ac3b88449b)] - **doc**: fix typo in `stream.finished` documentation (Antoine du Hamel) [#​49271](https://togithub.com/nodejs/node/pull/49271) - \[[`7428ebf6c3`](https://togithub.com/nodejs/node/commit/7428ebf6c3)] - **doc**: update description for `percent_encode` sets in `WHATWG API` (Jungku Lee) [#​49258](https://togithub.com/nodejs/node/pull/49258) - \[[`bef900e56b`](https://togithub.com/nodejs/node/commit/bef900e56b)] - **doc**: move and rename loaders section (Geoffrey Booth) [#​49261](https://togithub.com/nodejs/node/pull/49261) - \[[`a22e0d9696`](https://togithub.com/nodejs/node/commit/a22e0d9696)] - **doc**: clarify use of Uint8Array for n-api (Fedor Indutny) [#​48742](https://togithub.com/nodejs/node/pull/48742) - \[[`1704f24cb9`](https://togithub.com/nodejs/node/commit/1704f24cb9)] - **doc**: add signature for `module.register` (Geoffrey Booth) [#​49251](https://togithub.com/nodejs/node/pull/49251) - \[[`5a363bb01b`](https://togithub.com/nodejs/node/commit/5a363bb01b)] - **doc**: caveat unavailability of `import.meta.resolve` in custom loaders (Jacob Smith) [#​49242](https://togithub.com/nodejs/node/pull/49242) - \[[`8101f2b259`](https://togithub.com/nodejs/node/commit/8101f2b259)] - **doc**: use same name in the doc as in the code (Hyunjin Kim) [#​49216](https://togithub.com/nodejs/node/pull/49216) - \[[`edf278d60d`](https://togithub.com/nodejs/node/commit/edf278d60d)] - **doc**: add notable-change label mention to PR template (Rafael Gonzaga) [#​49188](https://togithub.com/nodejs/node/pull/49188) - \[[`3df2251a6a`](https://togithub.com/nodejs/node/commit/3df2251a6a)] - **doc**: add h1 summary to security release process (Rafael Gonzaga) [#​49112](https://togithub.com/nodejs/node/pull/49112) - \[[`9fcd99a744`](https://togithub.com/nodejs/node/commit/9fcd99a744)] - **doc**: update to semver-minor releases by default (Rafael Gonzaga) [#​49175](https://togithub.com/nodejs/node/pull/49175) - \[[`777931f499`](https://togithub.com/nodejs/node/commit/777931f499)] - **doc**: fix wording in napi_async_init (Tobias Nießen) [#​49180](https://togithub.com/nodejs/node/pull/49180) - \[[`f45c8e10c0`](https://togithub.com/nodejs/node/commit/f45c8e10c0)] - **doc,test**: add known path resolution issue in permission model (Tobias Nießen) [#​49155](https://togithub.com/nodejs/node/pull/49155) - \[[`a6cfea3f74`](https://togithub.com/nodejs/node/commit/a6cfea3f74)] - **esm**: align sync and async load implementations (Antoine du Hamel) [#​49152](https://togithub.com/nodejs/node/pull/49152) - \[[`9fac310b33`](https://togithub.com/nodejs/node/commit/9fac310b33)] - **fs**: add the options param description in openAsBlob() (Yeseul Lee) [#​49308](https://togithub.com/nodejs/node/pull/49308) - \[[`92772a8175`](https://togithub.com/nodejs/node/commit/92772a8175)] - **fs**: remove redundant code in readableWebStream() (Deokjin Kim) [#​49298](https://togithub.com/nodejs/node/pull/49298) - \[[`88ba79b083`](https://togithub.com/nodejs/node/commit/88ba79b083)] - **fs**: make sure to write entire buffer (Robert Nagy) [#​49211](https://togithub.com/nodejs/node/pull/49211) - \[[`11c85ffa98`](https://togithub.com/nodejs/node/commit/11c85ffa98)] - **(SEMVER-MINOR)** **lib**: add api to detect whether source-maps are enabled (翠 / green) [#​46391](https://togithub.com/nodejs/node/pull/46391) - \[[`c12711ebfe`](https://togithub.com/nodejs/node/commit/c12711ebfe)] - **lib**: implement WeakReference on top of JS WeakRef (Joyee Cheung) [#​49053](https://togithub.com/nodejs/node/pull/49053) - \[[`9a0891f88d`](https://togithub.com/nodejs/node/commit/9a0891f88d)] - **meta**: bump step-security/harden-runner from 2.5.0 to 2.5.1 (dependabot\[bot]) [#​49435](https://togithub.com/nodejs/node/pull/49435) - \[[`ae67f41ef1`](https://togithub.com/nodejs/node/commit/ae67f41ef1)] - **meta**: bump actions/checkout from 3.5.3 to 3.6.0 (dependabot\[bot]) [#​49436](https://togithub.com/nodejs/node/pull/49436) - \[[`71b4411fb2`](https://togithub.com/nodejs/node/commit/71b4411fb2)] - **meta**: bump actions/setup-node from 3.7.0 to 3.8.1 (dependabot\[bot]) [#​49434](https://togithub.com/nodejs/node/pull/49434) - \[[`83b7d3a395`](https://togithub.com/nodejs/node/commit/83b7d3a395)] - **meta**: remove modules team from CODEOWNERS (Benjamin Gruenbaum) [#​49412](https://togithub.com/nodejs/node/pull/49412) - \[[`81ff68c45c`](https://togithub.com/nodejs/node/commit/81ff68c45c)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#​49264](https://togithub.com/nodejs/node/pull/49264) - \[[`ab975233cc`](https://togithub.com/nodejs/node/commit/ab975233cc)] - **meta**: mention nodejs/tsc when changing GH templates (Rafael Gonzaga) [#​49189](https://togithub.com/nodejs/node/pull/49189) - \[[`ceaa5494de`](https://togithub.com/nodejs/node/commit/ceaa5494de)] - **meta**: add test/reporters to codeowners (Chemi Atlow) [#​49186](https://togithub.com/nodejs/node/pull/49186) - \[[`de0a51b7cf`](https://togithub.com/nodejs/node/commit/de0a51b7cf)] - **net**: improve performance of isIPv4 and isIPv6 (Uzlopak) [#​49568](https://togithub.com/nodejs/node/pull/49568) - \[[`8d0913bf95`](https://togithub.com/nodejs/node/commit/8d0913bf95)] - **net**: use asserts in JS Socket Stream to catch races in future (Tim Perry) [#​49400](https://togithub.com/nodejs/node/pull/49400) - \[[`2486836a7d`](https://togithub.com/nodejs/node/commit/2486836a7d)] - **net**: fix crash due to simultaneous close/shutdown on JS Stream Sockets (Tim Perry) [#​49400](https://togithub.com/nodejs/node/pull/49400) - \[[`7a808340cd`](https://togithub.com/nodejs/node/commit/7a808340cd)] - **node-api**: fix compiler warning in node_api.h (Michael Graeb) [#​49103](https://togithub.com/nodejs/node/pull/49103) - \[[`30f26a99f4`](https://togithub.com/nodejs/node/commit/30f26a99f4)] - **permission**: ensure to resolve path when calling mkdtemp (RafaelGSS) [nodejs-private/node-private#440](https://togithub.com/nodejs-private/node-private/pull/440) - \[[`5051c75a5b`](https://togithub.com/nodejs/node/commit/5051c75a5b)] - **policy**: fix path to URL conversion (Antoine du Hamel) [#​49133](https://togithub.com/nodejs/node/pull/49133) - \[[`173aed4757`](https://togithub.com/nodejs/node/commit/173aed4757)] - **report**: fix recent coverity warning (Michael Dawson) [#​48954](https://togithub.com/nodejs/node/pull/48954) - \[[`d7ff78b442`](https://togithub.com/nodejs/node/commit/d7ff78b442)] - **sea**: generate code cache with deserialized isolate (Joyee Cheung) [#​49226](https://togithub.com/nodejs/node/pull/49226) - \[[`022f1b70c1`](https://togithub.com/nodejs/node/commit/022f1b70c1)] - **src**: support multiple `--env-file` declarations (Yagiz Nizipli) [#​49542](https://togithub.com/nodejs/node/pull/49542) - \[[`154b1c2115`](https://togithub.com/nodejs/node/commit/154b1c2115)] - **src**: don't overwrite environment from .env file (Phil Nash) [#​49424](https://togithub.com/nodejs/node/pull/49424) - \[[`dc4de1c69b`](https://togithub.com/nodejs/node/commit/dc4de1c69b)] - **src**: modify code for empty string (pluris) [#​49336](https://togithub.com/nodejs/node/pull/49336) - \[[`701c46f967`](https://togithub.com/nodejs/node/commit/701c46f967)] - **src**: remove unused PromiseWrap-related code (Joyee Cheung) [#​49335](https://togithub.com/nodejs/node/pull/49335) - \[[`4a094dc7af`](https://togithub.com/nodejs/node/commit/4a094dc7af)] - **src**: rename IsAnyByteSource to IsAnyBufferSource (Tobias Nießen) [#​49346](https://togithub.com/nodejs/node/pull/49346) - \[[`55d6649175`](https://togithub.com/nodejs/node/commit/55d6649175)] - **src**: support snapshot deserialization in RAIIIsolate (Joyee Cheung) [#​49226](https://togithub.com/nodejs/node/pull/49226) - \[[`dc092864ef`](https://togithub.com/nodejs/node/commit/dc092864ef)] - **src**: remove unused function `GetName()` in node_perf (Jungku Lee) [#​49244](https://togithub.com/nodejs/node/pull/49244) - \[[`f2552a410e`](https://togithub.com/nodejs/node/commit/f2552a410e)] - **src**: use ARES_SUCCESS instead of 0 (Jungku Lee) [#​49048](https://togithub.com/nodejs/node/pull/49048) - \[[`4a9ae31519`](https://togithub.com/nodejs/node/commit/4a9ae31519)] - **src**: add a condition if the argument of `DomainToUnicode` is empty (Jungku Lee) [#​49097](https://togithub.com/nodejs/node/pull/49097) - \[[`f460362cdf`](https://togithub.com/nodejs/node/commit/f460362cdf)] - **src**: remove C++ WeakReference implementation (Joyee Cheung) [#​49053](https://togithub.com/nodejs/node/pull/49053) - \[[`2a35383b3e`](https://togithub.com/nodejs/node/commit/2a35383b3e)] - **src**: use per-realm GetBindingData() wherever applicable (Joyee Cheung) [#​49007](https://togithub.com/nodejs/node/pull/49007) - \[[`184bbddcf5`](https://togithub.com/nodejs/node/commit/184bbddcf5)] - **src**: add per-realm GetBindingData() method (Joyee Cheung) [#​49007](https://togithub.com/nodejs/node/pull/49007) - \[[`e9946885f9`](https://togithub.com/nodejs/node/commit/e9946885f9)] - **src**: serialize both BaseObject slots (Joyee Cheung) [#​48996](https://togithub.com/nodejs/node/pull/48996) - \[[`ec51e25ed7`](https://togithub.com/nodejs/node/commit/ec51e25ed7)] - **src,permission**: add multiple allow-fs-\* flags (Carlos Espa) [#​49047](https://togithub.com/nodejs/node/pull/49047) - \[[`8aac95de4b`](https://togithub.com/nodejs/node/commit/8aac95de4b)] - **stream**: improve tee perf by reduce `ReflectConstruct` usages (Raz Luvaton) [#​49546](https://togithub.com/nodejs/node/pull/49546) - \[[`0eea7fd8fb`](https://togithub.com/nodejs/node/commit/0eea7fd8fb)] - **stream**: use Buffer.from when constructor is a Buffer (Matthew Aitken) [#​49250](https://togithub.com/nodejs/node/pull/49250) - \[[`b961d9bd52`](https://togithub.com/nodejs/node/commit/b961d9bd52)] - **stream**: add `highWaterMark` for the map operator (Raz Luvaton) [#​49249](https://togithub.com/nodejs/node/pull/49249) - \[[`ca1384166d`](https://togithub.com/nodejs/node/commit/ca1384166d)] - **test**: fix warning for comment in embedtest (Jungku Lee) [#​49416](https://togithub.com/nodejs/node/pull/49416) - \[[`2a35782809`](https://togithub.com/nodejs/node/commit/2a35782809)] - **test**: simplify test-crypto-dh-group-setters (Tobias Nießen) [#​49404](https://togithub.com/nodejs/node/pull/49404) - \[[`6740f3c209`](https://togithub.com/nodejs/node/commit/6740f3c209)] - **test**: verify dynamic import call with absolute path strings (Chengzhong Wu) [#​49275](https://togithub.com/nodejs/node/pull/49275) - \[[`6ed47bd8fb`](https://togithub.com/nodejs/node/commit/6ed47bd8fb)] - **test**: reduce length in crypto keygen tests (Joyee Cheung) [#​49221](https://togithub.com/nodejs/node/pull/49221) - \[[`4faa30c553`](https://togithub.com/nodejs/node/commit/4faa30c553)] - **test**: split JWK async elliptic curve keygen tests (Joyee Cheung) [#​49221](https://togithub.com/nodejs/node/pull/49221) - \[[`e04a2603d8`](https://togithub.com/ </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44MS4zIiwidXBkYXRlZEluVmVyIjoiMzcuMjAwLjAiLCJ0YXJnZXRCcmFuY2giOiJjYW5hcnkifQ==-->
AFFiNE.PRO
Write, Draw and Plan All at Once
One hyper-fused platform for wildly creative minds.
A privacy-focussed, local-first, open-source, and ready-to-use alternative for Notion & Miro.
Join our community
Before we tell you how to get started with AFFiNE, we'd like to shamelessly plug our awesome user and developer communities across official discord server! Once you’re familiar with using the software, maybe you will share your wisdom with others and even consider joining the AFFiNE Ambassador program to help spread AFFiNE to the world.
Getting started & staying tuned with us.
⚠️ Please note that AFFiNE is still under active development and is not yet ready for production use. ⚠️
No installation or registration required! Head over to our website and try it out now.
Our wonderful community, where you can meet and engage with the team, developers and other like-minded enthusiastic user of AFFiNE.
Star us, and you will receive all releases notifications from GitHub without any delay!

Features
- Hyper merged — Write, draw and plan all at once. Assemble any blocks you love on any canvas you like to enjoy seamless transitions between workflows with AFFiNE.
- Privacy focussed — AFFiNE is built with your privacy in mind and is one of our key concerns. We want you to keep control of your data, allowing you to store it as you like, where you like while still being able to freely edit and view your data on-demand.
- Offline-first — With your privacy in mind we also decided to go offline-first. This means that AFFiNE can be used offline, whether you want to view or edit, with support for conflict-free merging when you are back online.
- Clean, intuitive design — With AFFiNE you can concentrate on editing with a clean and modern interface. Which is responsive, so it looks great on tablets too, and mobile support is coming in the future.
- Modern Block Editor with Markdown support — A modern block editor can help you not only for docs, but slides and tables as well. When you write in AFFiNE you can use Markdown syntax which helps create an easier editing experience, that can be experienced with just a keyboard. And this allows you to export your data cleanly into Markdown.
- Collaboration — Whether you want to collaborate with yourself across multiple devices, or work together with others, support for collaboration and multiplayer is out-of-the-box, which makes it easy for teams to get started with AFFiNE.
- Choice of multiple languages — Thanks to community contributions AFFiNE offers support for multiple languages. If you don't find your language or would like to suggest some changes we welcome your contributions.
Contributing
| Bug Reports | Feature Requests | Questions/Discussions | AFFiNE Community |
|---|---|---|---|
| Create a bug report | Submit a feature request | Check GitHub Discussion | Vist the AFFiNE Community |
| Something isn't working as expected | An idea for a new feature, or improvements | Discuss and ask questions | A place to ask, learn and engage with others |
Calling all developers, testers, tech writers and more! Contributions of all types are more than welcome, you can read more in docs/types-of-contributions.md. If you are interested in contributing code, read our docs/CONTRIBUTING.md and feel free to check out our GitHub issues to get stuck in to show us what you’re made of.
Before you start contributing, please make sure you have read and accepted our Contributor License Agreement. To indicate your agreement, simply edit this file and submit a pull request.
For bug reports, feature requests and other suggestions you can also create a new issue and choose the most appropriate template for your feedback.
For translation and language support you can visit our i18n General Space.
Looking for others ways to contribute and wondering where to start? Check out the AFFiNE Ambassador program, we work closely with passionate community members and provide them with a wide-range of support and resources.
If you have questions, you are welcome to contact us. One of the best places to get more info and learn more is in the AFFiNE Community where you can engage with other like-minded individuals.
Ecosystem
| Name | ||
|---|---|---|
| @affine/component | AFFiNE Component Resources | |
| @toeverything/y-indexeddb | IndexedDB database adapter for Yjs | |
| @toeverything/theme | AFFiNE theme |
Upstreams
We would also like to give thanks to open-source projects that make AFFiNE possible:
- blocksuite - 💠 BlockSuite is the open-source collaborative editor project behind AFFiNE.
- OctoBase - 🐙 OctoBase is the open-source database behind AFFiNE, local-first, yet collaborative. A light-weight, scalable, data engine written in Rust.
- yjs - Fundamental support of CRDTs for our implementation on state management and data sync.
- electron - Build cross-platform desktop apps with JavaScript, HTML, and CSS.
- React - The library for web and native user interfaces.
- napi-rs - A framework for building compiled Node.js add-ons in Rust via Node-API.
- Jotai - Primitive and flexible state management for React.
- async-call-rpc - A lightweight JSON RPC client & server.
- Vite - Next generation frontend tooling.
- Other upstream dependencies.
Thanks a lot to the community for providing such powerful and simple libraries, so that we can focus more on the implementation of the product logic, and we hope that in the future our projects will also provide a more easy-to-use knowledge base for everyone.
Contributors
We would like to express our gratitude to all the individuals who have already contributed to AFFiNE! If you have any AFFiNE-related project, documentation, tool or template, please feel free to contribute it by submitting a pull request to our curated list on GitHub: awesome-affine.
Self-Host
We know that the self-host version has been out of date for a long time.
We are working hard to get this updated to the latest version, you can try our desktop version first.
Get started with Docker and deploy your own feature-rich, restriction-free deployment of AFFiNE. We are working hard to get this updated to the latest version, you can keep an eye on the latest packages.
Hiring
Some amazing companies including AFFiNE are looking for developers! Are you interested in helping build with AFFiNE and/or its partners? Check out some of the latest jobs available.
Upgrading
For upgrading information, please see our update page.
Feature Request
For feature request, please see community.affine.pro.
Building
Codespaces
From the GitHub repo main page, click the green "Code" button and select "Create codespace on master". This will open a new Codespace with the (supposedly auto-forked AFFiNE repo cloned, built, and ready to go.
Local
See BUILDING.md for instructions on how to build AFFiNE from source code.
Contributing
We welcome contributions from everyone. See docs/contributing/tutorial.md for details.
Thanks
Thanks to Chromatic for providing the visual testing platform that helps us review UI changes and catch visual regressions.
License
See LICENSE for details.

