diff --git a/_includes/sidelist-programming/programming-js.html b/_includes/sidelist-programming/programming-js.html
index 71fc036..6f5b6ac 100644
--- a/_includes/sidelist-programming/programming-js.html
+++ b/_includes/sidelist-programming/programming-js.html
@@ -8,7 +8,7 @@
+
+
+ DynamsoftIdentityUtility
+
+
Enumerations
+ -
+ EnumCodeType
+
-
Arc
+ -
+ AuxiliaryRegionElement
+
-
BarcodeWidthRangeArray
- BarcodeZoneBarCountRangeArray
- BarcodeZoneMinDistanceToImageBorders
+ - BarcodeZoneWidthToHeightRatioRangeArray
- Code128Subset
- DataMatrixModuleIsotropic
- DataMatrixSizeOptions
diff --git a/llms.txt b/llms.txt
new file mode 100644
index 0000000..087e302
--- /dev/null
+++ b/llms.txt
@@ -0,0 +1,43 @@
+---
+layout: null
+sitemap: false
+---
+
+# Workflow Layer - Web Edition (v11.x)
+
+> Root Documentation: https://www.dynamsoft.com/barcode-reader/docs/llms.txt
+> This Layer URL: https://www.dynamsoft.com/capture-vision/docs/web/
+
+This documentation covers Dynamsoft Barcode Reader SDK v11.x. It defines the Workflow Layer APIs for the web (JavaScript) edition.
+
+**Language Edition:**
+- JavaScript: https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/
+
+## LLM Guidance
+
+- This layer contains the SDK entry point (CaptureVisionRouter) and shared infrastructure for the JavaScript/web edition. Users cannot perform barcode/text/document tasks using this layer alone - Feature Layer modules must also be loaded.
+- CaptureVisionRouter.capture() / CaptureVisionRouter.startCapturing() are the primary APIs; they require a template name (defined in the Core Concepts & Parameter Layer) to know what tasks to execute.
+- ImageSourceAdapter is the abstract interface for image input; CameraEnhancer (from a separate package) is a concrete implementation for camera-based scanning.
+- CapturedResultReceiver provides callbacks for final results; IntermediateResultReceiver provides in-process data access.
+- The JavaScript edition uses ES module imports; each module (CaptureVisionRouter, Core, License, Utility, DNN, etc.) is a separate npm package under the @dynamsoft scope.
+- User guides include per-module README files explaining package installation, WASM resource configuration, and framework integration.
+
+## Related Layers
+
+**Barcode Recognition Feature Layer APIs:**
+- Server Editions: https://www.dynamsoft.com/barcode-reader/docs/server/llms.txt
+- Web Edition: https://www.dynamsoft.com/barcode-reader/docs/web/llms.txt
+- Mobile Editions: https://www.dynamsoft.com/barcode-reader/docs/mobile/llms.txt
+
+**Core Concepts & Parameter Layer:**
+- Parameter & Architecture Reference: https://www.dynamsoft.com/capture-vision/docs/core/llms.txt
+- Barcode Knowledge Base: https://www.dynamsoft.com/barcode-reader/docs/core/llms.txt
+
+**Other Workflow Layer Language Editions:**
+- Server Editions: https://www.dynamsoft.com/capture-vision/docs/server/llms.txt
+- Mobile Editions: https://www.dynamsoft.com/capture-vision/docs/mobile/llms.txt
+
+## Pages
+
+{% for article in site.pages %}{% if article.title %}- [{{article.title}}](https://www.dynamsoft.com{{ article.url | relative_url }}): {{ article.description }}{% endif %}
+{% endfor %}
diff --git a/programming/javascript/api-reference/capture-vision-router/auxiliary.md b/programming/javascript/api-reference/capture-vision-router/auxiliary.md
index c8ab1a6..2931142 100644
--- a/programming/javascript/api-reference/capture-vision-router/auxiliary.md
+++ b/programming/javascript/api-reference/capture-vision-router/auxiliary.md
@@ -32,23 +32,23 @@ maxImageSideLength: number;
## appendDLModelBuffer
-Loads a specific data file containing recognition information. This file typically comprises a Convolutional Neural Networks (CNN) model.
+Appends deep learning models to the memory buffer.
**Syntax**
```typescript
-static appendDLModelBuffer(dataName: string, dataPath?: string) : Promise;
+static appendDLModelBuffer(dataName: string | Array, dataPath?: string) : Promise;
```
**Parameter**
-`dataName` : Specifies the name of the data.
+`dataName` : Specifies the names of the model files.
`dataPath`(Optional) : Specifies the path to find the data file. If not specified, the default path points to the package "dynamsoft-capture-vision-data" which has the same root path as the packag"dynamsoft-capture-vision-bundle".
**Return value**
-None.
+A promise that resolves when the operation has completed. It provides an object that describes the result.
**Code snippet**
@@ -64,7 +64,8 @@ CaptureVisionRouter.appendDLModelBuffer("sample-model.data")
**Remarks**
-This method was renamed from `appendModelBuffer()` in Dynamsoft Barcode Reader Bundle version 11.2.2000 and Dynamsoft Capture Vision Bundle version 3.2.2000.
+- This method was renamed from `appendModelBuffer()` in Dynamsoft Barcode Reader Bundle version 11.2.2000 and Dynamsoft Capture Vision Bundle version 3.2.2000.
+- This method support pass an `Array` in Dynamsoft Barcode Reader Bundle version 11.4.2000 and Dynamsoft Capture Vision Bundle version 3.4.2000.
## onDataLoadProgressChanged
diff --git a/programming/javascript/api-reference/capture-vision-router/interfaces/simplified-capture-vision-settings.md b/programming/javascript/api-reference/capture-vision-router/interfaces/simplified-capture-vision-settings.md
index 1c8542e..f6215aa 100644
--- a/programming/javascript/api-reference/capture-vision-router/interfaces/simplified-capture-vision-settings.md
+++ b/programming/javascript/api-reference/capture-vision-router/interfaces/simplified-capture-vision-settings.md
@@ -82,6 +82,10 @@ Specifies the shortest time span, in milliseconds, that must elapse between two
minImageCaptureInterval: number;
```
+**Remarks**
+
+The logic for `minImageCaptureInterval` = -1 is no longer available in CaptureVisionBundle version 3.4.2000.
+
## roi
Designates the region of interest (ROI) within an image, limiting the image processing activities exclusively to this specified area. It is of type `Quadrilateral`.
diff --git a/programming/javascript/api-reference/capture-vision-router/intermediate-result-manager.md b/programming/javascript/api-reference/capture-vision-router/intermediate-result-manager.md
index ec8d31b..071957f 100644
--- a/programming/javascript/api-reference/capture-vision-router/intermediate-result-manager.md
+++ b/programming/javascript/api-reference/capture-vision-router/intermediate-result-manager.md
@@ -16,6 +16,7 @@ The `IntermediateResultManager` class is responsible for handling intermediate r
| ----------------------------------------------- | ----------------------------------------------------------------------------------- |
| [addResultReceiver()](#addresultreceiver) | Adds a `IntermediateResultReceiver` object as the receiver of intermediate results. |
| [removeResultReceiver()](#removeresultreceiver) | Removes the specified `IntermediateResultReceiver` object. |
+| [removeAllResultReceivers()](#removeallresultreceivers) | Removes all `CapturedResultReceiver` objects. |
| [getOriginalImage()](#getoriginalimage) | Retrieves the original image data. |
## addResultReceiver
@@ -25,7 +26,7 @@ Adds a `IntermediateResultReceiver` object as the receiver of intermediate resul
**Syntax**
```typescript
-addResultReceiver(receiver: IntermediateResultReceiver): void;
+addResultReceiver(receiver: IntermediateResultReceiver): Promise;
```
**Parameters**
@@ -45,7 +46,7 @@ intermediateResultReceiver.onDecodedBarcodesReceived = (result, info) => {
/* Do something with the result */
};
const intermediateResultManager = router.getIntermediateResultManager();
-intermediateResultManager.addResultReceiver(intermediateResultReceiver);
+await intermediateResultManager.addResultReceiver(intermediateResultReceiver);
```
**See Also**
@@ -59,7 +60,7 @@ Removes the specified `IntermediateResultReceiver` object.
**Syntax**
```typescript
-removeResultReceiver(receiver: IntermediateResultReceiver): void;
+removeResultReceiver(receiver: IntermediateResultReceiver): Promise;
```
**Parameters**
@@ -79,15 +80,54 @@ intermediateResultReceiver.onDecodedBarcodesReceived = (result, info) => {
/* Do something with the result */
};
const intermediateResultManager = router.getIntermediateResultManager();
-intermediateResultManager.addResultReceiver(intermediateResultReceiver);
+await intermediateResultManager.addResultReceiver(intermediateResultReceiver);
// ...
-intermediateResultManager.removeResultReceiver(intermediateResultReceiver);
+await intermediateResultManager.removeResultReceiver(intermediateResultReceiver);
```
**See Also**
[IntermediateResultReceiver](../capture-vision-router/intermediate-result-receiver.md)
+## removeAllResultReceivers
+
+Removes all `CapturedResultReceiver` objects.
+
+**Syntax**
+
+```typescript
+removeAllResultReceivers(): Promise;
+```
+
+**Parameters**
+
+None.
+
+**Return Value**
+
+None.
+
+**Code snippet**
+
+```javascript
+router = await Dynamsoft.CVR.CaptureVisionRouter.createInstance();
+const receiver1 = new Dynamsoft.CVR.CapturedResultReceiver();
+const receiver2 = new Dynamsoft.CVR.CapturedResultReceiver();
+// ...
+await router.addResultReceiver(receiver1);
+await router.addResultReceiver(receiver2);
+// ...
+await router.removeAllResultReceivers();
+```
+
+**See also**
+
+[CapturedResultReceiver](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.html)
+
+**Remarks**
+
+New added in CaptureVisionBundle version 3.4.2000 & BarcodeReaderBundle version 11.4.2000.
+
### getOriginalImage
Retrieves the original image data.
diff --git a/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md b/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md
index a837ae6..bc3de68 100644
--- a/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md
+++ b/programming/javascript/api-reference/capture-vision-router/multiple-image-processing.md
@@ -17,8 +17,10 @@ breadcrumbText: CVR JavaScript CaptureVisionRouter
| [getInput()](#getinput) | Returns the image source object. |
| [addResultReceiver()](#addresultreceiver) | Adds a `CapturedResultReceiver` object as the receiver of captured results. |
| [removeResultReceiver()](#removeresultreceiver) | Removes the specified `CapturedResultReceiver` object. |
+| [removeAllResultReceivers()](#removeallresultreceivers) | Removes all `CapturedResultReceiver` objects. |
| [addResultFilter()](#addresultfilter) | Adds a `MultiFrameResultCrossFilter` object to filter non-essential results. |
| [removeResultFilter()](#removeresultfilter) | Removes the specified `MultiFrameResultCrossFilter` object. |
+| [removeAllResultFilters()](#removeallresultfilters) | Removes all `MultiFrameResultCrossFilter` objects. |
| [startCapturing()](#startcapturing) | Initiates a capturing process based on a specified template. |
| [stopCapturing()](#stopcapturing) | Stops the capturing process. |
| [switchCapturingTemplate()](#switchcapturingtemplate) | Switches the currently active capturing template during the image processing workflow. |
@@ -214,7 +216,7 @@ Adds a `CapturedResultReceiver` object as the receiver of captured results.
**Syntax**
```typescript
-addResultReceiver(receiver: CapturedResultReceiver): void;
+addResultReceiver(receiver: CapturedResultReceiver): Promise;
```
**Parameters**
@@ -233,13 +235,17 @@ const resultReceiver = new Dynamsoft.CVR.CapturedResultReceiver();
resultReceiver.onCapturedResultReceived = (result) => {
/* Do something with the result */
};
-router.addResultReceiver(resultReceiver);
+await router.addResultReceiver(resultReceiver);
```
**See also**
[CapturedResultReceiver](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.html)
+**Remarks**
+
+This method was updated to an asynchronous method in in CaptureVisionBundle version 3.4.2000 & BarcodeReaderBundle version 11.4.2000.
+
## removeResultReceiver
Removes the specified `CapturedResultReceiver` object.
@@ -247,7 +253,7 @@ Removes the specified `CapturedResultReceiver` object.
**Syntax**
```typescript
-removeResultReceiver(receiver: CapturedResultReceiver): void;
+removeResultReceiver(receiver: CapturedResultReceiver): Promise;
```
**Parameters**
@@ -266,15 +272,58 @@ const resultReceiver = new Dynamsoft.CVR.CapturedResultReceiver();
resultReceiver.onCapturedResultReceived = (result) => {
/* Do something with the result */
};
-router.addResultReceiver(resultReceiver);
+await router.addResultReceiver(resultReceiver);
//...
-router.removeResultReceiver(resultReceiver);
+await router.removeResultReceiver(resultReceiver);
+```
+
+**See also**
+
+[CapturedResultReceiver](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.html)
+
+**Remarks**
+
+This method was updated to an asynchronous method in in CaptureVisionBundle version 3.4.2000 & BarcodeReaderBundle version 11.4.2000.
+
+## removeAllResultReceivers
+
+Removes all `CapturedResultReceiver` objects.
+
+**Syntax**
+
+```typescript
+removeAllResultReceivers(): void;
+```
+
+**Parameters**
+
+None.
+
+**Return Value**
+
+None.
+
+**Code snippet**
+
+```javascript
+router = await Dynamsoft.CVR.CaptureVisionRouter.createInstance();
+const receiver1 = new Dynamsoft.CVR.CapturedResultReceiver();
+const receiver2 = new Dynamsoft.CVR.CapturedResultReceiver();
+// ...
+await router.addResultReceiver(receiver1);
+await router.addResultReceiver(receiver2);
+// ...
+router.removeAllResultReceivers();
```
**See also**
[CapturedResultReceiver](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/capture-vision-router/captured-result-receiver.html)
+**Remarks**
+
+New added in CaptureVisionBundle version 3.4.2000 & BarcodeReaderBundle version 11.4.2000.
+
## addResultFilter
Adds a `MultiFrameResultCrossFilter` object to filter non-essential results.
@@ -335,6 +384,44 @@ router.addResultFilter(filter);
router.removeResultFilter(filter);
```
+## removeAllResultFilters
+
+Removes all `MultiFrameResultCrossFilter` objects.
+
+**Syntax**
+
+```typescript
+removeAllResultFilters(): Promise;
+```
+
+**Parameters**
+
+None.
+
+**Return Value**
+
+A promise that resolves when the operation has successfully completed. It does not provide any value upon resolution.
+
+**Code snippet**
+
+```javascript
+filter1 = new Dynamsoft.Utility.MultiFrameResultCrossFilter();
+filter2 = new Dynamsoft.Utility.MultiFrameResultCrossFilter();
+router = await Dynamsoft.CVR.CaptureVisionRouter.createInstance();
+await router.addResultFilter(filter1);
+await router.addResultFilter(filter2);
+// ...
+await router.removeAllResultFilters();
+```
+
+**See also**
+
+[MultiFrameResultCrossFilter](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.html)
+
+**Remarks**
+
+New added in CaptureVisionBundle version 3.4.2000 & BarcodeReaderBundle version 11.4.2000.
+
## startCapturing
Initiates a capturing process based on a specified template. This process is repeated for each image fetched from the source.
diff --git a/programming/javascript/api-reference/core/enum-region-object-element-type.md b/programming/javascript/api-reference/core/enum-region-object-element-type.md
index 9075ea0..f3377e5 100644
--- a/programming/javascript/api-reference/core/enum-region-object-element-type.md
+++ b/programming/javascript/api-reference/core/enum-region-object-element-type.md
@@ -20,10 +20,7 @@ codeAutoHeight: true
>
```javascript
enum EnumRegionObjectElementType {
- /**
- * Corresponds to the `PredetectedRegionElement` subclass, representing areas within the image identified as potentially significant
- * for further analysis before detailed processing.
- */
+ /** Corresponds to the `PredetectedRegionElement` subclass, representing areas within the image identified as potentially significant for further analysis before detailed processing. */
ROET_PREDETECTED_REGION = 0,
/** Corresponds to the `LocalizedBarcodeElement` subclass, indicating areas where barcodes have been localized within the image.*/
ROET_LOCALIZED_BARCODE = 1,
@@ -37,7 +34,13 @@ enum EnumRegionObjectElementType {
ROET_DETECTED_QUAD = 5,
/** Corresponds to the `DeskewedImageElement` subclass, referring to images that have been deskewed. */
ROET_DESKEWED_IMAGE = 6,
- /** Corresponds to the `EnhancedImageElement` subclass, referring to images that have been enhanced. */
- ROET_ENHANCED_IMAGE = 7
+ /** Corresponds to the `SourceImageElement` subclass. */
+ ROET_SOURCE_IMAGE = 7,
+ /** Corresponds to the `TargetROIElement` subclass. */
+ ROET_TARGET_ROI = 8,
+ /** Corresponds to the `EnhancedImageElement` subclass, indicating images that have undergone enhancement for better clarity or detail, specifically in the context of enhanced image processing. */
+ ROET_ENHANCED_IMAGE = 9,
+ /** Corresponds to the `AuxiliaryRegionElement` subclass, representing auxiliary regions detected within the image. */
+ ROET_AUXILIARY_REGION = 10
}
```
\ No newline at end of file
diff --git a/programming/javascript/api-reference/core/intermediate-results/auxiliary-region-element.md b/programming/javascript/api-reference/core/intermediate-results/auxiliary-region-element.md
new file mode 100644
index 0000000..13a7f77
--- /dev/null
+++ b/programming/javascript/api-reference/core/intermediate-results/auxiliary-region-element.md
@@ -0,0 +1,46 @@
+---
+layout: default-layout
+title: Interface AuxiliaryRegionElement - Dynamsoft Capture Vision JS Edition API Reference
+description: The interface AuxiliaryRegionElement of Dynamsoft Capture Vision JS edition represents an auxiliary region element with a name and confidence level.
+keywords: Auxiliary region element
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+breadcrumbText: AuxiliaryRegionElement
+---
+
+# AuxiliaryRegionElement
+
+The `AuxiliaryRegionElement` interface represents an auxiliary region element detected within an image, such as a portrait zone or signature area. It extends `RegionObjectElement` with a name and confidence level.
+
+```typescript
+interface AuxiliaryRegionElement extends RegionObjectElement {
+ name: string;
+ confidence: number;
+}
+```
+
+| Property | Description |
+| --------------------------- | -------------------------------------------------------- |
+| [name](#name) | The name of the auxiliary region. |
+| [confidence](#confidence) | The confidence level of the auxiliary region detection. |
+
+## name
+
+The name identifying the type of this auxiliary region (e.g., `"PortraitZone"`, `"SignatureArea"`).
+
+```typescript
+name: string;
+```
+
+## confidence
+
+The confidence level of this auxiliary region detection, typically in the range [0, 100].
+
+```typescript
+confidence: number;
+```
+
+**See Also**
+
+* [RegionObjectElement](./region-object-element.html)
diff --git a/programming/javascript/api-reference/identity-utility/identity-processor.md b/programming/javascript/api-reference/identity-utility/identity-processor.md
new file mode 100644
index 0000000..f709188
--- /dev/null
+++ b/programming/javascript/api-reference/identity-utility/identity-processor.md
@@ -0,0 +1,48 @@
+---
+layout: default-layout
+title: Class IdentityProcessor - Dynamsoft Barcode Reader JS Edition API Reference
+description: This page shows the JS edition of the class IdentityProcessor in Dynamsoft Barcode Reader JS Edition.
+keywords: IdentityProcessor, identity document, portrait zone, api reference, javascript, js
+needAutoGenerateSidebar: true
+needGenerateH3Content: true
+noTitleIndex: true
+---
+
+# IdentityProcessor
+
+The `IdentityProcessor` class provides utility APIs for processing identity documents.
+
+| Name | Description |
+| ------------------------------------------------- | ----------------------------------------------------------------------- |
+| `static` [findPortraitZone()](#findportraitzone) | Finds the precise location of the portrait zone on an identity document. |
+
+## findPortraitZone
+
+Finds the precise location of the portrait zone on an identity document.
+
+```typescript
+static findPortraitZone(): Promise;
+```
+
+**Return Value**
+
+A promise that resolves with a `Quadrilateral` object defining the precise location of the portrait zone found in the image, or `null` if no portrait zone is detected.
+
+**See also**
+
+* [Quadrilateral]({{ site.dcvb_js_api }}core/basic-structures/quadrilateral.html)
+
+**Code snippet**
+
+```javascript
+const quad = await Dynamsoft.DBR.IdentityProcessor.findPortraitZone();
+if (quad) {
+ console.log("Portrait zone found:", quad);
+} else {
+ console.log("No portrait zone detected.");
+}
+```
+
+**Remarks**
+
+New added in CaptureVisionBundle version 3.4.2000.
\ No newline at end of file
diff --git a/programming/javascript/api-reference/identity-utility/identity-utility-module-class.md b/programming/javascript/api-reference/identity-utility/identity-utility-module-class.md
new file mode 100644
index 0000000..2e55a5f
--- /dev/null
+++ b/programming/javascript/api-reference/identity-utility/identity-utility-module-class.md
@@ -0,0 +1,40 @@
+---
+layout: default-layout
+title: Class IdentityUtilityModule - Dynamsoft Barcode Reader JS Edition API Reference
+description: This page introduces the IdentityUtilityModule class in Dynamsoft Barcode Reader JS Edition.
+keywords: IdentityUtilityModule, api reference, javascript, js
+needAutoGenerateSidebar: true
+needGenerateH3Content: true
+noTitleIndex: true
+---
+
+# IdentityUtilityModule Class
+
+This class defines common functionality in the Identity Utility module. At present, it has only one method.
+
+| Name | Description |
+| ------------------------------------ | ---------------------------------------------------- |
+| `static` [getVersion()](#getversion) | Returns the version of the Identity Utility module. |
+
+## getVersion
+
+Returns the version of the Identity Utility module.
+
+```typescript
+static getVersion(): string;
+```
+
+**Return Value**
+
+A string representing the version of the Identity Utility module.
+
+**Code snippet**
+
+```javascript
+const version = Dynamsoft.DBR.IdentityUtilityModule.getVersion();
+console.log(version);
+```
+
+**Remarks**
+
+New added in CaptureVisionBundle version 3.4.2000.
\ No newline at end of file
diff --git a/programming/javascript/api-reference/index.md b/programming/javascript/api-reference/index.md
index 13063b1..324dcf9 100644
--- a/programming/javascript/api-reference/index.md
+++ b/programming/javascript/api-reference/index.md
@@ -169,6 +169,7 @@ breadcrumbText: API Reference
### Enumerations
+* [EnumCodeType]({{ site.dcp_js_api }}enum-code-type.html)
* [EnumMappingStatus]({{ site.dcp_js_api }}enum-mapping-status.html)
* [EnumValidationStatus]({{ site.dcp_js_api }}enum-validation-status.html)
diff --git a/programming/javascript/api-reference/utility/image-io.md b/programming/javascript/api-reference/utility/image-io.md
index c285cf0..12a6d3e 100644
--- a/programming/javascript/api-reference/utility/image-io.md
+++ b/programming/javascript/api-reference/utility/image-io.md
@@ -48,12 +48,12 @@ A Promise that resolves with the saved File object.
This method reads an image from a file. The file format is automatically detected based on the file extension content.
```typescript
-readFromFile(file: File): Promise;
+readFromFile(file: Blob | string): Promise;
```
**Parameters**
-`file`: The file to read, as a `File` object.
+`file`: The file to read,as a `Blob` or a `string`.
**Return Value**
@@ -66,7 +66,7 @@ This method saves an image to memory. The desired file format is inferred from t
> Should the specified file format be omitted or unsupported, the data will default to being exported in PNG format.
```typescript
-saveToMemory(image: Blob, format: Core.EnumImageFileFormat) : Promise;
+saveToMemory(image: Blob, format: Core.EnumImageFileFormat): Promise;
```
**Parameters**
@@ -100,12 +100,12 @@ A Promise that resolves to the `DSImageData` object.
This method saves an image to a Base64-encoded string. The desired file format is inferred from the 'format' parameter. Should the specified file format be omitted or unsupported, the data will default to being exported in PNG format.
```typescript
-SaveToBase64String: (image: Blob, format: Core.EnumImageFileFormat) => Promise;
+SaveToBase64String(image: Blob | DSImageData, format: Core.EnumImageFileFormat): Promise;
```
**Parameters**
-`image`: The image to be saved, of type `Blob`.
+`image`: The image to be saved, of type `Blob`, `DSImageData`.
`format`: The desired image format.
@@ -118,7 +118,7 @@ A promise that resolves with a Base64-encoded string representing the image.
This method reads an image from a Base64-encoded string. The image format is automatically detected based on the content of the string.
```typescript
-ReadFromBase64String: (base64String: string) => Promise;
+ReadFromBase64String(base64String: string): Promise;
```
**Parameters**
diff --git a/programming/javascript/api-reference/utility/image-processor.md b/programming/javascript/api-reference/utility/image-processor.md
index 57b46d4..3754671 100644
--- a/programming/javascript/api-reference/utility/image-processor.md
+++ b/programming/javascript/api-reference/utility/image-processor.md
@@ -14,21 +14,21 @@ The `ImageProcessor` class provides APIs for processing images.
| Name | Description |
| ------------------------------------------------- | ---------------------------------------------------------------------------------- |
-| [cropImage()](#cropimage) | Crops an image using a rectangle. |
-| [cropAndDeskewImage()](#cropanddeskewimage) | Crops and deskew an image using a quadrilateral. |
-| [adjustBrightness()](#adjustbrightness) | Adjusts the brightness of the image. |
-| [adjustContrast()](#adjustcontrast) | Adjusts the contrast of the image. |
-| [filterImage()](#filterimage) | Applies a specified image filter to an input image. |
-| [convertToGray()](#converttogray) | Converts a colour image to grayscale. |
-| [convertToBinaryGlobal()](#converttobinaryglobal) | Converts a grayscale image to a binary image using a global threshold. |
-| [convertToBinaryLocal()](#converttobinarylocal) | Converts a grayscale image to a binary image using local (adaptive) binarization. |
+| `static` [cropImage()](#cropimage) | Crops an image using a rectangle. |
+| `static` [cropAndDeskewImage()](#cropanddeskewimage) | Crops and deskew an image using a quadrilateral. |
+| `static` [adjustBrightness()](#adjustbrightness) | Adjusts the brightness of the image. |
+| `static` [adjustContrast()](#adjustcontrast) | Adjusts the contrast of the image. |
+| `static` [filterImage()](#filterimage) | Applies a specified image filter to an input image. |
+| `static` [convertToGray()](#converttogray) | Converts a colour image to grayscale. |
+| `static` [convertToBinaryGlobal()](#converttobinaryglobal) | Converts a grayscale image to a binary image using a global threshold. |
+| `static` [convertToBinaryLocal()](#converttobinarylocal) | Converts a grayscale image to a binary image using local (adaptive) binarization. |
## cropImage
Crops an image using a rectangle.
```typescript
-cropImage(image: Blob, roi: DSRect): Promise;
+cropImage(image: Blob | DSImageData, roi: DSRect): Promise;
```
**Parameters**
@@ -46,7 +46,7 @@ A promise that resolves with the cropped image data.
Crops and deskews an image using a quadrilateral.
```typescript
-cropAndDeskewImage:(image: Blob, roi:Core.Quadrilateral) => Promise;
+cropAndDeskewImage(image: Blob | DSImageData, roi: Quadrilateral, dstWidth: number = 0, dstHeight: number = 0, padding: number = 0): Promise;
```
**Parameters**
@@ -55,6 +55,12 @@ cropAndDeskewImage:(image: Blob, roi:Core.Quadrilateral) => Promise;
+adjustBrightness(image: Blob | DSImageData, brightness: number): Promise;
```
**Parameters**
@@ -82,7 +88,7 @@ A promise that resolves with the adjusted image data.
Adjusts the contrast of the image.
```typescript
-adjustContrast(image: Blob, contrast: number): Promise;
+adjustContrast(image: Blob | DSImageData, contrast: number): Promise;
```
**Parameters**
@@ -100,7 +106,7 @@ A promise that resolves with the adjusted image data.
Applies a specified image filter to an input image.
```typescript
-filterImage(image: Blob, filterType: EnumFilterType): Promise;
+filterImage(image: Blob | DSImageData, filterType: EnumFilterType): Promise;
```
**Parameters**
@@ -118,7 +124,7 @@ A promise that resolves with the filtered image data.
Converts a colour image to grayscale.
```typescript
-convertToGray(image: Blob, R?: number, G?: number, B?: number): Promise;
+convertToGray(image: Blob | DSImageData, R?: number, G?: number, B?: number): Promise;
```
**Parameters**
@@ -137,10 +143,10 @@ A promise that resolves with the grayscale image data.
## convertToBinaryGlobal
-Converts a grayscale image to a binary image using a global threshold.
+Converts an image to a binary image using a global threshold.
```typescript
-convertToBinaryGlobal(image: Blob, threshold?: number, invert?: boolean): Promise;
+convertToBinaryGlobal(image: Blob | DSImageData, threshold?: number, invert?: boolean): Promise;
```
**Parameters**
@@ -157,10 +163,10 @@ A promise that resolves with the binary image data.
## convertToBinaryLocal
-Converts a grayscale image to a binary image using local (adaptive) binarization.
+Converts an image to a binary image using local (adaptive) binarization.
```typescript
-convertToBinaryLocal(image: Blob, blockSize?: number, compensation?: number, invert?: boolean): Promise;
+convertToBinaryLocal(image: Blob | DSImageData, blockSize?: number, compensation?: number, invert?: boolean): Promise;
```
**Parameters**
@@ -169,10 +175,14 @@ convertToBinaryLocal(image: Blob, blockSize?: number, compensation?: number, inv
`blockSize`: [blockSize=0] Size of the block for local binarization.
-`compensation`: [compensation=0] Adjustment value to modify the threshold.
+`compensation`: [compensation=10] Adjustment value to modify the threshold.
`invert`: [invert=false] Whether to invert the binary image.
**Return Value**
-A promise that resolves with the binary image data.
\ No newline at end of file
+A promise that resolves with the binary image data.
+
+**Remarks**
+
+Updated default compensation value from0 to 10 in CaptureVisionBundle version 3.4.2000 & BarcodeReaderBundle version 11.4.2000.
\ No newline at end of file
diff --git a/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md b/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md
index bc399b7..6914c78 100644
--- a/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md
+++ b/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md
@@ -12,12 +12,17 @@ noTitleIndex: true
The `MultiFrameResultCrossFilter` class offers a set of API functions designed for managing and filtering results from multiple image frames, typically used in consecutive frames of a streaming video.
+> [!NOTE]
+> After setting parameters using any of the APIs below, you must call [`addResultFilter()`](../capture-vision-router/settings.md#addresultfilter) for the changes to take effect.
+
| Name | Description |
| ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| [enableLatestOverlapping()](#enablelatestoverlapping) | Enables or disables the to-the-latest overlapping feature of one or multiple specific result item types. This feature can increase the read-rate performance when decoding multiple barcodes under the video streaming. |
| [isLatestOverlappingEnabled()](#islatestoverlappingenabled) | Checks if to-the-latest overlapping is active for a given result item type. |
| [enableResultCrossVerification()](#enableresultcrossverification) | Enables or disables the verification of specific result item types. |
| [isResultCrossVerificationEnabled()](#isresultcrossverificationenabled) | Checks if verification is active for a given result item type. |
+| [setResultCrossVerificationCriteria()](#setresultcrossverificationcriteria) | Sets the cross-verification criteria (frame window and minimum consistent frames) for one or more result item types. |
+| [getResultCrossVerificationCriteria()](#getresultcrossverificationcriteria) | Retrieves the cross-verification criteria for a specified result item type. |
| [enableResultDeduplication()](#enableresultdeduplication) | Enables or disables the deduplication process for specific result item types. |
| [isResultDeduplicationEnabled()](#isresultdeduplicationenabled) | Checks if deduplication is active for a given result item type. |
| [setDuplicateForgetTime()](#setduplicateforgettime) | Sets the interval during which duplicates are disregarded for specific result item types. |
@@ -115,6 +120,61 @@ Boolean indicating the status of verification for the specified type.
[EnumCapturedResultItemType](https://www.dynamsoft.com/capture-vision/docs/core/enums/core/captured-result-item-type.html?lang=js)
+### setResultCrossVerificationCriteria
+
+Sets the cross-verification criteria for one or more result item types. This configuration determines how many frames are considered and the minimum number of consistent frames required before a result is accepted.
+
+```typescript
+setResultCrossVerificationCriteria(resultItemTypes: Core.EnumCapturedResultItemType | "barcode" | "text_line" | "detected_quad" | "deskewed_image", frameWindow: number, minConsistentFrames: number): void;
+```
+
+**Parameters**
+
+`resultItemTypes`: Specifies one or multiple result item types. It can be defined using `EnumCapturedResultItemType` or a string. Valid string values are `"barcode"`, `"text_line"`, `"detected_quad"`, and `"deskewed_image"`.
+
+`frameWindow`: The number of consecutive frames considered for verification.
+
+`minConsistentFrames`: The minimum number of consistent frames required for a result to be considered valid.
+
+**Return Value**
+
+None.
+
+**See Also**
+
+[EnumCapturedResultItemType](https://www.dynamsoft.com/capture-vision/docs/core/enums/core/captured-result-item-type.html?lang=js)
+
+**Remarks**
+
+Added in CaptureVisionBundle version 3.4.2000 & BarcodeReaderBundle version 11.4.2000.
+
+### getResultCrossVerificationCriteria
+
+Retrieves the cross-verification criteria for a specified result item type, including the configured frame window and minimum consistency requirement.
+
+```typescript
+getResultCrossVerificationCriteria(resultItemType: Core.EnumCapturedResultItemType | "barcode" | "text_line" | "detected_quad" | "deskewed_image"): { frameWindow: number; minConsistentFrames: number };
+```
+
+**Parameters**
+
+`resultItemType`: Specifies the result item type in question. It can be defined using `EnumCapturedResultItemType` or a string. Valid string values are `"barcode"`, `"text_line"`, `"detected_quad"`, and `"deskewed_image"`.
+
+**Return Value**
+
+An object containing:
+
+- `frameWindow`: `number` — the number of consecutive frames considered for verification.
+- `minConsistentFrames`: `number` — the minimum number of consistent frames required for a result to be accepted.
+
+**See Also**
+
+[EnumCapturedResultItemType](https://www.dynamsoft.com/capture-vision/docs/core/enums/core/captured-result-item-type.html?lang=js)
+
+**Remarks**
+
+Added in CaptureVisionBundle version 3.4.2000 & BarcodeReaderBundle version 11.4.2000.
+
### enableResultDeduplication
Enables or disables the deduplication process for specific result item types.
diff --git a/programming/javascript/faq/app-switching-issue.md b/programming/javascript/faq/app-switching-issue.md
deleted file mode 100644
index 5a4bd6f..0000000
--- a/programming/javascript/faq/app-switching-issue.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-layout: default-layout
-title: How can I prevent my browser from freezing or showing a grey screen when I switch between apps and return to it?
-keywords: Dynamsoft Barcode Reader, FAQ, tech basic, frozen screen, grey screen
-description: How can I prevent my browser from freezing or showing a grey screen when I switch between apps and return to it?
-needAutoGenerateSidebar: false
----
-
-# How can I prevent my browser from freezing or showing a grey screen when I switch between apps and return to it?
-
-[<< Back to FAQ index](index.md)
-
-When using the camerenhancer sdk, you may encounter an issue where switching to another app and then returning to the browser results in a frozen or grey screen. To address this, utilize a workaround in the form of the following code snippet:
-
-```javascript
-window.addEventListener("visibilitychange", () => {
- if (document.visibilityState === "hidden") {
- if (router && cameraEnhancer) {
- router.stopCapturing().then(() => {
- cameraEnhancer.close();
- });
- }
- } else if (document.visibilityState === "visible") {
- if (router && cameraEnhancer) {
- cameraEnhancer.open().then(status => {
- router.startCapturing("DetectDocumentBoundaries_Default");
- });
- }
- }
-});
-```
-
-This code essentially closes the camera and releases associated resources when the user exits the browser. It then reopens the camera when the user returns to the browser, ensuring a smoother experience.
\ No newline at end of file
diff --git a/programming/javascript/faq/index.md b/programming/javascript/faq/index.md
deleted file mode 100644
index 558793a..0000000
--- a/programming/javascript/faq/index.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: default-layout
-title: JavaScript - Dynamsoft Capture Vision FAQ
-keywords: faq, javascript, dcv
-description: Dynamsoft Capture Vision FAQ - JavaScript
-needAutoGenerateSidebar: false
-permalink: /faq/index.html
-
----
-
-# FAQ - JavaScript
-
-1. [How can I prevent my browser from freezing or showing a grey screen when I switch between apps and return to it?](app-switching-issue.html)
-
-2. [Why am I encountering errors like "r.taskSet.intermediateResultUnits is not iterable" when using frameworks like React or Angular with Dynamsoft packages?](version-mismatch.html)
diff --git a/programming/javascript/faq/version-mismatch.md b/programming/javascript/faq/version-mismatch.md
deleted file mode 100644
index a6b2097..0000000
--- a/programming/javascript/faq/version-mismatch.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-layout: default-layout
-title: Why am I encountering errors like "r.taskSet.intermediateResultUnits is not iterable" when using frameworks like React or Angular with Dynamsoft packages?
-keywords: Dynamsoft Capture Vision, FAQ, version, mismatch, taskset
-description: Why am I encountering errors like "r.taskSet.intermediateResultUnits is not iterable" when using frameworks like React or Angular with Dynamsoft packages?
-needAutoGenerateSidebar: false
----
-
-# Why am I encountering errors like "r.taskSet.intermediateResultUnits is not iterable" when using frameworks like React or Angular with Dynamsoft packages?
-
-[<< Back to FAQ index](index.md)
-
-Topic: Resolving Version Mismatch Issues in Dynamsoft Packages
-
-Resolution:
-
-When using a framework like React or Angular with Dynamsoft packages, it's crucial to ensure that the version number of each Dynamsoft package listed in the `package.json` file matches the version number defined in the `engineResourcePaths` generally found defined in the cvr.ts file if you have followed the samples for developement.
-
-In the `engineResourcePaths` configuration, make sure to include the correct version numbers for each Dynamsoft package mentioned in `package.json`. Here's an example of how to define the engineResourcePaths with the correct version numbers:
-
-```javascript
-Dynamsoft.Core.CoreModule.engineResourcePaths = {
- std: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-std@/dist/",
- dip: "https://cdn.jsdelivr.net/npm/dynamsoft-image-processing@/dist/",
- core: "https://cdn.jsdelivr.net/npm/dynamsoft-core@/dist/",
- license: "https://cdn.jsdelivr.net/npm/dynamsoft-license@/dist/",
- cvr: "https://cdn.jsdelivr.net/npm/dynamsoft-capture-vision-router@/dist/",
- dbr: "https://cdn.jsdelivr.net/npm/dynamsoft-barcode-reader@/dist/",
- dce: "https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@/dist/"
-};
-```
-Replace , , , , , , and with the appropriate version numbers corresponding to each Dynamsoft package.
-
-```javascript
-//some lines from package.json
-"dependencies": {
-...
- "dynamsoft-barcode-reader": "",
- "dynamsoft-camera-enhancer": "",
- "dynamsoft-capture-vision-router": "",
- "dynamsoft-core": "",
- "dynamsoft-license": "",
- "dynamsoft-utility": "",
-}
-```
-
-By following these steps and maintaining consistency in version numbers between `package.json` and `engineResourcePaths`, you can mitigate version mismatch errors and ensure the proper functioning of Dynamsoft packages within your framework-based application.
\ No newline at end of file
diff --git a/programming/javascript/index.md b/programming/javascript/index.md
index 6d1bd44..99702fa 100644
--- a/programming/javascript/index.md
+++ b/programming/javascript/index.md
@@ -33,7 +33,7 @@ Implementing DCV, regardless of platform or language, involves three stages: inp
The best way to begin with Dynamsoft Capture Vision JavaScript Edition is to follow the User Guide for specific use cases.
-- [User Guide for Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/barcode-scanner.html){:target="_blank"}
+- [User Guide for Dynamsoft Barcode Reader](https://www.dynamsoft.com/barcode-reader/docs/web/programming/javascript/user-guide/index.html){:target="_blank"}
- [User Guide for MRZ Scanner](https://www.dynamsoft.com/mrz-scanner/docs/web/guides/mrz-scanner.html){:target="_blank"}
diff --git a/programming/javascript/release-notes/dcvb-3.md b/programming/javascript/release-notes/dcvb-3.md
index ad6b82e..9efb646 100644
--- a/programming/javascript/release-notes/dcvb-3.md
+++ b/programming/javascript/release-notes/dcvb-3.md
@@ -9,6 +9,87 @@ noTitleIndex: true
# Release Notes - DynamsoftCaptureVisionBundle
+## 3.4.2000 (00/00/2026)
+
+### Highlights
+
+#### AI-Powered Barcode Detection and Decoding
+
+- **PDF417 Localization Model** – Introduces the [`PDF417Localization`]({{ site.dcvb_parameters }}barcode-reader-task-settings/localization-modes.html#modelnamearray) neural network model for improved detection of PDF417 barcodes, especially under challenging conditions.
+
+- **Code39/ITF Decoding Model** – Adds the [`Code39ITFDecoder`]({{ site.dcvb_parameters }}barcode-reader-task-settings/deblur-modes.html#modelnamearray) model for enhanced decoding of Code 39 and ITF barcodes under blurred or low-resolution conditions.
+
+- **Deblur Models for 2D Barcodes** – Adds the [`DataMatrixQRCodeDeblur`]({{ site.dcvb_parameters }}barcode-reader-task-settings/deblur-modes.html#modelnamearray) and [`PDF417Deblur`]({{ site.dcvb_parameters }}barcode-reader-task-settings/deblur-modes.html#modelnamearray) models to provide more effective recovery from motion and focus blur for DataMatrix, QR Code, and PDF417 barcodes.
+
+#### ECI (Extended Channel Interpretation) Support
+
+- **ECI Information Return** – Adds support for retrieving Extended Channel Interpretation (ECI) data from barcodes. The new [`ECISegment`]({{ site.dbr_js_api }}eci-segment.html) interface, along with the `eciSegments` property in the [`BarcodeResultItem`]({{ site.dbr_js_api }}barcode-result-item.html#ecisegments) and [`DecodedBarcodeElement`]({{ site.dbr_js_api }}decoded-barcode-element.html#ecisegments) interfaces, enables access to character encoding information embedded in barcodes.
+
+- **ECI-Based Text Interpretation** – Adds support for interpreting ECI segments during barcode decoding, improving compatibility with international character sets.
+
+#### Performance Improvements
+
+- **On-Demand Model Loading** – Implements lazy loading for AI models, reducing initialization time by loading models only when first needed.
+
+- **Smart Model Selection** – Models are now loaded based on configured barcode formats, minimizing memory usage by excluding unused models.
+
+- **Improved Confidence Scoring** – Enhances confidence score calculation for results from neural network models, providing more accurate quality indicators.
+
+- **DPM Barcode Optimization** – Improves recognition rate for Direct Part Marking (DPM) barcodes commonly used in industrial and manufacturing environments.
+
+#### Identity Document Processing
+
+- **Enhanced Passport Processing** – Improves document edge detection accuracy for passport documents through optimized processing workflows.
+
+- **Portrait Zone Detection** – The `MRZLocalization` model now supports detecting portrait zone on identity documents, enabling automatic extraction of photo regions.
+
+- **New DynamsoftIdentityUtility Module** – Introduces a dedicated module for identity document processing, including the [`IdentityProcessor`]({{ site.dcvb_js_api }}identity-utility/identity-processor.html) class with [`FindPortraitZone()`]({{ site.dcvb_js_api }}identity-utility/identity-processor.html#findportraitzone) method for precise portrait positioning from passports and ID cards.
+
+### New
+
+- Added [`BarcodeZoneWidthToHeightRatioRangeArray`]({{ site.dcvb_parameters }}barcode-format-specification/barcode-zone-width-to-height-ratio-range-array.html) parameter for filtering barcodes based on aspect ratio constraints.
+
+- Added [`SetResultCrossVerificationCriteria()`]({{ site.dcvb_js_api }}utility/multi-frame-result-cross-filter.html#setresultcrossverificationcriteria) and [`GetResultCrossVerificationCriteria()`]({{ site.dcvb_js_api }}utility/multi-frame-result-cross-filter.html#getresultcrossverificationcriteria) methods to `MultiFrameResultCrossFilter` for configurable multi-frame result verification.
+
+- Added [`AuxiliaryRegionElement`]({{ site.dcvb_js_api }}core/intermediate-results/auxiliary-region-element.html) class for representing additional region information detected during processing (e.g., MRZ (Machine Readable Zone), portrait zones).
+
+- Added `ROET_AUXILIARY_REGION` to [`RegionObjectElementType`]({{ site.dcvb_js_api }}core/enum-region-object-element-type.html) enumeration for the new `AuxiliaryRegionElement` class.
+
+- Added auxiliary region element to `LocalizedTextLinesUnit` interface: [`auxiliaryRegionElements()`]({{ site.dlr_js_api }}localized-text-lines-unit.html#auxiliaryregionelements).
+
+### Changed
+
+- Barcode text encoding fallback changed from UTF-8 to ISO-8859-1 when no ECI information is present in the barcode.
+
+- All methods under the [`ImageProcessor`]({{ site.dcvb_js_api }}utility/image-processor.html) class now additionally accept [`DSImageData`]({{ site.dcvb_js_api }}core/basic-structures/ds-image-data.html) as an image input type.
+
+- All methods under the [`ImageIO`]({{ site.dcvb_js_api }}utility/image-io.html), [`ImageProcessor`]({{ site.dcvb_js_api }}utility/image-processor.html), and [`ImageDrawer`]({{ site.dcvb_js_api }}utility/image-drawer.html) classes have been changed to static methods.
+
+- [`CodeParserModule.loadSpec()`]({{ site.dcp_js_api }}code-parser-module-class.html#loadspec) now returns a `Promise` instead of `void`.
+
+- Updated default value of `compensation` parameter in [`convertToBinaryLocal()`]({{ site.dcvb_js_api }}utility/image-processor.html#converttobinarylocal) from 0 to 10.
+
+- [`convertToBinaryGlobal()`]({{ site.dcvb_js_api }}utility/image-processor.html#converttobinaryglobal) and [`convertToBinaryLocal()`]({{ site.dcvb_js_api }}utility/image-processor.html#converttobinarylocal) of `ImageProcessor` class now support color, binary and grayscale images as input.
+
+- Parser resource files (.json) have been consolidated into encrypted .data files for improved security and simplified distribution:
+ - `AADHAAR.data`, `AAMVA_DL_ID.data`, `GS1_AI.data`, `MRTD.data`, `SOUTH_AFRICA_DL.data`, `VIN.data`
+
+- `CameraEnhancer.open()` now returns `Promise` when operating in `singleFrameMode`.
+
+### Removed
+
+- Removed `DataMatrixModuleIsotropic` parameter – use [`BarcodeZoneWidthToHeightRatioRangeArray`]({{ site.dcvb_parameters }}barcode-format-specification/barcode-zone-width-to-height-ratio-range-array.html) instead.
+
+- Removed `MinRatioOfBarcodeZoneWidthToHeight` parameter – use [`BarcodeZoneWidthToHeightRatioRangeArray`]({{ site.dcvb_parameters }}barcode-format-specification/barcode-zone-width-to-height-ratio-range-array.html) instead.
+
+### Fixed
+
+- Fixed incorrect coordinate in barcode result when using neural network models with a specified region.
+
+- Fixed crash and hang issues that could occur in certain scenarios.
+
+- Fixed various minor bugs and improved overall stability.
+
## 3.2.5000 (12/16/2025)
This release includes security maintenance updates to ensure continued protection of the product.
diff --git a/programming/javascript/release-notes/index.md b/programming/javascript/release-notes/index.md
index 941b6cb..0ffa5be 100644
--- a/programming/javascript/release-notes/index.md
+++ b/programming/javascript/release-notes/index.md
@@ -9,6 +9,7 @@ noTitleIndex: true
# Release Notes - Dynamsoft Capture Vision Bundle JavaScript
+- [3.4.2000 (04/21/2026)](dcvb-3.md#342000-04212026)
- [3.2.5000 (12/16/2025)](dcvb-3.md#325000-12162025)
- [3.2.4000 (11/11/2025)](dcvb-3.md#324000-11112025)
- [3.2.2000 (11/04/2025)](dcvb-3.md#322000-11042025)