TL;DR
- One-step user off-boarding: remove a user with all their data via a new Django CLI command.
- Smarter label schema checks: the Raw Labels Editor now blocks invalid configs before they hit the server.
- Smoother reviews: Issue dialogs auto-reposition to stay fully visible near frame edges.
- Cleaner APIs:
deleted_frames
in job meta now only reports frames from the current job segment. - Lower backend load: preview requests for Projects/Tasks/Jobs are sent sequentially to avoid spikes.
Added
Delete a user together with all their resources (admin CLI)
- Context: Adds a safe server-side flow to remove a user and all associated data in one go.
Impact: Admins can fully deprovision accounts without manual cleanup. Built-in validation prevents unsafe deletions (e.g., community users still in orgs with other members; SaaS users with active subscriptions). - Example:
python manage.py deleteuser <user_id>
Changed
Raw Labels Editor: stronger validation
- Context: UI now catches malformed/unsupported label configurations earlier.
- Impact: Fewer bad payloads reaching the backend; clearer inline feedback for editors. No action needed unless your current config is invalid.
Preview requests sent sequentially to reduce server load
- Context: Fetching previews for Projects/Tasks/Jobs could spike concurrency.
- Impact: More stable performance under load; slightly lower peak concurrency for preview calls.
Fixed
Issue dialog never opens off-screen
- Context: In review mode, dialogs near frame corners could render outside the viewport.
- Impact: Dialogs now auto-reposition and remain fully visible. No more zooming out to find them.
deleted_frames
in job meta constrained to the job segment
- Context: API could return
deleted_frames
outside the job’s segment in/jobs/{id}/data/meta
. - Impact: Client code relying on this field now receives only relevant frames. If you worked around the previous behavior, you can simplify your client logic.
- Notes: Includes a test for video tasks with
frame step > 1
.