Comfy-Org / Comfy-Org/ComfyUI_frontend

3D uploads show no preview thumbnail in Assets browser (server-side 3D thumbnail generation)

Open
#13,992 1 comment 1 reaction 0 assignees View on GitHub
area:3d
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.