Changelog
A complete history of every update we've shipped.
Pixel renderer bands, supersampling & stability fixes
๐๏ธ Binarization bands
Divide the output into discrete luminance bands instead of a single threshold. A bandsScale parameter controls the distribution curve so bands can be weighted toward highlights or shadows.
๐ bandsScale (metaball)
Applies the same non-linear distribution control to the metaball renderer.
๐ Supersample in preview
Renders the preview at a higher internal resolution before downscaling, reducing aliasing on fine patterns.
๐พ Export dialog persistence
Scale, format, and quality choices are remembered between sessions.
๐ Cancel / resume auto-renewal
Buttons now show a loading state while the request is in flight, preventing double-clicks.
โ ๏ธ Incomplete subscriptions
Now redirect to the Stripe Billing Portal to complete payment, rather than showing an error.
๐ต Metaball low decay rendering
Rendering logic was corrected and default values were updated to decayRate=8 and threshold=0.1.
๐ซ Duplicate subscriptions
A race condition allowed duplicates to be created. The checkout flow now blocks new sessions when an active paid subscription already exists.
๐ฅ๏ธ Subscription tab flicker
This was caused by double data fetching on load and has been consolidated into a single fetch.
๐ผ๏ธ Thumbnail generation
This silently failed due to a stale closure capturing an outdated model reference. It was fixed by using refs for model and settings.
๐ค Background remover
This threw image load errors when an Object URL was revoked before the image finished loading.
๐ธ Snapshots component
Multiple bugs were fixed, including an incorrect sourceBlob type, revoked Object URLs, and records not being cleaned up when IndexedDB writes failed.
Brand refresh
๐๏ธ New logotype
SVG was added to the navbar and footer.
โจ Animated logo spinner
Uses spring physics via anime.js for a smooth, natural-feeling entrance animation. A minimum loading duration ensures the animation completes before the studio appears.
๐จ Favicon and app icons
Updated to the new brand design.
Stippling, Floyd-Steinberg dithering & SVG direct mode
โ๏ธ Stippling renderer
Distributes dots based on image luminance using a relaxation algorithm, producing an irregular, hand-engraved look distinct from the regular grid renderers.
๐ฒ Floyd-Steinberg dithering
Propagates quantization error to neighboring pixels for smooth tonal gradients in binarized output. The result shows significantly less banding than threshold-only binarization.
๐ SVG direct mode export
An alternative SVG output path writes shapes without going through the canvas, improving compatibility with Illustrator, Inkscape, and laser cutter software.
๐ข Live dot count
Updates in real time as you adjust parameters, alongside the canvas pixel dimensions.
๐ Stippling stability
Deep-cloned grid points prevent state mutation, making undo/redo reliable when switching renderers.
Undo/redo, diff highlighting & editing tools
โฉ๏ธ Undo/redo
Step back and forward through every parameter change with Cmd/Ctrl+Z and Cmd/Ctrl+Shift+Z.
๐ Diff highlighting
Any value that differs from its default is highlighted, so you can see at a glance what has been changed in each section.
โ๏ธ Grid stretch
Independently scale the halftone grid on the horizontal and vertical axes for non-uniform patterns.
๐ Image flip
Horizontal and vertical flip were added to the cropper dialog.
๐ Contrast adjustment
Added to the image adjustments panel.
๐จ Canvas background customization
Choose a solid color or a checkerboard transparency pattern.
๐๏ธ Quantization mix parameter
Blend between the original and quantized input for subtler posterization.
๐ License refresh
Manually sync entitlements from the account page without signing out.
๐ท๏ธ Slider labels
Fixed wrapping to a second line on narrow panels.
Pro subscription
๐ Pro subscription
Monthly and yearly plans unlock unlimited AI background removal and other premium features. Manage your plan from the account tab.
๐ Spot purchase
A one-time payment option for users who prefer not to subscribe.
๐ณ Card and Link
Payment methods supported at checkout.
๐ท๏ธ Promotion codes
Enter a discount code at the Stripe checkout page.
โถ๏ธ Checkout session resume
If you sign in mid-flow, you are automatically returned to where you left off.
โฌ๏ธ Upgrade prompts
Integrated into the batch processing and export dialogs.
โ๏ธ Subscription management
Cancel, resume auto-renewal, and downgrade flows are now clearly separated with loading states on each action.
๐งพ Automatic tax
Collected at checkout via Stripe Tax.
WASM Gaussian blur & Environment settings
โก WASM Gaussian blur
Blurs are computed in a WebAssembly module, providing a true Gaussian blur instead of relying on the CSS blur approximation used previously.
โ๏ธ Environment settings panel
Choose between CSS blur, WASM blur, and other blur methods. The selected method persists between sessions.
๐ Language switcher
Change the interface language without navigating to a settings page.
๐ต Blur radius as sigma
Now treated as standard deviation rather than pixel radius, giving more predictable results across different image sizes.
๐ Quota fetching
Usage data stays fresh without redundant network requests.
AI background removal
๐ค AI background removal
Remove the background from any image with one click. The result is returned as a transparent PNG ready to halftone.
๐ก Real-time job status
A progress indicator updates live as the server processes your image.
โ๏ธ Before/after comparison slider
Drag to reveal how much of the background was removed.
๐ Monthly usage display
Remaining credits, next reset date, and billing period are shown clearly in the account panel.
๐ PWA manual update
When a new version is available, a prompt lets you choose when to apply it rather than reloading automatically.
๐ข SVG export precision
Controls the number of decimal places in path coordinates to reduce file size.
๐ Usage quota
The UI clearly shows how many credits remain and when they reset.
User accounts & preset cloud sync
๐ค User accounts
Sign in with email/password, phone number (OTP), or Google OAuth. A welcome dialog is shown on first sign-in.
โ๏ธ Preset cloud sync
Presets saved while signed in are stored in the cloud and automatically available on any device.
๐ง User avatar
Displayed in the navbar when signed in.
โบ Section reset buttons
Quickly restore any section to its default values without touching other settings.
๐ฒ Standalone quantization panel
Quantization controls are now directly accessible in the sidebar without going through a sub-menu.
๐ก๏ธ Turnstile CAPTCHA
Integrated into all auth flows to prevent spam and credential stuffing.
โก Blob caching
Previously processed image data is reused instead of recomputed, making preset switching and snapshot loading noticeably faster.
Advanced mode, displacement, PWA & 9 new languages
๐ฌ Advanced mode
A toggle that reveals hidden parameters across all panels, including scale, radius factor, alpha blending, and rendering internals, for granular control beyond the standard UI.
๐ Displacement settings panel
Warp the halftone grid using 2D noise, with displacement type, scale, amount, and seed controls for organic, hand-printed distortion.
โซ Metaball binarization toggle
Switch the metaball renderer to a hard binarized output instead of a smooth gradient.
๐ 9 new languages
French, Portuguese, Italian, German, Spanish, Russian, Chinese (Simplified), and more were added.
๐ฑ PWA support
Install the app to your home screen via the browser prompt. The app launches in standalone mode and works offline.
๐ Bounding mode
Controls how output dimensions are calculated relative to the source image.
๐ณ Pricing page
Added with plan details and subscription options.
๐ข SVG numeric precision
Lower values produce smaller files with negligible visual difference.
โฌ๏ธ Download button redesigned
SVG and PNG are now clearly separated actions in a popover menu.
Pixel renderer, sampling effects & quantization
โก Tile-based pixel renderer
Large images are processed in tiles so you can cancel a render mid-way without freezing the browser.
๐ Sampling effects panel
Layer wave, noise, and other effects directly on top of any halftone pattern. Includes wave shift and frequency controls.
๐ฒ Quantization and dithering options
Posterize the input image before halftoning, with Bayer matrix dithering patterns from 2ร2 up to 16ร16.
๐ Korean and Italian
Interface languages were added.
โ๏ธ Cropper dialog
Rotate the source image in 90ยฐ steps before applying the crop.
โณ Download spinner
Shown during export so it is clear when a file is being generated.
๐ง Toolbar layout reorganized
Grid and pixel renderer shortcuts are directly accessible without opening a sub-menu.