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

72 lines
4.5 KiB
Markdown

# Persona world materials
The source of truth is [`src/content/persona-assets.json`](../../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:
```sh
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.