# GroundingPI Studio r8 User-requested layout and visualization revision, 2026-09-16. The same UI files serve the standalone demo and the private Hugging Face Space. ## Changes - Container-relative brand sizing prevents the GroundingPI title from clipping. - Bounded sidebar, consistent canvas/query gutters, visible desktop action, and stacked mobile controls. Native image sharing is explicitly disabled. - Request identifiers let the browser distinguish consecutive identical outputs. The immediate client acknowledgement owns a separate node; it never replaces Gradio/Svelte-managed status DOM. Completion/error clears the timer and inert state. - Category chips sit next to the canvas workflow. Selection shows original pixels, exact returned geometry, category-colored focus with a contrast halo, instance navigation and a magnified crop. Closing focus restores every prediction. - Dense boxes use fine edges and short corner marks, with no filled interiors. No prediction is suppressed, merged, moved, deduplicated or replaced. - Box labels appear in sparse and dense scenes. Each exact category gets at most one on-image name across its instances. Labels avoid each other and small boxes; nearby free space and short leader lines handle crowded anchors. The category inspector always retains every category, including labels that cannot physically fit on a tiny canvas. Font weight is explicitly set for legible raster text. - Empty detail panels stay hidden; raw prompt/output remain available in accordions. ## Contract The 27 examples, 9 task routes, protocol parser, prompts, native inference backend, model revision and generated coordinates are unchanged. Dataset annotations are never substituted for predictions. The original r7 manifest remains as provenance; `ui_studio_r8_lock.json` records the reviewed new UI bytes and unchanged case contract. ## Verification scope Console request lifecycle, protocol/render regressions and packaging lock checks; browser review at mobile, intermediate and desktop widths; success, error and repeat requests; category/instance focus, zoom/reset, example switching and upload reset. Local visual regression uses a separate, non-deployed HTTP fixture replaying a recorded real 27-target HF response. Its latency is test latency. The deployed HF Space is checked with a fresh real model request after release; these checks are qualitative UI acceptance, not a benchmark.