Spaces:
Running on Zero
Running on Zero
Commit History
26 days ago
-
Ground-slab strip also removes thick hollow or solid box slabs Running
Bobby +1: Claude Opus 5.5The webapp always generates at seed 0, and there the shadowed studio motorcycle PNGs (fx350, husqvarna) produce a ground box, not a 1-voxel plate: on fx350 the raw SS layers are 10 = 2304 (bottom face), 11-13 = 196-306 (walls), 14 = 2281 (top face), with the bike from 15. The plate rule found the bottom face, but took contact support from layer 11, the box's own wall ring; fill_holes turned it into the whole footprint, so nothing was removed. Before the plate rule, each candidate bottom layer now looks for a box: every layer up to MAX_BOX_LAYERS above it must span the bottom face's filled footprint, and the top face must be solid (>= SPAN_FRACTION of the bottom), a spike over the layer above, inside the lower LOWER_FRACTION of the object, and carry little (<= MAX_BOX_SUPPORT of the footprint). Contact support then comes from the layer above the top face, and the contact pad keeps only the top face. Car underbodies are rejected by the height ceiling and the support share. Dev, paired o…401a762
27 days ago
-
Strip drop-shadow ground slab from the sparse structure for shadowed RGBA inputs
Bobby +1: Claude Opus 5.5Studio PNGs with a soft cast shadow (carimagesapi) made TRELLIS build a one-voxel ground plate, sometimes with phantom wheels standing on it. When the input alpha carries a cast shadow, the SS occupancy is checked for a thin layer-count spike near the bottom; voxels in it outside the filled tyre-contact footprint are dropped before SLAT, plus small components that only touched the plate. Paired seeds on dev: motorcycle slab 8/16 -> 0/16 with 0 duplicates; car front34 singles slab 12/12 -> 1/12 (a fragmentary plate below the spike threshold). Shadow-free inputs and the 6 multi-view runs are untouched. Positional APIs unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>ce565eb -
Bake GLB textures from 100 views (was 30)
Bobbye5f2a2b
-
Serve SEO head server-side, keep it out of embeds, skip theme redirect for crawlers
SkyeBrowse Developer +1: Claude Opus 5.5Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QPgCn7Hj1N72XftR46b9Zafec4e98 -
Turn Generate 3D Model into a Download 3D Model button once the GLB is ready
Bobby +1: Claude Opus 5.5After a successful export the Generate button hides and a DownloadButton holding the materialized GLB takes its place; a failed export keeps Generate retryable, and every new generation restores it. Also settle the Pro replay test on the background pre-bake instead of racing it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016CzSDhiXWoUsZi79gdQq7i0ce4985 -
Pre-bake the GLB under the Pro allowance for embed runs
Bobby +1: Claude Opus 5.5Embedded visitors are quota-denied, so their iframe pre-bake always failed and the GLB click went through a second webapp fallback. The Pro preview run now starts the bake in a background thread that keeps the request's Pro token, so the GLB is ready (or in flight) when the visitor clicks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016CzSDhiXWoUsZi79gdQq7ibaf02dc -
Show the progress bar in the app.skyebrowse.com embed
Bobby +1: Claude Opus 5.5Embedded visitors are anonymous to ZeroGPU, so their run is quota-denied and the webapp backend executes it through run_pro_fallback. That event's progress never reached the iframe, which stayed on "Spinning up GPU cluster…". The Pro run now records its event id, and a parallel step in the iframe mirrors that event's progress into the preview and GLB bars. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016CzSDhiXWoUsZi79gdQq7icf8e3da -
Start the preview bar the moment the GPU worker begins
Bobby +1: Claude Opus 5.5The first preview progress event fired after background removal, so "Spinning up GPU cluster…" lingered into GPU time. Emit "Preparing image" first thing inside the GPU function. Also point two stale cache tests at 2048, since 1024 is now the default export size. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016CzSDhiXWoUsZi79gdQq7ie6290a7 -
Ship core switches 1-4 and speculative GLB pre-bake
Bobby +1: Claude Opus 5.5- BAKE_SYNC_FREE, SLAT_FAST_ATTENTION, FAST_PREVIEW_RENDER, TEXTURE_OPT_FUSED_ADAM on; SS_FAST_ATTENTION and SS_UPSTREAM_SCHEDULE stay off so sparse-structure sampling matches prod - A hidden private .then after each generation flow bakes the GLB at the selected size in the shared gpu_task (visitor's request, so ZeroGPU bills the visitor); PREBAKE_GLB turns it off - bake_flight.BakeFlights keeps one bake per generation: a click joins an in-flight pre-bake, waits for it before baking a different size, and a new generation discards stale entries - GPU_CALL logs prebake=true; LABS_EVENT glb_done logs prebake=hit|joined; prebake_done logs ip_token Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>692adfc
-
Restore full texture fitting and default preview encode quality
Bobby150-step projected-init bakes left blotches and speckle on the cybertruck and s1000rr, and realtime VP8 visibly degraded the preview video; both saved under 0.5 s. fp16 SLAT and the shared ZeroGPU entry stay.e66e0ce -
Speed phase 2: one shared ZeroGPU entry for preview and bake
Bobby +1: Claude Opus 5.5spaces keeps a worker pool per decorated function, so alternating preview and bake functions always forked a fresh worker. gpu_task(mode, ...) now serves both as separate calls (preview stays first); the duration callable reserves by mode and texture size as before. GPU_CALL fn is gpu_task:preview|bake and reuse_report reads both old and new names plus bake-after-own-preview reuse. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>df74830 -
Speed phase 1: fp16 SLAT, SDPA flow attention, batched CFG, realtime VP8, bake init150
Bobby +1: Claude Opus 5.5SLAT sampled under fp16 autocast like upstream (the fp32 inner autocast forced fp32 kernels). Dense and sparse full attention route to SDPA while windowed decoder attention keeps xformers. Classifier-free guidance runs cond and uncond in one forward. Alpha WebM encodes with -deadline realtime -cpu-used 8. Texture bake starts from the projected average with 0.3x the steps at lr 3e-3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>093fc19 -
Show labelled progress bars for preview, GLB and STL generation
Bobby +1: Claude Opus 5.5A small client-side bar per operation eases toward 95% on measured timings, adopts real server stage labels/percent from Gradio's status tracker when they reach the browser, completes at 100% on success and hides on error, clear or a new generation. Hooks are preprocess js on backend deps (no js-only steps); API inputs/outputs unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>06d399d -
Reserve 12s nominal for GLB bakes up to 1024px and record findings
Bobby +1: Claude Opus 5.5Measured in-GPU bakes after GPU decimation: 5.0-6.4s at 1024 (cold bonsai worst), 10.0s for bonsai at 1536, so 1536 keeps 18s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>6a0219e -
Decimate GLB meshes on GPU with cumesh by default
Bobby +1: Claude Opus 5.5Same-state A/B on dev (1024px): bake 14.9s -> 4.1s on bonsai and 9.0s -> 3.5s on cybertruck against df79a87's postprocessing; pyvista's CPU decimation was 2.4-8.1s of it. Geometry stays within 0.14-0.19% mean Chamfer of the bbox diagonal and renders match. Drops the temporary legacy bench module. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>ed3d05d
-
Validate the image and texture before requesting a grant
Bobby +1: Claude Opus 5.5Regenerate with no image or an invalid image set or texture size used to request a grant the webapp counted, then exit before the access check, stranding the use and leaving a settled entry for the next run. The grant step now receives the generation image and texture size and requests no grant for inputs the generation would reject. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>df79a87 -
Keep grants per nonce so queued and overlapping runs keep their grant
Bobby +1: Claude Opus 5.5Settled grants now live for an hour from settlement instead of expiring 180 s after the request, so a run that waited in the GPU queue still uses the grant the API already counted. Entries are keyed by nonce and settled by the nonce in the Space-signed receipt, so a second run in the same session no longer cancels the first. A granted entry that lapses before use is denied with a Space-signed refund, and every failed run in a session gets its own refund. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>7df6873 -
Enforce embed grants for a listed set of parent origins
Bobby +1: Claude Opus 5.5LABS_EMBED_GRANTS accepts 1 (every eligible embed) or a comma-separated list of parent origins, so production can require grants for localhost and dev parents before app.skyebrowse.com runs the grant-aware webapp. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014n5MPma6mGJT5Jyj8Y3ivAea9eede -
Run every grant natively first and refund failed generations
Paid and free grants both use the visitor quota first and reach the Pro fallback only on a ZeroGPU quota denial. A non-quota failure sends a Space-signed refund receipt to the parent so the free use is returned. Records the hard rule never to enable LABS_EMBED_GRANTS on production before the API and webapp handshake are live. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>574875b -
Gate generations behind webapp grants and a public free limit
Embedded generations ask the SkyeBrowse webapp for a signed grant before any GPU work when LABS_EMBED_GRANTS is set; shared grants defer straight to the Pro fallback with the grant nonce. Public browser visits get LABS_PUBLIC_FREE_LIMIT generations per visitor, then a sign-up link. Both are inert until their Space variables are set. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>1ac53f4
-
Add an env-gated transparent preview WebM
BobbyTwo-pass Gaussian render (black and white matte) recovers alpha; the preview is served as a VP8-alpha WebM only when LABS_TRANSPARENT_PREVIEW is set, and the H.264 MP4 stays the default everywhere else.21cd56e -
Default the texture quality to 1024px
BobbyGLB_EXPORT_TEXTURE_SIZE 512 -> 1024, so the Space's own picker and any caller that omits texture_size start at 1024. Contract and GLB-cache pins updated.c083601 -
Raise SLAT guidance to the upstream reference and cap texture steps at 1000
Bobbye0ee6b2 -
Drive mesh faces and texture steps from the texture-quality setting
Bobbyb6a3ea1 -
Preserve mobile preview resolution across Gradio GPU requests
Bobbya8b1bfd -
Fix Hugging Face SDK wheel installation and Pydantic extras
Bobby3adc1d1 -
Tighten component packaging and staged GPU validation
Bobby9118a3b -
Migrate dev Space to Gradio 6 and return preview before texture baking
Bobby9c836cf -
Add a 2048px texture option with a raised GPU reservation
Bobby6e068de -
Add multiple-image generation with a view gallery
Bobby6aba652 -
Request 27 effective GPU seconds and default to 512px textures
Bobby64640ed -
Add GLB texture quality options defaulting to 1024px
Bobby4ee066d -
Explicitly pin TRELLIS generation to large ZeroGPU
Bobby2f76f49 -
Use provider-neutral generation allowance messages
Bobby27d3e57 -
Normalize verification helper whitespace
Bobbydf077d6 -
Reuse resident outputs and tighten single-allocation verification
Bobby1db2018 -
Prepare preview and cached textured GLB in one ZeroGPU allocation
Bobbycb3f0ca
-
Add Pro allowance fallback for ZeroGPU quota denials
Bobby +1: Claude CodeDefer genuine ZeroGPU quota denials to the SkyeBrowse Pro allowance and restore the result on CPU, without blocking the Space or polling. quota_fallback.py: HMAC-signed receipt/permit documents with strict base64url validation before hashing, an 8-entry bounded pending cache that never purges a running entry to admit work, session binding, and a permit-gated coordinator that logs only exception types. fallback_bridge.js: Gradio 4 preprocess hook that posts the signed ticket to an allow-listed __labs_parent embed and awaits the result. It is attached to the backend restore dependency because a js-only dependency never continues a .then() chain; the ack returns through a hidden gr.JSON input. app.py: quota denials are deferred only for same-origin allow-listed embeds with a signing key present, otherwise the original gr.Error is re-raised. Adds /run_pro_fallback([ticket, permit]) and preserves every existing API name and arity. tests: unit coverage for crypto, cache bounds, coordinat…ec59cbe