storytellurx/docs/design/persona-worlds.md
Elias Rhouzlane c122cc7cf7 fix: axd
2026-09-08 21:05:57 +02:00

4.5 KiB

Persona world materials

The source of truth is src/content/persona-assets.json. Every persona imports its public path from this mapping. Each entry records its stable name, public URL, repository output path, presentation owner, intended uses, prompt and treatment.

This implementation pass treats the mapping as an inventory and does not run image generation. The inventory command does not generate, replace, inspect, or decode image files. A mapped recipe only describes an intended decorative asset; it does not assert that an asset exists.

Audit the mapping and filesystem presence without starting generation or loading generator defaults:

node scripts/image-generation/list-world-assets.ts

Use --json for tooling. The report distinguishes planned, present, and missing entries, and shows each file name, public path, repository path, presentation owner, and intended placements. It reads the manifest and filesystem metadata only; it does not import image-generation modules, load presets, open image bytes, or start a generation process.

The name, publicPath, and outputPath are stable mapping identifiers. If a future task changes one, update the corresponding public and repository paths in the same manifest entry. The UI consumes the mapped public path automatically.

These interface assets describe non-graphic environments in their own prompts. The images decorate surfaces only. Informative scene images and metric SVG artwork are separate assets and are not replaced by this command.

Presentation ownership

Persona Material Ornament / button treatment
Samantha69 Pink pearl and rose glass Sparkles, soft capsule
Nelly Teal lagoon and liquid caustics Waves, asymmetric rounded form
Hisoka Electric blue brushed chrome Directional mark, diagonal bevel
Xixi Lavender fractured crystal Facets, diagonal corners
Cybelle Plum velvet and gilded confetti Golden starbursts, double frame
Galatée Sage marble and clay Laurel, inset stone frame
Polaire Orbital laboratory Crosshairs, octagonal panel
Gateway Iridescent threshold Crosshairs, neutral panel
Pause Midnight blue sanctuary Ripples, rounded refuge

Materials are mandatory in PersonaUI; no silent fallback for an unknown persona. Frames, foreground contrast, Arizona axes, blend/opacity, ornaments and pause headings live in src/personas/<id>/material.stylex.ts. Shared components own navigation, submission and stopping. Textures are decorative, ignore pointer events, and have empty alternative text. Button clipping is confined to the background; the content and keyboard outline remain unclipped. Native links retain navigation semantics. Entry/hover movement settles and observes reduced-motion preferences. No continuous WebGL loop is added to a text-reading surface.

Scope and remaining tracker work

This implements the shared material foundation, selection cards, model setup, suggestion cards, send and Stop controls, persona-owned history cards and export/delete controls, portal theme inheritance, explicit pause/resume and aborting active text, repair and image streams. Exiting returns to selection; it does not implement the archived canonical narrative endings. Provider cancellation is best-effort once remote work has begun; late local image/repair results are ignored.

The full six-step consent flow, server consent enforcement, reporting and export from the pause flow, canonical endings, Jacob activation, new narrative progression and the entire launch QA matrix remain separate open tracker requirements. Existing seven selectable worlds and two system identities are preserved. No tracker completion boxes are changed by this implementation.

History usability

Saved conversations use the corresponding persona material. Titles wrap without truncation; the resume link remains separate from export and delete buttons. Controls are at least 44px tall, wrap on narrow screens, and preserve their accessible names and dimensions during loading. The storage preference remains explicit and off by default. Existing transcript export and deletion behavior is unchanged. public-history.spec.ts covers native exports, deletion, storage failures, and all seven selectable persona surfaces at 320px.