diff --git a/Classes/Domain/Service/StyleAndJavascriptInclusionService.php b/Classes/Domain/Service/StyleAndJavascriptInclusionService.php index 8cd241d83e..da787a4414 100644 --- a/Classes/Domain/Service/StyleAndJavascriptInclusionService.php +++ b/Classes/Domain/Service/StyleAndJavascriptInclusionService.php @@ -99,7 +99,7 @@ protected function build(array $resourceArrayToSort, \Closure $builderForLine): $hash = substr(md5_file($resourceExpression) ?: '', 0, 8); $resourceExpression = $this->resourceManager->getPublicPackageResourceUriByPath($resourceExpression); } - $finalUri = $hash ? $resourceExpression . '?' . $hash : $resourceExpression; + $finalUri = $hash ? $resourceExpression . (str_contains($resourceExpression, '?') ? '&' : '?') . $hash : $resourceExpression; $additionalAttributes = $element['attributes'] ?? []; // All scripts are deferred by default. This prevents the attribute from @@ -107,7 +107,6 @@ protected function build(array $resourceArrayToSort, \Closure $builderForLine): if (isset($additionalAttributes['defer'])) { unset($additionalAttributes['defer']); } - $result .= $builderForLine($finalUri, $this->htmlAttributesArrayToString($additionalAttributes)); } return $result; diff --git a/Resources/Private/Translations/en/Main.xlf b/Resources/Private/Translations/en/Main.xlf index 29f22bbcf3..112f57df44 100644 --- a/Resources/Private/Translations/en/Main.xlf +++ b/Resources/Private/Translations/en/Main.xlf @@ -394,6 +394,9 @@ For more information about the error please refer to the JavaScript console. + + Copy node type to clipboard + diff --git a/package.json b/package.json index 289e6fd6ac..016c41f232 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "bugs": "https://github.com/neos/neos-ui/issues", "homepage": "https://github.com/neos/neos-ui/blob/master/README.md", "license": "GNU GPLv3", - "version": "9.0.0-beta3", + "version": "8.3.7", "private": true, "resolutions": { "moment": "^2.20.1", @@ -44,6 +44,5 @@ "jest": { "preset": "@neos-project/jest-preset-neos-ui" }, - "packageManager": "yarn@3.2.0", - "stableVersion": "8.3.4" + "packageManager": "yarn@3.2.0" } diff --git a/packages/debug-reason-for-rendering/package.json b/packages/debug-reason-for-rendering/package.json index 1ccae8d9ce..3bd670bf7a 100644 --- a/packages/debug-reason-for-rendering/package.json +++ b/packages/debug-reason-for-rendering/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/debug-reason-for-rendering", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "React Performance Optimization Utility - Why does a component re-render?", "repository": "neos/neos-ui", "bugs": "https://github.com/neos/neos-ui/issues", @@ -9,6 +9,5 @@ "license": "MIT", "peerDependencies": { "react": "^16.12.0" - }, - "stableVersion": "8.3.4" + } } diff --git a/packages/jest-preset-neos-ui/package.json b/packages/jest-preset-neos-ui/package.json index 2cbf235f75..0463c5d65e 100644 --- a/packages/jest-preset-neos-ui/package.json +++ b/packages/jest-preset-neos-ui/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/jest-preset-neos-ui", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "The jest preset for all packages of the neos-ui mono-repo.", "main": "jest-preset.json", "private": true, @@ -13,6 +13,5 @@ "peerDependencies": { "enzyme": "^3.8.0" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ts-interfaces/package.json b/packages/neos-ts-interfaces/package.json index 311cfde4dd..189a597055 100644 --- a/packages/neos-ts-interfaces/package.json +++ b/packages/neos-ts-interfaces/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ts-interfaces", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Neos domain-related TypeScript interfaces", "private": true, "main": "src/index.ts", @@ -9,6 +9,5 @@ "@neos-project/neos-ui-build": "workspace:*", "typescript": "^4.6.4" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-backend-connector/package.json b/packages/neos-ui-backend-connector/package.json index fd5348fc81..6f1e7ab7b9 100644 --- a/packages/neos-ui-backend-connector/package.json +++ b/packages/neos-ui-backend-connector/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-backend-connector", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Endoints and fetch cals to the Neos CMS backend", "private": true, "main": "./src/index.ts", @@ -12,6 +12,5 @@ "@neos-project/neos-ts-interfaces": "workspace:*", "@neos-project/utils-helpers": "workspace:*" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-build/package.json b/packages/neos-ui-build/package.json index 3a6b12e257..9ca0c51991 100644 --- a/packages/neos-ui-build/package.json +++ b/packages/neos-ui-build/package.json @@ -1,7 +1,6 @@ { "name": "@neos-project/neos-ui-build", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Bob der Baumeister", - "private": true, - "stableVersion": "8.3.4" + "private": true } diff --git a/packages/neos-ui-ckeditor5-bindings/package.json b/packages/neos-ui-ckeditor5-bindings/package.json index b389504bda..1c8cdb1cb4 100644 --- a/packages/neos-ui-ckeditor5-bindings/package.json +++ b/packages/neos-ui-ckeditor5-bindings/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-ckeditor5-bindings", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Prepare CKEditor5 for the Neos CMS UI", "private": true, "main": "./src/manifest.js", @@ -34,6 +34,5 @@ "react": "^16.12.0", "react-redux": "^7.1.3" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-constants/package.json b/packages/neos-ui-constants/package.json index db5dff30f5..e95ec2960c 100644 --- a/packages/neos-ui-constants/package.json +++ b/packages/neos-ui-constants/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-constants", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Container package to store Neos CMS UI constants", "private": true, "main": "./src/index.js", @@ -8,6 +8,5 @@ "@neos-project/jest-preset-neos-ui": "workspace:*", "typescript": "^4.6.4" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-containers/package.json b/packages/neos-ui-containers/package.json index 8bd23a3e62..020cf01134 100644 --- a/packages/neos-ui-containers/package.json +++ b/packages/neos-ui-containers/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-containers", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Smart components for Neos CMS UI.", "private": true, "main": "./src/index.js", @@ -18,6 +18,5 @@ "prop-types": "^15.5.10", "react": "^16.12.0" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-contentrepository/package.json b/packages/neos-ui-contentrepository/package.json index 59ce91f7a0..df9e7d3c30 100644 --- a/packages/neos-ui-contentrepository/package.json +++ b/packages/neos-ui-contentrepository/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-contentrepository", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Bindings for the Neos ContentRepository", "private": true, "main": "./src/manifest.js", @@ -21,6 +21,5 @@ "setupFiles": [ "../jest-preset-neos-ui/src/setupNeosUiHostEnv.js" ] - }, - "stableVersion": "8.3.4" + } } diff --git a/packages/neos-ui-decorators/package.json b/packages/neos-ui-decorators/package.json index 3ab35bb6c5..5af1ad95bf 100644 --- a/packages/neos-ui-decorators/package.json +++ b/packages/neos-ui-decorators/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-decorators", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Decorators for Neos CMS UI.", "private": true, "main": "./src/index.ts", @@ -16,6 +16,5 @@ "@neos-project/neos-ts-interfaces": "workspace:*", "reselect": "^3.0.1" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-editors/package.json b/packages/neos-ui-editors/package.json index a00baecbcf..afc0571b67 100644 --- a/packages/neos-ui-editors/package.json +++ b/packages/neos-ui-editors/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-editors", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Neos CMS UI Editors for use in the inspector.", "main": "src/manifest.js", "private": true, @@ -42,6 +42,5 @@ "react-redux": "^7.1.3", "redux": "^4.0.5" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-extensibility-webpack-adapter/package.json b/packages/neos-ui-extensibility-webpack-adapter/package.json index ef4b9146df..f7624b24cc 100644 --- a/packages/neos-ui-extensibility-webpack-adapter/package.json +++ b/packages/neos-ui-extensibility-webpack-adapter/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-extensibility-webpack-adapter", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Minimal configuration, highly opinionated Webpack 4 + Babel plugin build stack for the Neos CMS UI", "repository": "neos/neos-ui", "bugs": "https://github.com/neos/neos-ui/issues", @@ -36,6 +36,5 @@ "babel-core": "^6.26.3", "typescript": "^4.6.4" } - }, - "stableVersion": "8.3.4" + } } diff --git a/packages/neos-ui-extensibility/package.json b/packages/neos-ui-extensibility/package.json index 070ac2967f..1c1104f806 100644 --- a/packages/neos-ui-extensibility/package.json +++ b/packages/neos-ui-extensibility/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-extensibility", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Core of the extensibility mechanisms for the Neos UI", "repository": "neos/neos-ui", "bugs": "https://github.com/neos/neos-ui/issues", @@ -22,6 +22,5 @@ }, "dependencies": { "@neos-project/positional-array-sorter": "workspace:*" - }, - "stableVersion": "8.3.4" + } } diff --git a/packages/neos-ui-guest-frame/package.json b/packages/neos-ui-guest-frame/package.json index 46cdaff80b..61ce3b322f 100644 --- a/packages/neos-ui-guest-frame/package.json +++ b/packages/neos-ui-guest-frame/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-guest-frame", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Guest frame initialization bindings", "private": true, "main": "./src/manifest.js", @@ -28,6 +28,5 @@ "react": "^16.12.0", "react-redux": "^7.1.3" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-i18n/package.json b/packages/neos-ui-i18n/package.json index 14d096ffad..dd4227fa9f 100644 --- a/packages/neos-ui-i18n/package.json +++ b/packages/neos-ui-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-i18n", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "I18n utilities and components for Neos CMS UI.", "private": true, "main": "./src/index.tsx", @@ -18,6 +18,5 @@ "peerDependencies": { "react": "^16.12.0" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-inspector/package.json b/packages/neos-ui-inspector/package.json index 84143b365f..d25e7b86af 100644 --- a/packages/neos-ui-inspector/package.json +++ b/packages/neos-ui-inspector/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-inspector", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Components for integrating views and editors into the Neos CMS UI inspector.", "private": true, "main": "./src/index.js", @@ -19,6 +19,5 @@ "react": "^16.12.0", "react-redux": "^7.1.3" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-redux-store/package.json b/packages/neos-ui-redux-store/package.json index 2ede5eee1b..4ec2e6049d 100644 --- a/packages/neos-ui-redux-store/package.json +++ b/packages/neos-ui-redux-store/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-redux-store", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Redux store implementation for the Neos CMS UI", "private": true, "main": "./src/index.ts", @@ -19,6 +19,5 @@ "reselect": "^3.0.1", "typesafe-actions": "^5.1.0" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-sagas/package.json b/packages/neos-ui-sagas/package.json index 88d77690e9..4c4eedb0a4 100644 --- a/packages/neos-ui-sagas/package.json +++ b/packages/neos-ui-sagas/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-sagas", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Redux Sagas implementation for the Neos CMS UI", "private": true, "main": "src/index.js", @@ -18,6 +18,5 @@ "mousetrap": "^1.6.3", "redux-saga": "^0.15.0" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-validators/package.json b/packages/neos-ui-validators/package.json index 0efeee2859..8cb13efdfb 100644 --- a/packages/neos-ui-validators/package.json +++ b/packages/neos-ui-validators/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-validators", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Validators for Neos CMS UI.", "private": true, "main": "./src/index.ts", @@ -18,6 +18,5 @@ "peerDependencies": { "react": "^16.12.0" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-views/package.json b/packages/neos-ui-views/package.json index 96cfebeeb2..1c9d2c50ce 100644 --- a/packages/neos-ui-views/package.json +++ b/packages/neos-ui-views/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui-views", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Neos CMS UI Views for use in the inspector.", "main": "./src/index.js", "private": true, @@ -27,6 +27,5 @@ "react": "^16.12.0", "react-redux": "^7.1.3" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/neos-ui-views/src/NodeInfoView/index.js b/packages/neos-ui-views/src/NodeInfoView/index.js index 7815da6551..e82d6a2baa 100644 --- a/packages/neos-ui-views/src/NodeInfoView/index.js +++ b/packages/neos-ui-views/src/NodeInfoView/index.js @@ -1,9 +1,9 @@ import React, {PureComponent} from 'react'; import PropTypes from 'prop-types'; import {connect} from 'react-redux'; - import {neos} from '@neos-project/neos-ui-decorators'; import {selectors} from '@neos-project/neos-ui-redux-store'; +import {IconButton} from '@neos-project/react-ui-components'; import style from './style.module.css'; @connect(state => ({ @@ -22,6 +22,19 @@ export default class NodeInfoView extends PureComponent { i18nRegistry: PropTypes.object.isRequired } + nodeTypeNameRef = React.createRef(); + + copyNodeToClipboard = () => { + this.nodeTypeNameRef.current.select(); + const result = document.execCommand('copy'); + + if (result) { + this.props.addFlashMessage('copiedToClipboard', 'Copied nodetype to clipboard', 'success'); + } else { + this.props.addFlashMessage('copiedToClipboardFailed', 'Could not copy to clipboard', 'error'); + } + } + render() { const {focusedNodeContextPath, getNodeByContextPath, i18nRegistry} = this.props; @@ -36,8 +49,8 @@ export default class NodeInfoView extends PureComponent { }; const nodeType = node?.nodeType; - // Insert soft hyphens after dots and colon to make the node type more readable - const hyphenatedNodeTypeName = nodeType.replace(/([.:])/g, '$1\u00AD'); + // Insert word breaking tags to make the node type more readable + const wrappingNodeTypeName = nodeType?.replace(/([:.])/g, '$1'); return ( ); diff --git a/packages/neos-ui-views/src/NodeInfoView/style.module.css b/packages/neos-ui-views/src/NodeInfoView/style.module.css index a331e47e88..5a4e449eeb 100644 --- a/packages/neos-ui-views/src/NodeInfoView/style.module.css +++ b/packages/neos-ui-views/src/NodeInfoView/style.module.css @@ -5,6 +5,7 @@ } .nodeInfoView__item { + position: relative; background-color: var(--colors-ContrastDarkest); padding: 8px 12px; margin-bottom: 1px; @@ -33,3 +34,21 @@ hyphenate-character: ''; word-wrap: break-word; } + +.nodeInfoView__nodeTypeTextarea { + opacity: 0; + width: 0; + height: 0; + overflow: hidden; + border: 0; + position: absolute; +} + +.nodeInfoView__copyButton { + position: absolute; + top: 5px; + right: 5px; + width: 30px; + min-width: 30px; + height: 30px; +} diff --git a/packages/neos-ui/package.json b/packages/neos-ui/package.json index e1be3a7a88..14b54a56ff 100644 --- a/packages/neos-ui/package.json +++ b/packages/neos-ui/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/neos-ui", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Neos CMS UI written in ReactJS and a ton of other fun technology.", "private": true, "devDependencies": { @@ -64,6 +64,5 @@ "reselect": "^3.0.1", "uuid": "^3.3.2" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/positional-array-sorter/package.json b/packages/positional-array-sorter/package.json index e870af0ef8..d028ee1288 100644 --- a/packages/positional-array-sorter/package.json +++ b/packages/positional-array-sorter/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/positional-array-sorter", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Flexible array sorter that sorts an array according to a 'position' meta data.", "repository": "neos/neos-ui", "bugs": "https://github.com/neos/neos-ui/issues", @@ -19,6 +19,5 @@ "devDependencies": { "@neos-project/jest-preset-neos-ui": "workspace:*", "typescript": "^4.6.4" - }, - "stableVersion": "8.3.4" + } } diff --git a/packages/react-proptypes/package.json b/packages/react-proptypes/package.json index 43a2bf00b2..747b08e3e2 100644 --- a/packages/react-proptypes/package.json +++ b/packages/react-proptypes/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/react-proptypes", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Neos CMS specific proptypes for react", "private": true, "main": "./src/index.js", @@ -11,6 +11,5 @@ "peerDependencies": { "prop-types": "^15.5.10" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/react-ui-components/package.json b/packages/react-ui-components/package.json index f04b31b76a..5e802a5c7d 100644 --- a/packages/react-ui-components/package.json +++ b/packages/react-ui-components/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/react-ui-components", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "The UI components which power the Neos backend application.", "repository": "neos/neos-ui", "bugs": "https://github.com/neos/neos-ui/issues", @@ -95,6 +95,5 @@ "stylelint": "^13.7.2", "typescript": "^4.6.0" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/react-ui-components/src/DateInput/__snapshots__/dateInput.spec.tsx.snap b/packages/react-ui-components/src/DateInput/__snapshots__/dateInput.spec.tsx.snap index 05de187df9..4a306f7ffc 100644 --- a/packages/react-ui-components/src/DateInput/__snapshots__/dateInput.spec.tsx.snap +++ b/packages/react-ui-components/src/DateInput/__snapshots__/dateInput.spec.tsx.snap @@ -88,22 +88,6 @@ exports[` should format time in 24 hour format 1`] = ` timeFormat="HH:m" utc={false} /> - - applyLabel - `; diff --git a/packages/utils-helpers/package.json b/packages/utils-helpers/package.json index eb81ba87bd..7bba93fb5a 100644 --- a/packages/utils-helpers/package.json +++ b/packages/utils-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/utils-helpers", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Helper functions for Neos CMS UI.", "private": true, "main": "./src/index.ts", @@ -11,6 +11,5 @@ "@neos-project/jest-preset-neos-ui": "workspace:*", "typescript": "^4.6.4" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/utils-logger/package.json b/packages/utils-logger/package.json index f4ce938376..28ea7aaf35 100644 --- a/packages/utils-logger/package.json +++ b/packages/utils-logger/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/utils-logger", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Logger implementation for Neos CMS UI.", "private": true, "main": "./src/index.ts", @@ -11,6 +11,5 @@ "@neos-project/jest-preset-neos-ui": "workspace:*", "typescript": "^4.6.4" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" } diff --git a/packages/utils-redux/package.json b/packages/utils-redux/package.json index 80432d5462..582fcf0598 100644 --- a/packages/utils-redux/package.json +++ b/packages/utils-redux/package.json @@ -1,6 +1,6 @@ { "name": "@neos-project/utils-redux", - "version": "9.0.0-beta3", + "version": "8.3.7", "description": "Neos CMS UI Redux Helper utilitites", "private": true, "main": "./src/index.ts", @@ -8,6 +8,5 @@ "@neos-project/jest-preset-neos-ui": "workspace:*", "typescript": "^4.6.4" }, - "license": "GNU GPLv3", - "stableVersion": "8.3.4" + "license": "GNU GPLv3" }