Add changelog v9.0.0

Co-authored-by: Denis Spitsyn <denis.spitsyn@onlyoffice.com>
Co-committed-by: Denis Spitsyn <denis.spitsyn@onlyoffice.com>
This commit is contained in:
Denis Spitsyn
2025-06-18 11:13:34 +00:00
committed by Alexey Golubev
parent add3336024
commit a9b4c1a004
2 changed files with 414 additions and 0 deletions

View File

@@ -1,5 +1,357 @@
# Change log
## 9.0.0
### New features
#### All Editors
* Added new interface themes: Modern Light and Modern Dark
* Added saving of the last selected languages in spellcheck lists
* Added Arabic spellcheck dictionary used in sixteen dialects
* Added AI-powered macro generation from descriptions and VBA-to-JavaScript
conversion
* Added the interface translation into Urdu (ur-PK, Urdu (Pakistan))
* Added support for TextArt text settings inside chart labels
* Added support for drawing the Up/Down Bars chart elements
#### Document Editor
* Added correct display of previews for paragraph numbers for RTL
* Improved positioning and settings of TextArt for RTL
* Improved drawing of borders and fill for paragraphs with RTL direction
* Enabled accurate cursor navigation with arrow keys based on the paragraph's
text direction
* Added the ability to display numbers using Hindi digits
* Added a setting in the File menu for selecting the preferred font size:
Western/Chinese for the Chinese interface language (Chinese (Simplified))
* Added a Borders button to the Home toolbar to quickly set paragraph settings
* Added support for the `MD` format for reading
#### Spreadsheet Editor
* Added support for displaying bidirectional text
* Added the ability to select external data from another spreadsheet
#### Presentation Editor
* Added the ability to set the paragraph direction (Text Direction > RTL)
on the toolbar and in the advanced settings
* Added the ability to view animations with text
* Added the "Preserve" option to the Slide Master context menu
#### Forms
* Changed the appearance of the Signature and Image fields: the placeholder
and signature icon are now always displayed
* Improved user experience when filling in the Signature and Image fields
* Added a new `"type": "signature"` for the Signature field, used in the process
of filling out forms
#### PDF Editor
* Added the ability to set RTL direction for text
* The Edit Text option is available in the Community Edition build
* Implemented a `PDF` form editor
* Added copying pages between `PDF` files
#### Diagrams
* Release of the first version of the Diagram Viewer with the ability
to open `VSDX` files
#### Convert
* Added conversion of the `XLSB` format to the editor's internal format,
allowing editing and saving in `XLSX` without preliminary conversion
#### Back-end
* Added support for Azure Blob Storage (`storage.name = "storage-az"`)
for editor cache. To use, specify the endpoint, `bucketName`
and `credentials` (`accessKeyId` and `secretAccessKey`)
* Added flag `storage.useDirectStorageUrls` (`bool`), which controls the issuance
of links to external storages: direct links or proxying through the server
* Added the ability to prepare static editor data (`html`, `css`, `js`, `fonts`)
in the browser cache before opening the document using the
`?preload=placeholder` parameter to the link to `api.js` or a hidden `iframe`
with `preload.html` located next to `api.js`
* Added setting `runtimeConfig.filePath` - path to dynamic server config,
allowing to change parameters without restarting, similar to tenant configs
* Added the ability to set parameters and keys of AI models used in editors
on the /info page
* Added the ability for the server administrator to add own dictionaries
#### Customization
* Added parameter `customization.forceWesternFontSize`: `false`/`true`
for setting by integrators
* Added a parameter to hide the icon with the user's avatar/initials
in the header: `customization.layout.header.user`: `true`/`false`.
The setting is available to users with the extended license
#### API
* Added methods for creating/adding custom `ContentControls`
```javascript
ApiDocument.prototype.AddCheckBoxContentControl = function(checkBoxPr)
ApiDocument.prototype.AddPictureContentControl = function(width, height)
ApiDocument.prototype.AddComboBoxContentControl = function(list, selected)
ApiDocument.prototype.AddDropDownListContentControl = function(list, selected)
ApiDocument.prototype.AddDatePickerContentControl = function(datePickerPr)
Api.prototype.CreateCheckBoxContentControl = function(checkBoxPr)
Api.prototype.CreatePictureContentControl = function(width, height)
Api.prototype.CreateComboBoxContentControl = function(list, selected)
Api.prototype.CreateDropDownListContentControl = function(list, selected)
Api.prototype.CreateDatePickerContentControl = function(datePickerPr)
```
* Added the ability to get `CustomXml` collection
```javascript
ApiDocument.prototype.GetCustomXmlParts = function()
```
* Added support for handling the `Custom XML` collection
```javascript
ApiCustomXmlParts.prototype.Add = function(xml)
ApiCustomXmlParts.prototype.GetCount = function()
ApiCustomXmlParts.prototype.GetById = function(xmlPartId)
ApiCustomXmlParts.prototype.GetByNamespace = function(namespace)
ApiCustomXmlParts.prototype.GetAll = function()
```
* Enabled functionality for managing the `Custom XML` collection element
```javascript
ApiCustomXmlPart.prototype.GetId = function()
ApiCustomXmlPart.prototype.GetNodes = function(xPath)
ApiCustomXmlPart.prototype.GetXml = function()
ApiCustomXmlPart.prototype.Delete = function()
ApiCustomXmlPart.prototype.DeleteAttribute = function(xPath, name)
ApiCustomXmlPart.prototype.InsertAttribute = function(xPath, name, value)
ApiCustomXmlPart.prototype.GetAttribute = function(xPath, name)
ApiCustomXmlPart.prototype.UpdateAttribute = function(xPath, name, value)
ApiCustomXmlPart.prototype.DeleteElement = function(xPath)
ApiCustomXmlPart.prototype.InsertElement = function(xPath, xmlStr, index)
ApiCustomXmlPart.prototype.UpdateElement = function(xPath, xmlStr)
```
* Added support for individual `CustomXML` nodes
```javascript
ApiCustomXmlNode.prototype.GetNodes = function(xPath)
ApiCustomXmlNode.prototype.GetXPath = function ()
ApiCustomXmlNode.prototype.GetNodeName = function()
ApiCustomXmlNode.prototype.GetNodeValue = function()
ApiCustomXmlNode.prototype.GetXml = function()
ApiCustomXmlNode.prototype.GetText = function()
ApiCustomXmlNode.prototype.SetNodeValue = function(xml)
ApiCustomXmlNode.prototype.SetText = function(text)
ApiCustomXmlNode.prototype.SetXml = function (xml)
ApiCustomXmlNode.prototype.Delete = function()
ApiCustomXmlNode.prototype.GetParent = function()
ApiCustomXmlNode.prototype.Add = function(nodeName)
ApiCustomXmlNode.prototype.GetAttributes = function()
ApiCustomXmlNode.prototype.SetAttribute = function(name, value)
ApiCustomXmlNode.prototype.UpdateAttribute = function(name, value)
ApiCustomXmlNode.prototype.DeleteAttribute = function(name)
ApiCustomXmlNode.prototype.GetAttribute = function(name)
```
* Added methods to link `ContentControl` and `CustomXML`
```javascript
ApiInlineLvlSdt.prototype.SetDataBinding = function(xmlMapping)
ApiInlineLvlSdt.prototype.GetDataBinding = function()
ApiInlineLvlSdt.prototype.UpdateFromXmlMapping = function()
ApiInlineLvlSdt.prototype.GetDataForXmlMapping = function()
ApiBlockLvlSdt.prototype.SetDataBinding = function(xmlMapping)
ApiBlockLvlSdt.prototype.GetDataBinding = function()
ApiBlockLvlSdt.prototype.UpdateFromXmlMapping = function()
ApiBlockLvlSdt.prototype.GetDataForXmlMapping = function()
```
* Added method for inserting formulas
```javascript
ApiPresentation.prototype.AddMathEquation(sText, sFormat)
```
* Added new class `ApiNotesPage` for working with notes
```javascript
ApiNotesPage.prototype.GetBodyShape()
ApiNotesPage.prototype.AddBodyShapeText(sText)
```
* Added methods to the `ApiSlide` class
```javascript
ApiSlide.prototype.GetNotesPage()
ApiSlide.prototype.AddNotesText(sText)
```
* Added methods for getting presentation objects
```javascript
ApiPresentation.prototype.GetAllOleObjects()
ApiPresentation.prototype.GetAllCharts()
ApiPresentation.prototype.GetAllShapes()
ApiPresentation.prototype.GetAllImages()
ApiPresentation.prototype.GetAllDrawings()
```
* Added methods for getting all slide templates
```javascript
ApiMaster.prototype.GetAllLayouts()
```
* Added `ApiCore` and `ApiCustomProperties` classes
for working with file metadata
```javascript
ApiCore.prototype.SetCategory = function (sCategory)
ApiCore.prototype.GetCategory = function ()
ApiCore.prototype.SetContentStatus = function (sStatus)
ApiCore.prototype.GetContentStatus = function ()
ApiCore.prototype.SetCreated = function (oCreated)
ApiCore.prototype.GetCreated = function ()
ApiCore.prototype.SetCreator = function (sCreator)
ApiCore.prototype.GetCreator = function ()
ApiCore.prototype.SetDescription = function (sDescription)
ApiCore.prototype.GetDescription = function ()
ApiCore.prototype.SetIdentifier = function (sIdentifier)
ApiCore.prototype.GetIdentifier = function ()
ApiCore.prototype.SetKeywords = function (sKeywords)
ApiCore.prototype.GetKeywords = function ()
ApiCore.prototype.SetLanguage = function (sLanguage)
ApiCore.prototype.GetLanguage = function ()
ApiCore.prototype.SetLastModifiedBy = function (sLastModifiedBy)
ApiCore.prototype.GetLastModifiedBy = function ()
ApiCore.prototype.SetLastPrinted = function (oLastPrinted)
ApiCore.prototype.GetLastPrinted = function ()
ApiCore.prototype.SetModified = function (oModified)
ApiCore.prototype.GetModified = function ()
ApiCore.prototype.SetRevision = function (sRevision)
ApiCore.prototype.GetRevision = function ()
ApiCore.prototype.SetSubject = function (sSubject)
ApiCore.prototype.GetSubject = function ()
ApiCore.prototype.SetTitle = function (sTitle)
ApiCore.prototype.GetTitle = function ()
ApiCore.prototype.SetVersion = function (sVersion)
ApiCore.prototype.GetVersion = function ()
ApiCustomProperties.prototype.AddStringProperty = function (sName, sValue)
ApiCustomProperties.prototype.AddNumberProperty = function (sName, nValue)
ApiCustomProperties.prototype.AddDateProperty = function (sName, oValue)
ApiCustomProperties.prototype.AddBoolProperty = function (sName, bValue)
ApiCustomProperties.prototype.GetPropertyValueByName = function (sName)
```
* Added methods for getting instances of new classes
in the editor API
```javascript
ApiDocument.prototype.GetCore()
ApiDocument.prototype.GetCustomProperties()
Api.prototype.GetCore()
Api.prototype.GetCustomProperties()
ApiPresentation.prototype.GetCore()
ApiPresentation.prototype.GetCustomProperties()
```
* Added methods for switching the visual presentation
of `Content Controls`, accepting values: `"boundingBox"`,
`"hidden"`
```javascript
ApiInlineLvlSdt.prototype.SetAppearance = function(type)
ApiInlineLvlSdt.prototype.GetAppearance = function()
ApiBlockLvlSdt.prototype.SetAppearance = function(type)
ApiBlockLvlSdt.prototype.GetAppearance = function()
```
* Added methods for getting/setting the role and tag to the base class
for all forms, as well as the ability to set the role when creating a form
through the general form setting `FormPrBase.role`
```javascript
ApiFormBase.prototype.GetTag = function()
ApiFormBase.prototype.SetTag = function(tag)
ApiFormBase.prototype.GetRole = function()
ApiFormBase.prototype.SetRole = function(role)
```
* Added methods to get forms by selected role or key
```javascript
ApiDocument.prototype.GetFormsByRole = function(role)
ApiDocument.prototype.GetFormsByKey = function(key)
```
* Added method to get list of keys linked to the given role
```javascript
ApiDocument.prototype.GetFormKeysByRole = function(role)
```
* Added a method to get the form value directly by key (for a group
of radio buttons, it returns Choice, i.e. the name of the selected item)
```javascript
ApiDocument.prototype.GetFormValueByKey = function(key)
```
* Added methods for date field to work via built-in JavaScript
date class
```javascript
ApiDateForm.prototype.SetDate = function(date)
ApiDateForm.prototype.GetDate = function()
```
* Added `fontSlot` parameter to `GetFontFamily` method, accepting values:
`"ascii"`, `"eastAsia"`, `"hAnsi"`, `"cs"`
* Added automatic font calculation from the theme
in the `GetFontFamily` method, if specified through the theme
```javascript
ApiTextPr.prototype.GetFontFamily = function(fontSlot)
```
* Added a method to access the role management class,
returning an object of the new `ApiFormRoles` type
```javascript
ApiDocument.prototype.GetFormRoles = function()
```
* Added methods for working with the `ApiFormRoles` class
```javascript
ApiFormRoles.prototype.Add = function(name, props)
ApiFormRoles.prototype.Remove = function(name, delegateRole)
ApiFormRoles.prototype.GetCount = function()
ApiFormRoles.prototype.GetAllRoles = function()
ApiFormRoles.prototype.HaveRole = function(name)
ApiFormRoles.prototype.GetRoleColor = function(name)
ApiFormRoles.prototype.SetRoleColor = function(name, color)
ApiFormRoles.prototype.MoveUp = function(name)
ApiFormRoles.prototype.MoveDown = function(name)
```
#### Plugins
* Added the ability to add custom buttons using a plugin for `ContentControl`
in the document editor
#### Mobile
* Enabled slide thumbnail panel adjustment upon device orientation change
## 8.3.3
### Fixes