mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-05 17:58:55 +00:00
Wire up the new omni_gen mesh + splat endpoints in the frontend and add two new create pages that mirror the existing Create Image / Create Video flow. Backend was already shipped; this is frontend-only. API layer (libs/api, libs/omni-gen): - OmniGenApi: add mesh + splat request/response/model-info types and the six new methods (models/cost/generate for mesh and splat) - Add useOmniGenMeshModels / useOmniGenSplatModels session-cached model hooks Pages (apps/artcraft-webapp): - New /create-object (3D Object) and /create-world (3D World) page trios (page + zustand store + generate/poll api), cloned from create-image - Capability-gated controls per selected model: mesh output type, polygon type, geometry/texture quality, face count, PBR + texture toggles, multi-view (front/back/left/right) and mesh-file inputs; splat panorama + disable-recaption toggles and reference video - Add useMeshCostEstimate / useSplatCostEstimate credit hooks - Register routes in app.tsx and add "3D Object" / "3D World" sidebar entries Shared generation feed (libs/components/generation-list + webapp gallery): - Teach useGenerationJobs the object_generation / splat_generation inference categories, surfaced as the "dimensional" media class - Render 3D result cards from the media file's cover image / screenshot - useGalleryData: optional model-id filter so the object and world feeds only show their own generations - Widen InProgressJob / FailedJob / PendingCard / RecreateSlotContext media class to include "dimensional" Clicking a 3D card opens the existing Viewer3D lightbox (already handles .glb meshes and .spz splats). No backend changes.