Comfy-Org / Comfy-Org/ComfyUI_frontend
3D uploads show no preview thumbnail in Assets browser (server-side 3D thumbnail generation)
- Dominant language
- TypeScript
- Stars
- 2k
- Forks
- 699
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 490
Description
## Context
Split out from the 1.47 RC QA finding "3D model uploaded via Load 3D (Advanced) has no preview and can't be viewed through Assets."
The **"can't be viewed"** half was a frontend classifier gap for Gaussian-splat formats, fixed in #13990. This issue tracks the remaining **"no preview thumbnail"** half, which is backend/product, not a frontend regression.
## Problem
A 3D model uploaded through Load 3D / Load 3D Advanced shows only the box **placeholder** (no thumbnail) in the Assets browser card, even when correctly classified as `'3D'`.
`Media3DTop.vue` only renders a thumbnail when the asset has a server-provided `preview_id`/`preview_url` (or `findServerPreviewUrl` returns one). For an uploaded **input** model:
- there is no server-generated 3D thumbnail; and
- the client-side capture-and-persist path (`useLoad3d` `modelReady` → `persistThumbnail`) only runs when the assets API is enabled (`isAssetPreviewSupported()`), and it targets assets discoverable via the `/assets` API — it does not cover OSS/local input listings.
Additionally, on OSS the `/internal/files/input` endpoint enumerates only top-level files (`os.scandir`, non-recursive), so a model uploaded into `input/3d/` is not listed in the Assets browser at all on local backends.
## Possible directions
- Server-side 3D thumbnail generation for uploaded models (preferred, works everywhere), or
- Client offscreen render + `persistThumbnail` extended to cover input uploads on cloud, and/or
- Recurse subfolders in the OSS `/internal/files/{type}` listing (core backend) so subfolder uploads appear.
## Refs
- FE fix for the viewer/classifier half: #13990
- Key files: `src/platform/assets/components/Media3DTop.vue`, `src/platform/assets/utils/assetPreviewUtil.ts`, `src/composables/useLoad3d.ts` (`modelReady`).
Contributor guide
Research direction
Start with src/platform/assets/components/Media3DTop.vue, src/platform/assets/utils/assetPreviewUtil.ts, and src/composables/useLoad3d.ts around modelReady and persistThumbnail; then inspect the OSS /internal/files/{type} listing behavior described in the issue. Confirm which preview-generation and input-listing path is in scope, and verify that uploaded 3D inputs appear in Assets with a server-provided thumbnail.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, frontend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100