Skip to content

Releases

Varve v0.6.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 02:35
e19c8e4

Varve 0.6.0

Varve remains in public beta. This release moves the document schema from
2.33 to 2.34 to add optional text-frame backgrounds and borders. It also
fixes comic lettering and email export bugs found in dogfooding, makes the AI
setting turn off every on-device model, limits desktop file commands to paths
you picked, and makes PDF import and export much more faithful. Varve 0.5.x
opens 2.34 files with a newer-version warning and does not keep text-frame
styling, so use 0.6.0 or later for files saved by this release.

Added

  • Text frame background and border. Text can have its own optional
    backing fill and border without changing the glyph fill or outline. Set the
    border to zero to keep the background with no visible line. The style is
    saved with the document (schema 2.34). Existing text keeps its prior
    appearance: 2.33 files migrate without gaining a frame style.
  • Machine-wide administrator policy. Schools and offices can deploy a JSON
    policy that controls update checks, AI, model downloads, network access,
    crash reporting, and locked settings. A policy file that exists but cannot
    be read or parsed puts the app in restricted mode with AI and network
    features off. See docs/admin-policy.md.
  • Copy pastes as vectors in other design apps. An ordinary Copy also puts
    a transparent SVG representation on the clipboard, so Inkscape, Krita,
    Illustrator, or Figma receive the selection as artwork instead of layer
    names. In-app paste still uses the editable Varve payload. Very large
    selections keep the editable payload only, and the receiving application
    still needs to accept image/svg+xml.
  • Ruler guides snap to object geometry. Dragging a guide out of a ruler,
    or moving an existing one, snaps to visible edges, centers, and vector path
    points on the active surface and keeps the exact coordinate. Hold Ctrl (Cmd
    on macOS) to place a guide without snapping.
  • Ctrl+Enter starts editing the selected text. With the Text tool active
    and one text layer selected, Ctrl+Enter (Cmd+Enter on macOS) begins editing
    it without a double-click. Plain Enter still renames the layer.
  • Overset text is reported. An area text frame too small for its content
    now produces a preflight warning instead of clipping or bleeding silently.
    Frames that use contour or vertical layout are reported as not measured, so
    the check never claims a document is clear when part of it was not
    inspected.
  • Live effect previews can use a WASM kernel. Inspector effect previews
    load a bounded WASM raster kernel on demand and fall back to the existing
    CPU renderer if it is slow to load or unavailable. Exported results are
    unchanged.

Changed

  • Send Feedback opens in your browser. Help > Send Feedback used a
    mailto: link that failed silently on machines without a mail client. It
    now opens https://varve.studio/feedback. If the browser cannot be opened,
    a message shows the address with a Copy button.
  • No usage analytics in the desktop app. The desktop Plausible adapter,
    its Settings toggle, and its events are removed. Website analytics are
    unchanged.
  • Iconify icon search asks first. Searching Iconify's online catalog now
    needs a one-time consent, which you can grant or revoke in Settings >
    Privacy. Until then no request is made.
  • About links work. Settings > About opens the changelog and the latest
    release page, where the CycloneDX SBOMs are attached, instead of showing
    disabled buttons.
  • Shift constrains movement to 45° steps. Holding Shift while dragging a
    selection projects the move onto the nearest 45° direction, so mostly
    horizontal or vertical drags stay on the axis and deliberate diagonals keep
    their angle. Snapping refines position along that direction. The tablet
    Constrain control and page placement on the pasteboard use the same rule.
    Pressing Shift before a drag no longer drops the object from the selection.
  • Enter confirms the New design dialog. Pressing Enter after typing a
    document name, a custom width or height, or a print or presentation size
    creates the document with those values. Enter in the preset-name row still
    saves the preset, and Enter during IME composition is left to the input
    method.
  • Text tool no longer opens the New text panel on its own. Selecting the
    Text tool used to open a popover that swallowed the next drag. Tool options
    and the command still open it.
  • Linux AppImage bundles WebKitGTK. The AppImage ships WebKitGTK and GTK
    so it launches on a clean host without libwebkit2gtk-4.1. This fixes the
    0.5.1 launch failure (libwebkit2gtk-4.1.so.0: cannot open shared object file) seen on AppImageHub. GPU, EGL, and Mesa stay on the system so newer
    Mesa stacks do not white-screen. GStreamer plugins are not bundled. The
    file is now named Varve-<version>-x86_64.AppImage (no linux segment).
    The updater platform key is still linux-x86_64, so installed 0.5.1
    clients find the new file.
  • Contribution lanes. Docs and examples, translations, plugins in a
    contributor's own repository, testing and device reports, and the nine MIT
    OR Apache-2.0 libraries are open to contributions. App code stays
    maintainer-only. CLA terms are replaced by DCO 1.1 sign-off under the
    licence of the files you change.

Fixed: comic lettering

  • Clipped groups survive save and reload. A group clipped by a legacy
    path node was saved without its clip, so it came back unmasked with no
    warning.
  • Balloons keep their outlines and tails. Pointed tails keep their merged
    outline after reload. Burst and cloud bodies no longer paint over the
    outline. SVG export includes balloon tails.
  • Balloon shapes. Cloud balloons use eight round scallops instead of
    looking octagonal, and burst balloons stay a jagged star. Shallow-angle
    tails no longer collapse to a sliver, and createCallout honours
    tailLength for point and area text.
  • Balloon text wraps like the canvas. In ellipse balloons a word that fits
    the box is no longer split mid-word, closing punctuation stays with its
    word, and the saved layout matches what the canvas draws in the tested
    widths. Hyphen and slash break points can still differ (see Known issues).
  • Gradients inside transformed groups. Gradient handles no longer move
    twice as far as the group.
  • Boolean operations. Subtract and intersect no longer throw "Unable to
    complete output ring". When the result would be degraded, the operation is
    refused instead.
  • Sound effect preset. The preset now uses a thick dark outline, bright
    fill, shadow, and angle instead of a thin white outline.

Fixed: email

  • A design-canvas email is emitted once. A normal Design Canvas document
    exported the whole email twice in HTML and plain text.
  • Button labels stay readable. Button labels used the frame fill as their
    text colour, so labels vanished into the button. Labels keep their own
    colour, and a colour that matches the fill falls back to white or near
    black for contrast.
  • Email preflight. The status-bar count in the Email workspace now counts
    email compiler diagnostics instead of print bleed, and the overlap warning
    suggests putting each text block in its own frame.

Fixed: AI and image tools

  • AI background removal is more accurate on real photos. Square-input
    models (bundled Balanced u2netp, IS-Net, BiRefNet) stretch-resize to the
    model square instead of letterboxing. Letterbox padding remains only for
    frames wider or taller than about 2.5:1. In our test set IS-Net low-light
    IoU went from 0.046 to 0.985 and u2netp edge IoU from 0.505 to 0.956.
  • Quick background removal uses the source alpha on cutouts. Chroma-key
    and k-means ignored source alpha, so leftover colour in fully transparent
    pixels became a false subject. When many pixels or much of the border are
    fully transparent, the source alpha is now the mask, including partial
    alpha on anti-aliased edges.
  • Colour vectorize keeps distinct small hues. Palette reduction no longer
    absorbs a small region of a distinct colour into its surroundings at low
    colour counts, and a 1-pixel speck never takes a palette slot from a common
    colour.
  • The administrator AI-off policy also blocks in-browser inference.
    Leftover per-user settings could still let the webview download and run
    models while the policy showed AI as off.
  • Inspector AI actions check the AI setting. Line art, OCR, denoise, frame
    interpolation, text detection, font detection, photo colorize, and DETR crop
    refuse to run when AI is off and point to Settings. Errors use plain
    messages instead of raw engine text.
  • GitHub-hosted models on the web. IS-Net and BiRefNet Lite and Full are
    published on GitHub Releases, which browsers cannot fetch. The web version
    no longer offers those downloads. The desktop app downloads them.
  • Model settings and integrity. BiRefNet Full is pinned to the SHA-256 of
    the published rembg BiRefNet-general-epoch_244.onnx file. The native INT8
    Balanced model now uses the 320 input and no extra sigmoid, matching the
    FP32 model.
  • Enhance dialog copy uses colons and full sentences.

Fixed: editing, saving, and files

  • Opening an unreadable file no longer replaces your work. A document that
    failed to decode used to be replaced by a blank one under the same file
    name, so the next save could overwrite the real file. The open is now
    refused, the current document is left untouched, and an error names the
    file.
  • Unreadable settings are kept. A settings blob that cannot be parsed is
    set aside instead of being overwritten by defaults on the next save. The app
    does not yet show a notice or a recovery option for it.
  • Unsaved-work tracking has one source. Some edits, such as grouping
    layers, marked the document modified for the tab strip but not for the
    cl...
Read more

Varve v0.5.1

Choose a tag to compare

@github-actions github-actions released this 16 Oct 04:19
e5a52de

Varve 0.5.1

Patch over public-beta 0.5.0. The document schema is still 2.33. This
release replaces the bundled ICC profiles, adds AI disclosure controls,
fixes crash-screen false positives and email export/preview bugs, and
records Generative Edit, which shipped in 0.5.0 but was missing from those
notes.

Added

  • Generative Edit — Select one image and reconstruct painted pixels
    (Fill), rebuild a painted object's background without deleting the layer
    (Remove / Generative Subtract), or add pixels beyond the current bounds
    (Expand). Draft Fill/Remove uses PatchMatch with no model download;
    higher quality uses an optional local LaMa inpainting model. Desktop
    Expand has limited Linux x86_64 photo review; browser Expand needs LaMa,
    and Fast/PatchMatch Expand stays disabled after visible edge striping.
    Replace and prompt-conditioned Fill/Expand remain gated until a local
    model passes qualification. Accepting writes one undoable transaction
    and keeps an immutable source snapshot. Open it from the image
    inspector, Crop & Bounds, the Layers or canvas context menu,
    Object → Generative Edit…, or the command palette.
  • AI transparency controls — Settings → AI features is on by default
    (Ctrl+Alt+Shift+A toggles it). Layers mark AI-edited nodes; the
    Inspector shows AI Edit History; export can attach disclosure metadata
    (PNG/JPEG XMP, PDF XMP, SVG <metadata>; WebP warns because canvas
    encode cannot carry XMP). Existing AI-edited layers stay editable when
    the switch is off. Larger models still download only when requested.
  • Linux packaging — AUR varve-desktop-bin is ready for the v0.5.0
    dual-arch AppImages (checksums, MetaInfo, MIME types, license files,
    aarch64). AppStream metadata lives in the desktop linux tree.
    This landed after the v0.5.0 tag.

Changed

  • ICC profiles — Bundled sRGB is Compact ICC Profiles sRGB-v4
    (CC0-1.0, 480 bytes). Bundled CMYK is ISOcoated_v2_bas.ICC (FOGRA39 /
    ISO 12647-2:2004, Zlib via Debian icc-profiles-free / basICColor).
    v0.1.0–v0.5.0 shipped Artifex Ghostscript profiles under
    AGPL-3.0-or-later.
  • macOS Gatekeeper — Browser-downloaded .app bundles are ad-hoc
    signed so Gatekeeper no longer reports them as damaged with no Open
    Anyway path. They remain unsigned for trust labels; not Developer ID
    or notarized.
  • Linux AppImage and AUR — Packed AppImage directories and launchers
    are world-readable so AppImageHub and firejail mounts can run the
    image. The AUR varve-desktop-bin package resets extract modes instead
    of copying 0700 trees into pacman.

Fixed

  • Crash screen false positives — Recovered WebGL context loss,
    aborted jobs, and other diagnostics no longer open "Varve closed
    unexpectedly".
  • Document switch — Error boundaries reset on file change, so a bad
    render does not stick across documents. Opening a file no longer hides
    the Layers panel. Malformed text nodes are coerced on load instead of
    crashing the canvas.
  • Comic balloons — Speech, thought, and shout balloons appear in
    Quick Actions and the command palette.
  • Email workspace — Preview and HTML/plain-text export: no duplicate
    output roots, inline preview assets when no base URL is set, button
    labels from child text, fluid containers for mobile preview, inherited
    link colour, text alignment, caption column widths, rasterization
    warnings only when a raster fallback is emitted, and button labels and
    links in plain text.

Security

  • rustls 0.23.46 (RUSTSEC-2026-0346 through 0349).
  • quinn-proto 0.11.19 (RUSTSEC-2026-0338 through 0342). Transitive Tauri
    QUIC stack; the advisory fix does not claim a Varve-reachable path.

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. Windows 11 Smart App Control can block unsigned apps with no override — use the browser version at https://varve.studio/try.
  • macOS may block the first launch of an ad-hoc-signed app. After that attempt, use System Settings → Privacy & Security → Open Anyway. Do not disable Gatekeeper system-wide. 0.5.0 still needs xattr -dr com.apple.quarantine /Applications/Varve.app.
  • Linux has no equivalent prompt; verify the checksum instead.

Downloads

Platform Package Size Install
Linux aarch64 Varve-0.5.1-linux-aarch64.AppImage 78.9 MB chmod +x, then run. Needs FUSE2.
Linux aarch64 Varve-0.5.1-linux-aarch64.deb 84.3 MB sudo apt install ./
Linux aarch64 Varve-0.5.1-linux-aarch64.rpm 84.3 MB sudo dnf install ./
Linux x86_64 Varve-0.5.1-linux-x86_64.AppImage 86.1 MB chmod +x, then run. Needs FUSE2.
Linux x86_64 Varve-0.5.1-linux-x86_64.deb 92.2 MB sudo apt install ./
Linux x86_64 Varve-0.5.1-linux-x86_64.rpm 92.2 MB sudo dnf install ./
macOS aarch64 Varve-0.5.1-macos-aarch64.dmg 88.0 MB Open, drag to Applications.
Windows aarch64 Varve-0.5.1-windows-aarch64.exe 62.2 MB Per-user install, no admin needed.
Windows x86_64 Varve-0.5.1-windows-x86_64.exe 66.7 MB Per-user install, no admin needed.

Verify your download

114add3f863f8edaf203b95ef4ca051c1b29432ca650a9b4c301c4b0e6080419  Varve-0.5.1-linux-aarch64.AppImage
4433cf38afde59056ed47d7c6d8bc69e172026c704092dc8611bd6762633af78  Varve-0.5.1-linux-aarch64.deb
af0d5c3d45a414d6527eecf7ab912ef14058891c82a2422198d0d688e14bfc25  Varve-0.5.1-linux-aarch64.rpm
af2d3fbc1bed1a4ae85c64e1fdd72e455f18e2a87564454251b5d696ed6d6c56  Varve-0.5.1-linux-x86_64.AppImage
55413c9e5fab4a17a434be830ca44c17add6d063a37dbe18958f53bd230db1d3  Varve-0.5.1-linux-x86_64.deb
193ad9cfebb7c1b1d5518d2642398757597f1ff782e6d208771538caf732e574  Varve-0.5.1-linux-x86_64.rpm
e0c510c6b884ebefb731c2ff4d842a63da66ad8dd359f0f754904467e98c3dce  Varve-0.5.1-macos-aarch64.dmg
55ccd54fb07d078185ae2a158be453905c7f76cb22e8ff9cb00cc585da657c4f  Varve-0.5.1-windows-aarch64.exe
17b5c59d50a392467fdb9de73e7f9ac40fce83a8d54b3a242ec66c8abe9a9971  Varve-0.5.1-windows-x86_64.exe

Download SHA256SUMS.txt and verify only the file you downloaded with sha256sum --ignore-missing -c SHA256SUMS.txt:

  • Linux: sha256sum --ignore-missing -c SHA256SUMS.txt or grep <filename> SHA256SUMS.txt | sha256sum -c
  • macOS: shasum -a 256 <filename>
  • Windows PowerShell: Get-FileHash .\<filename> -Algorithm SHA256

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.
  • In-app updates: once you turn on update checks in Settings, Varve checks for new versions and can install signed updates. You can also download each release manually from this page.

A CycloneDX software bill of materials is attached as varve-0.5.1-sbom.cdx.json.

Varve v0.5.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 08:48

Varve 0.5.0

Varve remains in public beta. This release adds broad authoring workflows while
keeping optional, hardware-dependent, and format-limited capabilities clearly
marked.

Added and improved

  • Six task workspaces and flexible panels — Design, Print, Draw, Photo,
    Motion, and Email share one document model. Docked, floating, and split panel
    layouts can be adjusted and restored; Logo tools stay in Design and Code
    export remains a shared panel. Enabled History and Timeline panels remain
    visible after restarting instead of reverting to hidden at editor startup.
  • Illustration and tablet controls — Separate flats and clipped shading
    layers, brush opacity and flow, pressure settings, and one-finger draw or
    navigation controls extend the painting workflow. Check pressure and tilt
    support on the device you use.
  • Comic lettering — Build speech, thought, and shout balloons, captions,
    panel layouts, and editable lettering with localization support. Pointed
    balloon tails now join the bubble outline without a line across the pointer;
    existing balloons are corrected when their documents migrate.
  • Photo workflows — Source-preserving retouch, Frequency Separation,
    Liquify, depth-aware masks, bracket merging, and verified Ultra HDR sharing
    join image tuning and colorization. RAW development is limited to the
    documented camera subset; model-based features may require optional downloads.
  • Vector and type tools — Shape Builder, compound-path editing, more precise
    tracing, path text, variable-font controls, and shaped-glyph outlines improve
    illustration and lettering workflows.
  • Reusable pattern authoring — Create definitions from copied vector art,
    raster tiles, or recipes; tune repeat and per-fill placement, inspect raster
    seams, and edit copied vector motifs in a bounded source editor. Imported
    raster tiles now remain rendered alongside other document images. SVG and PDF
    support defined subsets; unsupported PDF layouts are warned and omitted.
  • Presentation decks — Order editable Design frames, preview a deck, and
    export slides as a raster screen PDF or numbered PNG archive. PDF output is
    not editable/searchable and has no tagged accessibility structure; layout
    formatting inheritance remains limited.
  • Manual Token Sync — Import and re-import token sources and review mapping
    diagnostics. Automatic watching, Git integration, and write-back to source
    files are not included.
  • Local Wasm plugins — Review and run bounded local packages for selected-
    layer analysis and batch renaming. There is no marketplace, arbitrary
    JavaScript/HTML, or plugin-owned network and filesystem access.
  • Mockups and exports — Folded-mesh mockups join planar, perspective, and
    cylindrical surfaces. SVG and PDF export preserve more supported artwork;
    unsupported content can still use raster fallbacks or documented warnings.
    SVG raster fallbacks retain artwork inside positioned frames and groups,
    including frame backgrounds, clipping and transformed ancestor placement.
  • PDF artwork and dimensions — Desktop PDF exports retain embedded images
    instead of placeholder artwork. Quick screen-PDF output preserves authored
    dimensions after switching from a scaled raster export. Native PDF/X export
    and text outlining also receive their required print and font settings.
  • Experimental rendering options — Canvas2D remains the default. WebGL2
    and WebGPU are opt-in experiments with capability checks and Canvas2D
    fallback; results depend on the browser, driver, and hardware.
  • Document compatibility — The app now writes document schema 2.33;
    published v0.2.1 used schema 2.21. Older documents migrate on open, including
    the pointed-balloon outline correction, but newer files are not
    backward-compatible. Back up important .varve files before opening them.
  • Save, history, and recovery — Saved, Saving, Modified, and Save failed
    states are explicit, and failed writes retain recovery paths. Confirm a
    save by its successful destination write before closing important work.
    Buffered text edits and formatting now replay through undo/redo with exact
    grapheme boundaries, including emoji and combining characters.
    Home Open and Import consume the native picker's selected path correctly,
    including Unicode filenames; Open retains the disk path for subsequent Save.
    The macOS editor's application menu Quit action now runs the shared save
    and termination coordinator before exiting.
  • Responsive and accessible controls — Workspace panels, menus, touch
    targets, focus handling, home-screen reflow, group dragging, and enlarged-text
    layouts have been refined across compact, tablet, and desktop widths.
    Color-model labels wrap within narrow pickers instead of overlapping.
    Home project headings retain normal casing and aligned sidebar spacing;
    the New Project form has themed controls and focuses its name field.
  • Fit the active surface — Fit canvas frames the active Design Canvas's
    artwork. Fit page frames publishing trim in Print and comic Draw, including
    blank pages. Page-only documents retain paper fitting in other modes.
    Empty unbounded canvases show a disabled control instead of a
    enabled button with no target. Fitted artwork and portrait pages stay clear
    of the floating toolbar.
  • Document name entry — Initial selection of a suggested name yields to
    typing and other dialog interactions, preserving entered text when the
    opening animation frame arrives late.
  • Clearer selection and import feedback — Spacing labels avoid selected
    artwork, and missing-font recovery opens after the import summary is closed.
  • Bounded browser demo — /try/ remains a sample-document experience with
    browser-local storage and a limited workspace set; desktop-only print,
    inference, and other capabilities are not implied by the demo.
  • Consent-first desktop updates — Published, signed update feeds support
    Linux AppImage (x86_64 and ARM64), Windows NSIS (x86_64 and ARM64), and
    installed Apple Silicon macOS apps. Checks are user-controlled, downloads
    are signature-verified, and installation uses the save/quit flow. Debian and
    RPM packages, plus unsupported or non-writable installs, update manually.

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. Windows 11 Smart App Control can block unsigned apps with no override — use the browser version at https://varve.studio/try.
  • macOS (0.5.0) shows "Varve is damaged and can't be opened" with no Open Anyway option. After dragging Varve to Applications, run xattr -dr com.apple.quarantine /Applications/Varve.app — that removes the download quarantine flag so macOS will open the app. Do not disable Gatekeeper.
  • Linux has no equivalent prompt; verify the checksum instead.

Downloads

Platform Package Size Install
Linux aarch64 Varve-0.5.0-linux-aarch64.AppImage 78.4 MB chmod +x, then run. Needs FUSE2.
Linux aarch64 Varve-0.5.0-linux-aarch64.deb 83.7 MB sudo apt install ./
Linux aarch64 Varve-0.5.0-linux-aarch64.rpm 83.7 MB sudo dnf install ./
Linux x86_64 Varve-0.5.0-linux-x86_64.AppImage 85.5 MB chmod +x, then run. Needs FUSE2.
Linux x86_64 Varve-0.5.0-linux-x86_64.deb 91.5 MB sudo apt install ./
Linux x86_64 Varve-0.5.0-linux-x86_64.rpm 91.5 MB sudo dnf install ./
macOS Apple Silicon (aarch64) Varve-0.5.0-macos-aarch64.dmg 87.8 MB Open, drag to Applications.
Windows aarch64 Varve-0.5.0-windows-aarch64.exe 61.6 MB Per-user install, no admin needed.
Windows x86_64 Varve-0.5.0-windows-x86_64.exe 66.1 MB Per-user install, no admin needed.

Verify your download

4684fef861cdf3dd51cfd326f5a9452d29d733af9e9d4c53b18f06fc0ab8c404  Varve-0.5.0-linux-aarch64.AppImage
5fc30625f738f0b8394f59180568251857cc45cc1e031d8568872def3494faf0  Varve-0.5.0-linux-aarch64.deb
2a04e58bc01a37a86e53e3d7fa981e1d206905381df6d69408b18dca7baebc56  Varve-0.5.0-linux-aarch64.rpm
fb0c188286fbd92479f88dd0eefc4547d3544b33e7dc5120abd399bfdf2237af  Varve-0.5.0-linux-x86_64.AppImage
89be69610182319529c4335c7982ec2a3fc09fb94cb2dac2e61bbdde837a75fb  Varve-0.5.0-linux-x86_64.deb
baf25cacfa27775a61c0d10e4bb3ca35a533b8677d4f9132d41347663af855a6  Varve-0.5.0-linux-x86_64.rpm
4b1ae0cc9f3b8b75ffd241a461c50913b4fd20d293ab16918509a66ee8fc099d  Varve-0.5.0-macos-aarch64.dmg
e5e99de0a13a0c77b1cc2a1d9d6ea5d91cacf00094b7cca36f07ec6c6b080e84  Varve-0.5.0-windows-aarch64.exe
0650afc5cd773cc0d2aff40326900afa3200dc1f2e016d005ab274d5b30b5d32  Varve-0.5.0-windows-x86_64.exe

Download SHA256SUMS.txt and verify only the file you downloaded with sha256sum --ignore-missing -c SHA256SUMS.txt:

  • Linux: sha256sum --ignore-missing -c SHA256SUMS.txt or grep <filename> SHA256SUMS.txt | sha256sum -c
  • macOS: shasum -a 256 <filename>
  • Windows PowerShell: Get-FileHash .\<filename> -Algorithm SHA256

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.
  • An updater feed is published for eligible targets; Debian/RPM packages, unsigned or unsupported installs, and package-specific fallback paths remain manual. See the Updates guide.

A CycloneDX software...

Read more

Varve optional AI models — SAM2 Object Selection

Choose a tag to compare

@K-Arthur K-Arthur released this 14 Sep 08:07

Varve optional AI models — SAM2 Object Selection (verified mirror)

Pinned mirror of the SAM2.1 Hiera Tiny artifacts used by Varve's Object
Selection workflow. This release extends the varve-models-v1 model-hosting
series; it is not an application release.

Important: runtime downloads come from Hugging Face

GitHub release assets do not send Access-Control-Allow-Origin headers
(verified 2026-09-14 with ranged GET + Origin: neither the 302 from
github.com nor the 206 from release-assets.githubusercontent.com carries
the header). A browser fetch() from the app is therefore blocked by CORS, so
the in-app downloader continues to use the CORS-enabled upstream host
recorded in apps/desktop/public/models/manifest.json
(vietanhdev/segment-anything-2-onnx-models on Hugging Face). This release is
a verified archival mirror for manual or CI use:

gh release download varve-models-v2 --pattern 'sam2_hiera_tiny.*.onnx'
sha256sum -c <<'EOF'
4cc015ee18520e93f8c7ddfeaca7436039daaaaf19721b4b96a8810a805e82f7  sam2_hiera_tiny.encoder.onnx
f5a4bd656c143899fb7f52d64ed81e6f6aeb37d477a0b6da50146ac7cf2187bf  sam2_hiera_tiny.decoder.onnx
EOF

Artifacts

Asset Role Bytes SHA-256
sam2_hiera_tiny.encoder.onnx Image encoder (1024x1024) 134261315 4cc015ee18520e93f8c7ddfeaca7436039daaaaf19721b4b96a8810a805e82f7
sam2_hiera_tiny.decoder.onnx Prompt/mask decoder 20640886 f5a4bd656c143899fb7f52d64ed81e6f6aeb37d477a0b6da50146ac7cf2187bf

These are the upstream artifacts exactly as published by
vietanhdev/segment-anything-2-onnx-models
(Apache-2.0, ONNX export by Viet-Anh Nguyen), verified byte-for-byte against
the checksums pinned in apps/desktop/public/models/manifest.json. Weights:
SAM 2.1, Apache-2.0, (c) Meta Platforms, Inc.

Why the encoder is hosted unrepaired

The upstream encoder declares two metadata-only value_info entries with
empty shapes (/conv_s0/Conv_output_0, /conv_s1/Conv_output_0).
onnxruntime-node tolerates them, but onnxruntime-web's WASM shape inference
rejects the graph at session creation
([ShapeInferenceError] ... inferred=4 declared=0).

Varve therefore verifies the upstream checksum, applies the reproducible
repair (scripts/models/repair-sam2-graph.mjs, which removes only those two
entries), and verifies the repaired checksum before the artifact is stored:

  • repaired encoder SHA-256:
    b4cfd6c8bec2ef3674536419d731e61d15840367bd004d65095ae6a2b88b41cf
  • repaired size: 134261247 bytes (68 bytes smaller)

Hosting the upstream bytes keeps the verification chain (upstream checksum →
repair → repaired checksum) exactly as documented in
docs/quality/object-selection-parity.md. Inference parity of the repaired
graph against the upstream graph was verified with ort-node (encoder outputs
match to the last digit).

Client verification

  • Downloads are explicit, checksum-verified, and stored in the shared
    IndexedDB model store (browser) or the app-data model directory (native).
  • No image is uploaded by Object Selection; the models run locally.
  • The download URLs in manifest.json are public configuration, never
    secrets.

Varve AI models (v1)

Choose a tag to compare

@K-Arthur K-Arthur released this 14 Sep 07:16

On-demand AI models downloaded by Varve. Not an application release.

These are pinned by SHA-256 in the app; assets here are never overwritten. A revised model ships as models-v2.

Varve v0.2.1

Choose a tag to compare

@github-actions github-actions released this 25 Aug 05:30

Varve 0.2.1

Added

  • Image Enhance — batch enhancement processes every image in a
    multi-selection in one run, with combined tile progress, per-image
    announcements ("Enhancing image 2 of 3…"), immediate cancellation, and
    a failure summary instead of stopping silently mid-queue. A validated
    Real-ESRGAN Anime x4 (6B) ONNX model (checksum-pinned download) now
    backs Illustration mode, restoring preview/apply parity for that mode.
    Deblur strength is user-controllable, the dialog reports real
    per-stage progress while restoration runs, and output stays
    non-destructive with a quality policy (faithful/balanced) choice.
  • Canonical export resolution model — export scale decisions are now
    computed by one shared resolution engine in @varve/scene
    (export/resolution, documented in
    docs/architecture/export-resolution.md), and batch export exposes
    explicit resolution controls.
  • Text on Path becomes reachable — the engine could always place type
    along a path, but nothing in the UI ever set the required fields.
    Object ▸ Text on Path now attaches a selected text layer to a selected
    shape, and a Text on Path inspector section exposes the start offset
    and which side of the curve the glyphs sit on.
  • Linux download guidance — the website download page adds a
    distro-family picker table, grouped install commands, expanded
    Arch/CachyOS troubleshooting, and per-format system requirements, and
    now recommends the AppImage as the primary Linux format.
  • Verified workflow recordings — a deterministic capture pipeline
    (scripts/capture/) records real interactions against seeded demo
    documents, verifies them frame-by-frame, and publishes the resulting
    workflow videos to the website product page.
  • Selection tools — a pixel-lasso area-selection tool, a quick-mask
    paint tool, and image-derived selections join rectangle/ellipse
    marquee selection. Selections can be transformed, refined (feather,
    contract/expand, smooth), and saved for reuse across a session, with
    a dedicated panel for managing saved selections and reviewing where
    the current selection came from.
  • Layer States — layers gain a Solo View toggle and per-layer
    visibility state that survives independently of the old show/hide
    toggle, with an effects badge and layer context menu to manage them.
  • Perspective tool — an interactive four-corner perspective
    transform with a live overlay, correct Canvas2D and SVG-export
    rendering, and its own Inspector section.
  • Smart Filters and adjustment layers — a non-destructive filter
    stack can be applied per-object, with menu and command-palette
    entries and an object filter stack that respects layer-level bypass.
  • Shadow/Highlight adjustment, Levels/Curves editors backed by real
    histogram data, and general adjustment-layer normalization fixes.
  • Crop and transform — named crop aspect ratios, crop guides,
    straighten, repeat-transform, and a rebuilt Image Resize dialog.
  • Find Similar — natural-language and image-based asset search in
    the Intelligence panel, backed by a local DINOv2 embedding pipeline.
  • Warp tool is now reachable from the Design toolbar and its W
    keyboard shortcut; it previously existed but had no way to activate
    it.
  • Accessibility — a full audit pass across the editor (focus order,
    ARIA roles/labels, keyboard reachability), plus a specific fix
    reversing Tab order so it flows from the layers panel into the canvas
    instead of skipping it.

Changed

  • Git LFS is no longer used anywhere in the repository (bandwidth budget
    exhausted): all media is committed directly and CI no longer fetches
    LFS objects.
  • The stable updater feed now signs Linux AppImage and Windows NSIS
    artifacts for both x86_64 and ARM64, generates the macOS .app.tar.gz
    target when a signed bundle exists, and verifies signatures
    cryptographically before publication; the v0.2.0 feed was re-signed
    and republished under these targets.
  • Release version stamping also updates AUR packaging metadata and
    AppStream metainfo.
  • ONNX Runtime failures report the platform-specific remedy instead of a
    generic message, and the runtime library is staged before every
    desktop build path.

Fixed

  • Variable fonts apply their axes — fvar parsing matches how
    OpenType actually stores the table, the selected wght value reaches
    the Canvas2D painter on every text path, variation settings survive
    onto the painted shape, and the variable-axis panel is reachable
    without scrolling the inspector sideways.
  • Pixel-art scaling at non-power-of-two sizes — EPX/HQx/xBR no longer
    splice a nearest-neighbor remainder into the middle of the algorithm at
    scales like 3x; the 2x passes stay intact.
  • Timeline drag preserves keyframe progress during the drag gesture.
  • Prototype, codegen, variants, and timeline workflows were repaired
    where editor action registration had broken them, and text-on-path
    actions see live selection state.
  • Image Enhance reliability — tiled inference routes to the right
    capability, tiled recomposition memory is bounded, edge tiles produce
    correct output dimensions, stale previews clear when the operation
    changes, stale-result errors surface to the UI instead of returning
    silently, and the Auto analysis no longer produces NaN JPEG-blockiness
    scores. Compression-artifact removal remains unavailable by design:
    the dialog says so rather than degrading another model.
  • Visual constraint editor — the Constraints inspector section
    rendered a passive preview even though the interactive pin-control
    component already existed; it's now wired up and usable. Its
    horizontal/vertical/center-stretch pin targets previously overlapped
    in the same hit area so only the last one was clickable — they're
    now separate targets.
  • Drawing a frame around an existing image no longer requires the
    image to be fully inside the frame before it's adopted — the
    original center-hit-or-≥50%-overlap rule is restored.
  • Multi-page documents — objects created on any page after the
    first had the page's canvas placement applied twice, landing (and
    hit-testing) in the wrong position; fitting or viewing a non-first
    page also ignored its actual placement and always fit at world
    origin. Both are fixed.
  • Mockup creation selected a placeholder ID instead of the frame
    node it had actually just created, so the Inspector's mockup section
    never appeared after applying a mockup to a source image.
  • Imported LUTs (.cube) were applied at zero opacity, so an
    imported LUT adjustment never visibly did anything until manually
    adjusted.
  • Icon library — inserting an icon and immediately switching to
    the Downloaded filter could miss the icon just inserted, due to a
    cache-refresh race; the panel now reflects an insert immediately.
  • Typing or pasting large amounts of text could crash the editor
    with a React "maximum update depth exceeded" error in the text tool;
    rapid keystrokes are now coalesced into bounded updates, while blur,
    Escape, and IME completion still flush immediately.
  • Cross-artboard drag reparenting and its undo/redo now land at the
    precise expected position.
  • Edge auto-pan while dragging near a canvas boundary moved content
    in the opposite of the intended direction; the pan direction is
    corrected.
  • Help ▸ Getting Started did nothing when clicked; it now opens
    onboarding.
  • Responsive floating toolbar — tools that don't fit the current
    window width (including Table) now live in an accessible "More
    tools" overflow menu instead of being unreachable.
  • Crop tool history — committing a crop without changing anything
    no longer pushes an undo step, so Undo after an untouched crop
    correctly reverts the prior action instead of the no-op crop.
  • Depth Blur now renders through the native/WASM engine path — the
    effect existed only in the Canvas2D/JS layer, so the native scene
    representation didn't recognize it and every use silently took the
    slower fallback path.
  • Background removal (INT8/fast mode) — the small-download and
    low-memory variant of the U²-Net Light model produced a near-blank
    mask; a runtime safety check already kept it from ever being served,
    so this never reached a shipped build, but the fast/small-download
    option is now actually usable instead of silently falling back to the
    full-precision model.

Security

  • The basic-auth-URL secret scanner no longer false-positives on JSON-LD
    structured data.

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 aarch64 Varve-0.2.1-linux-aarch64.AppImage 40.5 MB chmod +x, then run. Needs FUSE2.
Linux aarch64 Varve-0.2.1-linux-aarch64.deb 49.0 MB sudo apt install ./
Linux aarch64 Varve-0.2.1-linux-aarch64.rpm 49.0 MB sudo dnf install ./
Linux x86_64 Varve-0.2.1-linux-x86_64.AppImage 40.5 MB chmod +x, then run. Needs FUSE2.
Linux x86_64 Varve-0.2.1-linux-x86_64.deb 49.9 MB sudo apt install ./
Linux x86_64 Varve-0.2.1-linux-x86_64.rpm 49.9 MB sudo dnf install ./
macOS aarch64 Varve-0.2.1-macos-aarch64.dmg 49.1 MB Open, drag to Applications.
Windows aarch64 Varve-0.2.1-windows-aarch64.exe 37.6 MB Per-...
Read more

Varve v0.2.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 14:46

Varve 0.2.0

Added

  • Motion/prototyping P1-P3 improvements — timeline virtualization (only
    visible tracks rendered), Lottie fill/stroke color keyframe export, motion
    path drag-to-edit on canvas, prototype startAnimation/stopAnimation
    playback wiring, prototype interaction section UI for Play/Stop animation
    actions, and prototype click-through E2E test. 413 tests pass across 31
    files.
  • Figma REST JSON import — official Figma file JSON (REST API or plugin
    export) is now a first-class import source. A bounded source normalizer
    (figma/source.ts) enforces 64 MB / 100k node / 256 depth limits, then
    a semantic converter (figma/converter.ts) maps pages, frames, groups,
    shapes, text, Auto Layout, components/instances, variables, styles, and
    prototype interactions into native Varve document fragments with fresh
    IDs and deduplicated image assets. Opaque .fig binaries are rejected
    with actionable guidance. Fidelity is honest: boolean operations,
    remote image refs without embedded data, and unsupported effects are
    reported rather than silently dropped. See
    docs/architecture/figma-import-system.md for the full conversion
    matrix and architecture.
  • Image Enhance — Deblur and Auto/Recommended — the Enhance workflow
    now ships a validated Deblur operation backed by a reproducible
    conversion of NAFNet-GoPro-width64 (MIT, ~138 MB fp16 ONNX, downloaded
    on demand through the model manifest with a pinned checksum; conversion
    parity is bit-exact with the trusted PyTorch reference — 98.9 dB on the
    official GoPro test subset). Deblur runs through the same shared
    native→worker provider chain as Denoise, with adaptive tiling that
    keeps tiles single-shot up to 1280 px because NAFNet's global
    receptive field makes small tiles visibly seamed. The dialog opens in
    Auto/Recommended mode: a cheap classical analysis (noise, blur, JPEG
    blockiness, resolution) proposes a restoration in human terms with a
    confidence number, and Restore + Upscale composes only the stages it
    needs (denoise, deblur, or deblur+upscale, always restoration before
    super-resolution).
  • Denoise fix: graph-safe padding — the SCUNet ONNX conversion
    actually requires padded dimensions divisible by 64 (its baked
    attention reshape crashes otherwise), so 1080p and other non-64-
    multiple images failed denoise. Padding, the native spec, and the
    manifest contract were corrected (previously claimed 8).
  • Restore benchmark tooling — scripts/bench/restore-reference/
    provides a deterministic degradation corpus (JPEG, Gaussian, motion
    blur recipes with fixed seeds), TS-exact ONNX reference runners, and
    contact-sheet rendering; measured results are in
    docs/quality/image-enhancement-benchmark.md. Compression-artifact
    removal remains unavailable by design: no model passed the
    design-content corpus (SCUNet destroys 1px line patterns; the only
    JPEG-trained NAFNet checkpoint was rejected on provenance).
  • Natural-language asset search — the Asset Browser search field now
    combines filename, OCR, tags, and metadata with an optional local visual
    lane. Describe what you remember ("orange sunset over mountains") and
    matching local assets rank by visual content even when the file is named
    IMG_4281.jpg. Images are indexed in the background with a bounded,
    cancellable queue (deduplicated by content hash, so renames and copies
    never re-embed), search results keep match reasons, and exact filename
    queries keep their ordering guarantee. The text tower and tokenizer are
    parity-verified against the reference implementation; everything runs
    locally with no uploads. Visual search is opt-in: the SigLIP image and
    text models plus tokenizer download explicitly, verify SHA-256, and
    filename/OCR/metadata search keeps working without them. See
    docs/architecture/asset-search-system.md and ADR-0221.
  • Object Selection — select an image and use the Select Object tool
    (or the Adjustments tab) to prompt a local SAM2-Hiera-Tiny model with
    positive/negative points and drag boxes. The preview is transient until
    you apply it: candidate masks can be cycled before applying, and Apply
    creates one undoable non-destructive raster mask that survives save,
    reload, and model removal. The ~155 MB model is an explicit, checksum-
    pinned download (Apache-2.0) loaded lazily; embeddings live in a bounded
    session cache and are never written into the document. Promptable
    segmentation is not semantic subject detection and is not a perfect
    alpha matte — brush and trimap refinement remain the edge-quality tools.
  • Depth-aware effects — a reusable, model-independent DepthMap resource
    powers non-destructive Depth Blur: pick a focus point, adjust focus range
    and blur strength, preview the depth field, or convert a depth range into a
    layer mask. Depth maps are generated on demand by a ~27 MB local model
    (Depth Anything V2 Small, Apache-2.0, SHA-256 pinned), cached per source
    revision, persisted in the document (16-bit scalar field), and rendered
    without the model, so saved documents reopen with identical results and no
    inference. The blur compositor is occlusion-aware (sharp subjects do not
    smear into blurred backgrounds) and premultiplied-alpha correct. Relative
    depth only; no metric calibration is claimed.
  • Experimental asset similarity — the Intelligence panel now separates
    image-to-image Similar search from Near duplicates. The image lane uses a
    local DINOv2-small encoder (Apache-2.0, SHA-256 pinned, reference-vector
    parity verified against an independent runtime; selected over the SigLIP
    image encoder from a Varve-corpus evaluation — see
    docs/audits/semantic-asset-similarity-evaluation-2026-08-13.md).
    Near-duplicate ranking keeps exact identity and perceptual fingerprints
    separate. Computed embeddings are cached locally by content hash, so
    unchanged images never re-run inference. The current workflow is
    document-local, capped at 30 image candidates, and does not provide
    automatic deletion. See
    docs/architecture/semantic-asset-similarity.md.
  • Image palette extraction — select one image and open Appearance → Palette
    to generate a deterministic local palette in perceptual Oklab, review
    generated harmonies and WCAG 2.1 contrast pairs, copy HEX values, and save
    extracted colours as document swatches or colour variables. Analysis is
    bounded, cancellable, worker-backed when available, and does not upload
    image pixels or add derived analysis data to the document schema.
  • Email workspace (desktop) — a new workspace mode
    (Ctrl+Shift+7) for visual email authoring with a dedicated IR, HTML and
    plain-text compilers, embedded-asset packaging, URL preflight diagnostics,
    and multi-provider output. Template types, preview, and export are
    available today; rendering fidelity depends on the recipient's email
    client.
  • Browser demo — a bounded public demo at /try/ runs a curated sample
    poster document in WASM with honest capability messaging, stale-asset
    recovery, and a desktop CTA. See docs/architecture/browser-demo.md.
  • Auto-layout improvements — drag-to-reorder children within a flex
    frame, "Add Auto Layout" command to wrap a selection, per-axis child
    sizing (width/height, fit/hug/absolute), grid hug sizing, and
    double-click a resize edge to reset that axis to Hug.
  • OS file associations — .varve and .strata files register with
    the operating system's "Open With" on Linux, macOS, and Windows so
    double-clicking a document opens it in Varve.
  • Onboarding — canvas empty-state shortcuts, micro-hints for new
    tools, learning preferences, and a What's New dialog that surfaces
    recent changes.
  • Workspace mode redesign — the mode picker now uses per-mode accent
    colours, elevated depth, and improved hover states for faster switching.
  • Contact channels — canonical contact and security surfaces in both
    the application and the website (support@varve.studio,
    security@varve.studio, GitHub Private Vulnerability Reporting).
  • Paint tools — raster brush system with a Brush Browser (portable
    brush packages, deterministic previews) and Brush Editor (size, flow,
    hardness, spacing, scatter, texture, grain). Wet-media lifecycle
    (wet-edge blending, sample-all-layers clone), real smudge transport with
    vector-pressure support, symmetry guides, clone source markers, alpha
    lock, and mask painting on raster layers. The paint inspector wires
    presets and per-stroke settings to the worker pipeline. See
    docs/architecture/paint-system.md.
  • Gradient map adjustments — a non-destructive gradient-map adjustment
    layer remaps tonal values through a user-editable colour gradient with a
    built-in preset browser. Affects vector and raster content; export
    preflight flattens to raster for SVG/PDF targets. See
    packages/scene/src/gradientPresets.ts for the preset model.
  • Selection improvements — object marquee with configurable shape modes
    (rectangle, ellipse, lasso), area-aware selection commands (select all
    in area, deselect, toggle), hierarchy navigation (select parent/child),
    select-similar expansion, and indexed geometry for fast broad-phase
    overlap. Raster masks can now be bridged from area selections.

Changed

  • Windows installer shrunk ~75% — the NSIS installer now bootstraps
    WebView2 via the Microsoft-provided downloadBootstrapper instead of
    bundling it, and the bundled ORT WASM runtime was trimmed.
  • Licensing — eight engine crates (varve-core, varve-colour,
    varve-trace, varve-layout, varve-media, varve-effects,
    varve-upscale, varve-bgremove) are now published under MIT OR
    Apache-2.0
    for ecosystem reuse and grant eligibility.
  • Brand cleanup — remaining Strata references in export identifiers,
    wordmark SVGs, product screenshots, and website copy have been corrected
    to Varve.
    ...
Read more

Varve v0.1.2

Choose a tag to compare

@github-actions github-actions released this 16 Aug 03:26

Varve 0.1.2

This release improves editor reliability and completes the first production
resilience pass for the application, website, and release pipeline.

Fixed

  • Settings dropdowns now render above native dialogs and Export, Performance,
    Appearance, and theme changes apply immediately.
  • Content-Aware Fill preview sizing and Fit, 1:1, Center, zoom, keyboard, and
    crop interactions now behave consistently.
  • Palette extraction accepts a user-selected count from 3 through 32 colors.
  • Browser update synchronization, Linux browser chrome detection, menubar
    navigation, and React 19 tooltip refs are hardened.
  • GitHub Actions now have stronger workflow validation, concurrency controls,
    cache/log diagnostics, and failure reports.
  • GitHub Pages builds use the correct /varve/ project-site base path.

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 aarch64 Varve-0.1.2-linux-aarch64.AppImage 49.8 MB chmod +x, then run. Needs FUSE2.
Linux aarch64 Varve-0.1.2-linux-aarch64.deb 58.3 MB sudo apt install ./
Linux aarch64 Varve-0.1.2-linux-aarch64.rpm 58.3 MB sudo dnf install ./
Linux x86_64 Varve-0.1.2-linux-x86_64.AppImage 49.8 MB chmod +x, then run. Needs FUSE2.
Linux x86_64 Varve-0.1.2-linux-x86_64.deb 59.2 MB sudo apt install ./
Linux x86_64 Varve-0.1.2-linux-x86_64.rpm 59.2 MB sudo dnf install ./
macOS aarch64 Varve-0.1.2-macos-aarch64.dmg 58.5 MB Open, drag to Applications.
Windows aarch64 Varve-0.1.2-windows-aarch64.exe 236.7 MB Per-user install, no admin needed.
Windows x86_64 Varve-0.1.2-windows-x86_64.exe 263.7 MB Per-user install, no admin needed.

Verify your download

0cfdfddd0468a3d90665fa9086aa08e4cf1043b7a5e37b62f7f02d888fc7b6e3  Varve-0.1.2-linux-aarch64.AppImage
8518a09929b23af6b066b4aed48441c2fa15185206e0383134a0a26a59dc87c8  Varve-0.1.2-linux-aarch64.deb
deb1fcfae60e304c7f24cb15cd09dade3b7f32e23d1faa0b38df5198a04e9d1b  Varve-0.1.2-linux-aarch64.rpm
baec7e3c3a0d3652c1b4c5ca0ce9dc87fe4964655c4dee123c2957773fa2e074  Varve-0.1.2-linux-x86_64.AppImage
efa7ce55d073bfd5583bfe6655a4109f791b56f59fbd5ab5b83575efc96506ba  Varve-0.1.2-linux-x86_64.deb
904ffac6f55c86d76dcd8c9f3c853d38eee790738e93216093a78fd78410d74b  Varve-0.1.2-linux-x86_64.rpm
3315db5e5e129d2695ae510505a394c0e5cf0e2a41941d76eb4e9aac0d16c7d8  Varve-0.1.2-macos-aarch64.dmg
f4310ad20e551e364014a76d9d39f1267954f89fcdda17395c5f8a533e38bf3d  Varve-0.1.2-windows-aarch64.exe
b2405f5ae79d6ce0b5e74d0868754aec53ee48d1e8f0addad8a277bb71478c0d  Varve-0.1.2-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.2-sbom.cdx.json.

Varve optional AI models

Choose a tag to compare

@K-Arthur K-Arthur released this 14 Aug 02:26

Optional AI model artifacts for Varve's Enhance workflow (downloaded on demand via the model manifest).

nafnet-gopro-width64-fp16b-embed.onnx — NAFNet-GoPro-width64 deblur

  • License: MIT (c) 2022 megvii-model (same as the official NAFNet repo)
  • Source checkpoint: NAFNet-GoPro-width64.pth, sha256 329d3ab4077b8d6b7ff61de376e483714667960bf85be027bf4335cda701196f (verified identical across independent mirrors)
  • Conversion: reproducible, see tools/nafnet-export/ in the repo (torch 2.13 CPU export, opset 18, dynamic HxW divisible by 16, fp16 internal weights with fp32 boundary)
  • Parity: bit-exact vs the trusted PyTorch reference on real photos (max diff <= 1/255, PSNR 94-96 dB); conversion fidelity 98.9 dB (fp32) / 65.2 dB (fp16) on the official GoPro test subset
  • GoPro test subset gate (24 images, seed 7): restored PSNR 32.20 dB mean (official 1111-image anchor: 33.71 dB)

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.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.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