# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## \[2.11.3\] - 2024-04-02
### Added
- Tooltips for long names on cards (projects, tasks, cloud storages, and models)
()
### Removed
- The `POST /api/tasks/{id}/data` endpoint no longer accepts several
parameters that didn't have any useful function: `size`,
`compressed_chunk_type`, `original_chunk_type`
()
### Fixed
- Duplicated notifications for automatic annotation
()
- Made quality report update job scheduling more efficient
()
- Incorrect file name usage when importing annotations from a cloud storage
()
- Using single shape annotation mode with multiple labels
()
- Part of sidebar not visible in attribute annotation mode when there are a lot of attribute values
()
- Changed interpolation behavior in `annotation.py`, now correctly keep the last frame
- Insert last frame if it is key to the track, fixes data corruption when tracks crossing more than 1 jobs
()
- Label constructor validation of empty label names
()
- Incorrect alignment of empty job list component
()
- Remove underlying pixels feature is not applied immediately
()
- Corrected the formula for per-class accuracy in quality reports;
the old formula is now exposed as the `jaccard_index` key
()
- Sending `/events` request from logged-out user ()
- Fixed accuracy being displayed incorrectly on the task analytics page
()
- Fixed an invalid default overlap size being selected for video tasks
with small segments
()
- Fixed redundant jobs being created for tasks with non-zero overlap
in certain cases
()
- Accumulation of confusion matrix across all jobs in a task when creating a quality report
()
- 90 deg-rotated video was added with "Prefer Zip Chunks" disabled
was warped, fixed using the static cropImage function.
()
## \[2.11.2\] - 2024-03-11
### Changed
- Sped up resource updates when there are no matching webhooks
()
### Fixed
- Job and task `updated_date` are no longer bumped twice when updating
annotations
()
- Sending `PATCH /jobs/{id}/data/meta` on each job save even if nothing changed in meta data
()
- Sending `GET /jobs/{id}/data/meta` twice on each job load
()
- Made analytics report update job scheduling more efficient
()
- Fixed being unable to connect to in-mem Redis
when the password includes URL-unsafe characters
()
- Segment anything decoder is loaded anytime when CVAT is opened, but might be not required
()
## \[2.11.1\] - 2024-03-05
### Added
- Single shape annotation mode allowing to easily annotate scenarious where a user
only needs to draw one object on one image ()
### Fixed
- Fixed a problem with Korean/Chinese characters in attribute annotation mode
()
- Fixed incorrect working time calculation in the case where an event
occurred during another event
()
- Fixed working time not being calculated for the first event in each batch
sent from the UI
()
- Submit button is enabled while creating a ground truth job
()
## \[2.11.0\] - 2024-02-23
### Added
- Added `dataset:export` and `dataset:import` events that are logged when
the user initiates an export or import of a project, task or job
()
### Changed
- Now menus in the web interface are triggered by click, not by hover as before
()
### Removed
- Removed support for the TFRecord dataset format
()
### Fixed
- On quality page for a task, only the first page with jobs has quality report metrics
()
- Side effects of data changes, such as the sending of webhooks,
are no longer triggered until after the changes have been committed
to the database
(,
)
## \[2.10.3\] - 2024-02-09
### Changed
- The "message" field of the payload of send:exception events
no longer includes a trailing linebreak
()
- Annotation guide is opened automatically if not seen yet when the job is "new annotation"
()
- Annotation guide will be opened automatically if this is specified in a link `/tasks//jobs/?openGuide`
()
- Reduced number of server requests, made by clients
()
- Server exception rest_framework.exceptions.NotAuthenticated is not logged by analytics anymore
()
### Fixed
- Prevented zombie processes from accumulating in the Kvrocks container
()
- Fix Redis exceptions crashing the `/api/server/health/` endpoint
()
- Unhandled exception "Cannot read properties of null (reading 'plot')"
()
- Unhandled exception "Cannot read properties of undefined (reading 'toLowerCase')"
()
## \[2.10.2\] - 2024-01-26
### Changed
- Enhanced errors messaging for better perception by users
()
### Fixed
- Empty masks might be created with `polygon-minus` tool ()
- Empty masks might be created as a result of removing underlying pixels ()
- Fixed excessive memory usage
when exporting a project with multiple video tasks
()
- OpenCV tracker MIL works one frame behind
()
## \[2.10.1\] - 2024-01-18
### Changed
- KeyDB used as data cache replaced by Kvrocks
()
### Fixed
- 504 Timeout error when exporting resources to cloud storage
()
- Enqueuing deferred jobs when their dependencies have been started -> cancelled -> restarted -> finished
()
- UI failed when open context menu for a skeleton element on a frame with a conflict
()
- Issue can not be created for a skeleton element in review mode
()
## \[2.10.0\] - 2024-01-10
### Changed
- When the `ORG_INVITATION_CONFIRM` setting is enabled, organization invitations for existing users are no
longer accepted automatically. Instead, the invitee can now review the invitation and choose to accept or decline it.
()
- \[Compose, Helm\] Updated Clickhouse to version 23.11.*
()
- Job queues are now stored in a dedicated Redis instance
()
### Removed
- PermissionDenied error thrown before OPA call in case if user is not a member of organization
()
### Fixed
- Can not input Chinese correctly in text attributes on objects sidebar
()
- Restored Compose file compatibility with Docker Compose 2.17.0 and earlier
()
- Attaching GCS and AWS S3 buckets with dots in name
()
- Annotation actions are applied to the objects from a ground truth job
()
- Ground truth objects removed together with annotation objects when press "Remove annotations" in menu
()
- Frame search by a filter is affected by ground truth annotations
()
- Creating duplicating annotations when nginx throws 504 timeout status (workaround)
()
- `TIFF` images are saved as `JPEG` images with `.tif` extension in original chunks
()
- EXIF rotated TIFF images are handled incorrectly
()
- RQ Scheduler launch, broken in PR 7245
()
- UI crashes if user highligts conflict related to annotations hidden by a filter
()
- Annotations conflicts are not highligted properly on the first frame of a job
()
- Error message `Edge's nodeFrom ${dataNodeFrom} or nodeTo ${dataNodeTo} do not to refer to any node`
when upload a file with some abscent skeleton nodes ()
- Wrong context menu position in skeleton configurator (Firefox only)
()
- Fixed console error `(Error: attribute width: A negative value is not valid`
appearing when skeleton with all outside elements is created ()
- Updating cloud storage attached to CVAT using Azure connection string
()
## \[2.9.2\] - 2023-12-11
### Added
- Introduced CVAT actions. Actions allow performing different
predefined scenarios on annotations automatically (e.g. shape converters)
()
- The UI will now retry requests that were rejected due to rate limiting
()
### Changed
- Update nvidia/cuda image version from 11.7.0 to 11.7.1 in transt serverless function.
()
- \[Helm\] Allow pre-release versions in kubernetes requirement to include AWS EKS versions ()
- GPU versions of serverless functions now use the `latest-gpu` Docker tag
rather than `latest`
()
- \[Compose, Helm\] Downgraded KeyDB to 6.3.2
()
### Fixed
- The GPU version of the YOLOv7 serverless function not actually using the GPU
()
- It is now possible to create Ground Truth jobs containing all frames in the task
()
- Incorrect Ground Truth chunks saving
()
- Reset source/target storage if related cloud storage has been deleted
()
- Prevent possible cyclic dependencies when enqueuing a rq job when ONE_RUNNING_JOB_IN_QUEUE_PER_USER is used
()
- Enqueue deferred jobs when their dependencies are moved to the failed job registry due to AbandonedJobError
()
- Reduce the number of requests to the server for task details
()
- Shape settings **opacity** and **selected opacity** reset on each frame change
()
- Server error in list quality settings API, when called in an org
()
- Incorrect handling of the hidden points in skeletons in quality comparisons
()
- \[Helm\] Fixed installing Traefik Middleware even if Traefik is disabled in the values ()
- Error code 500 when send `change:frame` event without `duration`.
()
- Added workaround for corrupted cached chunks
(, )
## \[2.9.1\] - 2023-11-23
This release has changes only in the Enterprise version.
## \[2.9.0\] - 2023-11-23
### Added
- CVAT now supports serverless Nuclio functions that return skeleton annotations.
We've added a keypoint detector that supports skeletons for the following classes:
body, head, foot, and hands. Deployment command: `./deploy_cpu.sh pytorch/mmpose/hrnet32/nuclio/`
()
- Implemented a feature that allows slicing one polygon/mask shape into two parts
()
- Implemented a feature that allows joining several masks into a single one
()
- \[Helm\] Introduced values that apply to all backend deployments/jobs
()
### Changed
- The "use cache" option on the server is now ignored when creating a
task with cloud storage data ()
- The Docker Compose file and Helm chart have been updated to enable Traefik
access logs by default and change the log format to JSON
()
- \[Helm\] The PersistentVolumeClaim for the volume used to hold application
data is now retained after uninstall
()
- \[Helm\] All backend-related deployments now
use `cvat-app` as the value for the `app` label
()
- \[Helm\] The minimum compatible Kubernetes version
is now 1.19.0 ()
- \[Helm\] The CVAT hostname can now be configured with `ingress.hostname` option
()
- \[Helm\] The `ingress.tls` configuration has been reworked.
()
- \[Helm\] The Traefik subchart updated to 25.0.0 (appVersion v2.10.5)
()
- \[Docker Compose\] Traefik updated to v2.10.\*
()
### Removed
- Support for V1 cloudstorages/id/content endpoint
()
- \[Helm\] `ingress.hosts` has been removed, use `ingress.hostname` instead.
()
### Fixed
- Fixed a data race condition during GT job creation
()
- Resolved an issue where the job state could not be changed
multiple times without reloading the annotation view
()
- Corrected an issue where compressed chunks did not
utilize the Exif rotation tag
()
- Minor styling issues on empty models page
()
- Fixed minor issue when brush marker is appended to a final mask
()
## \[2.8.2\] - 2023-11-06
### Fixed
- OpenCV runtime initialization
()
## \[2.8.1\] - 2023-11-03
### Added
- Support for default bucket prefix
()
- Search for cloud storage and share files
()
- Ability to limit one user to one task at a time
()
- Support for using an external database in a Docker Compose-based deployment
()
### Changed
- Migrated to rq 1.15.1
()
- Compressed sequental `change:frame` events into one
()
- Create a local session for AWS S3 client instead of using the default global one
()
- Improved performance of chunk preparation when creating tasks
()
### Fixed
- Race condition in a task data upload request, which may lead to problems with task creation in some specific cases,
such as multiple identical data requests at the same time
()
- Bug with viewing dependent RQ jobs for downloading resources from
cloud storage when file path contains sub-directories.
This is relevant for admins that can view detailed information about RQ queues.
()
- OpenCV.js memory leak with TrackerMIL
()
- Can't deploy detectron serverless function
()
- A mask becomes visible even if hidden after changing opacity level
()
- There is no switcher to personal workspace if an organization request failed
()
## \[2.8.0\] - 2023-10-23
### Added
- A new feature allowing users to invite others to the organization via email.
()
- \[SDK\] In the SDK, a parameter has been introduced to `TaskDataset`
which enables the option to disable annotation loading
()
- A test has been incorporated for retrieving bucket content in
cases where the bucket includes manually created directories.
()
### Changed
- The maximum length of the secret access key has been
increased to 64 characters.
()
- The client will no longer load all organizations upon start
()
- The default value for Zookeeper from the
Clickhouse subchart has been set to disabled.
()
### Removed
- The endpoints `/api/projects`, `/api/tasks`, and `/api/jobs`
will no longer return information regarding the count of labels.
This information was complicating SQL queries,
making them hard to optimize.
Instead, use `/api/labels?task_id=tid` or `/api/labels?project_id=pid`.
()
### Fixed
- Issues causing potential double-sized file writes during task
data uploading have been addressed.
()
- Issues encountered when retrieving CS content from GCS
buckets containing manually created directories have been resolved.
()
- \[SDK\] In the SDK, `cvat_sdk.auto_annotation.annotate_task`
has been optimized to avoid unnecessary fetching of
existing annotations.
()
- The project/task/job update time is now correctly
modified upon label updates.
()
## \[2.7.6\] - 2023-10-13
### Changed
- Enabled nginx proxy buffering
()
- Helm: set memory request for keydb
()
- Supervisord ():
- added `autorestart=true` option for all workers
- unified program names to use dashes as delimiter instead of mixed '\_' and '-'
- minor improvements to supervisor configurations
### Removed
- Removed gitter link from about modal
()
### Fixed
- Persist image filters across jobs
()
- Splitting skeleton tracks on jobs
()
- Uploading skeleton tracks in COCO Keypoints format
()
- Fixed Siammask tracker error on grayscale images
()
- Fixed memory leak on client side when event listener was not removed together with its context
()
- Fixed crash related to issue tries to mount to not existing parent
()
- Added 'notranslate' markers to avoid issues caused by extension translators
()
- Getting CS content when S3 bucket contains manually created directories
()
- Optimized huge memory consumption when working with masks in the interface
()
### Security
- Security upgrade opencv-python-headless from 4.5.5.62 to 4.8.1.78
()
- Added X-Frame-Options: deny
()
## \[2.7.5\] - 2023-10-09
### Added
- Temporary workaround to fix corrupted zip file
()
## \[2.7.4\] - 2023-10-06
### Added
- The latest comment displayed in issues sidebar ()
### Fixed
- It was not possible to copy issue comment from issue dialog ()
### Security
- Update Grafana from 9.3.6 to 10.1.2
## \[2.7.3\] - 2023-10-02
### Added
- New , form-based Issue templates for Github repository
### Removed
- Functionality for synchronizing a task with a Git repository
()
### Fixed
- PCD files with nan values could not be opened on 3D workspace
()
- Fixed direct navigation to neightbour chunk on 3D workspace
()
- Intencity level from .bin lidar data ignored when converting .bin -> .pcd
()
- Incorrectly determined video frame count when the video contains an MP4 edit list
()
- Internal server error when retrieving data from CS and cache=True
()
### Security
- Security upgrade Pillow from 9.3.0 to 10.0.1
()
- Security update cryptography from 41.0.3 to 41.0.4
()
## \[2.7.2\] - 2023-09-25
### Changed
- Do not reload annotation view when renew the job or update job state ()
- Now images from cloud buckets are loaded in parallel when preparing a chunk ()
### Fixed
- Downloading additional data from cloud storage if use_cache=true and job_file_mapping are specified
()
- Leaving an organization ()
- Order of images in annotation file when dumping project in CVAT format ()
- Validation on Cloud Storage form / error message on create task form ()
## \[2.7.1\] - 2023-09-15
### Fixed
- Include cloud storage manifest file to selected files if manifest was used as data source ()
- Keep sequence of files when directories were specified in server_files ()
## \[2.7.0\] - 2023-09-10
### Added
- Admin actions for easy activation/deactivation of users ()
### Fixed
- Invalid input validation in for `cloud_storage_id` ()
- Incorrect task progress report for 3rdparty users ()
### Security
- Security upgrade gitpython from 3.1.33 to 3.1.35 ()
- Security upgrade numpy from 1.22.0 to 1.22.4 ()
## \[2.6.2\] - 2023-09-06
### Added
- Gamma correcton filter ()
- Introduced the feature to hide or show objects in review mode ()
### Changed
- \[Helm\] Database migrations are now executed as a separate job,
rather than in the server pod, to mitigate the risk of data
corruption when using multiple server replicas
()
- Clicking multiple times on icons in the left
sidebar now toggles the corresponding popovers open and closed
()
- Transitioned to using KeyDB with FLASH for data
chunk caching, replacing diskcache ()
### Removed
- Removed outdated use of hostnames when accessing Git, OpenCV, or analytics via the UI ()
- Removed the Feedback/Share component ()
### Fixed
- Resolved the issue of the canvas zooming while scrolling
through the comments list in an issue ()
- Addressed the bug that allowed for multiple issue
creations upon initial submission ()
- Fixed the issue of running deep learning models on
non-JPEG compressed TIFF images ()
- Adjusted padding on the tasks, projects, and models pages ()
- Corrected hotkey handlers to avoid overriding default behavior when modal windows are open
()
- Resolved the need to move the mouse to activate
brush or eraser effects; a single click is now sufficient ()
- Fixed a memory leak issue in the logging system ()
- Addressed a race condition that occurred during the initial creation of `secret_key.py`
()
- Eliminated duplicate log entries generated by the CVAT server
()
## \[2.6.1\] - 2023-08-25
### Added
- More information about task progress on tasks page ()
- Prefetching next chunk when user navigates by frames manually ()
### Changed
- Bumped nuclio version to 1.11.24 and removed `/tmp` mounting in the nuclio container to adhere the update.
- Response code for empty cloud storage preview 204 -> 404 ()
- Organization now opened immediately after it is created ()
- More responsive automatic annotation progress bar ()
- Improved message when invite more users to an organization ()
### Fixed
- Exporting project when its tasks has not data ()
- Removing job assignee ()
- UI fail when select a mask or a skeleton with center-aligned text ()
- Fixed switching from organization to sandbox while getting a resource ()
- You do not have permissions when user is cancelling automatic annotation ()
- Automatic annotation progress bar is invisible if the app initialized on the task page
()
- Extra status check requests for automatic annotation ()
- \[SDK\]: `FileExistsError` exception raised on Windows when a dataset is loaded from cache
()
### Security
- Remote Code Execution (RCE) [SNYK-PYTHON-GITPYTHON-5840584](https://snyk.io/vuln/SNYK-PYTHON-GITPYTHON-5840584)
## \[2.6.0\] - 2023-08-11
### Added
- \[SDK\] Introduced the `DeferredTqdmProgressReporter` class,
which avoids the glitchy output seen with the `TqdmProgressReporter` under certain circumstances
()
- \[SDK, CLI\] Added the `cvat_sdk.auto_annotation`
module, providing functionality to automatically annotate tasks
by executing a user-provided function on the local machine.
A corresponding CLI command (`auto-annotate`) is also available.
Some predefined functions using torchvision are also available.
(,
)
- Included an indication for cached frames in the interface
()
### Changed
- Raised the default guide assets limitations to 30 assets,
with a maximum size of 10MB each
()
- \[SDK\] Custom `ProgressReporter` implementations should now override `start2` instead of `start`
The old implementation is still supported.
()
- Improved memory optimization and code in the decoding module ()
### Removed
- Removed the YOLOv5 serverless function
()
### Fixed
- Corrected an issue where the prebuilt FFmpeg bundled in PyAV
was being used instead of the custom build.
- Fixed the filename for labels in the CamVid format ()
## \[2.5.2\] - 2023-07-27
### Added
- We've added support for multi-line text attributes ()
- You can now set a default attribute value for SELECT, RADIO types on UI
()
- \[SDK\] `cvat_sdk.datasets`, is now available, providing a framework-agnostic alternative to `cvat_sdk.pytorch`
()
- We've introduced analytics for Jobs, Tasks, and Project ()
### Changed
- \[Helm\] In Helm, we've added a configurable default storage option to the chart ()
### Removed
- \[Helm\] In Helm, we've eliminated the obligatory use of hardcoded traefik ingress ()
### Fixed
- Fixed an issue with calculating the number of objects on the annotation view when frames are deleted
()
- \[SDK\] In SDK, we've fixed the issue with creating attributes with blank default values
()
- \[SDK\] We've corrected a problem in SDK where it was altering input data in models ()
- Fixed exporting of hash for shapes and tags in a specific corner case ()
- Resolved the issue where 3D jobs couldn't be opened in validation mode ()
- Fixed SAM plugin (403 code for workers in organizations) ()
- Fixed the issue where initial frame from query parameter was not opening specific frame in a job
()
- Corrected the issue with the removal of the first keyframe ()
- Fixed the display of project previews on small screens and updated stylelint & rules ()
- Implemented server-side validation for attribute specifications
()
- \[API\] Fixed API issue related to file downloading failures for filenames with special characters ()
- \[Helm\] In Helm, we've resolved an issue with multiple caches
in the same RWX volume, which was preventing db migration from starting ()
## \[2.5.1\] - 2023-07-19
### Fixed
- Memory leak related to unclosed av container ()
## \[2.5.0] - 2023-07-05
### Added
- Now CVAT supports project/task markdown description with additional assets
(png, jpeg, gif, webp images and pdf files) ()
- Ground Truth jobs and quality analytics for tasks ()
### Fixed
- The problem with manifest file in tasks restored from backup ()
- The problem with task mode in a task restored from backup ()
- Visible 'To background' button in review mode ()
- Added missed auto_add argument to Issue model ()
- \[API\] Performance of several API endpoints ()
- \[API\] Invalid schema for the owner field in several endpoints ()
- Some internal errors occurring during lambda function invocations
could be mistakenly reported as invalid requests
()
- \[SDK\] Loading tasks that have been cached with the PyTorch adapter
()
- The problem with importing annotations if dataset has extra dots in filenames
()
### Security
- More comprehensive SSRF mitigations were implemented.
Previously, on task creation it was prohibited to specify remote data URLs
with hosts that resolved to IP addresses in the private ranges.
Now, redirects to such URLs are also prohibited.
In addition, this restriction is now also applied to webhook URLs.
System administrators can allow or deny custom IP address ranges
with the `SMOKESCREEN_OPTS` environment variable.
().
## \[2.4.9] - 2023-06-22
### Fixed
- Error related to calling serverless functions on some image formats ()
## \[2.4.8] - 2023-06-22
### Fixed
- Getting original chunks for items in specific cases (