Skip to content

VOMD v1.1.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 12:38
· 17 commits to main since this release

Added

  • Open a file from the window: Ctrl+O or the toolbar's folder button shows the desktop's file dialog (the XDG portal's, so KDE's, GNOME's or the GTK one, else zenity or kdialog), starting in the document's folder. The empty window says so, and offers dropping a file only on X11, where it works.
  • A Debian package (vomd_<version>-1_amd64.deb, Debian 12+ and Ubuntu 24.04+) with a man page, and an AppImage for any x86-64 distribution with glibc 2.36 or newer, both attached to each release and checked by CI on Debian 12, Debian 13 and Ubuntu 24.04, on X11 and Wayland.
  • The Arch packages list the file dialogs Open can use as optional dependencies: xdg-desktop-portal-gtk, zenity and kdialog. KDE and GNOME already have a portal file chooser.

Fixed

  • On X11 the portal's file dialog belongs to the VOMD window, so the desktop keeps it in front of it. (On Wayland it still has no parent window.)
  • A portal that crashes or stops answering no longer blocks Ctrl+O: the dialog's calls give up after 25 seconds, and if the portal leaves the session bus while its dialog is up, the window says so and Ctrl+O works again. Before, "A file dialog is already open" stayed until VOMD was restarted.
  • The empty window offers dropping a file only on X11, decided by the display VOMD connected to, not by environment variables.
  • The toolbar's settings button opens settings.ini in a terminal editor set as the default (Terminal=true, such as Neovim) through xdg-terminal-exec. Before, on desktops xdg-open doesn't know (Hyprland, Sway) the editor started with no terminal and waited unseen. If the file can't be opened, a note in the window says why.
  • Release binaries are built on Debian 12 (glibc 2.36), so a glibc older than 2.39 no longer prints "weak version `GLIBC_2.39' not found" at every start.
  • Documents over 1 MB, which are parsed in pieces, render the same as when parsed whole when the line that ends an HTML block looks like a table, a code fence or another HTML block, or when a code fence is left open in a list item. Before, the piece could be cut inside a code block or a table, and the rest of the document rendered differently.
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.73 MB ≤ 4.0 MB
✅ cold start, tiny.md default 94.5 ms ≤ 100 ms (first of 20 runs)
✅ warm start, tiny.md default 27.4 ms ≤ 50 ms (median of 19)
✅ cold start, readme.md default 35.0 ms ≤ 100 ms (first of 20 runs)
✅ warm start, readme.md default 32.4 ms ≤ 50 ms (median of 19)
✅ cold start, spec.md default 35.1 ms ≤ 100 ms (first of 20 runs)
✅ warm start, spec.md default 30.3 ms ≤ 50 ms (median of 19)
⚠️ not gated cold start, huge.md default 115.8 ms ≤ 100 ms (first of 20 runs)
⚠️ not gated warm start, huge.md default 82.8 ms ≤ 50 ms (median of 19)
✅ idle RSS, 50 KB doc, 1080p default 17808 KB ≤ 30000 KB
✅ idle CPU, 50 KB doc (idle at 44 ms) default 0 ticks/3s ≤ 1 tick
✅ idle RSS, 5 MB doc, 1080p default 32556 KB ≤ 60000 KB
✅ idle CPU, 5 MB doc (idle at 1391 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 75.9 ms ≤ 100 ms (first of 20 runs)
✅ warm start, tiny.md --no-default-features 30.9 ms ≤ 50 ms (median of 19)
✅ cold start, readme.md --no-default-features 68.3 ms ≤ 100 ms (first of 20 runs)
✅ warm start, readme.md --no-default-features 33.3 ms ≤ 50 ms (median of 19)
✅ cold start, spec.md --no-default-features 93.6 ms ≤ 100 ms (first of 20 runs)
✅ warm start, spec.md --no-default-features 30.9 ms ≤ 50 ms (median of 19)
⚠️ not gated cold start, huge.md --no-default-features 106.2 ms ≤ 100 ms (first of 20 runs)
⚠️ not gated warm start, huge.md --no-default-features 78.1 ms ≤ 50 ms (median of 19)
✅ idle RSS, 50 KB doc, 1080p --no-default-features 18264 KB ≤ 25000 KB
✅ idle CPU, 50 KB doc (idle at 42 ms) --no-default-features 0 ticks/3s ≤ 1 tick
✅ idle RSS, 5 MB doc, 1080p --no-default-features 32848 KB ≤ 55000 KB
✅ idle CPU, 5 MB doc (idle at 1297 ms) --no-default-features 0 ticks/3s ≤ 1 tick
✅ scroll frame, 4K, p95 default 3.60 ms ≤ 8 ms
✅ scroll frame, 4K, p95 --no-default-features 3.41 ms ≤ 8 ms
✅ image RSS, 50 local PNGs default 44736 KB ≤ 62768 KB
✅ image RSS, 50 remote PNGs default 41912 KB ≤ 62768 KB
✅ image RSS, 50 remote PNGs in view, polled every 16 ms default 42036 KB ≤ 62768 KB
✅ image RSS, 50 remote PNGs in view, polled every 50 ms default 41948 KB ≤ 62768 KB
✅ image RSS, 16,384 remote JPEGs of 325 KB cut to 178 bytes default 28440 KB ≤ 62768 KB