diff --git a/package.json b/package.json
index b8e0a7294bddb..e0fe5fb099682 100644
--- a/package.json
+++ b/package.json
@@ -62,7 +62,7 @@
"autolinker": "^4.0.0",
"electron-context-menu": "^3.6.1",
"lodash.debounce": "^4.0.8",
- "marked": "^11.1.1",
+ "marked": "^11.2.0",
"path-browserify": "^1.0.1",
"process": "^0.11.10",
"swiper": "^11.0.5",
@@ -80,54 +80,54 @@
"youtubei.js": "^8.2.0"
},
"devDependencies": {
- "@babel/core": "^7.23.7",
- "@babel/eslint-parser": "^7.23.3",
+ "@babel/core": "^7.23.9",
+ "@babel/eslint-parser": "^7.23.9",
"@babel/plugin-proposal-class-properties": "^7.18.6",
- "@babel/preset-env": "^7.23.8",
+ "@babel/preset-env": "^7.23.9",
"@double-great/stylelint-a11y": "^3.0.0",
"babel-loader": "^9.1.3",
- "copy-webpack-plugin": "^12.0.1",
- "css-loader": "^6.9.0",
- "css-minimizer-webpack-plugin": "^5.0.1",
- "electron": "^28.1.3",
+ "copy-webpack-plugin": "^12.0.2",
+ "css-loader": "^6.9.1",
+ "css-minimizer-webpack-plugin": "^6.0.0",
+ "electron": "^28.2.0",
"electron-builder": "^24.9.1",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.29.1",
- "eslint-plugin-jsonc": "^2.11.2",
+ "eslint-plugin-jsonc": "^2.13.0",
"eslint-plugin-n": "^16.6.2",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-unicorn": "^50.0.1",
"eslint-plugin-vue": "^9.20.1",
- "eslint-plugin-vuejs-accessibility": "^2.2.0",
- "eslint-plugin-yml": "^1.11.0",
+ "eslint-plugin-vuejs-accessibility": "^2.2.1",
+ "eslint-plugin-yml": "^1.12.2",
"html-webpack-plugin": "^5.6.0",
"js-yaml": "^4.1.0",
- "json-minimizer-webpack-plugin": "^4.0.0",
- "lefthook": "^1.5.6",
+ "json-minimizer-webpack-plugin": "^5.0.0",
+ "lefthook": "^1.6.1",
"mini-css-extract-plugin": "^2.7.7",
"npm-run-all": "^4.1.5",
"postcss": "^8.4.33",
"postcss-scss": "^4.0.9",
"prettier": "^2.8.8",
"rimraf": "^5.0.5",
- "sass": "^1.69.7",
- "sass-loader": "^13.3.3",
- "stylelint": "^16.1.0",
+ "sass": "^1.70.0",
+ "sass-loader": "^14.0.0",
+ "stylelint": "^16.2.0",
"stylelint-config-sass-guidelines": "^11.0.0",
"stylelint-config-standard": "^36.0.0",
"stylelint-high-performance-animation": "^1.10.0",
"stylelint-use-logical-spec": "^5.0.1",
"tree-kill": "1.2.2",
"vue-devtools": "^5.1.4",
- "vue-eslint-parser": "^9.3.2",
+ "vue-eslint-parser": "^9.4.2",
"vue-loader": "^15.10.0",
- "webpack": "^5.89.0",
+ "webpack": "^5.90.0",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1",
- "webpack-watch-external-files-plugin": "^2.0.0",
+ "webpack-watch-external-files-plugin": "^3.0.0",
"yaml-eslint-parser": "^1.2.2"
}
}
diff --git a/src/main/index.js b/src/main/index.js
index 898f53258916f..23b561cee10b4 100644
--- a/src/main/index.js
+++ b/src/main/index.js
@@ -720,7 +720,8 @@ function runApp() {
})
ipcMain.handle(IpcChannels.GET_SYSTEM_LOCALE, () => {
- return app.getLocale()
+ // we should switch to getPreferredSystemLanguages at some point and iterate through until we find a supported locale
+ return app.getSystemLocale()
})
ipcMain.handle(IpcChannels.GET_USER_DATA_PATH, () => {
diff --git a/src/renderer/components/distraction-settings/distraction-settings.js b/src/renderer/components/distraction-settings/distraction-settings.js
index c704206642e4f..a540b94bde48b 100644
--- a/src/renderer/components/distraction-settings/distraction-settings.js
+++ b/src/renderer/components/distraction-settings/distraction-settings.js
@@ -120,13 +120,16 @@ export default defineComponent({
return ch
})
},
+ forbiddenTitles: function() {
+ return JSON.parse(this.$store.getters.getForbiddenTitles)
+ },
hideSubscriptionsLiveTooltip: function () {
return this.$t('Tooltips.Distraction Free Settings.Hide Subscriptions Live', {
appWideSetting: this.$t('Settings.Distraction Free Settings.Hide Live Streams'),
subsection: this.$t('Settings.Distraction Free Settings.Sections.General'),
settingsSection: this.$t('Settings.Distraction Free Settings.Distraction Free Settings')
})
- }
+ },
},
mounted: function () {
this.verifyChannelsHidden()
@@ -148,6 +151,9 @@ export default defineComponent({
handleChannelsHidden: function (value) {
this.updateChannelsHidden(JSON.stringify(value))
},
+ handleForbiddenTitles: function (value) {
+ this.updateForbiddenTitles(JSON.stringify(value))
+ },
handleChannelsExists: function () {
showToast(this.$t('Settings.Distraction Free Settings.Hide Channels Already Exists'))
},
@@ -206,6 +212,7 @@ export default defineComponent({
'updateHideSharingActions',
'updateHideChapters',
'updateChannelsHidden',
+ 'updateForbiddenTitles',
'updateShowDistractionFreeTitles',
'updateHideFeaturedChannels',
'updateHideChannelShorts',
diff --git a/src/renderer/components/distraction-settings/distraction-settings.vue b/src/renderer/components/distraction-settings/distraction-settings.vue
index eed6640160ff6..6420d447c8916 100644
--- a/src/renderer/components/distraction-settings/distraction-settings.vue
+++ b/src/renderer/components/distraction-settings/distraction-settings.vue
@@ -239,12 +239,24 @@
:tooltip="$t('Tooltips.Distraction Free Settings.Hide Channels')"
:validate-tag-name="validateChannelId"
:find-tag-info="findChannelTagInfo"
+ :are-channel-tags="true"
@invalid-name="handleInvalidChannel"
@error-find-tag-info="handleChannelAPIError"
@change="handleChannelsHidden"
@already-exists="handleChannelsExists"
/>
+
+ {{ '[' + $t('Channel.Community.Video hidden by FreeTube') + ']' }} +
+
{ this.toggleCopyVideosPrompt(true) }) diff --git a/src/renderer/components/playlist-info/playlist-info.vue b/src/renderer/components/playlist-info/playlist-info.vue index b064a1837be5b..d5af7424e0b15 100644 --- a/src/renderer/components/playlist-info/playlist-info.vue +++ b/src/renderer/components/playlist-info/playlist-info.vue @@ -47,9 +47,9 @@ {{ title }}
- {{ videoCount }} {{ $t("Playlist.Videos") }}
-
- - {{ viewCount }} {{ $t("Playlist.Views") }}
+ {{ $tc('Global.Counts.Video Count', videoCount, {count: parsedVideoCount}) }}
+
+ - {{ $tc('Global.Counts.View Count', viewCount, {count: parsedViewCount}) }}
-
@@ -79,7 +79,7 @@
class="channelShareWrapper"
>
- {{ index + 1 }}
-