> ## Documentation Index
> Fetch the complete documentation index at: https://webviewer-docs.mupdf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CHANGELOG

## 0.15.0

### New Features

* Extended the `position` parameter of Frontend API `viewer.addButton()` to support right toolbar placement (`TOOLBAR.RIGHT_SECTION.FIRST`, `TOOLBAR.RIGHT_SECTION.LAST`).

### Improvements

* Added language normalization and an English fallback when an unsupported language code is configured.

## 0.14.0

### Improvements

* Improved parameter validation for redaction-related APIs to make validation rules clearer.
* Improved page rendering for a sharper display.

### Bug Fixes

* Fixed an issue where `redaction.get()` always extracted text as an empty string (`''`) when the `textData` parameter was provided.

## 0.13.3

### Improvements

* Added an interface to set the author of annotations on viewer load.
  * `initMuPDFWebViewer(/* ... */, { author: '-' });`

### Bug Fixes

* Fixed an issue where clicking a page could trigger the `textSelectionChange` event unexpectedly.
  * Now triggers only when an existing text selection is cleared by a click.
* Fixed an issue where replies could not be added to already-saved annotations.
* Fixed an issue where adding a text box without `strokeWidth` via the Frontend API caused text to overflow outside the border.

## 0.13.2

### Bug Fixes

Fixed an issue where the `text.locateSource()` API did not work.

## 0.13.1

<Note>
  Do not use - please use version 0.13.2 or later.
</Note>

### Bug Fixes

* Fixed an issue where the viewer failed to work due to missing library files.

## 0.13.0

<Note>
  Do not use - please use version 0.13.2 or later.
</Note>

### New Features

* Added `text.locateSource()` API to locate the source of text cited by the LLM in a document.
* Added title support for custom buttons created via the Frontend API.
  * `viewer.addButton()` - `title`

### Improvements

* Improved Frontend API `unhighlight()` to support the `mode: 'all'` option.
* Improved highlight color visibility when selecting search results in the Redaction panel.
* Improved the Frontend API to ensure calls made before a document is opened are still executed.

### Bug Fixes

* Fixed an issue where an incorrect error message was shown when an invalid `rect` value was passed via the Frontend API.
* Fixed an issue where highlights were rendered in the wrong position when using the `keywords` property of `viewer.highlight()`.
* Fixed an issue where calling `text.getSelected()` after selecting text across multiple paragraphs caused an error.

### ETC

* Applied CSP (Content Security Policy) and removed internal inline scripts so deployments no longer need `unsafe-inline` in `script-src`.

## 0.12.1

### Bug Fixes

* Fixed an issue where the viewer failed to initialize when `libraryPath` was not specified.
  * Expected behavior: loads assets from the CDN

## 0.12.0

### New Features

* Added API support to hide the `Redact` button in the top toolbar.
  * `viewer.setViewVisibility()` - `refs.TOOLBAR_REDACTION`
* Added API support to hide `Sticky Note` button in the top Annotate toolbar.
  * `viewer.setViewVisibility()` - `refs.ANNOTATION_TEXT_POPUP`

### Improvements

* Improved Thumbnails panel UI responsiveness based on panel size.
* Clarified the loading state when no document is loaded, and added messages for timeouts and end-of-document to improve UX.

### Bug Fixes

* Fixed an issue where the selected redaction in the Redaction panel was deselected when creating a new redaction.

## 0.11.0

### Improvements

* Disabled license verification on localhost. (`127.0.0.1`, `localhost`, `*.test`)
  * Eliminates unnecessary network I/O during local development to reduce startup latency and improve developer experience.
* Improved logging and error handling during viewer initialization.

## 0.10.0

### Breaking Changes

* Changed to load assets from the CDN server when calling `initMuPDFWebViewer()` without `libraryPath`.

### New Features

* Added an API to configure the text selection menu.
* Implemented the ability to hide the Redaction panel's Apply button via Frontend API.
  * `viewer.setViewVisibility()` - `refs.SIDE_VIEW_REDACTION_APPLY`
* Added `removeEventListener()` to remove event listeners.

### Improvements

* Improved the document page outline with shadows.
* Improved panel animation behavior in mobile responsive layouts.
  * Left panel slides from left to right.
  * Right panel slides from right to left.

### Bug Fixes

* Fixed an issue where specifying an unsaved annotation with Frontend API `viewer.scrollTo()` duplicating the annotation.
* Fixed a memory issue causing `document.export()` to fail when exporting large documents.
* Fixed an issue where replying to an annotation created a text annotation.
* Fixed a calculation error that occurred when the page range and scroll range did not overlap.
* Fixed issues where annotation opacity was applied twice.
  * Fixed an issue where opacity was applied twice to the AP (appearance) of text markup annotations.
  * Fixed an issue where opacity was applied twice when selecting an annotation.
  * Fixed an issue where editing a text markup annotation with opacity less than 1 applied opacity twice.

### ETC

* Added a `title` attribute to the iframe wrapping the viewer to improve accessibility.
* Removed a `name` attribute to the iframe wrapping the viewer.

## 0.9.1

### ETC

* Added a `name` attribute to the iframe wrapping the viewer to improve accessibility.

## 0.9.0

### New Features

* Added a `capture.selectAndExport()` API for region selection and export.

### Bug Fixes

* Fixed an issue where [`text.search()`](/api-reference/text/index#search) `results` > `words` > `rects` were returned using the previous coordinate system.

### ETC

* Removed duplicated, unnecessary font files from the library.

## 0.8.1

### Improvements

* Improved error messages when rect parameter is invalid during API usage.

### Bug Fixes

* Fixed issue where memo annotations could not be controlled through Frontend API.
* Fixed issue where redaction did not work when drawing, saving, or applying (occurred since v0.8.0).
* Fixed issue where annotation creation via API failed when rect was missing (rect is optional for highlight annotations, etc.).
* Fixed issue where link annotations were not being extracted.

## 0.8.0

### Breaking Changes

* Coordinate system in API parameters and return values have been changed from [user space to device space](/coordinate-system/).
  * Origin coordinates have been moved from bottom-left to top-left.
  * Origin is now unaffected by rotation values.
  * Affected APIs and events:
    * `viewer.scrollTo()`
    * `viewer.highlight()`
    * `text.search()`
    * `annotation.get()`
    * `annotation.add()`
    * `annotation.set()`
    * `redaction.get()`
    * `redaction.set()`
    * `redaction.add()`
    * `annotationCreate`
    * `annotationModify`
    * `annotationRemove`
    * `redactionCreate`
    * `redactionModify`
    * `redactionRemove`
    * `annotationSelectionChange`
* Removed the rect property from `text.getSelected()` API.
* Removed `customContextMenuExecute` event type.

### New Features

* Added `viewer.defineRightClickAction()` API for defining a right-click action on the content area.
* Added `rects`, `pageIndex` property to `text.getSelected()` API.
  * `rects` property returns an array of `TRect` that contains the selected text.
  * `pageIndex` property returns the page index of the selected text.

### Improvements

* Updated to MuPDF.js v1.26.5.

### Bug Fixes

* Fixed overlapping text issue when viewing documents containing CJK fonts.
* Fixed an issue where the `withoutLoader` parameter was not applied when opening a document using `document.open()`.
* Fixed an issue where `annotation.get()` did not work when `pageIndex` was not specified.
* Fixed an issue where two lines were extracted as one line.

## 0.7.2

### Bug Fixes

* Fixed pages wrapper removal from PageInfo interface.
* Fixed issue with not being able to select text with height 0.

## 0.7.1

### Bug Fixes

* Fixed an issue where the viewer works in viewing-mode when the `standalone` parameter was set to `true`. (Issue introduced in v0.6.0)

## 0.7.0

### New Features

* Enhanced `text.getSelected()` API to include `rect` property in return value.
  * Now returns both selected text content and DOMRect positioning information.
* Added `viewer.openContextMenu()` API for programmatically opening context menus.
* Added `TEXT_SELECTION_CHANGE` event type to the event system.
  * Allows listening for text selection changes within the document viewer.

## 0.6.0

### New Features

* Added free license support for viewing-only functionality with feature restrictions.
  * Free licenses are available starting from v0.6.0 with limited features.
  * Free license keys are not compatible with versions below 0.6.0.
* Added `REDACTION` and `REDACTION_SEARCHING` panel types to `viewer.togglePanel()` API.
* Added comprehensive redaction CRUD API operations:
  * `redaction.get()` - Retrieve redactions.
  * `redaction.add()` - Add new redactions.
  * `redaction.set()` - Update existing redactions.
  * `redaction.remove()` - Remove redactions.
  * `redaction.apply()` - Apply redactions.
* Added `annotation.set()` method for updating existing annotations.

## 0.5.0

### New Features

* Added `text.getSelected()` to get selected text.
* Added the ability to apply current properties as default in the annotation properties panel.
* Enhanced `addEventListener()` functionality with comprehensive event system.
  * Added `EventType` enum with support for 25+ event types.
  * Added `EventDataMap` interface for type-safe event data handling.
  * Events now include scale changes, annotation operations, user interactions, and more.
* Added the following redaction-related features:
  * Display borders for completed redaction areas.
  * Show overlay text.
  * Full redaction preview.

### Improvements

* Improved support for loading multiple viewer instances.
* Optimized static image loading using NgOptimizedImage.
* Standardized feature terminology to the official term "redaction".
  * Changed "redacting" to "redaction" throughout the interface.

### Bug Fixes

* Fixed typos and removed unnecessary code throughout the project.

## 0.4.0

### New Features

* Added embedded key validation.
  * If `standalone` parameter is set to `true`, the viewer will validate the key on the client side.
* Added `viewer.defineAnnotSelectMenu()` to customize annotation selection menus.
* Added `document.open()` to open a document.
* Added `addEventListener()` to listen for events.
* Added keywords parameter to API `viewer.highlight()`.
  * When search terms are passed to the keywords parameter, highlight effects are generated on the searched text.

### Improvements

* Improved UI/UX for Redact panel.
  * Restricted the ability to specify transparent color for redaction applied areas.
  * Improved so that the entire text search results are highlighted in the document.
  * Changed the existing pagination to navigation functionality so that text search results can be checked one by one.
  * Enhanced visibility of keywords within text search results.

## 0.3.0

### Breaking Changes

* UI
  * Moved the floating navigation menus from the bottom of the screen to the center of the toolbar.
  * Changed the design of the quick search modal.

### Improvements

* Changed the font to Inter.
* Changed the assets to be loaded lazily.

### Bug Fixes

* Fixed an issue where the author of a note annotation was cut off when it was too long.
* Fixed an issue where the document panel buttons did not work on mobile screens.

## 0.2.0

### New Features

* Added API `viewer.defineDocumentPanel()` to customize document panels.
* Added document panel menus.
  * Bookmark panel.
  * Markups panel.
* Added external variable `refs` for API calls.

### Improvements

* Improved to parse document name from `uri` parameter when opening a document without a name.

### Bug Fixes

* Fixed the following issues in `viewer.setViewVisibility()`:
  * Issue where the left side of the toolbar could not be hidden.
  * Issue where the separator remained even when all file menus on the right side of the toolbar were hidden.

## 0.1.1

### Breaking Changes

* API
  * Removed `viewer.toggleMenu`

### Improvements

* API
  * Modified `viewer.setLogo` to maintain the aspect ratio of the added logo.
  * Added error message for key validation failure in localhost environment.
* Reduced bundle size.

### Bug Fixes

* Fixed an issue where the default reading direction was incorrectly set from right to left in two-page view.
* API
  * Fixed a bug that "view" parameter of `viewer.setViewVisibility` does not work.
  * Fixed an issue where some styles were not applied during loading due to missing viewer theme configuration logic.
  * Fixed the following issues that occurred when using `annotation.add()` and `annotation.remove()`:
    * Fixed an issue where the API did not terminate when the `annotations` parameter was an empty array.
    * Fixed an issue where an error occurred when color values were entered in uppercase.

## 0.1.0

### Improvements

* Improve the handling of errors that occur when passing invalid parameters to initialize the viewer.
* Editing the author of a note annotation is now triggered by a single click instead of a double click.

## 0.1.0-alpha.2

### Breaking Changes

* UI
  * Remove the "Bookmark" panel.
  * Remove the page indicator on bottom-left of the screen.
* API
  * `document.getBookmarks` is removed.
  * `document.setBookmarks` is removed.
  * 'BOOKMARK' type in `viewer.openSideView` is removed.
  * 'BOOKMARK' type in `viewer.togglePanel` is removed.

### New Features

* Add the "Redact" tool.
* Add the feature that allows you to select annotations by dragging.

### Improvements

* Change the threshold for the top toolbar's right menu to be merged into the more menu from 575px to 767px.
* Change that the top toolbar's tool menu is merged into the more menu when the screen size is less than 767px.
