Major image editor upgrade with hue, blur, sharpen controls, plus comprehensive analytics system.
Big update to the image editor and we finally added analytics so we can actually see if anyone’s using this thing.
Image editor now has hue rotation, blur, and sharpen
Image editor got way better
Added a bunch of editing tools people actually asked for:
Hue rotation - Shift colors around the color wheel. Useful for turning summer photos into autumn or just making things look weird.
Blur - Gaussian blur for when you want that artistic look or need to hide something in the background.
Sharpen - Make images crisper. Works surprisingly well for fixing slightly soft photos.
Better performance - Switched from library code to native browser Canvas API. It’s noticeably faster now, especially on large images.
Fixed crop coordinates - Cropping after flipping or rotating an image used to give you the wrong coordinates. That was annoying. It’s fixed now.
Editor performance improvements
The editor was getting laggy with big images, so we:
- Downscale preview images before editing (working on a smaller canvas is way faster)
- Throttle preview rendering to 25fps (turns out 60fps updates were overkill and causing jitter)
- Fixed memory leak with processed image staying in memory until page refresh. Especially annoying with large images
- Made the UI more responsive
Editing a 5000x3000 photo doesn’t freeze your browser anymore.
Analytics dashboard
Finally we can see what people are actually converting
Built a proper analytics system so we can track:
- What formats people are converting to/from
- Average file sizes and quality settings
- Processing times (helps us find bottlenecks)
- User activity over time
It’s all “fire and forget” logging, so it doesn’t slow down the actual conversion process. And we used the repository pattern because apparently we care about clean architecture now.
Bug fixes
- Missing files don’t crash the system anymore (graceful error handling, what a concept)
- Fixed Zod validation for rotation parameters
- Better error messages when something goes wrong
- Handle edge cases in image processing that we didn’t know existed
Code cleanup
Moved a bunch of database queries into proper repositories instead of scattering them everywhere. The analytics code is actually organized now.
Also simplified the analytics database schema - we were storing a bunch of stuff we could just compute on the fly.