Releases: lolly-tools/lolly
Release list
Lolly 1.0.6
Lolly 1.0.6 — a formal release across every platform (2026-09-03).
Full notes: RELEASE_NOTES.md.
Highlights since 1.0.5
- The design-system studio starts with one colour.
/startshows one thing per room until the system has something of its own; what shipped is tagged Starter, what you chose is tinted, and a role that follows another says so. Bulk swatch selection, a one-consent Google Font preview, and an Appearance setting for whether the interface wears the palette's primary. - Design tool ease of use. One motion model, a top bar, a navigator and an inspector; text animation with split, stagger and order; six one-click Choreograph showcases; sub-slide stacks and Morph matching; transcript-driven editing.
- Sequence audio. Stereo pan, junction crossfades, signal-following ducking, a master true-peak limiter, pitch-preserving time-stretch, a three-band EQ, BS.1770 loudness normalisation per clip and on-device voice cleanup.
- Narrated slides. Speaker notes become a voice track, captions travel inside the file, PPTX carries real slide audio, and a deck exports as a SCORM 1.2 or 2004 package. Expressive speech marks and voice blends in the script.
- Deep links and automation.
lolly://opens a tool with its inputs filled from another app, a shortcut or a QR code, on desktop, Android and iOS. Editor-state links and a postMessage channel drive the editor at runtime. - A new front door. The landing's Cover Flow is sixteen posed covers, each the app wearing a different design system a hue apart, and it opens on the cover nearest your own brand colour. A lorikeet portrait (AI-generated, declared as such, its Content Credential intact) is the Darkroom's default subject.
- Reliability. The service worker heals cache entries stored before the isolation headers (on-device models no longer stall at 100% for returning users); raster exports on WebKit keep offset shadows; PPTX timing plays timed exits.
- Engine 1.159 to 1.171, all additive: every tool that ran on 1.0.5 runs unchanged.
Downloads
Canonical host: https://lolli.li — lolly-latest.{dmg,deb,rpm,flatpak,apk}, plus the Arch [lolly] pacman repo (Server = https://lolli.li/arch/$arch, pacman -Syu lolly-desktop-bin).
The assets below are a GitHub mirror — verify against SHA256SUMS.txt.
- macOS:
Lolly_1.0.6_aarch64.dmg(Apple silicon, Developer-ID signed + notarized) - Linux:
.deb(amd64 + arm64),.flatpak(x86_64), and the Arch.pkg.tar.zstvia the[lolly]pacman repo
Not rebuilt for 1.0.6 in this round: the openSUSE .rpm (x86_64) and the Android .apk. lolly-latest.rpm and lolly-latest.apk on lolli.li still serve 1.0.5 until those are cut; they will be added to this release when they are.
iOS ships via the App Store (no sideload ipa in this release).
Lolly 1.0.5
Lolly 1.0.5 — the current release across all platforms (2026-08-31).
Full notes: RELEASE_NOTES.md.
Highlights since 1.0.1
- On-device AI models moved off Vercel to org-owned object storage behind lolli.li, so clients fetch the ~1.2 GB of model bytes from a dedicated host — more reliable downloads, less third-party surface.
- iOS App Store: 1.0.5 built on a GM macOS CI runner and uploaded; the ITMS-90111 (build-machine) and ITMS-90118 (stray routing-coverage file) blockers are resolved.
- Desktop packaging: the
.debships the full desktop entry, Flatpak tracks GNOME 50, a tray-panic guard keeps the app alive, and the aarch64.debbuilds natively.
Downloads
Canonical host: https://lolli.li — lolly-latest.{dmg,deb,rpm,flatpak,apk}, plus the Arch [lolly] pacman repo (Server = https://lolli.li/arch/$arch, pacman -Syu lolly-desktop-bin).
The assets below are a GitHub mirror — verify against SHA256SUMS.txt.
- macOS:
Lolly_1.0.5_aarch64.dmg(Apple silicon, Developer-ID signed + notarized) - Linux:
.deb(amd64 + arm64),.rpm(x86_64),.flatpak, and the Arch.pkg.tar.zst - Android:
Lolly-1.0.5.apk(sideload)
iOS ships via the App Store (no sideload ipa in this release).
Lolly 1.0.3
Lolly 1.0.3
A Linux packaging release. Nothing changed in what the app renders or exports — the
engine, the tools and the catalog are identical to 1.0.2.
If you use the Flatpak, please replace it
lolly-desktop-1.0.2.flatpak and 1.0.1 do not start. They install cleanly and
then abort immediately.
The system tray loads its indicator library with a lazy dlopen, and no
org.gnome.Platform runtime ships that library. Because the load is lazy, there was
nothing for the build to fail on: the bundle unpacked, passed the linter, installed,
and only died when you launched it. The library is now built into the bundle.
.deb users were never affected — the package declares the dependency, so apt
installed it.
The RPM could hit the same crash
The RPM declared no dependency on that library at all. rpm's automatic dependency
finder cannot see a lazy dlopen — there is no DT_NEEDED entry to find — so the
package would install happily on a machine without it and then crash the same way.
It now requires the library by soname, which resolves on Tumbleweed and Leap alike.
If the library is somehow missing anyway, the tray is now skipped with a warning
instead of aborting startup.
New in this release
- openSUSE Leap 16 package. Previously Tumbleweed only.
- aarch64
.deb. The first ARM Linux build of Lolly. See the note below. - The gallery tile for Asset Export was blank — its only required input has no
default, so the tile was sampling an empty render. It now shows real output.
Verification
Every x86_64 package here was installed and exercised, not just built:
| Package | Checked |
|---|---|
.flatpak |
Launched. Renders (WebKit resident 358 MB; a blank window sits near 40 MB). |
.rpm (Tumbleweed) |
Installed in a clean container. Pulls in libayatana-appindicator3-1. No missing libraries. |
.rpm (Leap 16) |
Same, on a clean Leap 16 container. |
.deb |
219 MB binary — the frontend is embedded, not loaded from a dev server. |
The aarch64 .deb has not been run on ARM hardware. It builds and passes the
embedded-frontend check, but nobody has launched it. Given that "it built" is exactly
what was true of the two broken Flatpaks, treat it as untested until someone starts it.
Install
# Flatpak (bundle — no repository, so no automatic updates)
flatpak install --user ./lolly-desktop-1.0.3.flatpak
# openSUSE Tumbleweed
sudo zypper install --allow-unsigned-rpm ./lolly-desktop-1.0.3-0.x86_64.rpm
# openSUSE Leap 16
sudo zypper install --allow-unsigned-rpm ./lolly-desktop-1.0.3-0.leap16.x86_64.rpm
# Debian / Ubuntu
sudo apt install ./lolly-desktop-1.0.3_amd64.debPackages are unsigned. Verify what you downloaded:
sha256sum -c SHA256SUMS.txtLolly 1.0.1
Lolly 1.0.1
First public open-source release — 2026-08-30. Free software under the Mozilla Public
License 2.0; the content below is brand-agnostic and reflects the current platform.
Lolly - public launch
Lolly is a constraint-first, template-driven platform that produces creative assets at studio quality and at scale - image, motion, audio, document and more - from simple inputs.
One platform-agnostic engine runs the same render path across a web PWA, desktop and mobile apps,
and CLI + TUI. Tools are data, not bundled code - a manifest, a template and optional hooks -
so new tools can ship without an app update. Lolly runs fully standalone on your own device.
Lolly is completely free and open source. It is licensed under the Mozilla Public License 2.0.
What makes this release
- 🥋 On-device by design. Rendering happens on your device. The on-device utilities (strip
hidden metadata, compress a PDF, format/redact text) never upload your file - bytes in,
bytes out, locally. Nothing phones home. - 🔐 Content Credentials (C2PA) built in. Exports can carry tamper-evident provenance, and
federated source assets keep their credentials through a render. Verify any file's
credentials in-app or from an agent. - ⚡️ One render path, everywhere. The web app, the CLI and the desktop/mobile apps share the
engine, so a render is identical across them. Every input is expressible in the URL, and the
CLI is that same URL under a different transport - GUI and automation never drift. - 📐 Physical units and print output.
width/heightacceptmm/cm/in/ptwith a
dpicontrol; PDF exports fully color managed with separation plates if needed. - 🏭 Batch mode & Multi-edit. A spreadsheet-style grid generates many assets at once.
A live preview of multiple assets editable at once, perform global or isolated edits visually. - 🪆 Tool composition. A tool can live-render another tool as an asset, and tools are
addressable as portable embed URLs. - 👁️ Accessibility. Tune it quiet or loud - reduce-motion, high-contrast, large-text and calm-previews, or richer audio and visuals - opt in without changing export quality.
- 🧠 Governed automation via MCP. An optional Model Context Protocol server exposes the
catalog and render path to AI agents (list, describe, build a link, render, transform,
redact, verify) under the same rules as the app.
The tool set 🧰
The public catalog is brand-agnostic; a deployment mounts its own brand pack (or starts from a
neutral one) and every tool conforms to that brand's tokens automatically. Tools span:
- Everyday: QR codes (link, contact, Wi-Fi, event, location, text), quote cards, code-to-
image, a recomposing dynamic layout, a global meeting planner. - Design: an open canvas, charts (bar/line/area and D3-powered), a photo darkroom
(halftone, scanline, posterize, duotone, dither, ASCII), mesh gradients, street maps. - Utilities (on-device): strip hidden metadata from images and PDFs, compress a PDF,
format/decode/hash/de-identify text, grow a colour palette with perceptual ramps and
WCAG/APCA readability, capture a web page as a high quality vector image.
Tools are marked Official (brand-approved, watermark-free) or Experimental (exports
carry a PREVIEW watermark for testing until graduated).
Privacy and provenance
- Creations and files stay on your device by default; saved sessions and the asset cache live
in local storage, and you can clear them per category. - Exports embed authorship/provenance metadata per format, with no personal data unless you
opt in. - The on-device transform path never watermarks and never embeds provenance - a file you
brought is yours. - Powerful provenance detection including a genAI content assessment for text and c2pa marked files.
Security and licensing
- Licensed under MPL-2.0. Third-party notices are reproduced in
THIRD-PARTY-NOTICES.md, with a machine-readable CycloneDX SBOM
(CI-checked for drift). - Security posture and disclosure process are in
SECURITY.md. Tool hooks run
with the host bridge injected but are not a security sandbox - run only tools you have
reviewed until Worker isolation ships.
Get Lolly
- Run it in the browser - directly via the web or PWA.
- Download the app - for this release, from lolli.li (verify any file
againstSHA256SUMS.txt):- macOS (Apple silicon): signed + notarized
.dmg. - Linux:
.rpm(openSUSE / Fedora family),
.flatpak(any distro),
.deb(Debian / Ubuntu), and an Arch pacman
channel - add[lolly]withServer = https://lolli.li/arch/$arch
(SigLevel = Optional TrustAll) to/etc/pacman.conf, thenpacman -Syu lolly-desktop-bin. - Android:
.apk(sideload; no store). - iOS is pending App Store review; a sideloadable build exists on request.
- macOS (Apple silicon): signed + notarized
- Build from source / self-host - clone,
npm install,npm run dev:web(Node >=22.18 or=24); a first render takes about 60 seconds (
docs/make-something.md).
Self-host the built web shell for a team; full operator documentation lives underdocs/. - Governed at org scale (optional): pair a deployment with the open-source lolly.work
control plane for SSO, feature-flag / export / watermark policy, catalog federation,
approvals and a hash-chained audit log - served to the shell without a code change. Lolly
still renders on-device: OSS = individual freedom, OSS + control plane = organizational
freedom.
Known limitations
- Saved state is per-device; clearing browser storage loses saved sessions.
- Web-page capture is native on the desktop apps and via the companion Chrome extension on the
web; the bare web shell and the CLI stub it until they are deployed with access to chromium. - Hosted rendering of hook-heavy / HTML-heavy tools needs the optional Chromium worker tier;
the fast path refuses them by default.