\n\n\u003Cimg width=\"308\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/0e1beb6b-d06b-436c-b106-c924fead87ab\" />\n\n\u003Cimg width=\"931\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/aef6f71a-fa28-4b7c-b512-e6386e18159a\" />\n\n### Describe the solution you'd like\n\nIn my [pull request](https://github.com/vuejs/vitepress/pull/4630), I've introduced custom components that can be overridden in the `enhanceApp` function. In these custom components, I can add custom logic for rendering text, such as using the Vue compile function. \n\nAdditionally, I added a flag to skip the title update, allowing for custom logic implementation. \n\nPlease also see my PR: [https://github.com/vuejs/vitepress/pull/4630](https://github.com/vuejs/vitepress/pull/4630).\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [x] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [x] Read the [docs](https://vitepress.dev).\n- [x] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [x] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[],4637,"Sidenav Components / Skip title update","2025-03-20T12:17:14Z","https://github.com/vuejs/vitepress/issues/4637",0.72628486,{"description":3071,"labels":3072,"number":3075,"owner":3029,"repository":3030,"state":3031,"title":3076,"updated_at":3077,"url":3078,"score":3079},"### Is your feature request related to a problem? Please describe.\n\nI want to be able to localize the Code Block feature.\n\n### Describe the solution you'd like\n\nI've found an option to overwrite the copy button tooltip, but it's not present in the `LocaleConfig\u003CThemeConfig>` type, so I can't overwrite it per locale. I couldn't find an existing option to overwrite the \"Copied\" text. I would like to be able to overwrite both strings per locale.\n\n### Describe alternatives you've considered\n\n_No response_\n\n### Additional context\n\nExisting option to overwrite the copy button tooltip:\r\nhttps://github.com/vuejs/vitepress/blob/730fc0851ab323d62757b7822f60e84a7cf93bdf/src/node/markdown/markdown.ts#L113-L117\r\n\r\nStrings to overwrite:\r\n\r\n\r\n\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.dev).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[3073,3074],{"name":3020,"color":3021},{"name":3023,"color":3024},4431,"Localize Code Block copy feature","2025-03-02T18:07:56Z","https://github.com/vuejs/vitepress/issues/4431",0.7295186,{"description":3081,"labels":3082,"number":3086,"owner":3029,"repository":3030,"state":3087,"title":3088,"updated_at":3089,"url":3090,"score":3091},"### Describe the bug\r\n\r\nWhen using [`base`](https://vitepress.vuejs.org/config/basics.html#base), `route.path` is different across client and server.\r\n\r\nFor example, when using base `/base/` and logging `route.path`, `vitepress build` will log `/index.html`, but when visited in the browser, it logs `/base/index.html`.\r\n\r\n\r\n### Reproduction\r\n\r\n[Minimal reproduction link](https://github.com/privatenumber/issue-reproductions/tree/master/reproductions/vuejs/vitepress/587)\r\n\r\n1. Create a project with the following files:\r\n\r\n.vitepress/config.js\r\n```js\r\nimport { defineConfig } from 'vitepress'\r\n\r\nexport default defineConfig({\r\n\tbase: '/base/'\r\n})\r\n```\r\n\r\nindex.md:\r\n```html\r\n\u003Cscript setup>\r\nimport { useRoute } from 'vitepress';\r\n\r\nconst route = useRoute();\r\nconsole.log(`\\n\\nBUG: \"route.path\" is different across server and client: \"${route.path}\"\\n\\n`);\r\n\u003C/script>\r\n\r\nHello world\r\n```\r\n\r\n2. Run`vitepress build` and see `/index.html` get logged\r\n\r\n3. Run `vitepress serve` and see `/base/index.html` get logged\r\n\r\n\r\n### Expected behavior\r\n\r\nFor `route.path` to be consistent across server and client.\r\n\r\n### System Info\r\n\r\n```shell\r\nN/A\r\n```\r\n\r\n\r\n### Additional context\r\n\r\nRelated: https://github.com/vuejs/vitepress/issues/446\r\n\r\n### Validations\r\n\r\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\r\n- [X] Read the [docs](https://vitepress.vuejs.org).\r\n- [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.",[3083],{"name":3084,"color":3085},"duplicate","cfd3d7",587,"closed","base not used in route.path in server side","2023-01-21T16:04:13Z","https://github.com/vuejs/vitepress/issues/587",0.69826055,{"description":3093,"labels":3094,"number":3095,"owner":3029,"repository":3030,"state":3087,"title":3096,"updated_at":3097,"url":3098,"score":3099},"### Is your feature request related to a problem? Please describe.\n\nI'm using Vue components that generate headers dynamically, and (of course) the headers I create in Vue components don't appear in the outline.\n\n### Describe the solution you'd like\n\nI'd like to be able to add headers to `page.headers` in my component.\n\n### Describe alternatives you've considered\n\nI tried manipulating `page.headers` in my component from `useData()`, but the headers are read-only at that point.\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.vuejs.org).\n- [X] Read the [Contributing Guidelines](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md).\n- [X] Check that there isn't already an issue that asks for the same feature to avoid creating a duplicate.",[],1145,"Dynamic Outline","2023-01-21T14:26:54Z","https://github.com/vuejs/vitepress/issues/1145",0.69984084,{"description":3101,"labels":3102,"number":3103,"owner":3029,"repository":3030,"state":3087,"title":3104,"updated_at":3105,"url":3106,"score":3107},"### Describe the bug\n\nHello, thank you so much for vitepress — we are using it for https://observablehq.com/plot/\r\n\r\nCurrently we see that the instant search **detailed list** feature works in `docs:dev` but does not work with `docs:preview` (nor in production). \r\n\r\nWe are currently using v1.0.0-alpha.72, but I tried locally upgrading to v1.0.0-beta.1 and the issue is still here.\r\n\n\n### Reproduction\n\nClone https://github.com/observablehq/plot\r\nchange vitepress version to v1.0.0-beta.1 in package.json\r\nrun yarn; yarn docs:build; yarn docs:preview\r\nopen the site and search “color”\r\n\r\nscreenshot: left: docs:dev; right: docs:preview\r\n\r\n\r\n\n\n### Expected behavior\n\nThe detailed list should appear.\n\n### System Info\n\n```sh\nSystem:\r\n OS: macOS 13.3.1\r\n CPU: (8) arm64 Apple M1\r\n Memory: 63.64 MB / 16.00 GB\r\n Shell: 5.9 - /bin/zsh\r\n Binaries:\r\n Node: 20.1.0 - ~/.nvm/versions/node/v20.1.0/bin/node\r\n Yarn: 1.22.19 - /opt/homebrew/bin/yarn\r\n npm: 9.6.4 - ~/.nvm/versions/node/v20.1.0/bin/npm\r\n Browsers:\r\n Chrome: 114.0.5735.106\r\n Firefox: 113.0.2\r\n Safari Technology Preview: 16.4\r\n npmPackages:\r\n vitepress: ^1.0.0-beta.1 => 1.0.0-beta.1\n```\n\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] Check if you're on the [latest VitePress version](https://github.com/vuejs/vitepress/releases/latest).\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\n- [X] Read the [docs](https://vitepress.dev).\n- [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.",[],2485,"Detailed list doesn't work with docs:preview (only works with docs:dev)","2023-06-15T00:04:10Z","https://github.com/vuejs/vitepress/issues/2485",0.7004058,{"description":3109,"labels":3110,"number":3112,"owner":3029,"repository":3030,"state":3087,"title":3113,"updated_at":3114,"url":3115,"score":3116},"### Describe the bug\r\n\r\nUsing both dynamic routing and `lastUpdated: true` causes the build to crash.\r\n\r\n### Reproduction\r\n\r\nI have the following structure:\r\n\r\n```\r\n.vitepress\r\n config.js\r\nsrc\r\n [test]\r\n index.md\r\n index.paths.js\r\n```\r\n\r\nIn `.vitepress/config.js`, `lastUpdated` was set to `true`. The following error occured:\r\n\r\n```\r\n[vitepress] spawn git ENOENT\r\nfile: C:/Users/\u003Cme>/source/repos/\u003Crepo>/src/1234/index.md\r\n✖ building client + server bundles...\r\nbuild error:\r\nError: spawn git ENOENT\r\n at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)\r\n at onErrorNT (node:internal/child_process:478:16)\r\n at processTicksAndRejections (node:internal/process/task_queues:83:21)\r\n```\r\n\r\nI have determined that the root cause is that: https://github.com/vuejs/vitepress/blob/main/src/node/markdownToVue.ts#L210 doesn't check if the file actually exists, causing https://github.com/vuejs/vitepress/blob/a07f959d472f1976d26c675066204eca9bc7c651/src/node/utils/getGitTimestamp.ts#L4 to spawn a process to get the git log of a nonexistent file, which fails with ENOENT because the file doesn't exist.\r\n\r\n### Expected behavior\r\n\r\nLast updated detection is disabled for dynamic routes.\r\n\r\n### System Info\r\n\r\n```sh\r\nProbably irrelevant, but:\r\n\r\n\r\n System:\r\n OS: Windows 10 10.0.22621\r\n CPU: (16) x64 AMD Ryzen 7 5700U with Radeon Graphics\r\n Memory: 763.48 MB / 9.85 GB\r\n Binaries:\r\n Node: 16.17.0 - C:\\Program Files\\nodejs\\node.EXE\r\n npm: 9.8.0 - C:\\Program Files\\nodejs\\npm.CMD\r\n pnpm: 8.5.0 - C:\\Program Files\\nodejs\\pnpm.CMD\r\n Browsers:\r\n Edge: Spartan (44.22621.1992.0), Chromium (114.0.1823.82)\r\n Internet Explorer: 11.0.22621.1\r\n npmPackages:\r\n vitepress: ^1.0.0-beta.5 => 1.0.0-beta.5\r\n```\r\n\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] Check if you're on the [latest VitePress version](https://github.com/vuejs/vitepress/releases/latest).\r\n- [X] Follow our [Code of Conduct](https://vuejs.org/about/coc.html)\r\n- [X] Read the [docs](https://vitepress.dev).\r\n- [X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.",[3111],{"name":3020,"color":3021},2646,"Last updated detection doesn't like dynamic routing","2023-08-07T00:04:29Z","https://github.com/vuejs/vitepress/issues/2646",0.703288,["Reactive",3118],{},["Set"],["ShallowReactive",3121],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$f3XAs_AyXr-2CNHCEc1pdBHrSCU3oypYGSRb58XAJeQM":-1},"/vuejs/vitepress/2892"]