diff --git a/build.yaml b/build.yaml index d6232391c8..424bf876f1 100644 --- a/build.yaml +++ b/build.yaml @@ -1,7 +1,7 @@ --- # We just wrap `build` so this is really it name: "jellyfin-web" -version: "10.7.2" +version: "10.7.3" packages: - debian.all - fedora.all diff --git a/debian/changelog b/debian/changelog index df4b24ff84..454b19fb06 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +jellyfin-web (10.7.3-1) unstable; urgency=medium + + * New upstream version 10.7.3; release changelog at https://github.com/jellyfin/jellyfin-web/releases/tag/v10.7.3 + + -- Jellyfin Packaging Team Tue, 04 May 2021 20:00:22 -0400 + jellyfin-web (10.7.2-1) unstable; urgency=medium * New upstream version 10.7.2; release changelog at https://github.com/jellyfin/jellyfin-web/releases/tag/v10.7.2 diff --git a/deployment/Dockerfile.docker b/deployment/Dockerfile.docker index 398757f467..89a486baf6 100644 --- a/deployment/Dockerfile.docker +++ b/deployment/Dockerfile.docker @@ -1,9 +1,9 @@ -FROM node:alpine +FROM node:lts-alpine ARG SOURCE_DIR=/src ARG ARTIFACT_DIR=/jellyfin-web -RUN apk add autoconf g++ make libpng-dev gifsicle alpine-sdk automake libtool make gcc musl-dev nasm python +RUN apk add autoconf g++ make libpng-dev gifsicle alpine-sdk automake libtool make gcc musl-dev nasm python3 WORKDIR ${SOURCE_DIR} COPY . . diff --git a/fedora/jellyfin-web.spec b/fedora/jellyfin-web.spec index 7f9224089c..a54e1208a1 100644 --- a/fedora/jellyfin-web.spec +++ b/fedora/jellyfin-web.spec @@ -1,7 +1,7 @@ %global debug_package %{nil} Name: jellyfin-web -Version: 10.7.2 +Version: 10.7.3 Release: 1%{?dist} Summary: The Free Software Media System web client License: GPLv3 @@ -38,6 +38,8 @@ mv dist %{buildroot}%{_datadir}/jellyfin-web %{_datadir}/licenses/jellyfin/LICENSE %changelog +* Tue May 04 2021 Jellyfin Packaging Team +- New upstream version 10.7.3; release changelog at https://github.com/jellyfin/jellyfin-web/releases/tag/v10.7.3 * Sun Apr 11 2021 Jellyfin Packaging Team - New upstream version 10.7.2; release changelog at https://github.com/jellyfin/jellyfin-web/releases/tag/v10.7.2 * Sun Mar 21 2021 Jellyfin Packaging Team diff --git a/package.json b/package.json index b5464b7106..3a227d692b 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "headroom.js": "^0.12.0", "hls.js": "^0.14.17", "intersection-observer": "^0.12.0", - "jellyfin-apiclient": "^1.7.0", + "jellyfin-apiclient": "^1.8.0", "jquery": "^3.5.1", "jstree": "^3.3.10", "libarchive.js": "^1.3.0", diff --git a/src/components/apphost.js b/src/components/apphost.js index 59a893044f..ec7239fc46 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -8,7 +8,7 @@ import globalize from '../scripts/globalize'; import profileBuilder from '../scripts/browserDeviceProfile'; const appName = 'Jellyfin Web'; -const appVersion = '10.7.2'; +const appVersion = '10.7.3'; function getBaseProfileOptions(item) { const disableHlsVideoAudioCodecs = []; diff --git a/src/components/filterdialog/filterdialog.template.html b/src/components/filterdialog/filterdialog.template.html index 03aba5ee35..9e873c28dc 100644 --- a/src/components/filterdialog/filterdialog.template.html +++ b/src/components/filterdialog/filterdialog.template.html @@ -3,18 +3,18 @@
- - - diff --git a/src/components/imageDownloader/imageDownloader.js b/src/components/imageDownloader/imageDownloader.js index e501a808c9..2a288cad9f 100644 --- a/src/components/imageDownloader/imageDownloader.js +++ b/src/components/imageDownloader/imageDownloader.js @@ -79,7 +79,7 @@ import template from './imageDownloader.template.html'; let html = ''; for (let i = 0, length = imagesResult.Images.length; i < length; i++) { - html += getRemoteImageHtml(imagesResult.Images[i], imageType, apiClient); + html += getRemoteImageHtml(imagesResult.Images[i], imageType); } const availableImagesList = page.querySelector('.availableImagesList'); @@ -150,11 +150,7 @@ import template from './imageDownloader.template.html'; }); } - function getDisplayUrl(url, apiClient) { - return apiClient.getUrl('Images/Remote', { imageUrl: url }); - } - - function getRemoteImageHtml(image, imageType, apiClient) { + function getRemoteImageHtml(image, imageType) { const tagName = layoutManager.tv ? 'button' : 'div'; const enableFooterButtons = !layoutManager.tv; @@ -209,9 +205,9 @@ import template from './imageDownloader.template.html'; html += '
'; if (layoutManager.tv || !appHost.supports('externallinks')) { - html += '
'; + html += '
'; } else { - html += ''; + html += ''; } html += '
'; diff --git a/src/components/itemidentifier/itemidentifier.js b/src/components/itemidentifier/itemidentifier.js index 227813b117..db1ef3c7e4 100644 --- a/src/components/itemidentifier/itemidentifier.js +++ b/src/components/itemidentifier/itemidentifier.js @@ -171,9 +171,7 @@ import template from './itemidentifier.template.html'; let resultHtml = lines.join('
'); if (identifyResult.ImageUrl) { - const displayUrl = getSearchImageDisplayUrl(identifyResult.ImageUrl, identifyResult.SearchProviderName); - - resultHtml = `
${resultHtml}
`; + resultHtml = `
${resultHtml}
`; } page.querySelector('.selectedSearchResult').innerHTML = resultHtml; @@ -218,9 +216,7 @@ import template from './itemidentifier.template.html'; html += '
'; if (result.ImageUrl) { - const displayUrl = getSearchImageDisplayUrl(result.ImageUrl, result.SearchProviderName); - - html += `
`; + html += `
`; } else { html += `
${result.Name}
`; } @@ -258,16 +254,6 @@ import template from './itemidentifier.template.html'; return html; } - function getSearchImageDisplayUrl(url, provider) { - const apiClient = getApiClient(); - - return apiClient.getUrl('Items/RemoteSearch/Image', { - imageUrl: url, - ProviderName: provider, - api_key: apiClient.accessToken() - }); - } - function submitIdentficationResult(page) { loading.show(); diff --git a/src/components/search/searchfields.js b/src/components/search/searchfields.js index 67364c33b2..042a948a33 100644 --- a/src/components/search/searchfields.js +++ b/src/components/search/searchfields.js @@ -62,19 +62,13 @@ import template from './searchfields.template.html'; } function embed(elem, instance, options) { - let html = globalize.translateHtml(template, 'core'); - - if (browser.tizen || browser.orsay) { - html = html.replace(' { libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { diff --git a/src/controllers/movies/movies.js b/src/controllers/movies/movies.js index 4d2b4c6c3a..61fc099e03 100644 --- a/src/controllers/movies/movies.js +++ b/src/controllers/movies/movies.js @@ -238,8 +238,8 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; }); } const btnSelectView = tabContent.querySelector('.btnSelectView'); - btnSelectView.addEventListener('click', function (e) { - libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle, 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); + btnSelectView.addEventListener('click', (e) => { + libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'Banner,List,Poster,PosterCard,Thumb,ThumbCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index 8c8246b4e1..572d8d2dc6 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -229,7 +229,7 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; alphaPickerElement.classList.add('alphaPicker-fixed-right'); itemsContainer.classList.add('padded-right-withalphapicker'); - tabContent.querySelector('.btnFilter').addEventListener('click', function () { + tabContent.querySelector('.btnFilter').addEventListener('click', () => { this.showFilterMenu(); }); tabContent.querySelector('.btnSort').addEventListener('click', function (e) { diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index c6e5770999..295378a223 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -218,7 +218,7 @@ import '../../elements/emby-itemscontainer/emby-itemscontainer'; this.showFilterMenu(); }); const btnSelectView = tabContent.querySelector('.btnSelectView'); - btnSelectView.addEventListener('click', function (e) { + btnSelectView.addEventListener('click', (e) => { libraryBrowser.showLayoutMenu(e.target, this.getCurrentViewStyle(), 'List,Poster,PosterCard'.split(',')); }); btnSelectView.addEventListener('layoutchange', function (e) { diff --git a/src/index.html b/src/index.html index 175f320368..362b954e5e 100644 --- a/src/index.html +++ b/src/index.html @@ -11,6 +11,7 @@ + diff --git a/src/scripts/browserDeviceProfile.js b/src/scripts/browserDeviceProfile.js index 7bc2f6a6b7..c8a50c17ae 100644 --- a/src/scripts/browserDeviceProfile.js +++ b/src/scripts/browserDeviceProfile.js @@ -228,7 +228,7 @@ import browser from './browser'; supported = browser.tizen; break; case 'mov': - supported = browser.tizen || browser.web0s || browser.chrome || browser.edgeChromium || browser.edgeUwp; + supported = browser.safari || browser.tizen || browser.web0s || browser.chrome || browser.edgeChromium || browser.edgeUwp; videoCodecs.push('h264'); break; case 'm2ts': @@ -463,6 +463,10 @@ import browser from './browser'; if (!browser.safari) { mp4VideoCodecs.push('hevc'); } + + if (browser.tizen || browser.web0s) { + hlsInTsVideoCodecs.push('hevc'); + } } if (supportsMpeg2Video()) { diff --git a/src/strings/en-us.json b/src/strings/en-us.json index ece3a5f055..bd84f1e6fa 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -691,8 +691,8 @@ "LabelManufacturer": "Manufacturer:", "LabelManufacturerUrl": "Manufacturer URL", "LabelMatchType": "Match type:", - "LabelMaxAudiobookResume": "Maximum Audiobook resume in minutes:", - "LabelMaxAudiobookResumeHelp": "Titles are assumed fully played if stopped after this time.", + "LabelMaxAudiobookResume": "Audiobook remaining minutes to resume:", + "LabelMaxAudiobookResumeHelp": "Titles are assumed fully played if stopped when the remaining duration is less than this value.", "LabelMaxBackdropsPerItem": "Maximum number of backdrops per item:", "LabelMaxChromecastBitrate": "Chromecast streaming quality:", "LabelMaxMuxingQueueSize": "Max muxing queue size:",