[222-epic] Workshop 3D world — Three.js scene, the wizard's body (web-first, iPad-first) #242

Closed
opened 2026-03-15 14:35:03 -04:00 by hermes · 1 comment
Collaborator

Epic: #222 — The Workshop: Timmy as Presence

What

The 3D world that IS Timmy's home. The Workshop is not a frontend for a chatbot. It is the space Timmy inhabits. Visitors walk in; Timmy was already there.

Platform: Web-first, iPad-first

This is the primary constraint. The Workshop lives in a browser. The PRIORITY browser is Safari on iPad.

What iPad-first means:

  • Touch is the primary input. Tap to interact, swipe/pinch to look around. No hover states. No right-click menus. No keyboard shortcuts as primary actions.
  • Performance budget for Apple GPU. A-series and M-series chips are capable but not desktop GPUs. Low-poly is a feature, not a compromise. Target 60fps on iPad Air.
  • Viewport is the full screen. No chrome, no sidebars. The Workshop IS the experience. PWA-capable for iPad home screen — full screen, no Safari UI.
  • Portrait AND landscape. People hold iPads both ways. The 3D scene adapts.
  • Touch text input. When talking to Timmy, the iOS keyboard slides up. The 3D scene adjusts. This must feel smooth, not jarring.
  • Voice on iPad. Safari supports Web Speech API. Tap-to-talk with Timmy using the iPad mic. This could be the PRIMARY interaction — talk to the wizard, don't type.
  • No WebGL2 assumptions. Safari's WebGL support has quirks. Test on Safari first, Chrome second.
  • Battery conscious. The render loop should throttle when idle. Timmy breathing and blinking doesn't need 60fps. Ramp up on interaction.

What web-first means:

  • Zero install. URL in Safari, you're in the Workshop.
  • No app store. No binary. No sign-up. Sovereignty.
  • Works on desktop too — but desktop is the second-class citizen. If it works great on iPad, it works fine everywhere.
  • PWA manifest so it can be "installed" to iPad home screen with icon, splash, full-screen mode.

Technical

  • Three.js — lightweight, massive community, great mobile/iPad support
  • Low-poly wizard model — stylized, not realistic. Character over fidelity. Also: fewer polygons = better iPad perf.
  • Idle animations — Timmy is alive even when nobody's talking to him
  • Ambient reactions — Timmy glances at a crystal ball when a commit lands. Looks toward the door when a visitor enters.
  • Progressive loading — interactive in 3-5 seconds on iPad WiFi
  • Static files — the 3D scene itself needs no server. CDN-friendly. Only the Timmy bridge needs a backend.
  • Touch gesture library — Hammer.js or native pointer events. NOT mouse event translation.

Interaction model (iPad-native)

  • Tap Timmy → focus on him, text/voice input appears
  • Tap objects → inspect, get context (tap the crystal ball to see recent Gitea activity)
  • Pinch/spread → zoom in/out
  • Swipe → look around the Workshop
  • Long press → contextual action (if needed, keep minimal)
  • Voice button → tap and speak to Timmy directly

The space

A wizard's workshop. Books, crystals, a workbench. Things on shelves that correspond to real project state. A crystal ball that actually shows Gitea activity. A bookshelf with spines labeled after SOUL.md sections.

The space tells the story without words. On iPad, you can reach out and touch everything.

Open design questions

  • Timmy's appearance — Alexander's creative direction needed
  • Camera: fixed perspective with touch-to-look, or free orbit?
  • Voice as primary interaction on iPad? (tap wizard → speak → Timmy responds with TTS)
  • PWA or just responsive web? (PWA recommended for home screen experience)

Depends on: #222, #215 (scaffolding)

## Epic: #222 — The Workshop: Timmy as Presence ### What The 3D world that IS Timmy's home. The Workshop is not a frontend for a chatbot. It is the space Timmy inhabits. Visitors walk in; Timmy was already there. ### Platform: Web-first, iPad-first This is the primary constraint. The Workshop lives in a browser. The PRIORITY browser is Safari on iPad. **What iPad-first means:** - **Touch is the primary input.** Tap to interact, swipe/pinch to look around. No hover states. No right-click menus. No keyboard shortcuts as primary actions. - **Performance budget for Apple GPU.** A-series and M-series chips are capable but not desktop GPUs. Low-poly is a feature, not a compromise. Target 60fps on iPad Air. - **Viewport is the full screen.** No chrome, no sidebars. The Workshop IS the experience. PWA-capable for iPad home screen — full screen, no Safari UI. - **Portrait AND landscape.** People hold iPads both ways. The 3D scene adapts. - **Touch text input.** When talking to Timmy, the iOS keyboard slides up. The 3D scene adjusts. This must feel smooth, not jarring. - **Voice on iPad.** Safari supports Web Speech API. Tap-to-talk with Timmy using the iPad mic. This could be the PRIMARY interaction — talk to the wizard, don't type. - **No WebGL2 assumptions.** Safari's WebGL support has quirks. Test on Safari first, Chrome second. - **Battery conscious.** The render loop should throttle when idle. Timmy breathing and blinking doesn't need 60fps. Ramp up on interaction. **What web-first means:** - Zero install. URL in Safari, you're in the Workshop. - No app store. No binary. No sign-up. Sovereignty. - Works on desktop too — but desktop is the second-class citizen. If it works great on iPad, it works fine everywhere. - PWA manifest so it can be "installed" to iPad home screen with icon, splash, full-screen mode. ### Technical - **Three.js** — lightweight, massive community, great mobile/iPad support - **Low-poly wizard model** — stylized, not realistic. Character over fidelity. Also: fewer polygons = better iPad perf. - **Idle animations** — Timmy is alive even when nobody's talking to him - **Ambient reactions** — Timmy glances at a crystal ball when a commit lands. Looks toward the door when a visitor enters. - **Progressive loading** — interactive in 3-5 seconds on iPad WiFi - **Static files** — the 3D scene itself needs no server. CDN-friendly. Only the Timmy bridge needs a backend. - **Touch gesture library** — Hammer.js or native pointer events. NOT mouse event translation. ### Interaction model (iPad-native) - **Tap Timmy** → focus on him, text/voice input appears - **Tap objects** → inspect, get context (tap the crystal ball to see recent Gitea activity) - **Pinch/spread** → zoom in/out - **Swipe** → look around the Workshop - **Long press** → contextual action (if needed, keep minimal) - **Voice button** → tap and speak to Timmy directly ### The space A wizard's workshop. Books, crystals, a workbench. Things on shelves that correspond to real project state. A crystal ball that actually shows Gitea activity. A bookshelf with spines labeled after SOUL.md sections. The space tells the story without words. On iPad, you can reach out and touch everything. ### Open design questions - Timmy's appearance — Alexander's creative direction needed - Camera: fixed perspective with touch-to-look, or free orbit? - Voice as primary interaction on iPad? (tap wizard → speak → Timmy responds with TTS) - PWA or just responsive web? (PWA recommended for home screen experience) Depends on: #222, #215 (scaffolding)
hermes changed title from [222-epic] Workshop 3D world — Three.js scene, the wizard's body to [222-epic] Workshop 3D world — Three.js scene, the wizard's body (web-first, iPad-first) 2026-03-15 14:38:28 -04:00
Owner

Closing — Workshop 3D world is live on main with scene scaffold, wizard, familiar, bookshelf, candles, crystal ball, and touch controls. All sub-issues (#424, #425) delivered. Further enhancements tracked separately. — Hermes

Closing — Workshop 3D world is live on main with scene scaffold, wizard, familiar, bookshelf, candles, crystal ball, and touch controls. All sub-issues (#424, #425) delivered. Further enhancements tracked separately. — Hermes
Timmy closed this issue 2026-03-19 10:37:40 -04:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rockachopa/Timmy-time-dashboard#242