Skip to content

Varve v0.2.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 14:46
· 3664 commits to master since this release

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.
  • Render resource management — adaptive image fidelity policy and
    pressure-signal integration improve frame pacing under memory pressure.
  • Marketing website — comparison page, feature screenshots, SEO
    metadata, download-page troubleshooting, and download funnel with
    platform recommendation.

Fixed

  • Accessibility — dialog touch targets, focus-visible outlines,
    keyboard navigation in RecoveryDialog, aria-disabled on inactive
    buttons, and error-boundary auto-focus.
  • Canvas performance — getBoundingClientRect is now cached in the
    input-pipeline hot path instead of called on every pointer-move.
  • Layout engine — flex bugs repaired (recursive hug sizing, per-axis
    child sizing, frame own-size reflow, grid hug sizing).
  • Motion playback — hardened sampler and prototype runtime against
    edge cases that could stall or crash.
  • Popover and Select — portaled custom Select no longer leaks
    outside-click closures; submenus position correctly.
  • Multi-selection — Ctrl+drag preserves the existing selection when
    the target is already selected.
  • Panel styling — previously unstyled surfaces (ErrorBoundary,
    AdjustmentEditor, Design Audit panels, VariablePanel headers) now
    receive consistent design-token styling.
  • Branding — stale .strata references replaced with .varve in
    user-facing code and current-state docs; export identifiers no longer
    emit Strata names.

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.0-linux-aarch64.AppImage 40.3 MB chmod +x, then run. Needs FUSE2.
Linux aarch64 Varve-0.2.0-linux-aarch64.deb 48.9 MB sudo apt install ./
Linux aarch64 Varve-0.2.0-linux-aarch64.rpm 48.9 MB sudo dnf install ./
Linux x86_64 Varve-0.2.0-linux-x86_64.AppImage 40.3 MB chmod +x, then run. Needs FUSE2.
Linux x86_64 Varve-0.2.0-linux-x86_64.deb 49.8 MB sudo apt install ./
Linux x86_64 Varve-0.2.0-linux-x86_64.rpm 49.8 MB sudo dnf install ./
macOS aarch64 Varve-0.2.0-macos-aarch64.dmg 49.0 MB Open, drag to Applications.
Windows aarch64 Varve-0.2.0-windows-aarch64.exe 37.4 MB Per-user install, no admin needed.
Windows x86_64 Varve-0.2.0-windows-x86_64.exe 38.8 MB Per-user install, no admin needed.

Verify your download

9b209f4320ba053f6f48933ee8b80bb6560fc2f8b7dfafc3d46e6fd3a647e982  Varve-0.2.0-linux-aarch64.AppImage
cf03c7295cba67ad7577145572bc9d6ca08dc9f1299d79c56ab5e53d0fcaad95  Varve-0.2.0-linux-aarch64.deb
c6ee75a5106f0d492cdbd431b9fcc83b5174ce88c810db922ef0bb5622dfd164  Varve-0.2.0-linux-aarch64.rpm
1ea6d1931bde5b1a253bc49ce1ba599e58368a6a2453d1e52c7c7caa81e2405f  Varve-0.2.0-linux-x86_64.AppImage
424ec1f69671eb46306c5b71b16a0da5f3b707413a9308eed02ba0ee3c8f0232  Varve-0.2.0-linux-x86_64.deb
4f64570dfd0b58f09454597fb938fced277efb280905a8a7ff60284f62dbf718  Varve-0.2.0-linux-x86_64.rpm
69a6f4aab8edc6465fe7f2024f55d123f7321c11f354197db29ddca124e40601  Varve-0.2.0-macos-aarch64.dmg
44cf328bac96a9e7404e780a835e9ac0052f87f91b4c9e02e3713a9362bb34c3  Varve-0.2.0-windows-aarch64.exe
f8f65117671310f2784b674f6c5d4a70a731a43c5acb634ce23a0eb4695bbcae  Varve-0.2.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.2.0-sbom.cdx.json.