Skip to content

Frame metadata explicit import#1763

Closed
PaulHax wants to merge 6 commits into
frame-metadata-sidecarsfrom
frame-metadata-explicit-import
Closed

Frame metadata explicit import#1763
PaulHax wants to merge 6 commits into
frame-metadata-sidecarsfrom
frame-metadata-explicit-import

Conversation

@PaulHax

@PaulHax PaulHax commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

PaulHax added 5 commits July 16, 2026 22:05
Add a frameMetadata item marker as the arbitrary-name counterpart of the
reserved sidecar basenames. Discovery lists marked items alongside
name-declared ones, and postprocess accepts frameMetadataNames to mark
uploaded files by direct name lookup (the sweep regexes never list a
declared .txt). Marked items short-circuit the annotation classifier so
an interrupted marking pass can never parse or remove a sidecar.
The Import card gains a Frame Metadata section, present when the
platform provides importFrameMetadataFile. The picked file may have any
name; the pick itself declares its role. A module-level invalidation
signal lets the import refresh live Frame Info panels through the
session cache.
Upload the picked file into the parent dataset folder and declare it
via the postprocess frameMetadataNames param, mirroring the annotation
import flow. The frameMetadata picker accepts csv/txt by extension
because Windows browsers report CSV MIME as application/vnd.ms-excel.
Copy the picked file into the project auxiliary directory keeping its
original basename and record it in meta.json frameMetadataFiles.
Discovery lists declared files ahead of convention-named ones; for
multicam they are shared across cameras like parent-root sidecars while
camera-local files still win. Import-annotation errors now point at the
Import button's Frame Metadata option.
@PaulHax
PaulHax force-pushed the frame-metadata-explicit-import branch from d87e2fa to f516472 Compare July 17, 2026 02:07
Address the merged review of the arbitrary-name import path. The load-bearing
change is that declaration is now keyed by the uploaded item id rather than the
filename, which closes several web-path defects at once.

- Declare by item id: postprocess param frameMetadataNames -> frameMetadataItemIds;
  the server loads each item, checks folder membership and extension, and marks all
  only after validating all (no partial marks, non-string ids rejected as 400).
- Re-import now replaces in place: the web client deletes a prior same-name declared
  sidecar before uploading, so a corrected file is not stranded as "name (1)" while
  stale values persist. A same-name pending annotation CSV is left untouched.
- The uploaded item is removed if postprocess rejects, so a failed import cannot
  strand a file for the next annotation sweep to misclassify and delete.
- Precedence: declared (imported) sidecars sort ahead of reserved-name ones so an
  imported file wins column conflicts, matching desktop and the docs.
- The viewer's Frame Metadata import section is gated on image-sequence/multicam
  media type, mirroring the sibling sections.
- The Frame Metadata panel recovers after a failed refetch instead of sticking on
  error; a reserved-name import through Import Annotations now refreshes the panel.
- Empty-file guard on web, boolean return type, shared file-extension constant and
  upload helper, restored desktop rename hint, and predicate/string dedup.
@PaulHax PaulHax closed this Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant