Repository navigation
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
close guard, so a tab could close or the app could quit with no save prompt. - Text save integrity. Save and close include buffered text drafts,
including the visible value during IME composition, without ending the
edit session. Clicking another text layer while editing switches the edit
to it. - One undo step per control gesture. Dragging a slider or colour picker,
or holding an arrow key, now records one undo entry for the gesture instead
of one per intermediate value. - Hiding a fill hides it. Turning off a shape's last visible fill removes
it from the canvas and its click target. - Seeded system fonts are checked on the device. Common system families
such as Arial, Helvetica, Meiryo, and Noto Sans CJK were assumed to be
installed. They are now measured on the device, and a missing one is
reported with a replacement path instead of being reported as faithful. - Autosave failures are visible. When crash-recovery autosave cannot
write, the status bar shows "Recovery paused" with the reason. It clears on
the next successful save. - Varve Library saves that fail no longer report Saved. The document stays
modified and keeps its recovery point. - Preflight findings are visible. The preflight panel was clipped inside
the status bar. It is now a popover above the bar. - Paste position. Pasting onto the same page keeps the copied position.
Pasting onto a different page centers the selection instead of reusing the
source page's coordinates. - Document names are shortened by whole characters in the close and quit
dialog, so names with emoji or combining marks are not cut in half. - Home thumbnails are sharp on HiDPI displays. Covers are rendered at the
display's pixel density. Covers saved by older builds still show. - Export names stay inside one folder segment. A layer named
Hero/Mobileor../secretsno longer creates folders or escapes the
export folder. Only the naming template's own separators create folders.
Fixed: vector tools and SVG
- Offset Path. Rounded joins round only the outside of a corner, the
miter limit follows the join width as SVG and PostScript define it, very
large offsets can no longer freeze the app, and open paths no longer bridge
their ends. - SVG import is linear in element count. A 4,000-element file went from
14.6 s to 0.26 s in our test, and a scaling test guards against a return of
the quadratic behaviour. - SVG import keeps visibility and holes,
useinstances keep fill
opacity, and dropped Inkscape live path effects are reported instead of
silently omitted. - SVG export. Text
font-familylists end in a generic family (serif,
sans-serif, ormonospace), whole-document SVG export keeps gradients
instead of flattening them to one colour, and SVG and XMP output never
contains characters XML 1.0 cannot represent.
Fixed: PDF export
- PDF gradients render. RGB gradient fills exported with a function that
Poppler rejected, so gradient-filled shapes came out blank. Gradients that
fade to transparent now keep their fade through a soft mask. - Transparency and blend modes. Standard PDF and PDF/X-4 keep supported
blend modes, text fill transparency, stroke colour alpha, and drop-shadow
blending and opacity. PDF/X-1a stops with guidance when artwork uses
transparency or a blend mode it cannot represent. - Text in PDF. Native PDF export keeps authored text style. Text outside
WinAnsi is outlined to keep its glyphs, and Unicode glyphs survive font
subsetting. Outlined text is not searchable. When the chosen font cannot
draw a character, Export Results names the characters, font, and text
objects instead of exporting a blank box.
Fixed: PDF import
- PDF import reads real documents. Compressed content streams (Flate,
ASCIIHex, ASCII85) are decoded and tokenized, text is placed with the text
matrix and page transform, and/Rotateand inherited page boxes are
applied. - PDF text survives encoding. Character codes resolve through
/ToUnicode, or the declared base encoding plus/Differences, so
accented and non-Latin text is no longer dropped. Word gaps inTJarrays
are kept. - Vertical writing stays vertical. Vertical-mode runs (
Identity-Vor
/WMode 1) become Varve vertical text placed with the font's vertical
metrics, and continuous runs merge into one editable column. - Each PDF page imports as its own Varve page, up to 50, in
/Kidsorder. - Import does not invent content. Invisible or clip-only text (such as an
OCR layer on a scan) and optional-content layers hidden by default are left
out and counted in Import Results. Encrypted PDFs are refused with an
explanation instead of importing as a blank page. An inline image followed
directly by a delimiter no longer swallows the rest of the page. - Import reports what it skipped. Images, form XObjects, curves, strokes,
gradients, CMYK and pattern paints, and unencoded composite-font runs are
counted and named in Import Results, and a page that could not be decoded
is reported as unread.
Security
- AI off loads no models. Turning AI features off refuses every model
download and session, in the app, in web workers, and in the native desktop
commands, and skips the startup probes of bundled model files. AI-backed
controls (Lens Blur, Object Selection, export and batch cutout methods,
Home visual search) hide and point to Settings. Quick background removal
still works. Native model downloads only follow HTTPS redirects to an
allowlist of hosts. A missing settings key still starts with AI on. A
corrupt or unreadable settings blob is treated as off. - Desktop file commands only accept paths you picked. Desktop commands
that read or write a path from the interface check a native allowlist. A
path is allowed after a native open, save, or folder dialog, a drop onto
the window, a file-association or command-line open, a recent document
that still exists, or an app-owned data directory. Relative paths,..
traversal, and symlink escapes are rejected. Export next to a project
document still works. - Crash reports stay on the computer. Settings no longer offer
"Automatically send" crash reports, and existing automatic-consent records
migrate to denied. The recovery dialog hides Send unless a build configures
a report endpoint. The default build has none. - OCR dictionaries are pinned. Dictionaries download from a fixed commit
and are checked against a SHA-256 before use. - Vulnerability reporting. Reports now have stated response times, a
security.txtendpoint, an incident runbook, and CI scans (CodeQL,
cargo-deny, gitleaks, OSV-Scanner, and dependency review). Report privately
to security@varve.studio or through GitHub private vulnerability reporting. - Dependency updates. Desktop
zip9.0.4 (RUSTSEC-2026-0367 through
0369) and the 2026-10-20 Vite and TLS advisory patches.
Known issues
- Older apps and 2.34 files. Varve 0.5.x opens a 2.34 file with a
newer-version warning. It does not show text-frame backgrounds or borders,
and they can be lost if 0.5.x saves the file. Keep a backup of important
documents before you upgrade. - Opening files by path. The new desktop file allowlist may refuse a path
that did not come from a dialog, drop, file association, command line, or
recent document. Open the file through File > Open if that happens. - Comic lettering. Hyphen and slash break points in balloon text can still
differ between the saved layout and the canvas. Fixed-size ellipse balloons
wrap early, auto-fit balloons can come out too tall or wide, stroked text
can render offset from its fill, and the tail base is fixed at the bottom
center. - Exports and the browser version. SVG export drops the paint of raster
layers. PDF export does not yet write a multi-page document as one PDF. The browser version
at/tryopens.varvefiles only through File > Open, not by drag and
drop. Some other GitHub-hosted models (colorize, denoise, and anime
upscale) may also fail to download in the browser. - macOS builds are ad-hoc signed and not notarized. Use Open Anyway in
System Settings > Privacy & Security on first launch.
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.6.0-aarch64.AppImage |
157.1 MB | chmod +x, then run. Needs FUSE2. |
| Linux aarch64 | Varve-0.6.0-linux-aarch64.deb |
84.9 MB | sudo apt install ./ |
| Linux aarch64 | Varve-0.6.0-linux-aarch64.rpm |
84.9 MB | sudo dnf install ./ |
| Linux x86_64 | Varve-0.6.0-linux-x86_64.deb |
92.6 MB | sudo apt install ./ |
| Linux x86_64 | Varve-0.6.0-linux-x86_64.rpm |
92.6 MB | sudo dnf install ./ |
| macOS aarch64 | Varve-0.6.0-macos-aarch64.dmg |
88.5 MB | Open, drag to Applications. |
| Windows aarch64 | Varve-0.6.0-windows-aarch64.exe |
62.6 MB | Per-user install, no admin needed. |
| Windows x86_64 | Varve-0.6.0-windows-x86_64.exe |
67.0 MB | Per-user install, no admin needed. |
| Linux x86_64 | Varve-0.6.0-x86_64.AppImage |
166.2 MB | chmod +x, then run. Needs FUSE2. |
Verify your download
ad23c9bfd88913ab5faa57a99ed7724ca38448b173d696d38b107280f8814fb7 Varve-0.6.0-aarch64.AppImage
90f06830bc4c52b2724670eb14c6f8d6887805eeed3630464c79dde68766b707 Varve-0.6.0-linux-aarch64.deb
d8928f8a142ce2ff051f205e30a5f093ed94a8e760c64c11c24990dc8f575eab Varve-0.6.0-linux-aarch64.rpm
0649d2264fda3334c3734383b80ce7510a67ab28c6c34cfa014019b160892726 Varve-0.6.0-linux-x86_64.deb
8e4cfb741fb41473ed3288aca0c214d16d0ad741172eb1e4482ef864c277451b Varve-0.6.0-linux-x86_64.rpm
715268dda21931011f15e06388ccbf04e5c852f4a1e83c5d3f2d294f3a3bdc1b Varve-0.6.0-macos-aarch64.dmg
c9c08de7f1e73bc2ff46997cf168ddab5b4d48a39a020b5e8e06dcbd238f27bd Varve-0.6.0-windows-aarch64.exe
e0064524dd2f80ca143548b40ed30cc472d812188d698023993b5c2856ed769b Varve-0.6.0-windows-x86_64.exe
6ef8c62f946533ae86279827540fd67ac0d829c309cbc8be5796761ac07729fe Varve-0.6.0-x86_64.AppImage
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. - Updates are manual — there is no in-app updater for this release.
A CycloneDX software bill of materials is attached as varve-0.6.0-sbom.cdx.json.