openpencil/README.pt.md
Kayshen Xu 3fb029d9a7
V0.2.0 (#21)
* feat(ai): add agent identity system with visual indicators for concurrent generation

- Agent identity: assign unique colors and names to each sub-agent
- Canvas indicators: breathing glow border + name pill above streaming nodes
- Preview effect: outline appears 500ms before element materializes
- Screen grouping: subtasks with same `screen` field share one root frame,
  fixing multi-page apps being split into too many frames
- Screen-level parallelism: subtasks within same screen run sequentially
  (preserving section order), different screens run in parallel

* fix(canvas): make agent indicator visual effect much more dramatic

- Outer glow: 8px soft border for visible halo effect
- Inner border: 2.5px sharp crisp border at high alpha
- Preview fill: 10-15% alpha (was ~1% before, essentially invisible)
- Breathing: faster cycle (400ms), higher range [0.35, 0.95]
- Name pill: larger font (11px), bold 700, drop shadow
- Pill dedup: only draw one name pill per agent (not per node)
- Rounded rect helper for polished pill rendering

* fix(canvas): use globalThis for agent indicator state to prevent module isolation

Vite module splitting can create separate module instances for the same
file when imported from different chunks. This causes the indicator Map
written by the orchestrator (services/ai/) to be a different instance
than the one read by the canvas hook (canvas/). Using globalThis
guarantees a single shared instance across all chunks.

* feat(i18n): enhance internationalization support by integrating i18next for translation in various components. Added new dependencies: i18next, i18next-browser-languagedetector, and react-i18next. Updated UI elements in the editor, toolbar, and status bar to utilize translation keys for improved localization. Enhanced README with language options for better accessibility.

* feat(auto-update): implement auto-update functionality with settings management

- Added auto-update feature to check for updates at app startup and periodically while running.
- Introduced settings for enabling/disabling auto-update, stored in a JSON file.
- Integrated IPC handlers to manage auto-update settings from the renderer process.
- Created new API endpoints for managing MCP server status, including start/stop functionality.
- Enhanced the UI to support theme presets, allowing users to save and load variable presets.
- Updated internationalization support for new UI elements related to auto-update and presets.

* feat(ai): add element boundaries to orchestrator subtask planning

Orchestrator now outputs an "elements" field per subtask listing the
specific UI elements it owns. Sub-agent prompts display these boundaries
so each agent knows exactly what to generate and what belongs to other
sections, preventing content duplication across subtasks.

Also includes: sequential cascade reveal animation, agent indicator
recursive tagging, delayed indicator removal, single-agent identity
for sequential mode, model name truncation fix.

---------

Co-authored-by: Fini <fini.yang@gmail.com>
2026-03-05 21:14:50 +08:00

8.6 KiB

OpenPencil

OpenPencil

Ferramenta de design open-source nativa com IA. Design-as-Code.
Do prompt à UI no canvas. Orquestração multi-agente. Servidor MCP integrado. Geração de código.

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

Stars License CI Discord

Início Rápido · IA · Funcionalidades · Discord · Contribuindo


OpenPencil — click to watch demo

Clique na imagem para assistir ao vídeo de demonstração


Início Rápido

# Instalar dependências
bun install

# Iniciar servidor de desenvolvimento em http://localhost:3000
bun --bun run dev

Ou executar como aplicativo desktop:

bun run electron:dev

Pré-requisitos: Bun >= 1.0 e Node.js >= 18

Design Nativo com IA

O OpenPencil é construído com IA desde o início — não como um plugin, mas como um fluxo de trabalho central.

Do Prompt à UI

  • Texto para design — descreva uma página e ela será gerada no canvas em tempo real com animação de streaming
  • Orquestrador — decompõe páginas complexas em sub-tarefas espaciais para geração paralela
  • Modificação de design — selecione elementos e descreva as alterações em linguagem natural
  • Entrada de visão — anexe capturas de tela ou mockups para design baseado em referência

Suporte Multi-Agente

Agente Configuração
Claude Code Sem configuração — usa o Claude Agent SDK com OAuth local
Codex CLI Conectar nas Configurações do Agente (Cmd+,)
OpenCode Conectar nas Configurações do Agente (Cmd+,)

Servidor MCP

  • Servidor MCP integrado — instalação com um clique no Claude Code / Codex / Gemini / OpenCode / Kiro CLIs
  • Automação de design pelo terminal: leia, crie e modifique arquivos .op via qualquer agente compatível com MCP

Geração de Código

  • React + Tailwind CSS
  • HTML + CSS
  • CSS Variables a partir de tokens de design

Funcionalidades

Canvas e Desenho

  • Canvas infinito com pan, zoom, guias de alinhamento inteligentes e snapping
  • Retângulo, Elipse, Linha, Polígono, Caneta (Bezier), Frame, Texto
  • Seletor de ícones (Iconify) e importação de imagens (PNG/JPEG/SVG/WebP/GIF)
  • Auto-layout — vertical/horizontal com gap, padding, justify, align
  • Documentos com múltiplas páginas e navegação por abas

Sistema de Design

  • Variáveis de design — tokens de cor, número e string com referências $variable
  • Suporte a múltiplos temas — vários eixos, cada um com variantes (Claro/Escuro, Compacto/Confortável)
  • Sistema de componentes — componentes reutilizáveis com instâncias e substituições
  • Sincronização CSS — propriedades personalizadas geradas automaticamente, var(--name) na saída de código

Importação do Figma

  • Importe arquivos .fig preservando layout, preenchimentos, traços, efeitos, texto, imagens e vetores

Aplicativo Desktop

  • macOS, Windows e Linux nativos via Electron
  • Atualização automática a partir do GitHub Releases
  • Menu de aplicativo nativo e diálogos de arquivo

Stack Tecnológica

Frontend React 19 · TanStack Start · Tailwind CSS v4 · shadcn/ui
Canvas Fabric.js v7
Estado Zustand v5
Servidor Nitro
Desktop Electron 35
IA Anthropic SDK · Claude Agent SDK · OpenCode SDK
Runtime Bun · Vite 7
Formato de arquivo .op — baseado em JSON, legível por humanos, compatível com Git

Estrutura do Projeto

src/
  canvas/          Motor Fabric.js — desenho, sincronização, layout, guias, ferramenta caneta
  components/      UI React — editor, painéis, diálogos compartilhados, ícones
  services/ai/     Chat IA, orquestrador, geração de design, streaming
  services/figma/  Pipeline de importação binária do Figma .fig
  services/codegen Geradores de código React+Tailwind e HTML+CSS
  stores/          Zustand — canvas, documento, páginas, histórico, IA, configurações
  variables/       Resolução de tokens de design e gerenciamento de referências
  mcp/             Ferramentas do servidor MCP para integração com CLI externo
  uikit/           Sistema de kit de componentes reutilizáveis
server/
  api/ai/          API Nitro — chat em streaming, geração, validação
  utils/           Wrappers de cliente Claude CLI, OpenCode, Codex
electron/
  main.ts          Janela, fork do Nitro, menu nativo, atualizador automático
  preload.ts       Ponte IPC

Atalhos de Teclado

Tecla Ação Tecla Ação
V Selecionar Cmd+S Salvar
R Retângulo Cmd+Z Desfazer
O Elipse Cmd+Shift+Z Refazer
L Linha Cmd+C/X/V/D Copiar/Recortar/Colar/Duplicar
T Texto Cmd+G Agrupar
F Frame Cmd+Shift+G Desagrupar
P Ferramenta caneta Cmd+Shift+E Exportar
H Mão (pan) Cmd+Shift+C Painel de código
Del Excluir Cmd+Shift+V Painel de variáveis
[ / ] Reordenar Cmd+J Chat IA
Setas Mover 1px Cmd+, Configurações do agente

Scripts

bun --bun run dev          # Servidor de desenvolvimento (porta 3000)
bun --bun run build        # Build de produção
bun --bun run test         # Executar testes (Vitest)
npx tsc --noEmit           # Verificação de tipos
bun run electron:dev       # Desenvolvimento com Electron
bun run electron:build     # Empacotamento do Electron

Contribuindo

Contribuições são bem-vindas! Consulte o CLAUDE.md para detalhes de arquitetura e estilo de código.

  1. Faça fork e clone
  2. Crie uma branch: git checkout -b feat/my-feature
  3. Execute as verificações: npx tsc --noEmit && bun --bun run test
  4. Faça commit com Conventional Commits: feat(canvas): add rotation snapping
  5. Abra um PR contra main

Roadmap

  • Variáveis de design e tokens com sincronização CSS
  • Sistema de componentes (instâncias e substituições)
  • Geração de design com IA e orquestrador
  • Integração com servidor MCP
  • Suporte a múltiplas páginas
  • Importação do Figma .fig
  • Operações booleanas (união, subtração, interseção)
  • Edição colaborativa
  • Sistema de plugins

Contribuidores

Contributors

Comunidade

Discord Entre no nosso Discord — Faça perguntas, compartilhe designs, sugira funcionalidades.

Licença

MIT — Copyright (c) 2026 ZSeven-W