VernierCAD
VernierCAD is a local Linux parametric solid modeller using Rust, an OCCT kernel, and a native Wayland-capable winit window. It is GPL-3.0-or-later.
Install a local release
Provide a directory containing executable vernier-app and vernier-worker,
then install it without modifying the source checkout:
scripts/install-local.sh /path/to/release 0.0.1-alpha "$(git rev-parse HEAD)"
~/.local/bin/vernier
The installer stores binaries under
~/.local/share/vernier/releases/<commit>, atomically updates current, keeps
the prior target as previous, and writes a desktop entry. It checks executable
bits and missing shared libraries with ldd. Existing user data and releases
owned by another commit are preserved. Use --dry-run to inspect destinations;
use --prefix DIR for a self-contained staging prefix.
The launcher does not depend on the checkout or a working directory. It keeps
the current log and one rotated log under
${XDG_STATE_HOME:-~/.local/state}/vernier/logs. It does not force an obsolete
X11 backend; native Wayland is the intended path.
Basic workflow
The Projects dashboard opens on launch. Choose New for an empty managed project, or Open to register an existing native document. Choose a sketch plane, draw a closed profile, and extrude it. Select faces or edges for available modelling operations, then use Save to write the native document. Open restores a saved document. Switching projects uses Save/Discard/Cancel; Cancel leaves the current document untouched. Duplicate creates an independent copy, and Archive hides a library entry without deleting its files. Recovery state is offered after an interrupted session through the app's recovery controls.
The current alpha covers sketching, constraints, extrude, editing, direct
modelling, and the delivered multi-body core. Loft is end-to-end in the GUI;
advanced guided lofts, G1/G2 endpoint matching and periodic closure are not
available. Back up both the .vernier document and its .vernier.names sidecar.
Managed projects and recovery stay under
${XDG_STATE_HOME:-~/.local/state}/vernier/{projects,recovery}; installation and
rollback do not move them.
To roll back, stop VernierCAD, inspect ~/.local/share/vernier/previous, and
replace current with that managed target atomically, for example:
root=${XDG_DATA_HOME:-$HOME/.local/share}/vernier
if [ -L "$root/previous" ]; then
ln -sfn "$(readlink "$root/previous")" "$root/current.rollback" &&
mv -Tf "$root/current.rollback" "$root/current"
else
echo "No previous local release is installed."
fi
The same paths under DIR/share/vernier apply to a --prefix DIR install.
Development checks
For a source checkout, use the workspace's normal Rust commands:
fish scripts/check-fast.fish # everyday development feedback
fish scripts/check.fish # exhaustive release gate
cargo run --release -p vernier-cli -- --selftest # 45 end-to-end checks, JSON report on stdout
--selftest runs 45 end-to-end checks headlessly and writes a JSON report; the
driven-GUI gate in scripts/check.fish runs all registered workflows after it.
The full gate builds the release driver, worker and CLI once, then invokes those
binaries directly. GUI workflows still run twice in separate processes, compare
every frame digest, check exported geometry and PNG goldens, and require RADV.
Rust unit tests and the dedicated recovery tests retain their debug checks.
Each full-gate command prints its duration and exit code, and records them in a
unique target/gate/timings-*.tsv file (seconds, exit code, command). Sort that
file with sort -nr to find the slowest stages. The gate still stops at the first
unexpected failure; a negative control must return exactly 1. A cold release
build costs more than a warm run, so compare those timings separately.
The OCCT development libraries, a C++ toolchain, and a Vulkan driver are needed for a full build and viewport run.