Repository navigation
VOMD v1.2.0
Added
- Select and copy text. Drag to select (a drag that starts on a link selects, and a click still follows it), double-click for a word, triple-click for a paragraph, heading, code block or table row,
Shift+click to extend,Ctrl+Afor everything, and drag past the top or bottom of the window to scroll.Ctrl+C(alsoCtrl+Insert,Ctrl+Shift+Cand the Copy key) copies plain text: list items start with-, quoted lines with>, table cells are tab-separated, an image is its alt text and a link its text. The text is made only when a program pastes it, so copying a whole 5 MB document costs no memory until then (X11 INCR and Wayland pipes, in pieces of 64 KiB). On X11 and Wayland a selection made with the mouse (andCtrl+A) is also the primary selection, pasted with a middle click; the newprimary_selection = on|offsetting turns that off. As the window closes on X11 the clipboard manager, if there is one, is asked to keep the clipboard. Needs the newclipboardfeature, on by default; the smallest build leaves it out. Escclears the selection before it quits (after closing the toolbar's menu, as before).- A copy button on code blocks, as on GitHub: while the pointer is over a fenced or indented code block, a button shows in its upper right corner, and a click copies the block's code to the clipboard (not the primary selection, and a selection is left alone). The code is as written, with its tabs, indentation and blank lines, without the language tag, without the quote marks or list indent of what holds the block, and without a line break after the last line; a block of several MB is made only when something pastes it. The button turns into a check mark for two seconds, lights up and shows the hand under the pointer, scales with the zoom and the display, and is left off blocks too small for it. If there is no clipboard, a note says so. Part of the
clipboardfeature, so the smallest build has none.
Fixed
- An image decode that started just as the images wanted changed is counted in the room the image cache keeps free. Before, the cache could briefly fill the memory that decode used.
- With remote images on, a picture near the window could be fetched again and again after a few arrived at once: each body let in was the first thing the next one's room was made from.
Budgets, measured on the release runner
A shared runner is two to three times slower than the machine the time budgets
are for, so start and scroll times are reported here, not gated.
| Metric | Build | Measured | Budget | |
|---|---|---|---|---|
| ✅ | stripped binary | default |
3.91 MB | ≤ 4.0 MB |
| cold start, tiny.md | default |
115.5 ms | ≤ 100 ms (first of 20 runs) | |
| ✅ | warm start, tiny.md | default |
38.7 ms | ≤ 50 ms (median of 19) |
| ✅ | cold start, readme.md | default |
48.7 ms | ≤ 100 ms (first of 20 runs) |
| ✅ | warm start, readme.md | default |
43.9 ms | ≤ 50 ms (median of 19) |
| ✅ | cold start, spec.md | default |
45.4 ms | ≤ 100 ms (first of 20 runs) |
| ✅ | warm start, spec.md | default |
41.8 ms | ≤ 50 ms (median of 19) |
| cold start, huge.md | default |
147.1 ms | ≤ 100 ms (first of 20 runs) | |
| warm start, huge.md | default |
140.6 ms | ≤ 50 ms (median of 19) | |
| ✅ | idle RSS, 50 KB doc, 1080p | default |
17928 KB | ≤ 30000 KB |
| ✅ | idle CPU, 50 KB doc (idle at 65 ms) | default |
0 ticks/3s | ≤ 1 tick |
| ✅ | idle RSS, 5 MB doc, 1080p | default |
32528 KB | ≤ 60000 KB |
| ✅ | idle CPU, 5 MB doc (idle at 2295 ms) | default |
0 ticks/3s | ≤ 1 tick |
| ✅ | stripped binary | --no-default-features |
2.99 MB | ≤ 3.0 MB |
| ✅ | cold start, tiny.md | --no-default-features |
28.3 ms | ≤ 100 ms (first of 20 runs) |
| ✅ | warm start, tiny.md | --no-default-features |
40.4 ms | ≤ 50 ms (median of 19) |
| ✅ | cold start, readme.md | --no-default-features |
49.2 ms | ≤ 100 ms (first of 20 runs) |
| ✅ | warm start, readme.md | --no-default-features |
45.9 ms | ≤ 50 ms (median of 19) |
| ✅ | cold start, spec.md | --no-default-features |
46.6 ms | ≤ 100 ms (first of 20 runs) |
| ✅ | warm start, spec.md | --no-default-features |
44.0 ms | ≤ 50 ms (median of 19) |
| cold start, huge.md | --no-default-features |
150.1 ms | ≤ 100 ms (first of 20 runs) | |
| warm start, huge.md | --no-default-features |
139.9 ms | ≤ 50 ms (median of 19) | |
| ✅ | idle RSS, 50 KB doc, 1080p | --no-default-features |
18108 KB | ≤ 25000 KB |
| ✅ | idle CPU, 50 KB doc (idle at 64 ms) | --no-default-features |
0 ticks/3s | ≤ 1 tick |
| ✅ | idle RSS, 5 MB doc, 1080p | --no-default-features |
35256 KB | ≤ 55000 KB |
| ✅ | idle CPU, 5 MB doc (idle at 2090 ms) | --no-default-features |
0 ticks/3s | ≤ 1 tick |
| ✅ | scroll frame, 4K, p95 | default |
5.45 ms | ≤ 8 ms |
| ✅ | scroll frame, 4K, p95 | --no-default-features |
5.11 ms | ≤ 8 ms |
| ✅ | image RSS, 50 local PNGs | default |
44700 KB | ≤ 62768 KB |
| ✅ | image RSS, 50 remote PNGs | default |
41796 KB | ≤ 62768 KB |
| ✅ | image RSS, 50 remote PNGs in view, polled every 16 ms | default |
41876 KB | ≤ 62768 KB |
| ✅ | image RSS, 50 remote PNGs in view, polled every 50 ms | default |
41888 KB | ≤ 62768 KB |
| ✅ | image RSS, 16,384 remote JPEGs of 325 KB cut to 178 bytes | default |
28368 KB | ≤ 62768 KB |