Tavotto
AI drew your research figure. Tavotto makes it publication-ready: edit matplotlib figures on a canvas, lay out in mm, check journal rules. Free, open source.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗An Adobe Illustrator-style vector editor for the web, built with Next.js + React, that opens, edits and saves .ai files right in the browser (the file never leaves your computer).
npm install
npm run dev # http://localhost:3000
Open an .ai file with Archivo › Abrir… (⌘O) or by dropping it on the window.
.ai files by reading Illustrator's native data with ai-file (Rust/WebAssembly codecs, in a Web Worker): real layers and sublayers, artboard names, text with its typeface and Illustrator's exact glyph positions, gradients with per-stop opacity, and embedded images (repeated copies are deduplicated). A 650 MB file opens in about 3.5 s, versus about 7.5 s through its PDF rendition, and the UI stays responsive meanwhile. Legacy PostScript .ai files open too..ai (⌘S): a multi-page PDF with layers that Illustrator opens as a PDF-compatible file. The active artboard can also be exported as PDF, SVG and PNG (300 ppi).Objeto › Vectorizar imagen… turns the selected image (or the reference photo) into editable shapes, right in the browser:
It's deterministic: the same image always gives the same result. The algorithm lives in src/lib/vectorize/.
Claude can use Freestrator through the freestrator-mcp MCP server, which runs on your computer:
.ai.With Claude › Conectar con Claude…, the web editor (including the one deployed at https://freestrator.vercel.app) syncs live with the Claude session. See mcp/README.md.
| Module | Role |
|---|---|
src/lib/native/ | Native reading: worker.ts decompresses (zstd/zlib in WebAssembly) and parses the native stream with ai-file off the main thread; convert.ts maps Illustrator's model (art space, y up) to the scene, splits the content by artboard and encodes images (PNG in Rust when they have alpha, JPEG otherwise). |
src/lib/importer.ts | Tries native reading first. Without native data, loads the .ai with pdf.js and interprets its operator list (save/restore, CTM, clips, transparency groups, soft masks, shadings, images, text) to build an editable scene tree. It then simplifies the tree (drops redundant clips, turns "clip + shading" into a gradient-filled shape, flattens empty groups). |
src/lib/types.ts | Scene model: layers › per-artboard sublayers › groups / paths / images / text. All geometry is in document space (pt, y down). |
src/lib/render.tsx | SVG rendering of the scene, shared by the canvas and the SVG/PNG export. |
src/lib/store.ts, ops.ts, actions.ts | State (zustand + immer, history that merges continuous changes), tree operations and editor commands. |
src/components/ | UI: canvas with tools and handles, toolbar, properties, layers and artboards panels, menus. |
src/lib/exportPdf.ts | Writes the PDF/.ai with pdf-lib: hand-written content streams, shadings, luminosity masks, transparency groups, embedded fonts (TJ with the original positions) and layers as optional content. |