From 554416c6a526a1f438d29e9df3b21e9d3f0e8820 Mon Sep 17 00:00:00 2001 From: "Kevin Tan (Valius)" Date: Sun, 5 Nov 2023 01:09:25 -0700 Subject: [PATCH 001/570] Add mks file support to subtitle uploader component and template --- src/components/subtitleuploader/subtitleuploader.js | 2 +- src/components/subtitleuploader/subtitleuploader.template.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/subtitleuploader/subtitleuploader.js b/src/components/subtitleuploader/subtitleuploader.js index 6cd3f1ff25..e5e262c2ef 100644 --- a/src/components/subtitleuploader/subtitleuploader.js +++ b/src/components/subtitleuploader/subtitleuploader.js @@ -32,7 +32,7 @@ function onFileReaderError(evt) { } function isValidSubtitleFile(file) { - return file && ['.sub', '.srt', '.vtt', '.ass', '.ssa'] + return file && ['.sub', '.srt', '.vtt', '.ass', '.ssa', '.mks'] .some(function(ext) { return file.name.endsWith(ext); }); diff --git a/src/components/subtitleuploader/subtitleuploader.template.html b/src/components/subtitleuploader/subtitleuploader.template.html index 7febd1e7ac..7a498c0616 100644 --- a/src/components/subtitleuploader/subtitleuploader.template.html +++ b/src/components/subtitleuploader/subtitleuploader.template.html @@ -22,7 +22,7 @@
${LabelDropSubtitleHere}
- +

From 27eb2a6ff68e7016e7d67417ea98896ee541961d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Nov 2023 01:06:46 +0000 Subject: [PATCH 002/570] Bump axios from 1.3.4 to 1.6.1 Bumps [axios](https://github.com/axios/axios) from 1.3.4 to 1.6.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.3.4...v1.6.1) --- updated-dependencies: - dependency-name: axios dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba2e2955b3..c1078d4c9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5728,9 +5728,9 @@ } }, "node_modules/axios": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", - "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", + "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", "peer": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -26361,9 +26361,9 @@ "dev": true }, "axios": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", - "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", + "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", "peer": true, "requires": { "follow-redirects": "^1.15.0", From 7265308c8b1d09882ce4d77f4280ff0f64d31362 Mon Sep 17 00:00:00 2001 From: Yenof <122739279+Yenof@users.noreply.github.com> Date: Sat, 28 Oct 2023 17:11:33 -0700 Subject: [PATCH 003/570] Randomize backdrop images in screensaver This provides a more varied experience viewing the backdrop screensaver. --- src/components/slideshow/slideshow.js | 4 +++- src/plugins/backdropScreensaver/plugin.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index c57886e0b0..7980a62c98 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -14,6 +14,7 @@ import 'material-design-icons-iconfont'; import '../../elements/emby-button/paper-icon-button-light'; import ServerConnections from '../ServerConnections'; import screenfull from 'screenfull'; +import { randomInt } from '../../utils/number.ts'; /** * Name of transition event. @@ -71,7 +72,8 @@ function getBackdropImageUrl(item, options, apiClient) { } if (item.BackdropImageTags?.length) { - options.tag = item.BackdropImageTags[0]; + options.index = randomInt(0, item.BackdropImageTags.length - 1); + options.tag = item.BackdropImageTags[options.index]; return apiClient.getScaledImageUrl(item.Id, options); } diff --git a/src/plugins/backdropScreensaver/plugin.js b/src/plugins/backdropScreensaver/plugin.js index 60d28a67cc..1058be5be7 100644 --- a/src/plugins/backdropScreensaver/plugin.js +++ b/src/plugins/backdropScreensaver/plugin.js @@ -18,7 +18,7 @@ class BackdropScreensaver { SortBy: 'Random', Recursive: true, Fields: 'Taglines', - ImageTypeLimit: 1, + ImageTypeLimit: 10, StartIndex: 0, Limit: 200 }; From 4a17c78a8566e4ca4fcc5663f73e286cd218277d Mon Sep 17 00:00:00 2001 From: rafma0 Date: Wed, 15 Nov 2023 03:11:45 -0300 Subject: [PATCH 004/570] replace marked with markdown-it --- package-lock.json | 154 ++++++++++++++++-- package.json | 3 +- .../dashboard/plugins/add/index.js | 4 +- src/controllers/itemDetails/index.js | 4 +- src/controllers/session/login/index.js | 4 +- webpack.common.js | 2 +- 6 files changed, 146 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index c94b9ddce3..01b133aeb6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ "jstree": "3.3.16", "libarchive.js": "1.3.0", "lodash-es": "4.17.21", - "marked": "9.1.5", + "markdown-it": "13.0.2", "material-design-icons-iconfont": "6.7.0", "native-promise-only": "0.8.1", "pdfjs-dist": "3.11.174", @@ -71,6 +71,7 @@ "@types/escape-html": "1.0.4", "@types/loadable__component": "5.13.7", "@types/lodash-es": "4.17.11", + "@types/markdown-it": "13.0.6", "@types/react": "17.0.70", "@types/react-dom": "17.0.23", "@types/sortablejs": "1.15.5", @@ -4375,6 +4376,12 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "node_modules/@types/linkify-it": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", + "dev": true + }, "node_modules/@types/loadable__component": { "version": "5.13.7", "resolved": "https://registry.npmjs.org/@types/loadable__component/-/loadable__component-5.13.7.tgz", @@ -4408,6 +4415,22 @@ "@types/lodash": "*" } }, + "node_modules/@types/markdown-it": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.6.tgz", + "integrity": "sha512-0VqpvusJn1/lwRegCxcHVdmLfF+wIsprsKMC9xW8UPcTxhFcQtoN/fBU1zMe8pH7D/RuueMh2CaBaNv+GrLqTw==", + "dev": true, + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", + "dev": true + }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -12390,6 +12413,14 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, + "node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, "node_modules/loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -12650,23 +12681,43 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/markdown-it": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", + "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/markdown-table": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true }, - "node_modules/marked": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.5.tgz", - "integrity": "sha512-14QG3shv8Kg/xc0Yh6TNkMj90wXH9mmldi5941I2OevfJ/FQAFLEwtwU2/FfgSAOMlWHrEukWSGQf8MiVYNG2A==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 16" - } - }, "node_modules/marks-pane": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/marks-pane/-/marks-pane-1.0.9.tgz", @@ -12706,6 +12757,11 @@ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -21319,6 +21375,11 @@ "node": ">=14.17" } }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, "node_modules/ufo": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz", @@ -25323,6 +25384,12 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "@types/linkify-it": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", + "dev": true + }, "@types/loadable__component": { "version": "5.13.7", "resolved": "https://registry.npmjs.org/@types/loadable__component/-/loadable__component-5.13.7.tgz", @@ -25355,6 +25422,22 @@ "@types/lodash": "*" } }, + "@types/markdown-it": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.6.tgz", + "integrity": "sha512-0VqpvusJn1/lwRegCxcHVdmLfF+wIsprsKMC9xW8UPcTxhFcQtoN/fBU1zMe8pH7D/RuueMh2CaBaNv+GrLqTw==", + "dev": true, + "requires": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "@types/mdurl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", + "dev": true + }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -31310,6 +31393,14 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, + "linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "requires": { + "uc.micro": "^1.0.1" + } + }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -31520,17 +31611,36 @@ "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", "dev": true }, + "markdown-it": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", + "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" + } + } + }, "markdown-table": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true }, - "marked": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.5.tgz", - "integrity": "sha512-14QG3shv8Kg/xc0Yh6TNkMj90wXH9mmldi5941I2OevfJ/FQAFLEwtwU2/FfgSAOMlWHrEukWSGQf8MiVYNG2A==" - }, "marks-pane": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/marks-pane/-/marks-pane-1.0.9.tgz", @@ -31562,6 +31672,11 @@ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -37896,6 +38011,11 @@ "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, "ufo": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.1.tgz", diff --git a/package.json b/package.json index 8cbeaef407..20462ed4a4 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@types/escape-html": "1.0.4", "@types/loadable__component": "5.13.7", "@types/lodash-es": "4.17.11", + "@types/markdown-it": "13.0.6", "@types/react": "17.0.70", "@types/react-dom": "17.0.23", "@types/sortablejs": "1.15.5", @@ -107,7 +108,7 @@ "jstree": "3.3.16", "libarchive.js": "1.3.0", "lodash-es": "4.17.21", - "marked": "9.1.5", + "markdown-it": "13.0.2", "material-design-icons-iconfont": "6.7.0", "native-promise-only": "0.8.1", "pdfjs-dist": "3.11.174", diff --git a/src/controllers/dashboard/plugins/add/index.js b/src/controllers/dashboard/plugins/add/index.js index ca19d3f4d9..69dfc51f31 100644 --- a/src/controllers/dashboard/plugins/add/index.js +++ b/src/controllers/dashboard/plugins/add/index.js @@ -1,5 +1,5 @@ import 'jquery'; -import { marked } from 'marked'; +import markdownIt from 'markdown-it'; import DOMPurify from 'dompurify'; import loading from '../../../../components/loading/loading'; import globalize from '../../../../scripts/globalize'; @@ -15,7 +15,7 @@ function populateHistory(packageInfo, page) { for (let i = 0; i < length; i++) { const version = packageInfo.versions[i]; html += '

' + version.version + '

'; - html += '
' + DOMPurify.sanitize(marked(version.changelog)) + '
'; + html += '
' + DOMPurify.sanitize(markdownIt().render(version.changelog)) + '
'; } $('#revisionHistory', page).html(html); diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index da0945ec9c..0108a4c347 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1,6 +1,6 @@ import { intervalToDuration } from 'date-fns'; import DOMPurify from 'dompurify'; -import { marked } from 'marked'; +import markdownIt from 'markdown-it'; import escapeHtml from 'escape-html'; import isEqual from 'lodash-es/isEqual'; @@ -859,7 +859,7 @@ function renderOverview(page, item) { const overviewElements = page.querySelectorAll('.overview'); if (overviewElements.length > 0) { - const overview = DOMPurify.sanitize(marked(item.Overview || '')); + const overview = DOMPurify.sanitize(markdownIt().render(item.Overview || '')); if (overview) { for (const overviewElemnt of overviewElements) { diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index e304f463ea..fabd087dba 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -1,5 +1,5 @@ import DOMPurify from 'dompurify'; -import { marked } from 'marked'; +import markdownIt from 'markdown-it'; import { appHost } from '../../../components/apphost'; import appSettings from '../../../scripts/settings/appSettings'; import dom from '../../../scripts/dom'; @@ -282,7 +282,7 @@ export default function (view, params) { apiClient.getJSON(apiClient.getUrl('Branding/Configuration')).then(function (options) { const loginDisclaimer = view.querySelector('.loginDisclaimer'); - loginDisclaimer.innerHTML = DOMPurify.sanitize(marked(options.LoginDisclaimer || '')); + loginDisclaimer.innerHTML = DOMPurify.sanitize(markdownIt().render(options.LoginDisclaimer || '')); for (const elem of loginDisclaimer.querySelectorAll('a')) { elem.rel = 'noopener noreferrer'; diff --git a/webpack.common.js b/webpack.common.js index 5c4d283b26..be89406e7b 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -196,7 +196,7 @@ const config = { path.resolve(__dirname, 'node_modules/flv.js'), path.resolve(__dirname, 'node_modules/is-what'), path.resolve(__dirname, 'node_modules/libarchive.js'), - path.resolve(__dirname, 'node_modules/marked'), + path.resolve(__dirname, 'node_modules/markdown-it'), path.resolve(__dirname, 'node_modules/react-router'), path.resolve(__dirname, 'node_modules/screenfull'), path.resolve(__dirname, 'node_modules/ssr-window'), From 61c8803a7120918db5040e48323862d320ec247e Mon Sep 17 00:00:00 2001 From: DinuD Date: Wed, 15 Nov 2023 20:50:38 +0000 Subject: [PATCH 005/570] Disable sync correction by default --- CONTRIBUTORS.md | 1 + src/plugins/syncPlay/core/PlaybackCore.js | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 7b5e4aeccd..eb5f1ce357 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -72,6 +72,7 @@ - [LittleBigOwI] (https://github.com/LittleBigOwI/) - [Nate G](https://github.com/GGProGaming) - [Grady Hallenbeck](https://github.com/grhallenbeck) + - [DinuD](https://github.com/DinuD) # Emby Contributors diff --git a/src/plugins/syncPlay/core/PlaybackCore.js b/src/plugins/syncPlay/core/PlaybackCore.js index effa1cab62..73ab977eb6 100644 --- a/src/plugins/syncPlay/core/PlaybackCore.js +++ b/src/plugins/syncPlay/core/PlaybackCore.js @@ -3,7 +3,6 @@ * @module components/syncPlay/core/PlaybackCore */ -import browser from '../../../scripts/browser'; import Events from '../../../utils/events.ts'; import { toBoolean, toFloat } from '../../../utils/string.ts'; import * as Helper from './Helper'; @@ -67,7 +66,7 @@ class PlaybackCore { this.useSkipToSync = toBoolean(getSetting('useSkipToSync'), true); // Whether sync correction during playback is active. - this.enableSyncCorrection = toBoolean(getSetting('enableSyncCorrection'), !(browser.mobile || browser.iOS)); + this.enableSyncCorrection = toBoolean(getSetting('enableSyncCorrection'), false); } /** From d22b75076c80c84be5e471bac48a9ab42841a387 Mon Sep 17 00:00:00 2001 From: TelepathicWalrus Date: Sat, 11 Nov 2023 11:51:25 +0000 Subject: [PATCH 006/570] Add option to enable replaygain scanning --- .../libraryoptionseditor/libraryoptionseditor.js | 4 ++++ .../libraryoptionseditor.template.html | 8 ++++++++ src/strings/en-us.json | 2 ++ 3 files changed, 14 insertions(+) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index 11c0806104..0b9ce0b967 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -416,6 +416,8 @@ export function setContentType(parent, contentType) { } } + parent.querySelector('.chkUseReplayGainTagsContainer').classList.toggle('hide', contentType !== 'music'); + parent.querySelector('.chkEnableLUFSScanContainer').classList.toggle('hide', contentType !== 'music'); if (contentType === 'tvshows') { @@ -515,6 +517,7 @@ export function getLibraryOptions(parent) { EnablePhotos: parent.querySelector('.chkEnablePhotos').checked, EnableRealtimeMonitor: parent.querySelector('.chkEnableRealtimeMonitor').checked, EnableLUFSScan: parent.querySelector('.chkEnableLUFSScan').checked, + UseReplayGainTags: parent.querySelector('.chkUseReplayGainTags').checked, ExtractChapterImagesDuringLibraryScan: parent.querySelector('.chkExtractChaptersDuringLibraryScan').checked, EnableChapterImageExtraction: parent.querySelector('.chkExtractChapterImages').checked, EnableInternetProviders: true, @@ -577,6 +580,7 @@ export function setLibraryOptions(parent, options) { parent.querySelector('.chkEnablePhotos').checked = options.EnablePhotos; parent.querySelector('.chkEnableRealtimeMonitor').checked = options.EnableRealtimeMonitor; parent.querySelector('.chkEnableLUFSScan').checked = options.EnableLUFSScan; + parent.querySelector('.chkUseReplayGainTags').checked = options.UseReplayGainTags; parent.querySelector('.chkExtractChaptersDuringLibraryScan').checked = options.ExtractChapterImagesDuringLibraryScan; parent.querySelector('.chkExtractChapterImages').checked = options.EnableChapterImageExtraction; parent.querySelector('#chkSaveLocal').checked = options.SaveLocalMetadata; diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.template.html b/src/components/libraryoptionseditor/libraryoptionseditor.template.html index a221f53bbf..bf3bd7aaa8 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.template.html +++ b/src/components/libraryoptionseditor/libraryoptionseditor.template.html @@ -55,6 +55,14 @@
${LabelEnableRealtimeMonitorHelp}
+
+ +
${LabelUseReplayGainTagsHelp}
+
+