From 934447b32b24cc44bd4e191b142d2aba7f5c61a9 Mon Sep 17 00:00:00 2001 From: Preston Date: Fri, 18 Dec 2020 11:27:04 -0500 Subject: [PATCH 01/94] Update flatpak.yml --- .github/workflows/flatpak.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml index 7cf99e69..ceee85d1 100644 --- a/.github/workflows/flatpak.yml +++ b/.github/workflows/flatpak.yml @@ -5,6 +5,7 @@ name: Create Flatpak PR # Controls when the action will run. Workflow runs when manually triggered using the UI # or API. on: + workflow_dispatch: release: types: [published] From 57b004431f31b2e5c9888469098a5e6cb360bc49 Mon Sep 17 00:00:00 2001 From: Preston Date: Fri, 18 Dec 2020 11:57:20 -0500 Subject: [PATCH 02/94] Add better release check logic --- src/renderer/App.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/renderer/App.js b/src/renderer/App.js index 30b19cdc..95c7aad0 100644 --- a/src/renderer/App.js +++ b/src/renderer/App.js @@ -172,7 +172,15 @@ export default Vue.extend({ const message = this.$t('Version $ is now available! Click for more details') this.updateBannerMessage = message.replace('$', versionNumber) - if (version < versionNumber) { + + const appVersion = version.split('.') + const latestVersion = versionNumber.split('.') + + if (parseInt(appVersion[0]) < parseInt(latestVersion[0])) { + this.showUpdatesBanner = true + } else if (parseInt(appVersion[1]) < parseInt(latestVersion[1])) { + this.showUpdatesBanner = true + } else if (parseInt(appVersion[2]) < parseInt(latestVersion[2])) { this.showUpdatesBanner = true } }).fail((xhr, textStatus, error) => { From 253508c43d2ccc97d952d6609168f344502406f9 Mon Sep 17 00:00:00 2001 From: Preston Date: Fri, 18 Dec 2020 13:21:40 -0500 Subject: [PATCH 03/94] Update release.yml --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 45085e14..b555927c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -147,7 +147,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: https://uploads.github.com/repos/FreeTubeApp/FreeTube/releases/${{ secrets.UPLOAD_ID }}/assets{?name,label} - asset_name: freetube-${{ env.PACKAGE_VERSION }}-win-x64-portable + asset_name: freetube-${{ env.PACKAGE_VERSION }}-win-x64-portable.zip asset_path: build/freetube-${{ env.PACKAGE_VERSION }}-win.zip asset_content_type: application/zip From a3e7ad32bb45df8e74b68601c98324c321a635b2 Mon Sep 17 00:00:00 2001 From: Dennis ten Hoove Date: Fri, 18 Dec 2020 17:48:57 +0000 Subject: [PATCH 04/94] Translated using Weblate (Dutch) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nl/ --- static/locales/nl.yaml | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index ad2c8da5..4fbb3313 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -100,7 +100,7 @@ Settings: Locale Preference: 'Locale Voorkeur' Preferred API Backend: Preferred API Backend: 'Voorkeur API Backend' - Local API: 'Lokaal API' + Local API: 'Lokale API' Invidious API: 'Invidious API' Video View Type: Video View Type: 'Video Toontype' @@ -116,7 +116,7 @@ Settings: (Standaard is https://invidious.snopyta.org)' Region for Trending: 'Regio voor Trending' #! List countries - Check for Latest Blog Posts: Controleer de Laatste Blogposts + Check for Latest Blog Posts: Controleer op nieuwe Blogposts Check for Updates: Controleer op Updates Theme Settings: Theme Settings: 'Thema Instellingen' @@ -146,18 +146,18 @@ Settings: Deep Orange: 'Donker Oranje' Secondary Color Theme: 'Secundaire Themakleur' #* Main Color Theme - UI Scale: UI schaal + UI Scale: UI Schaal Expand Side Bar by Default: Zijbalk Standaard Uitschuiven - Disable Smooth Scrolling: Schakel Vloeiend Scrollen Uit + Disable Smooth Scrolling: Vloeiend Scrollen Uitschakelen Player Settings: Player Settings: 'Speler Instellingen' Force Local Backend for Legacy Formats: 'Forceer Lokale Backend Voor Legacy Indelingen' - Play Next Video: 'Speel Volgende Video af' + Play Next Video: 'Volgende Video Automatisch Afspelen' Turn on Subtitles by Default: 'Schakel Ondertiteling Standaard in' - Autoplay Videos: 'Autoplay Video''s' + Autoplay Videos: 'Video''s Automatisch Afspelen' Proxy Videos Through Invidious: 'Proxy Video''s Via Invidious' - Autoplay Playlists: 'Autoplay Afspeellijsten' - Enable Theatre Mode by Default: 'Schakel Theatermodus Standaard in' + Autoplay Playlists: 'Afspeellijsten Automatisch Afspelen' + Enable Theatre Mode by Default: 'Theatermodus Standaard Inschakelen' Default Volume: 'Standaard Volume' Default Playback Rate: 'Standaard Afspeelsnelheid' Default Video Format: @@ -166,7 +166,7 @@ Settings: Legacy Formats: 'Legacy Indelingen' Audio Formats: 'Audio Indelingen' Default Quality: - Default Quality: 'Standaard Kwaliteit' + Default Quality: 'Standaard Videokwaliteit' Auto: 'Automatisch' 144p: '144p' 240p: '240p' @@ -181,10 +181,10 @@ Settings: Privacy Settings: 'Privacy Instellingen' Remember History: 'Onthoud Geschiedenis' Save Watched Progress: 'Behoud Video Voortgang' - Clear Search Cache: 'Zoek Cache Opschonen' + Clear Search Cache: 'Verwijder Zoek-cache' Are you sure you want to clear out your search cache?: 'Weet u zeker dat u de - zoek cache wil opschonen?' - Search cache has been cleared: 'Zoek cache is opgeschoond' + zoek-cache wil verwijderen?' + Search cache has been cleared: 'De zoek-cache is verwijdert' Remove Watch History: 'Verwijder Kijkgeschiedenis' Are you sure you want to remove your entire watch history?: 'Weet u zeker dat u uw volledige kijkgeschiedenis wil verwijderen?' @@ -410,9 +410,9 @@ Video: # $ is replaced with the number and % with the unit (days, hours, minutes...) Publicationtemplate: '$ % geleden' #& Videos - Autoplay: Autoplay + Autoplay: Automatisch Afspelen Play Previous Video: Speel Vorige Video af - Play Next Video: Speel Volgende Video af + Play Next Video: Volgende Video Automatisch Afspelen Reverse Playlist: Playlist Omkeren Shuffle Playlist: Schuifelen Playlist Loop Playlist: Herhaal Playlist @@ -519,7 +519,7 @@ Playing Next Video: 'Volgende Video Word Afgespeeld' Playing Previous Video: 'Vorige Video Word Afgespeeld' Playing next video in 5 seconds. Click to cancel: 'Volgende Video Begint in 5 Seconden. Klik om te Annuleer.' -Canceled next video autoplay: 'Autoplay is geannuleerd' +Canceled next video autoplay: 'Automatisch afspelen is geannuleerd' 'The playlist has ended. Enable loop to continue playing': 'Het einde van de afspeellijst is bereikt. Schakel herhalen in om de afspeellijst te blijven afspelen' @@ -592,16 +592,16 @@ Tooltips: Fetch Feeds from RSS: Wanneer ingeschakeld zal FreeTube RSS gebruiken in plaats van de standaard methode om de videolijsten van je abonnementen te verzamelen. RSS is sneller en voorkomt dat je IP word geblokkeerd maar geeft geen toegang - tot sommige informatie zoals de videoduur en live status + tot sommige informatie zoals de videoduur en live-status General Settings: Invidious Instance: Dit is de Invidious instantie waar FreeTube mee zal verbinden om API calls te maken. Verwijder de momenteel geselecteerd instantie om een lijst van publieke instanties te tonen Thumbnail Preference: Alle thumbnails in FreeTube zullen worden vervangen met een momentopname in plaats van de standaard thumbnail - Fallback to Non-Preferred Backend on Failure: Wanneer het API geselecteerd als - voorkeur problemen heeft dan zal FreeTube automatisch terugvallen op het alternatieve - niet-voorkeur API als dit is ingeschakeld + Fallback to Non-Preferred Backend on Failure: Wanneer het API met voorkeur problemen + heeft dan zal FreeTube automatisch terugvallen op het alternatieve niet-voorkeur + API als deze instelling is ingeschakeld Preferred API Backend: Kies de backend die FreeTube gebruikt om data te verzamelen. De lokale API is een ingebouwde extractor. De Invidious API moet worden verbonden met een Invidious server. From 52c5dc532287dee33fb0c3bd624c82095c216272 Mon Sep 17 00:00:00 2001 From: Preston Date: Fri, 18 Dec 2020 17:24:15 -0500 Subject: [PATCH 05/94] Fix CLI logic for Linux / Windows --- src/main/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/index.js b/src/main/index.js index 11cf1871..fda34f4b 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -306,7 +306,8 @@ app.on('open-url', (event, url) => { }) /* - * Check if we were passed a freetube:// URL on process startup (linux/win) + * Check if an argument was passed and send it over to the GUI (Linux / Windows). + * Remove freetube:// protocol if present */ const url = getLinkUrl(process.argv) if (url) { @@ -318,12 +319,11 @@ function baseUrl(arg) { } function getLinkUrl(argv) { - for (const arg of argv) { - if (arg.indexOf('freetube://') !== -1) { - return baseUrl(arg) - } + if (argv.length > 0) { + return baseUrl(argv[argv.length - 1]) + } else { + return null } - return null } /** From e1a031bd88701e0eebdeebfe6798f755af4782d9 Mon Sep 17 00:00:00 2001 From: alium Date: Sat, 19 Dec 2020 10:01:34 +0000 Subject: [PATCH 06/94] Translated using Weblate (Czech) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/ --- static/locales/cs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index e1ca85e3..c5057da0 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -133,7 +133,7 @@ Settings: Base Theme: 'Základní motiv' Black: 'Černý' Dark: 'Temný' - Light: 'Lehký' + Light: 'Světlý' Main Color Theme: Main Color Theme: 'Hlavní barevný motiv' Red: 'Červený' From 176d88bb0ca3985c272efb6e082fb0d334fbd4f3 Mon Sep 17 00:00:00 2001 From: Preston Date: Sun, 20 Dec 2020 21:28:24 -0500 Subject: [PATCH 07/94] Fix CLI argument logic again --- src/main/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/index.js b/src/main/index.js index fda34f4b..92e3ec9d 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -319,7 +319,7 @@ function baseUrl(arg) { } function getLinkUrl(argv) { - if (argv.length > 0) { + if (argv.length > 1) { return baseUrl(argv[argv.length - 1]) } else { return null From 3af6f9b65f5cafe22b7b729b7536a44e0f3d65ce Mon Sep 17 00:00:00 2001 From: Preston Date: Sun, 20 Dec 2020 21:43:40 -0500 Subject: [PATCH 08/94] Fix check for unplayable videos --- src/renderer/views/Watch/Watch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index e2078354..275d5152 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -197,7 +197,7 @@ export default Vue.extend({ console.log(result) const playabilityStatus = result.player_response.playabilityStatus - if (playabilityStatus.status !== 'OK') { + if (playabilityStatus.status === 'UNPLAYABLE') { const errorScreen = playabilityStatus.errorScreen.playerErrorMessageRenderer const reason = errorScreen.reason.simpleText let subReason From 1614baf210fbbedba3d6bb43cf0ab1a1bff3182f Mon Sep 17 00:00:00 2001 From: Preston Date: Mon, 21 Dec 2020 14:43:50 -0500 Subject: [PATCH 09/94] Ignore keyboard shortcuts when Ctrl is held down --- src/renderer/components/ft-video-player/ft-video-player.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/renderer/components/ft-video-player/ft-video-player.js b/src/renderer/components/ft-video-player/ft-video-player.js index d84cb824..dcc454ff 100644 --- a/src/renderer/components/ft-video-player/ft-video-player.js +++ b/src/renderer/components/ft-video-player/ft-video-player.js @@ -622,6 +622,10 @@ export default Vue.extend({ } } + if (event.ctrlKey) { + return + } + if (this.player !== null) { switch (event.which) { case 32: From e1266ec675f3c1ea3f6b054ef11891fbca2a0454 Mon Sep 17 00:00:00 2001 From: Preston Date: Tue, 22 Dec 2020 13:39:19 -0500 Subject: [PATCH 10/94] Fix search filter prevention --- .../components/ft-search-filters/ft-search-filters.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/renderer/components/ft-search-filters/ft-search-filters.js b/src/renderer/components/ft-search-filters/ft-search-filters.js index 688a9003..8c35fc3b 100644 --- a/src/renderer/components/ft-search-filters/ft-search-filters.js +++ b/src/renderer/components/ft-search-filters/ft-search-filters.js @@ -88,7 +88,7 @@ export default Vue.extend({ if (this.searchSettings.type !== 'video') { const typeRadio = this.$refs.typeRadio typeRadio.updateSelectedValue('all') - this.updateType('all') + this.$store.commit('setSearchType', 'all') } this.$store.commit('setSearchTime', value) }, @@ -99,8 +99,8 @@ export default Vue.extend({ const durationRadio = this.$refs.durationRadio timeRadio.updateSelectedValue('') durationRadio.updateSelectedValue('') - this.updateTime('') - this.updateDuration('') + this.$store.commit('setSearchTime', '') + this.$store.commit('setSearchDuration', '') } this.$store.commit('setSearchType', value) }, From d52533b8c0bdbd576ae4413df9a964351706df7c Mon Sep 17 00:00:00 2001 From: Preston Date: Tue, 22 Dec 2020 13:58:17 -0500 Subject: [PATCH 11/94] Close full window properly to prevent scrolling issues --- .../components/ft-video-player/ft-video-player.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/renderer/components/ft-video-player/ft-video-player.js b/src/renderer/components/ft-video-player/ft-video-player.js index dcc454ff..344d5d6f 100644 --- a/src/renderer/components/ft-video-player/ft-video-player.js +++ b/src/renderer/components/ft-video-player/ft-video-player.js @@ -17,6 +17,9 @@ export default Vue.extend({ 'ft-card': FtCard }, beforeRouteLeave: function () { + if (this.player !== null) { + this.exitFullWindow() + } if (this.player !== null && !this.player.isInPictureInPicture()) { this.player.dispose() this.player = null @@ -152,10 +155,14 @@ export default Vue.extend({ this.determineMaxFramerate() }, beforeDestroy: function () { - if (this.player !== null && !this.player.isInPictureInPicture()) { - this.player.dispose() - this.player = null - clearTimeout(this.mouseTimeout) + if (this.player !== null) { + this.exitFullWindow() + + if (!this.player.isInPictureInPicture()) { + this.player.dispose() + this.player = null + clearTimeout(this.mouseTimeout) + } } }, methods: { From 9b57dcda410139f3a0707002ea3aaa6177c6a9d7 Mon Sep 17 00:00:00 2001 From: Preston Date: Tue, 22 Dec 2020 15:34:06 -0500 Subject: [PATCH 12/94] Show live status in search and fix youtube links in live chat --- src/renderer/components/ft-video-player/ft-video-player.js | 1 - .../components/watch-video-live-chat/watch-video-live-chat.js | 2 +- src/renderer/views/Search/Search.js | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/renderer/components/ft-video-player/ft-video-player.js b/src/renderer/components/ft-video-player/ft-video-player.js index 344d5d6f..15004fb5 100644 --- a/src/renderer/components/ft-video-player/ft-video-player.js +++ b/src/renderer/components/ft-video-player/ft-video-player.js @@ -275,7 +275,6 @@ export default Vue.extend({ } fs.readFile(this.dashSrc[0].url, (err, data) => { if (err) { - console.log('caught the error') this.maxFramerate = 60 return } diff --git a/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js b/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js index d8f122aa..96e9b1ee 100644 --- a/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js +++ b/src/renderer/components/watch-video-live-chat/watch-video-live-chat.js @@ -155,7 +155,7 @@ export default Vue.extend({ comment.message.forEach((text) => { if (typeof (text.navigationEndpoint) !== 'undefined') { if (typeof (text.navigationEndpoint.watchEndpoint) !== 'undefined') { - const htmlRef = `${text.text}` + const htmlRef = `${text.text}` comment.messageHtml = comment.messageHtml + htmlRef } else { comment.messageHtml = comment.messageHtml + text.text diff --git a/src/renderer/views/Search/Search.js b/src/renderer/views/Search/Search.js index 801fe924..2f18ec13 100644 --- a/src/renderer/views/Search/Search.js +++ b/src/renderer/views/Search/Search.js @@ -154,7 +154,7 @@ export default Vue.extend({ published: publishDate, publishedText: publishDate, lengthSeconds: videoDuration, - liveNow: video.live, + liveNow: video.isLive, paid: false, premium: false, isUpcoming: false, From f9fc962966ff7817bc19dd6db545286fc39b7e0b Mon Sep 17 00:00:00 2001 From: D4708 Date: Fri, 25 Dec 2020 00:02:45 +0000 Subject: [PATCH 13/94] Translated using Weblate (Ukrainian) Currently translated at 33.8% (141 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/uk/ --- static/locales/uk.yaml | 48 +++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/static/locales/uk.yaml b/static/locales/uk.yaml index af4391a5..03891221 100644 --- a/static/locales/uk.yaml +++ b/static/locales/uk.yaml @@ -130,8 +130,8 @@ Settings: Theme Settings: 'Налаштування теми' Match Top Bar with Main Color: '' Expand Side Bar by Default: '' - Disable Smooth Scrolling: '' - UI Scale: '' + Disable Smooth Scrolling: 'Відключити плавну прокрутку' + UI Scale: 'Масштаб інтерфейсу' Base Theme: Base Theme: 'Базова тема' Black: 'Чорна' @@ -160,41 +160,41 @@ Settings: Player Settings: Player Settings: 'Налаштування програвача' Force Local Backend for Legacy Formats: '' - Play Next Video: '' - Turn on Subtitles by Default: '' - Autoplay Videos: '' + Play Next Video: 'Грати наступне відео' + Turn on Subtitles by Default: 'Увімкнути субтитри за замовченням' + Autoplay Videos: 'Автоматичне відтворення відео' Proxy Videos Through Invidious: '' - Autoplay Playlists: '' + Autoplay Playlists: 'Автоматичне відтворення списків' Enable Theatre Mode by Default: '' - Default Volume: '' + Default Volume: 'Гучніть за замовченням' Default Playback Rate: '' Default Video Format: - Default Video Format: '' + Default Video Format: 'Формат відео за замовченням' Dash Formats: '' Legacy Formats: '' - Audio Formats: '' + Audio Formats: 'Аудіо формати' Default Quality: - Default Quality: '' - Auto: '' - 144p: '' - 240p: '' - 360p: '' - 480p: '' - 720p: '' - 1080p: '' - 1440p: '' - 4k: '' - 8k: '' + Default Quality: 'Якість за замовченням' + Auto: 'Автоматично' + 144p: '144p' + 240p: '240p' + 360p: '360p' + 480p: '480p' + 720p: '720p' + 1080p: '1080p' + 1440p: '1440p' + 4k: '4k' + 8k: '8k' Privacy Settings: - Privacy Settings: '' + Privacy Settings: 'Налаштування приватності' Remember History: '' Save Watched Progress: '' - Clear Search Cache: '' + Clear Search Cache: 'Очистити пошуковий кеш' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' - Remove Watch History: '' + Remove Watch History: 'Видалити історію переглядів' Are you sure you want to remove your entire watch history?: '' - Watch history has been cleared: '' + Watch history has been cleared: 'Історію переглядів було очищено' Remove All Subscriptions / Profiles: '' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '' Subscription Settings: From 683221cb0e73d0a0993351b884337aa3c643881f Mon Sep 17 00:00:00 2001 From: MP Date: Sat, 26 Dec 2020 17:17:54 +0100 Subject: [PATCH 14/94] Added translation using Weblate (Galician) --- static/locales/gl.yaml | 524 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 524 insertions(+) create mode 100644 static/locales/gl.yaml diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml new file mode 100644 index 00000000..215b23d7 --- /dev/null +++ b/static/locales/gl.yaml @@ -0,0 +1,524 @@ +# Put the name of your locale in the same language +Locale Name: '' +FreeTube: '' +# Currently on Subscriptions, Playlists, and History +'This part of the app is not ready yet. Come back later when progress has been made.': > + +# Webkit Menu Bar +File: '' +Quit: '' +Edit: '' +Undo: '' +Redo: '' +Cut: '' +Copy: '' +Paste: '' +Delete: '' +Select all: '' +Reload: '' +Force Reload: '' +Toggle Developer Tools: '' +Actual size: '' +Zoom in: '' +Zoom out: '' +Toggle fullscreen: '' +Window: '' +Minimize: '' +Close: '' +Back: '' +Forward: '' + +Version $ is now available! Click for more details: '' +Download From Site: '' +A new blog is now available, $. Click to view more: '' + +# Search Bar +Search / Go to URL: '' + # In Filter Button +Search Filters: + Search Filters: '' + Sort By: + Sort By: '' + Most Relevant: '' + Rating: '' + Upload Date: '' + View Count: '' + Time: + Time: '' + Any Time: '' + Last Hour: '' + Today: '' + This Week: '' + This Month: '' + This Year: '' + Type: + Type: '' + All Types: '' + Videos: '' + Channels: '' + #& Playlists + Duration: + Duration: '' + All Durations: '' + Short (< 4 minutes): '' + Long (> 20 minutes): '' + # On Search Page + Search Results: '' + Fetching results. Please wait: '' + Fetch more results: '' +# Sidebar +Subscriptions: + # On Subscriptions Page + Subscriptions: '' + Latest Subscriptions: '' + This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '' + 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '' + 'Getting Subscriptions. Please wait.': '' + Refresh Subscriptions: '' + Load More Videos: '' +Trending: '' +Most Popular: '' +Playlists: '' +User Playlists: + Your Playlists: '' +History: + # On History Page + History: '' + Watch History: '' + Your history list is currently empty.: '' +Settings: + # On Settings Page + Settings: '' + The app needs to restart for changes to take effect. Restart and apply change?: '' + General Settings: + General Settings: '' + Check for Updates: '' + Check for Latest Blog Posts: '' + Fallback to Non-Preferred Backend on Failure: '' + Enable Search Suggestions: '' + Default Landing Page: '' + Locale Preference: '' + Preferred API Backend: + Preferred API Backend: '' + Local API: '' + Invidious API: '' + Video View Type: + Video View Type: '' + Grid: '' + List: '' + Thumbnail Preference: + Thumbnail Preference: '' + Default: '' + Beginning: '' + Middle: '' + End: '' + 'Invidious Instance (Default is https://invidious.snopyta.org)': '' + Region for Trending: '' + #! List countries + Theme Settings: + Theme Settings: '' + Match Top Bar with Main Color: '' + Expand Side Bar by Default: '' + Disable Smooth Scrolling: '' + UI Scale: '' + Base Theme: + Base Theme: '' + Black: '' + Dark: '' + Light: '' + Main Color Theme: + Main Color Theme: '' + Red: '' + Pink: '' + Purple: '' + Deep Purple: '' + Indigo: '' + Blue: '' + Light Blue: '' + Cyan: '' + Teal: '' + Green: '' + Light Green: '' + Lime: '' + Yellow: '' + Amber: '' + Orange: '' + Deep Orange: '' + Secondary Color Theme: '' + #* Main Color Theme + Player Settings: + Player Settings: '' + Force Local Backend for Legacy Formats: '' + Play Next Video: '' + Turn on Subtitles by Default: '' + Autoplay Videos: '' + Proxy Videos Through Invidious: '' + Autoplay Playlists: '' + Enable Theatre Mode by Default: '' + Default Volume: '' + Default Playback Rate: '' + Default Video Format: + Default Video Format: '' + Dash Formats: '' + Legacy Formats: '' + Audio Formats: '' + Default Quality: + Default Quality: '' + Auto: '' + 144p: '' + 240p: '' + 360p: '' + 480p: '' + 720p: '' + 1080p: '' + 1440p: '' + 4k: '' + 8k: '' + Privacy Settings: + Privacy Settings: '' + Remember History: '' + Save Watched Progress: '' + Clear Search Cache: '' + Are you sure you want to clear out your search cache?: '' + Search cache has been cleared: '' + Remove Watch History: '' + Are you sure you want to remove your entire watch history?: '' + Watch history has been cleared: '' + Remove All Subscriptions / Profiles: '' + Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '' + Subscription Settings: + Subscription Settings: '' + Hide Videos on Watch: '' + Fetch Feeds from RSS: '' + Manage Subscriptions: '' + Distraction Free Settings: + Distraction Free Settings: '' + Hide Video Views: '' + Hide Video Likes And Dislikes: '' + Hide Channel Subscribers: '' + Hide Comment Likes: '' + Hide Recommended Videos: '' + Hide Trending Videos: '' + Hide Popular Videos: '' + Hide Live Chat: '' + Data Settings: + Data Settings: '' + Select Import Type: '' + Select Export Type: '' + Import Subscriptions: '' + Import FreeTube: '' + Import YouTube: '' + Import NewPipe: '' + Check for Legacy Subscriptions: '' + Export Subscriptions: '' + Export FreeTube: '' + Export YouTube: '' + Export NewPipe: '' + Import History: '' + Export History: '' + Profile object has insufficient data, skipping item: '' + All subscriptions and profiles have been successfully imported: '' + All subscriptions have been successfully imported: '' + One or more subscriptions were unable to be imported: '' + Invalid subscriptions file: '' + This might take a while, please wait: '' + Invalid history file: '' + Subscriptions have been successfully exported: '' + History object has insufficient data, skipping item: '' + All watched history has been successfully imported: '' + All watched history has been successfully exported: '' + Unable to read file: '' + Unable to write file: '' + Unknown data key: '' + How do I import my subscriptions?: '' + Advanced Settings: + Advanced Settings: '' + Enable Debug Mode (Prints data to the console): '' + 'Proxy Address (Example: SOCKS5://127.0.0.1:9050 )': '' + 'Clicking "TEST PROXY" button will send a request to https://ipinfo.io/json': '' + Use Tor / Proxy for API calls: '' + TEST PROXY: '' + #& Invidious Instance (Default is https://invidious.snopyta.org) + See Public Instances: '' + Clear History: + Clear History: '' + # On Click + Are you sure you want to delete your history?: '' + #& Yes + #& No + Clear Subscriptions: + Clear Subscriptions: '' + # On Click + Are you sure you want to remove all subscriptions?: '' + #& Yes + #& No + +About: + #On About page + About: '' + #& About + 'This software is FOSS and released under the GNU Affero General Public License v3.0.': '' + + 'Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub page. Pull requests are welcome.': > + + Thank you very much to the People and Projects that make FreeTube possible!: '' + + 'Want to chat? Join our Element / Matrix Server . Please check the rules before joining.': '' + + 'Looking for help? Check out our Wiki page.': '' + + Check out our Firefox extension!: '' + + 'If you enjoy using FreeTube, consider donating via Liberapay or through our Bitcoin address.': '' + + #~ 'BTC: 1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS' + + Latest FreeTube News: '' + +Profile: + Profile Select: '' + All Channels: '' + Profile Manager: '' + Create New Profile: '' + Edit Profile: '' + Color Picker: '' + Custom Color: '' + Profile Preview: '' + Create Profile: '' + Update Profile: '' + Make Default Profile: '' + Delete Profile: '' + Are you sure you want to delete this profile?: '' + All subscriptions will also be deleted.: '' + Profile could not be found: '' + Your profile name cannot be empty: '' + Profile has been created: '' + Profile has been updated: '' + Your default profile has been set to $: '' + Removed $ from your profiles: '' + Your default profile has been changed to your primary profile: '' + $ is now the active profile: '' + Subscription List: '' + Other Channels: '' + $ selected: '' + Select All: '' + Select None: '' + Delete Selected: '' + Add Selected To Profile: '' + No channel(s) have been selected: '' + ? This is your primary profile. Are you sure you want to delete the selected channels? The + same channels will be deleted in any profile they are found in. + : '' + Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: '' +#On Channel Page +Channel: + Subscriber: '' + Subscribers: '' + Subscribe: '' + Unsubscribe: '' + Channel has been removed from your subscriptions: '' + Removed subscription from $ other channel(s): '' + Added channel to your subscriptions: '' + Search Channel: '' + Your search results have returned 0 results: '' + Sort By: '' + Videos: + Videos: '' + This channel does not currently have any videos: '' + Sort Types: + Newest: '' + Oldest: '' + Most Popular: '' + Playlists: + Playlists: '' + This channel does not currently have any playlists: '' + Sort Types: + Last Video Added: '' + Newest: '' + Oldest: '' + About: + About: '' + Channel Description: '' + Featured Channels: '' +Video: + Mark As Watched: '' + Remove From History: '' + Video has been marked as watched: '' + Video has been removed from your history: '' + Open in YouTube: '' + Copy YouTube Link: '' + Open YouTube Embedded Player: '' + Copy YouTube Embedded Player Link: '' + Open in Invidious: '' + Copy Invidious Link: '' + Open Channel in YouTube: '' + Copy YouTube Channel Link: '' + Open Channel in Invidious: '' + Copy Invidious Channel Link: '' + View: '' + Views: '' + Loop Playlist: '' + Shuffle Playlist: '' + Reverse Playlist: '' + Play Next Video: '' + Play Previous Video: '' + # Context is "X People Watching" + Watching: '' + Watched: '' + Autoplay: '' + Starting soon, please refresh the page to check again: '' + # As in a Live Video + Live: '' + Live Now: '' + Live Chat: '' + Enable Live Chat: '' + Live Chat is currently not supported in this build.: '' + 'Chat is disabled or the Live Stream has ended.': '' + Live chat is enabled. Chat messages will appear here once sent.: '' + 'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': '' + Download Video: '' + video only: '' + audio only: '' + Audio: + Low: '' + Medium: '' + High: '' + Best: '' + Published: + Jan: '' + Feb: '' + Mar: '' + Apr: '' + May: '' + Jun: '' + Jul: '' + Aug: '' + Sep: '' + Oct: '' + Nov: '' + Dec: '' + Second: '' + Seconds: '' + Minute: '' + Minutes: '' + Hour: '' + Hours: '' + Day: '' + Days: '' + Week: '' + Weeks: '' + Month: '' + Months: '' + Year: '' + Years: '' + Ago: '' + Upcoming: '' + Published on: '' + Streamed on: '' + Started streaming on: '' + # $ is replaced with the number and % with the unit (days, hours, minutes...) + Publicationtemplate: '' +#& Videos +Videos: + #& Sort By + Sort By: + Newest: '' + Oldest: '' + #& Most Popular +#& Playlists +Playlist: + #& About + View Full Playlist: '' + Videos: '' + View: '' + Views: '' + Last Updated On: '' + Share Playlist: + Share Playlist: '' + Copy YouTube Link: '' + Open in YouTube: '' + Copy Invidious Link: '' + Open in Invidious: '' + +# On Video Watch Page +#* Published +#& Views +Toggle Theatre Mode: '' +Change Format: + Change Video Formats: '' + Use Dash Formats: '' + Use Legacy Formats: '' + Use Audio Formats: '' + Dash formats are not available for this video: '' + Audio formats are not available for this video: '' +Share: + Share Video: '' + Include Timestamp: '' + Copy Link: '' + Open Link: '' + Copy Embed: '' + Open Embed: '' + # On Click + Invidious URL copied to clipboard: '' + Invidious Embed URL copied to clipboard: '' + Invidious Channel URL copied to clipboard: '' + YouTube URL copied to clipboard: '' + YouTube Embed URL copied to clipboard: '' + YouTube Channel URL copied to clipboard: '' + +Mini Player: '' +Comments: + Comments: '' + Click to View Comments: '' + Getting comment replies, please wait: '' + There are no more comments for this video: '' + Show Comments: '' + Hide Comments: '' + Sort by: '' + Top comments: '' + Newest first: '' + # Context: View 10 Replies, View 1 Reply + View: '' + Hide: '' + Replies: '' + Reply: '' + There are no comments available for this video: '' + Load More Comments: '' + No more comments available: '' +Up Next: '' + +#Tooltips +Tooltips: + General Settings: + Preferred API Backend: '' + Fallback to Non-Preferred Backend on Failure: '' + Thumbnail Preference: '' + Invidious Instance: '' + Region for Trending: '' + Player Settings: + Force Local Backend for Legacy Formats: '' + Proxy Videos Through Invidious: '' + Default Video Format: '' + Subscription Settings: + Fetch Feeds from RSS: '' + +# Toast Messages +Local API Error (Click to copy): '' +Invidious API Error (Click to copy): '' +Falling back to Invidious API: '' +Falling back to the local API: '' +This video is unavailable because of missing formats. This can happen due to country unavailability.: '' +Subscriptions have not yet been implemented: '' +Loop is now disabled: '' +Loop is now enabled: '' +Shuffle is now disabled: '' +Shuffle is now enabled: '' +The playlist has been reversed: '' +Playing Next Video: '' +Playing Previous Video: '' +Playing next video in 5 seconds. Click to cancel: '' +Canceled next video autoplay: '' +'The playlist has ended. Enable loop to continue playing': '' + +Yes: '' +No: '' From ab7148cba6bdc05e7e786ab92a9574e3b47688da Mon Sep 17 00:00:00 2001 From: Aasim-A Date: Sat, 26 Dec 2020 16:12:05 +0000 Subject: [PATCH 15/94] Translated using Weblate (Arabic) Currently translated at 99.2% (414 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ar/ --- static/locales/ar.yaml | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/static/locales/ar.yaml b/static/locales/ar.yaml index 01508782..fb004509 100644 --- a/static/locales/ar.yaml +++ b/static/locales/ar.yaml @@ -561,12 +561,22 @@ Version $ is now available! Click for more details: الإصدار $ متاح على المزيد من التفاصيل Tooltips: General Settings: - Thumbnail Preference: كلّ الصّور المصغّرة في FreeTube سيتمّ استبدالها بإيطار من + Thumbnail Preference: كلّ الصّور المصغّرة في FreeTube سيتمّ استبدالها بإطار من الفيديو بدل من الصّورة المصغّرة الافتراضيّة - Preferred API Backend: اختر الواجهة الخلفية التي يستخدمها FreeTube لجلب البيانات. - الAPI المحلي هو مستخرج محلي. الAPI التابع لInvidious يتطلب التواصل مع خادم شبكة - Invidious - Invidious Instance: واجهة انفيديوس البرمجية المستخدمة من قبل فريتيوب. امسح الواجهة - البرمجية الحالية للاختيار من قائمة الواجهات العلنية + Preferred API Backend: اختر الواجهة الخلفية التي يستخدمها FreeTube لجلب البيانات + . الAPI المحلي هو مستخرج محلي . الAPI التابع لInvidious يتطلب التواصل مع خادم + شبكة Invidious . + Invidious Instance: واجهة Invidious البرمجية المستخدمة من قبل FreeTube. امسح الواجهة + البرمجية الحالية للاختيار من قائمة الواجهات Fallback to Non-Preferred Backend on Failure: عند تواجد مشكلة مع الواجهة البرمجية المفضلة لك، سوف يقوم فريتيوب باستخدام الواجهات الأخرى عند تفعيل هذا الخيار + Region for Trending: يمكّنك اختيار الدولة من عرض الفيديوهات الشائعة التابعة للدولة + التي تفضل . ليست كل البلدان المعروضة في هذه القائمة مدعومة من قبل يوتيوب + Player Settings: + Proxy Videos Through Invidious: سيتم الاتصال ب Invidious لتقديم مقاطع الفيديو + بدلاً من إجراء اتصال مباشر مع يوتيوب. يلغي تفضيل الواجهة البرمجية + Force Local Backend for Legacy Formats: تعمل فقط عندما تكون واجهة Invidious البرمجية + هي الاختيار الافتراضي . عند تفعيل هذا الخيار ، ستعمل الواجهة البرمجية المحلية + باستخدام التنسيقات القديمة التي تم إرجاعها من قبلها بدلاً من أن تستخدم الصيغ + التي تم إرجاعها من قبل Invidious . يساعد هذا الخيار عندما لا تعمل الفيديوهات + التي تم إرجاعها من قبل Invidious بسبب قيود البلد From f623ab89531f729d14a20960d2f3d98f5760bee2 Mon Sep 17 00:00:00 2001 From: MP Date: Sat, 26 Dec 2020 17:00:04 +0000 Subject: [PATCH 16/94] Translated using Weblate (Galician) Currently translated at 36.6% (153 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/gl/ --- static/locales/gl.yaml | 320 +++++++++++++++++++++-------------------- 1 file changed, 165 insertions(+), 155 deletions(-) diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml index 215b23d7..1ebdf5b5 100644 --- a/static/locales/gl.yaml +++ b/static/locales/gl.yaml @@ -1,206 +1,216 @@ # Put the name of your locale in the same language -Locale Name: '' -FreeTube: '' +Locale Name: 'Galego' +FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History -'This part of the app is not ready yet. Come back later when progress has been made.': > +'This part of the app is not ready yet. Come back later when progress has been made.': >- + Esta parte da aplicación non está lista aínda. Volve máis adiante, cando se avance + no desenvolvemento. # Webkit Menu Bar -File: '' +File: 'Arquivo' Quit: '' -Edit: '' -Undo: '' -Redo: '' -Cut: '' -Copy: '' -Paste: '' -Delete: '' -Select all: '' -Reload: '' -Force Reload: '' -Toggle Developer Tools: '' +Edit: 'Editar' +Undo: 'Desfacer' +Redo: 'Refacer' +Cut: 'Cortar' +Copy: 'Copiar' +Paste: 'Pegar' +Delete: 'Eliminar' +Select all: 'Seleccionar todo' +Reload: 'Recargar' +Force Reload: 'Forzar recarga' +Toggle Developer Tools: 'Activar Ferramentas de Desenvolvedor' Actual size: '' -Zoom in: '' -Zoom out: '' -Toggle fullscreen: '' -Window: '' -Minimize: '' -Close: '' -Back: '' -Forward: '' +Zoom in: 'Agrandar' +Zoom out: 'Reducir' +Toggle fullscreen: 'Activar pantalla completa' +Window: 'Ventá' +Minimize: 'Minimizar' +Close: 'Pechar' +Back: 'Atrás' +Forward: 'Adiante' -Version $ is now available! Click for more details: '' +Version $ is now available! Click for more details: 'A versión $ está dispoñible! Fai + clic para veres máis detalles' Download From Site: '' -A new blog is now available, $. Click to view more: '' +A new blog is now available, $. Click to view more: 'Hai unha nova entrada no blog + dispoñible, $. Fai clic para veres máis' # Search Bar Search / Go to URL: '' # In Filter Button Search Filters: - Search Filters: '' + Search Filters: 'Buscar filtros' Sort By: - Sort By: '' - Most Relevant: '' + Sort By: 'Clasificar por' + Most Relevant: 'Máis relevante' Rating: '' - Upload Date: '' - View Count: '' + Upload Date: 'Data de subida' + View Count: 'Visualizacións' Time: - Time: '' + Time: 'Tempo' Any Time: '' - Last Hour: '' - Today: '' - This Week: '' - This Month: '' - This Year: '' + Last Hour: 'Última hora' + Today: 'Hoxe' + This Week: 'Esta semana' + This Month: 'Este mes' + This Year: 'Este ano' Type: - Type: '' - All Types: '' - Videos: '' - Channels: '' + Type: 'Tipo' + All Types: 'Tódolos tipos' + Videos: 'Vídeos' + Channels: 'Canles' #& Playlists Duration: - Duration: '' - All Durations: '' - Short (< 4 minutes): '' - Long (> 20 minutes): '' + Duration: 'Duración' + All Durations: 'Tódalas duracións' + Short (< 4 minutes): 'Curta (< 4 minutos)' + Long (> 20 minutes): 'Longa (> 20 minutos)' # On Search Page - Search Results: '' - Fetching results. Please wait: '' - Fetch more results: '' + Search Results: 'Resultados da busca' + Fetching results. Please wait: 'Buscando resultados. Por favor, agarda' + Fetch more results: 'Buscar máis resultados' # Sidebar Subscriptions: # On Subscriptions Page - Subscriptions: '' - Latest Subscriptions: '' + Subscriptions: 'Subscricións' + Latest Subscriptions: 'Últimas subscricións' This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '' - 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '' - 'Getting Subscriptions. Please wait.': '' - Refresh Subscriptions: '' - Load More Videos: '' -Trending: '' -Most Popular: '' -Playlists: '' + 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'A + túa listaxe de subscricións está baleira. Engade algunhas para as ver aquí.' + 'Getting Subscriptions. Please wait.': 'Obtendo subscricións. Por favor, agarda.' + Refresh Subscriptions: 'Actualizar subscricións' + Load More Videos: 'Cargar máis vídeos' +Trending: 'Tendencias' +Most Popular: 'Máis populares' +Playlists: 'Listaxes de reprodución' User Playlists: - Your Playlists: '' + Your Playlists: 'As túas listaxes de reprodución' History: # On History Page - History: '' - Watch History: '' - Your history list is currently empty.: '' + History: 'Histórico' + Watch History: 'Histórico de visualizacións' + Your history list is currently empty.: 'A túa listaxe histórica está baleira.' Settings: # On Settings Page - Settings: '' - The app needs to restart for changes to take effect. Restart and apply change?: '' + Settings: 'Axustes' + The app needs to restart for changes to take effect. Restart and apply change?: 'Queres + reiniciar a aplicación para aplicar os cambios?' General Settings: - General Settings: '' - Check for Updates: '' - Check for Latest Blog Posts: '' + General Settings: 'Axustes xerais' + Check for Updates: 'Comprobar actualizacións' + Check for Latest Blog Posts: 'Comprobar se hai novas entradas no blog' Fallback to Non-Preferred Backend on Failure: '' - Enable Search Suggestions: '' - Default Landing Page: '' - Locale Preference: '' + Enable Search Suggestions: 'Activar suxestións de busca' + Default Landing Page: 'Páxina inicial' + Locale Preference: 'Preferencia de localización' Preferred API Backend: - Preferred API Backend: '' - Local API: '' - Invidious API: '' + Preferred API Backend: 'Motor API principal' + Local API: 'API local' + Invidious API: 'API de Invidious' Video View Type: Video View Type: '' - Grid: '' - List: '' + Grid: 'Grella' + List: 'Listaxe' Thumbnail Preference: - Thumbnail Preference: '' - Default: '' - Beginning: '' - Middle: '' - End: '' - 'Invidious Instance (Default is https://invidious.snopyta.org)': '' - Region for Trending: '' + Thumbnail Preference: 'Preferencia de miniaturas' + Default: 'Por defecto' + Beginning: 'Principio' + Middle: 'Metade' + End: 'Final' + 'Invidious Instance (Default is https://invidious.snopyta.org)': 'Instancia de + Invidious (por defecto é https://invidious.snopyta.org)' + Region for Trending: 'Rexión para as tendencias' #! List countries Theme Settings: - Theme Settings: '' - Match Top Bar with Main Color: '' - Expand Side Bar by Default: '' - Disable Smooth Scrolling: '' - UI Scale: '' + Theme Settings: 'Axustes de tema' + Match Top Bar with Main Color: 'Combinar cor principal coa barra superior' + Expand Side Bar by Default: 'Expandir barra lateral por defecto' + Disable Smooth Scrolling: 'Desactivar desprazamento suavizado' + UI Scale: 'Escala da interface' Base Theme: - Base Theme: '' - Black: '' - Dark: '' - Light: '' + Base Theme: 'Tema base' + Black: 'Negro' + Dark: 'Escuro' + Light: 'Claro' Main Color Theme: - Main Color Theme: '' - Red: '' - Pink: '' - Purple: '' - Deep Purple: '' - Indigo: '' - Blue: '' - Light Blue: '' - Cyan: '' - Teal: '' - Green: '' - Light Green: '' - Lime: '' - Yellow: '' - Amber: '' - Orange: '' - Deep Orange: '' - Secondary Color Theme: '' + Main Color Theme: 'Cor principal' + Red: 'Vermello' + Pink: 'Rosa' + Purple: 'Morado' + Deep Purple: 'Morado escuro' + Indigo: 'Índigo' + Blue: 'Azul' + Light Blue: 'Azul claro' + Cyan: 'Ciano' + Teal: 'Azul petróleo' + Green: 'Verde' + Light Green: 'Verde claro' + Lime: 'Verde lima' + Yellow: 'Amarelo' + Amber: 'Ámbar' + Orange: 'Laranxa' + Deep Orange: 'Laranxa escuro' + Secondary Color Theme: 'Cor secundaria' #* Main Color Theme Player Settings: - Player Settings: '' + Player Settings: 'Axustes do reprodutor' Force Local Backend for Legacy Formats: '' - Play Next Video: '' - Turn on Subtitles by Default: '' - Autoplay Videos: '' - Proxy Videos Through Invidious: '' - Autoplay Playlists: '' - Enable Theatre Mode by Default: '' - Default Volume: '' - Default Playback Rate: '' + Play Next Video: 'Reproducir próximo vídeo' + Turn on Subtitles by Default: 'Activar subtítulos por defecto' + Autoplay Videos: 'Reproducir vídeos automaticamente' + Proxy Videos Through Invidious: 'Utilizar Invidious como intermediario' + Autoplay Playlists: 'Reproducir listaxes de reprodución automaticamente' + Enable Theatre Mode by Default: 'Activar modo cinema por defecto' + Default Volume: 'Volume predeterminado' + Default Playback Rate: 'Velocidade de reprodución predeterminada' Default Video Format: - Default Video Format: '' - Dash Formats: '' - Legacy Formats: '' - Audio Formats: '' + Default Video Format: 'Formato de vídeo predeterminado' + Dash Formats: 'Formato dash' + Legacy Formats: 'Formato antigo (Legacy)' + Audio Formats: 'Formato de audio' Default Quality: - Default Quality: '' - Auto: '' - 144p: '' - 240p: '' - 360p: '' - 480p: '' - 720p: '' - 1080p: '' - 1440p: '' - 4k: '' - 8k: '' + Default Quality: 'Calidade predeterminada' + Auto: 'Automática' + 144p: '144p' + 240p: '240p' + 360p: '360p' + 480p: '480p' + 720p: '720p' + 1080p: '1080p' + 1440p: '1440p' + 4k: '4k' + 8k: '8k' Privacy Settings: - Privacy Settings: '' - Remember History: '' - Save Watched Progress: '' - Clear Search Cache: '' - Are you sure you want to clear out your search cache?: '' - Search cache has been cleared: '' - Remove Watch History: '' - Are you sure you want to remove your entire watch history?: '' - Watch history has been cleared: '' - Remove All Subscriptions / Profiles: '' - Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '' + Privacy Settings: 'Axustes de privacidade' + Remember History: 'Lembrar histórico' + Save Watched Progress: 'Gardar progreso da reprodución' + Clear Search Cache: 'Limpar caché de busca' + Are you sure you want to clear out your search cache?: 'Estás seguro de querer + limpar o caché de busca?' + Search cache has been cleared: 'Caché de busca limpado' + Remove Watch History: 'Limpar histórico de reprodución' + Are you sure you want to remove your entire watch history?: 'Estás seguro de querer + limpar por completo o histórico de busca?' + Watch history has been cleared: 'Histórico de busca limpado' + Remove All Subscriptions / Profiles: 'Limpar tódalas subscricións / perfís' + Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: 'Estás + seguro de querer limpar tódalas subscricións e perfís? Esta acción é irreversible.' Subscription Settings: - Subscription Settings: '' - Hide Videos on Watch: '' - Fetch Feeds from RSS: '' - Manage Subscriptions: '' + Subscription Settings: 'Axustes de subscricións' + Hide Videos on Watch: 'Agochar vídeos visualizados' + Fetch Feeds from RSS: 'Obter subscricións através de RSS' + Manage Subscriptions: 'Xestionar subscricións' Distraction Free Settings: - Distraction Free Settings: '' - Hide Video Views: '' - Hide Video Likes And Dislikes: '' - Hide Channel Subscribers: '' - Hide Comment Likes: '' - Hide Recommended Videos: '' - Hide Trending Videos: '' - Hide Popular Videos: '' - Hide Live Chat: '' + Distraction Free Settings: 'Sen distraccións' + Hide Video Views: 'Agochar as visualizacións nos vídeos' + Hide Video Likes And Dislikes: 'Agochar likes/dislikes nos vídeos' + Hide Channel Subscribers: 'Agochar subscritores nas canles' + Hide Comment Likes: 'Agochar likes dos comentarios' + Hide Recommended Videos: 'Agochar vídeos recomendados' + Hide Trending Videos: 'Agochar vídeos en tendencias' + Hide Popular Videos: 'Agochar vídeos populares' + Hide Live Chat: 'Agochar chat en vivo' Data Settings: Data Settings: '' Select Import Type: '' From 0680170e073a9b24644523edddfe3bb5ea00b48e Mon Sep 17 00:00:00 2001 From: MP Date: Sat, 26 Dec 2020 23:07:00 +0000 Subject: [PATCH 17/94] Translated using Weblate (Galician) Currently translated at 58.9% (246 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/gl/ --- static/locales/gl.yaml | 234 +++++++++++++++++++++++------------------ 1 file changed, 133 insertions(+), 101 deletions(-) diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml index 1ebdf5b5..8d14dca0 100644 --- a/static/locales/gl.yaml +++ b/static/locales/gl.yaml @@ -8,7 +8,7 @@ FreeTube: 'FreeTube' # Webkit Menu Bar File: 'Arquivo' -Quit: '' +Quit: 'Saír' Edit: 'Editar' Undo: 'Desfacer' Redo: 'Refacer' @@ -20,7 +20,7 @@ Select all: 'Seleccionar todo' Reload: 'Recargar' Force Reload: 'Forzar recarga' Toggle Developer Tools: 'Activar Ferramentas de Desenvolvedor' -Actual size: '' +Actual size: 'Tamaño real' Zoom in: 'Agrandar' Zoom out: 'Reducir' Toggle fullscreen: 'Activar pantalla completa' @@ -32,24 +32,24 @@ Forward: 'Adiante' Version $ is now available! Click for more details: 'A versión $ está dispoñible! Fai clic para veres máis detalles' -Download From Site: '' +Download From Site: 'Descargar do sitio web' A new blog is now available, $. Click to view more: 'Hai unha nova entrada no blog dispoñible, $. Fai clic para veres máis' # Search Bar -Search / Go to URL: '' +Search / Go to URL: 'Buscar / Ir á URL' # In Filter Button Search Filters: Search Filters: 'Buscar filtros' Sort By: Sort By: 'Clasificar por' Most Relevant: 'Máis relevante' - Rating: '' + Rating: 'Valoración' Upload Date: 'Data de subida' View Count: 'Visualizacións' Time: Time: 'Tempo' - Any Time: '' + Any Time: 'Calquera momento' Last Hour: 'Última hora' Today: 'Hoxe' This Week: 'Esta semana' @@ -75,7 +75,8 @@ Subscriptions: # On Subscriptions Page Subscriptions: 'Subscricións' Latest Subscriptions: 'Últimas subscricións' - This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '' + This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: 'Este + perfil ten unha gran cantidade de subscricións. Forzarase RSS para evitar o límite' 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'A túa listaxe de subscricións está baleira. Engade algunhas para as ver aquí.' 'Getting Subscriptions. Please wait.': 'Obtendo subscricións. Por favor, agarda.' @@ -100,7 +101,8 @@ Settings: General Settings: 'Axustes xerais' Check for Updates: 'Comprobar actualizacións' Check for Latest Blog Posts: 'Comprobar se hai novas entradas no blog' - Fallback to Non-Preferred Backend on Failure: '' + Fallback to Non-Preferred Backend on Failure: 'Usar motor API non preferido en + caso de falla' Enable Search Suggestions: 'Activar suxestións de busca' Default Landing Page: 'Páxina inicial' Locale Preference: 'Preferencia de localización' @@ -109,7 +111,7 @@ Settings: Local API: 'API local' Invidious API: 'API de Invidious' Video View Type: - Video View Type: '' + Video View Type: 'Disposición dos vídeos' Grid: 'Grella' List: 'Listaxe' Thumbnail Preference: @@ -155,7 +157,8 @@ Settings: #* Main Color Theme Player Settings: Player Settings: 'Axustes do reprodutor' - Force Local Backend for Legacy Formats: '' + Force Local Backend for Legacy Formats: 'Forzar API local para formatos antigos + (Legacy)' Play Next Video: 'Reproducir próximo vídeo' Turn on Subtitles by Default: 'Activar subtítulos por defecto' Autoplay Videos: 'Reproducir vídeos automaticamente' @@ -212,129 +215,158 @@ Settings: Hide Popular Videos: 'Agochar vídeos populares' Hide Live Chat: 'Agochar chat en vivo' Data Settings: - Data Settings: '' - Select Import Type: '' - Select Export Type: '' - Import Subscriptions: '' - Import FreeTube: '' - Import YouTube: '' - Import NewPipe: '' - Check for Legacy Subscriptions: '' - Export Subscriptions: '' - Export FreeTube: '' - Export YouTube: '' - Export NewPipe: '' - Import History: '' - Export History: '' - Profile object has insufficient data, skipping item: '' - All subscriptions and profiles have been successfully imported: '' - All subscriptions have been successfully imported: '' - One or more subscriptions were unable to be imported: '' - Invalid subscriptions file: '' - This might take a while, please wait: '' - Invalid history file: '' - Subscriptions have been successfully exported: '' - History object has insufficient data, skipping item: '' - All watched history has been successfully imported: '' - All watched history has been successfully exported: '' - Unable to read file: '' - Unable to write file: '' - Unknown data key: '' - How do I import my subscriptions?: '' + Data Settings: 'Axustes dos datos' + Select Import Type: 'Escoller tipo de importación' + Select Export Type: 'Escoller tipo de exportación' + Import Subscriptions: 'Importar subscricións' + Import FreeTube: 'Importar FreeTube' + Import YouTube: 'Importar YouTube' + Import NewPipe: 'Importar NewPipe' + Check for Legacy Subscriptions: 'Comprobar subscricións antigas (Legacy)' + Export Subscriptions: 'Exportar subscricións' + Export FreeTube: 'Exportar Freetube' + Export YouTube: 'Exportar YouTube' + Export NewPipe: 'Exportar NewPipe' + Import History: 'Importar histórico' + Export History: 'Exportar histórico' + Profile object has insufficient data, skipping item: 'Este perfil ten datos insuficientes, + omitindo' + All subscriptions and profiles have been successfully imported: 'Tódalas subscricións + e perfís foron importados correctamente' + All subscriptions have been successfully imported: 'Tódalas subscricións foron + importadas correctamente' + One or more subscriptions were unable to be imported: 'Unha ou máis subscricións + non puideron ser importadas' + Invalid subscriptions file: 'Ficheiro de subcricións inválido' + This might take a while, please wait: 'Isto pode levar un cacho. Por favor, agarda' + Invalid history file: 'Ficheiro de histórico inválido' + Subscriptions have been successfully exported: 'As subscricións foron exportadas + correctamente' + History object has insufficient data, skipping item: 'O histórico ten datos insuficientes, + omitindo' + All watched history has been successfully imported: 'O histórico de visualizacións + foi importado correctamente' + All watched history has been successfully exported: 'O histórico de visualizacións + foi exportado correctamente' + Unable to read file: 'Imposible ler o ficheiro' + Unable to write file: 'Imposible escribir o ficheiro' + Unknown data key: 'Chave de datos descoñecida' + How do I import my subscriptions?: 'Como podo importar as subscricións?' Advanced Settings: Advanced Settings: '' - Enable Debug Mode (Prints data to the console): '' - 'Proxy Address (Example: SOCKS5://127.0.0.1:9050 )': '' - 'Clicking "TEST PROXY" button will send a request to https://ipinfo.io/json': '' - Use Tor / Proxy for API calls: '' - TEST PROXY: '' + Enable Debug Mode (Prints data to the console): 'Activar modo de depuración (escribe + datos na consola)' + 'Proxy Address (Example: SOCKS5://127.0.0.1:9050 )': 'Enderezo proxy (Exemplo: + SOCKS5://127.0.0.1:9050 )' + 'Clicking "TEST PROXY" button will send a request to https://ipinfo.io/json': 'Premendo + en "TESTAR PROXY" enviarase unha petición a https://ipinfo.io/json' + Use Tor / Proxy for API calls: 'Usar Tor / Proxy para chamadas API' + TEST PROXY: 'TESTAR PROXY' #& Invidious Instance (Default is https://invidious.snopyta.org) - See Public Instances: '' + See Public Instances: 'Ver instancias públicas' Clear History: - Clear History: '' + Clear History: 'Limpar histórico' # On Click - Are you sure you want to delete your history?: '' + Are you sure you want to delete your history?: 'Estás seguro de querer limpar + o histórico?' #& Yes #& No Clear Subscriptions: - Clear Subscriptions: '' + Clear Subscriptions: 'Limpar subscricións' # On Click - Are you sure you want to remove all subscriptions?: '' + Are you sure you want to remove all subscriptions?: 'Estás seguro de querer + limpar tódalas subscricións?' #& Yes #& No About: #On About page - About: '' + About: 'Sobre' #& About - 'This software is FOSS and released under the GNU Affero General Public License v3.0.': '' + 'This software is FOSS and released under the GNU Affero General Public License v3.0.': 'Este + software ten licencia libre AGPL-3.0.' - 'Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub page. Pull requests are welcome.': > + 'Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub page. Pull requests are welcome.': >- + Atopaches un erro? Tes algunha suxestión? Queres axudar? Visita a nosa páxina + de GitHub. Calquera petición é benvida. - Thank you very much to the People and Projects that make FreeTube possible!: '' + Thank you very much to the People and Projects that make FreeTube possible!: 'Moitas + grazas a tódalas persoas e proxectos que fan FreeTube posible!' - 'Want to chat? Join our Element / Matrix Server . Please check the rules before joining.': '' + 'Want to chat? Join our Element / Matrix Server . Please check the rules before joining.': 'Queres + chatear? Únete ao noso servidor Element / Matrix. Lembra comprobar as regras antes + de te unir.' - 'Looking for help? Check out our Wiki page.': '' + 'Looking for help? Check out our Wiki page.': 'Precisas axuda? Visita a nosa páxina + Wiki.' - Check out our Firefox extension!: '' + Check out our Firefox extension!: 'Comproba a nosa extensión para Firefox!' - 'If you enjoy using FreeTube, consider donating via Liberapay or through our Bitcoin address.': '' + 'If you enjoy using FreeTube, consider donating via Liberapay or through our Bitcoin address.': 'Se + estás a desfrutar FreeTube, considera doar através de Liberapay ou ao noso enderezo + Bitcoin.' #~ 'BTC: 1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS' - Latest FreeTube News: '' + Latest FreeTube News: 'Noticias recentes sobre FreeTube' Profile: - Profile Select: '' - All Channels: '' - Profile Manager: '' - Create New Profile: '' - Edit Profile: '' - Color Picker: '' - Custom Color: '' - Profile Preview: '' - Create Profile: '' - Update Profile: '' - Make Default Profile: '' - Delete Profile: '' - Are you sure you want to delete this profile?: '' - All subscriptions will also be deleted.: '' - Profile could not be found: '' - Your profile name cannot be empty: '' - Profile has been created: '' - Profile has been updated: '' - Your default profile has been set to $: '' - Removed $ from your profiles: '' - Your default profile has been changed to your primary profile: '' - $ is now the active profile: '' - Subscription List: '' - Other Channels: '' - $ selected: '' - Select All: '' - Select None: '' - Delete Selected: '' - Add Selected To Profile: '' - No channel(s) have been selected: '' + Profile Select: 'Selección de perfil' + All Channels: 'Tódalas canles' + Profile Manager: 'Xestor de perfís' + Create New Profile: 'Crear novo perfil' + Edit Profile: 'Editar perfil' + Color Picker: 'Selector de cor' + Custom Color: 'Cor personalizada' + Profile Preview: 'Vista previa do perfil' + Create Profile: 'Crear perfil' + Update Profile: 'Actualizar perfil' + Make Default Profile: 'Converter en perfil predeterminado' + Delete Profile: 'Eliminar perfil' + Are you sure you want to delete this profile?: 'Estás seguro de querer eliminar + este perfil?' + All subscriptions will also be deleted.: 'Tamén se eliminarán tódalas subscricións.' + Profile could not be found: 'Non se atopou o perfil' + Your profile name cannot be empty: 'O nome do perfil non pode estar en branco' + Profile has been created: 'Creouse o perfil' + Profile has been updated: 'Actualizouse o perfil' + Your default profile has been set to $: '$ é agora o teu perfil predeterminado' + Removed $ from your profiles: 'Eliminouse $ dos teus perfís' + Your default profile has been changed to your primary profile: 'O teu perfil predeterminado + cambiouse ao teu perfil primario' + $ is now the active profile: '$ é agora o perfil activo' + Subscription List: 'Listaxe de subcricións' + Other Channels: 'Outras canles' + $ selected: '$ seleccionado' + Select All: 'Seleccionar todos' + Select None: 'Non seleccionar ningún' + Delete Selected: 'Eliminar seleccionados' + Add Selected To Profile: 'Engadir seleccionados ao perfil' + No channel(s) have been selected: 'Ningunha canle foi seleccionada' ? This is your primary profile. Are you sure you want to delete the selected channels? The same channels will be deleted in any profile they are found in. - : '' - Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: '' + : 'Este é o teu perfil principal. Estás seguro de querer eliminar as canles seleccionadas? Eliminaranse + as mesmas en calquera perfil no que se atopen.' + Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: 'Estás + seguro de querer eliminar as canles seleccionadas? Esta acción non as eliminará + de ningún outro perfil.' #On Channel Page Channel: - Subscriber: '' - Subscribers: '' - Subscribe: '' - Unsubscribe: '' - Channel has been removed from your subscriptions: '' + Subscriber: 'Subscritor' + Subscribers: 'Subscritores' + Subscribe: 'Subscribirse' + Unsubscribe: 'Desubscribirse' + Channel has been removed from your subscriptions: 'Esta canle foi eliminada das + túas subscricións' Removed subscription from $ other channel(s): '' - Added channel to your subscriptions: '' - Search Channel: '' - Your search results have returned 0 results: '' - Sort By: '' + Added channel to your subscriptions: 'Canle engadida ás túas subscricións' + Search Channel: 'Buscar na canle' + Your search results have returned 0 results: 'A busca non atopou resultados' + Sort By: 'Ordenar por' Videos: - Videos: '' - This channel does not currently have any videos: '' + Videos: 'Vídeos' + This channel does not currently have any videos: 'Esta canle aínda non ten ningún + vídeo' Sort Types: Newest: '' Oldest: '' From 3b97e7598d809ece94170ea863976a8cf1d2d047 Mon Sep 17 00:00:00 2001 From: Preston Date: Sat, 26 Dec 2020 22:21:06 -0500 Subject: [PATCH 18/94] Prevent smooth quality changes to switch qualities faster --- src/renderer/components/ft-video-player/ft-video-player.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/ft-video-player/ft-video-player.js b/src/renderer/components/ft-video-player/ft-video-player.js index 15004fb5..63fc5221 100644 --- a/src/renderer/components/ft-video-player/ft-video-player.js +++ b/src/renderer/components/ft-video-player/ft-video-player.js @@ -177,7 +177,9 @@ export default Vue.extend({ this.player = videojs(videoPlayer, { html5: { vhs: { - limitRenditionByPlayerDimensions: false + limitRenditionByPlayerDimensions: false, + smoothQualityChange: false, + allowSeeksWithinUnsafeLiveWindow: true } } }) From bef6732e63161261308e047edeeb0328f0eea9a6 Mon Sep 17 00:00:00 2001 From: MP Date: Sun, 27 Dec 2020 12:24:12 +0000 Subject: [PATCH 19/94] Translated using Weblate (Galician) Currently translated at 87.2% (364 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/gl/ --- static/locales/gl.yaml | 292 ++++++++++++++++++++++------------------- 1 file changed, 157 insertions(+), 135 deletions(-) diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml index 8d14dca0..abaf067e 100644 --- a/static/locales/gl.yaml +++ b/static/locales/gl.yaml @@ -368,175 +368,197 @@ Channel: This channel does not currently have any videos: 'Esta canle aínda non ten ningún vídeo' Sort Types: - Newest: '' - Oldest: '' - Most Popular: '' + Newest: 'Máis recentes' + Oldest: 'Máis antigos' + Most Popular: 'Máis populares' Playlists: - Playlists: '' - This channel does not currently have any playlists: '' + Playlists: 'Listaxes de reprodución' + This channel does not currently have any playlists: 'Esta canle non ten ningunha + listaxe de reprodución actualmente' Sort Types: - Last Video Added: '' - Newest: '' - Oldest: '' + Last Video Added: 'Último vídeo engadido' + Newest: 'O máis recente' + Oldest: 'O máis antigo' About: - About: '' - Channel Description: '' - Featured Channels: '' + About: 'Sobre' + Channel Description: 'Descrición da canle' + Featured Channels: 'Canles destacadas' Video: - Mark As Watched: '' - Remove From History: '' - Video has been marked as watched: '' - Video has been removed from your history: '' - Open in YouTube: '' - Copy YouTube Link: '' - Open YouTube Embedded Player: '' - Copy YouTube Embedded Player Link: '' - Open in Invidious: '' - Copy Invidious Link: '' - Open Channel in YouTube: '' - Copy YouTube Channel Link: '' - Open Channel in Invidious: '' - Copy Invidious Channel Link: '' + Mark As Watched: 'Marcar como visto' + Remove From History: 'Eliminar do histórico' + Video has been marked as watched: 'O vídeo marcouse como visto' + Video has been removed from your history: 'O vídeo eliminouse do teu histórico' + Open in YouTube: 'Abrir no YouTube' + Copy YouTube Link: 'Copiar ligazón de YouTube' + Open YouTube Embedded Player: 'Abrir reprodutor integrado de YouTube' + Copy YouTube Embedded Player Link: 'Copiar ligazón do preprodutor integrado de YouTube' + Open in Invidious: 'Abrir no Invidious' + Copy Invidious Link: 'Copiar ligazón de Invidious' + Open Channel in YouTube: 'Abrir canle no YouTube' + Copy YouTube Channel Link: 'Copiar ligazón de YouTube da canle' + Open Channel in Invidious: 'Abrir canle no Invidious' + Copy Invidious Channel Link: 'Copiar ligazón de Invidious da canle' View: '' - Views: '' - Loop Playlist: '' - Shuffle Playlist: '' - Reverse Playlist: '' - Play Next Video: '' - Play Previous Video: '' + Views: 'Visualizacións' + Loop Playlist: 'Reprodución en bucle' + Shuffle Playlist: 'Reprodución aleatoria' + Reverse Playlist: 'Inverter listaxe de reprodución' + Play Next Video: 'Reproducir próximo vídeo' + Play Previous Video: 'Reproducir vídeo anterior' # Context is "X People Watching" - Watching: '' - Watched: '' - Autoplay: '' - Starting soon, please refresh the page to check again: '' + Watching: 'A ver' + Watched: 'Visto' + Autoplay: 'Reprodución automática' + Starting soon, please refresh the page to check again: 'Comezará en breve. Por favor, + actualiza a páxina para verificares' # As in a Live Video - Live: '' - Live Now: '' - Live Chat: '' - Enable Live Chat: '' - Live Chat is currently not supported in this build.: '' - 'Chat is disabled or the Live Stream has ended.': '' - Live chat is enabled. Chat messages will appear here once sent.: '' - 'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': '' - Download Video: '' - video only: '' - audio only: '' + Live: 'En vivo' + Live Now: 'En vivo agora' + Live Chat: 'Chat en vivo' + Enable Live Chat: 'Activar chat en vivo' + Live Chat is currently not supported in this build.: 'O chat en vivo non está soportado + nesta versión.' + 'Chat is disabled or the Live Stream has ended.': 'O chat foi desactivado ou a transmisión + en vivo rematou.' + Live chat is enabled. Chat messages will appear here once sent.: 'Chat en vivo + activado. As mensaxes aparecerán aquí ao seren enviadas.' + 'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Chat + en vivo actualmente non soportado coa API de Invidious. Precísase dunha conexión + directa con YouTube.' + Download Video: 'Descargar vídeo' + video only: 'Só vídeo' + audio only: 'Só audio' Audio: - Low: '' - Medium: '' - High: '' - Best: '' + Low: 'Baixa' + Medium: 'Media' + High: 'Alta' + Best: 'Máxima' Published: - Jan: '' - Feb: '' - Mar: '' - Apr: '' - May: '' - Jun: '' - Jul: '' - Aug: '' - Sep: '' - Oct: '' - Nov: '' - Dec: '' + Jan: 'Xan' + Feb: 'Feb' + Mar: 'Mar' + Apr: 'Abr' + May: 'Mai' + Jun: 'Xuñ' + Jul: 'Xul' + Aug: 'Ago' + Sep: 'Set' + Oct: 'Out' + Nov: 'Nov' + Dec: 'Dec' Second: '' - Seconds: '' - Minute: '' - Minutes: '' - Hour: '' - Hours: '' - Day: '' - Days: '' - Week: '' - Weeks: '' - Month: '' - Months: '' - Year: '' - Years: '' - Ago: '' - Upcoming: '' - Published on: '' - Streamed on: '' - Started streaming on: '' + Seconds: 'Segundos' + Minute: 'Minuto' + Minutes: 'Minutos' + Hour: 'Hora' + Hours: 'Horas' + Day: 'Día' + Days: 'Días' + Week: 'Semana' + Weeks: 'Semanas' + Month: 'Mes' + Months: 'Meses' + Year: 'Ano' + Years: 'Anos' + Ago: 'Hai' + Upcoming: 'Estrea' + Published on: 'Publicado' + Streamed on: 'Transmitido' + Started streaming on: 'A transmisión comezou' # $ is replaced with the number and % with the unit (days, hours, minutes...) - Publicationtemplate: '' + Publicationtemplate: 'Hai $ %' #& Videos Videos: #& Sort By Sort By: - Newest: '' - Oldest: '' + Newest: 'Máis recente' + Oldest: 'Máis antigo' #& Most Popular #& Playlists Playlist: #& About - View Full Playlist: '' - Videos: '' - View: '' - Views: '' - Last Updated On: '' + View Full Playlist: 'Ver listaxe de reprodución completa' + Videos: 'Vídeos' + View: 'Visualización' + Views: 'Visualizacións' + Last Updated On: 'Última actualización' Share Playlist: - Share Playlist: '' - Copy YouTube Link: '' - Open in YouTube: '' - Copy Invidious Link: '' - Open in Invidious: '' + Share Playlist: 'Compartir listaxe de reprodución' + Copy YouTube Link: 'Copiar ligazón de YouTube' + Open in YouTube: 'Abrir no YouTube' + Copy Invidious Link: 'Copiar ligazón de Invidious' + Open in Invidious: 'Abrir en Invidious' # On Video Watch Page #* Published #& Views -Toggle Theatre Mode: '' +Toggle Theatre Mode: 'Activar modo cinema' Change Format: - Change Video Formats: '' - Use Dash Formats: '' - Use Legacy Formats: '' - Use Audio Formats: '' - Dash formats are not available for this video: '' - Audio formats are not available for this video: '' + Change Video Formats: 'Mudar formato do vídeo' + Use Dash Formats: 'Utilizar formato Dash' + Use Legacy Formats: 'Utilizar formato antigo (Legacy)' + Use Audio Formats: 'Utilizar formato só de audio' + Dash formats are not available for this video: 'Formato Dash non dispoñible para + este vídeo' + Audio formats are not available for this video: 'Formato só de audio non dispoñible + para este vídeo' Share: - Share Video: '' - Include Timestamp: '' - Copy Link: '' - Open Link: '' - Copy Embed: '' - Open Embed: '' + Share Video: 'Compartir vídeo' + Include Timestamp: 'Incluír marcación de tempo' + Copy Link: 'Copiar ligazón' + Open Link: 'Abrir ligazón' + Copy Embed: 'Copiar código integrado' + Open Embed: 'Abrir código integrado' # On Click - Invidious URL copied to clipboard: '' - Invidious Embed URL copied to clipboard: '' - Invidious Channel URL copied to clipboard: '' - YouTube URL copied to clipboard: '' - YouTube Embed URL copied to clipboard: '' - YouTube Channel URL copied to clipboard: '' + Invidious URL copied to clipboard: 'Ligazón de Invidious copiada á área de transferencia' + Invidious Embed URL copied to clipboard: 'Ligazón integrada de Invidious copiada + á área de transferencia' + Invidious Channel URL copied to clipboard: 'Ligazón de Invidious da canle copiada + á área de transferencia' + YouTube URL copied to clipboard: 'Ligazón de YouTube copiada á área de transferencia' + YouTube Embed URL copied to clipboard: 'Ligazón integrada de YouTube copiada á área + de transferencia' + YouTube Channel URL copied to clipboard: 'Ligazón de YouTube da canle copiada á + área de transferencia' -Mini Player: '' +Mini Player: 'Mini-reprodutor' Comments: - Comments: '' - Click to View Comments: '' - Getting comment replies, please wait: '' - There are no more comments for this video: '' - Show Comments: '' - Hide Comments: '' - Sort by: '' - Top comments: '' - Newest first: '' + Comments: 'Comentarios' + Click to View Comments: 'Premer para ver comentarios' + Getting comment replies, please wait: 'Obtendo respostas ao comentario. Por favor, + agarda' + There are no more comments for this video: 'Non hai máis comentarios neste vídeo' + Show Comments: 'Amosar comentarios' + Hide Comments: 'Agochar comentarios' + Sort by: 'Ordenar por' + Top comments: 'Comentarios destacados' + Newest first: 'Máis recentes' # Context: View 10 Replies, View 1 Reply - View: '' - Hide: '' - Replies: '' - Reply: '' - There are no comments available for this video: '' - Load More Comments: '' - No more comments available: '' -Up Next: '' + View: 'Amosar' + Hide: 'Agochar' + Replies: 'Respostas' + Reply: 'Resposta' + There are no comments available for this video: 'Este vídeo non contén ningún comentario' + Load More Comments: 'Cargar máis comentarios' + No more comments available: 'Non hai máis comentarios' +Up Next: 'Seguintes' #Tooltips Tooltips: General Settings: - Preferred API Backend: '' - Fallback to Non-Preferred Backend on Failure: '' - Thumbnail Preference: '' - Invidious Instance: '' - Region for Trending: '' + Preferred API Backend: 'Escolle o back-end que FreeTube utiliza para obter os + datos. A API local é un extractor incluído. A API de Invidious require un servidor + Invidious ao que se conectar.' + Fallback to Non-Preferred Backend on Failure: 'Cando a túa API primaria falla, + FreeTube tentará utilizar a API secundaria automaticamente se se habilita' + Thumbnail Preference: 'Tódalas miniaturas en FreeTube serán remplazadas cunha + imaxe do vídeo no canto da miniatura predeterminada' + Invidious Instance: 'A instancia de Invidious á que FreeTube se conectará para + as chamadas API. Limpa a instancia actual para veres unha listaxe de instancias + públicas' + Region for Trending: 'A rexión das tendencias permíteche escoller os vídeos máis + populares nun Estado. Non tódolos Estados que se amosan están soportados por + YouTube' Player Settings: Force Local Backend for Legacy Formats: '' Proxy Videos Through Invidious: '' From 28f6bbbd516ad48ff031916498fb2372110f4536 Mon Sep 17 00:00:00 2001 From: MP Date: Sun, 27 Dec 2020 19:38:56 +0000 Subject: [PATCH 20/94] Translated using Weblate (Galician) Currently translated at 91.6% (382 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/gl/ --- static/locales/gl.yaml | 58 ++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/static/locales/gl.yaml b/static/locales/gl.yaml index abaf067e..89a59e20 100644 --- a/static/locales/gl.yaml +++ b/static/locales/gl.yaml @@ -560,29 +560,43 @@ Tooltips: populares nun Estado. Non tódolos Estados que se amosan están soportados por YouTube' Player Settings: - Force Local Backend for Legacy Formats: '' - Proxy Videos Through Invidious: '' - Default Video Format: '' + Force Local Backend for Legacy Formats: 'Só funcionará se a API de Invidious está + escollida por defecto. Cando estea activa, a API local usará formatos antigos + (Legacy) no canto dos de Invidious. Axuda cando Invidious non pode reproducir + un vídeo por causa das restricións rexionais' + Proxy Videos Through Invidious: 'Conectarase a Invidious para obter vídeos no + canto de recorrer directamente a YouTube. Sobrescribirá a preferencia de API' + Default Video Format: 'Selecciona os formatos usados cando se reproduce un vídeo. + Os formatos Dash teñen resolucións máis altas. Os formatos antigos (Legacy) + están limitados a 720p pero utilizan menos largura de banda. Os formatos de + audio reproducen unicamente audio' Subscription Settings: - Fetch Feeds from RSS: '' + Fetch Feeds from RSS: 'Cando está activado, FreeTube usará RSS no canto do método + predeterminao para obter as subscricións. RSS é máis rápido e impide o bloqueo + da IP, pero non proporciona certa información como a duración dun vídeo ou se + é en vivo' # Toast Messages -Local API Error (Click to copy): '' -Invidious API Error (Click to copy): '' -Falling back to Invidious API: '' -Falling back to the local API: '' -This video is unavailable because of missing formats. This can happen due to country unavailability.: '' -Subscriptions have not yet been implemented: '' -Loop is now disabled: '' -Loop is now enabled: '' -Shuffle is now disabled: '' -Shuffle is now enabled: '' -The playlist has been reversed: '' -Playing Next Video: '' -Playing Previous Video: '' -Playing next video in 5 seconds. Click to cancel: '' -Canceled next video autoplay: '' -'The playlist has ended. Enable loop to continue playing': '' +Local API Error (Click to copy): 'Erro de API local (Preme para copiar)' +Invidious API Error (Click to copy): 'Erro de API Invidious (Preme para copiar)' +Falling back to Invidious API: 'Recorrendo á API Invidious' +Falling back to the local API: 'Recorrendo á API local' +This video is unavailable because of missing formats. This can happen due to country unavailability.: 'Este + vídeo non está dispoñible por ter un formato inválido. Isto pode pasar pola non + dispoñibilidade rexional' +Subscriptions have not yet been implemented: 'As subscricións aínda non foron implementadas' +Loop is now disabled: 'Reprodución en bucle desactivada' +Loop is now enabled: 'Reprodución en bucle activada' +Shuffle is now disabled: 'Reprodución aleatoria desactivada' +Shuffle is now enabled: 'Reprodución aleatoria activada' +The playlist has been reversed: 'A listaxe de reprodución foi invertida' +Playing Next Video: 'A reproducir próximo vídeo' +Playing Previous Video: 'A reproducir vídeo anterior' +Playing next video in 5 seconds. Click to cancel: 'O próximo vídeo reproducirase + en 5 segundos. Preme para cancelar.' +Canceled next video autoplay: 'Reprodución cancelada' +'The playlist has ended. Enable loop to continue playing': 'A listaxe de reprodución + rematou. Activa a reprodución en bucle para continuar reproducindo' -Yes: '' -No: '' +Yes: 'Si' +No: 'Non' From 996690beb4a92879003a83355bb9132742392be1 Mon Sep 17 00:00:00 2001 From: alium Date: Mon, 28 Dec 2020 18:18:51 +0000 Subject: [PATCH 21/94] Translated using Weblate (Czech) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/ --- static/locales/cs.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index c5057da0..ecb92acd 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -132,7 +132,7 @@ Settings: Base Theme: Base Theme: 'Základní motiv' Black: 'Černý' - Dark: 'Temný' + Dark: 'Tmavý' Light: 'Světlý' Main Color Theme: Main Color Theme: 'Hlavní barevný motiv' @@ -458,7 +458,7 @@ Video: Upcoming: 'Premiéra' Published on: 'Publikováno' # $ is replaced with the number and % with the unit (days, hours, minutes...) - Publicationtemplate: '$ % před' + Publicationtemplate: 'před $ %' #& Videos Started streaming on: Začátek vysílání Streamed on: Vysíláno From 8bd6d5f68363b853570acca37c189c7be050844a Mon Sep 17 00:00:00 2001 From: D4708 Date: Tue, 29 Dec 2020 18:30:43 +0000 Subject: [PATCH 22/94] Translated using Weblate (Ukrainian) Currently translated at 39.3% (164 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/uk/ --- static/locales/uk.yaml | 46 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/static/locales/uk.yaml b/static/locales/uk.yaml index 03891221..8b9d00a4 100644 --- a/static/locales/uk.yaml +++ b/static/locales/uk.yaml @@ -188,43 +188,43 @@ Settings: Privacy Settings: Privacy Settings: 'Налаштування приватності' Remember History: '' - Save Watched Progress: '' + Save Watched Progress: 'Зберігати прогрес перегляду' Clear Search Cache: 'Очистити пошуковий кеш' Are you sure you want to clear out your search cache?: '' Search cache has been cleared: '' Remove Watch History: 'Видалити історію переглядів' Are you sure you want to remove your entire watch history?: '' Watch history has been cleared: 'Історію переглядів було очищено' - Remove All Subscriptions / Profiles: '' + Remove All Subscriptions / Profiles: 'Видалити всі підписки / профілі' Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '' Subscription Settings: - Subscription Settings: '' - Hide Videos on Watch: '' + Subscription Settings: 'Налаштування підписки' + Hide Videos on Watch: 'Ховати відео при перегляді' Fetch Feeds from RSS: '' - Manage Subscriptions: '' + Manage Subscriptions: 'Керування підписками' Distraction Free Settings: Distraction Free Settings: '' - Hide Video Views: '' + Hide Video Views: 'Сховати перегляди відео' Hide Video Likes And Dislikes: '' - Hide Channel Subscribers: '' - Hide Comment Likes: '' - Hide Recommended Videos: '' - Hide Trending Videos: '' - Hide Popular Videos: '' - Hide Live Chat: '' + Hide Channel Subscribers: 'Не показувати підписників каналу' + Hide Comment Likes: 'Не показувати уподобання коментарів' + Hide Recommended Videos: 'Не показувати рекомендовані відео' + Hide Trending Videos: 'Не показувати тренди відео' + Hide Popular Videos: 'Не показувати популярні відео' + Hide Live Chat: 'Не показувати живий чат' Data Settings: - Data Settings: '' - Select Import Type: '' - Select Export Type: '' - Import Subscriptions: '' - Import FreeTube: '' - Import YouTube: '' - Import NewPipe: '' + Data Settings: 'Налаштування даних' + Select Import Type: 'Оберіть тип імпорту' + Select Export Type: 'Оберіть тип експорту' + Import Subscriptions: 'Імпортувати підписки' + Import FreeTube: 'Імпортувати FreeTube' + Import YouTube: 'Імпортувати YouTube' + Import NewPipe: 'Імпортувати NewPipe' Check for Legacy Subscriptions: '' - Export Subscriptions: '' - Export FreeTube: '' - Export YouTube: '' - Export NewPipe: '' + Export Subscriptions: 'Експортувати підписки' + Export FreeTube: 'Експортувати FreeTube' + Export YouTube: 'Експортувати YouTube' + Export NewPipe: 'Експортувати NewPipe' Import History: '' Export History: '' Profile object has insufficient data, skipping item: '' From 9ab37e3768e439c33be5ca18e65a37e13e54966f Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Wed, 30 Dec 2020 02:45:27 +0000 Subject: [PATCH 23/94] Translated using Weblate (French) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/ --- static/locales/fr-FR.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index bd6a9f47..43883534 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -200,7 +200,7 @@ Settings: 'Proxy Address (Example: SOCKS5://127.0.0.1:9050 )': 'Adresse Proxy (Exemple : SOCKS5://127.0.0.1:9050 )' 'Clicking "TEST PROXY" button will send a request to https://ipinfo.io/json': 'Cliquer - sur le bouton "TEST PROXY" enverra une demande à https://ipinfo.io/json' + sur le bouton « TEST PROXY » enverra une demande à https://ipinfo.io/json' Use Tor / Proxy for API calls: 'Utiliser Tor / Proxy pour les appels de l''API' TEST PROXY: 'TESTER LE PROXY' #& Invidious Instance (Default is https://invidious.snopyta.org) @@ -284,7 +284,7 @@ Settings: Hide Popular Videos: Masquer les vidéos populaires Hide Trending Videos: Masquer les tendances Hide Recommended Videos: Masquer les vidéos recommandées - Distraction Free Settings: Mode Sans Distraction + Distraction Free Settings: Mode sans distraction The app needs to restart for changes to take effect. Restart and apply change?: L'application doit être redémarrée pour que les changements prennent effet. Redémarrer et appliquer les changements ? @@ -296,9 +296,9 @@ About: logiciel est sous licence AGPL-3.0.' 'Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub page. Pull requests are welcome.': >- - Vous avez trouvé un bug ? Vous souhaitez suggérer une nouvelle fonctionnalité - ? Vous voulez aider de façon générale ? Rendez-vous sur la page GitHub. Les "Pull - requests" sont les bienvenues. + Vous avez trouvé une erreur ? Vous souhaitez suggérer une nouvelle fonctionnalité + ? Vous voulez aider de façon générale ? Rendez-vous sur la page GitHub. Les pull + requests sont les bienvenues. Thank you very much to the People and Projects that make FreeTube possible!: 'Un grand merci à toutes les personnes et à tous les projets qui ont rendu FreeTube From f465893faa1d802aafe85441ea90020b44a53ce2 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Wed, 30 Dec 2020 02:43:47 +0000 Subject: [PATCH 24/94] Translated using Weblate (Italian) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/ --- static/locales/it.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/static/locales/it.yaml b/static/locales/it.yaml index a98c0bc6..4c02bff5 100644 --- a/static/locales/it.yaml +++ b/static/locales/it.yaml @@ -127,24 +127,24 @@ Settings: Dark: 'Scuro' Light: 'Chiaro' Main Color Theme: - Main Color Theme: 'Tema Colori Principale' + Main Color Theme: 'Tema colori principale' Red: 'Rosso' Pink: 'Rosa' Purple: 'Viola' - Deep Purple: 'Viola Scuro' + Deep Purple: 'Viola scuro' Indigo: 'Indaco' Blue: 'Blu' Light Blue: 'Azzurro' Cyan: 'Ciano' Teal: 'Verde acqua' Green: 'Verde' - Light Green: 'Verde Chiaro' + Light Green: 'Verde chiaro' Lime: 'Lime' Yellow: 'Giallo' Amber: 'Ambra' Orange: 'Arancione' Deep Orange: 'Arancione scuro' - Secondary Color Theme: 'Tema Colori Secondario' + Secondary Color Theme: 'Tema colori secondario' #* Main Color Theme UI Scale: Dimensioni Interfaccia Disable Smooth Scrolling: Disabilita Scorrimento Fluido @@ -157,8 +157,8 @@ Settings: Autoplay Videos: 'Riproduci Video Automaticamente' Proxy Videos Through Invidious: 'Proxy dei Video tramite Invidious' Autoplay Playlists: 'Riproduci le playlist automaticamente' - Enable Theatre Mode by Default: 'Abilita Modalità Teatro di Default' - Default Volume: 'Volume Predefinito' + Enable Theatre Mode by Default: 'Abilita modalità teatro come predefinita' + Default Volume: 'Volume predefinito' Default Playback Rate: 'Velocità di riproduzione predefinita' Default Video Format: Default Video Format: 'Formato Video Predefinito' @@ -166,7 +166,7 @@ Settings: Legacy Formats: 'Formati Legacy' Audio Formats: 'Formati Audio' Default Quality: - Default Quality: 'Qualità Predefinita' + Default Quality: 'Qualità predefinita' Auto: 'Auto' 144p: '144p' 240p: '240p' @@ -178,14 +178,14 @@ Settings: 4k: '4k' 8k: '8k' Privacy Settings: - Privacy Settings: 'Impostazioni Privacy' + Privacy Settings: 'Impostazioni privacy' Remember History: 'Salva la Cronologia' Save Watched Progress: 'Ricorda Avanzamento Video' Clear Search Cache: 'Pulisci la Cache di Ricerca' Are you sure you want to clear out your search cache?: 'Sei sicuro/a di voler pulire la cache di ricerca?' Search cache has been cleared: 'La cache di ricerca è stata pulita' - Remove Watch History: 'Cancella Cronologia Visualizzazioni' + Remove Watch History: 'Cancella la cronologia visualizzazioni' Are you sure you want to remove your entire watch history?: 'Sei sicuro/a di voler cancellare l''intera cronologia di visualizzazione?' Watch history has been cleared: 'La cronologia di visualizzazioni è stata pulita' From 908bc55b636b51e0e0ef96a1e310567898512194 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Wed, 30 Dec 2020 02:41:31 +0000 Subject: [PATCH 25/94] Translated using Weblate (English (United Kingdom)) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/en_GB/ --- static/locales/en_GB.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml index 69764c31..7cb6cec3 100644 --- a/static/locales/en_GB.yaml +++ b/static/locales/en_GB.yaml @@ -123,7 +123,7 @@ Settings: #! List countries Theme Settings: Theme Settings: 'Theme Settings' - Match Top Bar with Main Color: 'Match Top Bar with Main Colour' + Match Top Bar with Main Color: 'Match top bar with main colour' Base Theme: Base Theme: 'Base Theme' Black: 'Black' @@ -246,7 +246,7 @@ Settings: 'Proxy Address (Example: SOCKS5://127.0.0.1:9050 )': 'Proxy Address (Example: SOCKS5://127.0.0.1:9050 )' 'Clicking "TEST PROXY" button will send a request to https://ipinfo.io/json': 'Clicking - "TEST PROXY" button will send a request to https://ipinfo.io/json' + ‘TEST PROXY’ button will send a request to https://ipinfo.io/json' Use Tor / Proxy for API calls: 'Use Tor / Proxy for API calls' TEST PROXY: 'TEST PROXY' #& Invidious Instance (Default is https://invidious.snopyta.org) From 038c85cdd23b0186e80c95f2f6a4408606c0ed38 Mon Sep 17 00:00:00 2001 From: The Cats Date: Wed, 30 Dec 2020 14:32:24 +0000 Subject: [PATCH 26/94] Translated using Weblate (Portuguese (Brazil)) Currently translated at 77.4% (323 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index e354879d..1382883f 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -240,6 +240,8 @@ Settings: foram possíveis serem importadas All subscriptions have been successfully imported: Todas as inscrições foram importadas com sucesso + Select Import Type: Selecione o Tipo de Importação + Data Settings: Configurações de Dados Distraction Free Settings: Hide Live Chat: Esconder chat ao vivo Hide Popular Videos: Esconder vídeos populares @@ -247,6 +249,9 @@ Settings: Hide Recommended Videos: Esconder vídeos recomendados Hide Comment Likes: Esconder curtidas dos comentários Distraction Free Settings: Configurações de Modo sem Distração + Hide Channel Subscribers: Ocultar Assinantes do Canal + Hide Video Likes And Dislikes: Ocultar curtidas e desgostos do vídeo + Hide Video Views: Ocultar Visualizações de Vídeo The app needs to restart for changes to take effect. Restart and apply change?: O aplicativo necessita reiniciar para as mudanças fazerem efeito. Reiniciar e aplicar mudança? From 6fc224a24c565050fdcae71a29833c80b3f908da Mon Sep 17 00:00:00 2001 From: Luca Date: Wed, 30 Dec 2020 20:45:16 +0100 Subject: [PATCH 27/94] Added a debug folder to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 82b7513e..eb8ebb84 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ coverage __coverage__ csak-timelog.json .idea/ +debug/ From 54b0ea1abc1b7d3b7c0f70fb269b8b4036064ac9 Mon Sep 17 00:00:00 2001 From: Luca Date: Wed, 30 Dec 2020 20:46:48 +0100 Subject: [PATCH 28/94] On Import now checks in YouTube subscription json file whether duplicates exist --- src/renderer/components/data-settings/data-settings.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/data-settings/data-settings.js b/src/renderer/components/data-settings/data-settings.js index dca95ee1..020fc6e4 100644 --- a/src/renderer/components/data-settings/data-settings.js +++ b/src/renderer/components/data-settings/data-settings.js @@ -265,7 +265,11 @@ export default Vue.extend({ return sub.id === subscription.id || sub.name === subscription.name }) - if (subExists === -1) { + const subDuplicateExists = subscriptions.findIndex((sub) => { + return sub.id === subscription.id || sub.name === subscription.name + }) + + if (subExists === -1 && subDuplicateExists === -1) { subscriptions.push(subscription) } From 07576ecdc6c825558589666e1350233a0e99f351 Mon Sep 17 00:00:00 2001 From: Dennis ten Hoove Date: Wed, 30 Dec 2020 20:33:50 +0000 Subject: [PATCH 29/94] Translated using Weblate (Dutch) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nl/ --- static/locales/nl.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index 4fbb3313..a7a97210 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -373,7 +373,7 @@ Video: 'Chat is disabled or the Live Stream has ended.': 'Chat is uitgeschakeld of de Live Stream is beëindigd.' Live chat is enabled. Chat messages will appear here once sent.: 'Live chat is - ingeschakeld. Chat berichten zullen hier verschijnen.' + ingeschakeld. Chats zullen hier verschijnen.' 'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Live Chat wordt momenteel niet ondersteund door de Invidious API. Een directe verbinding met YouTube is nodig.' From 268748bd55aa3fc4cc915783fab36dcb9f1bb102 Mon Sep 17 00:00:00 2001 From: D4708 Date: Wed, 30 Dec 2020 21:07:30 +0000 Subject: [PATCH 30/94] Translated using Weblate (Ukrainian) Currently translated at 39.8% (166 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/uk/ --- static/locales/uk.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/locales/uk.yaml b/static/locales/uk.yaml index 8b9d00a4..8ab43b6b 100644 --- a/static/locales/uk.yaml +++ b/static/locales/uk.yaml @@ -225,8 +225,8 @@ Settings: Export FreeTube: 'Експортувати FreeTube' Export YouTube: 'Експортувати YouTube' Export NewPipe: 'Експортувати NewPipe' - Import History: '' - Export History: '' + Import History: 'Імпортувати історію' + Export History: 'Експортувати історію' Profile object has insufficient data, skipping item: '' All subscriptions and profiles have been successfully imported: '' All subscriptions have been successfully imported: '' From 8aaa70744e1abeff538ec3b76ad3f3eba5fa216d Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 31 Dec 2020 12:02:35 +0100 Subject: [PATCH 31/94] Added Galician as activated language --- src/renderer/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/main.js b/src/renderer/main.js index dad1a4f0..7429f87d 100644 --- a/src/renderer/main.js +++ b/src/renderer/main.js @@ -23,7 +23,7 @@ Vue.component('FontAwesomeIcon', FontAwesomeIcon) Vue.use(VueI18n) // List of locales approved for use -const activeLocales = ['en-US', 'en_GB', 'ar', 'bg', 'cs', 'da', 'de-DE', 'el', 'es', 'es-MX', 'fi', 'fr-FR', 'he', 'hu', 'hr', 'id', 'it', 'ja', 'nl', 'pl', 'pt', 'pt-BR', 'pt-PT', 'ru', 'sk', 'sl', 'sv', 'tr', 'vi', 'zh-CN', 'zh-TW'] +const activeLocales = ['en-US', 'en_GB', 'ar', 'bg', 'cs', 'da', 'de-DE', 'el', 'es', 'es-MX', 'fi', 'fr-FR', 'gl', 'he', 'hu', 'hr', 'id', 'it', 'ja', 'nl', 'pl', 'pt', 'pt-BR', 'pt-PT', 'ru', 'sk', 'sl', 'sv', 'tr', 'vi', 'zh-CN', 'zh-TW'] const messages = {} /* eslint-disable-next-line */ const fileLocation = isDev ? 'static/locales/' : `${__dirname}/static/locales/` From 24d15f6151be6666acf4a51155fa77e3c9903511 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 31 Dec 2020 12:22:26 +0100 Subject: [PATCH 32/94] Check video likes and dislikes for NaN --- src/renderer/views/Watch/Watch.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index 275d5152..6f186420 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -264,8 +264,8 @@ export default Vue.extend({ this.videoLikeCount = null this.videoDislikeCount = null } else { - this.videoLikeCount = result.videoDetails.likes - this.videoDislikeCount = result.videoDetails.dislikes + this.videoLikeCount = isNaN(result.videoDetails.likes) ? 0 : result.videoDetails.likes + this.videoDislikeCount = isNaN(result.videoDetails.dislikes) ? 0 : result.videoDetails.dislikes } this.isLive = result.player_response.videoDetails.isLive this.isLiveContent = result.player_response.videoDetails.isLiveContent From cb42ef9b4c4849f769dcf29161a57904ac267a5c Mon Sep 17 00:00:00 2001 From: Deleted User Date: Fri, 1 Jan 2021 06:17:40 +0000 Subject: [PATCH 33/94] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/ --- static/locales/zh-CN.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/locales/zh-CN.yaml b/static/locales/zh-CN.yaml index 80d72054..0400a90f 100644 --- a/static/locales/zh-CN.yaml +++ b/static/locales/zh-CN.yaml @@ -188,7 +188,7 @@ Settings: Advanced Settings: '高级设置' Enable Debug Mode (Prints data to the console): '允许调试模式(打印数据在控制板)' 'Proxy Address (Example: SOCKS5://127.0.0.1:9050 )': '代理地址(例如:SOCKS5://127.0.0.1:9050)' - 'Clicking "TEST PROXY" button will send a request to https://ipinfo.io/json': '点击“测试代理”健将发送请求给https://ipinfo.io/json' + 'Clicking "TEST PROXY" button will send a request to https://ipinfo.io/json': '点击“测试代理”键将发送请求给https://ipinfo.io/json' Use Tor / Proxy for API calls: '用Tor / 代理给API呼叫' TEST PROXY: '测试代理' #& Invidious Instance (Default is https://invidious.snopyta.org) From 35345855c69eef2a60c647bda48de6d88c6f3ce7 Mon Sep 17 00:00:00 2001 From: Violet Rose Date: Fri, 1 Jan 2021 10:15:24 -0800 Subject: [PATCH 34/94] Adding playlist database logic (#802) * Added playlist database logic. * Added grab. * Added removeOnWatched. --- src/renderer/store/modules/playlist.js | 182 +++++++++++++++++++++---- 1 file changed, 159 insertions(+), 23 deletions(-) diff --git a/src/renderer/store/modules/playlist.js b/src/renderer/store/modules/playlist.js index 5d6c3eea..8f3b2799 100644 --- a/src/renderer/store/modules/playlist.js +++ b/src/renderer/store/modules/playlist.js @@ -16,48 +16,184 @@ if (window && window.process && window.process.type === 'renderer') { dbLocation = 'playlists.db' } -const subDb = new Datastore({ +const playlistDb = new Datastore({ filename: dbLocation, autoload: true }) const state = { - activePlaylistId: '', - activePlaylistVideoList: [], - watchedVideosWithinPlaylist: [] + playlists: [ + { + _id: 'favorites', + protected: true, + videos: [] + }, + { + _id: 'watchLater', + protected: true, + removeOnWatched: true, + videos: [] + } + ] } -const mutations = { - addSubscription (state, payload) { - state.subscriptions.push(payload) - }, - setSubscriptions (state, payload) { - state.subscriptions = payload - } +const getters = { + getAllPlaylists: () => state.playlists, + getFavorites: () => state.playlists[0], + getPlaylist: (playlistId) => state.playlists.find(playlist => playlist._id === playlistId), + getWatchLater: () => state.playlists[1] } const actions = { - addSubscriptions ({ commit }, payload) { - subDb.insert(payload, (err, payload) => { - if (!err) { - commit('addSubscription', payload) + addPlaylist ({ commit }, payload) { + playlistDb.insert(payload, (err, payload) => { + if (err) { + console.error(err) + } else { + commit('addPlaylist', payload) } }) }, - getSubscriptions ({ commit }, payload) { - subDb.find({}, (err, payload) => { - if (!err) { - commit('setSubscriptions', payload) + addPlaylists ({ commit }, payload) { + playlistDb.insert(payload, (err, payload) => { + if (err) { + console.error(err) + } else { + commit('addPlaylists', payload) } }) }, - removeSubscription ({ commit }, channelId) { - subDb.remove({ channelId: channelId }, {}, () => { - commit('setSubscriptions', this.state.subscriptions.filter(sub => sub.channelId !== channelId)) + addVideo ({ commit }, payload) { + playlistDb.update({ _id: payload.playlistId }, { $push: { videos: payload.videoId } }, { upsert: true }, err => { + if (err) { + console.error(err) + } else { + commit('addVideo', payload) + } + }) + }, + addVideos ({ commit }, payload) { + playlistDb.update({ _id: payload.playlistId }, { $push: { videos: { $each: payload.videosIds } } }, { upsert: true }, err => { + if (err) { + console.error(err) + } else { + commit('addVideos', payload) + } + }) + }, + grabAllPlaylists({ commit }) { + playlistDb.getAllData((err, payload) => { + if (err) { + console.error(err) + } else { + commit('setAllPlaylists', payload) + } + }) + }, + removeAllPlaylists ({ commit }) { + playlistDb.remove({ protected: { $ne: true } }, err => { + if (err) { + console.error(err) + } else { + commit('removeAllPlaylists') + } + }) + }, + removeAllVideos ({ commit }, playlistId) { + playlistDb.update({ _id: playlistId }, { $set: { videos: [] } }, { upsert: true }, err => { + if (err) { + console.error(err) + } else { + commit('removeAllVideos', playlistId) + } + }) + }, + removePlaylist ({ commit }, playlistId) { + playlistDb.remove({ _id: playlistId, protected: { $ne: true } }, (err, playlistId) => { + if (err) { + console.error(err) + } else { + commit('removePlaylist', playlistId) + } + }) + }, + removePlaylists ({ commit }, playlistIds) { + playlistDb.remove({ _id: { $in: playlistIds }, protected: { $ne: true } }, (err, playlistIds) => { + if (err) { + console.error(err) + } else { + commit('removePlaylists', playlistIds) + } + }) + }, + removeVideo ({ commit }, payload) { + playlistDb.update({ _id: payload.playlistId }, { $pull: { videos: payload.videoId } }, { upsert: true }, err => { + if (err) { + console.error(err) + } else { + commit('removeVideo', payload) + } + }) + }, + removeVideos ({ commit }, payload) { + playlistDb.update({ _id: payload.playlistId }, { $pull: { videos: { $in: payload.videoIds } } }, { upsert: true }, err => { + if (err) { + console.error(err) + } else { + commit('removeVideos', payload) + } }) } } -const getters = {} + +const mutations = { + addPlaylist (state, payload) { + state.playlists.push(payload) + }, + addPlaylists (state, payload) { + state.playlists = state.playlists.concat(payload) + }, + addVideo (state, payload) { + const playlist = state.playlists.find(playlist => playlist._id === payload.playlistId) + if (playlist) { + playlist.videos.push(payload.videoId) + } + }, + addVideos (state, payload) { + const playlist = state.playlists.find(playlist => playlist._id === payload.playlistId) + if (playlist) { + playlist.videos = playlist.videos.concat(payload.playlistIds) + } + }, + removeAllPlaylists (state) { + state.playlists = state.playlists.filter(playlist => playlist.protected !== true) + }, + removeAllVideos (state, playlistId) { + const playlist = state.playlists.find(playlist => playlist._id === playlistId) + if (playlist) { + playlist.videos = [] + } + }, + removeVideo (state, payload) { + const playlist = state.playlists.find(playlist => playlist._id === payload.playlistId) + if (playlist) { + playlist.videos = playlist.videos.filter(video => video !== payload.videoId) + } + }, + removeVideos (state, payload) { + const playlist = state.playlists.find(playlist => playlist._id === payload.playlistId) + if (playlist) { + playlist.videos = playlist.videos.filter(video => payload.videoIds.indexOf(video) === -1) + } + }, + removePlaylist (state, playlistId) { + state.playlists = state.playlists.filter(playlist => playlist._id !== playlistId || playlist.protected) + }, + setAllPlaylists (state, payload) { + state.playlists = payload + } +} + export default { state, getters, From bfd8701d11d34c7152a636806e24bff33ccf8b8c Mon Sep 17 00:00:00 2001 From: Preston Date: Fri, 1 Jan 2021 15:43:37 -0500 Subject: [PATCH 35/94] Update README.md --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 68f55a93..e8ba438b 100644 --- a/README.md +++ b/README.md @@ -14,11 +14,11 @@ addressed. ### Browser Extension -Download our browser extension so that you can click on videos in your browser and have them automatically open up in FreeTube. +FreeTube is supported by the [Privacy Redirect](https://github.com/SimonBrazell/privacy-redirect) extension, which will allow you to open YouTube links into FreeTube. You must enable the option within the advanced settings for it to work. -[Download for Firefox](https://addons.mozilla.org/en-US/firefox/addon/freetube-redirect/) +Download Privacy Redirect for [Firefox](https://addons.mozilla.org/en-US/firefox/addon/privacy-redirect/) or [Google Chrome](https://chrome.google.com/webstore/detail/privacy-redirect/pmcmeagblkinmogikoikkdjiligflglb). -[Instructions for Google Chrome](https://github.com/FreeTubeApp/FreeTube/wiki/Browser-Extension) +If you have issues with the extension working with FreeTube, please create an issue in this repository instead of the extension repository. ## How does it work? FreeTube uses a built in extractor to grab and serve data / videos. The [Invidious API](https://github.com/iv-org/invidious) can also optionally be used. FreeTube does not use any official APIs to obtain data. While YouTube can still see your video requests, it can no @@ -34,6 +34,7 @@ to hide your IP while using FreeTube. * Two extractor APIs to choose from (Built in or Invidious) * Subscribe to channels without an account * Local subscriptions, history, and saved videos +* Organize your subscriptions into "Profiles" to create a more focused feed * Export & import subscriptions * Open videos from your browser directly into FreeTube (with extension) * Mini Player @@ -47,12 +48,12 @@ to hide your IP while using FreeTube. [FreeTube Website](https://freetubeapp.io/#download) +Flatpak on Flathub: [Download](https://flathub.org/apps/details/io.freetubeapp.FreeTube) [Source](https://github.com/flathub/io.freetubeapp.FreeTube) + ### Unofficial Downloads These builds are maintained by the community. While they should be safe, download at your own risk. There may be issues with using these versus the official builds. Any issues specific with these builds should be sent to their respective maintainer. -Flatpak on Flathub: [Download](https://flathub.org/apps/details/io.freetubeapp.FreeTube) [Source](https://github.com/flathub/io.freetubeapp.FreeTube) - Arch User Repository (AUR): [Download](https://aur.archlinux.org/packages/freetube-bin/) Chocolatey: [Download](https://chocolatey.org/packages/freetube/) @@ -87,7 +88,7 @@ We are actively looking for translations! We use Weblate to make it easy for tr ## Contact -If you ever have any questions, feel free to make an issue here on GitHub. Alternatively, you can email me at FreeTubeApp@protonmail.com or you can join our [Matrix Community](https://riot.im/app/#/group/+freetube:matrix.org). Don't forget to check out the [rules](https://github.com/FreeTubeApp/FreeTube/wiki/Matrix-Server-Info-&-Rules) before joining. +If you ever have any questions, feel free to make an issue here on GitHub. Alternatively, you can email me at FreeTubeApp@protonmail.com or you can join our [Matrix Community](https://matrix.to/#/+freetube:matrix.org). Don't forget to check out the [rules](https://github.com/FreeTubeApp/FreeTube/wiki/Matrix-Server-Info-&-Rules) before joining. You can also stay up to date by reading the [FreeTube Blog](https://write.as/freetube/). [View the welcome blog](https://write.as/freetube/welcome-to-freetube-blogs). From 0d9949fcb29f78a60397bbf1a4abd1806ecab0c9 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sat, 2 Jan 2021 12:27:26 +0000 Subject: [PATCH 36/94] Translated using Weblate (German) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index a8f1b442..32c81df3 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -6,7 +6,7 @@ FreeTube: FreeTube # Webkit Menu Bar File: Datei -Quit: Verlassen +Quit: Beenden Edit: Bearbeiten Undo: Rückgängig Redo: Wiederherstellen @@ -16,7 +16,7 @@ Paste: Einfügen Delete: Löschen Select all: Alles auswählen Reload: Aktualisieren -Force Reload: Erzwinge Aktualisierung +Force Reload: Aktualisierung erzwingen Toggle Developer Tools: Aktiviere Entwicklerwerkzeuge Actual size: Originalgröße Zoom in: Vergrößern @@ -116,7 +116,7 @@ Settings: (Standard ist https://invidious.snopyta.org) Region for Trending: Region für Trends #! List countries - Check for Latest Blog Posts: Nach aktuellstem Blogeintrag suchen + Check for Latest Blog Posts: Nach aktuellsten Blogeinträgen suchen Check for Updates: Nach Aktualisierungen suchen Theme Settings: Theme Settings: Thema Einstellungen @@ -151,7 +151,7 @@ Settings: Expand Side Bar by Default: Seitenleiste standardmäßig erweitern Player Settings: Player Settings: Videoabspieler-Einstellungen - Force Local Backend for Legacy Formats: Lokales System für Altformat erzwingen + Force Local Backend for Legacy Formats: Lokales System für Legacy Formate erzwingen Remember History: Verlauf speichern Play Next Video: Spiele nächstes Video Turn on Subtitles by Default: Untertitel standardmäßig aktivieren @@ -468,7 +468,7 @@ Share Playlist: # On Video Watch Page #* Published #& Views -Toggle Theatre Mode: Aktiviere Kinomodus +Toggle Theatre Mode: Kinomodus umschalten Change Format: Change Video Formats: Ändere Videoformat Use Dash Formats: Nutze DASH-Format From 0fb0700df76abe3433df4f7fcfdc248b127fcd0c Mon Sep 17 00:00:00 2001 From: george k Date: Sat, 2 Jan 2021 11:06:44 +0000 Subject: [PATCH 37/94] Translated using Weblate (Greek) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/el/ --- static/locales/el.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/static/locales/el.yaml b/static/locales/el.yaml index 9b8525e2..930d896f 100644 --- a/static/locales/el.yaml +++ b/static/locales/el.yaml @@ -31,7 +31,7 @@ Back: 'Μετάβαση πίσω' Forward: 'Μετάβαση μπροστά' # Search Bar -Search / Go to URL: 'Αναζήτηση/Τοποθετήστε Διεύθυνση URL' +Search / Go to URL: 'Αναζήτηση/Μετάβαση στη URL' # In Filter Button Search Filters: Search Filters: 'Φίλτρα αναζήτησης' @@ -39,16 +39,16 @@ Search Filters: Sort By: 'Ταξινόμηση κατά' Most Relevant: 'Πιο σχετικό' Rating: 'Αξιολόγηση' - Upload Date: 'Ημερομηνία αποστολής' + Upload Date: 'Ημερομηνία μεταφόρτωσης' View Count: 'Πλήθος Προβολών' Time: - Time: 'Χρόνος' - Any Time: 'Οποιαδήποτε περίοδος' - Last Hour: 'Τελευταία ώρα' + Time: 'Ώρα' + Any Time: 'Οποτεδήποτε' + Last Hour: 'Τελευταίας ώρας' Today: 'Σήμερα' This Week: 'Τρέχουσα Εβδομάδα' This Month: 'Αυτό το μήνα' - This Year: 'Αυτού του χρόνου' + This Year: 'Τρέχων έτος' Type: Type: 'Είδος' All Types: 'Όλα τα είδη' @@ -70,8 +70,8 @@ Subscriptions: Subscriptions: 'Εγγραφές' Latest Subscriptions: 'Τελευταίες Εγγραφές' 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'Η - λίστα εγγραφών σας είναι προς το παρόν κενή. Ξεκινήστε να προσθέτετε εγγραφές/συνδρομές - για να τις παρακολουθείτε εδώ.' + λίστα συνδρομών σας είναι προς το παρόν κενή. Προσθέστε συνδρομές για να τις παρακολουθείτε + από εδώ.' 'Getting Subscriptions. Please wait.': 'Ανάκτηση Εγγραφών/Συνδρομών. Παρακαλώ περιμένετε.' Refresh Subscriptions: 'Ανανέωση Εγγραφών/Συνδρομών' This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: Αυτό @@ -98,7 +98,7 @@ Settings: υποστήριξης σε περίπτωση αποτυχίας' Enable Search Suggestions: 'Ενεργοποίηση προτάσεων αναζήτησης' Default Landing Page: 'Προεπιλεγμένη σελίδα προορισμού' - Locale Preference: 'Προτιμώμενη Γλώσσα' + Locale Preference: 'Προτιμήσεις γλώσσας' Preferred API Backend: Preferred API Backend: 'Προτιμώμενο συστήμα (API)' Local API: 'Τοπική διεπαφή προγραμματισμού εφαρμογών (API)' @@ -114,7 +114,7 @@ Settings: Middle: 'Μέση' End: 'Τέλος' 'Invidious Instance (Default is https://invidious.snopyta.org)': 'Διακομιστής - Invidious (Ο προκαθορισμένος είναι https://invidious.snopyta.org)' + Invidious (προεπιλογή https://invidious.snopyta.org)' Region for Trending: 'Περιοχή που καθορίζει την καρτέλα των τάσεων' #! List countries Check for Latest Blog Posts: Ελέγξτε για τις τελευταίες δημοσιεύσεις ιστολογίου From 64f2f9ed289fc6520958e2037b391779cbda7cde Mon Sep 17 00:00:00 2001 From: Dennis ten Hoove Date: Sun, 3 Jan 2021 08:15:34 +0000 Subject: [PATCH 38/94] Translated using Weblate (Dutch) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nl/ --- static/locales/nl.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index a7a97210..307ea96c 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -122,7 +122,7 @@ Settings: Theme Settings: 'Thema Instellingen' Match Top Bar with Main Color: 'Paar Bovenste Balk met Primaire Kleur' Base Theme: - Base Theme: 'Basis Thema' + Base Theme: 'Basisthema' Black: 'Zwart' Dark: 'Donker' Light: 'Licht' @@ -179,8 +179,8 @@ Settings: 8k: '8k' Privacy Settings: Privacy Settings: 'Privacy Instellingen' - Remember History: 'Onthoud Geschiedenis' - Save Watched Progress: 'Behoud Video Voortgang' + Remember History: 'Herinner Geschiedenis' + Save Watched Progress: 'Herinner Video Voortgang' Clear Search Cache: 'Verwijder Zoek-cache' Are you sure you want to clear out your search cache?: 'Weet u zeker dat u de zoek-cache wil verwijderen?' @@ -576,15 +576,15 @@ This video is unavailable because of missing formats. This can happen due to cou als de video niet in uw land beschikbaar is. Tooltips: Player Settings: - Default Video Format: Selecteer de video indeling dat word gebruikt wanneer een - video afspeelt. Dash kan video's afspelen met hogere kwaliteit instellingen. + Default Video Format: Selecteer de video indeling dat wordt gebruikt wanneer u + een video afspeelt. Dash kan video's afspelen met hogere kwaliteitsinstellingen. Legacy gaat niet hoger dan 720p maar gebruikt minder bandbreedte. Audio zal alleen het geluid streamen - Force Local Backend for Legacy Formats: Dit zal alleen werken wanneer de Invidious - API is geselecteerd als standaard. Wanneer ingeschakeld zal de lokale API legacy - video indelingen verzamelen in plaats van de videoformaten die worden teruggegeven - door Invidious. Dit kan helpen wanneer een video die verzameld word via Invidious - niet afspeelt in verband met regio restricties + Force Local Backend for Legacy Formats: Dit zal alleen werken wanneer Invidious + is geselecteerd als de standaard API. Wanneer ingeschakeld zal de lokale API + legacy video indelingen gebruiken in plaats van de video indeling die worden + teruggegeven door Invidious. Dit kan helpen wanneer een video die word gestreamed + via Invidious niet afspeelt in verband met regio restricties Proxy Videos Through Invidious: FreeTube zal verbinden met Invidious en via daar de video's downloaden in de plaats van de video's rechstreeks bij YouTube vandaan te halen. Dit overschrijft de ingestelde API voorkeur From c36056f09b47bf08eae0252c5097884c9721fc35 Mon Sep 17 00:00:00 2001 From: The Cats Date: Mon, 4 Jan 2021 19:36:14 +0000 Subject: [PATCH 39/94] Translated using Weblate (Portuguese (Brazil)) Currently translated at 80.3% (335 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index 1382883f..a3058680 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -242,6 +242,18 @@ Settings: com sucesso Select Import Type: Selecione o Tipo de Importação Data Settings: Configurações de Dados + Export History: Exportar Histórico + Import History: Importar Histórico + Export NewPipe: Exportar NewPipe + Export YouTube: Exportar YouTube + Export FreeTube: Exportar FreeTube + Export Subscriptions: Exportar Inscrições + Check for Legacy Subscriptions: Verificar se há inscrições em formato antigo + Import NewPipe: Importar NewPipe + Import YouTube: Importar YouTube + Import FreeTube: Importar FreeTube + Import Subscriptions: Importar Inscrições + Select Export Type: Escolher Tipo de Exportação Distraction Free Settings: Hide Live Chat: Esconder chat ao vivo Hide Popular Videos: Esconder vídeos populares From ed259f7c7b8bd0b08ae77886c63c5523894af879 Mon Sep 17 00:00:00 2001 From: pablodekota <7fe323d0-34a6-4a37-940f-8d4d082d99aa@4wrd.cc> Date: Wed, 6 Jan 2021 11:36:46 +0100 Subject: [PATCH 40/94] Added translation using Weblate (Bosnian) --- static/locales/bs.yaml | 524 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 524 insertions(+) create mode 100644 static/locales/bs.yaml diff --git a/static/locales/bs.yaml b/static/locales/bs.yaml new file mode 100644 index 00000000..215b23d7 --- /dev/null +++ b/static/locales/bs.yaml @@ -0,0 +1,524 @@ +# Put the name of your locale in the same language +Locale Name: '' +FreeTube: '' +# Currently on Subscriptions, Playlists, and History +'This part of the app is not ready yet. Come back later when progress has been made.': > + +# Webkit Menu Bar +File: '' +Quit: '' +Edit: '' +Undo: '' +Redo: '' +Cut: '' +Copy: '' +Paste: '' +Delete: '' +Select all: '' +Reload: '' +Force Reload: '' +Toggle Developer Tools: '' +Actual size: '' +Zoom in: '' +Zoom out: '' +Toggle fullscreen: '' +Window: '' +Minimize: '' +Close: '' +Back: '' +Forward: '' + +Version $ is now available! Click for more details: '' +Download From Site: '' +A new blog is now available, $. Click to view more: '' + +# Search Bar +Search / Go to URL: '' + # In Filter Button +Search Filters: + Search Filters: '' + Sort By: + Sort By: '' + Most Relevant: '' + Rating: '' + Upload Date: '' + View Count: '' + Time: + Time: '' + Any Time: '' + Last Hour: '' + Today: '' + This Week: '' + This Month: '' + This Year: '' + Type: + Type: '' + All Types: '' + Videos: '' + Channels: '' + #& Playlists + Duration: + Duration: '' + All Durations: '' + Short (< 4 minutes): '' + Long (> 20 minutes): '' + # On Search Page + Search Results: '' + Fetching results. Please wait: '' + Fetch more results: '' +# Sidebar +Subscriptions: + # On Subscriptions Page + Subscriptions: '' + Latest Subscriptions: '' + This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '' + 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '' + 'Getting Subscriptions. Please wait.': '' + Refresh Subscriptions: '' + Load More Videos: '' +Trending: '' +Most Popular: '' +Playlists: '' +User Playlists: + Your Playlists: '' +History: + # On History Page + History: '' + Watch History: '' + Your history list is currently empty.: '' +Settings: + # On Settings Page + Settings: '' + The app needs to restart for changes to take effect. Restart and apply change?: '' + General Settings: + General Settings: '' + Check for Updates: '' + Check for Latest Blog Posts: '' + Fallback to Non-Preferred Backend on Failure: '' + Enable Search Suggestions: '' + Default Landing Page: '' + Locale Preference: '' + Preferred API Backend: + Preferred API Backend: '' + Local API: '' + Invidious API: '' + Video View Type: + Video View Type: '' + Grid: '' + List: '' + Thumbnail Preference: + Thumbnail Preference: '' + Default: '' + Beginning: '' + Middle: '' + End: '' + 'Invidious Instance (Default is https://invidious.snopyta.org)': '' + Region for Trending: '' + #! List countries + Theme Settings: + Theme Settings: '' + Match Top Bar with Main Color: '' + Expand Side Bar by Default: '' + Disable Smooth Scrolling: '' + UI Scale: '' + Base Theme: + Base Theme: '' + Black: '' + Dark: '' + Light: '' + Main Color Theme: + Main Color Theme: '' + Red: '' + Pink: '' + Purple: '' + Deep Purple: '' + Indigo: '' + Blue: '' + Light Blue: '' + Cyan: '' + Teal: '' + Green: '' + Light Green: '' + Lime: '' + Yellow: '' + Amber: '' + Orange: '' + Deep Orange: '' + Secondary Color Theme: '' + #* Main Color Theme + Player Settings: + Player Settings: '' + Force Local Backend for Legacy Formats: '' + Play Next Video: '' + Turn on Subtitles by Default: '' + Autoplay Videos: '' + Proxy Videos Through Invidious: '' + Autoplay Playlists: '' + Enable Theatre Mode by Default: '' + Default Volume: '' + Default Playback Rate: '' + Default Video Format: + Default Video Format: '' + Dash Formats: '' + Legacy Formats: '' + Audio Formats: '' + Default Quality: + Default Quality: '' + Auto: '' + 144p: '' + 240p: '' + 360p: '' + 480p: '' + 720p: '' + 1080p: '' + 1440p: '' + 4k: '' + 8k: '' + Privacy Settings: + Privacy Settings: '' + Remember History: '' + Save Watched Progress: '' + Clear Search Cache: '' + Are you sure you want to clear out your search cache?: '' + Search cache has been cleared: '' + Remove Watch History: '' + Are you sure you want to remove your entire watch history?: '' + Watch history has been cleared: '' + Remove All Subscriptions / Profiles: '' + Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: '' + Subscription Settings: + Subscription Settings: '' + Hide Videos on Watch: '' + Fetch Feeds from RSS: '' + Manage Subscriptions: '' + Distraction Free Settings: + Distraction Free Settings: '' + Hide Video Views: '' + Hide Video Likes And Dislikes: '' + Hide Channel Subscribers: '' + Hide Comment Likes: '' + Hide Recommended Videos: '' + Hide Trending Videos: '' + Hide Popular Videos: '' + Hide Live Chat: '' + Data Settings: + Data Settings: '' + Select Import Type: '' + Select Export Type: '' + Import Subscriptions: '' + Import FreeTube: '' + Import YouTube: '' + Import NewPipe: '' + Check for Legacy Subscriptions: '' + Export Subscriptions: '' + Export FreeTube: '' + Export YouTube: '' + Export NewPipe: '' + Import History: '' + Export History: '' + Profile object has insufficient data, skipping item: '' + All subscriptions and profiles have been successfully imported: '' + All subscriptions have been successfully imported: '' + One or more subscriptions were unable to be imported: '' + Invalid subscriptions file: '' + This might take a while, please wait: '' + Invalid history file: '' + Subscriptions have been successfully exported: '' + History object has insufficient data, skipping item: '' + All watched history has been successfully imported: '' + All watched history has been successfully exported: '' + Unable to read file: '' + Unable to write file: '' + Unknown data key: '' + How do I import my subscriptions?: '' + Advanced Settings: + Advanced Settings: '' + Enable Debug Mode (Prints data to the console): '' + 'Proxy Address (Example: SOCKS5://127.0.0.1:9050 )': '' + 'Clicking "TEST PROXY" button will send a request to https://ipinfo.io/json': '' + Use Tor / Proxy for API calls: '' + TEST PROXY: '' + #& Invidious Instance (Default is https://invidious.snopyta.org) + See Public Instances: '' + Clear History: + Clear History: '' + # On Click + Are you sure you want to delete your history?: '' + #& Yes + #& No + Clear Subscriptions: + Clear Subscriptions: '' + # On Click + Are you sure you want to remove all subscriptions?: '' + #& Yes + #& No + +About: + #On About page + About: '' + #& About + 'This software is FOSS and released under the GNU Affero General Public License v3.0.': '' + + 'Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub page. Pull requests are welcome.': > + + Thank you very much to the People and Projects that make FreeTube possible!: '' + + 'Want to chat? Join our Element / Matrix Server . Please check the rules before joining.': '' + + 'Looking for help? Check out our Wiki page.': '' + + Check out our Firefox extension!: '' + + 'If you enjoy using FreeTube, consider donating via Liberapay or through our Bitcoin address.': '' + + #~ 'BTC: 1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS' + + Latest FreeTube News: '' + +Profile: + Profile Select: '' + All Channels: '' + Profile Manager: '' + Create New Profile: '' + Edit Profile: '' + Color Picker: '' + Custom Color: '' + Profile Preview: '' + Create Profile: '' + Update Profile: '' + Make Default Profile: '' + Delete Profile: '' + Are you sure you want to delete this profile?: '' + All subscriptions will also be deleted.: '' + Profile could not be found: '' + Your profile name cannot be empty: '' + Profile has been created: '' + Profile has been updated: '' + Your default profile has been set to $: '' + Removed $ from your profiles: '' + Your default profile has been changed to your primary profile: '' + $ is now the active profile: '' + Subscription List: '' + Other Channels: '' + $ selected: '' + Select All: '' + Select None: '' + Delete Selected: '' + Add Selected To Profile: '' + No channel(s) have been selected: '' + ? This is your primary profile. Are you sure you want to delete the selected channels? The + same channels will be deleted in any profile they are found in. + : '' + Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: '' +#On Channel Page +Channel: + Subscriber: '' + Subscribers: '' + Subscribe: '' + Unsubscribe: '' + Channel has been removed from your subscriptions: '' + Removed subscription from $ other channel(s): '' + Added channel to your subscriptions: '' + Search Channel: '' + Your search results have returned 0 results: '' + Sort By: '' + Videos: + Videos: '' + This channel does not currently have any videos: '' + Sort Types: + Newest: '' + Oldest: '' + Most Popular: '' + Playlists: + Playlists: '' + This channel does not currently have any playlists: '' + Sort Types: + Last Video Added: '' + Newest: '' + Oldest: '' + About: + About: '' + Channel Description: '' + Featured Channels: '' +Video: + Mark As Watched: '' + Remove From History: '' + Video has been marked as watched: '' + Video has been removed from your history: '' + Open in YouTube: '' + Copy YouTube Link: '' + Open YouTube Embedded Player: '' + Copy YouTube Embedded Player Link: '' + Open in Invidious: '' + Copy Invidious Link: '' + Open Channel in YouTube: '' + Copy YouTube Channel Link: '' + Open Channel in Invidious: '' + Copy Invidious Channel Link: '' + View: '' + Views: '' + Loop Playlist: '' + Shuffle Playlist: '' + Reverse Playlist: '' + Play Next Video: '' + Play Previous Video: '' + # Context is "X People Watching" + Watching: '' + Watched: '' + Autoplay: '' + Starting soon, please refresh the page to check again: '' + # As in a Live Video + Live: '' + Live Now: '' + Live Chat: '' + Enable Live Chat: '' + Live Chat is currently not supported in this build.: '' + 'Chat is disabled or the Live Stream has ended.': '' + Live chat is enabled. Chat messages will appear here once sent.: '' + 'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': '' + Download Video: '' + video only: '' + audio only: '' + Audio: + Low: '' + Medium: '' + High: '' + Best: '' + Published: + Jan: '' + Feb: '' + Mar: '' + Apr: '' + May: '' + Jun: '' + Jul: '' + Aug: '' + Sep: '' + Oct: '' + Nov: '' + Dec: '' + Second: '' + Seconds: '' + Minute: '' + Minutes: '' + Hour: '' + Hours: '' + Day: '' + Days: '' + Week: '' + Weeks: '' + Month: '' + Months: '' + Year: '' + Years: '' + Ago: '' + Upcoming: '' + Published on: '' + Streamed on: '' + Started streaming on: '' + # $ is replaced with the number and % with the unit (days, hours, minutes...) + Publicationtemplate: '' +#& Videos +Videos: + #& Sort By + Sort By: + Newest: '' + Oldest: '' + #& Most Popular +#& Playlists +Playlist: + #& About + View Full Playlist: '' + Videos: '' + View: '' + Views: '' + Last Updated On: '' + Share Playlist: + Share Playlist: '' + Copy YouTube Link: '' + Open in YouTube: '' + Copy Invidious Link: '' + Open in Invidious: '' + +# On Video Watch Page +#* Published +#& Views +Toggle Theatre Mode: '' +Change Format: + Change Video Formats: '' + Use Dash Formats: '' + Use Legacy Formats: '' + Use Audio Formats: '' + Dash formats are not available for this video: '' + Audio formats are not available for this video: '' +Share: + Share Video: '' + Include Timestamp: '' + Copy Link: '' + Open Link: '' + Copy Embed: '' + Open Embed: '' + # On Click + Invidious URL copied to clipboard: '' + Invidious Embed URL copied to clipboard: '' + Invidious Channel URL copied to clipboard: '' + YouTube URL copied to clipboard: '' + YouTube Embed URL copied to clipboard: '' + YouTube Channel URL copied to clipboard: '' + +Mini Player: '' +Comments: + Comments: '' + Click to View Comments: '' + Getting comment replies, please wait: '' + There are no more comments for this video: '' + Show Comments: '' + Hide Comments: '' + Sort by: '' + Top comments: '' + Newest first: '' + # Context: View 10 Replies, View 1 Reply + View: '' + Hide: '' + Replies: '' + Reply: '' + There are no comments available for this video: '' + Load More Comments: '' + No more comments available: '' +Up Next: '' + +#Tooltips +Tooltips: + General Settings: + Preferred API Backend: '' + Fallback to Non-Preferred Backend on Failure: '' + Thumbnail Preference: '' + Invidious Instance: '' + Region for Trending: '' + Player Settings: + Force Local Backend for Legacy Formats: '' + Proxy Videos Through Invidious: '' + Default Video Format: '' + Subscription Settings: + Fetch Feeds from RSS: '' + +# Toast Messages +Local API Error (Click to copy): '' +Invidious API Error (Click to copy): '' +Falling back to Invidious API: '' +Falling back to the local API: '' +This video is unavailable because of missing formats. This can happen due to country unavailability.: '' +Subscriptions have not yet been implemented: '' +Loop is now disabled: '' +Loop is now enabled: '' +Shuffle is now disabled: '' +Shuffle is now enabled: '' +The playlist has been reversed: '' +Playing Next Video: '' +Playing Previous Video: '' +Playing next video in 5 seconds. Click to cancel: '' +Canceled next video autoplay: '' +'The playlist has ended. Enable loop to continue playing': '' + +Yes: '' +No: '' From c63f1e96e27fef79a8164670a0ff9d13b4c361cf Mon Sep 17 00:00:00 2001 From: pablodekota <7fe323d0-34a6-4a37-940f-8d4d082d99aa@4wrd.cc> Date: Wed, 6 Jan 2021 11:19:38 +0000 Subject: [PATCH 41/94] Translated using Weblate (Bosnian) Currently translated at 22.7% (95 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bs/ --- static/locales/bs.yaml | 195 ++++++++++++++++++++++------------------- 1 file changed, 103 insertions(+), 92 deletions(-) diff --git a/static/locales/bs.yaml b/static/locales/bs.yaml index 215b23d7..6e8a9ceb 100644 --- a/static/locales/bs.yaml +++ b/static/locales/bs.yaml @@ -1,123 +1,134 @@ # Put the name of your locale in the same language -Locale Name: '' -FreeTube: '' +Locale Name: 'Bosanski' +FreeTube: 'FreeTube' # Currently on Subscriptions, Playlists, and History -'This part of the app is not ready yet. Come back later when progress has been made.': > +'This part of the app is not ready yet. Come back later when progress has been made.': >- + Ovaj dio aplikacije još nije spreman. Vratite se kasnije kad se postigne napredak. # Webkit Menu Bar -File: '' -Quit: '' -Edit: '' -Undo: '' -Redo: '' -Cut: '' -Copy: '' -Paste: '' -Delete: '' -Select all: '' -Reload: '' -Force Reload: '' -Toggle Developer Tools: '' -Actual size: '' -Zoom in: '' -Zoom out: '' -Toggle fullscreen: '' -Window: '' -Minimize: '' -Close: '' -Back: '' -Forward: '' +File: 'Fajl' +Quit: 'Napusti' +Edit: 'Uredi' +Undo: 'Ukini' +Redo: 'Ponovi' +Cut: 'Izreži' +Copy: 'Kopiraj' +Paste: 'Umetni' +Delete: 'Izbriši' +Select all: 'Odabri sve' +Reload: 'Ponovo učitaj' +Force Reload: 'Silom učitaj ponovo' +Toggle Developer Tools: 'Uključi alate za programere' +Actual size: 'Prirodna veličina' +Zoom in: 'Približi' +Zoom out: 'Umanji' +Toggle fullscreen: 'Prebaci preko cijelog ekrana' +Window: 'Prozor' +Minimize: 'Smanji' +Close: 'Zatvori' +Back: 'Nazad' +Forward: 'Unapred' -Version $ is now available! Click for more details: '' -Download From Site: '' -A new blog is now available, $. Click to view more: '' +Version $ is now available! Click for more details: 'Verzija $ je sada dostupna! + Kliknite za više detalja' +Download From Site: 'Instaliraj preko stranice' +A new blog is now available, $. Click to view more: 'Sada je dostupan novi blog, $. + Kliknite da vidite više' # Search Bar -Search / Go to URL: '' +Search / Go to URL: 'Pretražite / idite na URL' # In Filter Button Search Filters: - Search Filters: '' + Search Filters: 'Pretraži filtere' Sort By: - Sort By: '' - Most Relevant: '' - Rating: '' - Upload Date: '' - View Count: '' + Sort By: 'Poredaj po' + Most Relevant: 'Naj relevantnije' + Rating: 'Ocjena' + Upload Date: 'Datum uploada' + View Count: 'Broj pregleda' Time: - Time: '' - Any Time: '' - Last Hour: '' - Today: '' - This Week: '' - This Month: '' - This Year: '' + Time: 'Vrjeme' + Any Time: 'Bilo kada' + Last Hour: 'Zadnji sat' + Today: 'Danas' + This Week: 'Ove sedmice' + This Month: 'Ovog Mjeseca' + This Year: 'Ove godine' Type: - Type: '' - All Types: '' - Videos: '' - Channels: '' + Type: 'Vrsta' + All Types: 'Sve vrste' + Videos: 'Video' + Channels: 'Kanali' #& Playlists Duration: - Duration: '' - All Durations: '' - Short (< 4 minutes): '' - Long (> 20 minutes): '' + Duration: 'Trajanje' + All Durations: 'Sva trajanja' + Short (< 4 minutes): 'Kratko (<4 minute)' + Long (> 20 minutes): 'Dugo (>20 minuta)' # On Search Page - Search Results: '' - Fetching results. Please wait: '' - Fetch more results: '' + Search Results: 'Rezultati pretrage' + Fetching results. Please wait: 'Dohvaćanje rezultata. Molimo sačekajte' + Fetch more results: 'Dohvati više rezultata' # Sidebar Subscriptions: # On Subscriptions Page - Subscriptions: '' - Latest Subscriptions: '' - This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '' - 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '' - 'Getting Subscriptions. Please wait.': '' - Refresh Subscriptions: '' - Load More Videos: '' -Trending: '' -Most Popular: '' -Playlists: '' + Subscriptions: 'Pretplate' + Latest Subscriptions: 'Najnovije pretplate' + This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: 'Ovaj + profil ima veliki broj pretplata. Prisiljavanje RSS-a da izbjegne ograničenje + brzine' + 'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'Vaša + lista pretplata je trenutno prazna. Počnite dodavati pretplate da biste ih vidjeli + ovdje.' + 'Getting Subscriptions. Please wait.': 'Preuzimanje pretplata. Molimo sačekajte.' + Refresh Subscriptions: 'Osvježi pretplate' + Load More Videos: 'Očitaj više videozapisa' +Trending: 'U trendu' +Most Popular: 'Naj popularnije' +Playlists: 'playliste' User Playlists: - Your Playlists: '' + Your Playlists: 'Tvoje playliste' History: # On History Page - History: '' - Watch History: '' - Your history list is currently empty.: '' + History: 'Istorija' + Watch History: 'Istorija gledanja' + Your history list is currently empty.: 'Vaša lista istorije je trenutno prazna.' Settings: # On Settings Page - Settings: '' - The app needs to restart for changes to take effect. Restart and apply change?: '' + Settings: 'Postavke' + The app needs to restart for changes to take effect. Restart and apply change?: 'Aplikacija + se treba restartovati da bi promjene stupile na snagu. Restartuj i primijeniti + promjenu?' General Settings: - General Settings: '' - Check for Updates: '' - Check for Latest Blog Posts: '' - Fallback to Non-Preferred Backend on Failure: '' - Enable Search Suggestions: '' - Default Landing Page: '' - Locale Preference: '' + General Settings: 'Generalne postavke' + Check for Updates: 'Provjeri ima li update' + Check for Latest Blog Posts: 'Potraži najnovije objave na blogu' + Fallback to Non-Preferred Backend on Failure: 'Vraćanje na neželjeni backend u + slučaju neuspjeha' + Enable Search Suggestions: 'Omogući prijedloge pretraživanja' + Default Landing Page: 'Zadana odredišna stranica' + Locale Preference: 'Jezik' Preferred API Backend: - Preferred API Backend: '' - Local API: '' - Invidious API: '' + Preferred API Backend: 'Poželjni API Backend' + Local API: 'Lokalni API' + Invidious API: 'Invidious API' Video View Type: - Video View Type: '' - Grid: '' - List: '' + Video View Type: 'Način prikazanja videa' + Grid: 'Popločan' + List: 'Popis' Thumbnail Preference: - Thumbnail Preference: '' - Default: '' - Beginning: '' - Middle: '' - End: '' - 'Invidious Instance (Default is https://invidious.snopyta.org)': '' - Region for Trending: '' + Thumbnail Preference: 'Preferencija minijature' + Default: 'Standard' + Beginning: 'Početak' + Middle: 'Sredina' + End: 'Kraj' + 'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious primjer + (standard je https://invidious.snopyta.org)' + Region for Trending: 'Regiona za trend' #! List countries Theme Settings: - Theme Settings: '' - Match Top Bar with Main Color: '' + Theme Settings: 'Postavke teme' + Match Top Bar with Main Color: 'Koristi glavnu boju u gornjoj traci' Expand Side Bar by Default: '' Disable Smooth Scrolling: '' UI Scale: '' @@ -521,4 +532,4 @@ Canceled next video autoplay: '' 'The playlist has ended. Enable loop to continue playing': '' Yes: '' -No: '' +No: 'Ne' From eb3c06cec8b8c4e6934161aa949be94504a67fb3 Mon Sep 17 00:00:00 2001 From: The Cats Date: Fri, 8 Jan 2021 13:15:23 +0000 Subject: [PATCH 42/94] Translated using Weblate (Portuguese (Brazil)) Currently translated at 84.6% (353 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index a3058680..76fd6d88 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -254,6 +254,22 @@ Settings: Import FreeTube: Importar FreeTube Import Subscriptions: Importar Inscrições Select Export Type: Escolher Tipo de Exportação + How do I import my subscriptions?: Como importo minhas inscrições? + Unknown data key: Chave de dados desconhecida + Unable to write file: O arquivo não pôde ser escrito + Unable to read file: O arquivo não pôde ser lido + All watched history has been successfully exported: Todo o histórico de visualizações + foi exportado com sucesso + All watched history has been successfully imported: Todo o histórico de visualizações + foi importado com sucesso + History object has insufficient data, skipping item: O objeto Histórico tem dados + insuficientes, pulando item + This might take a while, please wait: Este processo pode demorar, por favor espere + Invalid subscriptions file: Arquivo de inscrições inválido + All subscriptions and profiles have been successfully imported: Todas as inscrições + e perfis foram importados com sucesso + Profile object has insufficient data, skipping item: O objeto Perfil possui dados + insuficientes, pulando item Distraction Free Settings: Hide Live Chat: Esconder chat ao vivo Hide Popular Videos: Esconder vídeos populares @@ -476,6 +492,15 @@ Profile: Create New Profile: Criar um novo perfil All Channels: Todos os Canais All subscriptions will also be deleted.: Todas as inscrições serão também deletadas. + Profile could not be found: O perfil não pôde ser encontrado + Are you sure you want to delete this profile?: Tem certeza de que quer apagar este + perfil? + Make Default Profile: Tornar Perfil Padrão + Create Profile: Criar Perfil + Custom Color: Cor Personalizada + Edit Profile: Editar Perfil + Profile Manager: Gerenciador de Perfis + Profile Select: Seleção de Perfil Version $ is now available! Click for more details: Versão $ está disponível agora! Clique para mais detalhes A new blog is now available, $. Click to view more: Um novo blog está disponível, From 0f03cbc73958c1cc8022bb7b51e3a01ed164059e Mon Sep 17 00:00:00 2001 From: The Cats Date: Fri, 8 Jan 2021 17:53:50 +0000 Subject: [PATCH 43/94] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (417 of 417 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 105 +++++++++++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 2 deletions(-) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index 76fd6d88..14d47ccd 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -342,6 +342,9 @@ Channel: About: 'Sobre' Channel Description: 'Descrição do canal' Featured Channels: 'Canais destacados' + Added channel to your subscriptions: Canal adicionado às suas inscrições + Removed subscription from $ other channel(s): Inscrição removida de outros $ canais + Channel has been removed from your subscriptions: O canal foi removido da suas inscrições Video: Mark As Watched: 'Marcar como assistido' Remove From History: 'Remover do histórico' @@ -399,10 +402,34 @@ Video: Years: 'anos' Ago: 'Atrás' Upcoming: 'Futuramente em' + Minutes: Minutos + Minute: Minuto Published on: 'Publicado em' # $ is replaced with the number and % with the unit (days, hours, minutes...) - Publicationtemplate: 'Há $ %' + Publicationtemplate: 'Há $ % atrás' #& Videos + Started streaming on: Transmissão iniciada em + Streamed on: Transmitido em + Audio: + Best: Máxima + Medium: Média + Low: Baixa + High: Alta + audio only: somente áudio + video only: somente vídeo + Download Video: Baixar Vídeo + Starting soon, please refresh the page to check again: Vai começar em breve, favor + atualizar a página para verificar novamente + Autoplay: Reprodução Automática + Play Previous Video: Reproduzir o Vídeo Anterior + Play Next Video: Reproduzir o Próximo Vídeo + Reverse Playlist: Inverter ordem da lista de reprodução + Shuffle Playlist: Lista de reprodução em modo aleatório + Loop Playlist: Repetir lista de reprodução + Copy Invidious Channel Link: Copiar link do canal no Invidious + Open Channel in Invidious: Abrir Canal no Invidious + Copy YouTube Channel Link: Copiar o link do canal no YouTube + Open Channel in YouTube: Abrir canal no YouTube Videos: #& Sort By Sort By: @@ -433,6 +460,10 @@ Change Format: Use Dash Formats: 'Usar formatos DASH' Use Legacy Formats: 'Usar formatos legados' Use Audio Formats: 'Usar formato de áudio' + Audio formats are not available for this video: Formatos de áudio não disponíveis + para este vídeo + Dash formats are not available for this video: Formatos Dash não disponíveis para + este vídeo Share: Share Video: 'Compartilhar vídeo' Copy Link: 'Copiar link' @@ -446,6 +477,11 @@ Share: YouTube URL copied to clipboard: 'O URL do YouTube está na área de transferência' YouTube Embed URL copied to clipboard: 'O URL incorporado do YouTube está na área de transferência' + YouTube Channel URL copied to clipboard: URL do Canal Youtube copiado para a área + de transferência + Invidious Channel URL copied to clipboard: URL do Canal Invidious copiado para a + área de transferência + Include Timestamp: Incluir Marcação de Tempo Mini Player: 'Visualizador Pequeno' Comments: Comments: 'Comentários' @@ -461,6 +497,11 @@ Comments: There are no comments available for this video: 'Não há comentários disponíveis neste vídeo' Load More Comments: 'Buscar mais comentários' + No more comments available: Não existem mais comentários + Newest first: Mais recentes primeiro + Top comments: Melhores comentários + Sort by: Ordenar por + There are no more comments for this video: Não há mais comentários para este vídeo Up Next: 'Próximo' # Toast Messages @@ -501,8 +542,68 @@ Profile: Edit Profile: Editar Perfil Profile Manager: Gerenciador de Perfis Profile Select: Seleção de Perfil + Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: Tem + certeza de que quer apagar os canais slecionados? Esta ação não vai apagar os + canais de nenhum outro perfil. + ? This is your primary profile. Are you sure you want to delete the selected channels? The + same channels will be deleted in any profile they are found in. + : Este é o seu perfil principal. Tem certeza de que quer apagar os canais selecionados? + Os mesmos vão ser apagados em qualquer perfil em que se encontrem. + No channel(s) have been selected: Nenhum canal foi selecionado + Add Selected To Profile: Adicionar Selecionado ao Perfil + Delete Selected: Apagar Selecionados + Select None: Selecionar Nenhum + Select All: Selecionar Todos + $ selected: $ selecionado + Other Channels: Outros Canais + Subscription List: Lista de Inscrições + $ is now the active profile: $ é agora o perfil ativo + Your default profile has been changed to your primary profile: Seu perfil padrão + foi mudado para o seu perfil principal + Removed $ from your profiles: $ foi removido dos seus perfis + Your default profile has been set to $: Seu perfil padrão foi definido como $ + Profile has been updated: Perfil atualizado + Profile has been created: Perfil criado + Your profile name cannot be empty: Seu nome de perfil não pode ficar em branco Version $ is now available! Click for more details: Versão $ está disponível agora! Clique para mais detalhes A new blog is now available, $. Click to view more: Um novo blog está disponível, - $. Clique para ver mais. + $. Clique para ver mais Download From Site: Fazer download pelo site +The playlist has been reversed: A lista de reprodução foi invertida +This video is unavailable because of missing formats. This can happen due to country unavailability.: Este + vídeo não está disponível por causa de formatos faltantes. Isso pode acontecer devido + à indisponibilidade do país. +Tooltips: + Subscription Settings: + Fetch Feeds from RSS: Quando ativado, o FreeTube usará RSS em vez de seu método + padrão para obter o feed de sua assinatura. O RSS é mais rápido e evita o bloqueio + de IP, mas não fornece certas informações como duração do vídeo ou status ao + vivo + Player Settings: + Default Video Format: Define os formatos usados quando um vídeo é reproduzido. + Formatos Dash podem reproduzir qualidades mais altas. Os formatos antigos são + limitados a um máximo de 720p, mas usam menos largura de banda. Formatos de + áudio são para transmissões sem vídeo + Proxy Videos Through Invidious: Conectar-se-á ao Invidious para obter vídeos em + vez de fazer uma conexão direta com o YouTube. Ignora a preferência da API + Force Local Backend for Legacy Formats: Só funciona quando a API do Invidious + é predefinida. Quando ativada, a API local será executada e usará os formatos + antigos retornados por ela em vez dos retornados pelo Invidious. É útil quando + os vídeos retornados pelo Invidious não são reproduzidos devido a restrições + de país + General Settings: + Region for Trending: A região de tendências permite escolher quais vídeos de tendências + do país você quer exibir. Nem todos os países exibidos são realmente suportados + pelo YouTube + Invidious Instance: A instância Invidious à qual o FreeTube se conectará para + chamadas de API. Limpe a instância atual para ver uma lista de instâncias públicas + para escolher + Thumbnail Preference: Todas as miniaturas do FreeTube serão substituídas por um + quadro do vídeo em vez da miniatura padrão + Fallback to Non-Preferred Backend on Failure: Quando a sua API preferida tiver + um problema, o FreeTube tentará automaticamente usar sua API não preferida como + um método substituto quando ativado + Preferred API Backend: Escolha o backend que o FreeTube usa para obter os dados. + A API local é um extrator integrado. A API Invidious requer um servidor Invidious + para se conectar. From f65377127d6d335012da9ab51aeb1f30659b74e2 Mon Sep 17 00:00:00 2001 From: pablodekota <76634178+pablodekota@users.noreply.github.com> Date: Sun, 10 Jan 2021 04:11:42 +0100 Subject: [PATCH 44/94] Hide active subscriptions (#918) * Update distraction-settings.js * Update side-nav.js * added hiding subscription activity * Update distraction-settings.js * Update distraction-settings.js * Update side-nav.js * Update side-nav.vue * Update distraction-settings.vue * Update settings.js * Update side-nav.vue * Update distraction-settings.js * Update en-US.yaml * Update en_GB.yaml * Update distraction-settings.js * Update settings.js * Update side-nav.vue * Update side-nav.vue * Update side-nav.vue Co-authored-by: Pablo <8d1d1de7-176f-4d40-b5f0-5a552aabd433@4wrd.cc> --- .../distraction-settings.js | 4 +++ .../distraction-settings.vue | 6 ++++ src/renderer/components/side-nav/side-nav.js | 3 ++ src/renderer/components/side-nav/side-nav.vue | 34 +++++++++++-------- src/renderer/store/modules/settings.js | 20 ++++++++++- static/locales/en-US.yaml | 1 + static/locales/en_GB.yaml | 1 + 7 files changed, 53 insertions(+), 16 deletions(-) diff --git a/src/renderer/components/distraction-settings/distraction-settings.js b/src/renderer/components/distraction-settings/distraction-settings.js index 22a1f7d4..e00a68a7 100644 --- a/src/renderer/components/distraction-settings/distraction-settings.js +++ b/src/renderer/components/distraction-settings/distraction-settings.js @@ -39,6 +39,9 @@ export default Vue.extend({ }, hideLiveChat: function () { return this.$store.getters.getHideLiveChat + }, + hideActiveSubscriptions: function () { + return this.$store.getters.getHideActiveSubscriptions } }, methods: { @@ -60,6 +63,7 @@ export default Vue.extend({ 'updateHideTrendingVideos', 'updateHidePopularVideos', 'updateHideLiveChat', + 'updateHideActiveSubscriptions', 'updatePlayNextVideo', 'updateDefaultTheatreMode' ]) diff --git a/src/renderer/components/distraction-settings/distraction-settings.vue b/src/renderer/components/distraction-settings/distraction-settings.vue index 26707279..54781a1a 100644 --- a/src/renderer/components/distraction-settings/distraction-settings.vue +++ b/src/renderer/components/distraction-settings/distraction-settings.vue @@ -33,6 +33,12 @@ :default-value="hideCommentLikes" @change="updateHideCommentLikes" /> +

-
diff --git a/src/renderer/store/modules/settings.js b/src/renderer/store/modules/settings.js index 0bfdf8b6..09cad179 100644 --- a/src/renderer/store/modules/settings.js +++ b/src/renderer/store/modules/settings.js @@ -71,7 +71,8 @@ const state = { hideRecommendedVideos: false, hideTrendingVideos: false, hidePopularVideos: false, - hideLiveChat: false + hideLiveChat: false, + hideActiveSubscriptions: false } const getters = { @@ -224,6 +225,9 @@ const getters = { }, getHideLiveChat: () => { return state.hideLiveChat + }, + getHideActiveSubscriptions: () => { + return state.hideActiveSubscriptions } } @@ -351,6 +355,9 @@ const actions = { case 'hideLiveChat': commit('setHideLiveChat', result.value) break + case 'hideActiveSubscriptions': + commit('setHideActiveSubscriptions', result.value) + break } }) } @@ -655,6 +662,14 @@ const actions = { }) }, + updateHideActiveSubscriptions ({ commit }, hideActiveSubscriptions) { + settingsDb.update({ _id: 'hideActiveSubscriptions' }, { _id: 'hideActiveSubscriptions', value: hideActiveSubscriptions }, { upsert: true }, (err, numReplaced) => { + if (!err) { + commit('setHideActiveSubscriptions', hideActiveSubscriptions) + } + }) + }, + updateHideLiveChat ({ commit }, hideLiveChat) { settingsDb.update({ _id: 'hideLiveChat' }, { _id: 'hideLiveChat', value: hideLiveChat }, { upsert: true }, (err, numReplaced) => { if (!err) { @@ -796,6 +811,9 @@ const mutations = { }, setHideLiveChat (state, hideLiveChat) { state.hideLiveChat = hideLiveChat + }, + setHideActiveSubscriptions (state, hideActiveSubscriptions) { + state.hideActiveSubscriptions = hideActiveSubscriptions } } diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index 2f53e590..a4a710b5 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -213,6 +213,7 @@ Settings: Hide Trending Videos: Hide Trending Videos Hide Popular Videos: Hide Popular Videos Hide Live Chat: Hide Live Chat + Hide Active Subscriptions: Hide Active Subscriptions Data Settings: Data Settings: Data Settings Select Import Type: Select Import Type diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml index 7cb6cec3..1631b101 100644 --- a/static/locales/en_GB.yaml +++ b/static/locales/en_GB.yaml @@ -275,6 +275,7 @@ Settings: Hide Channel Subscribers: Hide Channel Subscribers Hide Video Likes And Dislikes: Hide Video Likes And Dislikes Hide Video Views: Hide Video Views + Hide Active Subscriptions: Hide Active Subscriptions Distraction Free Settings: Distraction Free Settings The app needs to restart for changes to take effect. Restart and apply change?: The app needs to restart for changes to take effect. Do you want to restart and apply From aaee64f70a0ddd7087160a8278fb9ceff6a92343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 10 Jan 2021 06:27:43 +0000 Subject: [PATCH 45/94] Translated using Weblate (Turkish) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/ --- static/locales/tr.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index 84e79768..9729cebf 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -277,6 +277,7 @@ Settings: Hide Video Likes And Dislikes: Video Beğenmeleri Ve Beğenmemelerini Gizle Hide Video Views: Video Görüntülenme Sayılarını Gizle Distraction Free Settings: Dikkat Dağıtmama Ayarları + Hide Active Subscriptions: Etkin Abonelikleri Gizle The app needs to restart for changes to take effect. Restart and apply change?: Değişikliklerin etkili olması için uygulamanın yeniden başlatılması gerekiyor. Yeniden başlatılsın ve değişiklikler uygulansın mı? @@ -334,7 +335,7 @@ Profile: Removed $ from your profiles: '$ Profillerinizden kaldırıldı' Your default profile has been changed to your primary profile: 'Varsayılan profiliniz birincil profiliniz olarak değiştirildi' - $ is now the active profile: '$ artık aktif profil' + $ is now the active profile: '$ artık etkin profil' Subscription List: 'Abonelik Listesi' Other Channels: 'Diğer Kanallar' $ selected: '$ seçildi' From 747930415b74fbf0a585992b8afab1fbb68d2265 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Sun, 10 Jan 2021 05:13:02 +0000 Subject: [PATCH 46/94] Translated using Weblate (Hebrew) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/ --- static/locales/he.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/he.yaml b/static/locales/he.yaml index 9a6382c1..cb69c834 100644 --- a/static/locales/he.yaml +++ b/static/locales/he.yaml @@ -273,6 +273,7 @@ Settings: Hide Video Likes And Dislikes: הסתרת לייקים ודיסלייקים לסרטון Distraction Free Settings: הגדרות להשבתת הסחות Hide Video Views: הסתרת תצוגות סרטונים + Hide Active Subscriptions: הסתרת מינויים פעילים The app needs to restart for changes to take effect. Restart and apply change?: צריך להפעיל את היישומון מחדש כדי שהשינויים ייכנסו לתוקף. להפעיל מחדש ולהחיל את השינוי? About: From c9d4893584964a77b4fc81edd93bdd4c7df64f47 Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Sun, 10 Jan 2021 10:44:24 +0000 Subject: [PATCH 47/94] Translated using Weblate (Russian) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ru/ --- static/locales/ru.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/ru.yaml b/static/locales/ru.yaml index df88e7b6..32f68a75 100644 --- a/static/locales/ru.yaml +++ b/static/locales/ru.yaml @@ -279,6 +279,7 @@ Settings: Hide Channel Subscribers: Скрыть подписчиков канала Hide Video Likes And Dislikes: Скрыть лайки и дизлайки к видео Hide Video Views: Скрыть просмотры видео + Hide Active Subscriptions: Скрыть активные подписки The app needs to restart for changes to take effect. Restart and apply change?: Чтобы изменения вступили в силу, необходимо перезапустить приложение. Перезапустить и применить изменения? From a8f3a435135f8b1295b1b4450a3e5acc8a31f87a Mon Sep 17 00:00:00 2001 From: Dragibus Noir Date: Sun, 10 Jan 2021 19:01:09 +0000 Subject: [PATCH 48/94] Translated using Weblate (French) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/ --- static/locales/fr-FR.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index 43883534..28137b8e 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -285,6 +285,7 @@ Settings: Hide Trending Videos: Masquer les tendances Hide Recommended Videos: Masquer les vidéos recommandées Distraction Free Settings: Mode sans distraction + Hide Active Subscriptions: Masquer les abonnements actifs The app needs to restart for changes to take effect. Restart and apply change?: L'application doit être redémarrée pour que les changements prennent effet. Redémarrer et appliquer les changements ? From 874dd73cc1b655142f6ff4878f24aa3bac7cee8e Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Sun, 10 Jan 2021 22:09:34 +0000 Subject: [PATCH 49/94] Translated using Weblate (German) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index 32c81df3..e945b85c 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -282,6 +282,7 @@ Settings: Hide Video Likes And Dislikes: Videobewertungen verbergen Hide Video Views: Video-Aufrufe verbergen Distraction Free Settings: Einstellungen für ablenkungsfreien Modus + Hide Active Subscriptions: Aktive Abonnements ausblenden The app needs to restart for changes to take effect. Restart and apply change?: Um die Änderungen anzuwenden muss die Anwendung neustarten. Jetzt neustarten und Änderungen aktivieren? From 222617f3629d3694b3797690013dd5cf43e8eab7 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Sun, 10 Jan 2021 22:08:44 +0000 Subject: [PATCH 50/94] Translated using Weblate (Croatian) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hr/ --- static/locales/hr.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml index 2fa1095d..7bb99e09 100644 --- a/static/locales/hr.yaml +++ b/static/locales/hr.yaml @@ -277,6 +277,7 @@ Settings: Hide Video Likes And Dislikes: Sakrij ocjenjivanje videa Hide Video Views: Sakrij broj gledanja videa Distraction Free Settings: Postavke za nesmetan rad + Hide Active Subscriptions: Sakrij aktivne pretplate The app needs to restart for changes to take effect. Restart and apply change?: Za primjenu promjena, program se mora ponovo pokrenuti. Ponovo pokrenuti program? About: From 10cfc978fe9e18351eef78a784a5bee456d85b15 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Mon, 11 Jan 2021 01:37:15 +0000 Subject: [PATCH 51/94] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/ --- static/locales/zh-TW.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index 8627b2f8..b171c3cf 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -258,6 +258,7 @@ Settings: Hide Comment Likes: 隱藏評論點讚 Hide Recommended Videos: 隱藏推薦影片 Hide Channel Subscribers: 隱藏頻道訂閱者 + Hide Active Subscriptions: 隱藏作用中的訂閱 The app needs to restart for changes to take effect. Restart and apply change?: 應用需要重啟讓修改生效。重啟并且應用修改? About: #On About page From cd3d4b139068593b8be2e7e85ef343dd6e5dae14 Mon Sep 17 00:00:00 2001 From: Dennis ten Hoove Date: Mon, 11 Jan 2021 10:47:58 +0000 Subject: [PATCH 52/94] Translated using Weblate (Dutch) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nl/ --- static/locales/nl.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/nl.yaml b/static/locales/nl.yaml index 307ea96c..db3c1b3f 100644 --- a/static/locales/nl.yaml +++ b/static/locales/nl.yaml @@ -280,6 +280,7 @@ Settings: Hide Video Likes And Dislikes: Verberg Likes en Dislikes Hide Video Views: Verberg Weergaven Distraction Free Settings: Afleidingsvrije Instellingen + Hide Active Subscriptions: Verberg Actieve Abonnementen The app needs to restart for changes to take effect. Restart and apply change?: De applicatie moet opnieuw opstarten om de veranderingen aan te brengen. Wilt u opnieuw opstarten? From 13e944a425332ab18e879712aee8b71f82f1f1c3 Mon Sep 17 00:00:00 2001 From: Sai Deepesh Date: Mon, 11 Jan 2021 20:59:55 +0530 Subject: [PATCH 53/94] Fixed tooltip position (#831) * fixed tooltip position * fix: Linting error * [updated] fixed tooltip issue --- src/renderer/components/ft-input/ft-input.vue | 2 +- .../components/ft-toggle-switch/ft-toggle-switch.vue | 1 + src/renderer/components/ft-tooltip/ft-tooltip.css | 10 ++++++++++ src/renderer/components/ft-tooltip/ft-tooltip.js | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/ft-input/ft-input.vue b/src/renderer/components/ft-input/ft-input.vue index 2fad39d2..4e461a62 100644 --- a/src/renderer/components/ft-input/ft-input.vue +++ b/src/renderer/components/ft-input/ft-input.vue @@ -14,7 +14,7 @@ diff --git a/src/renderer/components/ft-toggle-switch/ft-toggle-switch.vue b/src/renderer/components/ft-toggle-switch/ft-toggle-switch.vue index f7a80e48..400793fc 100644 --- a/src/renderer/components/ft-toggle-switch/ft-toggle-switch.vue +++ b/src/renderer/components/ft-toggle-switch/ft-toggle-switch.vue @@ -21,6 +21,7 @@ diff --git a/src/renderer/components/ft-tooltip/ft-tooltip.css b/src/renderer/components/ft-tooltip/ft-tooltip.css index efc5a7bc..3a1977d7 100644 --- a/src/renderer/components/ft-tooltip/ft-tooltip.css +++ b/src/renderer/components/ft-tooltip/ft-tooltip.css @@ -15,6 +15,8 @@ .button:focus + .text.bottom, .button:hover + .text.bottom, +.button:hover + .text.bottom-left, +.button:hover + .text.bottom-left, .button:focus + .text.top, .button:hover + .text.top { -webkit-transform: translate(-50%, 0); @@ -57,6 +59,14 @@ transform: translate(-50%, -1em); } +.text.bottom-left { + margin-top: 1em; + top: 100%; + left: -100px; + -webkit-transform: translate(-50%, -1em); + transform: translate(-50%, -1em); +} + .text.left { margin-right:1em; right: 100%; diff --git a/src/renderer/components/ft-tooltip/ft-tooltip.js b/src/renderer/components/ft-tooltip/ft-tooltip.js index 709b5a80..d79135b3 100644 --- a/src/renderer/components/ft-tooltip/ft-tooltip.js +++ b/src/renderer/components/ft-tooltip/ft-tooltip.js @@ -7,7 +7,7 @@ export default Vue.extend({ position: { type: String, default: 'bottom', - validator: (value) => value === 'bottom' || value === 'left' || value === 'right' || value === 'top' + validator: (value) => value === 'bottom' || value === 'left' || value === 'right' || value === 'top' || value === 'bottom-left' }, tooltip: { type: String, From eab93c2b6192357de4aaeff29d1ee9943c263bf8 Mon Sep 17 00:00:00 2001 From: Preston Date: Mon, 11 Jan 2021 11:26:14 -0500 Subject: [PATCH 54/94] Fix network leak to Invidious instance when viewing channel playlists on Local API --- src/renderer/components/ft-list-playlist/ft-list-playlist.js | 4 ++++ src/renderer/views/Channel/Channel.js | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/ft-list-playlist/ft-list-playlist.js b/src/renderer/components/ft-list-playlist/ft-list-playlist.js index 4379589c..01fcc483 100644 --- a/src/renderer/components/ft-list-playlist/ft-list-playlist.js +++ b/src/renderer/components/ft-list-playlist/ft-list-playlist.js @@ -57,6 +57,10 @@ export default Vue.extend({ this.channelLink = this.data.authorUrl this.playlistLink = this.data.playlistId this.videoCount = this.data.videoCount + + if (this.data.proxyThumbnail === false) { + this.thumbnail = this.data.playlistThumbnail + } }, parseLocalData: function () { diff --git a/src/renderer/views/Channel/Channel.js b/src/renderer/views/Channel/Channel.js index 4563801a..0f7aff4e 100644 --- a/src/renderer/views/Channel/Channel.js +++ b/src/renderer/views/Channel/Channel.js @@ -410,7 +410,10 @@ export default Vue.extend({ getPlaylistsLocal: function () { ytch.getChannelPlaylistInfo(this.id, this.playlistSortBy).then((response) => { console.log(response) - this.latestPlaylists = response.items + this.latestPlaylists = response.items.map((item) => { + item.proxyThumbnail = false + return item + }) this.playlistContinuationString = response.continuation this.isElementListLoading = false }).catch((err) => { From 460fd78b1ab127711f131110574184c5ba147881 Mon Sep 17 00:00:00 2001 From: The Cats Date: Mon, 11 Jan 2021 14:36:13 +0000 Subject: [PATCH 55/94] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/ --- static/locales/pt-BR.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/pt-BR.yaml b/static/locales/pt-BR.yaml index 14d47ccd..3909239e 100644 --- a/static/locales/pt-BR.yaml +++ b/static/locales/pt-BR.yaml @@ -280,6 +280,7 @@ Settings: Hide Channel Subscribers: Ocultar Assinantes do Canal Hide Video Likes And Dislikes: Ocultar curtidas e desgostos do vídeo Hide Video Views: Ocultar Visualizações de Vídeo + Hide Active Subscriptions: Ocultar Inscrições Ativas The app needs to restart for changes to take effect. Restart and apply change?: O aplicativo necessita reiniciar para as mudanças fazerem efeito. Reiniciar e aplicar mudança? From 32f57ae1c19e99372b635b89a1164344cc93d211 Mon Sep 17 00:00:00 2001 From: Preston Date: Mon, 11 Jan 2021 11:49:58 -0500 Subject: [PATCH 56/94] Fix search continuation when using cached results --- src/renderer/views/Search/Search.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/renderer/views/Search/Search.js b/src/renderer/views/Search/Search.js index 2f18ec13..c0328929 100644 --- a/src/renderer/views/Search/Search.js +++ b/src/renderer/views/Search/Search.js @@ -179,7 +179,7 @@ export default Vue.extend({ query: payload.query, data: this.shownResults, searchSettings: this.searchSettings, - nextPageRef: result.nextpageRef + nextPageRef: result.continuation } this.$store.commit('addToSessionSearchHistory', historyPayload) @@ -200,7 +200,6 @@ export default Vue.extend({ this.performSearchInvidious(payload) } else { this.isLoading = false - // TODO: Show toast with error message } }) }, From ce7e568c7bb53f8bfbc15b1b0adf79de33a9c618 Mon Sep 17 00:00:00 2001 From: Preston Date: Mon, 11 Jan 2021 15:32:35 -0500 Subject: [PATCH 57/94] Update project dependencies --- package-lock.json | 1328 +++++++++++++++++++---------- package.json | 54 +- src/renderer/main.js | 2 +- src/renderer/views/Watch/Watch.js | 2 +- 4 files changed, 887 insertions(+), 499 deletions(-) diff --git a/package-lock.json b/package-lock.json index e7ca2145..ba765f14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -141,13 +141,19 @@ "@babel/types": "^7.12.10" }, "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, "@babel/types": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.10.tgz", - "integrity": "sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw==", + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", + "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } @@ -476,9 +482,9 @@ "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", - "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", + "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -773,9 +779,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", - "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", + "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -1068,16 +1074,16 @@ } }, "@babel/preset-env": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.10.tgz", - "integrity": "sha512-Gz9hnBT/tGeTE2DBNDkD7BiWRELZt+8lSysHuDwmYXUIvtwZl0zI+D6mZgXZX0u8YBlLS4tmai9ONNY9tjRgRA==", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", "dev": true, "requires": { "@babel/compat-data": "^7.12.7", "@babel/helper-compilation-targets": "^7.12.5", "@babel/helper-module-imports": "^7.12.5", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.1", + "@babel/helper-validator-option": "^7.12.11", "@babel/plugin-proposal-async-generator-functions": "^7.12.1", "@babel/plugin-proposal-class-properties": "^7.12.1", "@babel/plugin-proposal-dynamic-import": "^7.12.1", @@ -1106,7 +1112,7 @@ "@babel/plugin-transform-arrow-functions": "^7.12.1", "@babel/plugin-transform-async-to-generator": "^7.12.1", "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", "@babel/plugin-transform-classes": "^7.12.1", "@babel/plugin-transform-computed-properties": "^7.12.1", "@babel/plugin-transform-destructuring": "^7.12.1", @@ -1136,18 +1142,30 @@ "@babel/plugin-transform-unicode-escapes": "^7.12.1", "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.10", + "@babel/types": "^7.12.11", "core-js-compat": "^3.8.0", "semver": "^5.5.0" }, "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", + "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==", + "dev": true + }, "@babel/types": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.10.tgz", - "integrity": "sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw==", + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", + "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } @@ -1302,6 +1320,72 @@ } } }, + "@electron/universal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.4.tgz", + "integrity": "sha512-ajZoumi4XwqwmZe8YVhu4XGkZBCPyWZsVCQONPTIe9TUlleSN+dic3YpXlaWcilx/HOzTdldTKtabNTeI0gDoA==", + "dev": true, + "requires": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.0.3", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + } + } + }, "@eslint/eslintrc": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", @@ -1320,6 +1404,15 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", @@ -1344,12 +1437,28 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -1386,9 +1495,9 @@ } }, "@fortawesome/vue-fontawesome": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.0.tgz", - "integrity": "sha512-N3VKw7KzRfOm8hShUVldpinlm13HpvLBQgT63QS+aCrIRLwjoEUXY5Rcmttbfb6HkzZaeqjLqd/aZCQ53UjQpg==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.2.tgz", + "integrity": "sha512-ecpKSBUWXsxRJVi/dbOds4tkKwEcBQ1JSDZFzE2jTFpF8xIh3OgTX8POIor6bOltjibr3cdEyvnDjecMwUmxhQ==" }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -1403,6 +1512,15 @@ "resolve-from": "^5.0.0" }, "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -1419,6 +1537,16 @@ "path-exists": "^4.0.0" } }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -1442,6 +1570,12 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true } } }, @@ -2094,9 +2228,9 @@ "dev": true }, "@types/uglify-js": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.0.tgz", - "integrity": "sha512-I0Yd8TUELTbgRHq2K65j8rnDPAzAP+DiaF/syLem7yXwYLsHZhPd+AM2iXsWmf9P2F2NlFCgl5erZPQx9IbM9Q==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.1.tgz", + "integrity": "sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q==", "dev": true, "requires": { "source-map": "^0.6.1" @@ -2111,9 +2245,9 @@ } }, "@types/webpack": { - "version": "4.41.23", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.23.tgz", - "integrity": "sha512-ojA4CupZg8RCzVJLugWlvqrHpT59GWhqFxbinlsnvk10MjQCWB+ot7XDACctbWhnhtdhYK7+HOH1JxkVLiZhMg==", + "version": "4.41.25", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.25.tgz", + "integrity": "sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ==", "dev": true, "requires": { "@types/anymatch": "*", @@ -2133,9 +2267,9 @@ } }, "@types/webpack-sources": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.0.0.tgz", - "integrity": "sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", + "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", "dev": true, "requires": { "@types/node": "*", @@ -2167,15 +2301,16 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.10.0.tgz", - "integrity": "sha512-h6/V46o6aXpKRlarP1AiJEXuCJ7cMQdlpfMDrcllIgX3dFkLwEBTXAoNP98ZoOmqd1xvymMVRAI4e7yVvlzWEg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz", + "integrity": "sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.10.0", - "@typescript-eslint/scope-manager": "4.10.0", + "@typescript-eslint/experimental-utils": "4.13.0", + "@typescript-eslint/scope-manager": "4.13.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", "regexpp": "^3.0.0", "semver": "^7.3.2", "tsutils": "^3.17.1" @@ -2208,28 +2343,28 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.10.0.tgz", - "integrity": "sha512-opX+7ai1sdWBOIoBgpVJrH5e89ra1KoLrJTz0UtWAa4IekkKmqDosk5r6xqRaNJfCXEfteW4HXQAwMdx+jjEmw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz", + "integrity": "sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.10.0", - "@typescript-eslint/types": "4.10.0", - "@typescript-eslint/typescript-estree": "4.10.0", + "@typescript-eslint/scope-manager": "4.13.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/typescript-estree": "4.13.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.10.0.tgz", - "integrity": "sha512-amBvUUGBMadzCW6c/qaZmfr3t9PyevcSWw7hY2FuevdZVp5QPw/K76VSQ5Sw3BxlgYCHZcK6DjIhSZK0PQNsQg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.13.0.tgz", + "integrity": "sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.10.0", - "@typescript-eslint/types": "4.10.0", - "@typescript-eslint/typescript-estree": "4.10.0", + "@typescript-eslint/scope-manager": "4.13.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/typescript-estree": "4.13.0", "debug": "^4.1.1" }, "dependencies": { @@ -2251,29 +2386,29 @@ } }, "@typescript-eslint/scope-manager": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.10.0.tgz", - "integrity": "sha512-WAPVw35P+fcnOa8DEic0tQUhoJJsgt+g6DEcz257G7vHFMwmag58EfowdVbiNcdfcV27EFR0tUBVXkDoIvfisQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz", + "integrity": "sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.10.0", - "@typescript-eslint/visitor-keys": "4.10.0" + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/visitor-keys": "4.13.0" } }, "@typescript-eslint/types": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.10.0.tgz", - "integrity": "sha512-+dt5w1+Lqyd7wIPMa4XhJxUuE8+YF+vxQ6zxHyhLGHJjHiunPf0wSV8LtQwkpmAsRi1lEOoOIR30FG5S2HS33g==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.13.0.tgz", + "integrity": "sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.10.0.tgz", - "integrity": "sha512-mGK0YRp9TOk6ZqZ98F++bW6X5kMTzCRROJkGXH62d2azhghmq+1LNLylkGe6uGUOQzD452NOAEth5VAF6PDo5g==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz", + "integrity": "sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.10.0", - "@typescript-eslint/visitor-keys": "4.10.0", + "@typescript-eslint/types": "4.13.0", + "@typescript-eslint/visitor-keys": "4.13.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -2309,12 +2444,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.10.0.tgz", - "integrity": "sha512-hPyz5qmDMuZWFtHZkjcCpkAKHX8vdu1G3YsCLEd25ryZgnJfj6FQuJ5/O7R+dB1ueszilJmAFMtlU4CA6se3Jg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz", + "integrity": "sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g==", "dev": true, "requires": { - "@typescript-eslint/types": "4.10.0", + "@typescript-eslint/types": "4.13.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -2868,6 +3003,15 @@ "temp-file": "^3.3.7" }, "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "debug": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.0.tgz", @@ -2889,6 +3033,16 @@ "universalify": "^1.0.0" } }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsonfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", @@ -2911,6 +3065,12 @@ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "universalify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", @@ -2926,9 +3086,9 @@ "dev": true }, "archiver": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.1.0.tgz", - "integrity": "sha512-iKuQUP1nuKzBC2PFlGet5twENzCfyODmvkxwDV0cEFXavwcLrIW5ssTuHi9dyTPvpWr6Faweo2eQaQiLIwyXTA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.2.0.tgz", + "integrity": "sha512-QEAKlgQuAtUxKeZB9w5/ggKXh21bZS+dzzuQ0RPBC20qtDCbTyzqmisoeJP46MP39fg4B4IcyvR+yeyEBdblsQ==", "dev": true, "requires": { "archiver-utils": "^2.1.0", @@ -3073,12 +3233,9 @@ } }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "arr-diff": { "version": "4.0.0", @@ -3185,6 +3342,27 @@ } } }, + "asar": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.0.3.tgz", + "integrity": "sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + } + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -3981,16 +4159,16 @@ } }, "browserslist": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.0.tgz", - "integrity": "sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", + "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001165", + "caniuse-lite": "^1.0.30001173", "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.621", + "electron-to-chromium": "^1.3.634", "escalade": "^3.1.1", - "node-releases": "^1.1.67" + "node-releases": "^1.1.69" } }, "bser": { @@ -4018,6 +4196,12 @@ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -4058,6 +4242,15 @@ "temp-file": "^3.3.7" }, "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -4095,6 +4288,16 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsonfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", @@ -4111,6 +4314,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4216,6 +4425,15 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } } } }, @@ -4274,6 +4492,16 @@ } } }, + "call-bind": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.1.tgz", + "integrity": "sha512-tvAvUwNcRikl3RVF20X9lsYmmepsovzTWeJiXjO0PkJp15uy/6xKFZOQtuiSULwYW+6ToZBprphCgWXC2dSgcQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -4281,13 +4509,21 @@ "dev": true }, "camel-case": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", - "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, "requires": { - "pascal-case": "^3.1.1", - "tslib": "^1.10.0" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } } }, "camelcase": { @@ -4297,9 +4533,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001166", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001166.tgz", - "integrity": "sha512-nCL4LzYK7F4mL0TjEMeYavafOGnBa98vTudH5c8lW9izUjnB99InG6pmC1ElAI1p0GlyZajv4ltUdFXvOHIl1A==", + "version": "1.0.30001174", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001174.tgz", + "integrity": "sha512-tqClL/4ThQq6cfFXH3oJL4rifFBeM6gTkphjao5kgwMaW9yn0tKgQLAEfKzDwj6HQWCB/aWo8kTFlSvIN8geEA==", "dev": true }, "capture-exit": { @@ -5031,12 +5267,12 @@ "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" }, "core-js-compat": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.1.tgz", - "integrity": "sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.2.tgz", + "integrity": "sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ==", "dev": true, "requires": { - "browserslist": "^4.15.0", + "browserslist": "^4.16.0", "semver": "7.0.0" }, "dependencies": { @@ -5227,21 +5463,21 @@ } }, "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", "dev": true, "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" } }, "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", "dev": true }, "cssesc": { @@ -5299,9 +5535,9 @@ } }, "dateformat": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.3.1.tgz", - "integrity": "sha512-xhq1wI5BQ0TMJDvio0BLP8lNeYlhAvmh/7H52H9n6kfzqSmRpIhH5KEIjJ7onFEAh5CQVrAP2MAG8wZ6j0BKzQ==" + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.4.1.tgz", + "integrity": "sha512-3V9b/50QBYmFtd2c3cPOmdr2xNfnDphoBLxh/UVBoPIsylWkbUYGq3f4EQYuEaK7Mq4vcIpQCmOyJ37pqW/Uug==" }, "de-indent": { "version": "1.0.2", @@ -5496,12 +5732,6 @@ } } }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -5606,6 +5836,35 @@ } } }, + "dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "requires": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + } + } + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -5629,6 +5888,15 @@ "sanitize-filename": "^1.6.3" }, "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "fs-extra": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", @@ -5641,6 +5909,16 @@ "universalify": "^1.0.0" } }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsonfile": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", @@ -5651,6 +5929,12 @@ "universalify": "^1.0.0" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "universalify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", @@ -5713,9 +5997,9 @@ }, "dependencies": { "domelementtype": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", - "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", "dev": true } } @@ -5764,9 +6048,9 @@ } }, "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "dev": true, "requires": { "dom-serializer": "0", @@ -5774,13 +6058,21 @@ } }, "dot-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", - "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, "requires": { - "no-case": "^3.0.3", - "tslib": "^1.10.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } } }, "dot-prop": { @@ -5885,9 +6177,9 @@ } }, "electron": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-11.1.0.tgz", - "integrity": "sha512-RFAhR/852VMaRd9NSe7jprwSoG9dLc6u1GwnqRWg+/3cy/8Zrwt1Betw1lXiZH7hGuB9K2cqju83Xv5Pq5ZSGA==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-11.1.1.tgz", + "integrity": "sha512-tlbex3xosJgfileN6BAQRotevPRXB/wQIq48QeQ08tUJJrXwE72c8smsM/hbHx5eDgnbfJ2G3a60PmRjHU2NhA==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -5973,45 +6265,52 @@ } }, "electron-builder-squirrel-windows": { - "version": "22.10.3", - "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-22.10.3.tgz", - "integrity": "sha512-1xN9NENq3jqiuqEqxdCAzpsYNHjXegQ/ZcyUa0nDNq8xtiY6X/2bJuypbDZ+AN9Louy+84PRGKiuINZPRI1MaA==", + "version": "22.10.4", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-22.10.4.tgz", + "integrity": "sha512-Kv6FO7OPdlhG02i+7fbOAWc7JCwtGJOzg9gbJySAE4cNhA49bQF4/GyQhFJYhJgg/AapfuV+SLOxlgrD+33UHg==", "dev": true, "requires": { "7zip-bin": "~5.0.3", - "app-builder-lib": "22.10.3", + "app-builder-lib": "22.10.4", "archiver": "^5.1.0", "bluebird-lst": "^1.0.9", - "builder-util": "22.10.3", + "builder-util": "22.10.4", "fs-extra": "^9.0.1", "sanitize-filename": "^1.6.3" }, "dependencies": { "@types/fs-extra": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.5.tgz", - "integrity": "sha512-wr3t7wIW1c0A2BIJtdVp4EflriVaVVAsCAIHVzzh8B+GiFv9X1xeJjCs4upRXtzp7kQ6lP5xvskjoD4awJ1ZeA==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.6.tgz", + "integrity": "sha512-ecNRHw4clCkowNOBJH1e77nvbPxHYnWIXMv1IAoG/9+MYGkgoyr3Ppxr7XYFNL41V422EDhyV4/4SSK8L2mlig==", "dev": true, "requires": { "@types/node": "*" } }, + "app-builder-bin": { + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.12.tgz", + "integrity": "sha512-lQARM2AielmFoBeIo6LZigAe+58Wwe07ZWkt+wVeDxzyieNmeWjlvz/V5dKzinydwdHd+CNswN86sww46yijjA==", + "dev": true + }, "app-builder-lib": { - "version": "22.10.3", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.10.3.tgz", - "integrity": "sha512-PBHTTGxV1uLVHWKQfw92plrfMo/utH0FVe8v2dFmT/CYKw9u7XuOC0xE8YslUxXmaiG6TuOJaQrII4fXN5VBpQ==", + "version": "22.10.4", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.10.4.tgz", + "integrity": "sha512-q7B1cr8Ry4a7o08EKShLfwsnIVf5By7YhVwcoqgEwPKxtoj1qF0kB4wyBP79rJylYi0Zj2cSkJJ/gD/ef9xhoQ==", "dev": true, "requires": { "7zip-bin": "~5.0.3", "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.0.4", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.10.3", + "builder-util": "22.10.4", "builder-util-runtime": "8.7.3", "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.2", + "debug": "^4.3.1", "ejs": "^3.1.5", - "electron-publish": "22.10.3", + "electron-publish": "22.10.4", "fs-extra": "^9.0.1", "hosted-git-info": "^3.0.7", "is-ci": "^2.0.0", @@ -6026,20 +6325,29 @@ "temp-file": "^3.3.7" } }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "builder-util": { - "version": "22.10.3", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.10.3.tgz", - "integrity": "sha512-I9mh78wZaggIF4QkBzMPKhfgGDameyx9TN6Zikl8SKQHiKQNCUzMPUcRXCyCot6iTT8B8blwOM3GhhuU06yv1g==", + "version": "22.10.4", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.10.4.tgz", + "integrity": "sha512-XdcbFG3otEkNRKxW2wS1npNviCb/IrzusEQ55lMB+6YEHxBOfTbf8vnPt0pDumfwmxls9xczABU+mfqN/W4uDw==", "dev": true, "requires": { "7zip-bin": "~5.0.3", "@types/debug": "^4.1.5", "@types/fs-extra": "^9.0.5", - "app-builder-bin": "3.5.10", + "app-builder-bin": "3.5.12", "bluebird-lst": "^1.0.9", "builder-util-runtime": "8.7.3", "chalk": "^4.1.0", - "debug": "^4.3.2", + "debug": "^4.3.1", "fs-extra": "^9.0.1", "is-ci": "^2.0.0", "js-yaml": "^3.14.1", @@ -6056,6 +6364,17 @@ "requires": { "debug": "^4.3.2", "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } } }, "chalk": { @@ -6069,28 +6388,28 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" } }, "electron-publish": { - "version": "22.10.3", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.10.3.tgz", - "integrity": "sha512-NGcgDp0xT92NPB5lGckroz2n5h8Ud53SShmwZoVtCp1W+VOSWn5CVPnXDquzf7pMcZRfo8qoMZrlvUeOlY4oIg==", + "version": "22.10.4", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.10.4.tgz", + "integrity": "sha512-cjVM0+9DQoV4TWfH8lVWoelJ89O2i5yDARVp5GCMHrB43XEU0Nr5eKYysgsbOSnZk5W8z1vfGpFWHj+AeAEDYg==", "dev": true, "requires": { "@types/fs-extra": "^9.0.5", "bluebird-lst": "^1.0.9", - "builder-util": "22.10.3", + "builder-util": "22.10.4", "builder-util-runtime": "8.7.3", "chalk": "^4.1.0", "fs-extra": "^9.0.1", "lazy-val": "^1.0.4", - "mime": "^2.4.6" + "mime": "^2.4.7" } }, "fs-extra": { @@ -6111,6 +6430,16 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -6129,6 +6458,12 @@ } } }, + "mime": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.7.tgz", + "integrity": "sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -6162,6 +6497,12 @@ "lru-cache": "^6.0.0" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6180,9 +6521,9 @@ } }, "electron-context-menu": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-2.3.0.tgz", - "integrity": "sha512-XYsYkNY+jvX4C5o09qMuZoKL6e9frnQzBFehZSIiKp6zK0u3XYowJYDyK3vDKKZxYsOIGiE/Gbx40jERC03Ctw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-2.4.0.tgz", + "integrity": "sha512-6HRAEeFoMoBZyQ69FBGNQIVVDRBw8nYmvMPaV+CfRDa/spreHsjMD+XesJ/2/lMSAAMDTCgFCC24167Uer2cZw==", "requires": { "cli-truncate": "^2.0.0", "electron-dl": "^3.0.0", @@ -6190,9 +6531,9 @@ } }, "electron-debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/electron-debug/-/electron-debug-3.1.0.tgz", - "integrity": "sha512-SWEqLj4MgfV3tGuO5eBLQ5/Nr6M+KPxsnE0bUJZvQebGJus6RAcdmvd7L+l0Ji31h2mmrN23l2tHFtCa2FvurA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-debug/-/electron-debug-3.2.0.tgz", + "integrity": "sha512-7xZh+LfUvJ52M9rn6N+tPuDw6oRAjxUj9SoxAZfJ0hVCXhZCsdkrSt7TgXOiWiEOBgEV8qwUIO/ScxllsPS7ow==", "dev": true, "requires": { "electron-is-dev": "^1.1.0", @@ -6233,9 +6574,9 @@ }, "dependencies": { "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -6509,9 +6850,9 @@ } }, "electron-to-chromium": { - "version": "1.3.626", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.626.tgz", - "integrity": "sha512-7CanEvJx74EnvjHu1X8gf93KieyxvFLnqOXAH/ddjWD4RrUZYqdg3pykrQ/7t6SLI7DTsp4tfQXEfzeK5t6oAw==", + "version": "1.3.636", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.636.tgz", + "integrity": "sha512-Adcvng33sd3gTjNIDNXGD1G4H6qCImIy2euUJAQHtLNplEKU5WEz5KRJxupRNIIT8sD5oFZLTKBWAf12Bsz24A==", "dev": true }, "elliptic": { @@ -6746,9 +7087,9 @@ } }, "eslint": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz", - "integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz", + "integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -6785,11 +7126,20 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^5.2.3", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -6830,6 +7180,16 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -6845,6 +7205,12 @@ "lru-cache": "^6.0.0" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -6869,9 +7235,9 @@ } }, "eslint-config-prettier": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.0.0.tgz", - "integrity": "sha512-8Y8lGLVPPZdaNA7JXqnvETVC7IiVRgAP6afQu9gOQRn90YY3otMNh+x7Vr2vMePQntF+5erdSUBqSzCmU/AxaQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz", + "integrity": "sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA==", "dev": true }, "eslint-config-standard": { @@ -7061,9 +7427,9 @@ } }, "eslint-plugin-prettier": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.0.tgz", - "integrity": "sha512-tMTwO8iUWlSRZIwS9k7/E4vrTsfvsrcM5p1eftyuqWH25nKsz/o6/54I7jwQ/3zobISyC7wMy9ZsFwgTxOcOpQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", + "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -7082,15 +7448,15 @@ "dev": true }, "eslint-plugin-vue": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.2.0.tgz", - "integrity": "sha512-4mt0yIv6rBDNtvis/g22a0ozJ12GfcdEzX77u0ICYjKlxOVtGrKGEvo0cbOObHaKDg9a9kJcoaNodqE4TPfS2A==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.4.1.tgz", + "integrity": "sha512-W/xPNHYIkGJphLUM2UIYYGKbRw3BcDoMIPY9lu1TTa2YLiZoxurddfnmOP+UOVywxb5vi438ejzwvKdZqydtIw==", "dev": true, "requires": { "eslint-utils": "^2.1.0", "natural-compare": "^1.4.0", "semver": "^7.3.2", - "vue-eslint-parser": "^7.2.0" + "vue-eslint-parser": "^7.3.0" }, "dependencies": { "semver": { @@ -7165,7 +7531,8 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esquery": { "version": "1.3.1", @@ -7644,9 +8011,9 @@ } }, "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -8195,6 +8562,17 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-intrinsic": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -8273,9 +8651,9 @@ }, "dependencies": { "core-js": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.1.tgz", - "integrity": "sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.2.tgz", + "integrity": "sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A==", "dev": true, "optional": true }, @@ -8385,9 +8763,9 @@ } }, "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", + "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -8423,6 +8801,12 @@ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -8724,9 +9108,9 @@ } }, "html-webpack-plugin": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz", - "integrity": "sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.1.tgz", + "integrity": "sha512-yzK7RQZwv9xB+pcdHNTjcqbaaDZ+5L0zJHXfi89iWIZmb/FtzxhLk0635rmJihcQbs3ZUF27Xp4oWGx6EK56zg==", "dev": true, "requires": { "@types/html-minifier-terser": "^5.0.0", @@ -8734,7 +9118,7 @@ "@types/webpack": "^4.41.8", "html-minifier-terser": "^5.0.1", "loader-utils": "^1.2.3", - "lodash": "^4.17.15", + "lodash": "^4.17.20", "pretty-error": "^2.1.1", "tapable": "^1.1.3", "util.promisify": "1.0.0" @@ -8820,6 +9204,12 @@ } } }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, "http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -9034,9 +9424,9 @@ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -9209,10 +9599,13 @@ } }, "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } }, "is-arrayish": { "version": "0.2.1", @@ -10829,12 +11222,11 @@ "dev": true }, "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "jsbn": { @@ -11285,18 +11677,26 @@ } }, "loglevel": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", - "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", "dev": true }, "lower-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", - "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, "requires": { - "tslib": "^1.10.0" + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } } }, "lowercase-keys": { @@ -12005,13 +12405,21 @@ "dev": true }, "no-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", - "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, "requires": { - "lower-case": "^2.0.1", - "tslib": "^1.10.0" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } } }, "node-abi": { @@ -12370,9 +12778,9 @@ } }, "node-releases": { - "version": "1.1.67", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", - "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", + "version": "1.1.69", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz", + "integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA==", "dev": true }, "nopt": { @@ -12694,13 +13102,13 @@ "dev": true }, "object-is": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", - "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", + "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -12731,34 +13139,14 @@ } }, "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", + "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } + "es-abstract": "^1.18.0-next.1" } }, "object.pick": { @@ -12843,17 +13231,17 @@ } }, "opml-to-json": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/opml-to-json/-/opml-to-json-0.0.3.tgz", - "integrity": "sha1-oU60SpG+ue6VT3uiWYbAknblWp8=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/opml-to-json/-/opml-to-json-1.0.1.tgz", + "integrity": "sha512-o/czEw150VWKww6Xa9as9ozTqj6L6LnxsVTfmKGFQ3eZiolTQBcDVRA87hzTBtflVZyeP6x0QYTMBM86cTW/kQ==", "requires": { - "opmlparser": "^0.6.0" + "opmlparser": "^0.8.0" } }, "opmlparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/opmlparser/-/opmlparser-0.6.0.tgz", - "integrity": "sha1-BPACSLnlxRFES86GNWfRfvI2Tn0=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/opmlparser/-/opmlparser-0.8.0.tgz", + "integrity": "sha1-pddINLE2r5pjkBP13Dl0a3wnBj8=", "requires": { "readable-stream": "~1.1.10", "sax": "~0.6.0" @@ -13007,13 +13395,10 @@ } }, "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true }, "p-retry": { "version": "3.0.1", @@ -13106,13 +13491,21 @@ } }, "param-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", - "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, "requires": { - "dot-case": "^3.0.3", - "tslib": "^1.10.0" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } } }, "parent-module": { @@ -13170,13 +13563,21 @@ "dev": true }, "pascal-case": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", - "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, "requires": { - "no-case": "^3.0.3", - "tslib": "^1.10.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } } }, "pascalcase": { @@ -13342,18 +13743,18 @@ } }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } @@ -13738,6 +14139,33 @@ "js-yaml": "^3.13.1", "json5": "^2.1.2", "lazy-val": "^1.0.4" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + } } }, "read-pkg": { @@ -13973,9 +14401,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.6.tgz", + "integrity": "sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -14002,14 +14430,14 @@ "dev": true }, "renderkid": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.4.tgz", - "integrity": "sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", + "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", "dev": true, "requires": { - "css-select": "^1.1.0", + "css-select": "^2.0.2", "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", + "htmlparser2": "^3.10.1", "lodash": "^4.17.20", "strip-ansi": "^3.0.0" }, @@ -14096,6 +14524,12 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -14245,15 +14679,6 @@ "json-stringify-safe": "^5.0.1", "semver-compare": "^1.0.0", "sprintf-js": "^1.1.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true, - "optional": true - } } }, "rss-parser": { @@ -14472,18 +14897,18 @@ } }, "sass": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.30.0.tgz", - "integrity": "sha512-26EUhOXRLaUY7+mWuRFqGeGGNmhB1vblpTENO1Z7mAzzIZeVxZr9EZoaY1kyGLFWdSOZxRMAufiN2mkbO6dAlw==", + "version": "1.32.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.2.tgz", + "integrity": "sha512-u1pUuzqwz3SAgvHSWp1k0mRhX82b2DdlVnP6UIetQPZtYbuJUDaPQhZE12jyjB7vYeOScfz9WPsZJB6Rpk7heA==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" } }, "sass-loader": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.0.tgz", - "integrity": "sha512-ZCKAlczLBbFd3aGAhowpYEy69Te3Z68cg8bnHHl6WnSCvnKpbM6pQrz957HWMa8LKVuhnD9uMplmMAHwGQtHeg==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", + "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", "dev": true, "requires": { "klona": "^2.0.4", @@ -14516,10 +14941,13 @@ } }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -14950,52 +15378,43 @@ } }, "sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dev": true, "requires": { - "faye-websocket": "^0.10.0", + "faye-websocket": "^0.11.3", "uuid": "^3.4.0", - "websocket-driver": "0.6.5" + "websocket-driver": "^0.7.4" } }, "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", + "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", "dev": true, "requires": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.4.7" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } @@ -15111,9 +15530,9 @@ }, "dependencies": { "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -15142,9 +15561,9 @@ }, "dependencies": { "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -15188,9 +15607,11 @@ } }, "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true }, "sshpk": { "version": "1.16.1", @@ -15599,94 +16020,44 @@ "dev": true }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "emoji-regex": { + "ajv": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", + "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } } } @@ -15720,9 +16091,9 @@ } }, "tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "requires": { "bl": "^4.0.3", @@ -16157,9 +16528,9 @@ "integrity": "sha1-ifghi52eJX9H1/a1bQHFpNLGj8M=" }, "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", + "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -16911,14 +17282,14 @@ "dev": true }, "vue-i18n": { - "version": "8.22.2", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.22.2.tgz", - "integrity": "sha512-rb569fVJInPUgS/bbCxEQ9DrAoFTntuJvYoK4Fpk2VfNbA09WzdTKk57ppjz3S+ps9hW+p9H+2ASgMvojedkow==" + "version": "8.22.3", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.22.3.tgz", + "integrity": "sha512-Vhyx7sZEmmW/aZLkzSlXei08Rv3hTondx4J9wbOjnThocTIK1QiXV6QRdT4BTnhT24JixDSf6kGkxqCXSaJ3Jw==" }, "vue-loader": { - "version": "15.9.5", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.5.tgz", - "integrity": "sha512-oeMOs2b5o5gRqkxfds10bCx6JeXYTwivRgbb8hzOrcThD2z1+GqEKE3EX9A2SGbsYDf4rXwRg6D5n1w0jO5SwA==", + "version": "15.9.6", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.6.tgz", + "integrity": "sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg==", "dev": true, "requires": { "@vue/component-compiler-utils": "^3.1.0", @@ -16929,9 +17300,9 @@ } }, "vue-observe-visibility": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-0.4.6.tgz", - "integrity": "sha512-xo0CEVdkjSjhJoDdLSvoZoQrw/H2BlzB5jrCBKGZNXN2zdZgMuZ9BKrxXDjNP2AxlcCoKc8OahI3F3r3JGLv2Q==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-1.0.0.tgz", + "integrity": "sha512-s5TFh3s3h3Mhd3jaz3zGzkVHKHnc/0C/gNr30olO99+yw2hl3WBhK3ng3/f9OF+qkW4+l7GkmwfAzDAcY3lCFg==" }, "vue-router": { "version": "3.4.9", @@ -17745,9 +18116,9 @@ } }, "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", "dev": true, "requires": { "memory-fs": "^0.4.1", @@ -17806,9 +18177,9 @@ } }, "webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", + "integrity": "sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -17831,11 +18202,11 @@ "p-retry": "^3.0.1", "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", + "selfsigned": "^1.10.8", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", @@ -17987,9 +18358,9 @@ "dev": true }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -18301,9 +18672,9 @@ } }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, "yargs": { @@ -18373,11 +18744,13 @@ } }, "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -18673,12 +19046,27 @@ } }, "yt-channel-info": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/yt-channel-info/-/yt-channel-info-1.1.4.tgz", - "integrity": "sha512-FQfttLEWMlVH4qXEkSxPQBkcg6RUquXeckoJtpJP8uMhv2HSRMQ6qND1kf/kQf6eThd8UaYTvXrsgWnIAOG44w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/yt-channel-info/-/yt-channel-info-1.2.0.tgz", + "integrity": "sha512-ozNDuCjDeTkr9HcLSIypcW8gehVSsbZv4JwD1eFmhvRllG0xPccWp9hr6qPakn1TiWFUTURpV6VnT/xz1c5wkA==", "requires": { - "axios": "^0.19.2", + "axios": "^0.21.1", "querystring": "^0.2.0" + }, + "dependencies": { + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "follow-redirects": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", + "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" + } } }, "yt-comment-scraper": { @@ -18726,14 +19114,14 @@ } }, "yt-xml2vtt": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/yt-xml2vtt/-/yt-xml2vtt-1.1.3.tgz", - "integrity": "sha512-MH9xq4gxR54oktdPnkMXftKJ7aqp3iCDURKjEg/5NBoCPsOZUGFMtyAaVUBVNQsoAg1Dd0vxEPinbC/aJa/InQ==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/yt-xml2vtt/-/yt-xml2vtt-1.2.0.tgz", + "integrity": "sha512-4ZzqHIUfdPFa0Xb+8M3vsbokXooOhQuFuXa8bw4CJ5V0xWjRA/CPlZ3u0VTYoce4sUmMgoOVN7Xcj8NpUNujXA==" }, "ytdl-core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.2.0.tgz", - "integrity": "sha512-DYXdooKcok4yuAHg6YdcSppGBWleBQ5nwxFDXArLv3Iiu0GcsfDQdJEjz2zm0oHA292mMyaRb17EYGdcU8D3hw==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.2.tgz", + "integrity": "sha512-T6eXIhDoDPqmxFKPu4R2LG+X/uWYh1wy/cfAf+OwJNHx6+cAYXbdyZ8j2el9yy1G3nDP1Dd4YN5BGRATJdQlFg==", "requires": { "m3u8stream": "^0.8.3", "miniget": "^4.0.0", @@ -18762,9 +19150,9 @@ } }, "ytpl": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/ytpl/-/ytpl-2.0.3.tgz", - "integrity": "sha512-E5nH0gULzpXAh7rcj6X7I8MK0L8hiprzZzsxTc/OPZDcYF53Z7O5IbU1vgMYzEmVsPtTLEWejT2HUWdjlgaCSQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/ytpl/-/ytpl-2.0.4.tgz", + "integrity": "sha512-lXm3LvFvs2RixD6PTDay5jXRhaMSo/Upw7P60/FgQFvNrgSYRwMpR3nB1v3scu84R2XcS6kuENhPD2M4x/920A==", "requires": { "miniget": "^4.1.0" }, @@ -18777,9 +19165,9 @@ } }, "ytsr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ytsr/-/ytsr-3.0.0.tgz", - "integrity": "sha512-/HgM0Vi8a3bJOpw8QZVWhfka0OygluQtfK7B8Kv5gkGdZEDLLJKFUb5i0ytUMWUNzUSNtO4vIAeLBVYYX4B4Dg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ytsr/-/ytsr-3.2.1.tgz", + "integrity": "sha512-iN2woG5bfXiAWs9Tv6MPVGx3f1zdpeshyevGAbm0ggCYLmOnSNIA3lkgqlkfa0CH5WKIB/yjwRPU1hc49AUN+g==", "requires": { "miniget": "^4.1.0" }, diff --git a/package.json b/package.json index a1797f2a..946a5024 100644 --- a/package.json +++ b/package.json @@ -10,21 +10,21 @@ "dependencies": { "@fortawesome/fontawesome-svg-core": "^1.2.32", "@fortawesome/free-solid-svg-icons": "^5.15.1", - "@fortawesome/vue-fontawesome": "^2.0.0", + "@fortawesome/vue-fontawesome": "^2.0.2", "@silvermine/videojs-quality-selector": "^1.2.4", "autolinker": "^3.14.2", "bulma-pro": "^0.2.0", - "dateformat": "^4.3.1", - "electron-context-menu": "^2.3.0", + "dateformat": "^4.4.1", + "electron-context-menu": "^2.4.0", "jquery": "^3.5.1", - "js-yaml": "^3.14.1", + "js-yaml": "^4.0.0", "lodash.debounce": "^4.0.8", "lodash.isequal": "^4.5.0", "lodash.uniqwith": "^4.5.0", "markdown": "^0.5.0", "material-design-icons": "^3.0.1", "nedb": "^1.8.0", - "opml-to-json": "0.0.3", + "opml-to-json": "1.0.1", "rss-parser": "^3.10.0", "video.js": "7.10.2", "videojs-abloop": "^1.2.0", @@ -35,74 +35,74 @@ "videojs-vtt-thumbnails-freetube": "0.0.15", "vue": "^2.6.12", "vue-electron": "^1.0.6", - "vue-i18n": "^8.22.2", - "vue-observe-visibility": "^0.4.6", + "vue-i18n": "^8.22.3", + "vue-observe-visibility": "^1.0.0", "vue-router": "^3.4.9", "vuex": "^3.6.0", "xml2json": "^0.12.0", "youtube-chat": "^1.1.0", "youtube-suggest": "^1.1.0", - "yt-channel-info": "^1.1.4", + "yt-channel-info": "^1.2.0", "yt-comment-scraper": "^1.3.10", "yt-dash-manifest-generator": "^1.1.0", "yt-trending-scraper": "^1.0.4", - "yt-xml2vtt": "^1.1.3", - "ytdl-core": "^4.2.0", - "ytpl": "^2.0.3", - "ytsr": "^3.0.0" + "yt-xml2vtt": "^1.2.0", + "ytdl-core": "^4.4.2", + "ytpl": "^2.0.4", + "ytsr": "^3.2.1" }, "description": "A private YouTube client", "devDependencies": { "@babel/core": "^7.12.10", "@babel/plugin-proposal-class-properties": "^7.12.1", "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/preset-env": "^7.12.10", + "@babel/preset-env": "^7.12.11", "@babel/preset-typescript": "^7.12.7", - "@typescript-eslint/eslint-plugin": "^4.10.0", - "@typescript-eslint/parser": "^4.10.0", + "@typescript-eslint/eslint-plugin": "^4.13.0", + "@typescript-eslint/parser": "^4.13.0", "acorn": "^8.0.4", "babel-eslint": "^10.1.0", "babel-loader": "^8.2.2", "copy-webpack-plugin": "6.4.0", "css-loader": "^5.0.1", "devtron": "^1.4.0", - "electron": "^11.1.0", + "electron": "^11.1.1", "electron-builder": "^22.9.1", - "electron-builder-squirrel-windows": "^22.10.3", - "electron-debug": "^3.1.0", + "electron-builder-squirrel-windows": "^22.10.4", + "electron-debug": "^3.2.0", "electron-rebuild": "^2.3.4", - "eslint": "^7.15.0", - "eslint-config-prettier": "^7.0.0", + "eslint": "^7.17.0", + "eslint-config-prettier": "^7.1.0", "eslint-config-standard": "^16.0.2", "eslint-plugin-import": "^2.22.1", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.3.0", + "eslint-plugin-prettier": "^3.3.1", "eslint-plugin-promise": "^4.2.1", "eslint-plugin-standard": "^5.0.0", - "eslint-plugin-vue": "^7.2.0", + "eslint-plugin-vue": "^7.4.1", "fast-glob": "^3.2.4", "file-loader": "^6.2.0", - "html-webpack-plugin": "^4.5.0", + "html-webpack-plugin": "^4.5.1", "jest": "^26.6.3", "mini-css-extract-plugin": "^1.3.3", "node-abi": "^2.19.3", "node-loader": "^1.0.2", "npm-run-all": "^4.1.5", "prettier": "^2.2.1", - "sass": "^1.30.0", - "sass-loader": "^10.1.0", + "sass": "^1.32.2", + "sass-loader": "^10.1.1", "style-loader": "^2.0.0", "tree-kill": "1.2.2", "typescript": "^4.1.3", "url-loader": "^4.1.1", "vue-devtools": "^5.1.4", "vue-eslint-parser": "^7.3.0", - "vue-loader": "^15.9.5", + "vue-loader": "^15.9.6", "vue-style-loader": "^4.1.2", "vue-template-compiler": "^2.6.12", "webpack": "4.44.2", "webpack-cli": "3.3.12", - "webpack-dev-server": "^3.11.0" + "webpack-dev-server": "^3.11.1" }, "license": "AGPL-3.0-or-later", "main": "./dist/main.js", diff --git a/src/renderer/main.js b/src/renderer/main.js index 7429f87d..d22bf026 100644 --- a/src/renderer/main.js +++ b/src/renderer/main.js @@ -32,7 +32,7 @@ const fileLocation = isDev ? 'static/locales/' : `${__dirname}/static/locales/` activeLocales.forEach((locale) => { try { // File location when running in dev - const doc = yaml.safeLoad(fs.readFileSync(`${fileLocation}${locale}.yaml`)) + const doc = yaml.load(fs.readFileSync(`${fileLocation}${locale}.yaml`)) messages[locale] = doc } catch (e) { console.log(e) diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index 6f186420..ba05d5be 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -248,7 +248,7 @@ export default Vue.extend({ this.thumbnail = `https://i.ytimg.com/vi/${this.videoId}/maxres3.jpg` break default: - this.thumbnail = result.videoDetails.thumbnail.thumbnails[result.videoDetails.thumbnail.thumbnails.length - 1].url + this.thumbnail = result.videoDetails.thumbnails[result.videoDetails.thumbnails.length - 1].url break } From 6c9e176249b35eb2ceb23504b5b6a43b5caba87a Mon Sep 17 00:00:00 2001 From: Preston Date: Mon, 11 Jan 2021 15:45:46 -0500 Subject: [PATCH 58/94] Prevent display from sleeping when video is playing --- .../ft-video-player/ft-video-player.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/renderer/components/ft-video-player/ft-video-player.js b/src/renderer/components/ft-video-player/ft-video-player.js index 63fc5221..ab29039f 100644 --- a/src/renderer/components/ft-video-player/ft-video-player.js +++ b/src/renderer/components/ft-video-player/ft-video-player.js @@ -61,6 +61,7 @@ export default Vue.extend({ data: function () { return { id: '', + powerSaveBlocker: null, volume: 1, player: null, useDash: false, @@ -115,6 +116,10 @@ export default Vue.extend({ } }, computed: { + usingElectron: function () { + return this.$store.getters.getUsingElectron + }, + defaultPlayback: function () { return this.$store.getters.getDefaultPlayback }, @@ -235,6 +240,22 @@ export default Vue.extend({ this.player.on('error', function (error, message) { v.$emit('error', error.target.player.error_) }) + + this.player.on('play', function () { + if (this.usingElectron) { + const { powerSaveBlocker } = require('electron') + + this.powerSaveBlocker = powerSaveBlocker.start('prevent-display-sleep') + } + }) + + this.player.on('pause', function () { + if (this.usingElectron && this.powerSaveBlocker !== null) { + const { powerSaveBlocker } = require('electron') + powerSaveBlocker.stop(this.powerSaveBlocker) + this.powerSaveBlocker = null + } + }) } }, From f4fdff33dd3e0b8d170808a72e3b2c0941cdbffc Mon Sep 17 00:00:00 2001 From: badlop Date: Mon, 11 Jan 2021 20:44:54 +0000 Subject: [PATCH 59/94] Translated using Weblate (Spanish) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/ --- static/locales/es.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/es.yaml b/static/locales/es.yaml index 5812d7bd..3fcae4da 100644 --- a/static/locales/es.yaml +++ b/static/locales/es.yaml @@ -270,6 +270,7 @@ Settings: Hide Comment Likes: No mostrar likes de comentarios Hide Channel Subscribers: No mostrar suscriptores en canales Distraction Free Settings: No distraer + Hide Active Subscriptions: Ocultar suscripciones activas The app needs to restart for changes to take effect. Restart and apply change?: ¿Quieres reiniciar FreeTube ahora para aplicar los cambios? About: From 05fe083dcb1f69ab2dd9f3d2221d32d08b781f08 Mon Sep 17 00:00:00 2001 From: alium Date: Mon, 11 Jan 2021 21:22:16 +0000 Subject: [PATCH 60/94] Translated using Weblate (Czech) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/ --- static/locales/cs.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/cs.yaml b/static/locales/cs.yaml index ecb92acd..7885fa07 100644 --- a/static/locales/cs.yaml +++ b/static/locales/cs.yaml @@ -212,6 +212,7 @@ Settings: Hide Trending Videos: 'Skrýt trendy' Hide Popular Videos: 'Skrýt populární videa' Hide Live Chat: 'Skrýt chat' + Hide Active Subscriptions: Skrýt aktivní odběry Data Settings: Data Settings: 'Nastavení dat' Select Import Type: 'Vybrat typ importu' From fda38b1b215b27c07e143421dc1fb28cfdf3ed8a Mon Sep 17 00:00:00 2001 From: Kyotaro Iijima Date: Tue, 12 Jan 2021 07:48:13 +0000 Subject: [PATCH 61/94] Translated using Weblate (Japanese) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/ --- static/locales/ja.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/static/locales/ja.yaml b/static/locales/ja.yaml index 99af9afc..7309dba7 100644 --- a/static/locales/ja.yaml +++ b/static/locales/ja.yaml @@ -260,6 +260,7 @@ Settings: Hide Video Views: 再生数の非表示 Hide Video Likes And Dislikes: 評価の非表示 Distraction Free Settings: 集中モード + Hide Active Subscriptions: 使用中の登録チャンネルの非表示 The app needs to restart for changes to take effect. Restart and apply change?: 変更の反映には、アプリの再起動が必要です。再起動して変更を適用しますか? About: #On About page From 9ef68b02227419e4546fda82a397dd3b5400d14e Mon Sep 17 00:00:00 2001 From: saideepesh000 Date: Tue, 12 Jan 2021 20:58:25 +0530 Subject: [PATCH 62/94] Added Hong Kong as trending region option --- static/geolocations/ar/countries.json | 1 + static/geolocations/bg/countries.json | 1 + static/geolocations/cs/countries.json | 1 + static/geolocations/da/countries.json | 1 + static/geolocations/de-DE/countries.json | 1 + static/geolocations/ee/countries.json | 1 + static/geolocations/el/countries.json | 1 + static/geolocations/en-GB/countries.json | 1 + static/geolocations/en-US/countries.json | 1 + static/geolocations/es-AR/countries.json | 1 + static/geolocations/es-MX/countries.json | 1 + static/geolocations/es/countries.json | 1 + static/geolocations/eu/countries.json | 1 + static/geolocations/fi/countries.json | 1 + static/geolocations/fr-FR/countries.json | 1 + static/geolocations/hu/countries.json | 1 + static/geolocations/it/countries.json | 1 + static/geolocations/ja/countries.json | 1 + static/geolocations/ko/countries.json | 1 + static/geolocations/lt/countries.json | 1 + static/geolocations/nb-NO/countries.json | 1 + static/geolocations/nl/countries.json | 1 + static/geolocations/pl/countries.json | 1 + static/geolocations/pt-BR/countries.json | 1 + static/geolocations/pt-PT/countries.json | 1 + static/geolocations/pt/countries.json | 1 + static/geolocations/ro/countries.json | 1 + static/geolocations/ru/countries.json | 1 + static/geolocations/sk/countries.json | 1 + static/geolocations/sv/countries.json | 1 + static/geolocations/th/countries.json | 1 + static/geolocations/uk/countries.json | 1 + static/geolocations/zh-tw/countries.json | 1 + static/geolocations/zh/countries.json | 1 + 34 files changed, 34 insertions(+) diff --git a/static/geolocations/ar/countries.json b/static/geolocations/ar/countries.json index 7a7d1e93..2bf1650a 100644 --- a/static/geolocations/ar/countries.json +++ b/static/geolocations/ar/countries.json @@ -71,6 +71,7 @@ {"id":328,"name":"غيانا","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"هايتي","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"هندوراس","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"هونغ كونغ","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"المجر","alpha2":"hu","alpha3":"hun"}, {"id":352,"name":"آيسلندا","alpha2":"is","alpha3":"isl"}, {"id":356,"name":"الهند","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/bg/countries.json b/static/geolocations/bg/countries.json index ca50ee1d..36326fb8 100644 --- a/static/geolocations/bg/countries.json +++ b/static/geolocations/bg/countries.json @@ -72,6 +72,7 @@ {"id":328,"name":"Гвиана","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Хаити","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Хондурас","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Хонг Конг","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Унгария","alpha2":"hu","alpha3":"hun"}, {"id":352,"name":"Исландия","alpha2":"is","alpha3":"isl"}, {"id":356,"name":"Индия","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/cs/countries.json b/static/geolocations/cs/countries.json index bf5964a6..1418bed9 100644 --- a/static/geolocations/cs/countries.json +++ b/static/geolocations/cs/countries.json @@ -54,6 +54,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hongkong","alpha2":"hk","alpha3":"hkg"}, {"id":152,"name":"Chile","alpha2":"cl","alpha3":"chl"}, {"id":191,"name":"Chorvatsko","alpha2":"hr","alpha3":"hrv"}, {"id":356,"name":"Indie","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/da/countries.json b/static/geolocations/da/countries.json index 5ada3a1a..076d8d53 100644 --- a/static/geolocations/da/countries.json +++ b/static/geolocations/da/countries.json @@ -65,6 +65,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":112,"name":"Hviderusland","alpha2":"by","alpha3":"blr"}, {"id":356,"name":"Indien","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonesien","alpha2":"id","alpha3":"idn"}, diff --git a/static/geolocations/de-DE/countries.json b/static/geolocations/de-DE/countries.json index 8ec86d8c..65af0e09 100644 --- a/static/geolocations/de-DE/countries.json +++ b/static/geolocations/de-DE/countries.json @@ -57,6 +57,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hongkong","alpha2":"hk","alpha3":"hkg"}, {"id":356,"name":"Indien","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonesien","alpha2":"id","alpha3":"idn"}, {"id":368,"name":"Irak","alpha2":"iq","alpha3":"irq"}, diff --git a/static/geolocations/ee/countries.json b/static/geolocations/ee/countries.json index dbaf0514..28a87c9a 100644 --- a/static/geolocations/ee/countries.json +++ b/static/geolocations/ee/countries.json @@ -58,6 +58,7 @@ {"id":724,"name":"Hispaania","alpha2":"es","alpha3":"esp"}, {"id":528,"name":"Holland","alpha2":"nl","alpha3":"nld"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":191,"name":"Horvaatia","alpha2":"hr","alpha3":"hrv"}, {"id":372,"name":"Iirimaa","alpha2":"ie","alpha3":"irl"}, {"id":376,"name":"Iisrael","alpha2":"il","alpha3":"isr"}, diff --git a/static/geolocations/el/countries.json b/static/geolocations/el/countries.json index e92789b0..3da14da3 100644 --- a/static/geolocations/el/countries.json +++ b/static/geolocations/el/countries.json @@ -137,6 +137,7 @@ {"id":512,"name":"Ομάν","alpha2":"om","alpha3":"omn"}, {"id":583,"name":"Ομόσπονδες Πολιτείες της Μικρονησίας","alpha2":"fm","alpha3":"fsm"}, {"id":340,"name":"Ονδούρα","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Χονγκ Κονγκ","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Ουγγαρία","alpha2":"hu","alpha3":"hun"}, {"id":800,"name":"Ουγκάντα","alpha2":"ug","alpha3":"uga"}, {"id":860,"name":"Ουζμπεκιστάν","alpha2":"uz","alpha3":"uzb"}, diff --git a/static/geolocations/en-GB/countries.json b/static/geolocations/en-GB/countries.json index 9e9625dc..cfaca1d2 100644 --- a/static/geolocations/en-GB/countries.json +++ b/static/geolocations/en-GB/countries.json @@ -72,6 +72,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hungary","alpha2":"hu","alpha3":"hun"}, {"id":352,"name":"Iceland","alpha2":"is","alpha3":"isl"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/en-US/countries.json b/static/geolocations/en-US/countries.json index 9e9625dc..cfaca1d2 100644 --- a/static/geolocations/en-US/countries.json +++ b/static/geolocations/en-US/countries.json @@ -72,6 +72,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hungary","alpha2":"hu","alpha3":"hun"}, {"id":352,"name":"Iceland","alpha2":"is","alpha3":"isl"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/es-AR/countries.json b/static/geolocations/es-AR/countries.json index c1a68e22..06736370 100644 --- a/static/geolocations/es-AR/countries.json +++ b/static/geolocations/es-AR/countries.json @@ -75,6 +75,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haití","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hungría","alpha2":"hu","alpha3":"hun"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonesia","alpha2":"id","alpha3":"idn"}, diff --git a/static/geolocations/es-MX/countries.json b/static/geolocations/es-MX/countries.json index c1a68e22..06736370 100644 --- a/static/geolocations/es-MX/countries.json +++ b/static/geolocations/es-MX/countries.json @@ -75,6 +75,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haití","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hungría","alpha2":"hu","alpha3":"hun"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonesia","alpha2":"id","alpha3":"idn"}, diff --git a/static/geolocations/es/countries.json b/static/geolocations/es/countries.json index c1a68e22..06736370 100644 --- a/static/geolocations/es/countries.json +++ b/static/geolocations/es/countries.json @@ -75,6 +75,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haití","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hungría","alpha2":"hu","alpha3":"hun"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonesia","alpha2":"id","alpha3":"idn"}, diff --git a/static/geolocations/eu/countries.json b/static/geolocations/eu/countries.json index 886cbe10..442553a7 100644 --- a/static/geolocations/eu/countries.json +++ b/static/geolocations/eu/countries.json @@ -68,6 +68,7 @@ {"id":728,"name":"Hego Sudan","alpha2":"ss","alpha3":"ssd"}, {"id":528,"name":"Herbehereak","alpha2":"nl","alpha3":"nld"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hungaria","alpha2":"hu","alpha3":"hun"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonesia","alpha2":"id","alpha3":"idn"}, diff --git a/static/geolocations/fi/countries.json b/static/geolocations/fi/countries.json index e0dfbf86..9c0cf45f 100644 --- a/static/geolocations/fi/countries.json +++ b/static/geolocations/fi/countries.json @@ -52,6 +52,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":360,"name":"Indonesia","alpha2":"id","alpha3":"idn"}, {"id":356,"name":"Intia","alpha2":"in","alpha3":"ind"}, {"id":368,"name":"Irak","alpha2":"iq","alpha3":"irq"}, diff --git a/static/geolocations/fr-FR/countries.json b/static/geolocations/fr-FR/countries.json index 77469891..99cb5c10 100644 --- a/static/geolocations/fr-FR/countries.json +++ b/static/geolocations/fr-FR/countries.json @@ -76,6 +76,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haïti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hongrie","alpha2":"hu","alpha3":"hun"}, {"id":356,"name":"Inde","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonésie","alpha2":"id","alpha3":"idn"}, diff --git a/static/geolocations/hu/countries.json b/static/geolocations/hu/countries.json index bda26fb7..e5f19210 100644 --- a/static/geolocations/hu/countries.json +++ b/static/geolocations/hu/countries.json @@ -67,6 +67,7 @@ {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":528,"name":"Hollandia","alpha2":"nl","alpha3":"nld"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":191,"name":"Horvátország","alpha2":"hr","alpha3":"hrv"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonézia","alpha2":"id","alpha3":"idn"}, diff --git a/static/geolocations/it/countries.json b/static/geolocations/it/countries.json index 1c073e80..99f9f4f9 100644 --- a/static/geolocations/it/countries.json +++ b/static/geolocations/it/countries.json @@ -75,6 +75,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonesia","alpha2":"id","alpha3":"idn"}, {"id":364,"name":"Iran","alpha2":"ir","alpha3":"irn"}, diff --git a/static/geolocations/ja/countries.json b/static/geolocations/ja/countries.json index b3c16e0e..96a672ef 100644 --- a/static/geolocations/ja/countries.json +++ b/static/geolocations/ja/countries.json @@ -158,6 +158,7 @@ {"id":68,"name":"ボリビア多民族国","alpha2":"bo","alpha3":"bol"}, {"id":620,"name":"ポルトガル","alpha2":"pt","alpha3":"prt"}, {"id":340,"name":"ホンジュラス","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"香港","alpha2":"hk","alpha3":"hkg"}, {"id":584,"name":"マーシャル諸島","alpha2":"mh","alpha3":"mhl"}, {"id":450,"name":"マダガスカル","alpha2":"mg","alpha3":"mdg"}, {"id":454,"name":"マラウイ","alpha2":"mw","alpha3":"mwi"}, diff --git a/static/geolocations/ko/countries.json b/static/geolocations/ko/countries.json index a88fc7b1..4f3bf4c9 100644 --- a/static/geolocations/ko/countries.json +++ b/static/geolocations/ko/countries.json @@ -124,6 +124,7 @@ {"id":36,"name":"오스트레일리아","alpha2":"au","alpha3":"aus"}, {"id":40,"name":"오스트리아","alpha2":"at","alpha3":"aut"}, {"id":340,"name":"온두라스","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"홍콩","alpha2":"hk","alpha3":"hkg"}, {"id":400,"name":"요르단","alpha2":"jo","alpha3":"jor"}, {"id":800,"name":"우간다","alpha2":"ug","alpha3":"uga"}, {"id":858,"name":"우루과이","alpha2":"uy","alpha3":"ury"}, diff --git a/static/geolocations/lt/countries.json b/static/geolocations/lt/countries.json index 206f2be0..e580ac01 100644 --- a/static/geolocations/lt/countries.json +++ b/static/geolocations/lt/countries.json @@ -53,6 +53,7 @@ {"id":328,"name":"Gajana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haitis","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Hondūras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Honkongas","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Vengrija","alpha2":"hu","alpha3":"hun"}, {"id":352,"name":"Islandija","alpha2":"is","alpha3":"isl"}, {"id":356,"name":"Indija","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/nb-NO/countries.json b/static/geolocations/nb-NO/countries.json index b3042306..cba8baa9 100644 --- a/static/geolocations/nb-NO/countries.json +++ b/static/geolocations/nb-NO/countries.json @@ -59,6 +59,7 @@ {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":300,"name":"Hellas","alpha2":"gr","alpha3":"grc"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":112,"name":"Hviterussland","alpha2":"by","alpha3":"blr"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonesia","alpha2":"id","alpha3":"idn"}, diff --git a/static/geolocations/nl/countries.json b/static/geolocations/nl/countries.json index 4c815ead..96348e38 100644 --- a/static/geolocations/nl/countries.json +++ b/static/geolocations/nl/countries.json @@ -64,6 +64,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haïti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hongarije","alpha2":"hu","alpha3":"hun"}, {"id":372,"name":"Ierland","alpha2":"ie","alpha3":"irl"}, {"id":352,"name":"IJsland","alpha2":"is","alpha3":"isl"}, diff --git a/static/geolocations/pl/countries.json b/static/geolocations/pl/countries.json index 749659cc..75db69ee 100644 --- a/static/geolocations/pl/countries.json +++ b/static/geolocations/pl/countries.json @@ -64,6 +64,7 @@ {"id":724,"name":"Hiszpania","alpha2":"es","alpha3":"esp"}, {"id":528,"name":"Holandia","alpha2":"nl","alpha3":"nld"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hongkong","alpha2":"hk","alpha3":"hkg"}, {"id":356,"name":"Indie","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonezja","alpha2":"id","alpha3":"idn"}, {"id":368,"name":"Irak","alpha2":"iq","alpha3":"irq"}, diff --git a/static/geolocations/pt-BR/countries.json b/static/geolocations/pt-BR/countries.json index adcba654..445fd7b1 100644 --- a/static/geolocations/pt-BR/countries.json +++ b/static/geolocations/pt-BR/countries.json @@ -82,6 +82,7 @@ {"id":226,"name":"Guiné Equatorial","alpha2":"gq","alpha3":"gnq"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hungria","alpha2":"hu","alpha3":"hun"}, {"id":887,"name":"Iêmen","alpha2":"ye","alpha3":"yem"}, {"id":356,"name":"Índia","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/pt-PT/countries.json b/static/geolocations/pt-PT/countries.json index adcba654..445fd7b1 100644 --- a/static/geolocations/pt-PT/countries.json +++ b/static/geolocations/pt-PT/countries.json @@ -82,6 +82,7 @@ {"id":226,"name":"Guiné Equatorial","alpha2":"gq","alpha3":"gnq"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hungria","alpha2":"hu","alpha3":"hun"}, {"id":887,"name":"Iêmen","alpha2":"ye","alpha3":"yem"}, {"id":356,"name":"Índia","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/pt/countries.json b/static/geolocations/pt/countries.json index adcba654..445fd7b1 100644 --- a/static/geolocations/pt/countries.json +++ b/static/geolocations/pt/countries.json @@ -82,6 +82,7 @@ {"id":226,"name":"Guiné Equatorial","alpha2":"gq","alpha3":"gnq"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Hungria","alpha2":"hu","alpha3":"hun"}, {"id":887,"name":"Iêmen","alpha2":"ye","alpha3":"yem"}, {"id":356,"name":"Índia","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/ro/countries.json b/static/geolocations/ro/countries.json index 248892a8..8f912a26 100644 --- a/static/geolocations/ro/countries.json +++ b/static/geolocations/ro/countries.json @@ -71,6 +71,7 @@ {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"Ungaria","alpha2":"hu","alpha3":"hun"}, {"id":352,"name":"Islanda","alpha2":"is","alpha3":"isl"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/ru/countries.json b/static/geolocations/ru/countries.json index 0546013e..7900f7a6 100644 --- a/static/geolocations/ru/countries.json +++ b/static/geolocations/ru/countries.json @@ -42,6 +42,7 @@ {"id":624,"name":"Гвинея-Бисау","alpha2":"gw","alpha3":"gnb"}, {"id":276,"name":"Германия","alpha2":"de","alpha3":"deu"}, {"id":340,"name":"Гондурас","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Гонконг","alpha2":"hk","alpha3":"hkg"}, {"id":308,"name":"Гренада","alpha2":"gd","alpha3":"grd"}, {"id":300,"name":"Греция","alpha2":"gr","alpha3":"grc"}, {"id":268,"name":"Грузия","alpha2":"ge","alpha3":"geo"}, diff --git a/static/geolocations/sk/countries.json b/static/geolocations/sk/countries.json index f3d5acfd..152ecc8b 100644 --- a/static/geolocations/sk/countries.json +++ b/static/geolocations/sk/countries.json @@ -57,6 +57,7 @@ {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":528,"name":"Holandsko","alpha2":"nl","alpha3":"nld"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hongkong","alpha2":"hk","alpha3":"hkg"}, {"id":191,"name":"Chorvátsko","alpha2":"hr","alpha3":"hrv"}, {"id":356,"name":"India","alpha2":"in","alpha3":"ind"}, {"id":360,"name":"Indonézia","alpha2":"id","alpha3":"idn"}, diff --git a/static/geolocations/sv/countries.json b/static/geolocations/sv/countries.json index 563df50d..da64d7d4 100644 --- a/static/geolocations/sv/countries.json +++ b/static/geolocations/sv/countries.json @@ -70,6 +70,7 @@ {"id":624,"name":"Guinea-Bissau","alpha2":"gw","alpha3":"gnb"}, {"id":328,"name":"Guyana","alpha2":"gy","alpha3":"guy"}, {"id":340,"name":"Honduras","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Hong Kong","alpha2":"hk","alpha3":"hkg"}, {"id":191,"name":"Kroatien","alpha2":"hr","alpha3":"hrv"}, {"id":332,"name":"Haiti","alpha2":"ht","alpha3":"hti"}, {"id":348,"name":"Ungern","alpha2":"hu","alpha3":"hun"}, diff --git a/static/geolocations/th/countries.json b/static/geolocations/th/countries.json index 63c80d23..9417e065 100644 --- a/static/geolocations/th/countries.json +++ b/static/geolocations/th/countries.json @@ -72,6 +72,7 @@ {"id":328,"name":"กายอานา","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"เฮติ","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"ฮอนดูรัส","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"ฮ่องกง","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"ฮังการี","alpha2":"hu","alpha3":"hun"}, {"id":352,"name":"ไอซ์แลนด์","alpha2":"is","alpha3":"isl"}, {"id":356,"name":"อินเดีย","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/uk/countries.json b/static/geolocations/uk/countries.json index 1760c8ad..a8b8c2c0 100644 --- a/static/geolocations/uk/countries.json +++ b/static/geolocations/uk/countries.json @@ -39,6 +39,7 @@ {"id":324,"name":"Гвінея","alpha2":"gn","alpha3":"gin"}, {"id":624,"name":"Гвінея-Бісау","alpha2":"gw","alpha3":"gnb"}, {"id":340,"name":"Гондурас","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"Гонконг","alpha2":"hk","alpha3":"hkg"}, {"id":308,"name":"Гренада","alpha2":"gd","alpha3":"grd"}, {"id":300,"name":"Греція","alpha2":"gr","alpha3":"grc"}, {"id":268,"name":"Грузія","alpha2":"ge","alpha3":"geo"}, diff --git a/static/geolocations/zh-tw/countries.json b/static/geolocations/zh-tw/countries.json index 1087d0d1..da1178d9 100644 --- a/static/geolocations/zh-tw/countries.json +++ b/static/geolocations/zh-tw/countries.json @@ -72,6 +72,7 @@ {"id":328,"name":"蓋亞那","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"海地","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"宏都拉斯","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"香港","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"匈牙利","alpha2":"hu","alpha3":"hun"}, {"id":352,"name":"冰島","alpha2":"is","alpha3":"isl"}, {"id":356,"name":"印度","alpha2":"in","alpha3":"ind"}, diff --git a/static/geolocations/zh/countries.json b/static/geolocations/zh/countries.json index cc1cebfa..3d67efa6 100644 --- a/static/geolocations/zh/countries.json +++ b/static/geolocations/zh/countries.json @@ -72,6 +72,7 @@ {"id":328,"name":"圭亚那","alpha2":"gy","alpha3":"guy"}, {"id":332,"name":"海地","alpha2":"ht","alpha3":"hti"}, {"id":340,"name":"洪都拉斯","alpha2":"hn","alpha3":"hnd"}, +{"id":344,"name":"香港","alpha2":"hk","alpha3":"hkg"}, {"id":348,"name":"匈牙利","alpha2":"hu","alpha3":"hun"}, {"id":352,"name":"冰岛","alpha2":"is","alpha3":"isl"}, {"id":356,"name":"印度","alpha2":"in","alpha3":"ind"}, From 7be4bf28f2174716b3ae8e739c3dcc350001c17a Mon Sep 17 00:00:00 2001 From: Preston Date: Tue, 12 Jan 2021 22:56:31 -0500 Subject: [PATCH 63/94] Create Loop Button and functionality in video player --- src/renderer/assets/img/loop.svg | 1 + .../ft-video-player/ft-video-player.js | 57 ++++++++++++++++++- src/renderer/videoJS.css | 25 +++++++- 3 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 src/renderer/assets/img/loop.svg diff --git a/src/renderer/assets/img/loop.svg b/src/renderer/assets/img/loop.svg new file mode 100644 index 00000000..e7e24c6e --- /dev/null +++ b/src/renderer/assets/img/loop.svg @@ -0,0 +1 @@ + diff --git a/src/renderer/components/ft-video-player/ft-video-player.js b/src/renderer/components/ft-video-player/ft-video-player.js index ab29039f..75205226 100644 --- a/src/renderer/components/ft-video-player/ft-video-player.js +++ b/src/renderer/components/ft-video-player/ft-video-player.js @@ -1,4 +1,5 @@ import Vue from 'vue' +import { mapActions } from 'vuex' import FtCard from '../ft-card/ft-card.vue' import $ from 'jquery' @@ -87,6 +88,7 @@ export default Vue.extend({ 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', + 'loopButton', 'chaptersButton', 'descriptionsButton', 'subsCapsButton', @@ -156,6 +158,7 @@ export default Vue.extend({ } this.createFullWindowButton() + this.createLoopButton() this.determineFormatType() this.determineMaxFramerate() }, @@ -533,7 +536,53 @@ export default Vue.extend({ } }, - createFullWindowButton: function() { + createLoopButton: function () { + const v = this + const VjsButton = videojs.getComponent('Button') + const loopButton = videojs.extend(VjsButton, { + constructor: function(player, options) { + VjsButton.call(this, player, options) + }, + handleClick: function() { + v.toggleVideoLoop() + }, + createControlTextEl: function (button) { + return $(button).html($('
') + .attr('title', 'Toggle Loop')) + } + }) + videojs.registerComponent('loopButton', loopButton) + }, + + toggleVideoLoop: async function () { + if (!this.player.loop()) { + const currentTheme = localStorage.getItem('mainColor') + const colorNames = this.$store.state.utils.colorClasses + const colorValues = this.$store.state.utils.colorValues + + const nameIndex = colorNames.findIndex((color) => { + return color === currentTheme + }) + + const themeTextColor = await this.calculateColorLuminance(colorValues[nameIndex]) + + $('#loopButton').addClass('vjs-icon-loop-active') + + if (themeTextColor === '#000000') { + $('#loopButton').addClass('loop-black') + $('#loopButton').removeClass('loop-white') + } + + this.player.loop(true) + } else { + $('#loopButton').removeClass('vjs-icon-loop-active') + $('#loopButton').removeClass('loop-black') + $('#loopButton').addClass('loop-white') + this.player.loop(false) + } + }, + + createFullWindowButton: function () { const v = this const VjsButton = videojs.getComponent('Button') const fullWindowButton = videojs.extend(VjsButton, { @@ -827,6 +876,10 @@ export default Vue.extend({ break } } - } + }, + + ...mapActions([ + 'calculateColorLuminance' + ]) } }) diff --git a/src/renderer/videoJS.css b/src/renderer/videoJS.css index 12fad58f..767006db 100644 --- a/src/renderer/videoJS.css +++ b/src/renderer/videoJS.css @@ -449,7 +449,6 @@ body.vjs-full-window { content: url(assets/img/open_fullwindow.svg); } - .vjs-icon-fullwindow-exit, .video-js.vjs-fullwindow .vjs-fullwindow-control .vjs-icon-placeholder { font-family: VideoJS; font-weight: normal; @@ -459,6 +458,30 @@ body.vjs-full-window { content: url(assets/img/close_fullwindow.svg); } +.vjs-icon-loop, .video-js .vjs-fullwindow-control .vjs-icon-placeholder { + color: white !important; + margin-top: 5px !important; + padding-top: 5px !important; + cursor: pointer; +} + +.vjs-icon-loop-active { + background-color: var(--primary-color); +} + +.vjs-icon-loop:before, .video-js.vjs-fullwindow .vjs-fullwindow-control .vjs-icon-placeholder:before { + content: url(assets/img/loop.svg); + /* filter: invert(1) drop-shadow(1px 0px 0px var(--primary-color)); */ +} + +.loop-black:before { + filter: brightness(0%); +} + +.loop-white:before { + filter: none; +} + .vjs-full-window .video-js.vjs-fullscreen { position: fixed; overflow: hidden; From 9424a90fe1de49b7d8c85a64c3dcfd126e192f5d Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Wed, 13 Jan 2021 17:13:36 +1300 Subject: [PATCH 64/94] Sidebar fixes (#916) * Correctly bind theatre mode options Theatre mode is now bound to both "recommended videos" and "live chat" distraction settings, rather than just "recommended videos". The settings switch, the button, and the layout have all been updated to reflect this. Most likely closes: https://github.com/FreeTubeApp/FreeTube/issues/910 * Fix watch layout when no sidebar If there's nothing to display in the sidebar according to the distraction settings and live status, the watch page will adopt a single column layout. If the sidebar still exists due to faulty logic, it will be placed at the very bottom of the page. Most likely closes: https://github.com/FreeTubeApp/FreeTube/issues/909 * Unlink default theatre mode switch * Normalise theatre calculation, consider playlists --- .../distraction-settings/distraction-settings.js | 1 - .../components/player-settings/player-settings.vue | 1 - .../components/watch-video-info/watch-video-info.js | 12 ++++++++++++ .../components/watch-video-info/watch-video-info.vue | 2 +- src/renderer/views/Watch/Watch.js | 9 +++++++++ src/renderer/views/Watch/Watch.sass | 5 ++++- src/renderer/views/Watch/Watch.vue | 5 ++++- 7 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/renderer/components/distraction-settings/distraction-settings.js b/src/renderer/components/distraction-settings/distraction-settings.js index e00a68a7..fc74c37c 100644 --- a/src/renderer/components/distraction-settings/distraction-settings.js +++ b/src/renderer/components/distraction-settings/distraction-settings.js @@ -48,7 +48,6 @@ export default Vue.extend({ handleHideRecommendedVideos: function (value) { if (value) { this.updatePlayNextVideo(false) - this.updateDefaultTheatreMode(true) } this.updateHideRecommendedVideos(value) diff --git a/src/renderer/components/player-settings/player-settings.vue b/src/renderer/components/player-settings/player-settings.vue index f4b98287..8b7ff1ec 100644 --- a/src/renderer/components/player-settings/player-settings.vue +++ b/src/renderer/components/player-settings/player-settings.vue @@ -34,7 +34,6 @@ diff --git a/src/renderer/components/watch-video-info/watch-video-info.js b/src/renderer/components/watch-video-info/watch-video-info.js index 89c62bcf..fa6385b7 100644 --- a/src/renderer/components/watch-video-info/watch-video-info.js +++ b/src/renderer/components/watch-video-info/watch-video-info.js @@ -78,6 +78,14 @@ export default Vue.extend({ downloadLinks: { type: Array, required: true + }, + watchingPlaylist: { + type: Boolean, + required: true + }, + theatrePossible: { + type: Boolean, + required: true } }, data: function () { @@ -111,6 +119,10 @@ export default Vue.extend({ return this.$store.getters.getHideRecommendedVideos }, + hideLiveChat: function () { + return this.$store.getters.getHideLiveChat + }, + hideVideoLikesAndDislikes: function () { return this.$store.getters.getHideVideoLikesAndDislikes }, diff --git a/src/renderer/components/watch-video-info/watch-video-info.vue b/src/renderer/components/watch-video-info/watch-video-info.vue index fe0317d5..05e7ec76 100644 --- a/src/renderer/components/watch-video-info/watch-video-info.vue +++ b/src/renderer/components/watch-video-info/watch-video-info.vue @@ -63,7 +63,7 @@
` @@ -128,6 +134,9 @@ export default Vue.extend({ }, hideVideoLikesAndDislikes: function () { return this.$store.getters.getHideVideoLikesAndDislikes + }, + theatrePossible: function() { + return !this.hideRecommendedVideos || (!this.hideLiveChat && this.isLive) || this.watchingPlaylist } }, watch: { diff --git a/src/renderer/views/Watch/Watch.sass b/src/renderer/views/Watch/Watch.sass index b444a8f5..48bfd5db 100644 --- a/src/renderer/views/Watch/Watch.sass +++ b/src/renderer/views/Watch/Watch.sass @@ -22,7 +22,7 @@ @media only screen and (max-width: 900px) +single-column-template - &.isLoading + &.isLoading, &.noSidebar +single-column-template .videoArea @@ -73,6 +73,9 @@ @media only screen and (min-width: 901px) min-width: 380px + @at-root .noSidebar#{&} + grid-area: auto + .watchVideoPlaylist, .watchVideoSidebar, .theatrePlaylist margin: 0 8px 16px diff --git a/src/renderer/views/Watch/Watch.vue b/src/renderer/views/Watch/Watch.vue index 0a026c90..b2247a34 100644 --- a/src/renderer/views/Watch/Watch.vue +++ b/src/renderer/views/Watch/Watch.vue @@ -3,7 +3,8 @@ class="videoLayout" :class="{ isLoading, - useTheatreMode + useTheatreMode, + noSidebar: !theatrePossible }" > Date: Wed, 13 Jan 2021 08:18:25 +0000 Subject: [PATCH 65/94] Translated using Weblate (Hungarian) Currently translated at 100.0% (418 of 418 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/ --- static/locales/hu.yaml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/static/locales/hu.yaml b/static/locales/hu.yaml index c32591a2..0a45206e 100644 --- a/static/locales/hu.yaml +++ b/static/locales/hu.yaml @@ -280,6 +280,7 @@ Settings: Hide Video Likes And Dislikes: Videó kedvelések és nemtetszések elrejtése Hide Video Views: Videó nézetek elrejtése Distraction Free Settings: Zavartalan beállítások + Hide Active Subscriptions: Elérhető feliratkozások elrejtése The app needs to restart for changes to take effect. Restart and apply change?: Az alkalmazásnak újra kell indulnia, hogy a változtatások életbe lépjenek. Indítsa újra és alkalmazza a módosítást? @@ -471,6 +472,8 @@ Video: Copy YouTube Channel Link: YouTube csatorna hivatkozása másolása Open Channel in YouTube: Csatorna megnyitása a YouTube oldalon Open Channel in Invidious: Csatorna megnyitása az Invidious oldalán + Started streaming on: Folyamatos átvitel indult + Streamed on: Folyamatos átvitele Videos: #& Sort By Sort By: @@ -573,3 +576,32 @@ Tooltips: Preferred API Backend: Válassza ki a háttéralkalmazást, amelyet a FreeTube használ az adatok megszerzéséhez. A helyi-API egy beépített kinyerő. Az Invidious-API használatához Invidious-kiszolgáló szükséges. + Region for Trending: A népszerűk körzetével kiválaszthatja, mely ország népszerű + videóit szeretné megjeleníteni. Nem minden megjelenített országot támogat a + YouTube + Invidious Instance: Invidious példány, amelyhez a FreeTube csatlakozni fog az + API-hívásokhoz. Törölje az aktuális példányt a nyilvános példányok listájának + megjelenítéséhez + Thumbnail Preference: A FreeTube összes miniatűrökét az alapértelmezett miniatűr + helyett egy képkocka váltja fel + Fallback to Non-Preferred Backend on Failure: Ha az Ön által előnyben részesített + API-val hibába merül fel, a FreeTube önműködően megpróbálja a nem előnyben API-t + tartalékként használni, ha engedélyezve van + Subscription Settings: + Fetch Feeds from RSS: Ha engedélyezve van, a FreeTube az alapértelmezett módszer + helyett RSS-t fog használni a feliratkozás hírcsatornájának megragadásához. + Az RSS gyorsabb és megakadályozza az IP-zárolást, de nem nyújt bizonyos tájékoztatást, + például a videó időtartamát vagy az élő állapotot + Player Settings: + Default Video Format: Állítsa be a videó lejátszásakor használt formátumokat. + A kötőjel formátumok magasabb minőséget játszhatnak le. Az örökölt formátumok + legfeljebb 720 képpontra korlátozódnak, de kevesebb sávszélességet használnak. + A hangformátumok csak hang-adatfolyamok + Proxy Videos Through Invidious: Csatlakozik az Invidious szolgáltatáshoz, hogy + videókat szolgáltasson, ahelyett, hogy közvetlen kapcsolatot létesítene a YouTube + szolgáltatással. Felülbírálja az API beállítást + Force Local Backend for Legacy Formats: Csak akkor működik, ha az Invidious API + az alapértelmezett. Ha engedélyezve van, a helyi API futni fog, és az általa + visszaadott örökölt formátumokat fogja használni az Invidious által visszaadottak + helyett. Segít, ha az Invidious által visszaküldött videókat nem lehet lejátszani + az ország korlátozása miatt From 5663d56b12e736cbea30579d59f19b67eb7132f9 Mon Sep 17 00:00:00 2001 From: Preston Date: Wed, 13 Jan 2021 15:56:25 -0500 Subject: [PATCH 66/94] Stop power save blocker on route leave --- .../components/ft-video-player/ft-video-player.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/renderer/components/ft-video-player/ft-video-player.js b/src/renderer/components/ft-video-player/ft-video-player.js index 75205226..5d220ed1 100644 --- a/src/renderer/components/ft-video-player/ft-video-player.js +++ b/src/renderer/components/ft-video-player/ft-video-player.js @@ -28,6 +28,11 @@ export default Vue.extend({ } else if (this.player.isInPictureInPicture()) { this.player.play() } + + if (this.usingElectron && this.powerSaveBlocker !== null) { + const { powerSaveBlocker } = require('electron') + powerSaveBlocker.stop(this.powerSaveBlocker) + } }, props: { format: { @@ -172,6 +177,11 @@ export default Vue.extend({ clearTimeout(this.mouseTimeout) } } + + if (this.usingElectron && this.powerSaveBlocker !== null) { + const { powerSaveBlocker } = require('electron') + powerSaveBlocker.stop(this.powerSaveBlocker) + } }, methods: { initializePlayer: async function () { From 835903a896240941e0d15c14f126a477c090d04c Mon Sep 17 00:00:00 2001 From: Preston Date: Wed, 13 Jan 2021 17:17:48 -0500 Subject: [PATCH 67/94] Revamp About Page. Add new links and information --- package-lock.json | 15 ++++ package.json | 1 + src/renderer/main.js | 2 + src/renderer/views/About/About.css | 3 +- src/renderer/views/About/About.js | 17 +++- src/renderer/views/About/About.vue | 136 ++++++++++++++++++++--------- static/locales/en-US.yaml | 43 ++++----- static/locales/en_GB.yaml | 45 ++++------ 8 files changed, 165 insertions(+), 97 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba765f14..62ac6635 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1486,6 +1486,21 @@ "@fortawesome/fontawesome-common-types": "^0.2.32" } }, + "@fortawesome/free-brands-svg-icons": { + "version": "5.15.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.2.tgz", + "integrity": "sha512-YPlVjE1cEO+OJ9I9ay3TQ3I88+XkxMTYwnnddqAboxLhPNGncsHV0DjWOVLCyuAY66yPfyndWwVn4v7vuqsO1g==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.34" + }, + "dependencies": { + "@fortawesome/fontawesome-common-types": { + "version": "0.2.34", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.34.tgz", + "integrity": "sha512-XcIn3iYbTEzGIxD0/dY5+4f019jIcEIWBiHc3KrmK/ROahwxmZ/s+tdj97p/5K0klz4zZUiMfUlYP0ajhSJjmA==" + } + } + }, "@fortawesome/free-solid-svg-icons": { "version": "5.15.1", "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.1.tgz", diff --git a/package.json b/package.json index 946a5024..a7123baa 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@fortawesome/fontawesome-svg-core": "^1.2.32", + "@fortawesome/free-brands-svg-icons": "^5.15.2", "@fortawesome/free-solid-svg-icons": "^5.15.1", "@fortawesome/vue-fontawesome": "^2.0.2", "@silvermine/videojs-quality-selector": "^1.2.4", diff --git a/src/renderer/main.js b/src/renderer/main.js index d22bf026..185cd90f 100644 --- a/src/renderer/main.js +++ b/src/renderer/main.js @@ -6,6 +6,7 @@ import store from './store/index' // import 'material-design-icons/iconfont/material-icons.css' import { library } from '@fortawesome/fontawesome-svg-core' import { fas } from '@fortawesome/free-solid-svg-icons' +import { fab } from '@fortawesome/free-brands-svg-icons' import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' import VueI18n from 'vue-i18n' import yaml from 'js-yaml' @@ -18,6 +19,7 @@ Vue.config.performance = isDev Vue.config.productionTip = isDev library.add(fas) +library.add(fab) Vue.component('FontAwesomeIcon', FontAwesomeIcon) Vue.use(VueI18n) diff --git a/src/renderer/views/About/About.css b/src/renderer/views/About/About.css index 3aa62187..9dd5bac1 100644 --- a/src/renderer/views/About/About.css +++ b/src/renderer/views/About/About.css @@ -1,7 +1,8 @@ .card { width: 85%; margin: 0 auto; - margin-bottom: 60px; + margin-bottom: 10px; + word-wrap: break-word; } .logo { diff --git a/src/renderer/views/About/About.js b/src/renderer/views/About/About.js index 78518276..a425ff92 100644 --- a/src/renderer/views/About/About.js +++ b/src/renderer/views/About/About.js @@ -1,6 +1,7 @@ import Vue from 'vue' import FtCard from '../../components/ft-card/ft-card.vue' import FtElementList from '../../components/ft-element-list/ft-element-list.vue' +import FtButton from '../../components/ft-button/ft-button.vue' const { version } = require('../../../../package.json') @@ -8,13 +9,25 @@ export default Vue.extend({ name: 'About', components: { 'ft-card': FtCard, - 'ft-element-list': FtElementList + 'ft-element-list': FtElementList, + 'ft-button': FtButton }, data: function () { return { versionNumber: `v${version}` } }, - mounted: function () { + computed: { + usingElectron: function () { + return this.$store.getters.getUsingElectron + } + }, + methods: { + openUrl: function (url) { + if (this.usingElectron) { + const shell = require('electron').shell + shell.openExternal(url) + } + } } }) diff --git a/src/renderer/views/About/About.vue b/src/renderer/views/About/About.vue index 3b1ee272..14ce38eb 100644 --- a/src/renderer/views/About/About.vue +++ b/src/renderer/views/About/About.vue @@ -2,60 +2,114 @@

- About + {{ $t("About.About") }}

- {{ versionNumber }} Beta + {{ versionNumber }} {{ $t("About.Beta") }}

+

+ {{ $t("About.License") }}: + AGPLv3 +

+
+ +

+ {{ $t("About.Contact") }} +

  FreeTubeApp@protonmail.com

-

- This software is FOSS and released under the - GNU Affero General Public License v3.0. -

-

- Found a bug? Want to suggest a feature? Want to help out? Check out our - GitHub - page. Pull requests are welcome. -

-

- Thank you very much to the - People and Projects - that make FreeTube possible! -

-

- Want to chat? Join our - Element / Matrix Server - . Please check the - rules - before joining. -

-

- Looking for help? Check out our - Wiki - page. -

-

- Check out our - Firefox - extension! -

-

- If you enjoy using FreeTube, consider donating via - Liberapay - or through our Bitcoin address. -

-

- BTC: 1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS -

+

+ +   @FreeTube@mastodon.technology +

+

+ +   #freetube:matrix.org ({{ $t("About.Channel Rules") }}) +

+
+ +

+ {{ $t("About.Help") }} +

+ + + +
+ +

+ {{ $t("About.Useful Links") }} +

+ + + + + + +
+ +

+ {{ $t("About.Donate") }} +

+

+ +   Liberapay +

+

+ +   BTC: 1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS +

+

+ +   XMR: 48WyAPdjwc6VokeXACxSZCFeKEXBiYPV6GjfvBsfg4CrUJ95LLCQSfpM9pvNKy5GE5H4hNaw99P8RZyzmaU9kb1pD7kzhCB +

diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index a4a710b5..22dd60b3 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -282,32 +282,23 @@ Settings: About: #On About page About: About - #& About - 'This software is FOSS and released under the GNU Affero General Public License v3.0.': This - copylefted software is freely licensed AGPL-3.0. - - 'Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub page. Pull requests are welcome.': >- - Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub - page. Pull requests welcome. - - Thank you very much to the People and Projects that make FreeTube possible!: Thank - you very much to the People and Projects that make FreeTube possible! - - 'Want to chat? Join our Element / Matrix Server . Please check the rules before joining.': Want - to chat? Join our Element / Matrix Server . Please check the rules before joining. - - 'Looking for help? Check out our Wiki page.': Looking for help? Check out our Wiki - page. - - Check out our Firefox extension!: Check out our Firefox extension! - - 'If you enjoy using FreeTube, consider donating via Liberapay or through our Bitcoin address.': If - you enjoy using FreeTube, consider donating via Liberapay or through our Bitcoin - address. - - #~ 'BTC: 1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS' - - Latest FreeTube News: Latest FreeTube News + Contact: Contact + Help: Help + Useful Links: Useful Links + Donate: Donate + Beta: Beta + License: License + Email: Email + Channel Rules: Channel Rules + Report an Issue: Report an Issue + Wiki: Wiki + FAQ: FAQ + Credits: Credits + Blog: Blog + Release Notes: Release Notes + Source Code: Source Code + Website: Website + Translate via Weblate: Translate via Weblate Profile: Profile Select: Profile Select diff --git a/static/locales/en_GB.yaml b/static/locales/en_GB.yaml index 1631b101..14888422 100644 --- a/static/locales/en_GB.yaml +++ b/static/locales/en_GB.yaml @@ -282,33 +282,24 @@ Settings: the changes? About: #On About page - About: 'About' - #& About - 'This software is FOSS and released under the GNU Affero General Public License v3.0.': 'This - copylefted software is freely licenced AGPL-3.0.' - - 'Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub page. Pull requests are welcome.': >- - Found a bug? Want to suggest a feature? Want to help out? Check out our GitHub - page. Pull requests welcome. - - Thank you very much to the People and Projects that make FreeTube possible!: 'Thank - you very much to the People and Projects that make FreeTube possible!' - - 'Want to chat? Join our Element / Matrix Server . Please check the rules before joining.': 'Want - to chat? Join our Element / Matrix Server . Please check the rules before joining.' - - 'Looking for help? Check out our Wiki page.': 'Looking for help? Check out our Wiki - page.' - - Check out our Firefox extension!: 'Check out our Firefox extension!' - - 'If you enjoy using FreeTube, consider donating via Liberapay or through our Bitcoin address.': 'If - you enjoy using FreeTube, consider donating via Liberapay or through our Bitcoin - address.' - - #~ 'BTC: 1Lih7Ho5gnxb1CwPD4o59ss78pwo2T91eS' - - Latest FreeTube News: 'Latest FreeTube News' + About: About + Contact: Contact + Help: Help + Useful Links: Useful Links + Donate: Donate + Beta: Beta + License: License + Email: Email + Channel Rules: Channel Rules + Report an Issue: Report an Issue + Wiki: Wiki + FAQ: FAQ + Credits: Credits + Blog: Blog + Release Notes: Release Notes + Source Code: Source Code + Website: Website + Translate via Weblate: Translate via Weblate Profile: Profile Select: 'Profile Select' From a7b27a98d239e1f398a9dde51754e74f6c1933d5 Mon Sep 17 00:00:00 2001 From: Preston Date: Wed, 13 Jan 2021 17:24:26 -0500 Subject: [PATCH 68/94] Hide Watched formatted when on history page --- src/renderer/components/ft-list-video/ft-list-video.js | 4 ++++ src/renderer/components/ft-list-video/ft-list-video.vue | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/ft-list-video/ft-list-video.js b/src/renderer/components/ft-list-video/ft-list-video.js index 7285f57d..ecf8d5ac 100644 --- a/src/renderer/components/ft-list-video/ft-list-video.js +++ b/src/renderer/components/ft-list-video/ft-list-video.js @@ -161,6 +161,10 @@ export default Vue.extend({ }, hideVideoViews: function () { return this.$store.getters.getHideVideoViews + }, + + addWatchedStyle: function () { + return this.watched && !this.inHistory } }, mounted: function () { diff --git a/src/renderer/components/ft-list-video/ft-list-video.vue b/src/renderer/components/ft-list-video/ft-list-video.vue index 554ba1f3..abf66448 100644 --- a/src/renderer/components/ft-list-video/ft-list-video.vue +++ b/src/renderer/components/ft-list-video/ft-list-video.vue @@ -5,7 +5,7 @@ list: (listType === 'list' || forceListType === 'list') && forceListType !== 'grid', grid: (listType === 'grid' || forceListType === 'list') && forceListType !== 'list', [appearance]: true, - watched: watched + watched: addWatchedStyle }" >
{{ $t("Video.Watched") }} From 68484ac4f4c497a3b2e465e359d8ab7c3c85b743 Mon Sep 17 00:00:00 2001 From: Dragibus Noir Date: Wed, 13 Jan 2021 23:12:19 +0000 Subject: [PATCH 69/94] Translated using Weblate (French) Currently translated at 100.0% (427 of 427 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/ --- static/locales/fr-FR.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index 28137b8e..b812eb6a 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -323,6 +323,23 @@ About: Latest FreeTube News: 'Les dernières actualités FreeTube' #On Channel Page + Channel Rules: Règles de la chaîne + Website: Site internet + Source Code: Code source + Release Notes: Notes de version + Email: Courriel + License: Licence + Help: Aide + Contact: Contact + Translate via Weblate: Traduire via Weblate + Blog: Blog + Credits: Crédits + FAQ: FAQ + Wiki: Wiki + Report an Issue: Signaler un problème + Beta: Bêta + Donate: Faire un don + Useful Links: Liens utiles Channel: Subscriber: 'Abonnement' Subscribers: 'Abonnements' From 187489fe1a5bc7b5a1dc92f708ee1f9bce3e8e8b Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Wed, 13 Jan 2021 22:34:11 +0000 Subject: [PATCH 70/94] Translated using Weblate (Hebrew) Currently translated at 100.0% (427 of 427 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/he/ --- static/locales/he.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/static/locales/he.yaml b/static/locales/he.yaml index cb69c834..d8ab5b77 100644 --- a/static/locales/he.yaml +++ b/static/locales/he.yaml @@ -305,6 +305,23 @@ About: Latest FreeTube News: 'מה חדש ב-FreeTube' + Translate via Weblate: תרגום עם Weblate + Website: אתר + Source Code: קוד מקור + Release Notes: הערות מהדורה + Blog: בלוג + Credits: תודות + FAQ: שו״ת + Wiki: ויקי + Report an Issue: דיווח על תקלה + Channel Rules: כללי הערוץ + Email: דוא״ל + License: רישיון + Beta: בטא + Donate: תרומה + Useful Links: קישורים שימושיים + Help: עזרה + Contact: יצירת קשר Profile: Profile Select: 'בחירת פרופיל' All Channels: 'כל הערוצים' From 90c9e601b86c88997cb09a4f7c9553802c4a34e9 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Thu, 14 Jan 2021 02:37:51 +0000 Subject: [PATCH 71/94] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (427 of 427 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/ --- static/locales/zh-TW.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/static/locales/zh-TW.yaml b/static/locales/zh-TW.yaml index b171c3cf..661770b9 100644 --- a/static/locales/zh-TW.yaml +++ b/static/locales/zh-TW.yaml @@ -285,6 +285,23 @@ About: Latest FreeTube News: '最新FreeTube新聞' #On Channel Page + Translate via Weblate: 透過 Weblate 翻譯 + Website: 網站 + Source Code: 原始碼 + Release Notes: 版本註記 + Blog: 部落格 + Credits: 貢獻者 + FAQ: FAQ + Wiki: Wiki + Report an Issue: 回報問題 + Channel Rules: 頻道規則 + Email: 電子郵件 + License: 授權條款 + Beta: 測試版 + Donate: 捐款 + Useful Links: 有用連結 + Help: 說明 + Contact: 聯絡 Channel: Subscriber: '訂閱者' Subscribers: '訂閱者' From 8405ef4d1f3003e3c0ff337638358cc5f71e9db9 Mon Sep 17 00:00:00 2001 From: Dragibus Noir Date: Thu, 14 Jan 2021 01:44:20 +0000 Subject: [PATCH 72/94] Translated using Weblate (French) Currently translated at 100.0% (427 of 427 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/ --- static/locales/fr-FR.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/locales/fr-FR.yaml b/static/locales/fr-FR.yaml index b812eb6a..d52c71b2 100644 --- a/static/locales/fr-FR.yaml +++ b/static/locales/fr-FR.yaml @@ -323,14 +323,14 @@ About: Latest FreeTube News: 'Les dernières actualités FreeTube' #On Channel Page - Channel Rules: Règles de la chaîne + Channel Rules: Règles du salon Website: Site internet Source Code: Code source Release Notes: Notes de version Email: Courriel License: Licence Help: Aide - Contact: Contact + Contact: Contacts Translate via Weblate: Traduire via Weblate Blog: Blog Credits: Crédits From 08a926c8679398f972c9a4e980687b4516eb47d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Thu, 14 Jan 2021 04:46:56 +0000 Subject: [PATCH 73/94] Translated using Weblate (Turkish) Currently translated at 100.0% (427 of 427 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/ --- static/locales/tr.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/static/locales/tr.yaml b/static/locales/tr.yaml index 9729cebf..12a6f6a7 100644 --- a/static/locales/tr.yaml +++ b/static/locales/tr.yaml @@ -311,6 +311,23 @@ About: Latest FreeTube News: 'En Yeni FreeTube Haberleri' + Translate via Weblate: Weblate'de Çevir + Website: Web Sitesi + Source Code: Kaynak Kodları + Release Notes: Sürüm Notları + Blog: Blog + Credits: Katkıda Bulunanlar + FAQ: SSS + Wiki: Wiki + Report an Issue: Sorun Bildir + Channel Rules: Kanal Kuralları + Email: E-posta + License: Lisans + Beta: Beta + Donate: Bağış Yap + Useful Links: Faydalı Bağlantılar + Help: Yardım + Contact: İletişim Profile: Profile Select: 'Profil Seçimi' All Channels: 'Tüm Kanallar' From f13f6a96ea5123743ab76f2c57938cd56f4d2320 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Thu, 14 Jan 2021 16:01:13 +0000 Subject: [PATCH 74/94] Translated using Weblate (German) Currently translated at 100.0% (427 of 427 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/ --- static/locales/de-DE.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index e945b85c..95639468 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -321,6 +321,23 @@ About: #On Channel Page This software is FOSS and released under the GNU Affero General Public License v3.0.: Diese freie Software ist unter der AGPL-3.0 lizenziert. + Translate via Weblate: Auf Weblate übersetzen + Website: Webseite + Source Code: Quellcode + Release Notes: Versionshinweise + Blog: Blog + Credits: Beiträge + FAQ: Häufig gestellte Fragen + Wiki: Wiki + Report an Issue: Fehler melden + Channel Rules: Kanalregeln + Email: Email + License: Lizenz + Beta: Beta + Donate: Spenden + Useful Links: Nützliche Links + Help: Hilfe + Contact: Kontakt Channel: Subscriber: Abonnement Subscribers: Abonnements From 34a9b9bd09c1a4d8f211e2a3735cc9d8419cd38a Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Thu, 14 Jan 2021 15:58:25 +0000 Subject: [PATCH 75/94] Translated using Weblate (Croatian) Currently translated at 100.0% (427 of 427 strings) Translation: FreeTube/Translations Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hr/ --- static/locales/hr.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/static/locales/hr.yaml b/static/locales/hr.yaml index 7bb99e09..4d99dbaf 100644 --- a/static/locales/hr.yaml +++ b/static/locales/hr.yaml @@ -311,6 +311,23 @@ About: Latest FreeTube News: 'Najnovije vijesti o programu FreeTube' + Translate via Weblate: Prevedi putem Weblatea + Website: Web-stranica + Source Code: Izvorni kod + Release Notes: Napomene uz izdanje + Blog: Blog + Credits: Zasluge + FAQ: Često postavljena pitanja + Wiki: Wiki + Report an Issue: Prijavi problem + Channel Rules: Pravila kanala + Email: E-adresa + License: Licenca + Beta: Beta + Donate: Doniraj + Useful Links: Korisne poveznice + Help: Pomoć + Contact: Kontakt Profile: All Channels: 'Svi kanali' Profile Manager: 'Upravljač profila' From 6d7d874bc02bc25073df7d0d6652447a719b8efb Mon Sep 17 00:00:00 2001 From: Preston Date: Thu, 14 Jan 2021 13:51:33 -0500 Subject: [PATCH 76/94] Add Proxy configuration to settings. Fix ft-video-list height when using list display --- src/main/index.js | 107 +++++++++++- .../components/data-settings/data-settings.js | 6 + .../data-settings/data-settings.vue | 16 ++ .../proxy-settings/proxy-settings.css | 25 +++ .../proxy-settings/proxy-settings.js | 155 ++++++++++++++++++ .../proxy-settings/proxy-settings.vue | 78 +++++++++ .../subscription-settings.js | 2 +- src/renderer/sass-partials/_ft-list-item.sass | 2 + src/renderer/store/modules/settings.js | 77 ++++++++- src/renderer/views/Settings/Settings.js | 4 +- src/renderer/views/Settings/Settings.vue | 1 + static/locales/en-US.yaml | 42 ++--- 12 files changed, 470 insertions(+), 45 deletions(-) create mode 100644 src/renderer/components/proxy-settings/proxy-settings.css create mode 100644 src/renderer/components/proxy-settings/proxy-settings.js create mode 100644 src/renderer/components/proxy-settings/proxy-settings.vue diff --git a/src/main/index.js b/src/main/index.js index 92e3ec9d..c97b3b4c 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -65,21 +65,57 @@ if (!isDev) { }) app.on('ready', (event, commandLine, workingDirectory) => { - settingsDb.findOne({ - _id: 'disableSmoothScrolling' + settingsDb.find({ + $or: [ + { _id: 'disableSmoothScrolling' }, + { _id: 'useProxy' }, + { _id: 'proxyProtocol' }, + { _id: 'proxyHostname' }, + { _id: 'proxyPort' } + ] }, function (err, doc) { if (err) { app.exit(0) return } - if (doc !== null && doc.value) { + let disableSmoothScrolling = false + let useProxy = false + let proxyProtocol = 'socks5' + let proxyHostname = '127.0.0.1' + let proxyPort = '9050' + + if (typeof doc === 'object' && doc.length > 0) { + doc.forEach((dbItem) => { + switch (dbItem._id) { + case 'disableSmoothScrolling': + disableSmoothScrolling = dbItem.value + break + case 'useProxy': + useProxy = dbItem.value + break + case 'proxyProtocol': + proxyProtocol = dbItem.value + break + case 'proxyHostname': + proxyHostname = dbItem.value + break + case 'proxyPort': + proxyPort = dbItem.value + break + } + }) + } + + if (disableSmoothScrolling) { app.commandLine.appendSwitch('disable-smooth-scrolling') } else { app.commandLine.appendSwitch('enable-smooth-scrolling') } - createWindow() + const proxyUrl = `${proxyProtocol}://${proxyHostname}:${proxyPort}` + + createWindow(useProxy, proxyUrl) if (isDev) { installDevTools() @@ -99,21 +135,57 @@ if (!isDev) { }) app.on('ready', () => { - settingsDb.findOne({ - _id: 'disableSmoothScrolling' + settingsDb.find({ + $or: [ + { _id: 'disableSmoothScrolling' }, + { _id: 'useProxy' }, + { _id: 'proxyProtocol' }, + { _id: 'proxyHostname' }, + { _id: 'proxyPort' } + ] }, function (err, doc) { if (err) { app.exit(0) return } - if (doc !== null && doc.value) { + let disableSmoothScrolling = false + let useProxy = false + let proxyProtocol = 'socks5' + let proxyHostname = '127.0.0.1' + let proxyPort = '9050' + + if (typeof doc === 'object' && doc.length > 0) { + doc.forEach((dbItem) => { + switch (dbItem._id) { + case 'disableSmoothScrolling': + disableSmoothScrolling = dbItem.value + break + case 'useProxy': + useProxy = dbItem.value + break + case 'proxyProtocol': + proxyProtocol = dbItem.value + break + case 'proxyHostname': + proxyHostname = dbItem.value + break + case 'proxyPort': + proxyPort = dbItem.value + break + } + }) + } + + if (disableSmoothScrolling) { app.commandLine.appendSwitch('disable-smooth-scrolling') } else { app.commandLine.appendSwitch('enable-smooth-scrolling') } - createWindow() + const proxyUrl = `${proxyProtocol}://${proxyHostname}:${proxyPort}` + + createWindow(useProxy, proxyUrl) if (isDev) { installDevTools() @@ -137,7 +209,7 @@ async function installDevTools () { } } -function createWindow () { +function createWindow (useProxy = false, proxyUrl = '') { /** * Initial window options */ @@ -164,6 +236,12 @@ function createWindow () { height: 800 }) + if (useProxy) { + mainWindow.webContents.session.setProxy({ + proxyRules: proxyUrl + }) + } + settingsDb.findOne({ _id: 'bounds' }, function (err, doc) { @@ -264,6 +342,17 @@ function createWindow () { mainWindow.close() createWindow() }) + + ipcMain.on('enableProxy', (event, url) => { + console.log(url) + mainWindow.webContents.session.setProxy({ + proxyRules: url + }) + }) + + ipcMain.on('disableProxy', () => { + mainWindow.webContents.session.setProxy({}) + }) } app.on('window-all-closed', () => { diff --git a/src/renderer/components/data-settings/data-settings.js b/src/renderer/components/data-settings/data-settings.js index 020fc6e4..975543a3 100644 --- a/src/renderer/components/data-settings/data-settings.js +++ b/src/renderer/components/data-settings/data-settings.js @@ -78,6 +78,12 @@ export default Vue.extend({ } }, methods: { + openProfileSettings: function () { + this.$router.push({ + path: '/settings/profile/' + }) + }, + importSubscriptions: function (option) { this.showImportSubscriptionsPrompt = false diff --git a/src/renderer/components/data-settings/data-settings.vue b/src/renderer/components/data-settings/data-settings.vue index b0096c01..93bb8dc3 100644 --- a/src/renderer/components/data-settings/data-settings.vue +++ b/src/renderer/components/data-settings/data-settings.vue @@ -27,6 +27,22 @@ @click="exportHistory" /> + + +

+ {{ $t("Settings.Data Settings.How do I import my subscriptions?") }} +

+
+
+ + + { + console.log(response) + this.proxyIp = response.ip + this.proxyCountry = response.country_name + this.proxyRegion = response.region_name + this.proxyCity = response.city + this.dataAvailable = true + }).fail((xhr, textStatus, error) => { + console.log(xhr) + console.log(textStatus) + console.log(error) + this.showToast({ + message: this.$t('Settings.Proxy Settings["Error getting network information. Is your proxy configured properly?"]') + }) + this.dataAvailable = false + }).always(() => { + if (!this.useProxy) { + this.disableProxy() + } + this.isLoading = false + }) + }, + + ...mapActions([ + 'showToast', + 'updateUseProxy', + 'updateProxyProtocol', + 'updateProxyHostname', + 'updateProxyPort' + ]) + } +}) diff --git a/src/renderer/components/proxy-settings/proxy-settings.vue b/src/renderer/components/proxy-settings/proxy-settings.vue new file mode 100644 index 00000000..34c2194b --- /dev/null +++ b/src/renderer/components/proxy-settings/proxy-settings.vue @@ -0,0 +1,78 @@ + + +