Releases: K-Arthur/varve
Release list
Varve v0.1.1
Varve 0.1.1
The second public release of Varve, published a few days after 0.1.0 with
the first round of fixes and the release system itself hardened. Still alpha:
treat it as something to try, not something to trust with work you cannot
afford to lose.
Fixes a Linux packaging defect in 0.1.0: the AppImage bundled WebKit/GTK
libraries from the ubuntu-22.04 build baseline, and on distributions with a
newer Mesa/EGL stack (Arch, CachyOS, Fedora) the bundled WebKitWebProcess
fails EGL display creation. The web process aborts while the window stays
open — a white screen. The release now prunes the bundled libraries from
the AppImage payload, so it uses the host's WebKit/GTK (the same libraries
the .deb depends on) and renders everywhere the deb/rpm already did.
Fixed
- AppImage white screen on modern Mesa/EGL hosts: the bundled WebKit/GTK
closure (built on the ubuntu-22.04 baseline) fails EGL display creation on
newer Mesa stacks.scripts/release/prune-appimage-bundled-libs.mjsnow
stripsusr/libfrom the AppImage payload during the release build — the
binary resolves everything from the host, verified on a CachyOS host where
the released AppImage aborted and the pruned one rendered correctly. The
AppImage now requires system WebKitGTK (libwebkit2gtk-4.1) like the .deb;
the download page documents this instead of promising "runs on any Linux".
(The earlier in-appWEBKIT_DISABLE_DMABUF_RENDERER=1workaround was kept
but is not sufficient on its own: the EGL failure precedes renderer
selection.) - The release launch smoke can no longer pass on a blank window: it fails on
the EGL/abort signature in the app output and requires a live
WebKitWebProcess. - The release draft job could never create a draft (v0.1.1 rehearsal): the
filesglob used a negated!dist/release/RELEASE_NOTES.mdpattern, which
softprops/action-gh-release's npm-glob matching treats as matching nothing,
sofail_on_unmatched_files: trueaborted the job.RELEASE_NOTES.mdis now
staged outside the globbed directory and thefileslist is a single
positive pattern;scripts/validate-workflows.mjsrejects any future
reintroduction of the negated pattern or abody_pathinside the glob. - Release hardening inherited from the 0.1.0 rehearsal: frontend built before
desktop compilation, Git LFS fetched on every checkout (bundled models are
LFS-tracked), LFS-pointer guard fixed for Windows paths, per-platform SBOMs
generated and validated,SHA256SUMS.txtgenerated last over the complete
upload set, draft assets re-downloaded and re-hashed before publication,
native runner smokes for Windows and macOS, and a container install-test
for the Linux packages.
Added
-
Code-signing pipeline (certificate-ready) — the release system now
enforces a fail-closed signing policy: asigning-preflightjob validates
Apple/Azure credentials before any build starts, Windows installers are
signed through Azure Artifact Signing via Tauri'ssignCommand, macOS
builds are Developer ID signed, notarized and stapled via the App Store
Connect API, and every artifact is verified on its actual bytes
(verify-windows-signature.ps1,verify-macos-signature.sh) before
checksums, GitHub artifact attestation, and the draft release. Signedness in
release metadata derives only from those verification reports — a stable
release never silently ships unsigned. Seedocs/release/signing-decision-record.md
for the strategy,docs/release/code-signing-setup.mdfor the human
acquisition checklist. No certificates are owned yet; until they are,
releases are unsigned and honestly labelled. -
Image Trace (native raster-to-vector) — trace a selected image into
editable vector artwork with presets (crisp logo, pixel-art sprite,
centerline sketch and more), live preview, and a result estimate. Desktop
builds run the native Rust engine on a background thread with progress and
cancellation; web builds fall back to bounded TypeScript providers with
honest capability gating (centerline is native-only). Modes: black-and-white
outline (threshold, despeckle, holes), grayscale, limited color (perceptual
Oklab palette), pixel art (hard pixel boundaries, nearest-neighbor
scaling), and centerline (stroked skeletons). Traces insert as one undoable
group beside the source; Edit Trace (context menus) re-opens with the
stored settings and replaces the result in place. Entry points: Object
menu, canvas/layers context menus, command palette (Ctrl+Alt+Shift+T),
Inspector, and QuickBar. Seedocs/architecture/image-trace-system.md. -
New Design experience — the New File dialog is now "New design": an editable
document name (untitled defaults with collision-free numbering), three starting
points (Empty document / Start with a frame / Template), searchable frame presets
with favorites and recents, custom frame sizes with unit conversion and aspect
lock, and collapsed Advanced settings (print intent reveals CMYK, DPI, and bleed
automatically). Presets create an initial frame on an unbounded document — the
document itself never carries a size. -
Canonical document creation service (
createNewDocumentin@varve/scene) —
every creation path (home New button, empty state, File → New, Ctrl+N, command
palette, template, frame preset) now funnels through one typed request that
atomically produces a fully initialized document (schema version, name, optional
initial frame, color config, undo state). -
.varvenative format — new saves default tofilename.varve; legacy
.stratadocuments still open through the same versioned migration pipeline.
File → Save writes disk-opened documents back to their original path
(Figma/Photoshop behavior).application/x-varveregistered alongside the legacy
application/x-strataMIME on Linux/Windows/macOS file associations. -
Responsive workspace navigation — the editor top bar now fits the document
title, workspace tabs, and controls without overlap at any width: priority-ordered
workspace tabs with a "More" overflow menu, active workspace always visible, title
truncating with an ellipsis. -
Complete Varve identity — app mark now renders on the home toolbar, About
dialog, custom title bar (with a graceful fallback), favicons, and the generated
icon pipeline emitsvarve-icon.svg; remaining user-visible "Strata" strings
(LUT export headers, AI diagnostics, window title defaults) renamed.
Changed
- The New Design dialog fits within 1280×720 viewports: sticky header and footer,
internally scrollable body, viewport-capped height (also fixes the modal overlay
that could intercept clicks when closed). - Import of native-format files preserves the original document JSON and display
name instead of inserting a blank placeholder.
Fixed
- The closed
<dialog>could remain visible and intercept pointer events (a
display: flexoverride of the UA'sdialog:not([open])rule) — now scoped to
[open]. - Stale
strata-*selectors across the E2E suite refreshed to thevarve-*classes. - The colour WASM fallback referenced a build artifact that no longer exists
(/wasm/strata_colour_bg.wasm→varve_colour_bg.wasm). - The release gate ran desktop cargo tests before the frontend existed, which
tauri::generate_context!()hard-fails on — the frontend is built first now,
and a workflow validator rejects any edit that moves desktop compilation
ahead of it again. - The release draft job generated no final
SHA256SUMS.txtfor the merged
multi-platform set — it is now generated last (over installers, manifest and
SBOMs) and the draft's uploaded bytes are downloaded and re-hashed before a
human can publish. - The SBOM generator still identified the application as Strata (tool vendor,
component name, purl, onestrata:property) — it now emits Varve identity
and platform-scoped SBOMs with a structural validator. website-deploy.ymlheld an unnecessaryactions: writepermission and had
norelease: publishedtrigger, so the download page could not rebuild from
a newly published release.
Distribution hardening
- One canonical URL system (
apps/website/src/lib/siteUrl.ts): every internal
link, asset, canonical URL, OG image, sitemap entry and robots location is
derived fromSITE_URL/SITE_BASE, so the site builds identically as the
/varveGitHub Pages project site and as a root custom domain. - The download page is release-driven: on
release: publishedthe site is
rebuilt from the exact published assets via an explicit channel policy
(latest published stable, else latest published prerelease; drafts never
appear) with manifest/checksum verification — an unverifiable release fails
the deployment rather than inventing data. - Per-platform and combined CycloneDX 1.5 SBOMs ship with the release and are
covered bySHA256SUMS.txt. - Post-deployment smoke check: homepage, download, docs, sitemap, robots,
favicon, 404 and the/varvecanonical prefix are verified against the live
URL with bounded retries after every Pages deploy. - Download page accessibility: tablist semantics with arrow-key navigation,
copy-to-clipboard checksums with announcements,aria-currentnavigation
state, explicit unverified-release state.
Before you install
These builds are not code-signed. That is a statement about this project’s budget, not about the files — but your operating system cannot tell the difference, and neither can you without checking. Verify the SHA-256 checksum below against your download before running it.
- Windows shows "Windows protected your PC". Choose More info → Run anyway.
- macOS refuses to open the app. Use System Settings → Privacy & Security → Open Anyway. Do not disable Gatekeeper system-wide.
- Linux has no equivalent prompt; verify the checksum instead.
Downloads
| Pl...
Varve v0.1.0
Varve 0.1.0
The first public release of Varve, and an alpha in the honest sense: it has been
built and run, but it has not been lived with. Treat it as something to try, not
something to trust with work you cannot afford to lose.
Platform support
Varve is published for the platforms it can actually stand behind, and labelled
where it cannot.
| Platform | Status | What that means |
|---|---|---|
Linux x86-64 (AppImage, .deb, .rpm) |
Supported | Built, installed into clean Ubuntu 22.04 and Fedora 38 containers, and launched. Bugs get triaged. |
| Windows 10/11 x86-64 (NSIS) | Experimental | Built in CI. Nobody has run it on a Windows machine. Not published until a draft release passes the runner smoke pass. |
| macOS (ARM64 DMG) | Experimental | Built in CI (aarch64 only; no Intel ONNX Runtime dylib). Nobody has launched it. Not published until a draft release passes the runner smoke pass. |
"Built" means the release pipeline produced the package; it does not mean the
application was launched on that platform. The draft-release smoke pass (mount,
launch, uninstall on real runners) is the gate between "built" and "published".
The Linux minimum is glibc 2.35, which covers Ubuntu 22.04, Debian 12 and
Fedora 38 upward. The AppImage needs FUSE2; on systems without it, run with
--appimage-extract-and-run.
Added
- Release engineering foundation: version single-sourcing, artifact collection with predictable
names, SHA-256 checksum manifests, CycloneDX SBOM generation, and a draft-then-approve
release pipeline (scripts/release/,.github/workflows/release.yml). - Build-time guard that fails when a bundled AI model is a Git LFS pointer rather than real
weights (scripts/release/check-bundled-assets.mjs). - Optional AI models are downloaded on demand rather than bundled, each pinned to a SHA-256
that is verified before the file is used. The installer stays around 56 MB as a result.
Fixed
- The release workflow could never publish: its release job depended on an AUR validation job
that referenced adist/aurdirectory which does not exist and is gitignored. - The packaged application did not reach its user interface. A static import of an
eval-using module in the entry chunk stopped the frontend mounting inside the packaged
WebView, and a splash screen that only closed on a signal from that frontend turned the
failure into a window that could never be dismissed.
About the name
The project was developed under the name Strata and renamed to Varve before
this, its first release. No Strata release was ever published, so there is nothing to
migrate from and no older version to be compatible with.
Documents use the .varve extension (the application/x-varve MIME type). Files
saved by earlier pre-release builds with the .strata extension remain openable
through the same versioned document-migration pipeline, and Save As still offers
.strata for compatibility.
Before you install
These builds are not code-signed. That is a statement about this project’s budget, not about the files — but your operating system cannot tell the difference, and neither can you without checking. Verify the SHA-256 checksum below against your download before running it.
- Windows shows "Windows protected your PC". Choose More info → Run anyway.
- macOS refuses to open the app. Use System Settings → Privacy & Security → Open Anyway. Do not disable Gatekeeper system-wide.
- Linux has no equivalent prompt; verify the checksum instead.
Downloads
| Platform | Package | Size | Install |
|---|---|---|---|
| Linux x86_64 | Varve-0.1.0-linux-x86_64.AppImage |
132.0 MB | chmod +x, then run. Needs FUSE2. |
| Linux x86_64 | Varve-0.1.0-linux-x86_64.deb |
56.7 MB | sudo apt install ./ |
| Linux x86_64 | Varve-0.1.0-linux-x86_64.rpm |
56.7 MB | sudo dnf install ./ |
| macOS aarch64 | Varve-0.1.0-macos-aarch64.dmg |
56.2 MB | Open, drag to Applications. |
| Windows x86_64 | Varve-0.1.0-windows-x86_64.exe |
259.0 MB | Per-user install, no admin needed. |
Verify your download
6cb715e68b1f981462e1b1f6c569794b0edf44f622737bb9610b9887943ac6ba Varve-0.1.0-linux-x86_64.AppImage
e163b5a5ca5c3c6ed0aaddcb4f88a09b8a3dd0d68fbe3808cdc390c452de24e3 Varve-0.1.0-linux-x86_64.deb
0969eae2603265c17fbc133d3369acb03bbc50a11d0c3b9cd27e98f4f5d43736 Varve-0.1.0-linux-x86_64.rpm
8d1f9557c0191001e375dacca8a5f51388e998844830d36494f23a2a4739f891 Varve-0.1.0-macos-aarch64.dmg
041fb5f0a70f183377aec22876fead2f228f2afad00b6902b89e8807747cc04d Varve-0.1.0-windows-x86_64.exe
Or download SHA256SUMS.txt and run sha256sum -c SHA256SUMS.txt (shasum -a 256 -c on macOS, Get-FileHash on Windows).
Known limitations
- This is early software. Keep backups of anything you care about. The
.varvedocument format may still change in ways that break older files. - Updates are manual — there is no in-app updater yet.
A CycloneDX software bill of materials is attached as varve-0.1.0-sbom.cdx.json.