- Fix Unicode escapes (\u26A1, \u2192, \u{1F6E1}) rendered as literal text in JSX
by wrapping them in JSX expressions
- Increase orbit radii (520/320px -> 720/480px) so items don't overlap hero text
- Add orbit animation keyframes (orbit-slow, orbit-med) to globals.css
- Add Tesseract.js OCR fallback for scanned/image-based PDFs that have no
extractable text layer — renders pages to canvas then runs browser-based OCR
- Thread onProgress through all PDF conversion functions for OCR progress
- Wire presentationConverter (pptx read/write via pptxgenjs+jszip)
- Add fontConverter (ttf/otf/woff/woff2 via opentype.js + woff2-encoder)
- Add PSD support via ag-psd in imageConverter
- Add spreadsheetConverter (xlsx/xls/ods via SheetJS)
- Add ebookConverter (epub via jszip)
- Expand data converter with ini/env/properties/ndjson/jsonl/sql formats
- Add context-aware previews for pptx, epub, fonts, and psd in PreviewModal
- Remove unsupported .doc extension from fileDetector
- Replace Node-only wawoff2 with browser-compatible woff2-encoder
Replace jsPDF.text() (plain text dump) with jsPDF.html() + html2canvas-pro
which renders actual styled DOM elements into the PDF. DOCX headings, bold,
italic, tables, lists, links now render correctly. All HTML output also gets
a full styled document wrapper with embedded CSS. HTML-to-Markdown converter
rewritten with proper DOM-walking parser instead of fragile regex.
Full-stack client-side file converter with Next.js 15 static export.
Supports images (Canvas API), documents (mammoth/pdf-lib/jspdf),
audio/video (ffmpeg.wasm), and data formats (papaparse/yaml/xml).
Dark industrial UI with Space Grotesk + JetBrains Mono, animated
drop zone, glassmorphism file cards, progress rings, and ZIP downloads.
Zero server dependencies — files never leave the browser.