Welcome to the glossary! This is a list of terms to make sure we're all talking about the same thing.
+
Glossary terms are highlighted throughout the documentation like this: JavaScript. To see the definition, just hover your mouse over the word, or click on the word to jump back to this glossary page.
+
Application
+
An XD-specific namespace that provides access to various methods that aren't specific to the XD document. Read more.
+
Base64
+
A representation of binary data that can be transferred safely over the internet.
+
Clipboard
+
A temporary storage location that the user can utilize to save or retrieve text or other snippets on command. Adobe XD provides an API for accessing the clipboard.
+
Class
+
A template (of sorts) used to instantiate objects. An instance has the same instance methods and properties as specified in the class.
+
CSS
+
Short for Cascading Style Sheets. Adobe XD supports a subset of CSS.
+
Developer Console
+
Displays logs and errors generated by your plugin, helping you debug your code.
+
DOM
+
Short for Document Object Model. Generally refers to the HTML5DOM.
A modern version of JavaScript, previously named ES6.
+
Destructive Action
+
An action, which when taken, is destructive to the user's open document or their files. Such an action may be undoable, but this is not always the case.
+
Dialog
+
Represents a user interface concept whereby a sheet or window is displayed and asks the user for more information (hence the word "dialog" – the user and computer are dialoguing together).
+
Dismissive Button
+
A dismissive button will close a dialog. Whether an action continues after the dismissal of the dialog depends upon which button is clicked. "OK", "Cancel", "Yes", "Don't Save", "Delete" can all be dismissive buttons.
+
Edit Context
+
Represents the context within which a plugin or user is allowed to make edits to the user's scenegraph. Read more.
+
GUID
+
A globally unique identifier.
+
HTML
+
Short for hypertext markup language. XD Supports a subset of HTML.
JavaScript is a common programming language that is used in many various contexts, including the web and on servers. Adobe XD uses JavaScript to help leverage the existing skills of the entire JavaScript ecosystem.
A manifest is used to declare various facts about a plugin. For example, a manifest includes the plugin's name, a unique ID, and what functions correspond with what menu items. Read more.
A scenegraph represents the user's document. It is so called because it is a tree (a kind of graph) of nodes that, when taken together, represents the entire "scene" of the document. Adobe XD provides an API for manipulating the scenegraph. Learn more about the scenegraph.
+
+
diff --git a/GLOSSARY.md b/GLOSSARY.md
deleted file mode 100644
index b15892ae4..000000000
--- a/GLOSSARY.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# Glossary
-
-Welcome to the glossary! This is a list of terms to make sure we're all talking about the same thing.
-
-Glossary terms are highlighted throughout the documentation like this: JavaScript. To see the definition, just hover your mouse over the word, or click on the word to jump back to this glossary page.
-
-
-## Application
-An XD-specific namespace that provides access to various methods that aren't specific to the XD document. [Read more](./reference/application.md).
-
-## Base64
-A representation of binary data that can be transferred safely over the internet.
-
-## Clipboard
-A temporary storage location that the user can utilize to save or retrieve text or other snippets on command. Adobe XD [provides an API](./reference/clipboard.md) for accessing the clipboard.
-
-## Class
-A template (of sorts) used to instantiate objects. An instance has the same instance methods and properties as specified in the class.
-
-## CSS
-Short for _Cascading Style Sheets_. Adobe XD supports a _subset_ of CSS.
-
-## Developer Console
-Displays logs and errors generated by your plugin, helping you debug your code.
-
-## DOM
-Short for _Document Object Model_. Generally refers to the HTML5 DOM.
-
-## ECMAScript
-See JavaScript.
-
-## ES5
-An older version of JavaScript from 2009.
-
-## ES6
-A modern version of JavaScript. See ES2015.
-
-## ES2015
-A modern version of JavaScript, previously named ES6.
-
-## Destructive Action
-An action, which when taken, is destructive to the user's open document or their files. Such an action _may_ be undoable, but this is not always the case.
-
-## Dialog
-Represents a user interface concept whereby a sheet or window is displayed and asks the user for more information (hence the word "dialog" -- the user and computer are dialoguing together).
-
-## Dismissive Button
-A dismissive button will close a dialog. Whether an action continues after the dismissal of the dialog depends upon which button is clicked. "OK", "Cancel", "Yes", "Don't Save", "Delete" can all be dismissive buttons.
-
-## Edit Context
-Represents the context within which a plugin or user is allowed to make edits to the user's scenegraph. [Read more](./reference/core/edit-context.md).
-
-## GUID
-A globally unique identifier.
-
-## HTML
-Short for _hypertext markup language_. XD Supports a subset of HTML.
-
-## HTML5
-The modern version of HTML.
-
-## ImageFill
-Used to fill a SceneNode with bitmap data. [Read more](./reference/ImageFill.md)
-
-## Instance
-An instance of a class. May also refer to instance properties or methods.
-
-## JavaScript
-JavaScript is a common programming language that is used in many various contexts, including the web and on servers. Adobe XD uses JavaScript to help leverage the existing skills of the entire JavaScript ecosystem.
-
-## JSON
-Short for JavaScript Object Notation.
-
-## Manifest
-A manifest is used to declare various facts about a plugin. For example, a manifest includes the plugin's name, a unique ID, and what functions correspond with what menu items. [Read more](./reference/structure/manifest.md).
-
-## Node
-A tree node. Depending on context, this node may refer to a [HTML5 DOM Node](./reference/uxp/class/Node.md) or an [XD Scenegraph node](./reference/scenegraph.md#scenenode).
-
-## React
-Also known as ReactJS. A declarative, component-based JavaScript library for building user interfaces. [Learn more about React](https://reactjs.org/).
-
-## SceneNode
-A [SceneNode](./reference/scenegraph.md#scenenode) represents a node within the user's scenegraph.
-
-## Scenegraph
-A scenegraph represents the user's document. It is so called because it is a tree (a kind of graph) of nodes that, when taken together, represents the entire "scene" of the document. Adobe XD [provides an API](./reference/scenegraph.md) for manipulating the scenegraph. [Learn more about the scenegraph](./reference/core/scenegraph.md).
-
-## SceneNodeList
-A list of scene nodes. [Read more](./reference/SceneNodeList.md)
-
-## Static
-A static method or property. These exist at the class level, and not on instantiated objects.
-
-## UXP
-Short for _Unified Extensibility Platform_. Adobe XD uses UXP for some of its extensibility APIs.
-
-## XHR
-Short for XMLHttpRequest.
-
-## XMLHttpRequest
-An network I/O API that can be used to request information from local and remote endpoints. [See documentation](./reference/uxp/class/XMLHttpRequest.md).
-
-## WebSocket
-A network I/O API that enables real-time communication with local and remote endpoints. [See documentation](./reference/uxp/class/WebSocket.md).
-
-## Widget
-Any interactive control or rendition provided by the user interface. For example, a clickable "button" is a widget.
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index 42ee93cff..000000000
--- a/README.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# Plugin APIs
-
-**Bring new features and capabilities to XD**
-
-Shape the future of design by creating plugins for yourself, your team, or the world. To share a plugin for all XD users, submit it to Adobe. After review, you’ll be published in the XD Plugin Manager.
-
-
-
-
-
-
-
-
-
-
-
-**Quick start: create your first plugin**
-
-We’ll keep things simple in this Quick Start tutorial. Once you’re done, you’ll have a solid grasp of how to start creating your own XD plugin. We’ll also give you some next steps for learning more.
-
-**[Start coding](/tutorials/quick-start/index.md)**
-
-
-
-
-
-**Design using the XD plugin UI kit**
-
-XD plugins are used by designers around the world who expect great experiences. Download the XD plugin UI kit to start crafting your own XD plugin experience.
-
-**[Download](https://github.com/AdobeXD/plugin-design-assets/blob/master/Sticker_sheet_XD_plugins.xd?raw=true)**
-
-
-
-
-
-**Manage your plugin project**
-
-Whether you’re getting your unique plugin ID, submitting your finished plugin for review, or updating your XD Plugin Manager listing, the Adobe Developer Console is the place to manage your plugin project.
-
-**[Visit the Adobe Developer Console](https://console.adobe.io)**
-
-
-
-**Plugin API roadmap**
-
-We’ve got a lot of stuff planned for the future of Plugin APIs on the Adobe XD platform, and we’ve built out a roadmap.
-
-**[View Trello board](https://trello.com/b/WFKmCVaz/xd-extensibility-roadmap)**
-
-
-
-
-
-
diff --git a/SUMMARY.md b/SUMMARY.md
deleted file mode 100644
index dc808e550..000000000
--- a/SUMMARY.md
+++ /dev/null
@@ -1,180 +0,0 @@
-# Summary
-
-* [Overview](./README.md)
-* [Develop](./develop.md)
- * [Quick start](./develop.md)
- * [Quick start](./tutorials/quick-start/index.md)
- * [Quick start - React](./tutorials/quick-start-react/index.md)
- * [Quick start - Panel UI](./tutorials/quick-start-panel/index.md)
- * [Debugging plugins](./tutorials/debugging/index.md)
- * [Plugin Development 101](./plugin-development-guidelines/index.md)
- * [Plugin structure](./reference/structure/index.md)
- * [Folder structure](./reference/structure/folder-structure.md)
- * [manifest.json](./reference/structure/manifest.md)
- * [main.js](./reference/structure/handlers.md)
- * [Menu structure](./reference/structure/menu-structure.md)
- * [JavaScript and XD plugin APIs](./reference/javascript/index.md)
- * [JavaScript support](./reference/javascript/javascript-support.md)
- * [Sync and async](./reference/javascript/sync-async.md)
- * [API environment](./reference/javascript/environment.md)
- * [XD concepts](./reference/core/index.md)
- * [Plugin lifecycle](./reference/core/lifecycle.md)
- * [The scenegraph](./reference/core/scenegraph.md)
- * [Edit Context rules](./reference/core/edit-context.md)
- * [Properties with object values](./reference/core/properties-with-object-values.md)
- * [Coordinate spaces & units](./reference/core/coordinate-spaces-and-units.md)
- * [Automatic cleanups](./reference/core/automatic-cleanups.md)
- * [Accessing APIs](./reference/core/apis.md)
- * [Development best practices](./devbestpractices/index.md)
- * [1.0 Performance](./devbestpractices/1-performance.md)
- * [2.0 Scenegraph](./devbestpractices/2-scenegraph.md)
- * [3.0 Network I/O](./devbestpractices/3-network-io.md)
- * [4.0 File I/O](./devbestpractices/4-file-io.md)
- * [Step-by-step Tutorials](./tutorials/index.md)
- * [Working with content](./tutorials/content-index.md)
- * [How to draw lines](./tutorials/how-to-draw-lines/index.md)
- * [How to create paths](./tutorials/how-to-create-paths/index.md)
- * [How to style text](./tutorials/how-to-style-text/index.md)
- * [Working with a SceneNodeList](./tutorials/how-to-work-with-scenenodelist/index.md)
- * [Working with I/O](./tutorials/io-index.md)
- * [How to export a rendition](./tutorials/how-to-export-a-rendition/index.md)
- * [How to read a file](./tutorials/how-to-read-a-file/index.md)
- * [How to make network requests](./tutorials/how-to-make-network-requests/index.md)
- * [How to integrate with OAuth](./tutorials/how-to-integrate-with-OAuth/index.md)
- * [Building user interfaces](./tutorials/ui-index.md)
- * [How to show an alert](./tutorials/how-to-show-an-alert/index.md)
- * [Asking user for confirmation](./tutorials/how-to-ask-user-for-confirmation/index.md)
- * [Technical Reference](./reference/index.md)
- * [API references](./reference/reference-index.md)
- * [UXP](./reference/uxp/index.md)
- * [Network APIs](./reference/uxp/network-index.md)
- * [XMLHttpRequest](./reference/uxp/class/XMLHttpRequest.md)
- * [fetch](./reference/uxp/function/fetch.md)
- * [WebSocket](./reference/uxp/class/WebSocket.md)
- * [Storage APIs](./reference/uxp/storage-index.md)
- * [Storage module](./reference/uxp/module/storage.md)
- * [Local Storage](./reference/uxp/module/localStorage.md)
- * [Session Storage](./reference/uxp/module/sessionStorage.md)
- * [Secure Storage](./reference/uxp/module/secureStorage.md)
- * [Shell](./reference/uxp/class/Shell.md)
- * [OS](./reference/uxp/class/OS.md)
- * [UI APIs](./reference/uxp/ui-index.md)
- * [CSS support](./reference/uxp/namespace/css.md)
- * [Classes](./reference/uxp/ui-classes-index.md)
- * [Attr](./reference/uxp/class/Attr.md)
- * [CharacterData](./reference/uxp/class/CharacterData.md)
- * [Clipboard](./reference/uxp/class/Clipboard.md)
- * [Comment](./reference/uxp/class/Comment.md)
- * [CSSRule](./reference/uxp/class/CSSRule.md)
- * [CSSRuleList](./reference/uxp/class/CSSRuleList.md)
- * [CSSStyleDeclaration](./reference/uxp/class/CSSStyleDeclaration.md)
- * [CSSStyleRule](./reference/uxp/class/CSSStyleRule.md)
- * [CSSStyleSheet](./reference/uxp/class/CSSStyleSheet.md)
- * [Document](./reference/uxp/class/Document.md)
- * [DocumentFragment](./reference/uxp/class/DocumentFragment.md)
- * [DOMException](./reference/uxp/class/DOMException.md)
- * [DOMTokenList](./reference/uxp/class/DOMTokenList.md)
- * [Element](./reference/uxp/class/Element.md)
- * [NamedNodeMap](./reference/uxp/class/NamedNodeMap.md)
- * [Node](./reference/uxp/class/Node.md)
- * [NodeList](./reference/uxp/class/NodeList.md)
- * [StyleSheet](./reference/uxp/class/StyleSheet.md)
- * [StyleSheetList](./reference/uxp/class/StyleSheetList.md)
- * [Text](./reference/uxp/class/Text.md)
- * [HTML elements](./reference/uxp/ui-html-index.md)
- * [HTMLElement](./reference/uxp/class/HTMLElement.md)
- * [Anchor](./reference/uxp/class/HTMLAnchorElement.md)
- * [Body](./reference/uxp/class/HTMLBodyElement.md)
- * [Button](./reference/uxp/class/HTMLButtonElement.md)
- * [Dialog](./reference/uxp/class/HTMLDialogElement.md)
- * [Form](./reference/uxp/class/HTMLFormElement.md)
- * [Head](./reference/uxp/class/HTMLHeadElement.md)
- * [Html](./reference/uxp/class/HTMLHtmlElement.md)
- * [Image](./reference/uxp/class/HTMLImageElement.md)
- * [Input](./reference/uxp/class/HTMLInputElement.md)
- * [Label](./reference/uxp/class/HTMLLabelElement.md)
- * [Link](./reference/uxp/class/HTMLLinkElement.md)
- * [Menu](./reference/uxp/class/HTMLMenuElement.md)
- * [Option](./reference/uxp/class/HTMLOptionElement.md)
- * [Script](./reference/uxp/class/HTMLScriptElement.md)
- * [Select](./reference/uxp/class/HTMLSelectElement.md)
- * [Style](./reference/uxp/class/HTMLStyleElement.md)
- * [TextArea](./reference/uxp/class/HTMLTextAreaElement.md)
- * [Events](./reference/uxp/events-index.md)
- * [BaseUIEvent](./reference/uxp/class/BaseUIEvent.md)
- * [CloseEvent](./reference/uxp/class/CloseEvent.md)
- * [Event](./reference/uxp/class/Event.md)
- * [EventTarget](./reference/uxp/class/EventTarget.md)
- * [FocusEvent](./reference/uxp/class/FocusEvent.md)
- * [GestureEvent](./reference/uxp/class/GestureEvent.md)
- * [KeyboardEvent](./reference/uxp/class/KeyboardEvent.md)
- * [MessageEvent](./reference/uxp/class/MessageEvent.md)
- * [PointerEvent](./reference/uxp/class/PointerEvent.md)
- * [ProgressEvent](./reference/uxp/class/ProgressEvent.md)
- * [XD specific](./reference/xd-index.md)
- * [scenegraph](./reference/scenegraph.md)
- * [SceneNodeList](./reference/SceneNodeList.md)
- * [Color](./reference/Color.md)
- * [ImageFill](./reference/ImageFill.md)
- * [LinearGradientFill](./reference/LinearGradientFill.md)
- * [Matrix](./reference/Matrix.md)
- * [Shadow](./reference/Shadow.md)
- * [Blur](./reference/Blur.md)
- * [selection](./reference/selection.md)
- * [PerPluginStorage](./reference/PerPluginStorage.md)
- * [application](./reference/application.md)
- * [assets](./reference/assets.md)
- * [clipboard](./reference/clipboard.md)
- * [cloud](./reference/cloud.md)
- * [interactions](./reference/interactions.md)
- * [commands](./reference/commands.md)
- * [viewport](./reference/viewport.md)
- * [How to read this reference](./reference/how-to-read.md)
- * [Known issues](./known-issues.md)
- * [Change log](./changes.md)
- * [Glossary](./GLOSSARY.md)
- * [Migrations](./migrations.md)
- * [UXP 2 to 3](./migrations/uxp-2-to-3.md)
- * [Porting Modals to Panels](./migrations/how-to-migrate-from-modal-to-panel.md)
-* [Design](./design/index.md)
- * [UX Patterns](./design/ux-patterns/index.md)
- * [Panel UX](./design/ux-patterns/panel-ux.md)
- * [Modal UX](./design/ux-patterns/modal-ux.md)
- * [Onboarding](./design/ux-patterns/onboarding.md)
- * [Navigation](./design/ux-patterns/navigation.md)
- * [Messaging](./design/ux-patterns/messaging.md)
- * [Branding](./design/ux-patterns/branding.md)
- * [User Interface](./design/user-interface/index.md)
- * [Styles](./reference/ui/styles/index.md)
- * [Color](./reference/ui/styles/color.md)
- * [Typography](./reference/ui/styles/typography.md)
- * [Using CSS](./reference/ui/styles/using-css.md)
- * [Layout](./reference/ui/layout/index.md)
- * [Block layout](./reference/ui/layout/block.md)
- * [Flexbox layout](./reference/ui/layout/flex.md)
- * [Positioning](./reference/ui/layout/positioning.md)
- * [Utility classes](./reference/ui/layout/utility-classes.md)
- * [Elements](./reference/ui/elements/index.md)
- * [Buttons](./reference/ui/elements/buttons.md)
- * [Checkboxes](./reference/ui/elements/checkboxes.md)
- * [Dropdowns](./reference/ui/elements/dropdowns.md)
- * [Links](./reference/ui/elements/links.md)
- * [Rules](./reference/ui/elements/rules.md)
- * [Sliders](./reference/ui/elements/sliders.md)
- * [Text fields](./reference/ui/elements/textfields.md)
- * [Tooltips](./reference/ui/elements/tooltips.md)
- * [Building a modal](./reference/ui/dialogs/index.md)
- * [Showing dialogs](./reference/ui/dialogs/showing.md)
- * [Dismissing dialogs](./reference/ui/dialogs/dismissal.md)
- * [Building a panel](./reference/ui/panels/index.md)
- * [show() callback](./reference/ui/panels/show.md)
- * [hide() callback](./reference/ui/panels/hide.md)
- * [update() callback](./reference/ui/panels/update.md)
- * [Plugin sticker sheet](./design/user-interface/sticker-sheet.md)
-* [Share](./distribution/index.md)
- * [Packaging your plugin](./distribution/packaging.md)
- * [Distribution options](./distribution/options.md)
- * [Submission checklist](./distribution/submission-checklist.md)
- * [Publishing your plugin](./distribution/how-to-submit-to-plugin-manager.md)
- * [Marketing your plugin](./distribution/marketing.md)
- * [Deep-linking to your plugin listing](./distribution/how-to-create-deep-links.md)
diff --git a/book.json b/book.json
deleted file mode 100644
index 6cb417c69..000000000
--- a/book.json
+++ /dev/null
@@ -1,141 +0,0 @@
-{
- "title": "Adobe XD Plugin Reference",
- "description": "Documentation, tutorials, how-tos, and technical reference for building Adobe XD Plugins",
- "author": "Adobe",
- "pdf": {
- "fontFamily": "Georgia"
- },
- "plugins": [
- "page-toc",
- "anchorjs",
- "collapse",
- "-pretty-term",
- "code",
- "dashing",
- "todo",
- "-devops",
- "expandable-chapters-interactive",
- "styled-blockquotes",
- "-codetabs",
- "-recently-updated",
- "-github-buttons",
- "-prism",
- "highlight",
- "-lunr",
- "-search",
- "search-plus",
- "addcssjs",
- "replace",
- "simpletabs",
- "-layout",
- "components",
- "-lightbox",
- "github-tables",
- "nestedmd",
- "image-captions",
- "fancybox",
- "bulk-redirect"
- ],
- "pluginsConfig": {
- "components": {
- "templatePath": "public/",
- "templates": [{
- "name": "header",
- "target": "body",
- "prepend": "true"
- },
- {
- "name": "footer",
- "target": "body",
- "prepend": "false"
- }
- ]
- },
- "addcssjs": {
- "css": ["./public/custom.css"]
- },
- "page-toc": {
- "selector": ".markdown-section h2, .markdown-section h3, .markdown-section h4",
- "position": "before-first",
- "showByDefault": true
- },
- "bulk-redirect": {
- "basepath": "/",
- "redirectsFile": "redirects.json"
- },
- "github-buttons": {
- "buttons": [{
- "user": "AdobeXD",
- "repo": "Plugin-Docs",
- "type": "star",
- "size": "small"
- },
- {
- "user": "AdobeXD",
- "type": "follow",
- "width": "130",
- "count": false,
- "size": "small"
- }
- ]
- },
- "replace": {
- "substitutes": [{
- "pattern": "\\\\\\*",
- "flags": "g",
- "substitute": "*"
- },
- {
- "pattern": "\\\\\\|",
- "flags": "g",
- "substitute": " or "
- },
- {
- "pattern": "
+
+
+
+
+ Change log · Adobe XD Plugin Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Auto Height Text – This new "auto height" text node type will adjust (grow/shrink) its height so that it always fits the content inside. Content changes, style changes and area width changes will make the area text height resize accordingly. A new text layoutBox API will return the type of text node and the text frame width and/or height contraints if applicable. This API should be used instead of the text areaBox API going forward.
Multiple Flows – Designers can now author multiple prototype or interaction flows in a single document. For any document that includes multiple flow support the
+HomeArtboard API will return the most upper left artboard and isHomeArtBoard will only return true for the most upper left artboard.
+
+
XD Release 30.0.12 (June 2020)
+
New features
+
+
Scrollable Groups – Plugins will see a new ScrollableGroupnode type and can read the scroll direction(s) and viewport size. Plugins cannot yet create a ScrollableGroup or modify its viewport, however.
+
+
Known Issues
+
+
Content Aware Stacks – Some plugin actions, such as changing a node's position or its Responsive Resize constraints, may be ignored or behave unexpectedly when the node's parent is a Group with Stack layout enabled. Plugins cannot yet create, read, or modify Stack layout settings on a Group.
+
+
MouseEvent clientX/clientY and offsetX/offsetY values are incorrect (and always have been) – these values will probably change in the next XD release, so do not rely on them.
The common plugin runtime has been upgraded to UXP 3.4.4, bringing a range of new features and bug fixes:
+
New features:
+
+
HTMLElement.innerText property
+
Custom text field styling using appearance: none
+
HTMLElement.scrollTo() method
+
SVG <polygon> and <polyline>
+
Get version of the UXP runtime & version of your own plugin via require("uxp").versions.uxp / .versions.plugin
+
Limited support for CustomElementRegistry (using is but not using custom HTML tags; Web Components APIs such as attachShadow() remain unsupported)
+
HTMLImageElement.complete flag
+
+
Bug fixes:
+
+
Fixed a crash when drag operations started
+
The data transfer is initiated properly at the start of the dragend event
+
Fixed the resolution of image URLs to plugin:, plugin-data, plugin-temp for UWP
+
Fixed a bug where context menus didn’t stay open
+
Fixed improper word breaking in certain edge cases
+
Improved stack trace length limitations
+
+
Breaking API changes
+
+
ImageFill.toString() has changed: it no longer includes the full path of the originally imported file, and adds image dimensions to aid in debugging console logs.
+
+
Known Issues
+
+
MouseEvent clientX/clientY and offsetX/offsetY values are incorrect (and always have been) – these values will change in a near-future XD release, so do not rely on them.
XD 28 introduces two new types of interaction actions: audio-file playback, and "scroll to" actions. Interactions using these features are not visible to plugins yet (speech
+playback interactions are exposed though). See the interactions API documentation for a complete list of
+which interaction types are & aren't exposed to plugins at this time.
On the drag source in your UI, set the draggable attribute and define a dragstart event handler that stores whatever data you want via dataTransfer.setData().
+
On the drop target in your UI, defined dragenter, dragover, and drop event handlers that react appropriately.
+
+
+
Drag from plugin panel UI into XD document
+
Only bitmap images, SVG content, or text can be dropped into the document.
+
Provide the mimetype text/uri-list and populate it only with local file paths (see File.nativePath) and/or data: image URIs.
+
This will behave exactly the same as if the user had dropped files onto XD – dropping an image onto a shape will use it as a mask, dropping multiline text onto a Repeat Grid text node will populate each grid cell with each line from the text content, etc.
+
+
+
It is not yet supported to drag content onto your plugin from an outside source (e.g. dropping files on your plugin UI, or dragging images from another app into your plugin UI).
You can now use the Chrome DevTools UI (CDT) to debug your JS code – and to a limited extent, inspect your UI DOM structure. Read the updated debugging tutorial for details.
+
What works:
+
+
Set breakpoints, pause & stop through code, inspect the values of variables
+
View objects and run code in the Console view
+
View and edit the "HTML" DOM structure of your plugin's UXP UI
+
+
Important caveats:
+
+
XD may be unstable while debugging a plugin. Don't debug when you have important XD documents open.
+
If you leave CDT on the Elements view, XD will crash the next time you open it. If this happens, keep CDT open after XD crashes and switch to a different tab. Then close CDT, restart XD, and begin debugging again.
+
Debugging on Windows requires some extra steps run with admin rights – see tutorial for details.
+
Many features in the Elements tab do not work. You can view DOM structure, and view limited CSS information but not edit CSS rules. The "Select an element" button does nothing.
+
Error messages are often missing from the Console view. Use the Plugins > Development > Developer Console view in XD to be sure you are not missing any important information.
+
Other DevTools features such as the Network or Profiling tabs are not supported and may behave erratically if you attempt to use them.
+
XD will be partially frozen while paused on a JS breakpoint. Don't try to interact with XD while paused.
+
You may see a blank white panel to the left of the DevTools UI. Ignore this, as it does nothing.
+
+
Other API updates
+
+
Polygon scenenodes can now take on a star shape - see Polygon.starRatio
+
+
XD Release 25.1.12 (December 2019)
+
XD 25 is a minor bug-fix release with no new features for end users. But it adds two small improvements for plugins:
Plugin edit operations (editDocument() or menu commands) are still fully atomic. Outside those blocks, edits from a remote user can come in at any time, just like edits from the local user could. Edits made by remote users will trigger a plugin panel's update() method, just the same as edits made by the local user.
+
If a plugin edit conflicts with a remote user's edit that started slightly sooner, the plugin edit will get cleanly reverted (in favor of the other user's edit) after the plugin operation has fully completed.
+
Remote updates are paused in a known-good document state while a plugin edit is in progress (including the lifespan of any modal dialogs), so the scenegraph state won't change while your code is in the middle of processing it. Similarly, updates made by the plugin are sent atomically to remote users once the entire plugin edit operation has finished.
+
+
+
Component states & interactions
+
+
For each Component instance, only the currently active state is visible in the scenegraph hierarchy. Content in other, non-visible states is not accessible to plugins yet.
+
Hover and state-change interactions are not exposed to plugins yet, but will be in the future. If your plugin is reading interactions/prototyping data, be sure to always have a default case if your code encounters unexpected types.
+
Reminder: a single scenenode can return multiple interactions from node.triggeredInteractions. This was possible before in some cases, but is allowed in more cases now (for example, one node can have a click/tap trigger, a drag trigger, and a hover trigger).
+
+
+
New Plugin Manager UI
+
+
Users can rate plugins on a 5-star rating scale.
+
Users can sort by popularity or rating, filter by category, and easily share deep links to a specific plugin.
+
Each plugin listing now displays one or more screenshots (see "New plugin listing process" below for how to add these).
+
If you have a plugin in development and an installed plugin with the same id, Plugin Manager now shows both for clarity. You can still only enable one of them at a time, though.
+
+
+
Sharing enhancements
+
+
The cloud.getSharedArtifacts() API may now return an arbitrary number of shared links, and there may be more than one link of the same type (e.g. multiple specs links).
+
The distinction between link types has blurred a bit: links that are ArtifactType.SPECS may also include access to an interactive prototype view, just like links of type ArtifactType.PROTOTYPE.
+
+
+
+
Smaller fixes and improvements
+
+
Fixed issue where shell.openExternal() was allowing plugins to launch non-Web URL protocols in a way that only worked on Mac. Full cross-platform support for doing this will be added in the future.
+
CSS / DOM event improvements in UXP plugin UI – including support for text input color, img srcset, and online/offline events. Read more.
+
Fixed text descender clipping in plugin UI on Mac.
+
Plugin panels now include the plugin's icons in the panel header, next to your plugin's name.
+
+
Known Issues
+
+
Live Co-editing is still a beta feature. Performance and reliability will not be comparable to other aspects of XD yet.
+
Plugins that edit a large number of objects at once may not work reliably when using Live Co-editing.
+
If the user makes multiple consecutive edits using a plugin, some of the edits may get erroneously reverted when using Live Co-editing.
+
Plugin dialog boxes that a user leaves open for a long time may not work correctly when using Live Co-editing.
+
Users may be unable to undo edits made by a plugin when using Live Co-editing.
+
+
+
Hover and state-transition interactions are not returned to plugins yet when requesting the list of interactions on a scenenode or the entire document.
+
+
XD Release 23.1.32 (October 2019)
+
New plugin listing process
+
Information shown in the plugin listing has moved out of manifest.json and is instead provided online when you submit a plugin to the listing.
+
+
Submitting a plugin also now requires at least one screenshot image.
+
Icons seen in the Plugin Manager list must be provided online during submission, but icons seen in the Plugins side panel must still be part of the plugin package folder.
+
As of XD 23, the Plugin Manager UI ignores description, author, links, etc. in manifest.json. Submitting to the public listing is now the only way to display this info in Plugin Manager. See updated manifest documentation.
+
As of September 24, submitting a new or updated plugin to the public listing requires supplying all these details via the developer submission portal online. See How to submit to Plugin Manager.
+
+
Smaller fixes and improvements
+
+
Clarified that editDocument() does not support the mergeId option for UI events that are not "high frequency."
+
Can preventDefault() on Esc or Enter in text fields to prevent the default action of sending focus back to the canvas.
+
Fixed bug with setting opacity of BooleanGroup nodes.
+
Plugin Manager UI shows plugins that were disabled because they're incompatible with the current version of XD, with tooltip explaining why.
After a stabilization period, plugins using panel UI are now published in the Plugin Manager listing!
+
Fixes and improvements
+
+
Fixed bugs related to editDocument() usage (also fixed in XD 21.1.12).
+
PUT/POST requests on Windows were including an unwanted Transfer-Encoding header, which interfered with uploading data to services like Amazon S3 (e.g. giving you errors related to Content-Length).
+
Plugins can now copy text to the clipboard in response to a panel UI DOM event without needing to call editDocument().
+
+
+
XD Release 21.0.12 (July 2019)
+
XD 21 adds major updates: the ability to show panel UI, and the much-improved UXP 3 CSS & layout engine.
+
+
+
The new layout engine likely constitutes a breaking change for any plugin with UI – read below for details.
+
+
Also note that this release has an issue where transactions being wrapped by editDocument is not enforced. This will be fixed in an upcoming patch version, so you will want to continue wrapping scenegraph changes from panels in editDocument so that your plugin isn't broken when we release the fix.
+
Plugin Panel UI
+
+
Plugins can now display UI persistently in a side panel. More information:
A new default stylesheet is provided for plugin UI that renders inside a plugin. This means that UI that renders in one manner in a modal dialog may not render in the same exact manner in a panel.
+
+
UXP 3 HTML/CSS changes
+
In order to gain access to most of these features, your plugin must opt-in to the UXP 3.1 layout engine by changing the minVersion in your manifest.json:
Inline layout – You now have the ability to write code like <p>This is <a href="...">a link</a></p> and have the link render inline with the rest of the text
+
Layout now defaults to inline (no longer flexbox) – This may break existing plugin UI code: now span elements will render with inline, buttons will render as inline-block, etc.
+
overflow defaults to visible (no longer hidden), per the web specification – This may break existing plugin UI code.
+
object-fit – to control the size of images
+
z-index
+
Improvements to position, including correct absolute semantics.
+
WARNING: Technically position: fixed is supported. However, you should not use it in your plugin panels because there are some bugs that will be fixed in a future update that will break if your plugin uses position: fixed.
More units! – UXP now understands rem, em, px, pt, vh, vw, cm, in, etc. NOTE:UXP will now start ignoring values (other than 0) that don't specify any units, which can break older plugin UI code.
+
CSS Variables – easily apply themes and other layout to your plugin.
+
More pseudo-selectors – :lang and :focus
+
calc() – For example, width: calc(100% - 9px). Note that you can mix units, just like you can on the web.
+
Inheritance – The CSS parser now understands initial, unset, and inherit. You can also use !important to override styles (although you should use this as a last resort).
+
Default styles are now easier to override as the specificity in the default stylesheet has been reduced.
+
+
+
Keyboard focus – Setting tab-index to 0 will now cause any element to be focusable. You can not yet control the tab order.
+
+
Known Issues
+
See the Known Issues page for a comprehensive list of existing known issues.
+
+
XD Release 20.0.12 (June 2019)
+
UI Changes
+
+
"Launchpad" UI and menu structure changes – XD 20 introduces a new, easier way for users to run plugins – the "launchpad" sidebar menu:
+
+
This panel lists all installed plugins, with quick access to all the same commands as the Plugins menu. In addition, XD now arranges plugin menu items more cleanly:
+
+
Multiple menu items are automatically grouped together into a submenu named after the plugin. There's
+no longer any need to manually specify submenus.
+
If your plugin only has a single menu item, it'll still be available directly at the top level of the
+Plugins menu.
+
However, top level menu items always use the name of the plugin. If your plugin's single menu item had a
+different label specified, it will be ignored.
+
+
+
+
API Improvements
+
+
Text scenenode super/subscript – Work with Text nodes and style assets using the new textScript
+feature.
+
+
Known Issues
+
No new known issues. See the Known Issues page for a comprehensive list of existing known issues.
+
+
XD Release 19.0.12 (May 2019)
+
New API Features
+
+
Read prototyping interactions – Read-only access to the interactivity settings in the document (e.g. the blue "wires"
+seen in XD's prototyping UI).
Components & Design Systems – Symbols are now called Components in XD's UI, and they support resizing and complex overrides. One important consequence
+of this is that sometimes only a subset of your plugin's changes will be applied to the scenegraph. When the user is editing the "master" copy of the
+Component, each individual scenegraph change (e.g. changing a single property on a single node) is automatically synced to other instances of the Component
+only if a given instance doesn't already have an override of the same property (or a related property). As a result, your plugin's intended changes may
+only be partially (non-atomically) applied in some Component instances: if your plugin command makes, say, 5 changes to the scenegraph, in some instances
+only, say, 3 of those changes will actually be applied.
+
In many cases, this partial application of your plugin's changes will feel natural to users as an expected consequence of the overrides they have authored.
+However, you can also choose to mitigate potential confusion by warning users or disabling some editing features while the user is editing a Component
+"master" by checking isMaster on selection.editContext and its parent chain. There is currently
+no way to force all changes made by your plugin command to be applied atomically (i.e. all or nothing).
Plugin listing: View popular & Editor's Choice plugins – Use the dropdown at the top of the plugin listing to view the top 10 most popular plugins or
+the latest featured plugins selected by our review team.
+
+
Known Issues
+
No new known issues. See the Known Issues page for a comprehensive list of existing known issues.
+
+
XD Release 18.0.12 (April 2019)
+
New API Features
+
+
Text field controls:
+
<input type="password">
+
<input type="search"> – displays search icon
+
<input type="number"> – restricted to numeric characters, and Up/Down arrow keys automatically change the value
Send FormData with XHR – This provides an easy way to post data to an endpoint expecting multipart/form-data. (But uploading binary files with Blob is not supported yet – use ArrayBuffer).
+
requestAnimationFrame() for UI – Complimenting the earlier addition of setTimeout() APIs, this new global API makes it easier to use certain UI libraries such as "react-virtualized" with
+fewer polyfills. These APIs do not allow plugins to control animations in the XD document – plugins can still only modify the document as part of an atomic operation while the UI is blocked.
+But this API does allow for simple animations in your plugin's dialog UI (e.g. a progress indicator).
+
+
Breaking Changes
+
+
develop folder location change (Mac only) – The "Adobe XD CC" folder was renamed to just "Adobe XD." The contents of the develop folder will automatically be moved to the new location
+the first time you launch XD 18.
+
Checkboxes with React – Checkboxes now correctly trigger change events in React. The previously recommended workaround (using ref to manually assign an event handler) will now cause
+your change handler to get invoked twice.
+
Advance warning: In the near future XD's scenegraph will add at least one new subclass of GraphicNode (i.e. a new leaf node shape type). Always be sure to have a default case for unknown
+scenenode types/classes when traversing the scenegraph.
NodepreviousSibling and nextSibling when not set should return null and not undefined.
+
Fixed for DOMTokenListitem and contains method bugs.
+
Fix checkbox issues when using a label.
+
+
+
Network API fixes:
+
XMLHttpRequest throws error with request status 500 for NSURLConnection error codes.
+
+
+
File API fixes:
+
Misleading error message when getEntry() fails.
+
Corrected the behavior of types argument in getFileForSaving API.
+
+
+
+
User-facing plugin features
+
+
Plugin listing displays new fields – The summary, languages, and website fields that were recently added to the manifest
+are now displayed in the Discover/Manage Plugins UI.
+
+
Known Issues
+
No new known issues. See the Known Issues page for a comprehensive list of existing known issues.
+
+
XD Release 17.0.12 (March 2019)
+
New API Features
+
+
Select & edit across groups: Users can now select multiple items that are in different containers at the same time. This has several effects on plugins:
+
Do not assume all selected items have the same parent node. Previously, this was already true in certain special cases – for example, users could select items that are the immediate
+children of several different artboards. Now, it can happen in far more cases, so plugins must take extra care to avoid any assumptions about node parents.
+
Wider "edit scope" surrounding the selection. Previously, plugins could edit the selected nodes and all their siblings (with a slightly broader scope as a special case in the "root edit
+context"). Now, plugins can edit any nodes in the subtree of the common ancestor of all the selected nodes, if those nodes are connected to the common ancestor through a parent chain
+consisting entirely of plain Groups (or Artboards). See the edit context documentation for details and examples.
+
Plugins still cannot edit globally across the entire document at once, even though in very simple testing it may _appear that this works. Non-Group containers act as blockades that
+the edit scope cannot cross - if the selection is outside such a container, you cannot edit inside it; and if the selection is inside such a container, you cannot edit outside it.
+
+
+
Additional manifest fields required for publishing: As of March 5, submitting a new or updated plugin for the in-app plugins listing requires providing new summary, author, and languages
+fields, as well as several additional icon sizes. See manifest documentation.
+
+
Breaking Changes
+
No breaking changes.
+
Fixes and improvements
+
No other API changes.
+
User-facing plugin features
+
+
Plugin update notifications: Users see an in-app notification when any installed plugins have a newer version available in the plugins listing.
+
+
Known Issues
+
No new known issues. See the Known Issues page for a comprehensive list of existing known issues.
+
+
XD Release 16.0.12 (February 2019)
+
New API Features
+
+
setTimeout() & friends:setTimeout(), setInterval(), setImmediate(), and the corresponding clear*() methods are now available as global APIs. These APIs do not allow plugins to
+control animations in the XD document – plugins can still only modify the document as part of an atomic operation while the UI is blocked. But timeout APIs do allow for simple animations in
+your plugin's dialog UI (e.g. a progress indicator), "debouncing" user input, etc. – and they help support web frameworks like React with fewer polyfills needed.
+
+
Breaking Changes
+
No breaking changes.
+
Fixes and improvements
+
No other API changes.
+
Known Issues
+
No new known issues. See the Known Issues page for a comprehensive list of existing known issues.
Deep link to plugin listings: Link from web sites, social media, etc. directly to your plugin listing in XD's UI so users can easily install the plugin.
+
+
Breaking Changes
+
No breaking changes.
+
Fixes and improvements
+
No other API changes.
+
User-facing plugin features
+
+
Disable plugins: Temporarily disable a plugin without uninstalling it or erasing its data. Choose Plugins > Manage Plugins, then click the "..." menu for a specific plugin and choose Disable.
+A disabled plugin does not appear anywhere in the XD UI other than the Manage Plugins view, and none of its code is loaded or run.
+
Force stop: If a plugin operation is blocking XD for more than one second with no UI shown, the user sees a spinner with the option to force-stop the plugin. This does not stop the plugin's code
+from running, but it reverts any partially-completed changes to the document and revokes the plugin from being the foreground operation (unblocking the XD UI and blocking the plugin from making
+document changes until it's invoked again by the user). If the plugin does eventually reawaken and try to continue running code from earlier, any attempts to modify the document will throw an error.
+
+
Known Issues
+
+
New: Plugins can modify the Assets panel contents while running in the background. Do not rely on this - in a future release, it will be blocked.
+
+
See the Known Issues page for a comprehensive list of existing known issues.
Viewport: Pan and zoom the view of the document, and get information about the current viewport bounds.
+
Text: Get/set paragraph spacing; create/modify area text; more easily work with uniform-styled text via convenience getter/setter APIs for character attributes.
+
Published links: Get latest links for prototypes & design specs that have been shared from the current document.
+
+
Breaking Changes
+
+
Plugins can only write to the clipboard or modify the selection while actively running a menu command (same as the rules for making scenegraph changes).
Exporting renditions to a folder created by your plugin now works reliably on Windows if the folder name contains spaces or other special characters.
+
Rectangle.cornerRadii now returns correct values if the corners are not all the same radius.
+
+
User-facing plugin features
+
+
"Discover Plugins" listing improvements:
+
Sort by plugin name, in addition to the default of sorting by release date.
+
Searching the plugin listing now searches the description field in addition to just the plugin title.
+
+
+
Safe mode: To temporarily disable all plugins for troubleshooting purposes, launch XD while holding down Shift. Re-launching XD will re-enable all plugins.
+
Uninstalling a plugin now clears its data/settings folder. Users are now prompted to confirm before uninstalling.
+
+
Known Issues
+
No new known issues. See the Known Issues page for a comprehensive list of existing known issues.
+
+
XD Release 13.0.12 (October 2018)
+
First release of Adobe XD featuring a public API for in-app plugins!
+
+
diff --git a/changes.md b/changes.md
deleted file mode 100644
index a20f1b0c3..000000000
--- a/changes.md
+++ /dev/null
@@ -1,551 +0,0 @@
-# Change Log
-
-XD Release 34.0.12 (October 2020)
--------------------------------------
-
-### New feature
-* **Auto Height Text** -- This new "auto height" text node type will adjust (grow/shrink) its height so that it always fits the content inside. Content changes, style changes and area width changes will make the area text height resize accordingly. A new text [layoutBox](./reference/scenegraph.md#Text-layoutBox) API will return the type of text node and the text frame width and/or height contraints if applicable. This API should be used instead of the text [areaBox](./reference/scenegraph.md#Text-areaBox) API going forward.
-
-
-XD Release 33.0.12 (September 2020)
--------------------------------------
-
-### New API features
-
-[Read multiple flows](./reference/interactions.md#module_interactions-flows)
-
-
-XD Release 32.0.22 (August 2020)
--------------------------------------
-
-### New feature
-* **Multiple Flows** -- Designers can now author multiple prototype or interaction flows in a single document. For any document that includes multiple flow support the
-[HomeArtboard](./reference/interactions.md#module_interactions-homeArtboard) API will return the most upper left artboard and [isHomeArtBoard](./reference/scenegraph.md#Artboard-isHomeArtBoard) will only return `true` for the most upper left artboard.
-
-
-XD Release 30.0.12 (June 2020)
--------------------------------------
-
-### New features
-* **Scrollable Groups** -- Plugins will see a new [ScrollableGroup](./reference/scenegraph.md#ScrollableGroup) node type and can read the scroll direction(s) and viewport size. Plugins cannot yet create a ScrollableGroup or modify its viewport, however.
-
-### Known Issues
-* **Content Aware Stacks** -- Some plugin actions, such as changing a node's position or its Responsive Resize constraints, may be ignored or behave unexpectedly when the node's parent is a Group with Stack layout enabled. Plugins cannot yet create, read, or modify Stack layout settings on a Group.
-
-* MouseEvent `clientX`/`clientY` and `offsetX`/`offsetY` values are incorrect (and always have been) -- these values will probably change in the _next_ XD release, so do not rely on them.
-
-
-XD Release 29.0.32 (May 2020)
--------------------------------------
-
-### New API features
-* **[Read & modify Responsive Resize constraints](./reference/scenegraph.md#SceneNode-horizontalConstraints)**
-* **[Set metadata readable by other plugins](./reference/scenegraph.md#SceneNode-sharedPluginData)**
-* [Check if two nodes share the same raster image asset](./reference/ImageFill.md#ImageFill-assetId)
-
-### UXP upgrade
-The common plugin runtime has been upgraded to UXP 3.4.4, bringing a range of new features and bug fixes:
-
-New features:
-* **`HTMLElement.innerText` property**
-* Custom text field styling using `appearance: none`
-* `HTMLElement.scrollTo()` method
-* SVG `` and ``
-* Get version of the UXP runtime & version of your own plugin via `require("uxp").versions.uxp` / `.versions.plugin`
-* Limited support for CustomElementRegistry (using `is` but not using custom HTML tags; Web Components APIs such as `attachShadow()` remain unsupported)
-* `HTMLImageElement.complete` flag
-
-Bug fixes:
-* Fixed a crash when drag operations started
-* The data transfer is initiated properly at the start of the `dragend` event
-* Fixed the resolution of image URLs to plugin:, plugin-data, plugin-temp for UWP
-* Fixed a bug where context menus didn’t stay open
-* Fixed improper word breaking in certain edge cases
-* Improved stack trace length limitations
-
-### Breaking API changes
-
-* `ImageFill.toString()` has changed: it no longer includes the full path of the originally imported file, and adds image dimensions to aid in debugging console logs.
-
-### Known Issues
-
-* MouseEvent `clientX`/`clientY` and `offsetX`/`offsetY` values are incorrect (and always have been) -- these values will change in a near-future XD release, so do not rely on them.
-
-### Plugin submission process
-
-* The "Adobe I/O Console" has been renamed "Adobe Developer Console," with a new link: https://console.adobe.io/projects
-* Preview how your listing will look in XD before submitting it for review.
-* Publish updates at a specific time of your choosing by opting out of instant publishing when your plugin submission is approved.
-
-
-XD Release 28.0.12 (March 2020)
--------------------------------------
-XD 28 is a minor update for plugin developers:
-
-* `SceneNode.BLEND_MODE_*` constants for use with the [`SceneNode.blendMode`](./reference/scenegraph.md#SceneNode-blendMode) property (which was introduced in XD 27).
-* Quickly look up a scenenode by its GUID with [`scenegraph.getNodeByGUID()`](./reference/scenegraph.md#module_scenegraph-getNodeByGUID).
-* Easily check if a scenenode is currently in scope for editing with [`isInEditContext()`](./reference/selection.md#selection-isInEditContext).
-
-### Known Issues
-* XD 28 introduces two new types of interaction actions: audio-file playback, and "scroll to" actions. Interactions using these features are not visible to plugins yet (*speech*
- playback interactions *are* exposed though). See the [interactions API documentation](./reference/interactions.md#module_interactions-allInteractions) for a complete list of
- which interaction types are & aren't exposed to plugins at this time.
-
-[Read more about XD 28 new features for end users on the Adobe blog](https://theblog.adobe.com/xd-march-2020-audio-prototyping-anchor-links-more).
-
-
-XD Release 27.0.12 (February 2020)
--------------------------------------
-XD 27 is a minor update for plugin developers, with one new added API:
-
-* Get and set [`SceneNode.blendMode`](./reference/scenegraph.md#SceneNode-blendMode)
-
-[Read more about XD 27 new features for end users on the Adobe blog](https://theblog.adobe.com/announcing-mac-os-voice-control-adobe-xd).
-
-
-XD Release 26.0.12 (January 2020)
--------------------------------------
-
-### Drag & drop
-UXP now supports the [HTML5 Drag & Drop specification](https://html.spec.whatwg.org/multipage/dnd.html) for _some specific use cases_:
-
-* **Drag & drop within your plugin's UI**
- * On the drag source in your UI, set the `draggable` attribute _and_ define a `dragstart` event handler that stores whatever data you want via `dataTransfer.setData()`.
- * On the drop target in your UI, defined `dragenter`, `dragover`, and `drop` event handlers that react appropriately.
-* **Drag from plugin panel UI into XD document**
- * Only bitmap images, SVG content, or text can be dropped into the document.
- * Provide the mimetype `text/uri-list` and populate it only with local file paths (see [`File.nativePath`](./reference/uxp/module/storage.md#module-storage-entry-nativepath)) and/or `data:` image URIs.
- * This will behave exactly the same as if the user had dropped files onto XD -- dropping an image onto a shape will use it as a mask, dropping multiline text onto a Repeat Grid text node will populate each grid cell with each line from the text content, etc.
-* It is not yet supported to drag content _onto_ your plugin from an outside source (e.g. dropping files on your plugin UI, or dragging images from another app into your plugin UI).
-
-For more, [see this **sample plugin code**](https://github.com/AdobeXD/plugin-samples/tree/master/ui-panel-simple-drag-and-drop).
-
-### Debugging with Chrome DevTools _(beta)_
-You can now use the Chrome DevTools UI (CDT) to debug your JS code -- and _to a limited extent_, inspect your UI DOM structure. **Read the updated [debugging tutorial](./tutorials/debugging/index.md)** for details.
-
-**What works:**
-* Set breakpoints, pause & stop through code, inspect the values of variables
-* View objects and run code in the Console view
-* View and edit the "HTML" DOM structure of your plugin's UXP UI
-
-**Important caveats:**
-* XD may be unstable while debugging a plugin. Don't debug when you have important XD documents open.
-* If you leave CDT on the Elements view, XD will crash the next time you open it. If this happens, keep CDT open after XD crashes and switch to a different tab. Then close CDT, restart XD, and begin debugging again.
-* Debugging on Windows requires some extra steps run with admin rights -- see tutorial for details.
-* Many features in the Elements tab do not work. You can view DOM structure, and view limited CSS information but not edit CSS rules. The "Select an element" button does nothing.
-* Error messages are often _missing_ from the Console view. Use the _Plugins > Development > Developer Console_ view in XD to be sure you are not missing any important information.
-* Other DevTools features such as the Network or Profiling tabs are not supported and may behave erratically if you attempt to use them.
-* XD will be partially frozen while paused on a JS breakpoint. Don't try to interact with XD while paused.
-* You may see a blank white panel to the left of the DevTools UI. Ignore this, as it does nothing.
-
-### Other API updates
-* Polygon scenenodes can now take on a star shape - see [`Polygon.starRatio`](./reference/scenegraph.md#Polygon-starRatio)
-
-
-XD Release 25.1.12 (December 2019)
--------------------------------------
-
-XD 25 is a minor bug-fix release with no new features for end users. But it adds two small improvements for plugins:
-
-* New [`application.activeDocument` API](./reference/application.md#module_application-activeDocument) providing information about the document.
-* Fixed bug where `scenegraph.root.guid` did not return a valid guid; it now returns the same value as `application.activeDocument.guid`.
-
-
-XD Release 24.0.22 (November 2019)
--------------------------------------
-
-### New XD Features
-
-[Read more about XD's biggest release of the year here](https://theblog.adobe.com/xd-november-2019-update-coediting-more/).
-
-* **Live Co-editing _beta_**
- * Plugin [edit operations](./reference/core/lifecycle.md#edit-operations) (`editDocument()` or menu commands) are still fully atomic. Outside those blocks, edits from a remote user can come in at any time, just like edits from the local user could. Edits made by remote users will trigger a plugin panel's `update()` method, just the same as edits made by the local user.
- * If a plugin edit conflicts with a remote user's edit that started slightly sooner, the plugin edit will get cleanly reverted (in favor of the other user's edit) _after_ the plugin operation has fully completed.
- * Remote updates are paused in a known-good document state while a plugin edit is in progress (including the lifespan of any modal dialogs), so the scenegraph state won't change while your code is in the middle of processing it. Similarly, updates made by the plugin are sent atomically to remote users once the entire plugin edit operation has finished.
-
-* **Component states & interactions**
- * For each Component instance, only the currently active state is visible in the scenegraph hierarchy. Content in other, non-visible states is not accessible to plugins yet.
- * Hover and state-change interactions are not exposed to plugins yet, but will be in the future. If your plugin is reading interactions/prototyping data, be sure to always have a default case if your code encounters unexpected types.
- * Reminder: a single scenenode can return multiple interactions from [`node.triggeredInteractions`](./reference/scenegraph.md#SceneNode-triggeredInteractions). This was possible before in some cases, but is allowed in more cases now (for example, one node can have a click/tap trigger, a drag trigger, *and* a hover trigger).
-
-* **New Plugin Manager UI**
- * Users can rate plugins on a 5-star rating scale.
- * Users can sort by popularity or rating, filter by category, and easily share deep links to a specific plugin.
- * Each plugin listing now displays one or more screenshots (see "New plugin listing process" below for how to add these).
- * If you have a plugin in development *and* an installed plugin with the same id, Plugin Manager now shows both for clarity. You can still only enable one of them at a time, though.
-
-* **Sharing enhancements**
- * The [`cloud.getSharedArtifacts()` API](./reference/cloud.md#module_cloud-getSharedArtifacts) may now return an arbitrary number of shared links, and there may be more than one link of the same type (e.g. multiple specs links).
- * The distinction between link types has blurred a bit: links that are `ArtifactType.SPECS` may _also_ include access to an interactive prototype view, just like links of type `ArtifactType.PROTOTYPE`.
-
-### Smaller fixes and improvements
-* Fixed issue where `shell.openExternal()` was allowing plugins to launch non-Web URL protocols in a way that only worked on Mac. Full cross-platform support for doing this will be added in the future.
-* CSS / DOM event improvements in UXP plugin UI -- including support for text input color, img `srcset`, and online/offline events. [Read more](https://medium.com/adobetech/whats-new-for-developers-in-adobe-xd-24-max-release-5cee8e3eea6f#7b2e).
-* Fixed text descender clipping in plugin UI on Mac.
-* Plugin panels now include the plugin's icons in the panel header, next to your plugin's name.
-
-### Known Issues
-* Live Co-editing is still a beta feature. Performance and reliability will not be comparable to other aspects of XD yet.
- * Plugins that edit a large number of objects at once may not work reliably when using Live Co-editing.
- * If the user makes multiple consecutive edits using a plugin, some of the edits may get erroneously reverted when using Live Co-editing.
- * Plugin dialog boxes that a user leaves open for a long time may not work correctly when using Live Co-editing.
- * Users may be unable to undo edits made by a plugin when using Live Co-editing.
-* Hover and state-transition interactions are not returned to plugins yet when requesting the list of interactions on a scenenode or the entire document.
-
-
-XD Release 23.1.32 (October 2019)
--------------------------------------
-
-### New plugin listing process
-Information shown in the plugin listing has moved out of `manifest.json` and is instead provided online when you submit a plugin to the listing.
-
-* Submitting a plugin also now requires at least one _screenshot image_.
-* Icons seen in the Plugin Manager list must be provided online during submission, but icons seen in the Plugins side panel must still be part of the plugin package folder.
-* As of XD 23, the Plugin Manager UI ignores description, author, links, etc. in `manifest.json`. Submitting to the public listing is now the _only_ way to display this info in Plugin Manager. See [updated manifest documentation](./reference/structure/manifest.md).
-* As of September 24, submitting a new or updated plugin to the public listing requires supplying all these details via the developer submission portal online. See [How to submit to Plugin Manager](distribution/how-to-submit-to-plugin-manager.md).
-
-### Smaller fixes and improvements
-* Clarified that `editDocument()` does not support the `mergeId` option for UI events that are not "high frequency."
-* Can `preventDefault()` on Esc or Enter in text fields to prevent the default action of sending focus back to the canvas.
-* Fixed bug with setting opacity of BooleanGroup nodes.
-* Plugin Manager UI shows plugins that were disabled because they're incompatible with the current version of XD, with tooltip explaining why.
-* Several fixes to UI layout & CSS handling -- [details here](https://medium.com/adobetech/whats-new-for-developers-in-adobe-xd-23-october-release-ed7cb04b6e2f).
-
-
-----
-
-XD Release 22.0.12 (August 2019)
-----------------------------------
-
-After a stabilization period, plugins using panel UI are now published in the Plugin Manager listing!
-
-### Fixes and improvements
-
-* Fixed bugs related to `editDocument()` usage (also fixed in XD 21.1.12).
-* PUT/POST requests on Windows were including an unwanted `Transfer-Encoding` header, which interfered with uploading data to services like Amazon S3 (e.g. giving you errors related to `Content-Length`).
-* Plugins can now copy text to the clipboard in response to a panel UI DOM event without needing to call `editDocument()`.
-
-
-----
-
-XD Release 21.0.12 (July 2019)
-----------------------------------
-
-XD 21 adds major updates: the ability to **show panel UI**, and the much-improved **UXP 3 CSS & layout engine**.
-
-> **Danger**
->
-> _The new layout engine likely constitutes a **breaking change** for any plugin with UI_ -- read below for details.
-
-Also note that this release has an issue where transactions being wrapped by `editDocument` is _not_ enforced. This will be fixed in an upcoming patch version, so you will want to continue wrapping scenegraph changes from panels in `editDocument` so that your plugin isn't broken when we release the fix.
-
-### Plugin Panel UI
-
-* Plugins can now display UI persistently in a side panel. More information:
- * [How to define a panel](./reference/structure/handlers.md#panel)
- * [Panel overview / reference](./reference/ui/panels/index.md)
- * [Panel Quick Start tutorial](./tutorials/quick-start-panel/index.md)
- * [Migrating from dialogs to panels](./migrations/how-to-migrate-from-modal-to-panel.md)
-* A new default stylesheet is provided for plugin UI that renders inside a plugin. This means that UI that renders in one manner in a modal dialog may not render in the same exact manner in a panel.
-
-### UXP 3 HTML/CSS changes
-
-In order to gain access to most of these features, your plugin must _opt-in_ to the UXP 3.1 layout engine by changing the `minVersion` in your `manifest.json`:
-
-```json
- "host": {
- "minVersion": "21.0"
- }
-```
-
-> **NOTE:** Without this change, your plugin will run in [backwards-compatibility mode](./migrations/uxp-2-to-3.md).
-
-* **Layout engine**
- * **Inline layout** -- You now have the ability to write code like `
` and have the link render _inline_ with the rest of the text
- * **Layout now defaults to inline** (no longer flexbox) -- _This may break existing plugin UI code:_ now `span` elements will render with `inline`, `button`s will render as `inline-block`, etc.
- * **`overflow` defaults to `visible`** (no longer `hidden`), per the web specification -- _This may break existing plugin UI code._
- * `object-fit` -- to control the size of images
- * `z-index`
- * Improvements to `position`, including correct `absolute` semantics.
- * **WARNING**: Technically `position: fixed` is supported. However, _you should not use it_ in your plugin panels because there are some bugs that will be fixed in a future update that will break if your plugin uses `position: fixed`.
-* **SVG UI elements**
-* **New UI controls**
- * Radio buttons -- ``
- * Progress bars & spinners -- `