openpencil/README.es.md
Kayshen Xu 4af8ef412b
V0.3.3 (#33)
* fix(ai): add icon name aliases and fix multi-path SVG concatenation

Add 55+ common icon name aliases (burger→hamburger, sushi→fish, etc.)
to both client icon-resolver and server icon API for robust AI-generated
icon resolution. Register Lucide's own aliases for broader coverage.

Fix SVG path concatenation bug where joining multiple <path> d-values
caused incorrect rendering — a standalone <path> treats initial lowercase
"m" as absolute, but after concatenation it becomes relative to the
previous sub-path endpoint. Now ensures each sub-path starts with
absolute "M".

Add tryAsyncIconFontResolution for icon_font nodes that miss local
lookup — fetches from server API, caches result, and triggers canvas
re-render.

* fix(canvas): preserve badge/overlay absolute positioning in auto-layout

Add isBadgeOverlayNode() detector for badge, indicator, notification-dot,
and overlay nodes. These nodes now retain their x/y coordinates instead
of being stripped by layout sanitization.

Update computeLayoutPositions to exclude badge nodes from the layout flow
— they keep absolute positioning and render on top (prepended for correct
z-order in reverse iteration).

* fix(ai): prevent duplicate canvas objects and fix emoji-to-icon pipeline

Streaming path: add ensureUniqueNodeIds before inserting nodes to prevent
ID collisions across multiple AI generations. Track newly inserted IDs
so subsequent streaming nodes don't collide either.

Canvas sync: deduplicate Fabric objects sharing the same penNodeId —
keep only the one tracked in objMap, remove stale duplicates.

Badge nodes: use shared isBadgeOverlayNode() for z-order insertion
and skip x/y stripping in layout parents.

Fix emoji-to-icon pipeline: re-run applyIconPathResolution after
applyNoEmojiIconHeuristic converts emoji text nodes to path nodes,
so the icon resolver can match by name (e.g. "Pizza Emoji Path" → pizza).

* fix(canvas): add async icon resolution fallback for icon_font nodes

When lookupIconByName fails locally, queue tryAsyncIconFontResolution
to fetch from server API. Cache result in ICON_PATH_MAP and trigger
canvas re-render via store update. Store iconFontName and iconStyle
on Fabric object for sync tracking.

* fix(ai): strengthen emoji ban in prompts and improve orchestrator defaults

Update all AI prompts to explicitly ban emoji characters with concrete
examples and redirect to icon_font nodes instead of the previously
incorrect "path nodes" guidance.

Add z-order rule to orchestrator prompt: overlay elements must come
before content they overlap.

Add padding support to OrchestratorPlan rootFrame type. Default mobile
root frame gap to 16 for consistent spacing.

* feat(electron): add publisher name to Windows build configuration

Updated the `electron-builder.yml` to include a publisher name for Windows builds, enhancing the identification of the application during installation. Additionally, revised the README files across multiple languages to reflect the new project description and features, emphasizing OpenPencil as the world's first AI-native open-source vector design tool with concurrent agent teams and design-as-code capabilities.

---------

Co-authored-by: Fini <fini.yang@gmail.com>
2026-03-11 21:18:49 +08:00

12 KiB

OpenPencil

OpenPencil

La primera herramienta de diseño vectorial de código abierto nativa de IA del mundo.
Equipos de Agentes Concurrentes • Diseño como Código • Servidor MCP Integrado • Inteligencia Multimodelo

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Français · Español · Deutsch · Português · Русский · हिन्दी · Türkçe · ไทย · Tiếng Việt · Bahasa Indonesia

Stars License CI Discord


OpenPencil — haz clic para ver la demostración

Haz clic en la imagen para ver el video de demostración


Por Qué OpenPencil

🎨 Prompt → Lienzo

Describe cualquier interfaz en lenguaje natural. Obsérvala aparecer en el lienzo infinito en tiempo real con animación de transmisión. Modifica diseños existentes seleccionando elementos y chateando.

🤖 Equipos de Agentes Concurrentes

El orquestador descompone páginas complejas en subtareas espaciales. Múltiples agentes de IA trabajan en diferentes secciones simultáneamente — hero, características, footer — todos transmitiendo en paralelo.

🧠 Inteligencia Multimodelo

Se adapta automáticamente a las capacidades de cada modelo. Claude recibe prompts completos con pensamiento; GPT-4o/Gemini desactivan el pensamiento; modelos más pequeños (MiniMax, Qwen, Llama) reciben prompts simplificados para una salida confiable.

🔌 Servidor MCP

Instalación con un clic en Claude Code, Codex, Gemini, OpenCode, Kiro o Copilot CLIs. Diseña desde tu terminal — lee, crea y modifica archivos .op a través de cualquier agente compatible con MCP.

📦 Diseño como Código

Los archivos .op son JSON — legibles por humanos, compatibles con Git, comparables. Las variables de diseño generan propiedades personalizadas CSS. Exportación de código a React + Tailwind o HTML + CSS.

🖥️ Funciona en Todas Partes

Aplicación web + escritorio nativo en macOS, Windows y Linux mediante Electron. Actualizaciones automáticas desde GitHub Releases. Asociación de archivos .op — doble clic para abrir.

Inicio Rápido

# Instalar dependencias
bun install

# Iniciar el servidor de desarrollo en http://localhost:3000
bun --bun run dev

O ejecutar como aplicación de escritorio:

bun run electron:dev

Requisitos previos: Bun >= 1.0 y Node.js >= 18

Diseño Nativo de IA

De Prompt a Interfaz

  • Texto a diseño — describe una página y se genera en el lienzo en tiempo real con animación de transmisión
  • Orquestador — descompone páginas complejas en subtareas espaciales para generación en paralelo
  • Modificación de diseño — selecciona elementos y describe los cambios en lenguaje natural
  • Entrada visual — adjunta capturas de pantalla o bocetos como referencia para el diseño

Soporte Multiagente

Agente Configuración
Claude Code Sin configuración — usa Claude Agent SDK con OAuth local
Codex CLI Conectar en Configuración de Agente (Cmd+,)
OpenCode Conectar en Configuración de Agente (Cmd+,)
GitHub Copilot copilot login y luego conectar en Configuración de Agente (Cmd+,)

Perfiles de Capacidad de Modelos — adapta automáticamente los prompts, el modo de pensamiento y los tiempos de espera según el nivel del modelo. Los modelos de nivel completo (Claude) reciben prompts completos; los de nivel estándar (GPT-4o, Gemini, DeepSeek) desactivan el pensamiento; los de nivel básico (MiniMax, Qwen, Llama, Mistral) reciben prompts simplificados de JSON anidado para máxima fiabilidad.

Servidor MCP

  • Servidor MCP integrado — instalación con un clic en Claude Code / Codex / Gemini / OpenCode / Kiro / Copilot CLIs
  • Automatización de diseño desde la terminal: leer, crear y modificar archivos .op a través de cualquier agente compatible con MCP
  • Flujo de diseño por capasdesign_skeletondesign_contentdesign_refine para diseños multisección de mayor fidelidad
  • Recuperación segmentada de prompts — carga solo el conocimiento de diseño que necesitas (schema, layout, roles, icons, planning, etc.)
  • Soporte multipágina — crear, renombrar, reordenar y duplicar páginas mediante herramientas MCP

Generación de Código

  • React + Tailwind CSS
  • HTML + CSS
  • CSS Variables a partir de tokens de diseño

Características

Lienzo y Dibujo

  • Lienzo infinito con panorámica, zoom, guías de alineación inteligentes y ajuste
  • Rectángulo, Elipse, Línea, Polígono, Pluma (Bezier), Frame, Texto
  • Operaciones booleanas — unión, resta, intersección con barra de herramientas contextual
  • Selector de iconos (Iconify) e importación de imágenes (PNG/JPEG/SVG/WebP/GIF)
  • Diseño automático — vertical/horizontal con gap, padding, justify, align
  • Documentos multipágina con navegación por pestañas

Sistema de Diseño

  • Variables de diseño — tokens de color, número y texto con referencias $variable
  • Soporte multitema — múltiples ejes, cada uno con variantes (Claro/Oscuro, Compacto/Cómodo)
  • Sistema de componentes — componentes reutilizables con instancias y sobreescrituras
  • Sincronización CSS — propiedades personalizadas autogeneradas, var(--name) en la salida de código

Importación de Figma

  • Importa archivos .fig conservando diseño, rellenos, trazos, efectos, texto, imágenes y vectores

Aplicación de Escritorio

  • Compatible de forma nativa con macOS, Windows y Linux mediante Electron
  • Asociación de archivos .op — doble clic para abrir, bloqueo de instancia única
  • Actualización automática desde GitHub Releases
  • Menú de aplicación nativo y diálogos de archivo

Stack Tecnológico

Frontend React 19 · TanStack Start · Tailwind CSS v4 · shadcn/ui
Lienzo Fabric.js v7
Estado Zustand v5
Servidor Nitro
Escritorio Electron 35
IA Anthropic SDK · Claude Agent SDK · OpenCode SDK · Copilot SDK
Runtime Bun · Vite 7
Formato de archivo .op — basado en JSON, legible por humanos, compatible con Git

Estructura del Proyecto

src/
  canvas/          Motor Fabric.js — dibujo, sincronización, diseño, guías, herramienta pluma
  components/      Interfaz React — editor, paneles, diálogos compartidos, iconos
  services/ai/     Chat de IA, orquestador, generación de diseño, transmisión
  services/figma/  Pipeline de importación binaria de Figma .fig
  services/codegen Generadores de código React+Tailwind y HTML+CSS
  stores/          Zustand — lienzo, documento, páginas, historial, IA, configuración
  variables/       Resolución de tokens de diseño y gestión de referencias
  mcp/             Herramientas del servidor MCP para integración con CLI externas
  uikit/           Sistema de kit de componentes reutilizables
server/
  api/ai/          API Nitro — chat en streaming, generación, validación
  utils/           Wrappers de cliente Claude CLI, OpenCode, Codex, Copilot
electron/
  main.ts          Ventana, fork Nitro, menú nativo, actualizador automático
  preload.ts       Puente IPC

Atajos de Teclado

Tecla Acción Tecla Acción
V Seleccionar Cmd+S Guardar
R Rectángulo Cmd+Z Deshacer
O Elipse Cmd+Shift+Z Rehacer
L Línea Cmd+C/X/V/D Copiar/Cortar/Pegar/Duplicar
T Texto Cmd+G Agrupar
F Frame Cmd+Shift+G Desagrupar
P Herramienta pluma Cmd+Shift+E Exportar
H Mano (panorámica) Cmd+Shift+C Panel de código
Del Eliminar Cmd+Shift+V Panel de variables
[ / ] Reordenar Cmd+J Chat de IA
Flechas Mover 1px Cmd+, Configuración de agente
Cmd+Alt+U Unión booleana Cmd+Alt+S Resta booleana
Cmd+Alt+I Intersección booleana

Scripts

bun --bun run dev          # Servidor de desarrollo (puerto 3000)
bun --bun run build        # Compilación de producción
bun --bun run test         # Ejecutar pruebas (Vitest)
npx tsc --noEmit           # Verificación de tipos
bun run electron:dev       # Desarrollo con Electron
bun run electron:build     # Empaquetado de Electron

Contribuir

¡Las contribuciones son bienvenidas! Consulta CLAUDE.md para detalles sobre la arquitectura y el estilo de código.

  1. Haz fork y clona el repositorio
  2. Crea una rama: git checkout -b feat/my-feature
  3. Ejecuta las verificaciones: npx tsc --noEmit && bun --bun run test
  4. Haz commit con Conventional Commits: feat(canvas): add rotation snapping
  5. Abre un PR contra main

Hoja de Ruta

  • Variables de diseño y tokens con sincronización CSS
  • Sistema de componentes (instancias y sobreescrituras)
  • Generación de diseño con IA y orquestador
  • Integración con servidor MCP con flujo de diseño por capas
  • Soporte multipágina
  • Importación de Figma .fig
  • Operaciones booleanas (unión, sustracción, intersección)
  • Perfiles de capacidad multimodelo
  • Edición colaborativa
  • Sistema de plugins

Colaboradores

Contributors

Star History

Star History Chart

Comunidad

Discord Únete a nuestro Discord — Haz preguntas, comparte diseños y sugiere funciones.