vantage-md 0.7.1 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,39 +1,134 @@
1
1
  # Changelog
2
2
 
3
- What changed in each release of Vantage, newest first.
4
-
5
- Releases before 0.7.0 are summarized one section per minor line — `0.6.x`,
6
- `0.5.x` — rather than one per patch release. The per-patch detail is in the
7
- commit log.
3
+ What changed in each release of Vantage, newest first. Releases before 0.7.0
4
+ are summarized one section per minor line; the commit log has the rest.
8
5
 
9
6
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
10
7
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
11
8
 
9
+ ## [0.8.1] - 2026-10-02
10
+
11
+ If your `.vantage.toml` sets a `target` before 0.8, such as `target = "0.7"`,
12
+ `vantage-check` no longer asks you to write `question` on an open question,
13
+ because a viewer before 0.8 offers its one-click answer only on an `oq`: it stops
14
+ warning on an `oq` (`vantage/oq-deprecated`), and tells a question with no
15
+ directive to take one (`vantage/oq-missing`). An `oq` on a 🔒 or ✅ question is
16
+ still an error. A checker before 0.8 ignores the `target` line, where 0.7.1
17
+ rejects `"vantage/oq-deprecated" = "off"`. See
18
+ [When Your Readers Are on 0.7](userguide/guides/vantage-check.md#when-your-readers-are-on-07).
19
+
20
+ ## [0.8.0] - 2026-10-02
21
+
22
+ **Highlights.** Vantage 0.8 puts every open question in your design docs on one
23
+ page, in roadmap order, hands your answers to an agent in one copy, and serves a
24
+ whole folder of clones with `vantage ~/code`.
25
+
26
+ ### Added
27
+
28
+ **The planning page.** Press `g p`, or run `vantage-check index`, to see what a
29
+ repository's planning documents still owe: questions that need a ruling, what
30
+ waits on what, and which documents are ready to build. Answer questions from
31
+ their cards, then hand the work to an agent with **Copy answers** or **Copy
32
+ agent request**. Links to planning documents get badges such as
33
+ `in-review · DESIGN · 💬 5`, and with several `roadmap.md` files the page lets
34
+ you pick one. See [Planning Documents](userguide/guides/planning.md).
35
+
36
+ **Inline SVG.** An `<svg>` wrapped in a `<div>`, with no blank line inside,
37
+ renders as a drawing. Colors written in `style` are dropped, so Inkscape and
38
+ matplotlib exports render black. GitHub and Vantage 0.7 drop the drawing, so
39
+ follow it with a `<!-- vantage: fallback -->` paragraph saying what it shows,
40
+ which only Vantage 0.8 hides. See
41
+ [Inline SVG](docs/reference/inline-markup.md#inline-svg).
42
+
43
+ **`question` replaces `oq`.** One `question` directive declares a question in
44
+ any state, and `oq` still works but is deprecated. Vantage 0.7 drops a
45
+ `question`, losing its one-click answer, so keep `oq` on open questions until
46
+ every reader is on 0.8, and turn its new warning off with
47
+ `"vantage/oq-deprecated" = "off"` under `[check.rules]`. Keep running the newest
48
+ checker meanwhile: 0.7.1 rejects that line and the new directives. See
49
+ [When Your Readers Are on 0.7](userguide/guides/vantage-check.md#when-your-readers-are-on-07).
50
+
51
+ **Answers by comment.** A comment on a question is its answer, whether you take
52
+ its leaning, use **Answer…**, or comment anywhere in it. The question then shows
53
+ as answered, in the document and on its planning card, and no longer counts as
54
+ needing you. See
55
+ [Planning Documents](userguide/guides/planning.md#a-comment-on-a-question-is-your-answer).
56
+
57
+ ### Changed
58
+
59
+ **Unknown config keys.** An unknown `.vantage.toml` key no longer breaks the
60
+ server or the checker. `vantage-check` used to exit `2`, and the server ignored
61
+ the whole file over one in `[starred]`. From 0.8.0, a checker older than a
62
+ top-level `target`, the oldest release your readers use, refuses to run. See
63
+ [Keys From a Newer Release](userguide/reference/configuration.md#keys-from-a-newer-release).
64
+
65
+ **Your release in the review prompt.** The prompt's check command names it, as
66
+ `VANTAGE_VIEWER=0.8.0 uvx vantage-check <file>`, and so does the planning page's
67
+ agent request, so a later checker can write for the viewer you run. See
68
+ [How agents find out about it](userguide/guides/vantage-check.md#how-agents-find-out-about-it).
69
+
70
+ **Hand-written HTML.** It and Mermaid can no longer draw over Vantage's own
71
+ page. Vantage drops a `class` Markdown did not put there, a `style` whose
72
+ `display` is `contents` or unlisted, and a Mermaid diagram's `themeCSS` and font
73
+ families. `vantage-check` reports none of these. See
74
+ [Security](docs/reference/inline-markup.md#security).
75
+
76
+ **A folder of clones.** `vantage ~/code` serves each clone as its own project,
77
+ and the Markdown outside them as one more, when the directory is not inside a
78
+ git repository. Only `--one-project`, the old behavior, shows review comments
79
+ left on that Markdown. See
80
+ [Serve a directory of clones](userguide/getting-started.md#serve-a-directory-of-clones).
81
+
82
+ **A startup tip.** `vantage` started in a terminal mentions the background
83
+ service. `VANTAGE_NO_TIPS=1`, or `tips = false` in your config, turns it off.
84
+
85
+ **New checker findings.** Some can fail a CI job, so
86
+ [pin the checker](userguide/guides/vantage-check.md#in-ci) to take them when you
87
+ choose. `planning/depends-on-missing` and `vantage/question-name`, an `oq` on a
88
+ 🔒 or ✅ question, are errors. The new warnings, which fail `--strict`, are
89
+ `planning/question-length`, `vantage/oq-deprecated`, `vantage/question-layout`
90
+ and `prose/inline-list`, on a paragraph that runs `(a) (b) (c)` together. Check
91
+ a file named `index` as `vantage-check ./index`, since `index` is now a command.
92
+
93
+ ### Fixed
94
+
95
+ - A request for `docs/../.vantage/…`, or on macOS for any case of `.git` or
96
+ `.vantage` such as `.GIT/config` (which can hold a token), read the real file.
97
+ Vantage refuses both now.
98
+ - Review mode's **Copy** quotes each path, so a file name holding `$(…)` or a
99
+ backtick cannot run a command.
100
+ - On a `vantage build` site, a heading's `#` link left an address that opened a
101
+ blank page. Rebuild and redeploy to fix it; see
102
+ [Page URLs](userguide/guides/static-sites.md#page-urls).
103
+ - On macOS, a large tree could use up the server's open files and stop it.
104
+ - A document reloaded when only its attributes changed, as Spotlight and backup
105
+ tools do.
106
+ - A page in a project or folder named `api` showed a JSON 404 on a reload.
107
+ - The sidebar's recent files could miss or misplace a document just written.
108
+
109
+ ### Contributors
110
+
111
+ Thanks to Eduardo Hidalgo ([@edus44](https://github.com/edus44)) for inline SVG.
112
+
12
113
  ## [0.7.1] - 2026-09-27
13
114
 
14
115
  ### Added
15
116
 
16
- **Recent files across all projects on `Shift+R`.** Pressing `Shift+R` opens the
17
- recent files modal scoped to all configured projects, matching `r` for the
18
- current project. Rows show their project name and update live via the watcher.
19
- You can navigate the list with arrow keys or `j` and `k`. See
117
+ **`Shift+R` lists recent files across all projects,** as `r` does for the
118
+ current one, with each row's project name. See
20
119
  [Recently Changed Files](userguide/reference/keyboard-shortcuts.md#recently-changed-files).
21
120
 
22
- **Open picker items in a new tab.** Pressing `Alt+Enter` or `Ctrl+Enter` (or `Cmd+Enter`
23
- on macOS) in the file picker (`t`, `Shift+T`) or project picker (`Shift+P`) opens
24
- the highlighted row in a new browser tab. Ctrl-click and middle-click on any row
25
- work as well. See [File Picker](userguide/reference/keyboard-shortcuts.md#file-picker).
121
+ **`Alt+Enter` or `Ctrl+Enter` (`Cmd+Enter` on macOS) opens the highlighted row
122
+ of a picker in a new tab,** as do Ctrl-click and middle-click. See
123
+ [File Picker](userguide/reference/keyboard-shortcuts.md#file-picker).
26
124
 
27
125
  ### Fixed
28
126
 
29
- - Build output directories (`target`, `build`, `dist`) and tool caches (`.cache`,
30
- `__pycache__`, `.pi`, and test/lint caches) are excluded from file listings,
31
- repository discovery, and the filesystem watcher by default. This prevents
32
- inotify watch exhaustion and excessive disk I/O while running builds in
33
- watched repositories. See [Ignore Files and Live Reload](userguide/reference/configuration.md#ignore-files-and-live-reload).
34
- - Linked Git worktrees are excluded from repository auto-discovery, directory
35
- listings, file picker results, and the live watcher, avoiding duplicate
36
- trees and redundant filesystem watches.
127
+ - Build output (`target`, `build`, `dist`) and tool caches such as `.cache` and
128
+ `__pycache__` are no longer listed, discovered or watched by default, so a
129
+ build no longer exhausts inotify watches. Linked Git worktrees are left out
130
+ too, so no tree shows twice. See
131
+ [Ignore Files and Live Reload](userguide/reference/configuration.md#ignore-files-and-live-reload).
37
132
 
38
133
  ## [0.7.0] - 2026-09-23
39
134
 
@@ -42,101 +137,56 @@ from `.vantage.toml`.
42
137
 
43
138
  ### Added
44
139
 
45
- **Color themes.** Pick a palette under **Colors** in the settings menu. Six come
46
- with Vantage: Catppuccin, Gruvbox, Lila, Nord, Solarized, and Tokyo Night, each
47
- with its own light and dark variants, alongside the default look, now called
48
- Slate.
49
-
50
- To write your own, put a CSS file in `~/.config/vantage/themes/`. It shows up in
51
- the menu on the next page load, with no restart. Set `theme = "gruvbox"` in your
52
- config to start every browser in one. A project can suggest a theme in its
53
- `.vantage.toml`, and your own choice always wins. A theme with no dark colors is
54
- listed as "(light only)". Every built-in theme keeps its text at 3:1 contrast or
55
- better in both modes, checked in a real browser; your own themes aren't checked.
56
- Review mode's comment colors and printing still ignore the theme. See
140
+ **Pick a color theme under Colors in the settings menu:** six come with Vantage,
141
+ each with light and dark variants, and the default look is now called Slate.
142
+ Add your own as a CSS file in `~/.config/vantage/themes/`, or set
143
+ `theme = "gruvbox"` in your config to start every browser in one. See
57
144
  [Color Themes](userguide/guides/themes.md).
58
145
 
59
- **Bookmarks.** Click the star next to a document's name to bookmark it. Folders
60
- work too. Bookmarks appear in a **Starred** section above the file tree. They're
61
- stored in `~/.local/share/vantage/starred/` instead of in your browser, so they
62
- survive a restart and show up in every tab. If a bookmarked file disappears, the
63
- entry stays put and offers to remove itself when you open it.
64
-
65
- A project can also list the documents worth reading first in its `.vantage.toml`,
66
- and you can list files you always want starred in your own config. Those entries
67
- are marked with a pin and name the file that added them. See
146
+ **Click the star beside a document or folder to bookmark it in the Starred
147
+ section above the file tree.** Bookmarks are kept in
148
+ `~/.local/share/vantage/starred/`, not your browser, so every tab sees them, and
149
+ a project's `.vantage.toml` and your config can list pinned entries. See
68
150
  [Starred](userguide/features.md#starred).
69
151
 
70
- **Open questions in the contents panel.** A document's open questions now appear
71
- in the table of contents, under the heading they sit below, with a count next to
72
- **Contents**. `💬 3` means three are waiting on a decision; `💬 1 ✅ 2` means one
73
- is open and two are answered. Click one to jump to it. See
74
- [Table of Contents](userguide/features.md#table-of-contents).
152
+ **A document's open questions appear under their headings in its table of
153
+ contents,** with a count beside **Contents**: `💬 1 ✅ 2` means one open and two
154
+ answered. See [Table of Contents](userguide/features.md#table-of-contents).
75
155
 
76
156
  ### Changed
77
157
 
78
- Settings now follow you between tabs. Before, a second tab read most settings
79
- once when it loaded and then drifted, so changing the theme in one tab left the
80
- other on the old one. `Shift+D` had the same problem inside a single tab: it
81
- changed the page without updating the settings menu. The sidebar and its width,
82
- the tree filters, the project sort order, light/dark, and the color theme all
83
- stay in sync now.
84
-
85
- Review mode is a deliberate exception. Two tabs are usually on different
86
- documents, and picking up a toggle from another tab would close the review pane
87
- while you're partway through a comment.
158
+ **Settings follow you between tabs:** the sidebar and its width, the tree
159
+ filters, the project sort order, light/dark and the color theme. Review mode
160
+ does not, so a toggle in one tab cannot close the review pane in another.
88
161
 
89
162
  ### Fixed
90
163
 
91
- - The file pickers (`t`, `Shift+T`, `Shift+R`, `Shift+P`) reload their list every
92
- time they open, and a picker that's already open keeps up with the filesystem.
93
- Before, a file created after the page loaded was unfindable until you
94
- reloaded.
95
- - A modified file's icon was too faint to read in the file tree in light mode.
96
- - A document that fails to load no longer moves you off the one you're reading,
97
- and the error names the file you actually asked for.
98
- - A slow response for a document you've already navigated away from is thrown
99
- away instead of replacing what you're reading.
100
- - `vantage-check check --config <a directory>` now says
101
- `docs is a directory, not a config file` and exits 2, instead of printing a
102
- stack trace.
164
+ - The file pickers reload their list each time they open, so a file created
165
+ after the page loaded can be found without a reload.
166
+ - A document that fails to load, or a slow response for one you have left, no
167
+ longer replaces the one you are reading.
168
+ - `vantage-check check --config <a directory>` says it is a directory and exits
169
+ 2, instead of printing a stack trace.
103
170
 
104
171
  ### Contributors
105
172
 
106
173
  Thanks to [@nichiflu](https://github.com/nichiflu) for the initial color-theme
107
174
  implementation.
108
175
 
109
- ### Works well with
110
-
111
- [matt-craft](https://github.com/mschulkind-oss/matt-craft) is out — the skills I use to
112
- write the documents I then read in Vantage: design notes that carry their open
113
- questions, roadmaps, research rounds, user stories, and one for Vantage's own Markdown
114
- conventions. It is not part of Vantage and Vantage does not need it. If you write your
115
- own documents your own way, nothing here changes for you.
116
-
117
176
  ## 0.6.x
118
177
 
119
178
  _0.6.0 – 0.6.2, September 2026._
120
179
 
121
- Long documents have a table of contents. The list button beside the breadcrumb
122
- shows the document's headings in the left margin, and the list stays put while
123
- you scroll. The button beside it lets the text fill the pane. The reading band
124
- moved to the left edge too, so the file list, the contents, and the text sit
125
- together.
180
+ Long documents have a table of contents: the list button beside the breadcrumb
181
+ shows the headings in the left margin, and the button beside it lets the text
182
+ fill the pane.
126
183
 
127
- - Serving a git repository no longer makes the browser reload itself once a
128
- second. Vantage's own `git status` calls rewrote `.git/index`, and the watcher
129
- read that as your edit.
184
+ - Serving a git repository no longer makes the browser reload once a second.
130
185
  - A repository cloned under one of your `source_dirs` shows up within thirty
131
- seconds, with no restart. One whose directory goes away is dropped, then
132
- picked back up when it returns. See
133
- [Daemon Mode](userguide/guides/daemon-mode.md).
186
+ seconds, with no restart. See [Daemon Mode](userguide/guides/daemon-mode.md).
134
187
  - A port you name is bound exactly or startup fails. Only the default 8000 walks
135
- to the next free port, and it tells you which one it took.
136
- - Images on adjacent lines render on one row, the way GitHub lays them out. A
137
- README's badges used to stack into a column.
138
- - `vantage-check` splits a run across worker threads by default, and the report
139
- reads the same either way.
188
+ to the next free port.
189
+ - Images on adjacent lines render on one row, as on GitHub.
140
190
 
141
191
  ### Contributors
142
192
 
@@ -148,90 +198,67 @@ browser reloads.
148
198
 
149
199
  _0.5.0 – 0.5.10, May to September 2026._
150
200
 
151
- Vantage stopped being a Python server and became one Go binary. The viewer and
152
- the shortcuts are the same; installing it is not. You install it with `brew
153
- install`, `uvx vantage-md ~/notes`, or a platform archive from a release.
201
+ Vantage stopped being a Python server and became one Go binary. Install it with
202
+ `brew install`, `uvx vantage-md ~/notes`, or a platform archive from a release.
154
203
  `vantage serve` opens your browser, and `--no-open` stops it.
155
204
 
156
- - `vantage-check` is new. It runs your documents through the viewer's own
157
- pipeline and reports dead links, dead anchors, broken mermaid diagrams, and
158
- style problems. See [vantage-check](userguide/guides/vantage-check.md).
159
- - You can mark a document up with `<!-- vantage: … -->` comments that GitHub
160
- ignores and Vantage reads: a status chip beside a heading, collapsible
161
- sections, emphasis, and badges. GitHub's alert blocks render too.
162
- - Review mode was rebuilt. A comment anchors to a whole block, replies thread, a
163
- rail shows where the comments are, and you can answer an open question in one
164
- click. Agents reply through a `.vantage/` directory. See
205
+ - `vantage-check` is new. It reports dead links, dead anchors, broken Mermaid
206
+ diagrams, and style problems. See
207
+ [vantage-check](userguide/guides/vantage-check.md).
208
+ - `<!-- vantage: … -->` comments, which GitHub ignores, add status chips,
209
+ collapsible sections, emphasis, and badges. GitHub's alert blocks render too.
210
+ - Review mode was rebuilt: a comment anchors to a whole block, replies thread,
211
+ and agents reply through a `.vantage/` directory. See
165
212
  [The `.vantage/` directory](userguide/guides/review-inbox.md).
166
213
  - The "What's New" popup, the changed-document highlight, and the jj history
167
214
  viewer were removed.
168
- - `.vantageignore` and `~/.config/vantage/ignore` keep files out of the tree, and
169
- the sidebar has a drag handle that remembers its width.
215
+ - `.vantageignore` and `~/.config/vantage/ignore` keep files out of the tree.
170
216
 
171
217
  ## 0.4.x
172
218
 
173
219
  _0.4.0 – 0.4.2, April 2026._
174
220
 
175
- Installing Vantage got short. `uvx vantage-md ~/notes` started the server and
176
- opened your browser at the directory you named, and naming a file landed on that
177
- file with the sidebar already expanded. There was a Homebrew formula as well.
178
- macOS became a platform Vantage was tested on.
179
-
180
- - Review mode became per file. Turning it on for one document no longer followed
181
- you to the next, and the toggle survived a reload even before you had written a
182
- comment.
183
- - Hovering any paragraph in review mode put a button in the gutter, so you could
184
- comment on a whole block without selecting text first.
185
- - You could edit a comment in place, from the document or from the sidebar.
186
- Resolved comments collapsed into one indicator instead of asking to be
187
- dismissed one at a time.
188
- - A comment you had just written was sometimes marked "Outdated" immediately.
189
- - `log_level` in the config, `VANTAGE_LOG_LEVEL` in the environment. The watcher
190
- reported your inotify limits at startup and warned near the ceiling, which is
191
- the usual reason live reload stops working.
221
+ `uvx vantage-md ~/notes` started the server and opened your browser at the
222
+ directory you named, a Homebrew formula arrived, and macOS became a tested
223
+ platform.
224
+
225
+ - Review mode became per file, and hovering a paragraph put a comment button in
226
+ the gutter.
227
+ - You could edit a comment in place, and resolved comments collapsed into one
228
+ indicator.
229
+ - `log_level` in the config and `VANTAGE_LOG_LEVEL` in the environment arrived,
230
+ and the watcher warned near your inotify limit, the usual reason live reload
231
+ stops.
192
232
 
193
233
  ## 0.3.x
194
234
 
195
235
  _0.3.0 – 0.3.8, April 2026._
196
236
 
197
- This is the line that added review mode. You turned it on for a document,
198
- selected some text, and left a comment. The server stored the comments, so they
199
- survived a restart. When the text under a comment changed, the comment turned
200
- amber and said "Outdated". Every save while review mode was on snapshotted the
201
- previous version, so you could step back through revisions and see which
202
- paragraphs had changed. One button copied every comment as Markdown quotes, with
203
- line numbers and surrounding context, ready to paste to an agent.
204
-
205
- - Opening a project no longer waited for its file tree. The document rendered
206
- first and the sidebar filled in behind it.
207
- - Headings got hover anchors, and `#L42` or `#L42-L50` in the URL scrolled to
208
- those source lines and highlighted them.
209
- - You could collapse the sidebar to give the document the window, and reveal
210
- hidden or gitignored files with new toggles.
211
- - TOML frontmatter between `+++` fences was parsed and shown, with taxonomies and
212
- extra fields as tag pills.
213
- - A red banner with a timer appeared when the page lost its connection, so a
214
- document that had stopped live-reloading said so.
237
+ This line added review mode. You selected text in a document and left a comment,
238
+ which the server stored and marked "Outdated" when the text under it changed.
239
+ Each save in review mode snapshotted the previous version so you could step
240
+ back through revisions, and one button copied every comment as Markdown for an
241
+ agent.
242
+
243
+ - Opening a project no longer waited for its file tree.
244
+ - Headings got hover anchors, and `#L42` or `#L42-L50` in the URL highlighted
245
+ those source lines.
246
+ - You could collapse the sidebar and show hidden or gitignored files.
247
+ - TOML frontmatter between `+++` fences was shown, with taxonomies as tag pills.
248
+ - A red banner appeared when the page lost its connection.
215
249
 
216
250
  ## 0.2.x and earlier
217
251
 
218
252
  _0.0.1 – 0.2.0, February to March 2026._
219
253
 
220
- Where Vantage started. It served the Markdown in your git repositories over a
221
- local port and reloaded the page when you saved: GitHub-flavored Markdown,
222
- syntax highlighting, KaTeX math, mermaid diagrams you could click to zoom,
223
- commit history and diffs, a fuzzy file picker on `t`, dark mode on `Shift+D`,
224
- vim-style scrolling, and a print stylesheet. It could also export a static site
225
- to host on Cloudflare Pages or S3. The server was written in Python then.
254
+ Where Vantage started: a Python server for the Markdown in your git
255
+ repositories, reloading the page when you saved, with GitHub-flavored Markdown,
256
+ syntax highlighting, KaTeX math, Mermaid diagrams, commit history and diffs, a
257
+ fuzzy file picker on `t`, dark mode on `Shift+D`, vim-style scrolling, and
258
+ static-site export.
226
259
 
227
260
  - `Shift+T` searched files across every project, `P` switched projects, `r` and
228
261
  `Shift+R` found recently modified files, and `y` copied the current file's
229
- absolute path.
230
- - `source_dirs` in the config found every git repository under a directory, so
231
- you did not have to list them one by one.
232
- - The project picker became a full page, with repository names, relative
233
- timestamps, and a toggle between alphabetical and recent order.
234
- - A "What's New" popup showed the changelog the first time you opened a new
235
- version. You could turn it off in settings. Vantage dropped it in 0.5.
236
- - A jj history and evolution viewer sat beside the git one, for Jujutsu
237
- repositories. That went in 0.5 too.
262
+ path.
263
+ - `source_dirs` in the config found every git repository under a directory.
264
+ - The project picker became a full page.
package/README.md CHANGED
@@ -73,6 +73,32 @@ function Docs({ content, path }) {
73
73
 
74
74
  The React component includes mermaid diagram rendering (lazy-loaded), frontmatter display, and syntax highlighting out of the box.
75
75
 
76
+ ### Frontmatter card
77
+
78
+ `MarkdownViewer` draws a document's frontmatter with `FrontmatterDisplay`, which
79
+ is also exported on its own. It takes the parsed `frontmatter` and one optional
80
+ prop, `linkIds`: the ids of the document's own questions, as its
81
+ `<!-- vantage: question id=OQ-… -->` directives name them (or the deprecated
82
+ `<!-- vantage: oq id=OQ-… -->`). When it is given, each of
83
+ those ids that appears as a whole word in the top-level `next` key (a document's
84
+ next step, one line of text) is drawn as a link to `#OQ-…`, the question's
85
+ anchor. The rest of `next`, and every other value, stays plain text.
86
+
87
+ ```tsx
88
+ import { FrontmatterDisplay } from "vantage-md/react";
89
+
90
+ <FrontmatterDisplay
91
+ frontmatter={{ status: "in-review", next: "Rule OQ-B2 first" }}
92
+ linkIds={["OQ-B2"]}
93
+ />;
94
+ // next renders as: Rule <a href="#OQ-B2">OQ-B2</a> first
95
+ ```
96
+
97
+ Pass only ids a question in the document carries. An id that is left only in
98
+ the text, such as one kept in a table of past decisions after its question was
99
+ removed, has no anchor to land on. Without `linkIds`, `next` renders like any
100
+ other value, which is what `MarkdownViewer` does: it never passes the prop.
101
+
76
102
  ### Your own processor, Vantage's chain
77
103
 
78
104
  `buildPipeline` returns the exact remark and rehype lists `renderMarkdown` and