New features
Image CDN for React, Next.js, Astro, and any non-WordPress siteNew endpoint at
GET /cdn/v1/{deliveryKey}/{fileId}?w=…&h=…&q=…&format=… turns any file in Convertly Storage into an imgix / Cloudinary-style transform URL. Drop it in <img src>, srcset, or a next/image loader and the rest takes care of itself — deterministic URLs + immutable cache headers mean an upstream CDN serves 90–99% of requests for free.- Delivery keys — a new credential type (
cvly_pub_…) that’s read-only and safe to embed in client markup. Manage them in Settings → API → Delivery keys. - Format negotiation —
format=autopicks WebP for modern browsers, JPEG for old ones, viaVary: Accept. - Monthly delivery cap with quota headers (
X-Convertly-CDN-*-Month) on every response. Free 5K, Starter 50K, Pro 500K, Business 5M.
SVG to raster — render vectors at any resolution
POST /api/convert now accepts SVG inputs and renders them to PNG, JPG, WebP, AVIF, TIFF, GIF, or HEIF. Output dimensions follow your resize preset — vectors upscale without artifacts, and icon-sized SVGs no longer produce icon-sized rasters. With no resize specified, output defaults to a 1024 px long edge.This rounds out the SVG path: raster → SVG (vectorize) and SVG → raster (rasterize) are both first-class operations now.Workflow rebuild: real per-node execution, rich conditions, branch routing, headless authoringWorkflows were quietly running a single conversion up front and marking every downstream node as “done.” That’s gone. The engine now flows a buffer node-by-node — each step takes the current output, runs its op, returns the next buffer.
- Conditions get teeth. New rule builder with operators (equals, contains, matches, greater-than, less-than, is-empty, …), per-rule NOT, AND/OR groups, and nesting. Applies to both the upload gate and per-branch routing. Legacy conditions keep evaluating.
- Branches really branch. A branch node’s outgoing edges now carry
true/falselabels. The engine evaluates the condition, takes the matching path, and surfaces “Branch X took the true path; this step is on the false path” in the run log. - Headless authoring.
/api/workflowsnow accepts API keys, not just dashboard sessions. The MCP server gainedcreate_workflow,update_workflow,run_workflow,list_workflows,set_workflow_active,delete_workflow, andlist_workflow_runs. An agent can author a pipeline end-to-end and run it against a local file in one tool call. - Canvas UX. Pan/zoom/select like the editor, plus a minimap, controls, and
Shift-drag box-selection. The Test button no longer looks clipped. - Runs tab. Duration in the header, output download button, step timeline with status dots.
Folder share links — documented and ready to integrateAny folder in Convertly Storage can be published as a read-only share link. Recipients open a hosted browser at
convertly.sh/share/folder/{token} with previews, per-file download, and a one-click zip — no Convertly account needed.The HTTP surface is now fully documented in Files and Storage → Public share links:- Owner-side:
GET / POST / DELETE /api/folders/{id}/sharewith expiries from 1 hour to never. - Reader-side: anonymous
GET /api/share/folder/{token}for the JSON listing, and/api/share/folder/{token}/zipfor a single archive download.
Improvements
Pricing reflects what’s actually meteredConvert, compress, media tools, and workflow runs share one monthly meter (“media operations”) because that’s what the engine has always enforced. Per-category counts that weren’t separately billed have been removed from marketing and replaced with a single honest number per plan, plus the new per-plan image CDN delivery allowance.
File manager performance passLarger libraries now load and scroll the way you’d expect from a modern file manager.
- Cursor pagination. Folders load 50 files at a time and fetch the next page automatically as you scroll. Previously the list silently truncated at 100 items.
- Real thumbnails. Image previews are now 320 px Supabase transforms — typically 30–80 KB instead of the multi-megabyte originals. A folder of 50 photos now downloads ~2 MB of preview bytes instead of 250 MB.
- Skeleton placeholders appear during initial loads and page-2+ fetches in both grid and list views, so the UI no longer goes blank during refetch.
- Prefetch on hover. Hovering or focusing a folder warms the data for that folder’s contents — clicks into it then resolve instantly.
- Off-screen skipping. Cells outside the viewport are skipped from layout and paint so a 500-item folder stays fluid.
- Filter chips hide folders when a media-type or format filter is active (Drive/Dropbox parity — folders have no type so showing them under “Images only” was misleading).
Home merged into FilesHome and My Files were doing the same job.
/app now redirects to /app/files, and Files renders the workspace stats strip and Convert/Compress buttons inline. One canonical “your stuff” view instead of two near-identical ones.Video editor goes fullscreenOpening a video in the Process file editor now renders it as a fullscreen player centered in the editor area, instead of being wrapped in the image canvas. The resize and rotate handles — which only ever applied to images — no longer show on video, so what you see in the preview is what ffmpeg will actually encode on Save.
- Adjust filters (brightness, saturation, contrast, hue, grayscale, invert) still preview live via CSS, matching the server-side output.
- Flip and flop apply instantly to the preview.
- The native player’s controls are the only bottom bar, so floating toolbars no longer overlap the timeline.
Audio editor goes full widthThe audio editor now uses the full main area: a filename banner across the top, an edge-to-edge waveform, the trim/fade overlay underneath, time labels, and the player anchored along the bottom. Waveform bars inside the active trim range highlight in the brand color and dim outside it, so the cut is visible at a glance before you Save.
Add step only enables when there’s something to addThe Add step button in the editor header (and on the floating image toolbar) is now disabled until the active tool actually has a pending change — for example, a slider moved in Adjust, a non-default size in Transform, or a real range selected in Trim. Tools without a no-op concept (Vectorize, Remove Background, Convert, Strip Metadata, GIF) stay enabled as before.Hovering the disabled button explains why: “Move a slider or change a value to enable.” No more committing empty steps by accident.
Editor polish
- The flip-horizontal and flip-vertical buttons in the layer panel now show hover tooltips like the rest of the editor toolbar.
- Tooltips inside the fullscreen editor render above the canvas instead of getting clipped behind it.
Fixes
- Nested folders stay nested. Creating a folder while inside a subfolder occasionally placed the new folder at the workspace root after a refresh. The create-folder request is now validated server-side against the parent and synchronized with the page cache, so the folder appears in the right place every time.
- Remove Background no longer errors with
ERR_MODULE_NOT_FOUNDon the bundled production build.