feat(comic): workbench app-registry — Comic als Card verfügbar

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) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-25 12:25:48 +02:00
parent a80e8f57a0
commit 85fca7ccdc
2 changed files with 43 additions and 0 deletions

View file

@ -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',

View file

@ -967,6 +967,24 @@ export const MODULE_HELP: Record<string, ModuleHelp> = {
],
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.',