vantage-md 0.7.0 → 0.8.0

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