$ the-wire · showcase
VitePress fixes slot-less client components and dropped image alt text
By RepoJournal · Filed · About Vue.js · Composed from the cited sources · methodology
Five VitePress client and markdown fixes land, three of them changing what readers actually see on the page: client-only components with slots, themed image alt text, and links inside container titles.
fix(client): forward slots to client components vuejs/vitepress
`defineClientComponent` used to discard the slots its parent passed, so a client-only component used in Markdown with default or named slots rendered its fallback content even after loading. The wrapper's slots are now forwarded when `args` is omitted, empty, or props-only, and explicit `h()` children still win.
fix(theme): preserve alt overrides for themed images vuejs/vitepress
`VPImage` dropped its `alt` prop whenever `image` had light or dark sources, losing the caller's description and making `alt=""` useless for marking such images decorative. It now forwards `alt ?? image.alt` to both variants, with reactive overrides updating both.
fix(markdown): preserve URL settings in container titles vuejs/vitepress
Links in custom container titles and details summaries were rendered without the page's URL settings, so with `base: './'` a `[Guide](/guide/start.md)` link on `nested/page.md` resolved differently inside the title than in the body, and titles kept `.html` under `cleanUrls`. `cleanUrls`, `relativePath`, and `relativizeUrls` are now passed into title rendering.
fix(hmr): invalidate all cached revisions of an importing page vuejs/vitepress
Editing a page produces several markdown cache entries for the same path, but `clearCache(relativePath)` removed only the first because `LRUCache.find()` stops on the first true callback, so undoing an earlier edit could restore stale content in the current page. The fix iterates cache keys and drops every entry for the invalidated page, with regression tests covering includes and snippets.