All notable changes to this project will be documented in this file.
- Build Tooling: Migrated from unmaintained
tsuptotsdown- Improved TypeScript support and faster builds
- Better ESM/CJS dual build output
- Library Migration: Replaced legacy/unmaintained dependencies with modern alternatives
- Swapped
UPNG.jsforfast-png(better TypeScript support, actively maintained) - Swapped
pakoforfflate(significantly smaller bundle size, 2-3x faster compression)
- Swapped
- Tooling: Migrated from
ts-nodetotsxfor better ESM/CJS interop and faster execution - Added benchmark script to
packages/corefor performance tracking
- Fixed typo in README
- Licensing: Switched to hybrid license model
@data2image/core(library) now uses MIT for maximum adoptiondata2image(CLI) and website remain GPLv3 (copyleft)
- Updated package READMEs with prominent license notices
- Added
LICENSEandREADME.mdto published package files - Fixed TypeScript type errors in web package Blob constructors
- Core library (
@data2image/core): encode any file to PNG, decode back to original- Binary format v1 with magic bytes, CRC-32 integrity checks, deflate compression
- Filename preservation (including Unicode)
- Dual ESM + CJS builds
- Works in Node.js, Deno, Bun, and browsers
- CLI tool (
data2image): command-line encode/decode with glob supportdata2image encode <files...>with--outputand--stdoutoptionsdata2image decode <files...>with--outputoption- Progress indicators for bulk operations
- Website: Web app at benji377.github.io/data2image
- Drag-and-drop file upload
- Auto-detect encode vs decode based on
.d2i.pngextension - Bulk processing with progress bar
- Image preview for encoded results
- Download individual files or all as ZIP
- Dark mode with system preference detection
- Fully client-side - no server, no uploads
- Complete rewrite from Python + vanilla JS to TypeScript monorepo
- New binary format (not backward-compatible with the old Python implementation)