Skip to content

Studio UI/UX — competitive dimensions (PH-UX)

Audience: studio_ui_ux_builder plan loop · not httpd.

Performance gates (PH-UX)

Gate Target Measure
Viewport FPS ≥ 60 sustained bench-studio-viewport-perf.sh / future native HUD
Panel switch < 100 ms Instrumented composable or mock timing
Studio cold load < 2 s to interactive shell load_ms in bench JSON
MD particles (display) 10k @ 60 fps; 100k @ 30 fps (tiered) md_lennard_jones + scene path
Memory (animate MD) Document peak MiB; no unbounded growth profile-animate-memory.sh

Memory budget (animate MD / Studio timeline)

Registry: benchmarks/competitive/studio-ui.toml[[memory]] id = animate_md_import.

Measure Source Current baseline (plan loop)
Import peak tracemalloc after import animate_md ~5 MiB (matplotlib stack)
Short-run RSS /usr/bin/time -v with --skip-export --max-frames 4 Linux CI when harness runs
Warn ceiling warn_peak_mib in registry 512 MiB (gate fails above)

Artifacts: data/studio-ui-ux-plan-loop/latest-memory-profile.json (gates + bench embed memory_mib.profile). Bench gate animate_md_import compares peak_observed_mib (RSS when measured, else import peak) to the warn ceiling.

Growth policy: animate_md.py streams trajectory frames from disk; full 3D GIF export can spike RAM at the matplotlib layer — document peaks honestly (UX-13) and cap preview frames in Studio (--max-frames). No unbounded in-memory retention of full trajectories in the harness path.

UX dimensions (score 0–3 each iteration)

ID Dimension SOTA refs
UX-01 Viewport clarity (grid, selection, depth cues) Godot, Blender
UX-02 Timeline / playback affordances DaVinci, Unreal Sequencer
UX-03 Inspector density vs readability Unity, Figma
UX-04 Command palette (discoverability, latency) Linear, VS Code
UX-05 Vertical profiles (chem/bio/game) switching Notion databases
UX-06 Agentic AI: task status & cancel Cursor, Copilot
UX-07 Empty states (no scene / no selection) shadcn patterns
UX-08 Error recovery (GPU fail, missing asset) Primer
UX-09 Keyboard-first workflows Blender, Linear
UX-10 Accessibility (contrast, focus) axe / WCAG AA
UX-11 Loading / skeleton states Material 3
UX-12 Copy & terminology consistency Diátaxis docs tone
UX-13 Performance honesty (show FPS / particle count) Game engines
UX-14 Marketing vs product truth No HTML mock passed as native

Competitors (design): Blender, Unreal Editor, Unity, Houdini (viewport); agentic: Cursor, Linear, GitHub Copilot Workspace.

Evidence: screenshots + short reel per iteration on GitHub (release studio-ui-ux-progress), not in git tree. Native SDL viewport frames (deploy/studio-demo/native/, scripts/studio-ui-ux-capture-native.sh, ux-harness world-studio-native) set native_pixels=true in latest-capture.json when Xvfb draws pixels; HTML mocks remain labeled marketing-only (UX-14). UX-09: keyboard ingest probe (studio_shell_input_probe.c, scripts/studio-shell-sdl-tick.sh, studio-shell-input-bridge.md) maps SDL/mock keys to InputState for studio_handle_studio_key each frame.

Bench registry: benchmarks/competitive/studio-ui.toml./scripts/bench-studio-viewport-perf.shbenchmarks/results/bench-studio-viewport-perf.json (regenerated; plan loop also writes data/studio-ui-ux-plan-loop/latest-bench.json).