Open-source credits
The engines behind the bench
Tools and Studio convert, compress and edit your files on your own device. They do it with open-source software written by other people, and most of these licences ask to be named. So here they are, with the licence each project ships under.
Files, documents and PDFs
Everything the Tools bench runs. These libraries execute in your browser — for every tool below, the file is never sent anywhere to be converted. The audio & video tools are the exception and say so on each tile: they are processed on Forismo's server by the FFmpeg build noted under third-party notices.
| Project | Licence | What it does here |
|---|---|---|
| pdf-lib | MIT | Reading and writing PDFs — merge, extract, rotate, reorder, delete pages, watermark, page numbers and document details. |
| PDF.js (pdfjs-dist) | Apache-2.0 | Rendering PDF pages — page thumbnails on the bench, and PDF to images. |
| JSZip | MIT or GPL-3.0-or-later (used under MIT) | ZIP archives. |
| fflate | MIT | Deflate and inflate, everywhere bytes are packed. |
| jsPDF | MIT | Building a PDF from Markdown. |
| Mammoth | BSD-2-Clause | Word documents to HTML. |
| Marked | MIT | Markdown parsing. |
| Papa Parse | MIT | CSV reading and writing. |
| Tesseract.js (with the Apache-2.0 English tessdata) | Apache-2.0 | Reading text out of images. |
| UPNG.js | MIT | PNG encoding and quantisation. |
Studio
The making surfaces — design, sprites, 3D and games.
| Project | Licence | What it does here |
|---|---|---|
| three.js | MIT | The 3D viewport. |
| opentype.js | MIT | Turning type into outlines. |
| polyclip-ts | MIT | Boolean operations on shapes. |
| svgpath | MIT | Path parsing and transformation. |
| fit-curve | MIT | Fitting curves to traced points. |
| SVG.js | MIT | Parsing and authoring retained SVG artwork inside Sprite. |
| perfect-freehand | MIT | Pressure-aware vector pencil, brush and marker strokes in Sprite. |
| Box2D 3 WASM | MIT | Deterministic 2D physics previews and baked Sprite motion. |
| react-colorful | MIT | The colour picker. |
| KAPLAY 3001 | MIT | The game runtime, vendored under public/vendor/kaplay with its licence file. |
| Transformers.js with ONNX Runtime Web | Apache-2.0 · MIT | On-device model inference for search. |
| Google Draco | Apache-2.0 | Decompressing 3D geometry when you open a compressed model, served from public/vendor/three-decoders with its licence file. |
| Basis Universal (Binomial LLC) | Apache-2.0 | Transcoding KTX2 textures to whatever compressed format your GPU can sample, served from public/vendor/three-decoders with its licence file. |
| meshoptimizer | MIT | Decoding meshopt-compressed geometry and vertex data. |
The application
The frame around all of it.
| Project | Licence | What it does here |
|---|---|---|
| RobotExpressive — Tomás Laulhé / Don McCurdy | CC0-1.0 | The optional animated sample character in interactive messages. |
| Next.js | MIT | The application framework. |
| React and React DOM | MIT | The interface itself. |
| supabase-js | MIT | Accounts, data and storage. |
| occt-import-js (OpenCascade) | LGPL-2.1 | On-device STEP and IGES previews in conversations. |
| tus-js-client | MIT | Resumable, chunked uploads for large editable Sprite projects. |
| SWR | MIT | Data fetching and caching. |
| Zod | MIT | Validating what comes in. |
| Sonner | MIT | Toasts. |
| DOMPurify | MPL-2.0 or Apache-2.0 | Sanitising rendered HTML. |
| MapLibre GL JS | BSD-3-Clause | Maps. |
| React Flow (@xyflow/react) | MIT | Node graphs. |
| react-resizable-panels | MIT | Draggable panel seams. |
Code copied into this repository
- q-floodfill (MIT, Pavel Kukov) — the scanline core of the paint bucket in Studio's sprite editor. The copy carries the upstream licence text verbatim above it, and our changes to it are noted in the same comment.
- KAPLAY 3001 (MIT, KAPLAY Team and contributors) — the game engine is served from
public/vendor/kaplay/unmodified, next to its LICENSE file, rather than fetched from a CDN. - Draco and Basis Universal decoders (Apache-2.0, The Draco Authors and Binomial LLC) — the two decoders that open a compressed 3D model are served from
public/vendor/three-decoders/next to their licence files, rather than fetched from Google's CDN as the library's examples do. They are the builds shipped inside the pinned three.js release, and each file's hash is recorded beside them so "unmodified" stays a checkable claim. - occt-import-js and OpenCascade (LGPL-2.1) — the CAD preview runtime is served from
public/vendor/model-cad/. Its JavaScript bindings are adapted to the application's content security policy; the WebAssembly file stays unchanged. The source and modification notice, full licence text and upstream source are available.
Licence texts
Each project above ships its full licence text with its own source, and that text stays with the copy in this application's dependency tree. Nothing listed here is modified from what its authors publish, except where the section above says otherwise. If an attribution is wrong or missing, tell us and it gets fixed — reach us through the address on our Terms page.