mirror of https://github.com/vuejs/vitepress
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
2 weeks ago | |
|---|---|---|
| .. | ||
| clusters | 2 weeks ago | |
| README.md | 2 weeks ago | |
README.md
Salvageable closed PRs — vuejs/vitepress
Last reviewed 2026-08-03 · main @ v2.0.0-alpha.19
21 closed-but-unmerged pull requests address needs that are still real, still unimplemented, and not tracked by any open issue or PR. The table below ranks them; the per-area pages carry the full write-ups — what each PR did, why it was closed, why it still matters, and how to land it properly this time.
Reading the tables: salvage — the closed branch is still a usable starting point; reopen or rebase it. redo — the need is real, but reimplement fresh rather than reviving the old diff. Value is estimated impact (1–5), Effort is S/M/L, and Priority ranks areas by how much worthwhile work they hold.
Candidates
Ranked by value, then effort.
| PR | Title | Verdict | Value | Effort | Why now |
|---|---|---|---|---|---|
| #2002 | fix: allow language page without ending slash | salvage | 3 | S | getLocaleForPath still matches `^/${key}/`, so a bare /zh silently falls back to root-locale config, strings and search bucket; one regex in one tracked file. |
| #2010 | docs: DigitalOcean App Platform deploy steps | salvage | 3 | S | deploy.md still has no DigitalOcean section, though Kinsta, Stormkit, CloudRay and Hostinger were all added after this closed. |
| #3419 | fix(cli/shortcuts): CTRL-C should be a normal exit | salvage | 3 | S | shortcuts.ts:77 still exits 1 on Ctrl-C while the q quit shortcut at :52 exits 0 — a one-token reopen resolving a live inconsistency. |
| #4876 | feat(init): validate config directory is inside cwd | redo | 3 | S | The // TODO make sure directory is inside comment is still verbatim in src/node/init/init.ts; the original branch dragged in dozens of unrelated files, so redo clean. |
| #1236 | feat(theme): add ability to hide nav per-page | redo | 3 | M | No blank or bare layout exists in the theme today and no matching implementation ever landed, so per-page nav hiding is still unserved. |
| #1449 | feat: Smooth Scrolling behavior | redo | 3 | M | Filed six times and killed each time by the same two objections; redo as an opt-in themeConfig flag rather than an always-on global style. |
| #2329 | feat(theme): use inert for hidden mobile menus | salvage | 3 | M | composables/nav.ts and Layout.vue still have no inert or focus-trap handling; inert is now baseline, so the Vue-rendering workaround the PR needed is likely unnecessary. Subsumes #1448. |
| #2990 | feat(theme): allow link on nav item with children | redo | 3 | M | NavItemWithChildren still declares only text/items/activeMatch; needs an explicit design for click-to-navigate vs click-to-open on touch. |
| #3387 | Fix: Make the outline follow the page scroll | redo | 3 | M | .aside-container is position: fixed with overflow-y: auto and no scroll-into-view logic, so the active marker still leaves the viewport on long pages; three attempts, none merged. |
| #703 | perf(a11y): make font size follow user browser settings | redo | 3 | L | vars.css/base.css still hardcode px sizes, so browser text-zoom is ignored; redo scoped to font-size/line-height only, sidestepping the objections to the original 45-file sweep. |
| #348 | feat: allow displaying fallback when ads are blocked | redo | 2 | S | VPCarbonAds still leaves an empty 256px tinted block when an ad blocker fires; detect the blocked state and expose an opt-in fallback slot. |
| #1544 | Added smooth scrolling | redo | 2 | S | Self-closed duplicate of #1449 — the same smooth-scroll need; one decision covers both. |
| #2384 | refactor: standardize import sort | redo | 2 | S | Still no import-sort tooling in the repo; only worth doing as a prettier plugin plus one mechanical reformat, per brc-dd's stated preference. |
| #3885 | docs: add documentation for publicDir |
salvage | 2 | S | publicDir appears nowhere in docs/en/; one paragraph in asset-handling.md, folding in the un-landed half of #4600. |
| #4228 | feat(theme): add the success custom block |
salvage | 2 | S | ::: success styling is still absent while --vp-c-success-* variables sit unused; add the CSS + label, or document the customContainers route — the stale-bot close settled nothing. |
| #5002 | fix(cli): gate ora spinner behind tty check | salvage | 2 | S | task.ts:10 still constructs ora with no TTY gating, so non-interactive builds hide errors and look hung; brc-dd was open in principle and the thread just trailed off. |
| #2297 | fix: better .has-aside condition |
salvage | 2 | M | hasAside still ignores the carbonAds/slots/getHeaders edge cases; ships slot tests and is a true rebase candidate. |
| #4457 | feat(theme): add doc aside scroll spy | redo | 2 | M | Same aside scroll-spy need as #3387; self-closed as duplicate of #3654, which actually targets the left sidebar, not the outline. |
| #4575 | fix: grammar | salvage | 2 | M | ~16 files of English copy fixes, one commit per page, still largely applicable; the cost is review — keep genuine errors, drop style preferences. |
| #5097 | Allow overflow-x with horizontal scrolling in VPNav | redo | 2 | M | Nav items still clip silently on overflow; get a maintainer ruling first — wrapping was rejected on #1271, scrolling was never ruled on. |
| #116 | feat: support lowercase url | redo | 2 | L | Case-mismatched internal links still 404 on case-sensitive hosts; a design question, not a rebase — cheapest outcome is a dead-link-checker warning for case mismatches. |
By area
| Area | Priority | PRs | Summary |
|---|---|---|---|
| Markdown & content authoring | P1 | 1 | Add a ::: success custom container (#4228) using the --vp-c-success-* theme colors that currently have no container styling — low effort, but a maintainer call on whether the built-in container set grows. |
| Default theme navigation, outline & reading UX | P1 | 7 | Chronic requests for smooth scrolling (#1449, filed six times) and outline scroll-tracking (#3387), plus smaller fixes: per-page nav hiding (#1236), nav overflow (#5097), and the .has-aside condition (#2297). |
| Accessibility | P1 | 2 | Two live gaps in the default theme: the mobile-menu keyboard trap, now cheaply fixable with inert (#2329), and hardcoded px typography that ignores browser font-size settings (#703). |
| Config, CLI, types & public API | P1 | 3 | Three self-contained CLI ergonomics fixes: Ctrl-C exiting non-zero on a normal stop (#3419), a missing directory-escape check in vitepress init (#4876), and an ora spinner with no TTY gating (#5002). |
| Build pipeline, dev server & routing | P2 | 1 | No case-insensitive URL handling exists anywhere in the pipeline, so links whose case doesn't match the file on disk work in dev but 404 on case-sensitive hosts (#116). |
| Default theme configuration & extensibility | P2 | 2 | Two features worth implementing fresh: nav items whose dropdown label can also carry its own link (#2990), and a fallback slot for when Carbon Ads is blocked (#348). |
| i18n & locale handling | P2 | 1 | A bare /zh (no trailing slash) silently falls back to root-locale config, theme strings and search bucket; #2002 is a one-regex fix in the locale matcher. |
| Docs content, website & repo chores | P3 | 4 | Four small docs fixes: a DigitalOcean deploy entry (#2010), publicDir documentation (#3885), import-sort via tooling (#2384), and a still-applicable grammar pass (#4575). |