🎉 See Announcing Rsdoctor 2.0 for more details
Highlights
Build analysis for agents
Agent CLI reads rsdoctor-data.json directly and returns structured data for step-by-step investigation. Rsdoctor 2.0 makes Agent CLI the recommended AI analysis workflow and adds compiler selection for multi-compiler reports.
Smaller and faster
Rsdoctor 2.0 reduces installation size from 25.5 MB to 11.1 MB and runtime dependencies from 83 to 18. In the published benchmarks, analysis time fell 57% compared with Rsdoctor 1.4. Watch-mode improvements reduced median HMR time by about 47%.
One report for every compiler
Rsdoctor automatically groups multi-compiler builds and detects child compilers. Switch between compiler results in the same report, or select a compiler in Agent CLI.
Improved bundle analysis
Tree Graph is smoother for large projects, while Treemap offers easier zooming and navigation. JavaScript asset filters and consistent size metrics help focus on the code that contributes to bundle size.
Breaking Changes
- Runtime requirements: Rsdoctor 2.0 requires Node.js
^20.19.0 || >=22.12.0and Rspack 2 or later. Rspack 1.x and webpack are no longer supported. - Packages and imports: Replace
@rsdoctor/rspack-pluginwith@rsdoctor/core. Several standalone packages have been consolidated or removed, and Rsdoctor 2.0 packages are ESM-only. - AI workflow:
@rsdoctor/mcp-serverand its MCP server workflow have been removed. Use Agent CLI withrsdoctor-data.json; it is not a drop-in MCP API replacement. - Configuration: The top-level
mode,port, andbriefoptions, plusoutput.compressData,supports.banner, andexperiments.enableNativePlugin, have been removed. Migrate to the corresponding 2.0 options. - Deprecated APIs: Remaining deprecated APIs and options have been removed.
See the Rsdoctor 2.0 migration guide for replacement configuration and upgrade steps.
What's Changed
Breaking Changes 🍭
- refactor!: rename webpack-specific internal concepts by @yifancong in #1686
- refactor(core)!: migrate rspack plugin into core by @yifancong in #1783
New Features 🎉
- feat: remove webpack core support by @yifancong in #1699
- feat(client): dark theme by @s-r-x in #1732
- feat: add js-only bundle asset filters by @yifancong in #1782
- feat(client): improve bundle size visualization & fix dark mode logo by @yifancong in #1830
- feat(client): treemap ui/ux improvements by @s-r-x in #1839
- feat: require Rspack 2.x for Rsdoctor 2.0 by @chenjiahan in #1863
- feat(core): support configurable gzip levels by @yifancong in #1861
- feat(plugin): support child compilers by @yifancong in #1842
- feat(rspack-plugin): support multi-compiler builds automatically by @yifancong in #1888
- feat(client): make interface English-only by @yifancong in #1966
- feat(core): add configurable Brotli size analysis by @yifancong in #1984
- feat(core): add framework options compatibility adapter by @yifancong in #1991
- feat(core): add compiler indexes to brief JSON reports by @yifancong in #1987
- feat(ai): support compiler selection in agent CLI by @yifancong in #2003
- feat(client): format bundle diff code by @yifancong in #2029
- feat(core): export RsdoctorPluginInstance by @yifancong in #2037
- feat: support client asset overrides by @yifancong in #2039
- feat(client): add report WebMCP tools by @yifancong in #2056
- feat(client): expand WebMCP report analysis tools by @yifancong in #2076
Performance 🚀
- perf(rspack-plugin): optimize the treeShaking control logic in Rspack by @yifancong in #1702
- perf(client): improve tree graph performance by @s-r-x in #1705
- perf: bundled es-toolkit in packages/utils by @yifancong in #1711
- perf(core): replace body-parser with raw-body by @yifancong in #1828
- perf(core): reduce install size by bundling es-toolkit by @yifancong in #1834
- perf(core): remove unused dependencies by @chenjiahan in #1850
- perf(core): prebundle filesize by @yifancong in #1873
- perf(core): use gzip level 6 by default by @yifancong in #1877
- perf(core): reduce install size with prebundling by @yifancong in #1872
- perf(deps): replace connect with connect-next by @yifancong in #1876
- perf(core): avoid duplicate SDK bootstrap by @yifancong in #1901
- perf(core): preserve loader caching with instrumentation by @ScriptedAlchemy in #1906
- perf(core): skip gzip analysis in watch mode by @ScriptedAlchemy in #1908
- perf(core): speed up report writes in watch mode by @ScriptedAlchemy in #1913
Bug Fixes 🐞
- fix: E1009 subpath exports by @yifancong in #1690
- fix(deps): relax rstack catalog ranges by @yifancong in #1714
- fix(agent-cli): publish declaration entry by @mojobeeping in #1723
- fix(docs): correct Rspress cache env variable by @SoonIter in #1727
- fix: sync treemap root and sidebar size modes by @elecmonkey in #1736
- fix(agent-cli): guard declaration files in publish tarball by @coclock in #1748
- fix(sdk): sync report server hardening to main by @yifancong in #1758
- fix(core): merge user-supplied supports onto defaults so asset gzipSize is populated by @elecmonkey in #1766
- fix(shared): use relative types imports internally by @yifancong in #1779
- fix(components): show custom bundle alert rules by @yifancong in #1781
- fix: guard missing bundle size asset lookup by @yifancong in #1780
- fix: remove packages/components by @yifancong in #1815
- fix(sdk): secure open-in-editor endpoint by @yifancong in #1818
- fix(core): preserve structural code-frame equality by @chenjiahan in #1853
- fix(core): use rspack compiler API by @chenjiahan in #1859
- fix(deps): add api-extractor for pnpm 11 by @yifancong in #1880
- fix(core): avoid reopening dashboard on rebuild by @ScriptedAlchemy in #1904
- fix(shared): preserve module graph consistency on removal by @yifancong in #1912
- fix(core): restore Browserslist fallback for E1004 by @yifancong in #1911
- fix(core): update deprecated option warnings by @yifancong in #1916
- fix(loader): distinguish pitch and normal loader results by @Zengzzhao in #1928
- fix(core): prevent loader events multiplying across rebuilds by @ScriptedAlchemy in #1905
- fix(core): skip sourcemap assets without source by @dgaponov in #1922
- fix(e2e): stabilize doctor-rspack tests on Windows by @9aoy in #1944
- fix(client): keep overall columns at 3:1 by @yifancong in #1945
- fix(core): fall back to AST for unusable sourcemaps by @yifancong in #1934
- fix(client): polish analysis overview UI by @yifancong in #1964
- fix(core): preserve manifest sharding integrity by @yifancong in #1939
- fix(core): summarize ECMA version warnings by @yifancong in #1967
- fix(client): conditionally show source map alert by @yifancong in #1971
- fix(client): normalize Lynx module hashes in bundle diff by @yifancong in #1972
- fix(core): support Node.js 20.19 and 22.12 by @yifancong in #1985
- fix(components): improve bundle summary layout and alert navigation by @yifancong in #1992
- fix(core): skip binary Lynx bundles in ECMAScript checks by @yifancong in #1993
- fix(client): support native tree-shaking reports by @yifancong in #1994
- fix(core): prebundle runtime dependencies by @yifancong in #2002
- fix(core): resolve webpack:// sources against compiler context by @SyMind in #2007
- fix(core): prebundle core dependencies by @yifancong in #2034
- fix(shared): move node types to dev dependencies by @yifancong in #2042
- fix(core): prebundle sirv by @yifancong in #2043
- fix(core): narrow probe loader input to non-nullable types by @SoonIter in #2050
- fix(client): validate external report links by @yifancong in #2054
- fix(core): validate synchronous port input by @yifancong in #2055
- fix(client): escape chart tooltip content by @yifancong in #2053
- fix(client): validate report navigation URLs by @yifancong in #2057
- fix(client): apply selected units to bundle size filters by @dvd233 in #2075
- fix(core): ignore internal child compilers by @yifancong in #2082
- fix(types): remove EMO remnants by @yifancong in #2088
- fix(docs): publish theme and trim playground build by @yifancong in #2095
Refactor 🔨
- refactor(sdk): replace socket.io with native ws transport by @yifancong in #1689
- refactor: remove webpack plugin package by @yifancong in #1693
- refactor: clean up webpack e2e and test helpers by @yifancong in #1704
- refactor(core): migrate utils into core by @yifancong in #1740
- refactor(graph): migrate graph into core by @yifancong in #1773
- refactor(graph): migrate sdk into core by @yifancong in #1774
- refactor(shared): migrate types into shared by @yifancong in #1778
- refactor(client): merge components into client by @yifancong in #1796
- refactor(cli): keep CLI independent for 2.0 by @yifancong in #1812
- refactor(ai): migrate mcp docs & delete packages/ai by @yifancong in #1813
- refactor(core): use Rspack native module graph by @yifancong in #1833
- refactor: migrate packages to ESM-only by @yifancong in #1832
- refactor(core): use Rspack internal resolver by @yifancong in #1845
- refactor(core): replace strip-ansi with Node.js API by @chenjiahan in #1849
- refactor(core): remove unused prebundle step by @chenjiahan in #1851
- refactor(core): replace deep-eql with Node.js API by @chenjiahan in #1852
- refactor(core): remove dayjs runtime dependency by @yifancong in #1858
- refactor(core): optimize package builds by @yifancong in #1864
- refactor(core): nest gzip options under supports by @yifancong in #1867
- refactor: replace picocolors with rslog color by @yifancong in #1874
- refactor(core): remove redundant writeDataJson option by @yifancong in #1910
- refactor(core): remove compressData option by @yifancong in #1931
- refactor(types): require string reportCodeType by @yifancong in #1932
- refactor: migrate to Rsbuild splitChunks config by @chenjiahan in #1936
- refactor(e2e): migrate tests to Rstest by @9aoy in #1940
- refactor: remove deprecated APIs by @yifancong in #1968
- refactor: remove remaining deprecated APIs by @yifancong in #1973
- refactor(client): remove stale webpack naming by @chenjiahan in #2065
- refactor(core): remove legacy webpack chunk callback parsing by @chenjiahan in #2068
- refactor(core): remove obsolete banner option by @chenjiahan in #2073
Document 📖
- docs: clarify branch policy by @yifancong in #1688
- docs: remove webpack plugins by @yifancong in #1696
- docs: fix broken documentation links by @chenjiahan in #1722
- docs: sync action AI analysis docs to main by @yifancong in #1764
- docs: add server cors option docs by @yifancong in #1761
- docs: enable Rspress anchor checks by @chenjiahan in #1771
- docs: migrate Rspack plugin imports to core by @yifancong in #1826
- docs: refresh Rstack slogan by @chenjiahan in #1841
- docs: document bundle diff JSON output by @yifancong in #1844
- docs: document gzip size options by @yifancong in #1866
- docs: align analysis guides with Rspack 2.x by @yifancong in #1921
- docs: archive legacy MCP guidance by @yifancong in #1917
- docs: align output configuration with Rsdoctor 2.x by @yifancong in #1918
- docs: update setup guides for ESM and brief mode by @yifancong in #1919
- docs: clarify Rsdoctor 2.x product positioning by @yifancong in #1920
- docs: remove broken README media link by @dajiaohuang in #1942
- docs: move LLMs UI to page outline by @chenjiahan in #1946
- docs: update banner by @chenjiahan in #1949
- docs: add Rsdoctor 2.0 release blog by @yifancong in #1835
- docs: refresh blog pages and migration navigation by @yifancong in #1977
- docs: separate blog topics and reorder guide sections by @yifancong in #1982
- docs(ai): document compiler selection in agent CLI by @yifancong in #2004
- docs: consolidate legacy configuration migration by @yifancong in #2010
- docs: remove redundant CLAUDE.md setup tip by @chenjiahan in #2033
- docs: update v2 install footprint by @yifancong in #2040
- docs: update Rsdoctor banner by @yifancong in #2045
- docs: add descriptions for guides and configuration by @chenjiahan in #2063
- docs: clarify report server behavior in CI by @chenjiahan in #2064
- docs: update repository guidance for Rsdoctor 2.0 by @chenjiahan in #2067
- docs: clarify Rsdoctor 2 framework setup by @chenjiahan in #2070
- docs: align guides and links with the Rspack ecosystem by @chenjiahan in #2072
- docs: update bundle analysis guidance for Rsdoctor 2 by @chenjiahan in #2071
- docs(config): remove duplicate options pages by @chenjiahan in #2084
- docs: clarify Minify timing and details by @chenjiahan in #2085
- docs: fix custom rule and upload guide examples by @yifancong in #2086
- docs: redirect legacy MCP documentation by @yifancong in #2089
- docs: correct 2.x configuration and guide examples by @yifancong in #2090
- docs: remove benchmark footnotes from 2.0 release notes by @yifancong in #2093
- docs: refine Rsdoctor 2.0 release announcement by @yifancong in #2094
- docs: polish Rsdoctor 2.0 release blog by @chenjiahan in #2100
- docs: refine Rsdoctor 2.0 release introduction and performance results by @chenjiahan in #2104
- docs: clarify agent analysis workflow in Rsdoctor 2.0 release blog by @chenjiahan in #2105
- docs: polish Rsdoctor 2.0 release feature sections by @chenjiahan in #2107
- docs: update Rsdoctor v2 upgrade skill reference by @yifancong in #2106
Other Changes
- chore(deps): update dependency ws to v8.20.1 [security] by @renovate[bot] in #1691
- chore(deps): update rstackjs/rstack-ecosystem-ci digest to a3cd90c by @renovate[bot] in #1697
- chore(deps): update all patch dependencies by @renovate[bot] in #1698
- chore(deps): update all patch dependencies by @renovate[bot] in #1708
- chore(deps): update dependency @lynx-js/react to ^0.121.1 by @renovate[bot] in #1719
- chore(deps): update dependency es-toolkit to ^1.47.0 by @renovate[bot] in #1721
- chore(deps): update dependency @rstack-dev/doc-ui to v1.14.3 by @renovate[bot] in #1720
- Some ui improvements by @s-r-x in #1716
- chore(deps): update dependency launch-editor to ^2.14.1 by @renovate[bot] in #1734
- chore(deps): update dependency @rslint/core to ^0.6.1 by @renovate[bot] in #1733
- chore(deps): update dependency ws to v8.21.0 [security] by @renovate[bot] in #1735
- chore(deps): update all patch dependencies by @renovate[bot] in #1718
- chore(deps): update dependency @lynx-js/rspeedy to ^0.15.0 by @renovate[bot] in #1750
- chore(deps): update all patch dependencies by @renovate[bot] in #1749
- chore(deps): update dependency body-parser to v2.3.0 by @renovate[bot] in #1752
- chore(deps): update dependency react-render-to-markdown to ^19.1.0 by @renovate[bot] in #1753
- chore(deps): update rstackjs/rstack-ecosystem-ci digest to 3c3f0fe by @renovate[bot] in #1707
- chore(deps): update dependency @ant-design/icons to v6.3.2 by @renovate[bot] in #1769
- chore(deps): update all patch dependencies by @renovate[bot] in #1768
- chore(deps): update rstackjs/rstack-ecosystem-ci digest to ecca2c8 by @renovate[bot] in #1776
- chore(deps): update actions/checkout digest to df4cb1c by @renovate[bot] in #1775
- chore(deps): update dependency echarts to v6 [security] by @renovate[bot] in #1777
- chore(deps): update dependency prettier to ^3.9.4 by @renovate[bot] in #1787
- chore(deps): update dependency es-toolkit to ^1.49.0 by @renovate[bot] in #1786
- chore(deps): update dependency dotenv to ^16.6.1 - autoclosed by @renovate[bot] in #1785
- chore(deps): update dependency @lynx-js/react to ^0.122.0 by @renovate[bot] in #1784
- chore(deps): update rsbuild by @renovate[bot] in #1789
- chore(deps): update actions/checkout action to v7 by @renovate[bot] in #1790
- chore(deps): update dependency buffer to v6 by @renovate[bot] in #1791
- chore(deps): update dependency dotenv to v17 by @renovate[bot] in #1792
- chore(deps): update dependency minimatch to v10 - autoclosed by @renovate[bot] in #1793
- chore(deps): update dependency nano-staged to v1 by @renovate[bot] in #1794
- chore(deps): update dependency semver to ^7.8.5 by @renovate[bot] in #1788
- chore(deps): update dependency nx to v23 by @renovate[bot] in #1795
- chore(deps): update dependency ts-loader to ^9.6.2 by @renovate[bot] in #1797
- chore(deps): update dependency open to v11 by @renovate[bot] in #1799
- chore(deps): update dependency ora to v9 by @renovate[bot] in #1800
- chore(deps): update dependency strip-ansi to v7 by @renovate[bot] in #1803
- chore(deps): update dependency upath to v3 by @renovate[bot] in #1804
- chore(deps): update dependency react-markdown to v10 by @renovate[bot] in #1802
- chore(deps): update all patch dependencies by @renovate[bot] in #1806
- chore(deps): update dorny/paths-filter action to v4 by @renovate[bot] in #1805
- chore(deps): update dependency @rstest/core to v0.11.1 by @renovate[bot] in #1823
- chore(deps): update all patch dependencies by @renovate[bot] in #1822
- Fix missing breadcrumb in treemap chart by @s-r-x in #1825
- chore(deps): update all patch dependencies by @renovate[bot] in #1836
- chore(deps): update dependency @lynx-js/react to ^0.123.0 by @renovate[bot] in #1837
- chore(deps): upgrade Rslib to 1.0.0-beta.1 and remove redundant config by @elecmonkey in #1840
- chore(deps): update all patch dependencies by @renovate[bot] in #1846
- chore(deps): update dependency @lynx-js/rspeedy to ^0.16.0 by @renovate[bot] in #1847
- release 2.0.0-alpha.1 by @yifancong in #1848
- chore(deps): remove redundant Nx setup by @chenjiahan in #1854
- chore(deps): replace tapable with lite-tapable by @chenjiahan in #1855
- chore(deps): remove unused css-loader by @yifancong in #1857
- chore: remove changesets by @chenjiahan in #1860
- chore: improve release workflow skills by @chenjiahan in #1862
- Add MCP Toplist rank badge by @chrstphe in #1865
- chore(deps): remove stale dependency configuration by @yifancong in #1856
- test(shared): move shared tests out of core by @yifancong in #1868
- chore(ci): speed up Playwright browser setup by @chenjiahan in #1871
- test(shared): avoid flaky timestamp boundary assertion by @yifancong in #1878
- chore: require Node.js 22 by @yifancong in #1875
- chore: speed up declaration generation by @yifancong in #1870
- chore(deps): update all patch dependencies by @renovate[bot] in #1883
- release: 2.0.0-alpha.2 by @yifancong in #1886
- chore(deps): update actions/setup-node digest to 2499707 by @renovate[bot] in #1882
- chore(deps): update actions/checkout digest to 3d3c42e by @renovate[bot] in #1881
- chore(core): statically import package metadata by @elecmonkey in #1890
- chore(deps): update all patch dependencies by @renovate[bot] in #1894
- chore(deps): update dependency @types/semver to ^7.8.0 by @renovate[bot] in #1898
- chore(deps): update dependency @rsbuild/plugin-type-check to ^1.6.0 by @renovate[bot] in #1895
- chore(deps): update dependency @rslint/core to ^0.7.3 by @renovate[bot] in #1897
- chore(ci): add package preview releases by @ScriptedAlchemy in #1900
- release: v2.0.0-beta.0 by @yifancong in #1902
- chore(deps): update all patch dependencies by @renovate[bot] in #1925
- chore(deps): update nanoid to 3.3.18 by @yifancong in #1929
- chore(deps): update dependency @lynx-js/react to ^0.124.0 by @renovate[bot] in #1926
- chore: improve repository build and test configuration by @yifancong in #1915
- chore(deps): update all patch dependencies by @renovate[bot] in #1937
- chore(deps): update dependency @lynx-js/react to ^0.125.0 by @renovate[bot] in #1938
- chore(deps): migrate to @rstackjs/doc-ui v1.14.9 by @chenjiahan in #1947
- chore: modernize Rsbuild minimal example by @chenjiahan in #1950
- chore: migrate lint and format to Rstack CLI by @chenjiahan in #1951
- chore: migrate Git hooks to Rstack CLI by @chenjiahan in #1952
- chore: use Rstack check and sort package.json by @chenjiahan in #1953
- chore: use heading-case as a formatter plugin by @chenjiahan in #1956
- chore(deps): remove redundant pnpm overrides by @chenjiahan in #1957
- chore(build): simplify configuration and targeting Node.js 20 by @chenjiahan in #1958
- chore(build): migrate Rslib to Rstack CLI by @chenjiahan in #1959
- chore(test): migrate Rstest to Rstack CLI by @chenjiahan in #1960
- chore: centralize shared configuration by @chenjiahan in #1961
- chore(deps): update actions/setup-node action to v7 by @renovate[bot] in #1963
- chore(deps): update all patch dependencies by @renovate[bot] in #1954
- chore(deps): update dependency @microsoft/api-extractor to ^7.59.0 by @renovate[bot] in #1955
- chore: migrate client and docs to Rstack CLI by @chenjiahan in #1965
- chore: complete Rstack CLI migration by @chenjiahan in #1969
- chore(deps): update Rslib to v1.0.0 by @Timeless0911 in #1970
- chore(deps): update all patch dependencies - autoclosed by @renovate[bot] in #1975
- chore(deps): update dependency @lynx-js/react to ^0.126.0 by @renovate[bot] in #1976
- release: v2.0.0-beta.1 by @yifancong in #1983
- chore: update pull request template and skills by @chenjiahan in #1990
- release: v2.0.0-beta.2 by @yifancong in #1989
- chore: remove unused files by @chenjiahan in #1995
- chore(deps): remove unused dependencies by @chenjiahan in #1996
- release: v2.0.0-beta.3 by @yifancong in #1998
- chore(ai): add docs writer and update agent skills by @chenjiahan in #1999
- chore(deps): update all patch dependencies by @renovate[bot] in #2000
- chore(deps): update dependency @lynx-js/rspeedy to ^0.17.2 by @renovate[bot] in #2001
- Release v2.0.0-beta.4 by @yifancong in #2005
- Release: @rsdoctor/agent-cli v0.1.2 by @yifancong in #2006
- chore(build): enable Rspack runtime mode for Rslib builds by @Timeless0911 in #2009
- Release v2.0.0-rc.0 by @yifancong in #2011
- chore(deps): update all patch dependencies by @renovate[bot] in #2012
- chore(deps): update dependency @rspack/cli to ^2.2.6 by @renovate[bot] in #2013
- chore(deps): update dependency rslog to ^2.3.0 by @renovate[bot] in #2015
- chore(deps): update dependency source-map to ^0.8.0 by @renovate[bot] in #2016
- chore(deps): update rsbuild (major) by @renovate[bot] in #2022
- chore(deps): update react monorepo to ^19.3.0 by @renovate[bot] in #2018
- chore(deps): update dependency connect-next to v5 by @renovate[bot] in #2019
- chore(deps): update dependency raw-body to v4 by @renovate[bot] in #2020
- chore(deps): update dependency es-toolkit to ^1.52.0 by @renovate[bot] in #2024
- chore(deps): update dependency memfs to v4.78.0 by @renovate[bot] in #2025
- chore: enable type checking, fix invalid configurations and types by @elecmonkey in #1978
- chore(deps): update dependency @rspack/lite-tapable to ^1.2.0 by @renovate[bot] in #2032
- chore(deps): update all patch dependencies by @renovate[bot] in #2031
- chore: include test files in type checking, fix invalid configurations and types by @elecmonkey in #1979
- chore(deps): update dependency @rstest/playwright to v0.12.0 by @renovate[bot] in #2014
- chore: enable Rstest lint rules and fix discovered issues by @elecmonkey in #1981
- chore(deps): upgrade Rstack CLI to 0.8.0 by @SoonIter in #2036
- release: v2.0.0-rc.1 by @yifancong in #2038
- chore(deps): upgrade pnpm to 12.6 and enable autoDedupe by @chenjiahan in #2044
- chore(deps): update all patch dependencies by @renovate[bot] in #2047
- chore(deps): update dependency @rspack/lite-tapable to ^1.3.0 by @renovate[bot] in #2060
- chore(core): remove obsolete webpack references from core and CLIs by @chenjiahan in #2066
- chore(deps): update dependency ws to v8.22.0 by @renovate[bot] in #2062
- chore(deps): update dependency memfs to v4.80.0 by @renovate[bot] in #2061
- chore(deps): update all patch dependencies by @renovate[bot] in #2059
- revert(client): remove WebMCP report tools by @yifancong in #2087
- chore(deps): update dependency @lynx-js/react to ^0.127.0 by @renovate[bot] in #2092
- chore(deps): update all patch dependencies by @renovate[bot] in #2091
- release: v2.0.0-rc.2 by @yifancong in #2096
- release: v2.0.0-rc.3 by @yifancong in #2097
- release: v2.0.0 by @yifancong in #2108
New Contributors
- @mojobeeping made their first contribution in #1723
- @coclock made their first contribution in #1748
- @chrstphe made their first contribution in #1865
- @ScriptedAlchemy made their first contribution in #1900
- @Zengzzhao made their first contribution in #1928
- @dgaponov made their first contribution in #1922
- @dajiaohuang made their first contribution in #1942
- @SyMind made their first contribution in #2007
- @dvd233 made their first contribution in #2075
Full Changelog: v1.6.5...b283966