2026-07-06-0necanvas-meta-tool-design.md

docs/superpowers/specs/2026-07-06-0necanvas-meta-tool-design.md

0necanvas — das eine Tool: alle 0nefinity-Fähigkeiten auf einer Leinwand


1. Nordstern

Statt ~40 verstreuter Einzel-Tools ein Tool: eine Leinwand, auf der die Fähigkeiten aller Unter-Tools als frei kombinierbare Bausteine existieren. Tims Formulierung: „Koordinatensystem, darüber spawnen, den Raum verzerren, Symbole/Geometrie bewegbar — alle Sachen, die auf den einzelnen Sachen gehen, auf alles anwendbar, auf einer einzigen Oberfläche."

Die 40 Alt-Tools werden nicht angefasst — sie bleiben als eigenständige Seiten und dienen als Konzept-Quelle. 0necanvas ist rein additiv.

2. Das Modell: Stapel aus Dingen, Erzeugern, Kräften

Von Tim bestätigt („trifft es ziemlich gut"):

Tims Vereinigung (2026-07-06, nach Build-Start): Dinge und Erzeuger sind wesensgleich — ein Ding ist ein Erzeugnis, das schon da ist (0 ≡ 1 ≡ ∞: leer ≡ ein Ding ≡ Strom). Weil Dinge reine Geometrie-Emitter sind, ist jedes Ding automatisch ein Stempel: Der Spawner bekommt (direkt nach V1-Landung, V1.1) einen Parameter „Was wird erzeugt" — Auswahl über alle registrierten Ding-Typen — und emittiert pro Partikel dessen Geometrie (verschoben, skaliert, altersverblassend). Damit spawnen Koordinatensysteme wie Sand, Herzen spawnen Herzen. Die drei Kategorien bleiben als Bibliotheks-Sichten: Dinge = was sein kann, Erzeuger = wie viele/wann, Kräfte = wie der Raum sie behandelt.

Ein Werk = geordneter Stapel von Baustein-Instanzen + Kamera. Serialisierbar als JSON → URL (?s=), damit jeder Fund wiederauffindbar/teilbar ist.

3. UI (per Klick-Dummy validiert: /meta-mockup)

Photoshop-Prinzip — Selektion statt Sortierung, man sieht nie alle Regler:

Canvas-Interaktion (Tims Entscheidung — Hybrid):

Look: wie der abgenommene Mockup — viel Schwarz, weiß/graue Akzente, eine ruhige Akzentfarbe (Perlblau #a8b8e8), klare Kanten, Verdana-Stack, keine Emojis, UI-Sprache Deutsch. Strikt same-origin (CSP default-src 'self').

4. Architektur-Kern: Geometrie-Pipeline mit Domain-Transformationen

Die zentrale Erkenntnis: alle V1-Kräfte sind Raum-Abbildungen.

Render: ein <canvas>, Canvas2D, eigene rAF-Loop, Kamera (Pan/Zoom, DPR-aware). Kein WebGL in V1 (VPS-Software-Rendering, Einfachheit); die Pipeline ist so geschnitten, dass ein WebGL-Backend später austauschbar wäre.

5. V1-Umfang (Tims Auswahl)

Dinge: Koordinatengitter · Kurve (Kreis↔Herz-Morph, Wellen-Freq/Amp, Größe, Linienstärke, Glühen, Füllung, Pulsieren) · Symbol/Text (Zeichen, Größe, Position, Rotation). Erzeuger: Spawner (Rate, Lebensdauer, Größe, Symbolset, Drift, Spawn-Bereich). Kräfte: Raum verzerren (Zentrum, Radius, Stärke, Art: Twist/Welle/Sog) · Fraktal-Wiederholung (Anzahl, Skalierung, Rotation/Schritt, Deckkraft-Abfall, Zentrum) · Kaleidoskop (Segmente, Spiegeln an/aus, Winkel-Offset).

Default-Szene beim ersten Laden (ohne ?s=): Gitter + Herz-Kurve + Symbol ∞ + Spawner + dezente Verzerrung — der Mockup-Look, aber echt.

Phase 2 (nicht V1): Game-of-Life/Wachstum/Fourier als Erzeuger, Moiré, Physik (sprinky), Preset-Galerie, Video-Export, OneTool-Vertrag fürs KI-Bedienen (zurückgestelltes Schwester-Projekt), Migration von Alt-Tool-Looks als Presets.

6. Nicht-Ziele (YAGNI)

7. Dateien (alle NEU, nichts Bestehendes wird geändert)

0necanvas.html                     Seite: Layout, Panels-DOM, Boot
tools/0necanvas/0necanvas.css      Styles (Mockup-Ästhetik)
tools/0necanvas/engine.js          window.OneCanvas: Registry, Szene, Pipeline
tools/0necanvas/blocks-dinge.js    Gitter, Kurve, Symbol
tools/0necanvas/blocks-erzeuger.js Spawner
tools/0necanvas/blocks-kraefte.js  Verzerren, Fraktal, Kaleidoskop
tools/0necanvas/ui.js              Stapel, Bibliothek, Eigenschaften, Gesten, Werkzeuge
tools/0necanvas/state.js           Szene ↔ JSON ↔ URL (?s=, base64url, debounced)

Live-URL: https://dev.0nefinity.love/0necanvas (Clean-URL via .htaccess-Muster, Datei schreiben = sofort live).

8. Acceptance Criteria (Playwright-prüfbar gegen die Live-Dev-URL)