Summary
The README notes the 3D Rubik's Cube model is based on Sean Bradley's original work. Sean Bradley's Three.js examples historically use OrbitControls from three/examples/jsm/controls/OrbitControls. However, Three.js r128 (listed in the tech stack used by this project) has a different import path structure than later versions, and THREE.OrbitControls is not available as a top-level export. If this is not handled correctly, mouse rotation of the 3D cube silently fails on some environments.
Problem
OrbitControls must be imported from three/examples/jsm/controls/OrbitControls in r128.
If the import is incorrect, the 3D cube cannot be rotated by the user — a core interactive feature.
No test coverage exists to catch this regression.
Proposed Solution
I will audit the 3D cube component's import of OrbitControls, verify it uses the correct path for the installed Three.js version, and add a smoke test that mounts the 3D component and asserts the canvas element is rendered without errors.
Labels: bug, 3d, GSSoC 2026
Summary
The README notes the 3D Rubik's Cube model is based on Sean Bradley's original work. Sean Bradley's Three.js examples historically use OrbitControls from three/examples/jsm/controls/OrbitControls. However, Three.js r128 (listed in the tech stack used by this project) has a different import path structure than later versions, and THREE.OrbitControls is not available as a top-level export. If this is not handled correctly, mouse rotation of the 3D cube silently fails on some environments.
Problem
OrbitControls must be imported from three/examples/jsm/controls/OrbitControls in r128.
If the import is incorrect, the 3D cube cannot be rotated by the user — a core interactive feature.
No test coverage exists to catch this regression.
Proposed Solution
I will audit the 3D cube component's import of OrbitControls, verify it uses the correct path for the installed Three.js version, and add a smoke test that mounts the 3D component and asserts the canvas element is rendered without errors.
Labels: bug, 3d, GSSoC 2026