Skip to content

41-character: Customize character studio, fold-proof framing, Surprise me + Custom (G8 G9 G10) - #355

Open
AlexZ005 wants to merge 2 commits into
feat/41from
feat/41-character
Open

AlexZ005 wants to merge 2 commits into
feat/41from
feat/41-character

Conversation

@AlexZ005

Copy link
Copy Markdown
Collaborator

Roadmap 41 rows G8, G9, G10 — Customize character (lane 41-character).

What

  • G10 isolated studio: the panel shows your character in a plain studio (theme-coloured backdrop, floor disc, key/fill/rim light). The camera sees only render layer 28, which only the studio and the preview avatar join. Nothing in the scene is written (visible, layers), nothing is sent, and scene lights and selection outlines stand down with it. Show in scene previews the character in the world instead and is remembered (characterStudio:inScene). Leaving restores the camera mask, projection and pose exactly.
  • G8 framing: the preview's measured box (head group + rigged body; the billboard label counted by its anchor) is fitted into the area the drawer leaves free. A projection view offset centres it there, so orbit turns the character in place. Re-framed by a ResizeObserver on the canvas and the drawer (fold/unfold, rotation, window, drawer grip) and when the body changes (model load, a new look).
  • G9: presets show their defaults; any look edit adds and selects Custom (kept; re-picking a preset resets, Custom restores). Surprise me deals a new random character every press (body, head, hat, colours), never the previous one.

New: $lib/avatars/characterLooks.js, characterFraming.js, characterStudio.js, components/play/CharacterStudio.svelte.

Proof

  • e2e character-studio: 68/0 on this branch, 33 red on feat/40-int (counterfactual). It covers folded 390x896 -> unfolded 770x850 -> folded with real CDP touch at DPR 2.9, and desktop 1440x900 with a wider drawer and a 1000x700 window, in dark and light.
  • Regression: avatar-customise 55/0 (5.9 updated to accept a view-offset re-frame), phone-sheets 104/0, avatars-rigged 19/0, avatar-feet 12/0.
  • vitest characterLooks 14/14; svelte-check 300/40 = base; check:tokens / check:storage clean.
  • Before/after shots: ~/.code/lanes-30/after-41/41-character/shots/.

Touch points for 41-int

  • Outline.svelte: one import + || $studioIsolating in the playing stand-down.
  • Player.svelte: mounts <CharacterStudio />.
  • PingMarkers.svelte: name="ping-marker" on ping groups.
  • debugHooks.js: one row.

OWED on device: the real Find N6 fold transition and orbit feel.

🤖 Generated with Claude Code

AlexZ005 and others added 2 commits October 11, 2026 03:21
…surprise me + custom (G8 G9 G10)

- G10 isolated studio: the camera sees only render layer 28 (backdrop in the theme's colours, a
  floor disc, a key/fill/rim light and the preview avatar); the scene is not written (no visible,
  no layers, nothing sent), its lights and outlines stand down with it; "Show in scene" previews
  the character in the scene instead and is remembered (characterStudio:inScene); leaving puts
  the camera mask, projection and pose back exactly
- G8 framing: the body's measured box (head group + rigged body, label by its anchor) is fitted
  into the part of the viewport the drawer leaves free, centred with a projection view offset so
  orbiting turns the character in place; re-framed on every layout change (ResizeObserver on the
  canvas and the drawer: fold/unfold, rotation, window and drawer resize) and when the body
  changes (model load, a new look)
- G9 presets show their defaults; any look edit adds + selects Custom (kept; re-picking a preset
  resets, Custom brings the edits back); Surprise me deals a new random character every press
  (body, head, hat, colours), never the previous one
- characterLooks / characterFraming leaves + vitest characterLooks (14); e2e character-studio
  (folded/unfolded phone with real touch + desktop, dark + light, 68 checks)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- the G8 framing centres the body in the free part with a projection view offset, so a wider
  drawer on a height-limited desktop re-frames by the offset (170 -> 230) and keeps the pose;
  5.9 accepts either (the whole-body check is character-studio G8.6)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant