Repository navigation
Releases
Varve v0.6.0
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. Seedocs/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 acceptimage/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 openshttps://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 withoutlibwebkit2gtk-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 namedVarve-<version>-x86_64.AppImage(nolinuxsegment).
The updater platform key is stilllinux-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
pathnode 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, andcreateCallouthonours
tailLengthfor 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 rembgBiRefNet-general-epoch_244.onnxfile. 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...
Varve v0.5.1
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+Atoggles 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-binis 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
.appbundles 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 AURvarve-desktop-binpackage resets extract modes instead
of copying0700trees 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.txtorgrep <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
.varvedocument 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
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.varvefiles 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.txtorgrep <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
.varvedocument 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...
Varve optional AI models — SAM2 Object Selection
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
EOFArtifacts
| 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.jsonare public configuration, never
secrets.
Varve AI models (v1)
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
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 —
fvarparsing matches how
OpenType actually stores the table, the selectedwghtvalue 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-... |
Varve v0.2.0
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, prototypestartAnimation/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.figbinaries 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.mdfor 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, andRestore + Upscalecomposes 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.mdand 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. Seedocs/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 —
.varveand.stratafiles 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.tsfor 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-provideddownloadBootstrapperinstead 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.
...
Varve v0.1.2
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
.varvedocument format may still change in ways that break older files. - Updates are manual — there is no in-app updater yet.
A CycloneDX software bill of materials is attached as varve-0.1.2-sbom.cdx.json.
Varve optional AI models
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
Varve 0.1.1
The second public release of Varve, published a few days after 0.1.0 with
the first round of fixes and the release system itself hardened. Still alpha:
treat it as something to try, not something to trust with work you cannot
afford to lose.
Fixes a Linux packaging defect in 0.1.0: the AppImage bundled WebKit/GTK
libraries from the ubuntu-22.04 build baseline, and on distributions with a
newer Mesa/EGL stack (Arch, CachyOS, Fedora) the bundled WebKitWebProcess
fails EGL display creation. The web process aborts while the window stays
open — a white screen. The release now prunes the bundled libraries from
the AppImage payload, so it uses the host's WebKit/GTK (the same libraries
the .deb depends on) and renders everywhere the deb/rpm already did.
Fixed
- AppImage white screen on modern Mesa/EGL hosts: the bundled WebKit/GTK
closure (built on the ubuntu-22.04 baseline) fails EGL display creation on
newer Mesa stacks.scripts/release/prune-appimage-bundled-libs.mjsnow
stripsusr/libfrom the AppImage payload during the release build — the
binary resolves everything from the host, verified on a CachyOS host where
the released AppImage aborted and the pruned one rendered correctly. The
AppImage now requires system WebKitGTK (libwebkit2gtk-4.1) like the .deb;
the download page documents this instead of promising "runs on any Linux".
(The earlier in-appWEBKIT_DISABLE_DMABUF_RENDERER=1workaround was kept
but is not sufficient on its own: the EGL failure precedes renderer
selection.) - The release launch smoke can no longer pass on a blank window: it fails on
the EGL/abort signature in the app output and requires a live
WebKitWebProcess. - The release draft job could never create a draft (v0.1.1 rehearsal): the
filesglob used a negated!dist/release/RELEASE_NOTES.mdpattern, which
softprops/action-gh-release's npm-glob matching treats as matching nothing,
sofail_on_unmatched_files: trueaborted the job.RELEASE_NOTES.mdis now
staged outside the globbed directory and thefileslist is a single
positive pattern;scripts/validate-workflows.mjsrejects any future
reintroduction of the negated pattern or abody_pathinside the glob. - Release hardening inherited from the 0.1.0 rehearsal: frontend built before
desktop compilation, Git LFS fetched on every checkout (bundled models are
LFS-tracked), LFS-pointer guard fixed for Windows paths, per-platform SBOMs
generated and validated,SHA256SUMS.txtgenerated last over the complete
upload set, draft assets re-downloaded and re-hashed before publication,
native runner smokes for Windows and macOS, and a container install-test
for the Linux packages.
Added
-
Code-signing pipeline (certificate-ready) — the release system now
enforces a fail-closed signing policy: asigning-preflightjob validates
Apple/Azure credentials before any build starts, Windows installers are
signed through Azure Artifact Signing via Tauri'ssignCommand, macOS
builds are Developer ID signed, notarized and stapled via the App Store
Connect API, and every artifact is verified on its actual bytes
(verify-windows-signature.ps1,verify-macos-signature.sh) before
checksums, GitHub artifact attestation, and the draft release. Signedness in
release metadata derives only from those verification reports — a stable
release never silently ships unsigned. Seedocs/release/signing-decision-record.md
for the strategy,docs/release/code-signing-setup.mdfor the human
acquisition checklist. No certificates are owned yet; until they are,
releases are unsigned and honestly labelled. -
Image Trace (native raster-to-vector) — trace a selected image into
editable vector artwork with presets (crisp logo, pixel-art sprite,
centerline sketch and more), live preview, and a result estimate. Desktop
builds run the native Rust engine on a background thread with progress and
cancellation; web builds fall back to bounded TypeScript providers with
honest capability gating (centerline is native-only). Modes: black-and-white
outline (threshold, despeckle, holes), grayscale, limited color (perceptual
Oklab palette), pixel art (hard pixel boundaries, nearest-neighbor
scaling), and centerline (stroked skeletons). Traces insert as one undoable
group beside the source; Edit Trace (context menus) re-opens with the
stored settings and replaces the result in place. Entry points: Object
menu, canvas/layers context menus, command palette (Ctrl+Alt+Shift+T),
Inspector, and QuickBar. Seedocs/architecture/image-trace-system.md. -
New Design experience — the New File dialog is now "New design": an editable
document name (untitled defaults with collision-free numbering), three starting
points (Empty document / Start with a frame / Template), searchable frame presets
with favorites and recents, custom frame sizes with unit conversion and aspect
lock, and collapsed Advanced settings (print intent reveals CMYK, DPI, and bleed
automatically). Presets create an initial frame on an unbounded document — the
document itself never carries a size. -
Canonical document creation service (
createNewDocumentin@varve/scene) —
every creation path (home New button, empty state, File → New, Ctrl+N, command
palette, template, frame preset) now funnels through one typed request that
atomically produces a fully initialized document (schema version, name, optional
initial frame, color config, undo state). -
.varvenative format — new saves default tofilename.varve; legacy
.stratadocuments still open through the same versioned migration pipeline.
File → Save writes disk-opened documents back to their original path
(Figma/Photoshop behavior).application/x-varveregistered alongside the legacy
application/x-strataMIME on Linux/Windows/macOS file associations. -
Responsive workspace navigation — the editor top bar now fits the document
title, workspace tabs, and controls without overlap at any width: priority-ordered
workspace tabs with a "More" overflow menu, active workspace always visible, title
truncating with an ellipsis. -
Complete Varve identity — app mark now renders on the home toolbar, About
dialog, custom title bar (with a graceful fallback), favicons, and the generated
icon pipeline emitsvarve-icon.svg; remaining user-visible "Strata" strings
(LUT export headers, AI diagnostics, window title defaults) renamed.
Changed
- The New Design dialog fits within 1280×720 viewports: sticky header and footer,
internally scrollable body, viewport-capped height (also fixes the modal overlay
that could intercept clicks when closed). - Import of native-format files preserves the original document JSON and display
name instead of inserting a blank placeholder.
Fixed
- The closed
<dialog>could remain visible and intercept pointer events (a
display: flexoverride of the UA'sdialog:not([open])rule) — now scoped to
[open]. - Stale
strata-*selectors across the E2E suite refreshed to thevarve-*classes. - The colour WASM fallback referenced a build artifact that no longer exists
(/wasm/strata_colour_bg.wasm→varve_colour_bg.wasm). - The release gate ran desktop cargo tests before the frontend existed, which
tauri::generate_context!()hard-fails on — the frontend is built first now,
and a workflow validator rejects any edit that moves desktop compilation
ahead of it again. - The release draft job generated no final
SHA256SUMS.txtfor the merged
multi-platform set — it is now generated last (over installers, manifest and
SBOMs) and the draft's uploaded bytes are downloaded and re-hashed before a
human can publish. - The SBOM generator still identified the application as Strata (tool vendor,
component name, purl, onestrata:property) — it now emits Varve identity
and platform-scoped SBOMs with a structural validator. website-deploy.ymlheld an unnecessaryactions: writepermission and had
norelease: publishedtrigger, so the download page could not rebuild from
a newly published release.
Distribution hardening
- One canonical URL system (
apps/website/src/lib/siteUrl.ts): every internal
link, asset, canonical URL, OG image, sitemap entry and robots location is
derived fromSITE_URL/SITE_BASE, so the site builds identically as the
/varveGitHub Pages project site and as a root custom domain. - The download page is release-driven: on
release: publishedthe site is
rebuilt from the exact published assets via an explicit channel policy
(latest published stable, else latest published prerelease; drafts never
appear) with manifest/checksum verification — an unverifiable release fails
the deployment rather than inventing data. - Per-platform and combined CycloneDX 1.5 SBOMs ship with the release and are
covered bySHA256SUMS.txt. - Post-deployment smoke check: homepage, download, docs, sitemap, robots,
favicon, 404 and the/varvecanonical prefix are verified against the live
URL with bounded retries after every Pages deploy. - Download page accessibility: tablist semantics with arrow-key navigation,
copy-to-clipboard checksums with announcements,aria-currentnavigation
state, explicit unverified-release state.
Before you install
These builds are not code-signed. That is a statement about this project’s budget, not about the files — but your operating system cannot tell the difference, and neither can you without checking. Verify the SHA-256 checksum below against your download before running it.
- Windows shows "Windows protected your PC". Choose More info → Run anyway.
- macOS refuses to open the app. Use System Settings → Privacy & Security → Open Anyway. Do not disable Gatekeeper system-wide.
- Linux has no equivalent prompt; verify the checksum instead.
Downloads
| Pl...