Skip to content

Releases: K-Arthur/varve

Varve v0.1.1

Choose a tag to compare

@github-actions github-actions released this 12 Aug 02:19

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.mjs now
    strips usr/lib from 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-app WEBKIT_DISABLE_DMABUF_RENDERER=1 workaround 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
    files glob used a negated !dist/release/RELEASE_NOTES.md pattern, which
    softprops/action-gh-release's npm-glob matching treats as matching nothing,
    so fail_on_unmatched_files: true aborted the job. RELEASE_NOTES.md is now
    staged outside the globbed directory and the files list is a single
    positive pattern; scripts/validate-workflows.mjs rejects any future
    reintroduction of the negated pattern or a body_path inside 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.txt generated 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: a signing-preflight job validates
    Apple/Azure credentials before any build starts, Windows installers are
    signed through Azure Artifact Signing via Tauri's signCommand, 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. See docs/release/signing-decision-record.md
    for the strategy, docs/release/code-signing-setup.md for 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. See docs/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 (createNewDocument in @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).

  • .varve native format — new saves default to filename.varve; legacy
    .strata documents still open through the same versioned migration pipeline.
    File → Save writes disk-opened documents back to their original path
    (Figma/Photoshop behavior). application/x-varve registered alongside the legacy
    application/x-strata MIME 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 emits varve-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: flex override of the UA's dialog:not([open]) rule) — now scoped to
    [open].
  • Stale strata-* selectors across the E2E suite refreshed to the varve-* classes.
  • The colour WASM fallback referenced a build artifact that no longer exists
    (/wasm/strata_colour_bg.wasmvarve_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.txt for 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, one strata: property) — it now emits Varve identity
    and platform-scoped SBOMs with a structural validator.
  • website-deploy.yml held an unnecessary actions: write permission and had
    no release: published trigger, 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 from SITE_URL/SITE_BASE, so the site builds identically as the
    /varve GitHub Pages project site and as a root custom domain.
  • The download page is release-driven: on release: published the 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 by SHA256SUMS.txt.
  • Post-deployment smoke check: homepage, download, docs, sitemap, robots,
    favicon, 404 and the /varve canonical 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-current navigation
    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...

Read more

Varve v0.1.0

Choose a tag to compare

@github-actions github-actions released this 09 Aug 00:55

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 a dist/aur directory 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 .varve document 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.