2026.08.14
-
Give
CloudDatabaseadatabase_id, and reject a reco counts report request whose path names a database which the request's server keys do not belong to, as real Vuforia does. -
Return a response, rather than raising an uncaught
PIL.Image.DecompressionBombError, when an image with a small file size but a huge number of pixels is given toPOST /targetsorPOST /v1/query.
As real Vuforia does,POST /targetsnow returns theImageTooLargeresult code for an image with more than 37748736 pixels, and the Query API applies no pixel count limit. -
Return targets in a deterministic order from the Query API,
GET /targets
andGET /duplicates/{target_id}. Targets are ordered by upload date and
then by target ID, so repeated runs agree with each other. This order is not
Vuforia's match score order. -
Document the Docker containers' configuration with the environment variable names and values which the applications actually read, starting with
TARGET_MANAGER_BASE_URL. -
Build the Docker images from a committed
uv.lockwith a.dockerignore, so that image contents are reproducible from a commit, source edits no longer invalidate the dependency layer, and repository files such as tests and documentation are no longer copied into the images. -
Store Model Target datasets in the target manager service rather than in the VWS application. In the Docker deployment, datasets now survive a restart of the VWS container, matching how cloud databases and their targets are stored. The VWS application also no longer imports the target manager module's state: it constructs its own request rate limiter and reco counts report store.
-
Report the Docker containers as unhealthy without a traceback in the health check probe output while nothing is yet listening on the port.
-
Support
cadDataBlobandcadDataFormatin Model Target dataset creation requests, and require exactly one ofcadDataUrlandcadDataBlobfor each model. -
Reject Model Target Web API and OAuth2 token requests with a
Content-Lengthheader which is not an integer, matching the load balancer in front of real Vuforia. -
Reject Model Target dataset creation requests with wrongly typed
name,targetSdkormodelsentry values. -
Treat standard and advanced Model Target datasets as separate resources: status, download and delete requests made through the other dataset type's routes now return the unknown-dataset error rather than acting on the dataset.
-
Reject Model Target dataset creation requests with values outside the documented enumerations for the
automaticColoring,motionHint,optimizeTrackingFor,realisticAppearance,simplifyandtrackingModemodel fields. -
Report the
failedtraining status when downloading a Model Target dataset whose generation failed, rather than thenot-startedstatus which a still-processing dataset reports. -
Add configurable failed Model Target dataset status responses.
-
Add configurable Model Target dataset generation warning responses.
-
Reject Model Target dataset creation requests with
guideViewPositionobjects which are missingrotationortranslation, or which haverotationortranslationvalues that are not JSON arrays. -
Reject Model Target dataset creation requests with
guideViewPositionrotationortranslationarrays which contain values that are not JSON numbers. -
Reject Model Target bearer tokens whose JWT payload is not a JSON object.
-
Reject Model Target bearer tokens with empty or malformed JWT signatures.
-
Reject Model Target dataset creation requests with models which are missing
name, or which have wrongly typedcadDataUrl,nameorviewsvalues. -
Reject Model Target dataset creation requests with a body which is valid JSON but not a JSON object, rather than raising an error in the mock.
-
Accept State-Based Model Target configuration and validate per-view state selections against its declared states.
-
Reject Model Target dataset creation requests with
viewsentries which are not JSON objects, which are missingguideViewPositionorname, or which have wrongly typedguideViewPositionornamevalues. -
Model VWS request rate limits per endpoint with the new
CloudDatabase.request_rate_limitssetting, including the limits which
Vuforia documents asmock_vws.request_rate_limits.DOCUMENTED_REQUEST_RATE_LIMITS.
No request rate limit is applied by default. -
Change the
ProjectHasNoAPIAccessresult code toProjectHasNoApiAccess, matching Vuforia's result codes table. -
Add the reco counts report endpoint, and a download URL for the generated CSV report.
-
Preserve the recognition count fields, the reco rating and the reco threshold when dumping a
CloudDatabaseor anImageTargetto a dictionary and loading it back. -
Rate an image of a single color as
0rather than raising an uncaughtZeroDivisionError. -
Return a 404 response from the Flask and Docker mock for a request to a path which it does not serve, and for a request to a served path with a method which that path does not serve, as real Vuforia does, rather than raising an error.
-
Reject VuMark instance generation requests whose
instance_idis not a string with aBadRequestresult, as real Vuforia does, and move theinstance_idchecks into validators shared by both mock backends. -
Reject Model Target dataset creation requests with a body which cannot be decoded as UTF-8, rather than raising an error in the mock, and decode OAuth2 token request bodies leniently.