feat(ui): the export dialog chooses a target model, and the lossy consent names it - #796
Merged
Conversation
JArmandoAnaya
force-pushed
the
feat/targets-t3-catalog
branch
from
August 26, 2026 11:27
b38157d to
1595713
Compare
…sent names it The Format select becomes Target model: the catalog from GET /export-targets, grouped under Ultralytics YOLO, Community YOLO and Other formats, each option carrying the tasks it accepts or the geometries it carries. The choice is sent as target=, never format=, and the retired yolo alias is never offered. The consent banner reads the 409's report for the chosen target and opens with a sentence naming the target, what it accepts and how much would be dropped or degraded, with the per-class list beneath. The grouped picker is a shared pattern, ExportTargetSelect, for the preprocessing tab to take as well. The note denying a pre-export validation route is corrected: the route exists and this screen does not call it.
…read data.yaml The release holds a polyline the target drops, so the walk meets the real consent sentence and count before the download, then opens the archive and asserts the names mapping in data.yaml. The launch's 409 joins the pinned list of refused calls as the one refusal a person is meant to see.
JArmandoAnaya
force-pushed
the
feat/targets-t4-ui
branch
from
August 26, 2026 11:33
5f4545a to
266551d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack
Position 4 of the export-targets stack (#784); based on
feat/targets-t3-catalog.What changed
The export dialog's one control is now Target model rather than Format. It lists the
catalog
GET /export-targetsanswers, grouped under Ultralytics YOLO, Community YOLO andOther formats, and each option carries a second line saying what the target takes — the
tasks a model accepts, or, for a self-named format with no task vocabulary, the geometries it
carries. The choice is sent as
target=; the format it resolves to is the server's to workout, and the retired
yoloalias is never offered. A family this build has no heading forlands under Other formats rather than out of the list.
The lossy consent banner reads the 409's compatibility report for the chosen target and
opens with one sentence naming the target, what it accepts and how much of the release it
would drop or degrade — YOLOv10 accepts boxes only — 1,204 polygons would be dropped. —
with the per-class list beneath it as before. The counts are the report's, summed per
geometry, in the kernel's own order. The pre-attempt hint still comes from
FormatOut.lossy,read through the target's format; a formats read that failed now says so beside the picker
instead of leaving the hint out silently.
useExportTargetsinscreens/queries.ts(key["export-targets"], the same stale timeas
useFormats);useExportReleasetakes{ target }and sendstarget=.patterns/ExportTargetSelect.tsx, a shared grouped picker built on theSelectprimitive's own
SelectGroup,SelectLabelandSelectItem meta— no primitive change.Exported from
index.tswithgroupExportTargets,exportTargetMetaanddescribeTargetDrops, so the preprocessing tab can take the same control.data/refusals.ts:describeTargetDrops, a sentence forEXPORT_TARGET_NOT_FOUND, andthe
LOSSY_EXPORT_NOT_CONSENTEDsentence now says target.DatasetScreen.tsx(and its twins inqueries.ts,dataset.test.tsxanddocs/content/ui.md) said there is no pre-export validationroute. There is —
GET /releases/{id}/export-compatibility— and this screen does notcall it; the note now says that.
cycle.spec.tsexports foryolo11: the release holds a polyline the target drops, sothe walk meets the real consent (the sentence and the count from the kernel), ticks it,
and then reads
data.yamlout of the downloaded archive and asserts thenamesmapping.The launch's 409 joins the pinned list of refused calls, as the one refusal a person is
meant to see.
docs/content/ui.md's export section describes the target picker and the consent copy.Found, not fixed
frontend/app/e2e/_wire.tsholds only the capability rosters; no e2e spec stubs/formats, so there was nothing there to give atargetsfield or an export-targetsstub to. The component tests carry the stubs instead.
docs/content/ui.md;docs/content/ui/has no export page.Checks
Per commit:
pnpm --filter @visionset/ui-core test(dataset.test.tsx: 41 passed),pnpm -r lint,pnpm -r build, and the browser cycle for the spec it touches.bash scripts/check.shonce onthe final tree, then
bash scripts/check.sh docsfor the doc change:The base branch has not been through CI (Tier B, no PR), so this branch's CI is the first
verdict on T3's tree as well as this one.