openpencil/README.de.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

11 KiB

OpenPencil

OpenPencil

Das weltweit erste KI-native Open-Source-Vektordesign-Werkzeug.
Parallele Agententeams • Design-as-Code • Eingebauter MCP-Server • Multi-Modell-Intelligenz

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

Stars License CI Discord


OpenPencil — Klicken, um das Demo-Video anzusehen

Auf das Bild klicken, um das Demo-Video anzusehen


Warum OpenPencil

🎨 Prompt → Canvas

Beschreiben Sie jede UI in natürlicher Sprache. Beobachten Sie, wie sie in Echtzeit mit Streaming-Animation auf der unendlichen Canvas erscheint. Ändern Sie bestehende Designs, indem Sie Elemente auswählen und chatten.

🤖 Parallele Agententeams

Der Orchestrierer zerlegt komplexe Seiten in räumliche Teilaufgaben. Mehrere KI-Agenten arbeiten gleichzeitig an verschiedenen Bereichen — Hero, Features, Footer — alle parallel streamend.

🧠 Multi-Modell-Intelligenz

Passt sich automatisch an die Fähigkeiten jedes Modells an. Claude erhält vollständige Prompts mit Thinking; GPT-4o/Gemini deaktivieren Thinking; kleinere Modelle (MiniMax, Qwen, Llama) erhalten vereinfachte Prompts für zuverlässige Ausgabe.

🔌 MCP-Server

Ein-Klick-Installation in Claude Code, Codex, Gemini, OpenCode, Kiro oder Copilot CLIs. Designen Sie aus Ihrem Terminal — .op-Dateien über jeden MCP-kompatiblen Agenten lesen, erstellen und bearbeiten.

📦 Design-as-Code

.op-Dateien sind JSON — menschenlesbar, Git-freundlich, diff-fähig. Designvariablen generieren CSS Custom Properties. Code-Export nach React + Tailwind oder HTML + CSS.

🖥️ Läuft überall

Web-App + native Desktop-Anwendung auf macOS, Windows und Linux über Electron. Auto-Updates über GitHub Releases. .op-Dateizuordnung — Doppelklick zum Öffnen.

Schnellstart

# Abhängigkeiten installieren
bun install

# Entwicklungsserver auf http://localhost:3000 starten
bun --bun run dev

Oder als Desktop-App ausführen:

bun run electron:dev

Voraussetzungen: Bun >= 1.0 und Node.js >= 18

KI-natives Design

Vom Prompt zur UI

  • Text-zu-Design — eine Seite beschreiben und sie wird in Echtzeit mit Streaming-Animation auf der Canvas generiert
  • Orchestrierer — zerlegt komplexe Seiten in räumliche Teilaufgaben zur parallelen Generierung
  • Design-Modifikation — Elemente auswählen und Änderungen in natürlicher Sprache beschreiben
  • Bildeingabe — Screenshots oder Mockups als Referenz für referenzbasiertes Design anhängen

Multi-Agenten-Unterstützung

Agent Einrichtung
Claude Code Keine Konfiguration — verwendet Claude Agent SDK mit lokalem OAuth
Codex CLI In den Agenteneinstellungen verbinden (Cmd+,)
OpenCode In den Agenteneinstellungen verbinden (Cmd+,)
GitHub Copilot copilot login dann in den Agenteneinstellungen verbinden (Cmd+,)

Modell-Fähigkeitsprofile — passt Prompts, Thinking-Modus und Timeouts automatisch pro Modellstufe an. Modelle der Vollstufe (Claude) erhalten vollständige Prompts; Standardstufe (GPT-4o, Gemini, DeepSeek) deaktiviert Thinking; Basisstufe (MiniMax, Qwen, Llama, Mistral) erhält vereinfachte verschachtelte JSON-Prompts für maximale Zuverlässigkeit.

MCP-Server

  • Eingebauter MCP-Server — Ein-Klick-Installation in Claude Code / Codex / Gemini / OpenCode / Kiro / Copilot CLIs
  • Design-Automatisierung vom Terminal aus: .op-Dateien über jeden MCP-kompatiblen Agenten lesen, erstellen und bearbeiten
  • Mehrstufiger Design-Workflowdesign_skeletondesign_contentdesign_refine für hochwertigere mehrteilige Designs
  • Segmentierter Prompt-Abruf — laden Sie nur das benötigte Design-Wissen (Schema, Layout, Rollen, Icons, Planung usw.)
  • Mehrseitige Unterstützung — Seiten erstellen, umbenennen, neu ordnen und duplizieren über MCP-Tools

Codegenerierung

  • React + Tailwind CSS
  • HTML + CSS
  • CSS Variables aus Design-Tokens

Funktionen

Canvas und Zeichnen

  • Unendliche Canvas mit Pan, Zoom, intelligenten Ausrichtungshilfslinien und Einrasten
  • Rechteck, Ellipse, Linie, Polygon, Stift (Bezier), Frame, Text
  • Boolesche Operationen — Vereinigung, Subtraktion, Schnittmenge mit kontextbezogener Werkzeugleiste
  • Icon-Auswahl (Iconify) und Bildimport (PNG/JPEG/SVG/WebP/GIF)
  • Auto-Layout — vertikal/horizontal mit Gap, Padding, Justify, Align
  • Mehrseitige Dokumente mit Tab-Navigation

Designsystem

  • Designvariablen — Farb-, Zahl- und Text-Tokens mit $variable-Referenzen
  • Multi-Theme-Unterstützung — mehrere Achsen, jeweils mit Varianten (Hell/Dunkel, Kompakt/Komfortabel)
  • Komponentensystem — wiederverwendbare Komponenten mit Instanzen und Überschreibungen
  • CSS-Synchronisierung — automatisch generierte benutzerdefinierte Eigenschaften, var(--name) in der Code-Ausgabe

Figma-Import

  • .fig-Dateien importieren mit erhaltenem Layout, Füllungen, Konturen, Effekten, Text, Bildern und Vektoren

Desktop-App

  • Natives macOS, Windows und Linux über Electron
  • .op-Dateizuordnung — Doppelklick zum Öffnen, Einzelinstanzsperre
  • Automatische Aktualisierung über GitHub Releases
  • Natives Anwendungsmenü und Dateidialoge

Technologie-Stack

Frontend React 19 · TanStack Start · Tailwind CSS v4 · shadcn/ui
Canvas Fabric.js v7
Zustand Zustand v5
Server Nitro
Desktop Electron 35
KI Anthropic SDK · Claude Agent SDK · OpenCode SDK · Copilot SDK
Laufzeit Bun · Vite 7
Dateiformat .op — JSON-basiert, menschenlesbar, Git-freundlich

Projektstruktur

src/
  canvas/          Fabric.js-Engine — Zeichnen, Synchronisierung, Layout, Hilfslinien, Stiftwerkzeug
  components/      React-UI — Editor, Panels, gemeinsame Dialoge, Icons
  services/ai/     KI-Chat, Orchestrierer, Designgenerierung, Streaming
  services/figma/  Figma-.fig-Binär-Importpipeline
  services/codegen React+Tailwind- und HTML+CSS-Codegeneratoren
  stores/          Zustand — Canvas, Dokument, Seiten, Verlauf, KI, Einstellungen
  variables/       Design-Token-Auflösung und Referenzverwaltung
  mcp/             MCP-Server-Tools für externe CLI-Integration
  uikit/           Wiederverwendbares Komponenten-Kit-System
server/
  api/ai/          Nitro-API — Streaming-Chat, Generierung, Validierung
  utils/           Claude CLI, OpenCode, Codex, Copilot-Client-Wrapper
electron/
  main.ts          Fenster, Nitro-Fork, natives Menü, Auto-Updater
  preload.ts       IPC-Brücke

Tastaturkürzel

Taste Aktion Taste Aktion
V Auswählen Cmd+S Speichern
R Rechteck Cmd+Z Rückgängig
O Ellipse Cmd+Shift+Z Wiederholen
L Linie Cmd+C/X/V/D Kopieren/Ausschneiden/Einfügen/Duplizieren
T Text Cmd+G Gruppieren
F Frame Cmd+Shift+G Gruppierung aufheben
P Stiftwerkzeug Cmd+Shift+E Exportieren
H Hand (Pan) Cmd+Shift+C Code-Panel
Del Löschen Cmd+Shift+V Variablen-Panel
[ / ] Reihenfolge ändern Cmd+J KI-Chat
Pfeiltasten 1px verschieben Cmd+, Agenteneinstellungen
Cmd+Alt+U Boolesche Vereinigung Cmd+Alt+S Boolesche Subtraktion
Cmd+Alt+I Boolesche Schnittmenge

Skripte

bun --bun run dev          # Entwicklungsserver (Port 3000)
bun --bun run build        # Produktions-Build
bun --bun run test         # Tests ausführen (Vitest)
npx tsc --noEmit           # Typprüfung
bun run electron:dev       # Electron-Entwicklung
bun run electron:build     # Electron-Paketierung

Mitwirken

Beiträge sind willkommen! Siehe CLAUDE.md für Architekturdetails und Code-Stil.

  1. Forken und klonen
  2. Branch erstellen: git checkout -b feat/my-feature
  3. Prüfungen ausführen: npx tsc --noEmit && bun --bun run test
  4. Mit Conventional Commits committen: feat(canvas): add rotation snapping
  5. Pull Request gegen main öffnen

Roadmap

  • Designvariablen & Tokens mit CSS-Synchronisierung
  • Komponentensystem (Instanzen & Überschreibungen)
  • KI-Designgenerierung mit Orchestrierer
  • MCP-Server-Integration mit mehrstufigem Design-Workflow
  • Mehrseitige Unterstützung
  • Figma-.fig-Import
  • Boolesche Operationen (Vereinigung, Subtraktion, Schnittmenge)
  • Multi-Modell-Fähigkeitsprofile
  • Kollaboratives Bearbeiten
  • Plugin-System

Mitwirkende

Contributors

Community

Discord Unserem Discord beitreten — Fragen stellen, Designs teilen, Funktionen vorschlagen.

Star History

Star History Chart

Lizenz

MIT — Copyright (c) 2026 ZSeven-W