Upload UX polish: per-chip status, done state, size-aware ETA; fix gear position - #204
Merged
Conversation
…ETA; fix floating gear position - Removed the page-wide "Uploading..." status line - each file chip now shows its own uploading/done/failed state (spinner, checkmark, or error tint) instead, and the whole dropzone box turns green once every selected file has finished uploading. - Restyled file chips to sit visibly distinct (white card + shadow) against the dropzone instead of blending into the same gray background. - ETA now scales with file size instead of being one flat number per model, and prefers a real server-measured median once one exists for that model/size (GET /api/inference-duration-estimate) - the backend now logs (model, file size, duration) for every completed job to build that history over time. - Viewer: the floating gear shown when the toolbar is hidden was positioned at a fixed left-offset that landed in the middle of the axial pane's own CT image; anchored to the top-right corner instead, clear of every pane's content and label.
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.
Summary
GET /api/inference-duration-estimate. The backend now logs(model, file_size_bytes, duration_seconds)for every completed job (measured from GPU-slot grant, not queue entry) to build that history; falls back to the size formula silently when there isn't enough data yet.Also found while investigating "ePAI only shows a few organs"
Traced this end-to-end - the website's label mapping and viewer code (
_EPAI_TO_VIEWER,segmentation_categories,OrganCheckbox) were already correct. The real bug was in the ePAI model's own export pipeline (~/ePAI/binary/nnunetv2/inference/export_prediction.pyon the GPU server - a separate repo I don't have push access to, same situation as an earlier session's CUDA-cache fix): an explicit "extract only pancreas and tumor" step was zeroing out every other organ before the segmentation file was even saved, regardless of what the model detected. Verified via a real inference run: before the fix, only 2 of 25 possible labels were ever written to disk; after removing the masking step, 21 labels came through on the same test case, with pancreas/tumor stats unchanged within normal GPU nondeterminism. Fixed live on the server and the warm predictor restarted to pick it up - not part of this PR's diff since it's a different repo, documented here for visibility.Test plan
npm run build(tsc -b + vite build) - cleanvitest run- 298/298 passing{0, 17, 22}only; after: 21 distinct labels, matching the model's full 25-class training set)