From 85fca7ccdc35a41853451a0e6fdf4cbe643dd6a9 Mon Sep 17 00:00:00 2001 From: Till JS Date: Sat, 25 Apr 2026 12:25:48 +0200 Subject: [PATCH] =?UTF-8?q?feat(comic):=20workbench=20app-registry=20?= =?UTF-8?q?=E2=80=94=20Comic=20als=20Card=20verf=C3=BCgbar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Comic war bisher nur als Standalone-Route /comic, /comic/new, /comic/[id] erreichbar. Damit konnte man die App nicht via AppPagePicker zur Workbench-Szene hinzufügen, das Comic-Autor- Persona-Template (das `comic` in scene.openApps führt) hatte keinen funktionierenden Card-Loader, und Cross-Module-Drops auf das Comic-Modul gingen ins Leere. Registrierung in app-registry/apps.ts: - id: 'comic', name: 'Comic', color: '#f97316' (Orange-Rot Gradient analog mana-apps.ts) - icon: FilmStrip — sequentielle Panels = Filmstreifen, passt zur Comic-Strip-Metapher und unterscheidet sich von Library (Stack) und Picture (Image) - views.list: dynamic import von $lib/modules/comic/ListView.svelte (das Modul-Root mit Story-Grid + "+ Neue Story"-CTA) - contextMenuActions: "Neue Story" → /comic/new (gleiche Pattern wie website's "Neue Website" — Hard-Navigation, weil der Create- Flow eine eigene Route ist) - Detail-View nicht im Workbench-Slot wired — wie library/writing/ wardrobe nutzt comic SvelteKit-Routes für Story-Detail, der Workbench-Card hostet nur die Liste Help-Content-Eintrag (help-content.ts) für das ?-Icon im Card- Header: Beschreibung der drei Generate-Modi, fünf Stil-Presets, Modell-Auswahl (gpt-image-2 / Nano Banana), Cross-Modul- Storyboard, MCP-Tools, Tipps zu Face-Ref + englischer Sprache + Style-Fix-after-Create + 8-Panel-Konsistenz-Limit. Comic-spezifische Files type-checken sauber. Die 240 Workspace- weiten Errors sind pre-existing (laufender useLiveQueryWithDefault → useScopedLiveQuery Refactor). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../apps/web/src/lib/app-registry/apps.ts | 25 +++++++++++++++++++ .../web/src/lib/app-registry/help-content.ts | 18 +++++++++++++ 2 files changed, 43 insertions(+) diff --git a/apps/mana/apps/web/src/lib/app-registry/apps.ts b/apps/mana/apps/web/src/lib/app-registry/apps.ts index 6caf33f68..35455147e 100644 --- a/apps/mana/apps/web/src/lib/app-registry/apps.ts +++ b/apps/mana/apps/web/src/lib/app-registry/apps.ts @@ -81,6 +81,7 @@ import { Globe, CoatHanger, NotePencil, + FilmStrip, } from '@mana/shared-icons'; // ── Apps with entity capabilities ─────────────────────────── @@ -1355,6 +1356,30 @@ registerApp({ ], }); +registerApp({ + id: 'comic', + name: 'Comic', + color: '#f97316', + icon: FilmStrip, + views: { + // /comic/new (StoryForm) and /comic/[id] (DetailView) live as + // SvelteKit routes; the workbench card hosts the ListView root. + // Quick-action "Neue Story" navigates to /comic/new directly — + // the create flow has its own page, no inline modal in the card. + list: { load: () => import('$lib/modules/comic/ListView.svelte') }, + }, + contextMenuActions: [ + { + id: 'new-story', + label: 'Neue Story', + icon: Plus, + action: () => { + window.location.href = '/comic/new'; + }, + }, + ], +}); + registerApp({ id: 'spaces', name: 'Spaces', diff --git a/apps/mana/apps/web/src/lib/app-registry/help-content.ts b/apps/mana/apps/web/src/lib/app-registry/help-content.ts index 7ed49beb0..82693ff8d 100644 --- a/apps/mana/apps/web/src/lib/app-registry/help-content.ts +++ b/apps/mana/apps/web/src/lib/app-registry/help-content.ts @@ -967,6 +967,24 @@ export const MODULE_HELP: Record = { ], tips: ['System-Auto folgt deinem OS-Dark-Mode automatisch zur richtigen Uhrzeit'], }, + comic: { + description: + 'Aus Text wird ein Comic — Tagebuch-Eintrag, Notiz oder Library-Review als Vorlage, gpt-image-2 oder Nano Banana rendert Panels in fünf Stilen (Comic, Manga, Cartoon, Graphic Novel, Webtoon). Du selbst bist der Protagonist — Face-Ref aus deinem Profil-Modul wird automatisch genutzt.', + features: [ + 'Drei Generate-Modi: Einzel-Panel, Batch (2-4 parallel), KI-Storyboard aus existierendem Text', + 'Fünf Stil-Presets pro Story fix gewählt — alle Panels nutzen denselben Prefix für Konsistenz', + 'Sprechblasen + Captions werden direkt ins Bild gerendert (kein SVG-Overlay)', + 'Modell wählbar pro Klick: OpenAI gpt-image-2, Nano Banana Pro, Nano Banana 2', + 'Cross-Modul-Storyboard: Claude liest Journal/Notes/Library und schlägt 4-6 Panels vor', + 'MCP-Tools: listStories / createStory / generatePanel / reorderPanels für Agents', + ], + tips: [ + 'Ohne Face-Ref im aktiven Space kein Comic — Banner führt direkt zum Upload.', + 'Englische Captions/Dialoge rendern stabiler als deutsche; kurze Sätze funktionieren am besten.', + 'Style-Wechsel ist nicht möglich nach Story-Create — dafür einfach neue Story anlegen.', + 'Ab ~8 Panels pro Story wird Character-Konsistenz spürbar schwerer (gpt-image-2-Limit).', + ], + }, wardrobe: { description: 'Dein digitaler Kleiderschrank — fotografiere Kleidungsstücke und Accessoires, komponiere Outfits, und probiere sie mit KI an dir selbst an. Pro Space ein eigener Schrank: was im Family-Space liegt, taucht im Brand-Space nicht auf.',