Highlights
🧭 New Blog: How to build an Agent-friendly website
Can an AI agent find, read, and understand your documentation as easily as a human? This new guide shows how Rspress combines llms.txt, SSG-MD, Accept: text/markdown, and injectLlmsHint to build documentation for both humans and Agents—and how AFDocs makes the result measurable.
Read the blog: How to build an Agent-friendly website
🔗 Normalize clean URLs before rendering
Static hosts can serve the same page through URLs such as /guide, /guide.html, /guide/, and /guide/index.html. Rspress can now match the actual route first and normalize the browser address bar to the format selected by route.cleanUrls before the page renders:
import { defineConfig } from '@rspress/core';
export default defineConfig({
route: {
cleanUrls: true,
cleanUrlsRedirect: true,
},
});With this configuration, /guide.html becomes /guide, while /reference/index.html becomes /reference/. Normalization uses history.replaceState, does not reload the page, and preserves base, query parameters, hashes, and existing history state.
This is a browser-side fallback rather than an HTTP 301/308 redirect. Keep server or CDN redirects for canonical SEO behavior.
Documentation: route.cleanUrlsRedirect
Blog: The trailing slash problem in static sites
Related PR: #3571
What's Changed
New Features 🎉
- feat(route): add cleanUrlsRedirect option by @SoonIter in #3571
- feat(create-rspress): support --no-git by @chenjiahan in #3594
Performance 🚀
Bug Fixes 🐞
- fix(theme/Llms): omit redundant Markdown page hint by @SoonIter in #3567
- fix(theme): Fixed ToC tooltips that could contain html strings by @elliotcourant in #3588
- fix: configure Rslint type checking for workspace projects by @elecmonkey in #3599
- fix(plugin-twoslash): stop tracking hover popup position outside of visible state by @Karibash in #3603
- fix(ssg-md): include siteOrigin in Markdown links by @SoonIter in #3606
- fix(route/localeRedirect): avoid false redirect-only detection by @SoonIter in #3609
- fix(core): normalize persistent cache build dependency path by @hardfist in #3625
Document 📖
- docs: add version badges for config options by @SoonIter in #3580
- docs: add before and after guidance to PR template by @SoonIter in #3607
- docs: explain trailing slash behavior by @SoonIter in #3582
- docs(homepage): add core feature sections to homepage by @SoonIter in #3608
- docs: remove outdated CodeSandbox links by @chenjiahan in #3616
- docs: remove empty useDark code block by @dajiaohuang in #3621
- docs: update Web Infra QoS link by @dajiaohuang in #3623
- docs: fix SourceCode implementation links by @dajiaohuang in #3622
- docs: align agent tool requirements by @dajiaohuang in #3624
- docs: add agent-friendly website guide by @SoonIter in #3613
Other Changes
- chore(deps): update dependency @rslint/core to ^0.7.1 by @renovate[bot] in #3551
- chore(deps): update playwright monorepo to v1.62.0 by @renovate[bot] in #3553
- test(e2e): use node --run for fixture scripts by @chenjiahan in #3568
- test(e2e): use two workers in CI by @chenjiahan in #3570
- chore(deps): update dependency nx to v22 [security] by @renovate[bot] in #3574
- chore(deps): update rstack by @renovate[bot] in #3577
- chore(deps): update all patch dependencies by @renovate[bot] in #3576
- chore(deps): update pnpm to v11.18.0 by @renovate[bot] in #3579
- test(e2e): declare React dependencies in fixtures by @SoonIter in #3573
- chore(deps): update actions/setup-node action to v6.5.0 by @renovate[bot] in #3575
- chore(deps): update docsearch to ^4.7.0 by @renovate[bot] in #3578
- chore(deps): update rstack to v2 by @renovate[bot] in #3585
- test(e2e): avoid HMR restart race by @SoonIter in #3583
- chore(deps): replace create-rstack with create-toolkit by @chenjiahan in #3589
- chore(infra): remove changesets tooling by @SoonIter in #3593
- chore(deps): update dependency memfs to ^4.68.0 by @renovate[bot] in #3597
- chore(deps): update pnpm to v11.20.0 by @renovate[bot] in #3598
- chore(deps): update rstack by @renovate[bot] in #3596
- chore(deps): update all patch dependencies by @renovate[bot] in #3595
- chore(deps): update all patch dependencies by @renovate[bot] in #3604
- chore(deps): update rstack by @renovate[bot] in #3605
- test(e2e): migrate to @rstest/playwright by @9aoy in #3569
- chore(deps): update all patch dependencies by @renovate[bot] in #3611
- chore(deps): update rstack by @renovate[bot] in #3612
- chore(deps): update pnpm to v11.22.0 by @renovate[bot] in #3615
- chore(deps): update dev-tools by @renovate[bot] in #3614
- test: clarify E2E and unit test titles by @SoonIter in #3610
- Release v2.0.20 by @SoonIter in #3626
New Contributors
- @dajiaohuang made their first contribution in #3621
- @hardfist made their first contribution in #3625
Full Changelog: v2.0.19...v2.0.20