Collapse the 4-node PlyPreview surface to one node:
- PreviewGaussians: takes ply_path (STRING, forceInput) plus camera-
intrinsics widgets (fov_degrees, image_width, image_height) directly
on the node. NODE_CLASS_MAPPINGS = {"PreviewGaussians": ...}.
- Drop load_gaussian_ply.py, load_gaussian_ply_path.py,
process_gaussian_ply.py and the /plypreview/files refresh route.
- common.py stays — get_default_intrinsics + get_default_extrinsics
are reused.
- Frontend JS unchanged except the preview block targets
"PreviewGaussians". The LoadPLY-dropdown refresh block is left in
place as harmless dead code in case the loader node comes back.
- requirements.txt cleared (no Python deps; PLY parsing is in the
browser via gsplat.js).
- README slimmed to a few lines.
- Removed Figure1/2 + image/ + README.en.md + README.zh-CN.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>