Toy Image AIToy Image AI

May 2025 Release — History View & Rock-Solid Image Storage

on 7 days ago

Our latest deploy focuses on two everyday pain-points our community raised: remembering every spark of inspiration and never seeing a broken thumbnail again. Below you’ll find a concise tour of what shipped, why it matters, and how we fixed the root cause once and for all.


1. Instant Time-Machine: History on the Image Generate Page

Every image you craft is now archived in a timeline directly beneath the generator. The list streams in reverse-chronological order, paginates on demand, and renders via native lazy-loading so first paint stays snappy even with hundreds of items. (ImageKit)

Highlights

  • Real-time sync – the moment an image finishes processing, it appears in History without a manual refresh.
  • Secure segregation – each record lives inside your private Cloudflare R2 bucket path (user-scoped UUID) for strict access isolation. (Cloudflare Docs)
  • One-click revisit – tap any thumbnail to open the full-resolution file in a lightbox, copy the URL, or redownload.

Why we built it – Public AI feeds (e.g., Meta’s new Pinterest-like gallery) show that people love scrolling collective creations, but professionals still need a personal vault to track their own iterative drafts. (The Verge)


2. Format Frustrations Fixed: .webp / .jpg Reliability

2 · 1 What actually went wrong

Our initial autopsy blamed third-party decoders, yet deeper logs told another story: under heavy concurrency the R2 upload routine closed the stream early, truncating tail bytes, corrupting EXIF data, and leaving browsers to throw “unsupported image format” errors. Similar truncation bugs have bitten Azure Blob users (Microsoft Learn), WordPress admins wrestling with WebP (Reddit), and MinIO-backed apps that surfaced broken icons after a restart. (GitHub)

2 · 2 The fix we shipped

ImprovementDetails
Atomic write pipelineFiles now land in a temp key, are SHA-256 + size verified, then renamed in a single atomic copy+delete step—an established pattern for S3-compatible stores. (Stack Overflow)
Integrity guardsEvery upload must include Content-Length & Content-MD5; mismatches trigger an automatic retry so half-files never persist. (AWS 文档)
Smart fallbackIf a client rejects WebP, we instantly serve a sibling .jpg variant following progressive-JPEG best practice. (Medium)
Gradual revealLarge assets adopt progressive/lazy decoding to preserve perceived performance. (ImageKit)
Up-to-date codecsAlthough the root cause was storage, we still patched libwebp to the 2024 security baseline for good measure. (甲骨文)

3. What’s next?

  • Bulk download – select multiple History items and receive a zipped bundle.
  • Collections & tags – curate series of renders into named sets for storytelling.
  • AVIF preview – we’re prototyping first-class AVIF output to cut file sizes even further.

Your bug reports and feature ideas power each release—drop us feedback any time. Happy creating!

— The toyimageai Product Team (10 May 2025)