Compare commits

...
538 Commits
Author SHA1 Message Date
Emma Manteater 27fc24f486 Change step name
Release Cordova / release (push) Canceled after 0s
Conflicts / Check for conflicts (push) Canceled after 0s
2026-07-28 16:23:26 -04:00
Emma Manteater a58732d090 Maybe this will work? 2026-07-28 16:21:21 -04:00
Emma Manteater 8bcb577923 try again 2026-07-28 16:15:50 -04:00
Emma Manteater ac04505f04 keep going 2026-07-28 16:13:47 -04:00
Emma Manteater 8a8830d7ad let's see what this value actually is 2026-07-28 16:10:38 -04:00
Emma Manteater 878ed62cfa Skip linting 2026-07-28 16:00:43 -04:00
Emma Manteater 952d8ec022 Update node version 2026-07-28 15:59:17 -04:00
Emma Manteater 5ba39d895b release 0.25.1 (dry run) 2026-07-28 15:55:08 -04:00
Emma Manteater cbf578695e Merge commit 'd429de4feb35a177597f409c2c8d8ccd6037313e' into release 2026-07-28 15:12:09 -04:00
Emma Manteater a857c45638 Merge commit '192d74a62cbddcbddc08510223be2791c5718dcd' into release 2026-07-28 15:11:54 -04:00
Emma Manteater 192d74a62c Merge commit '0153678f738443261a733221606bae212bfc9194' into development 2026-07-28 15:01:34 -04:00
Emma Manteater 7321cd5f60 Fix package id 2026-07-28 14:44:24 -04:00
Emma Manteater 621e4e2999 Merge commit '12f6a5bac3128865684f20f4acade59a5de28e5f' into development 2026-07-28 14:39:00 -04:00
Emma Manteater 05a47842be Replace run-s with pnpm functionality in this repos scripts 2026-07-28 14:14:38 -04:00
Emma Manteater c999aef43d Remove link to outdated docker hub release 2026-07-28 14:08:53 -04:00
Emma Manteater 7c500a127d Update pnpm lock 2026-07-28 14:06:57 -04:00
Emma Manteater 98baead24a Add back run-s 2026-07-28 13:55:36 -04:00
Emma Manteater 652ee3c3e5 Update dockerfile to deal with pnpm 2026-07-28 13:50:41 -04:00
Emma Manteater f44f019b38 Remove reference to core-js 2026-07-28 13:46:51 -04:00
Emma Manteater 739d93b27d Merge commit '06e2ed287221c0cb8683e77268b12426db616957' into development 2026-07-28 13:42:42 -04:00
efb4f5ff-1298-471a-8973-3d47447115dc d429de4feb Merge branch 'master' of https://github.com/FreeTubeApp/FreeTube 2026-07-21 00:22:19 +02:00
efb4f5ff-1298-471a-8973-3d47447115dc c031d977e8 Bump package version from 0.25.0 to 0.25.1 2026-07-21 00:22:04 +02:00
absidueandefb4f5ff-1298-471a-8973-3d47447115dc 94450676b6 Explicitly configure ad-hoc codesigning after electron-builder changes (#9444) 2026-07-21 00:22:04 +02:00
efb4f5ff-1298-471a-8973-3d47447115dc 07e5a1a272 Bump package version from 0.25.0 to 0.25.1 2026-07-21 00:20:07 +02:00
efb4f5ff-1298-471a-8973-3d47447115dc 11a1580741 Merge pull request #9460 from absidue/electron-builder-update
Update electron-builder to fix Windows installers
2026-07-21 00:19:44 +02:00
efb4f5ff-1298-471a-8973-3d47447115dcandGitHub 0153678f73 Merge pull request #9385 from efb4f5ff-1298-471a-8973-3d47447115dc/minor-release-v0.25.0
Minor release - v0.25.0
2026-07-17 06:34:49 +02:00
efb4f5ff-1298-471a-8973-3d47447115dc 5aa8f858b7 Merge branch 'development' into minor-release-v0.25.0 2026-07-16 15:01:40 +02:00
PikachuEXEandGitHub a40990ce63 Implement always on default viewing mode (#9341)
* * Implement always on default viewing mode

* * Update tooltip text

* * Update tooltip text
2026-07-16 12:59:29 +00:00
efb4f5ff-1298-471a-8973-3d47447115dcandGitHub 7356a7021f Bump package version from 0.24.1 to 0.25.0 (#9384) 2026-07-16 12:56:43 +00:00
efb4f5ff-1298-471a-8973-3d47447115dc 158e8d910d Merge branch 'development' into minor-release-v0.25.0 2026-07-15 23:57:07 +02:00
ShadorcandGitHub 0bad7e13a5 Fix: Screenshot in 'Save to Folder' mode isn't working (#9420)
* Fix screenshot 'Save to Folder' failing in some scenarios

* Fix
2026-07-15 18:41:02 +02:00
FjuroandHosted Weblate 492dad8ede Translated using Weblate (Czech)
Currently translated at 100.0% (983 of 983 strings)

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/
Translation: FreeTube/Translations
2026-07-14 22:01:40 +00:00
Priit JõerüütandHosted Weblate 67bd5877b8 Translated using Weblate (Estonian)
Currently translated at 100.0% (983 of 983 strings)

Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/
Translation: FreeTube/Translations
2026-07-14 22:01:33 +00:00
Ghost of SpartaandHosted Weblate 887b43850a Translated using Weblate (Hungarian)
Currently translated at 100.0% (983 of 983 strings)

Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
Translation: FreeTube/Translations
2026-07-14 20:01:28 +00:00
Mickaël BinosandHosted Weblate 70383602a6 Translated using Weblate (French)
Currently translated at 100.0% (983 of 983 strings)

Co-authored-by: Mickaël Binos <mickaelbinos@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2026-07-14 20:01:27 +00:00
Markus GauggandHosted Weblate 94986c2e9c Translated using Weblate (German)
Currently translated at 100.0% (983 of 983 strings)

Co-authored-by: Markus Gaugg <gaugg@gmx.at>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
Translation: FreeTube/Translations
2026-07-14 20:01:26 +00:00
Mona LisaandHosted Weblate 16d43190c3 Translated using Weblate (Swedish)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-07-14 16:01:30 +00:00
PikachuEXEandGitHub 6b20d9fb6b * Use batched fetching instead of forcing RSS with sub count > 125 (#9379) 2026-07-14 05:39:22 -04:00
PikachuEXEandGitHub 4cbdc5a004 ! Fix dev restart not killing old process in macOS (#9380) 2026-07-14 05:37:50 -04:00
absidueandGitHub 869223ef85 Migrate the FtListVideo component to the composition API (#9413) 2026-07-13 20:20:51 -04:00
efb4f5ff-1298-471a-8973-3d47447115dc 7f8f51eccf Merge branch 'development' into minor-release-v0.25.0 2026-07-13 13:13:54 +02:00
ShadorcandGitHub 65889fa2da Add import/export settings buttons (#9123)
* Add import/export settings buttons

* Add exported settings exclusion list

* Add documentation

* Add tooltip to the data settings header

* Consider settingsPassword to be exportable, could be discussed

* Take into account settings that need restart

* Simplify const access across store and vue script

* Add documentation

* Improve tooltip text

* Fix tooltip on mobile screen

* Add more items to settingsNotExportable set

* Add backendPreference key to settingsNotExportable set because it is dependent of process.env

* Set 'showRestartPrompt.value' once after for loop

* Replace 'exportable' occurences by 'transferrable'

* Add more settings to 'settingsNotTransferrable' array

* Remove pending restart and update 'settingsNotTransferrable'

* Fix typo

* Differentiate between non-transferable and unknown settings

* Fix localization key

* Use same format as db file for import/export

* Apply code suggestions

* Apply code suggestions
2026-07-12 07:44:06 +08:00
ShadorcandGitHub 73ec29f7ef Fix: Local Playlist doesn't show upcoming premieres if 'hide upcoming premieres' is enabled (#9320)
* Fix: Local Playlist doesn't show upcoming premieres if 'hide upcoming premieres' is enabled

* Apply code style suggestion
2026-07-11 17:21:08 +02:00
r3dArchandGitHub e6f3012fc0 Add play all button (#9340)
* Added play all button to channel tabs

* Add margin for consistent spacing of button

* change play all to view all
2026-07-11 17:19:13 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ca96334c29 Bump swiper from 14.0.1 to 14.0.5 (#9401)
Bumps [swiper](https://github.com/nolimits4web/Swiper) from 14.0.1 to 14.0.5.
- [Release notes](https://github.com/nolimits4web/Swiper/releases)
- [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nolimits4web/Swiper/compare/v14.0.1...v14.0.5)

---
updated-dependencies:
- dependency-name: swiper
  dependency-version: 14.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-11 08:40:33 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d6f449ca94 Bump terser from 5.48.0 to 5.49.0 (#9406)
Bumps [terser](https://github.com/terser/terser) from 5.48.0 to 5.49.0.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.48.0...v5.49.0)

---
updated-dependencies:
- dependency-name: terser
  dependency-version: 5.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 23:38:52 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
bcc82d12f0 Bump lefthook from 2.1.9 to 2.1.10 (#9405)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 2.1.9 to 2.1.10.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v2.1.9...v2.1.10)

---
updated-dependencies:
- dependency-name: lefthook
  dependency-version: 2.1.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 23:32:50 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
874c94eae0 Bump marked from 18.0.5 to 18.0.6 (#9402)
Bumps [marked](https://github.com/markedjs/marked) from 18.0.5 to 18.0.6.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v18.0.5...v18.0.6)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 18.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 23:31:09 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2ae6645acc Bump @fortawesome/vue-fontawesome in the fortawesome group (#9400)
Bumps the fortawesome group with 1 update: [@fortawesome/vue-fontawesome](https://github.com/FortAwesome/vue-fontawesome).


Updates `@fortawesome/vue-fontawesome` from 3.3.0 to 3.3.1
- [Release notes](https://github.com/FortAwesome/vue-fontawesome/releases)
- [Changelog](https://github.com/FortAwesome/vue-fontawesome/blob/3.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/vue-fontawesome/compare/3.3.0...3.3.1)

---
updated-dependencies:
- dependency-name: "@fortawesome/vue-fontawesome"
  dependency-version: 3.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fortawesome
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 23:29:55 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ee0365d65f Bump the eslint group with 4 updates (#9399)
Bumps the eslint group with 4 updates: [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc), [eslint-plugin-jsonc](https://github.com/ota-meshi/eslint-plugin-jsonc), [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) and [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml).


Updates `eslint-plugin-jsdoc` from 63.0.12 to 63.0.13
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v63.0.12...v63.0.13)

Updates `eslint-plugin-jsonc` from 3.2.0 to 3.3.0
- [Release notes](https://github.com/ota-meshi/eslint-plugin-jsonc/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-jsonc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-jsonc/compare/v3.2.0...v3.3.0)

Updates `eslint-plugin-unicorn` from 71.0.0 to 71.1.0
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v71.0.0...v71.1.0)

Updates `eslint-plugin-yml` from 3.5.0 to 3.6.0
- [Release notes](https://github.com/ota-meshi/eslint-plugin-yml/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-yml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-yml/compare/v3.5.0...v3.6.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 63.0.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint-plugin-jsonc
  dependency-version: 3.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-unicorn
  dependency-version: 71.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-yml
  dependency-version: 3.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 23:29:16 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
13b35ad2e3 Bump actions/labeler from 6.1.0 to 6.2.0 (#9398)
Bumps [actions/labeler](https://github.com/actions/labeler) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/f27b608878404679385c85cfa523b85ccb86e213...b8dd2d9be0f68b860e7dae5dae7d772984eacd6d)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 23:25:59 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9e88553a97 Bump actions/stale from 10.3.0 to 10.4.0 (#9397)
---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: 10.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 23:25:41 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ba5ad454a4 Bump the github-codeql-action group with 2 updates (#9396)
Bumps the github-codeql-action group with 2 updates: [github/codeql-action/init](https://github.com/github/codeql-action) and [github/codeql-action/analyze](https://github.com/github/codeql-action).


Updates `github/codeql-action/init` from 4.36.3 to 4.37.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/54f647b7e1bb85c95cddabcd46b0c578ec92bc1a...99df26d4f13ea111d4ec1a7dddef6063f76b97e9)

Updates `github/codeql-action/analyze` from 4.36.3 to 4.37.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/54f647b7e1bb85c95cddabcd46b0c578ec92bc1a...99df26d4f13ea111d4ec1a7dddef6063f76b97e9)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-codeql-action
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-codeql-action
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 23:25:18 +02:00
Sveinn í FelliandHosted Weblate 70a36468b4 Translated using Weblate (Icelandic)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/is/
Translation: FreeTube/Translations
2026-07-10 13:01:24 +00:00
Rhoslyn PrysandHosted Weblate ba1eb30c23 Translated using Weblate (Welsh)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Rhoslyn Prys <rprys@posteo.net>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cy/
Translation: FreeTube/Translations
2026-07-09 18:01:28 +02:00
efb4f5ff-1298-471a-8973-3d47447115dc 7c79d64be1 Merge branch 'development' into minor-release-v0.25.0 2026-07-09 15:17:29 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>absiduePikachuEXE
4082b7aa32 Bump the webpack group across 1 directory with 3 updates (#9378)
* Bump the webpack group across 1 directory with 3 updates

Bumps the webpack group with 3 updates in the / directory: [webpack](https://github.com/webpack/webpack), [webpack-cli](https://github.com/webpack/webpack-cli) and [webpack-dev-server](https://github.com/webpack/webpack-dev-server).


Updates `webpack` from 5.108.3 to 5.108.4
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.108.3...v5.108.4)

Updates `webpack-cli` from 7.1.0 to 7.2.1
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@7.1.0...webpack-cli@7.2.1)

Updates `webpack-dev-server` from 5.2.5 to 6.0.0
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.5...v6.0.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.108.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: webpack
- dependency-name: webpack-cli
  dependency-version: 7.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: webpack
- dependency-name: webpack-dev-server
  dependency-version: 6.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update dev-runner script to support webpack-dev-server v6

* ! Fix dev won't start on macOS

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Co-authored-by: PikachuEXE <git@pikachuexe.net>
2026-07-08 15:29:48 +08:00
HypériōnandHosted Weblate f25ddd664b Translated using Weblate (French)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Hypériōn <hyperion@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2026-07-07 22:01:22 +02:00
efb4f5ff-1298-471a-8973-3d47447115dc e0239ea6db Merge branch 'development' into minor-release-v0.25.0 2026-07-07 15:57:11 +02:00
Hosted Weblate 02cf8fbdfc Merge branch 'origin/development' into Weblate. 2026-07-07 11:02:26 +00:00
Champiñon TraductorandHosted Weblate 9a62cff9a9 Translated using Weblate (Spanish)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Champiñon Traductor <300458929+champinondev-lab@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/
Translation: FreeTube/Translations
2026-07-07 13:01:52 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
116b8580fe Bump the github-codeql-action group with 2 updates (#9376)
Bumps the github-codeql-action group with 2 updates: [github/codeql-action/init](https://github.com/github/codeql-action) and [github/codeql-action/analyze](https://github.com/github/codeql-action).


Updates `github/codeql-action/init` from 4.36.2 to 4.36.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/8aad20d150bbac5944a9f9d289da16a4b0d87c1e...54f647b7e1bb85c95cddabcd46b0c578ec92bc1a)

Updates `github/codeql-action/analyze` from 4.36.2 to 4.36.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/8aad20d150bbac5944a9f9d289da16a4b0d87c1e...54f647b7e1bb85c95cddabcd46b0c578ec92bc1a)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-codeql-action
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-codeql-action
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-06 17:08:23 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
880af713c3 Bump the eslint group with 2 updates (#9377)
Bumps the eslint group with 2 updates: [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) and [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn).


Updates `eslint-plugin-jsdoc` from 63.0.10 to 63.0.12
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v63.0.10...v63.0.12)

Updates `eslint-plugin-unicorn` from 70.0.0 to 71.0.0
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v70.0.0...v71.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 63.0.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint-plugin-unicorn
  dependency-version: 71.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-06 17:07:40 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>absidue
aad99b5491 Bump swiper from 12.2.0 to 14.0.1 (#9349)
* Bump swiper from 12.2.0 to 14.0.1

Bumps [swiper](https://github.com/nolimits4web/Swiper) from 12.2.0 to 14.0.1.
- [Release notes](https://github.com/nolimits4web/Swiper/releases)
- [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nolimits4web/Swiper/compare/v12.2.0...v14.0.1)

---
updated-dependencies:
- dependency-name: swiper
  dependency-version: 14.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix swiper init

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2026-07-06 11:04:37 +08:00
absidueandGitHub 2e69bf8a26 Add dependabot groups for actions/cache and github/codeql-action (#9373) 2026-07-05 22:35:43 -04:00
absidueandGitHub 527240fef8 Handle compact published dates e.g. 1w ago in LockupViews (#9374)
* Handle compact published dates e.g. 1w ago in LockupViews

* Simplify LockupView view count handling and support billions
2026-07-05 22:35:11 -04:00
absidueandGitHub 8bf990dd91 Migrate to the vue-i18n composition API (#9375) 2026-07-05 22:33:50 -04:00
efb4f5ff-1298-471a-8973-3d47447115dcandGitHub 15ecc89ff5 Bump electron from 42.4.1 to 42.5.2 (#9362) 2026-07-03 19:25:00 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0c84eb1804 Bump eslint-plugin-unicorn from 69.0.0 to 70.0.0 in the eslint group (#9367)
Bumps the eslint group with 1 update: [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn).


Updates `eslint-plugin-unicorn` from 69.0.0 to 70.0.0
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v69.0.0...v70.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-unicorn
  dependency-version: 70.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 19:24:27 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5b3906ee46 Bump actions/cache/restore from 6.0.0 to 6.1.0 (#9366)
Bumps [actions/cache/restore](https://github.com/actions/cache) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/2c8a9bd7457de244a408f35966fab2fb45fda9c8...55cc8345863c7cc4c66a329aec7e433d2d1c52a9)

---
updated-dependencies:
- dependency-name: actions/cache/restore
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 18:56:46 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
625f50b7b6 Bump actions/cache/save from 6.0.0 to 6.1.0 (#9365)
Bumps [actions/cache/save](https://github.com/actions/cache) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/2c8a9bd7457de244a408f35966fab2fb45fda9c8...55cc8345863c7cc4c66a329aec7e433d2d1c52a9)

---
updated-dependencies:
- dependency-name: actions/cache/save
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 18:55:51 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
de7360fb96 Bump js-yaml from 5.2.0 to 5.2.1 (#9369)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 5.2.0 to 5.2.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/5.2.0...5.2.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 5.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-03 18:55:24 +02:00
absidueandGitHub 394ae39208 Fix lazy rendering on channel home pages (#9336) 2026-07-02 06:04:14 -04:00
PikachuEXEandGitHub de2512df98 Fix publish time parsing (#9310)
* ! Fix publish time parsing

* * Remove unnecessary +
2026-07-02 06:00:00 -04:00
PikachuEXEandGitHub 63a2929930 Fix online playlist parsing & revert workaround with youtubei.js update (#9325)
* ^ Update youtubei.js to 17.2.0

* * Update pnpm to add youtubei.js to minimumReleaseAgeExclude

* * Revert all workarounds for LockupView

* ! Fix LockupView handling in playlist

* ! Fix playlist continuation caching

* $ Simpliy getType usage since it accepts multiple types
2026-07-02 05:58:47 -04:00
absidueandGitHub db61a3b7ea Fix parsing view counts in shorts-only playlists (#9333) 2026-07-02 05:57:51 -04:00
absidueandGitHub 7e1cdefc75 Build static runtime AppImages with electron-builder (#9339) 2026-07-02 05:55:26 -04:00
efb4f5ff-1298-471a-8973-3d47447115dcandGitHub 1a7838aff2 use new matrix icon (#9359) 2026-07-02 05:52:57 -04:00
NooB9496andHosted Weblate a74947d7c2 Translated using Weblate (Polish)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: NooB9496 <noob9496@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/
Translation: FreeTube/Translations
2026-07-02 02:01:18 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1c4678078d Bump the webpack group across 1 directory with 2 updates (#9347)
Bumps the webpack group with 2 updates in the / directory: [webpack](https://github.com/webpack/webpack) and [webpack-cli](https://github.com/webpack/webpack-cli).


Updates `webpack` from 5.107.2 to 5.108.3
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.107.2...v5.108.3)

Updates `webpack-cli` from 7.0.3 to 7.1.0
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@7.0.3...webpack-cli@7.1.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.108.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: webpack
- dependency-name: webpack-cli
  dependency-version: 7.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-01 00:17:15 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
981532d447 Bump the stylelint group across 1 directory with 3 updates (#9345)
Bumps the stylelint group with 3 updates in the / directory: [@double-great/stylelint-a11y](https://github.com/double-great/stylelint-a11y), [postcss](https://github.com/postcss/postcss) and [stylelint](https://github.com/stylelint/stylelint).


Updates `@double-great/stylelint-a11y` from 3.4.15 to 3.5.0
- [Release notes](https://github.com/double-great/stylelint-a11y/releases)
- [Changelog](https://github.com/double-great/stylelint-a11y/blob/main/CHANGELOG.md)
- [Commits](https://github.com/double-great/stylelint-a11y/compare/v3.4.15...v3.5.0)

Updates `postcss` from 8.5.15 to 8.5.16
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.15...8.5.16)

Updates `stylelint` from 17.13.0 to 17.14.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.13.0...17.14.0)

---
updated-dependencies:
- dependency-name: "@double-great/stylelint-a11y"
  dependency-version: 3.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: stylelint
- dependency-name: postcss
  dependency-version: 8.5.16
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
- dependency-name: stylelint
  dependency-version: 17.14.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-30 21:52:46 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4d74eb7dc3 Bump vue from 3.5.38 to 3.5.39 (#9353)
Bumps [vue](https://github.com/vuejs/core) from 3.5.38 to 3.5.39.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/compare/v3.5.38...v3.5.39)

---
updated-dependencies:
- dependency-name: vue
  dependency-version: 3.5.39
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-30 21:45:04 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d7e268bef2 Bump js-yaml from 4.2.0 to 5.2.0 (#9348)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.2.0 to 5.2.0.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.2.0...5.2.0)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 5.2.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-30 21:45:02 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f539d616db Bump globals from 17.6.0 to 17.7.0 (#9350)
Bumps [globals](https://github.com/sindresorhus/globals) from 17.6.0 to 17.7.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.6.0...v17.7.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.7.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-01 05:41:01 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ef1f8be2d4 Bump the fortawesome group with 5 updates (#9346)
Bumps the fortawesome group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) | `7.2.0` | `7.3.0` |
| [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `7.2.0` | `7.3.0` |
| [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `7.2.0` | `7.3.0` |
| [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `7.2.0` | `7.3.0` |
| [@fortawesome/vue-fontawesome](https://github.com/FortAwesome/vue-fontawesome) | `3.2.0` | `3.3.0` |


Updates `@fortawesome/fontawesome-svg-core` from 7.2.0 to 7.3.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/7.2.0...7.3.0)

Updates `@fortawesome/free-brands-svg-icons` from 7.2.0 to 7.3.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/7.2.0...7.3.0)

Updates `@fortawesome/free-regular-svg-icons` from 7.2.0 to 7.3.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/7.2.0...7.3.0)

Updates `@fortawesome/free-solid-svg-icons` from 7.2.0 to 7.3.0
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/7.2.0...7.3.0)

Updates `@fortawesome/vue-fontawesome` from 3.2.0 to 3.3.0
- [Release notes](https://github.com/FortAwesome/vue-fontawesome/releases)
- [Changelog](https://github.com/FortAwesome/vue-fontawesome/blob/3.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/vue-fontawesome/compare/3.2.0...3.3.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-svg-core"
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
- dependency-name: "@fortawesome/free-brands-svg-icons"
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
- dependency-name: "@fortawesome/free-regular-svg-icons"
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
- dependency-name: "@fortawesome/free-solid-svg-icons"
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
- dependency-name: "@fortawesome/vue-fontawesome"
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-30 23:24:45 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4d6db8736b Bump shaka-player from 5.1.10 to 5.1.12 (#9351)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.1.10 to 5.1.12.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.1.12/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.1.10...v5.1.12)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-30 23:00:58 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fc0a0863aa Bump the eslint group with 6 updates (#9344)
Bumps the eslint group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [eslint](https://github.com/eslint/eslint) | `10.5.0` | `10.6.0` |
| [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x) | `4.16.2` | `4.17.1` |
| [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) | `63.0.6` | `63.0.10` |
| [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) | `18.1.0` | `18.2.1` |
| [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) | `68.0.0` | `69.0.0` |
| [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml) | `3.4.0` | `3.5.0` |


Updates `eslint` from 10.5.0 to 10.6.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.5.0...v10.6.0)

Updates `eslint-plugin-import-x` from 4.16.2 to 4.17.1
- [Release notes](https://github.com/un-ts/eslint-plugin-import-x/releases)
- [Changelog](https://github.com/un-ts/eslint-plugin-import-x/blob/master/CHANGELOG.md)
- [Commits](https://github.com/un-ts/eslint-plugin-import-x/compare/v4.16.2...v4.17.1)

Updates `eslint-plugin-jsdoc` from 63.0.6 to 63.0.10
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v63.0.6...v63.0.10)

Updates `eslint-plugin-n` from 18.1.0 to 18.2.1
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v18.1.0...v18.2.1)

Updates `eslint-plugin-unicorn` from 68.0.0 to 69.0.0
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v68.0.0...v69.0.0)

Updates `eslint-plugin-yml` from 3.4.0 to 3.5.0
- [Release notes](https://github.com/ota-meshi/eslint-plugin-yml/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-yml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-yml/compare/v3.4.0...v3.5.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-import-x
  dependency-version: 4.17.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 63.0.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint-plugin-n
  dependency-version: 18.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-unicorn
  dependency-version: 69.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
- dependency-name: eslint-plugin-yml
  dependency-version: 3.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-30 22:44:50 +02:00
Alexander GabilondoandHosted Weblate 281e39e931 Translated using Weblate (Basque)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Alexander Gabilondo <alexgabi@openmailbox.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eu/
Translation: FreeTube/Translations
2026-06-28 23:01:23 +00:00
ShadorcandGitHub 5ce97971f5 Fix: Hide 'Minimize to system tray' setting on Wayland (#9208)
* Add tooltip to 'Minimize to system tray' setting indicating that it is not available on Wayland

* Only show tooltip for linux

* Hide 'Minimize to system tray' setting on Wayland

* Code clean-up

* Replace getCmdSwitchValue with getWaylandPlatform

* Add migration script to disable 'hideToTrayOnMinimize' setting if it was enabled on Wayland

* Revert "Add migration script to disable 'hideToTrayOnMinimize' setting if it was enabled on Wayland"

This reverts commit 5e262c70f9331baaf24fc776f3dfc521c90c51bf.

* Rename getWayland to isWayland

* Apply suggestion

* Skip tray code paths for wayland

* Revert addition of yarn.lock file
2026-06-28 18:57:35 +08:00
Hosted Weblate d2d072d8e7 Merge branch 'origin/development' into Weblate. 2026-06-28 11:01:38 +02:00
Ghost of SpartaandHosted Weblate 5c3645d0f0 Translated using Weblate (Hungarian)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
Translation: FreeTube/Translations
2026-06-28 09:01:28 +00:00
ShadorcandGitHub ec9e065643 Fix: import history from youtube adding trailing space to title (#9204)
* Fix import history from youtube adding trailing space to title

* Do not consider the whole title as common start if there is only one video in history
2026-06-28 09:50:21 +02:00
ozrendevandGitHub 165a3e9710 Fix keyboard shortcuts arent't working during "SABR backoff" (#9315)
* allow ui display shortcuts before video playback

* let exit conditions run

* add mute key shortcut
2026-06-28 09:38:08 +02:00
ShadorcandGitHub 5a0313fc33 Fix incomplete watch progresss bar if video length has milliseconds (#9267) 2026-06-28 09:36:20 +02:00
Ghost of SpartaandHosted Weblate 2c21fa2213 Translated using Weblate (Hungarian)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
Translation: FreeTube/Translations
2026-06-27 23:01:27 +02:00
ShadorcandGitHub 1d23c2b8c4 Fix default quality not working when video aspect ratio is not 16/9 or 9/16 (#9312) 2026-06-26 20:16:58 +02:00
ShadorcandGitHub 859b222cf5 Remove error when 'publishedText' is missing as it is a valid state (#9321) 2026-06-26 19:31:01 +02:00
Reese WilliamsandGitHub 9a1af6b7c7 Fix LibRedirect download link in README (#9323)
Updated LibRedirect download link to the correct domain.
2026-06-26 19:10:55 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d2afe536e0 Bump actions/cache/restore from 5.0.5 to 6.0.0 (#9329)
Bumps [actions/cache/restore](https://github.com/actions/cache) from 5.0.5 to 6.0.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/27d5ce7f107fe9357f9df03efb73ab90386fccae...2c8a9bd7457de244a408f35966fab2fb45fda9c8)

---
updated-dependencies:
- dependency-name: actions/cache/restore
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-26 19:02:25 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b4ffdc55a4 Bump actions/cache/save from 5.0.5 to 6.0.0 (#9330)
Bumps [actions/cache/save](https://github.com/actions/cache) from 5.0.5 to 6.0.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/27d5ce7f107fe9357f9df03efb73ab90386fccae...2c8a9bd7457de244a408f35966fab2fb45fda9c8)

---
updated-dependencies:
- dependency-name: actions/cache/save
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-26 19:02:12 +02:00
Mickaël BinosandHosted Weblate 4322bb8ac9 Translated using Weblate (French)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Mickaël Binos <mickaelbinos@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2026-06-26 00:01:27 +02:00
PikachuEXEandGitHub 8ea4414a19 Fix premierDate parsing in subscription (#9309)
* ! Fix premierDate parsing

* ! Fix channel name detection for upcoming videos in channel live tab
2026-06-24 13:32:29 -04:00
Mona LisaandHosted Weblate c210eca201 Translated using Weblate (Swedish)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-06-22 22:01:18 +02:00
MilanandHosted Weblate e6ab0058bd Translated using Weblate (Slovak)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Milan <mobrcian@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sk/
Translation: FreeTube/Translations
2026-06-22 08:01:22 +02:00
Sergio MarquesandHosted Weblate f64016cd22 Translated using Weblate (Portuguese)
Currently translated at 98.7% (961 of 973 strings)

Co-authored-by: Sergio Marques <so.boston.android@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt/
Translation: FreeTube/Translations
2026-06-21 15:01:17 +02:00
Andi ChandlerandHosted Weblate 7998901e8f Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Andi Chandler <andi@gowling.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/en_GB/
Translation: FreeTube/Translations
2026-06-21 00:01:24 +02:00
ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)andHosted Weblate f3b88eedac Translated using Weblate (Latvian)
Currently translated at 66.3% (646 of 973 strings)

Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/lv/
Translation: FreeTube/Translations
2026-06-20 15:01:27 +02:00
mingtseluandHosted Weblate 13623adbfa Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: mingtselu <mingtse.lu@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/
Translation: FreeTube/Translations
2026-06-20 15:01:26 +02:00
IreneandHosted Weblate 9157ee9abf Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Irene <irene-264@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/
Translation: FreeTube/Translations
2026-06-20 15:01:24 +02:00
ShadorcandGitHub 799abdfeb2 Fix live chat error overflow (#9296) 2026-06-20 14:00:03 +02:00
ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)andHosted Weblate f994995576 Translated using Weblate (Latvian)
Currently translated at 66.1% (644 of 973 strings)

Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/lv/
Translation: FreeTube/Translations
2026-06-20 11:01:29 +00:00
Massimo PissarelloandHosted Weblate 9c7a175879 Translated using Weblate (Italian)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Massimo Pissarello <mapi68@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/
Translation: FreeTube/Translations
2026-06-20 11:01:27 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0052311a47 Bump the eslint group across 1 directory with 2 updates (#9301)
Bumps the eslint group with 2 updates in the / directory: [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) and [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn).


Updates `eslint-plugin-jsdoc` from 63.0.2 to 63.0.6
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v63.0.2...v63.0.6)

Updates `eslint-plugin-unicorn` from 65.0.1 to 68.0.0
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v65.0.1...v68.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 63.0.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint-plugin-unicorn
  dependency-version: 68.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-20 13:01:03 +02:00
ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)andHosted Weblate 8804c60619 Translated using Weblate (Latvian)
Currently translated at 65.3% (636 of 973 strings)

Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/lv/
Translation: FreeTube/Translations
2026-06-20 08:01:19 +00:00
ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)andHosted Weblate 08a5627cf6 Translated using Weblate (Latvian)
Currently translated at 64.8% (631 of 973 strings)

Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/lv/
Translation: FreeTube/Translations
2026-06-20 05:01:22 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1cce3020f1 Bump the babel group across 1 directory with 2 updates (#9300)
Bumps the babel group with 2 updates in the / directory: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) and [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env).


Updates `@babel/core` from 7.29.7 to 8.0.1
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v8.0.1/packages/babel-core)

Updates `@babel/preset-env` from 7.29.7 to 8.0.2
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v8.0.2/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 8.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: babel
- dependency-name: "@babel/preset-env"
  dependency-version: 8.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: babel
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-20 06:11:49 +08:00
Markus GauggandHosted Weblate 38eb556105 Translated using Weblate (German)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Markus Gaugg <gaugg@gmx.at>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
Translation: FreeTube/Translations
2026-06-19 22:01:25 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
a30332d81d Bump actions/checkout from 6.0.3 to 7.0.0 (#9298)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b4311f1884172cec0e10...9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 21:44:05 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
94cce198de Bump vue-i18n from 11.4.5 to 11.4.6 (#9304)
Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 11.4.5 to 11.4.6.
- [Release notes](https://github.com/intlify/vue-i18n/releases)
- [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/vue-i18n/commits/v11.4.6/packages/vue-i18n)

---
updated-dependencies:
- dependency-name: vue-i18n
  dependency-version: 11.4.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 19:53:36 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3eeb6ed40f Bump shaka-player from 5.1.8 to 5.1.10 (#9303)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.1.8 to 5.1.10.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.1.10/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.1.8...v5.1.10)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 19:52:46 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3c1493edbb Bump dompurify from 3.4.10 to 3.4.11 (#9305)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.4.10 to 3.4.11.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.10...3.4.11)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 19:39:07 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d88e7c9971 Bump @double-great/stylelint-a11y in the stylelint group (#9302)
Bumps the stylelint group with 1 update: [@double-great/stylelint-a11y](https://github.com/double-great/stylelint-a11y).


Updates `@double-great/stylelint-a11y` from 3.4.14 to 3.4.15
- [Release notes](https://github.com/double-great/stylelint-a11y/releases)
- [Changelog](https://github.com/double-great/stylelint-a11y/blob/main/CHANGELOG.md)
- [Commits](https://github.com/double-great/stylelint-a11y/compare/v3.4.14...v3.4.15)

---
updated-dependencies:
- dependency-name: "@double-great/stylelint-a11y"
  dependency-version: 3.4.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 19:35:10 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
dc885f2b5b Bump pnpm/action-setup from 6.0.8 to 6.0.9 (#9299)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 6.0.8 to 6.0.9.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/0e279bb959325dab635dd2c09392533439d90093...0ebf47130e4866e96fce0953f49152a61190b271)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: 6.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 19:19:45 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7530c78268 Bump electron from 42.4.0 to 42.4.1 (#9306)
Bumps [electron](https://github.com/electron/electron) from 42.4.0 to 42.4.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v42.4.0...v42.4.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 42.4.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-19 19:18:17 +02:00
Emma affd319ec1 Bump version number
Conflicts / Check for conflicts (push) Canceled after 0s
2026-06-19 08:26:20 -04:00
Emma 1724d7143e Merge commit '47343c339519b6ec9b4118a418470a7efb99494c' into release 2026-06-19 08:20:47 -04:00
LaKatoandHosted Weblate f6879d8f68 Translated using Weblate (Esperanto)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-06-18 19:01:19 +00:00
Oğuz ErsenandHosted Weblate b5d791b79c Translated using Weblate (Turkish)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/
Translation: FreeTube/Translations
2026-06-18 11:01:21 +02:00
coolvittoandHosted Weblate c844111d83 Translated using Weblate (Japanese)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: coolvitto <coolzdaddy55@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
Translation: FreeTube/Translations
2026-06-18 03:01:22 +00:00
Ngo Lam Bao AnandHosted Weblate 626a6eb05d Translated using Weblate (Vietnamese)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Ngo Lam Bao An <onionandsalad@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/vi/
Translation: FreeTube/Translations
2026-06-17 23:01:17 +02:00
cyberbohandHosted Weblate 0c322d76b1 Translated using Weblate (Indonesian)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: cyberboh <cybermay686@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/id/
Translation: FreeTube/Translations
2026-06-17 17:01:20 +00:00
Ghost of SpartaandHosted Weblate a8c73f5812 Translated using Weblate (Hungarian)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
Translation: FreeTube/Translations
2026-06-17 13:01:20 +00:00
Mickaël BinosandHosted Weblate 52bc302269 Translated using Weblate (French)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Mickaël Binos <mickaelbinos@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2026-06-17 10:01:16 +02:00
Hosted Weblate user 54392andHosted Weblate f5a54db532 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Hosted Weblate user 54392 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/
Translation: FreeTube/Translations
2026-06-17 04:01:26 +02:00
Priit JõerüütandHosted Weblate c3ff5fb3f7 Translated using Weblate (Estonian)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/
Translation: FreeTube/Translations
2026-06-17 00:01:22 +02:00
FjuroandHosted Weblate d238797edc Translated using Weblate (Czech)
Currently translated at 100.0% (973 of 973 strings)

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/
Translation: FreeTube/Translations
2026-06-17 00:01:20 +02:00
ShadorcandGitHub e689902002 Fix: Private video - TypeError: Cannot read properties of undefined (reading 'view_count') (#9254)
* [WIP] Fix private videos parsing issues, waiting for #8991 to be merged

* Remove Invidious private video detection due to reproductibilityy and fix todos
2026-06-16 16:08:23 -04:00
PikachuEXEandGitHub 7071134fce Fix cmd+L focus on search bar also move video forward (#9255)
* ! Fix cmd+L focus on search bar also move video forward

* * Add missing shortcut to shortcut list modal

* ~ Fix comment
2026-06-16 16:07:17 -04:00
PikachuEXEandGitHub aa52e110a5 ! Fix channel home section spacing when videos watched (#9293) 2026-06-16 16:05:00 -04:00
absidueandGitHub e77015981a Set @parcel/watcher to false in the pnpm allowBuilds setting (#9253) 2026-06-16 16:04:18 -04:00
1dd53020bf Fix: permanent player tooltip (#9119)
* blur active element on shortcut to prevent 'focus-visible' property from staying true

* Use querySelector instead of blurring whole body

* Fix tooltips staying visible if another shortcut is used while hovering a button

* Fix unwanted change

* Avoid creating array on every call

Co-authored-by: PikachuEXE <git@pikachuexe.net>

* Apply suggestions

---------

Co-authored-by: PikachuEXE <git@pikachuexe.net>
2026-06-16 14:06:25 +02:00
coolvittoandHosted Weblate 3cdbbb0638 Translated using Weblate (Japanese)
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: coolvitto <coolzdaddy55@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
Translation: FreeTube/Translations
2026-06-16 04:01:26 +00:00
Jeff HuangandHosted Weblate 12f6a5bac3 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: Jeff Huang <s8321414@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/
Translation: FreeTube/Translations
2026-06-16 04:01:24 +00:00
Priit JõerüütandHosted Weblate b0dc8192ff Translated using Weblate (Estonian)
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/
Translation: FreeTube/Translations
2026-06-15 19:01:21 +02:00
António OliveiraandHosted Weblate 9125af7013 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: António Oliveira <antonio.oliveira5487@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_PT/
Translation: FreeTube/Translations
2026-06-15 19:01:20 +02:00
Mickaël BinosandHosted Weblate b9fd2559d8 Translated using Weblate (French)
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: Mickaël Binos <mickaelbinos@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2026-06-15 14:01:27 +02:00
Mona LisaandHosted Weblate 1919c6220f Translated using Weblate (Swedish)
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-06-15 10:01:26 +02:00
MilanandHosted Weblate e935f41f80 Translated using Weblate (Czech)
Currently translated at 100.0% (972 of 972 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: Milan <mobrcian@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sk/
Translation: FreeTube/Translations
2026-06-15 10:01:24 +02:00
Massimo PissarelloandHosted Weblate b2ac5b3ab9 Translated using Weblate (Italian)
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: Massimo Pissarello <mapi68@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/
Translation: FreeTube/Translations
2026-06-15 01:01:21 +00:00
Hosted Weblate user 54392andHosted Weblate 3bfad1bd3f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: Hosted Weblate user 54392 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/
Translation: FreeTube/Translations
2026-06-15 01:01:20 +00:00
Markus GauggandHosted Weblate fbb5a5ea16 Translated using Weblate (German)
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: Markus Gaugg <gaugg@gmx.at>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
Translation: FreeTube/Translations
2026-06-14 22:01:27 +02:00
Oğuz ErsenandHosted Weblate 778d309e94 Translated using Weblate (Turkish)
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/
Translation: FreeTube/Translations
2026-06-14 22:01:25 +02:00
summoner001andHosted Weblate ba8a6afe2e Translated using Weblate (Hungarian)
Currently translated at 100.0% (972 of 972 strings)

Co-authored-by: summoner001 <summoner@disroot.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
Translation: FreeTube/Translations
2026-06-14 22:01:24 +02:00
e92b4c7b62 Add Parental Control toggle to disable channel link from videos (#8502)
* add toggle for disable channel link

* Update src/renderer/store/modules/settings.js

Co-authored-by: PikachuEXE <git@pikachuexe.net>

* type locale typo

* remove package-lock.json

* remove channel link from watch page

* change store var to plural

* list video stop using router-link

* we don't need no double negatives ;-)

* add toggle for playlists

* add toggle for playlist thumbnail

* add toggle for posts

* add toggle for channel thumbnail

* add conditional component for comments

* update locales

* remove merged locales

* change to conditional components

* check if only one div in wrapper grid

* fix channel thubmnail cursor

* fix channel name regression

---------

Co-authored-by: PikachuEXE <git@pikachuexe.net>
2026-06-14 18:45:21 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
46c72a92b6 Bump the eslint group across 1 directory with 4 updates (#9281)
Bumps the eslint group with 4 updates in the / directory: [eslint](https://github.com/eslint/eslint), [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc), [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) and [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn).


Updates `eslint` from 10.4.1 to 10.5.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.4.1...v10.5.0)

Updates `eslint-plugin-jsdoc` from 63.0.1 to 63.0.2
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v63.0.1...v63.0.2)

Updates `eslint-plugin-n` from 18.0.1 to 18.1.0
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v18.0.1...v18.1.0)

Updates `eslint-plugin-unicorn` from 64.0.0 to 65.0.1
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v64.0.0...v65.0.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 63.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint-plugin-n
  dependency-version: 18.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-unicorn
  dependency-version: 65.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-14 14:46:40 +02:00
Alexandre KleinandHosted Weblate 5e9cca85b2 Translated using Weblate (Latin)
Currently translated at 15.6% (152 of 971 strings)

Co-authored-by: Alexandre Klein <alexandre.klein04@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/la/
Translation: FreeTube/Translations
2026-06-13 18:01:23 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
dbad882c0e Bump the webpack group across 1 directory with 2 updates (#9280)
Bumps the webpack group with 2 updates in the / directory: [sass](https://github.com/sass/dart-sass) and [webpack-dev-server](https://github.com/webpack/webpack-dev-server).


Updates `sass` from 1.100.0 to 1.101.0
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.100.0...1.101.0)

Updates `webpack-dev-server` from 5.2.4 to 5.2.5
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.4...v5.2.5)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.101.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: webpack
- dependency-name: webpack-dev-server
  dependency-version: 5.2.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-13 14:50:09 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c379b6b578 Bump vue-i18n from 11.4.4 to 11.4.5 (#9275)
Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 11.4.4 to 11.4.5.
- [Release notes](https://github.com/intlify/vue-i18n/releases)
- [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/vue-i18n/commits/v11.4.5/packages/vue-i18n)

---
updated-dependencies:
- dependency-name: vue-i18n
  dependency-version: 11.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-13 14:32:18 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c987f3f4b2 Bump electron-builder from 26.8.1 to 26.15.3 (#9274)
Bumps [electron-builder](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder) from 26.8.1 to 26.15.3.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/packages/electron-builder/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits/electron-builder@26.15.3/packages/electron-builder)

---
updated-dependencies:
- dependency-name: electron-builder
  dependency-version: 26.15.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-13 14:13:41 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3d21a7d553 Bump dompurify from 3.4.8 to 3.4.10 (#9276)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.4.8 to 3.4.10.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.8...3.4.10)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-13 19:04:42 +08:00
efb4f5ff-1298-471a-8973-3d47447115dcandGitHub bbc69033d9 Merge pull request #9277 from FreeTubeApp/dependabot/npm_and_yarn/vue-3.5.38
Bump vue from 3.5.35 to 3.5.38
2026-06-13 13:03:59 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4c50d1e2dd Bump stylelint in the stylelint group across 1 directory (#9270)
Bumps the stylelint group with 1 update in the / directory: [stylelint](https://github.com/stylelint/stylelint).


Updates `stylelint` from 17.12.0 to 17.13.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.12.0...17.13.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 17.13.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-13 19:03:40 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>PikachuEXE
6a43260c87 Bump electron from 42.3.3 to 42.4.0 (#9273)
* Bump electron from 42.3.3 to 42.4.0

Bumps [electron](https://github.com/electron/electron) from 42.3.3 to 42.4.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v42.3.3...v42.4.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 42.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* * Remove no longer necessary override yauzl

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: PikachuEXE <git@pikachuexe.net>
2026-06-13 19:03:21 +08:00
dependabot[bot]andGitHub cddfdbf50c Bump vue from 3.5.35 to 3.5.38
Bumps [vue](https://github.com/vuejs/core) from 3.5.35 to 3.5.38.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/compare/v3.5.35...v3.5.38)

---
updated-dependencies:
- dependency-name: vue
  dependency-version: 3.5.38
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-13 07:07:16 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
cb9495ca4c Bump shaka-player from 5.1.7 to 5.1.8 (#9272)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.1.7 to 5.1.8.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.1.8/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.1.7...v5.1.8)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-13 09:04:54 +02:00
Alexandre KleinandHosted Weblate 8e9868a024 Translated using Weblate (Latin)
Currently translated at 15.3% (149 of 971 strings)

Co-authored-by: Alexandre Klein <alexandre.klein04@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/la/
Translation: FreeTube/Translations
2026-06-12 17:01:18 +02:00
Alexandre KleinandHosted Weblate 551e5e2448 Translated using Weblate (Latin)
Currently translated at 15.1% (147 of 971 strings)

Co-authored-by: Alexandre Klein <alexandre.klein04@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/la/
Translation: FreeTube/Translations
2026-06-12 15:01:19 +02:00
Alexandre KleinandHosted Weblate 9a44ba7d83 Translated using Weblate (Latin)
Currently translated at 12.4% (121 of 971 strings)

Co-authored-by: Alexandre Klein <alexandre.klein04@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/la/
Translation: FreeTube/Translations
2026-06-12 13:01:18 +02:00
Alexandre KleinandHosted Weblate dc52e1cfc1 Translated using Weblate (Latin)
Currently translated at 12.1% (118 of 971 strings)

Co-authored-by: Alexandre Klein <alexandre.klein04@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/la/
Translation: FreeTube/Translations
2026-06-11 17:01:17 +00:00
Alexandre KleinandHosted Weblate c5b42336f7 Translated using Weblate (Latin)
Currently translated at 11.8% (115 of 971 strings)

Co-authored-by: Alexandre Klein <alexandre.klein04@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/la/
Translation: FreeTube/Translations
2026-06-11 17:01:25 +02:00
Missan, José RodolfoHosted WeblateMissan, José Rodolfo <missanjose18@gmail.com>
15caf8fdd9 Translated using Weblate (Spanish (Argentina))
Currently translated at 49.5% (481 of 971 strings)

Co-authored-by: Missan, José Rodolfo <missanjose18@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es_AR/
Translation: FreeTube/Translations
2026-06-10 06:01:18 +00:00
Ghost of SpartaandHosted Weblate f629ae1d95 Translated using Weblate (Hungarian)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
Translation: FreeTube/Translations
2026-06-09 13:01:43 +02:00
ShadorcandGitHub ec0bb95eb1 Set isPointerInList to false when validating search to prevent persistent focus (#9226) 2026-06-08 19:26:53 +02:00
ShadorcandGitHub a93412b82e Fix: Remove add/remove channel buttons from profile view if unsubscribe setting is toggled (#9230)
* Remove possibility to add/remove channels from profile view if hide unsubscribe setting is toggled

* Remove double negations as suggested
2026-06-08 18:56:07 +02:00
absidueandGitHub 5fafff1990 Pass chapters to shaka-player (#9134)
* Pass chapters to shaka-player

* Switch back to FreeTube's own chapter markers
2026-06-08 18:36:36 +02:00
efb4f5ff-1298-471a-8973-3d47447115dcandGitHub a2fd520a80 Merge pull request #9249 from efb4f5ff-1298-471a-8973-3d47447115dc/hotfix-release-v0.24.1
Hotfix release - v0.24.1
2026-06-08 13:57:13 +02:00
efb4f5ff-1298-471a-8973-3d47447115dc 47343c3395 Bump package version from 0.24.0 to 0.24.1 (#9247) 2026-06-08 13:27:02 +02:00
PikachuEXEandefb4f5ff-1298-471a-8973-3d47447115dc 107fe0192f Fix "Subscriptions and Channel pages do not fetch content from Videos/Live tabs" (#9227)
* ! Fix video item parsing

* ! Fix views text detection

* ! Fix member only video not filtered out due to lockup view handling

* * Handle lockup view for shorts

* ! Fix processing of unavailale video as community post attachment

* ! Workaround subscription entries fetching

Proper fix to be done when YTJS released new version

* ! Fix view count text detection

* ! Fix premieres time text detection

* ! Fix channel page videos/live fetch more
2026-06-08 13:27:02 +02:00
PikachuEXEandefb4f5ff-1298-471a-8973-3d47447115dc c1b62240a0 ! Fix channel home data parsing (#9164) 2026-06-08 13:27:02 +02:00
efb4f5ff-1298-471a-8973-3d47447115dcandGitHub 1b73318e3c Bump package version from 0.24.0 to 0.24.1 (#9247) 2026-06-08 12:47:03 +02:00
ShadorcandGitHub 94892c44c6 Fix: Incomplete history import for marked as watched videos (#9201)
* Make 'description' field optional when importing FreeTube wtahc history

* Use nullish coalescing for historyObject description
2026-06-08 12:37:26 +02:00
PikachuEXEandGitHub b39fadbee0 Fix "Subscriptions and Channel pages do not fetch content from Videos/Live tabs" (#9227)
* ! Fix video item parsing

* ! Fix views text detection

* ! Fix member only video not filtered out due to lockup view handling

* * Handle lockup view for shorts

* ! Fix processing of unavailale video as community post attachment

* ! Workaround subscription entries fetching

Proper fix to be done when YTJS released new version

* ! Fix view count text detection

* ! Fix premieres time text detection

* ! Fix channel page videos/live fetch more
2026-06-07 22:32:46 -04:00
PikachuEXEandGitHub 9149787a11 Fix electron extract issue in dev with latest NodeJS (#9203)
* ! Fix electron extract issue in dev with latest NodeJS

* Apply suggestion from @PikachuEXE
2026-06-07 19:29:21 -04:00
Maksym DilanianandHosted Weblate 3069cde69a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Maksym Dilanian <dilanyan.maxim@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/uk/
Translation: FreeTube/Translations
2026-06-07 10:01:06 +00:00
António OliveiraandHosted Weblate c614539b9a Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: António Oliveira <antonio.oliveira5487@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_PT/
Translation: FreeTube/Translations
2026-06-07 00:01:27 +00:00
ninjumandHosted Weblate c4b14b728a Translated using Weblate (Galician)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: ninjum <ninhum@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/gl/
Translation: FreeTube/Translations
2026-06-06 15:01:08 +02:00
Aditya MishraandGitHub 0bf53d3402 fix(watch): show persistent error for unavailable and removed videos (#8991)
* fix(watch): show persistent error for unavailable and removed videos

* Use theme-aware unavailable video thumbnails

* Infer unavailable thumbnail theme from background color

* Remove redundant toast when error is shown in player overlay

* fix(watch): clear stale video data on route change
2026-06-06 13:31:39 +02:00
ninjumandHosted Weblate d2920dc8a1 Translated using Weblate (Galician)
Currently translated at 77.1% (749 of 971 strings)

Co-authored-by: ninjum <ninhum@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/gl/
Translation: FreeTube/Translations
2026-06-06 11:01:13 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5e07b053a3 Bump electron from 42.3.0 to 42.3.3 (#9240)
Bumps [electron](https://github.com/electron/electron) from 42.3.0 to 42.3.3.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v42.3.0...v42.3.3)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 42.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-06 06:04:46 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
25b46484b0 Bump marked from 18.0.4 to 18.0.5 (#9241)
Bumps [marked](https://github.com/markedjs/marked) from 18.0.4 to 18.0.5.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v18.0.4...v18.0.5)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 18.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-05 21:50:17 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d1108750e6 Bump dompurify from 3.4.7 to 3.4.8 (#9237)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.4.7 to 3.4.8.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.7...3.4.8)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-05 19:14:02 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
506b3321c1 Bump js-yaml from 4.1.1 to 4.2.0 (#9239)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.1 to 4.2.0.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/commits)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-05 18:55:22 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7eebc72dff Bump shaka-player from 5.1.6 to 5.1.7 (#9238)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.1.6 to 5.1.7.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.1.7/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.1.6...v5.1.7)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-05 18:21:17 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b28d759de5 Bump the eslint group with 5 updates (#9236)
Bumps the eslint group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@intlify/eslint-plugin-vue-i18n](https://github.com/intlify/eslint-plugin-vue-i18n) | `4.5.0` | `4.5.1` |
| [eslint](https://github.com/eslint/eslint) | `10.4.0` | `10.4.1` |
| [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) | `63.0.0` | `63.0.1` |
| [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) | `10.9.1` | `10.9.2` |
| [vue-eslint-parser](https://github.com/vuejs/vue-eslint-parser) | `10.4.0` | `10.4.1` |


Updates `@intlify/eslint-plugin-vue-i18n` from 4.5.0 to 4.5.1
- [Release notes](https://github.com/intlify/eslint-plugin-vue-i18n/releases)
- [Changelog](https://github.com/intlify/eslint-plugin-vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/eslint-plugin-vue-i18n/compare/v4.5.0...v4.5.1)

Updates `eslint` from 10.4.0 to 10.4.1
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.4.0...v10.4.1)

Updates `eslint-plugin-jsdoc` from 63.0.0 to 63.0.1
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v63.0.0...v63.0.1)

Updates `eslint-plugin-vue` from 10.9.1 to 10.9.2
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Changelog](https://github.com/vuejs/eslint-plugin-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v10.9.1...v10.9.2)

Updates `vue-eslint-parser` from 10.4.0 to 10.4.1
- [Release notes](https://github.com/vuejs/vue-eslint-parser/releases)
- [Commits](https://github.com/vuejs/vue-eslint-parser/compare/v10.4.0...v10.4.1)

---
updated-dependencies:
- dependency-name: "@intlify/eslint-plugin-vue-i18n"
  dependency-version: 4.5.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint
  dependency-version: 10.4.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 63.0.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint-plugin-vue
  dependency-version: 10.9.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: vue-eslint-parser
  dependency-version: 10.4.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-05 18:07:46 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7a95834079 Bump github/codeql-action from 4.36.0 to 4.36.2 (#9235)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.36.0 to 4.36.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/7211b7c8077ea37d8641b6271f6a365a22a5fbfa...8aad20d150bbac5944a9f9d289da16a4b0d87c1e)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.36.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-05 17:36:41 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0f62a4afa2 Bump actions/checkout from 6.0.2 to 6.0.3 (#9234)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...df4cb1c069e1874edd31b4311f1884172cec0e10)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-05 17:34:01 +02:00
lord199andHosted Weblate 9aa048488d Translated using Weblate (Russian)
Currently translated at 99.6% (968 of 971 strings)

Co-authored-by: lord199 <lord199@mail.ru>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ru/
Translation: FreeTube/Translations
2026-06-02 11:02:13 +00:00
Andi ChandlerandHosted Weblate cd9172ba31 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Andi Chandler <andi@gowling.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/en_GB/
Translation: FreeTube/Translations
2026-06-02 01:01:04 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
891f624377 Bump vue-router from 5.0.7 to 5.1.0 (#9219)
Bumps [vue-router](https://github.com/vuejs/router) from 5.0.7 to 5.1.0.
- [Release notes](https://github.com/vuejs/router/releases)
- [Commits](https://github.com/vuejs/router/compare/v5.0.7...v5.1.0)

---
updated-dependencies:
- dependency-name: vue-router
  dependency-version: 5.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-30 00:13:33 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2589b22104 Bump vue from 3.5.34 to 3.5.35 (#9215)
Bumps [vue](https://github.com/vuejs/core) from 3.5.34 to 3.5.35.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/compare/v3.5.34...v3.5.35)

---
updated-dependencies:
- dependency-name: vue
  dependency-version: 3.5.35
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 23:44:21 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f01bff71cf Bump swiper from 12.1.4 to 12.2.0 (#9221)
Bumps [swiper](https://github.com/nolimits4web/Swiper) from 12.1.4 to 12.2.0.
- [Release notes](https://github.com/nolimits4web/Swiper/releases)
- [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nolimits4web/Swiper/compare/v12.1.4...v12.2.0)

---
updated-dependencies:
- dependency-name: swiper
  dependency-version: 12.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-30 05:03:04 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3cd056593b Bump the babel group across 1 directory with 2 updates (#9209)
Bumps the babel group with 2 updates in the / directory: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) and [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env).


Updates `@babel/core` from 7.29.0 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-core)

Updates `@babel/preset-env` from 7.29.5 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.29.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
- dependency-name: "@babel/preset-env"
  dependency-version: 7.29.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-30 05:02:24 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b17cbef432 Bump dompurify from 3.4.5 to 3.4.7 (#9217)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.4.5 to 3.4.7.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.5...3.4.7)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 19:10:30 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
21ee1a10f3 Bump the webpack group across 1 directory with 2 updates (#9214)
Bumps the webpack group with 2 updates in the / directory: [webpack](https://github.com/webpack/webpack) and [webpack-cli](https://github.com/webpack/webpack-cli).


Updates `webpack` from 5.107.1 to 5.107.2
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.107.1...v5.107.2)

Updates `webpack-cli` from 7.0.2 to 7.0.3
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@7.0.2...webpack-cli@7.0.3)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.107.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: webpack
- dependency-name: webpack-cli
  dependency-version: 7.0.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 18:58:29 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3bbd464d46 Bump lefthook from 2.1.8 to 2.1.9 (#9220)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 2.1.8 to 2.1.9.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v2.1.8...v2.1.9)

---
updated-dependencies:
- dependency-name: lefthook
  dependency-version: 2.1.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 18:51:57 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
21f97647fb Bump shaka-player from 5.1.5 to 5.1.6 (#9218)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.1.5 to 5.1.6.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.1.6/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.1.5...v5.1.6)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 18:48:21 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ec081fdca3 Bump @double-great/stylelint-a11y (#9211)
Bumps the stylelint group with 1 update in the / directory: [@double-great/stylelint-a11y](https://github.com/double-great/stylelint-a11y).


Updates `@double-great/stylelint-a11y` from 3.4.13 to 3.4.14
- [Release notes](https://github.com/double-great/stylelint-a11y/releases)
- [Changelog](https://github.com/double-great/stylelint-a11y/blob/main/CHANGELOG.md)
- [Commits](https://github.com/double-great/stylelint-a11y/compare/v3.4.13...v3.4.14)

---
updated-dependencies:
- dependency-name: "@double-great/stylelint-a11y"
  dependency-version: 3.4.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 16:44:30 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5f0c5290ac Bump the eslint group with 3 updates (#9210)
Bumps the eslint group with 3 updates: [@intlify/eslint-plugin-vue-i18n](https://github.com/intlify/eslint-plugin-vue-i18n), [eslint-plugin-jsonc](https://github.com/ota-meshi/eslint-plugin-jsonc) and [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml).


Updates `@intlify/eslint-plugin-vue-i18n` from 4.4.0 to 4.5.0
- [Release notes](https://github.com/intlify/eslint-plugin-vue-i18n/releases)
- [Changelog](https://github.com/intlify/eslint-plugin-vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/eslint-plugin-vue-i18n/compare/v4.4.0...v4.5.0)

Updates `eslint-plugin-jsonc` from 3.1.2 to 3.2.0
- [Release notes](https://github.com/ota-meshi/eslint-plugin-jsonc/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-jsonc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-jsonc/compare/v3.1.2...v3.2.0)

Updates `eslint-plugin-yml` from 3.3.2 to 3.4.0
- [Release notes](https://github.com/ota-meshi/eslint-plugin-yml/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-yml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-yml/compare/v3.3.2...v3.4.0)

---
updated-dependencies:
- dependency-name: "@intlify/eslint-plugin-vue-i18n"
  dependency-version: 4.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-jsonc
  dependency-version: 3.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-yml
  dependency-version: 3.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 18:39:58 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1ff127a21f Bump eps1lon/actions-label-merge-conflict from 3.0.3 to 3.1.0 (#9213)
Bumps [eps1lon/actions-label-merge-conflict](https://github.com/eps1lon/actions-label-merge-conflict) from 3.0.3 to 3.1.0.
- [Release notes](https://github.com/eps1lon/actions-label-merge-conflict/releases)
- [Changelog](https://github.com/eps1lon/actions-label-merge-conflict/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eps1lon/actions-label-merge-conflict/compare/1df065ebe6e3310545d4f4c4e862e43bdca146f0...0273be72a0bbd58fcd71d0d6c02c209b50d1e5e1)

---
updated-dependencies:
- dependency-name: eps1lon/actions-label-merge-conflict
  dependency-version: 3.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 18:39:36 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
08e3a16d74 Bump github/codeql-action from 4.35.5 to 4.36.0 (#9212)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.5 to 4.36.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/9e0d7b8d25671d64c341c19c0152d693099fb5ba...7211b7c8077ea37d8641b6271f6a365a22a5fbfa)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 18:38:44 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
efb4b32d4d Bump electron from 42.2.0 to 42.3.0 (#9216)
Bumps [electron](https://github.com/electron/electron) from 42.2.0 to 42.3.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v42.2.0...v42.3.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 42.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 18:26:14 +02:00
cyberbohandHosted Weblate 124faed3f2 Translated using Weblate (Indonesian)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: cyberboh <cybermay686@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/id/
Translation: FreeTube/Translations
2026-05-27 02:11:37 +00:00
Anucha HlownonkorandHosted Weblate 08e4d5b710 Added translation using Weblate (Thai)
Co-authored-by: Anucha Hlownonkor <anucha.initdz@gmail.com>
2026-05-25 22:52:45 +02:00
Grzegorz WójcickiandHosted Weblate 8f59ed02b4 Translated using Weblate (Polish)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Grzegorz Wójcicki <terkaz@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/
Translation: FreeTube/Translations
2026-05-25 22:52:45 +02:00
PikachuEXEandGitHub cda95536d1 ! Fix channel home data parsing (#9164) 2026-05-23 20:34:09 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
cb1f16da6a Bump vue-i18n from 11.4.2 to 11.4.4 (#9178)
Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 11.4.2 to 11.4.4.
- [Release notes](https://github.com/intlify/vue-i18n/releases)
- [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/vue-i18n/commits/v11.4.4/packages/vue-i18n)

---
updated-dependencies:
- dependency-name: vue-i18n
  dependency-version: 11.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:26:23 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c57ef597e5 Bump lefthook from 2.1.6 to 2.1.8 (#9179)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 2.1.6 to 2.1.8.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v2.1.6...v2.1.8)

---
updated-dependencies:
- dependency-name: lefthook
  dependency-version: 2.1.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 15:48:12 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8aa307c598 Bump marked from 18.0.3 to 18.0.4 (#9176)
Bumps [marked](https://github.com/markedjs/marked) from 18.0.3 to 18.0.4.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v18.0.3...v18.0.4)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 18.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 10:59:35 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
59988005a6 Bump the webpack group across 1 directory with 3 updates (#9174)
Bumps the webpack group with 3 updates in the / directory: [sass](https://github.com/sass/dart-sass), [sass-loader](https://github.com/webpack/sass-loader) and [webpack](https://github.com/webpack/webpack).


Updates `sass` from 1.99.0 to 1.100.0
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.99.0...1.100.0)

Updates `sass-loader` from 16.0.8 to 17.0.0
- [Release notes](https://github.com/webpack/sass-loader/releases)
- [Changelog](https://github.com/webpack/sass-loader/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/sass-loader/compare/v16.0.8...v17.0.0)

Updates `webpack` from 5.106.2 to 5.107.1
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.106.2...v5.107.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.100.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: webpack
- dependency-name: sass-loader
  dependency-version: 17.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: webpack
- dependency-name: webpack
  dependency-version: 5.107.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 09:50:10 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
446c751eeb Bump the eslint group across 1 directory with 2 updates (#9172)
Bumps the eslint group with 2 updates in the / directory: [eslint](https://github.com/eslint/eslint) and [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc).


Updates `eslint` from 10.3.0 to 10.4.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.3.0...v10.4.0)

Updates `eslint-plugin-jsdoc` from 62.9.0 to 63.0.0
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v62.9.0...v63.0.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 63.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 07:09:48 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f53986fecf Bump terser from 5.47.1 to 5.48.0 (#9175)
Bumps [terser](https://github.com/terser/terser) from 5.47.1 to 5.48.0.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.47.1...v5.48.0)

---
updated-dependencies:
- dependency-name: terser
  dependency-version: 5.48.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-22 20:29:10 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
e2a357cb28 Bump dompurify from 3.4.3 to 3.4.5 (#9177)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.4.3 to 3.4.5.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.3...3.4.5)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-22 19:47:59 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2343aed852 Bump the stylelint group with 3 updates (#9173)
Bumps the stylelint group with 3 updates: [@double-great/stylelint-a11y](https://github.com/double-great/stylelint-a11y), [postcss](https://github.com/postcss/postcss) and [stylelint](https://github.com/stylelint/stylelint).


Updates `@double-great/stylelint-a11y` from 3.4.12 to 3.4.13
- [Release notes](https://github.com/double-great/stylelint-a11y/releases)
- [Changelog](https://github.com/double-great/stylelint-a11y/blob/main/CHANGELOG.md)
- [Commits](https://github.com/double-great/stylelint-a11y/compare/v3.4.12...v3.4.13)

Updates `postcss` from 8.5.14 to 8.5.15
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.14...8.5.15)

Updates `stylelint` from 17.11.1 to 17.12.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.11.1...17.12.0)

---
updated-dependencies:
- dependency-name: "@double-great/stylelint-a11y"
  dependency-version: 3.4.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
- dependency-name: postcss
  dependency-version: 8.5.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
- dependency-name: stylelint
  dependency-version: 17.12.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-22 19:41:58 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ebfe2d830d Bump shaka-player from 5.1.4 to 5.1.5 (#9180)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.1.4 to 5.1.5.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.1.5/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.1.4...v5.1.5)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-22 19:21:39 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c63d206b8d Bump actions/stale from 10.2.0 to 10.3.0 (#9170)
Bumps [actions/stale](https://github.com/actions/stale) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/b5d41d4e1d5dceea10e7104786b73624c18a190f...eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: 10.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-22 19:19:59 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
766d0524a2 Bump calibreapp/image-actions (#9171)
Bumps [calibreapp/image-actions](https://github.com/calibreapp/image-actions) from e2cc8db5d49c849e00844dfebf01438318e96fa2 to 9d037c06280028c110ff61c433ad4dc7d33c3c43.
- [Release notes](https://github.com/calibreapp/image-actions/releases)
- [Commits](https://github.com/calibreapp/image-actions/compare/e2cc8db5d49c849e00844dfebf01438318e96fa2...9d037c06280028c110ff61c433ad4dc7d33c3c43)

---
updated-dependencies:
- dependency-name: calibreapp/image-actions
  dependency-version: 9d037c06280028c110ff61c433ad4dc7d33c3c43
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-22 19:09:30 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
afc92289b5 Bump github/codeql-action from 4.35.4 to 4.35.5 (#9169)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.4 to 4.35.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/68bde559dea0fdcac2102bfdf6230c5f70eb485e...9e0d7b8d25671d64c341c19c0152d693099fb5ba)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-22 18:59:41 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
058afe20a4 Bump electron from 42.1.0 to 42.2.0 (#9181)
Bumps [electron](https://github.com/electron/electron) from 42.1.0 to 42.2.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v42.1.0...v42.2.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 42.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-22 18:58:46 +02:00
Mona LisaandHosted Weblate 5919200214 Translated using Weblate (Swedish)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-22 13:11:35 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>PikachuEXE
950adc8117 Bump uuid from 8.3.2 to 14.0.0 (via audit fix) (#9166)
* Bump uuid from 8.3.2 to 14.0.0 (via audit fix)

Bumps [uuid](https://github.com/uuidjs/uuid) from 8.3.2 to 14.0.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v8.3.2...v14.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-version: 14.0.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* ! Fix pnpm setting to be in sync

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: PikachuEXE <git@pikachuexe.net>
2026-05-22 08:10:25 +02:00
akibulabidandHosted Weblate 98c49de08e Translated using Weblate (Bengali)
Currently translated at 14.5% (141 of 971 strings)

Co-authored-by: akibulabid <akibulabid07@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bn/
Translation: FreeTube/Translations
2026-05-21 08:11:38 +00:00
Ghost of SpartaandHosted Weblate 414627bf29 Translated using Weblate (Hungarian)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
Translation: FreeTube/Translations
2026-05-20 23:13:47 +02:00
Mona LisaandHosted Weblate 3cffbe6f61 Translated using Weblate (Swedish)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-20 19:11:35 +02:00
bittin1ddc447d824349b2andHosted Weblate 808db7cd41 Translated using Weblate (Swedish)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-20 12:11:40 +00:00
Eder Etxebarria RojoandHosted Weblate f083e62652 Translated using Weblate (Basque)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Eder Etxebarria Rojo <eder@betxepare.eus>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eu/
Translation: FreeTube/Translations
2026-05-20 08:11:35 +02:00
José Geiferson Limeira SilvaandHosted Weblate 1684b5a4fc Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: José Geiferson Limeira Silva <jglimeirasilva@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/
Translation: FreeTube/Translations
2026-05-20 00:11:35 +02:00
LaKatoandHosted Weblate fdfd657c71 Translated using Weblate (Esperanto)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-05-19 22:14:34 +02:00
MilanandHosted Weblate 6e41c98db5 Translated using Weblate (Slovak)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Milan <mobrcian@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sk/
Translation: FreeTube/Translations
2026-05-19 20:11:36 +02:00
eulalioandHosted Weblate ef2ff114e9 Translated using Weblate (Spanish)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: eulalio <eulalio@disroot.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/
Translation: FreeTube/Translations
2026-05-19 13:11:35 +00:00
Priit JõerüütandHosted Weblate 893c1daa03 Translated using Weblate (Estonian)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/
Translation: FreeTube/Translations
2026-05-19 11:11:39 +00:00
Maydo Al-DoseryandHosted Weblate ea3e1e27e5 Translated using Weblate (Arabic)
Currently translated at 99.8% (970 of 971 strings)

Co-authored-by: Maydo Al-Dosery <maydo@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ar/
Translation: FreeTube/Translations
2026-05-19 11:11:37 +00:00
Cloud EspandHosted Weblate c4bb24ec7a Translated using Weblate (French)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Cloud Esp <Frederic.Darboux@inrae.fr>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2026-05-19 07:11:39 +00:00
Massimo PissarelloandHosted Weblate 3c431d941b Translated using Weblate (Italian)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Massimo Pissarello <mapi68@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/
Translation: FreeTube/Translations
2026-05-19 07:11:37 +00:00
Jeff HuangandHosted Weblate 28aaf79c2c Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Jeff Huang <s8321414@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/
Translation: FreeTube/Translations
2026-05-19 05:11:38 +00:00
Oğuz ErsenandHosted Weblate d5250db1d4 Translated using Weblate (Turkish)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/tr/
Translation: FreeTube/Translations
2026-05-19 05:11:37 +00:00
coolvittoandHosted Weblate 11cc4e8783 Translated using Weblate (Japanese)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: coolvitto <coolzdaddy55@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
Translation: FreeTube/Translations
2026-05-19 05:11:34 +02:00
大王叫我来巡山andHosted Weblate bc5df898d7 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/
Translation: FreeTube/Translations
2026-05-19 03:11:44 +02:00
FjuroandHosted Weblate d955d090ac Translated using Weblate (Czech)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/
Translation: FreeTube/Translations
2026-05-19 03:11:42 +02:00
Maydo Al-DoseryandHosted Weblate bd2832ec16 Translated using Weblate (Arabic)
Currently translated at 99.3% (965 of 971 strings)

Co-authored-by: Maydo Al-Dosery <maydo@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ar/
Translation: FreeTube/Translations
2026-05-19 03:11:41 +02:00
summoner001andHosted Weblate 714b2a939b Translated using Weblate (Hungarian)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: summoner001 <summoner@disroot.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
Translation: FreeTube/Translations
2026-05-18 21:11:34 +00:00
Markus GauggandHosted Weblate a2c295b015 Translated using Weblate (German)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Markus Gaugg <gaugg@gmx.at>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
Translation: FreeTube/Translations
2026-05-18 19:11:43 +00:00
Ghost of SpartaandHosted Weblate a5e431adb8 Translated using Weblate (Hungarian)
Currently translated at 100.0% (971 of 971 strings)

Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
Translation: FreeTube/Translations
2026-05-18 19:11:41 +00:00
FeminiandHosted Weblate 67d0c072a7 Translated using Weblate (Azerbaijani)
Currently translated at 29.9% (291 of 971 strings)

Co-authored-by: Femini <nizamismidov4@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/az/
Translation: FreeTube/Translations
2026-05-18 19:11:39 +00:00
dec2db21ed Feature: Screenshot copy to clipboard (#9042)
* Feature: Screenshot copy to clipboard

* Use dropdown instead of toggles

* use the standard web navigator.clipboard API

* Apply changes requested for select option

* Hide format and quality options when clipboard is selected

* fix screenshot mode conditions in player

* Fix screenshot mode dropdown being hidden when USING_ELECTRON was false

* Rename 'Do Not Ask Path' to 'Save Screenshot To'

* Rename screenshot mode enum names

* Remove unused var in loca text

* Improve copyToClipboard error message with blobs

* Remove punctuation for single sentence

* Add migration script

* Remove unused import

* Fix wrong remove key in migration script

* Apply code style format request

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>

* Only create one blob now that only one screenshot mode can be selected

* Move 'filename' and 'filenameWithExtension' inside non-clipboard screenshot mode conditional branch

* Move the screenshot mode dropdown right below the Enable Screenshot toggle

* Hide screenshot save options when clipboard mode is selected

* clean-up code

* clean-up code

* Improve mode select options consistency

* Fix screenshot mode text being too long

* Carry over existing Ask Path translations

`find static/locales/ -name '*.yaml' -exec sed -i 's/Ask Path:/Modes:\n        Ask Path:/' {} \;`

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2026-05-18 19:44:23 +02:00
PikachuEXEandGitHub 9fbe9d1e9a Fix "replace http cache" not working in dev (#9136)
* ! Fix "replace http cache" not working in dev

* ! Fix implementation for production since registerSchemesAsPrivileged can be called once only
2026-05-18 19:34:02 +02:00
PikachuEXEandGitHub 543e2cd1d1 ! Fix style of tag box (#9135) 2026-05-18 17:24:01 +02:00
absidueandGitHub c7994e341f Fix some broken translations (#9143) 2026-05-18 17:18:53 +02:00
DavidandGitHub 3c67fc5a1f Fix typo in expandSideBar getter (#9153) 2026-05-18 17:18:06 +02:00
FlorentandHosted Weblate 3661c701b7 Translated using Weblate (Breton)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Florent <florent.grouin+osmand@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/br/
Translation: FreeTube/Translations
2026-05-18 16:11:35 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0550c05377 Bump the webpack group across 1 directory with 2 updates (#9147)
Bumps the webpack group with 2 updates in the / directory: [sass-loader](https://github.com/webpack/sass-loader) and [webpack-dev-server](https://github.com/webpack/webpack-dev-server).


Updates `sass-loader` from 16.0.7 to 16.0.8
- [Release notes](https://github.com/webpack/sass-loader/releases)
- [Changelog](https://github.com/webpack/sass-loader/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/sass-loader/compare/v16.0.7...v16.0.8)

Updates `webpack-dev-server` from 5.2.3 to 5.2.4
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.3...v5.2.4)

---
updated-dependencies:
- dependency-name: sass-loader
  dependency-version: 16.0.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: webpack
- dependency-name: webpack-dev-server
  dependency-version: 5.2.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-17 10:53:41 +02:00
cyberbohandHosted Weblate dae7207114 Translated using Weblate (Indonesian)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: cyberboh <cybermay686@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/id/
Translation: FreeTube/Translations
2026-05-17 08:11:41 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
06e2ed2872 Bump the stylelint group across 1 directory with 2 updates (#9146)
Bumps the stylelint group with 2 updates in the / directory: [@double-great/stylelint-a11y](https://github.com/double-great/stylelint-a11y) and [stylelint](https://github.com/stylelint/stylelint).


Updates `@double-great/stylelint-a11y` from 3.4.11 to 3.4.12
- [Release notes](https://github.com/double-great/stylelint-a11y/releases)
- [Changelog](https://github.com/double-great/stylelint-a11y/blob/main/CHANGELOG.md)
- [Commits](https://github.com/double-great/stylelint-a11y/compare/v3.4.11...v3.4.12)

Updates `stylelint` from 17.11.0 to 17.11.1
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.11.0...17.11.1)

---
updated-dependencies:
- dependency-name: "@double-great/stylelint-a11y"
  dependency-version: 3.4.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
- dependency-name: stylelint
  dependency-version: 17.11.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-17 06:29:15 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>PikachuEXE
462df966b6 Bump @intlify/eslint-plugin-vue-i18n from 4.3.0 to 4.4.0 (via audit fix) in the eslint group (#9145)
* Bump @intlify/eslint-plugin-vue-i18n (via audit fix) in the eslint group

Bumps the eslint group with 1 update: [@intlify/eslint-plugin-vue-i18n](https://github.com/intlify/eslint-plugin-vue-i18n).


Updates `@intlify/eslint-plugin-vue-i18n` from 4.3.0 to 4.4.0
- [Release notes](https://github.com/intlify/eslint-plugin-vue-i18n/releases)
- [Changelog](https://github.com/intlify/eslint-plugin-vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/eslint-plugin-vue-i18n/compare/v4.3.0...v4.4.0)

---
updated-dependencies:
- dependency-name: "@intlify/eslint-plugin-vue-i18n"
  dependency-version: 4.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>

* * Run pnpm install locally

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: PikachuEXE <git@pikachuexe.net>
2026-05-16 16:50:42 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
df6a52777a Bump electron from 42.0.1 to 42.1.0 (#9148)
Bumps [electron](https://github.com/electron/electron) from 42.0.1 to 42.1.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v42.0.1...v42.1.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 42.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-15 15:58:48 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b74780e719 Bump pnpm/action-setup from 6.0.5 to 6.0.8 (#9144)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 6.0.5 to 6.0.8.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/8912a9102ac27614460f54aedde9e1e7f9aec20d...0e279bb959325dab635dd2c09392533439d90093)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: 6.0.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-15 15:44:29 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8c7fe6953f Bump shaka-player from 5.1.3 to 5.1.4 (#9150)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.1.3 to 5.1.4.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.1.4/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.1.3...v5.1.4)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-15 15:02:24 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
51cef7ce6d Bump vue-router from 5.0.6 to 5.0.7 (#9149)
Bumps [vue-router](https://github.com/vuejs/router) from 5.0.6 to 5.0.7.
- [Release notes](https://github.com/vuejs/router/releases)
- [Commits](https://github.com/vuejs/router/compare/v5.0.6...v5.0.7)

---
updated-dependencies:
- dependency-name: vue-router
  dependency-version: 5.0.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-15 14:00:41 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
17226ef542 Bump dompurify from 3.4.2 to 3.4.3 (#9151)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.4.2 to 3.4.3.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.2...3.4.3)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-15 11:34:38 +02:00
Asier Saratsua GarmendiaandHosted Weblate e25f76af3c Translated using Weblate (Basque)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Asier Saratsua Garmendia <asier.sarasua@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eu/
Translation: FreeTube/Translations
2026-05-11 21:11:35 +00:00
absidueandGitHub 9249198483 Add more details and emphasis to the bug report template (#9091) 2026-05-11 05:23:49 -04:00
absidueandGitHub 525a4ba430 Fix mime-db trimming after switching to pnpm (#9102) 2026-05-11 05:22:17 -04:00
PikachuEXEandGitHub b1c0625b0f * Update regions (#9125)
pnpm run get-regions
2026-05-11 05:21:42 -04:00
Mona LisaandHosted Weblate ee9da9aa86 Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-09 21:11:31 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>PikachuEXE
835f319ce2 Bump electron from 41.5.0 to 42.0.1 (#9114)
* Bump electron from 41.5.0 to 42.0.1

Bumps [electron](https://github.com/electron/electron) from 41.5.0 to 42.0.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.5.0...v42.0.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 42.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* * Update workflows to remove no longer necessary `ELECTRON_SKIP_BINARY_DOWNLOAD`

* * Update pnpm setting to remove electron from allowBuilds

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: PikachuEXE <git@pikachuexe.net>
2026-05-09 15:49:50 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>PikachuEXE
f1342ddb2f Bump the eslint group across 1 directory with 3 updates (#9107)
* Bump the eslint group across 1 directory with 3 updates

Bumps the eslint group with 3 updates in the / directory: [eslint](https://github.com/eslint/eslint), [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) and [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue).


Updates `eslint` from 10.2.1 to 10.3.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.2.1...v10.3.0)

Updates `eslint-plugin-n` from 17.24.0 to 18.0.1
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.24.0...v18.0.1)

Updates `eslint-plugin-vue` from 10.9.0 to 10.9.1
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Changelog](https://github.com/vuejs/eslint-plugin-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v10.9.0...v10.9.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-n
  dependency-version: 18.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
- dependency-name: eslint-plugin-vue
  dependency-version: 10.9.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>

* ! Fix lint error

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: PikachuEXE <git@pikachuexe.net>
2026-05-09 11:24:54 +02:00
Mona LisaandHosted Weblate 57c1ac4c9f Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-09 11:11:36 +02:00
Mona LisaandHosted Weblate 6cba55735e Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-09 09:35:53 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
66abf6831f Bump terser from 5.46.2 to 5.47.1 (#9111)
Bumps [terser](https://github.com/terser/terser) from 5.46.2 to 5.47.1.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.46.2...v5.47.1)

---
updated-dependencies:
- dependency-name: terser
  dependency-version: 5.47.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-09 09:20:08 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2c90a9c75f Bump @babel/preset-env in the babel group across 1 directory (#9104)
Bumps the babel group with 1 update in the / directory: [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env).


Updates `@babel/preset-env` from 7.29.3 to 7.29.5
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.5/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-version: 7.29.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-09 05:53:27 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fa7bdaf03e Bump vue from 3.5.33 to 3.5.34 (#9112)
Bumps [vue](https://github.com/vuejs/core) from 3.5.33 to 3.5.34.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/compare/v3.5.33...v3.5.34)

---
updated-dependencies:
- dependency-name: vue
  dependency-version: 3.5.34
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-09 05:53:05 +08:00
Milo IvirandHosted Weblate 049565c136 Translated using Weblate (Croatian)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Milo Ivir <mail@milotype.de>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hr/
Translation: FreeTube/Translations
2026-05-08 20:11:37 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
e3a433a103 Bump globals from 17.5.0 to 17.6.0 (#9110)
Bumps [globals](https://github.com/sindresorhus/globals) from 17.5.0 to 17.6.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.5.0...v17.6.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 19:14:37 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5e8f9f4658 Bump shaka-player from 5.1.2 to 5.1.3 (#9113)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.1.2 to 5.1.3.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.1.3/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.1.2...v5.1.3)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 18:45:01 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
6abc11ce1a Bump the stylelint group with 3 updates (#9108)
Bumps the stylelint group with 3 updates: [@double-great/stylelint-a11y](https://github.com/double-great/stylelint-a11y), [postcss](https://github.com/postcss/postcss) and [stylelint](https://github.com/stylelint/stylelint).


Updates `@double-great/stylelint-a11y` from 3.4.10 to 3.4.11
- [Release notes](https://github.com/double-great/stylelint-a11y/releases)
- [Changelog](https://github.com/double-great/stylelint-a11y/blob/main/CHANGELOG.md)
- [Commits](https://github.com/double-great/stylelint-a11y/compare/v3.4.10...v3.4.11)

Updates `postcss` from 8.5.13 to 8.5.14
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.13...8.5.14)

Updates `stylelint` from 17.9.1 to 17.11.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.9.1...17.11.0)

---
updated-dependencies:
- dependency-name: "@double-great/stylelint-a11y"
  dependency-version: 3.4.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
- dependency-name: postcss
  dependency-version: 8.5.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
- dependency-name: stylelint
  dependency-version: 17.11.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 18:39:02 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8fd989d7e6 Bump marked from 18.0.2 to 18.0.3 (#9109)
Bumps [marked](https://github.com/markedjs/marked) from 18.0.2 to 18.0.3.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v18.0.2...v18.0.3)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 18.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 18:32:32 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
930ae41b1f Bump pnpm/action-setup from 6.0.4 to 6.0.5 (#9103)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 6.0.4 to 6.0.5.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/26f6d4f2c533a43e6b5da0b4a5dd983f98f7b49a...8912a9102ac27614460f54aedde9e1e7f9aec20d)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: 6.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 18:31:30 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4fbeee4953 Bump actions/labeler from 6.0.1 to 6.1.0 (#9106)
Bumps [actions/labeler](https://github.com/actions/labeler) from 6.0.1 to 6.1.0.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/634933edcd8ababfe52f92936142cc22ac488b1b...f27b608878404679385c85cfa523b85ccb86e213)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 18:27:02 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4b4ae0aba0 Bump github/codeql-action from 4.35.2 to 4.35.4 (#9105)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.2 to 4.35.4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/95e58e9a2cdfd71adc6e0353d5c52f41a045d225...68bde559dea0fdcac2102bfdf6230c5f70eb485e)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 18:26:47 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
12f958a677 Bump vue-i18n from 11.4.0 to 11.4.2 (#9115)
Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 11.4.0 to 11.4.2.
- [Release notes](https://github.com/intlify/vue-i18n/releases)
- [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/vue-i18n/commits/v11.4.2/packages/vue-i18n)

---
updated-dependencies:
- dependency-name: vue-i18n
  dependency-version: 11.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-08 18:25:53 +02:00
Shrek3010andHosted Weblate 5a24d3b0fa Translated using Weblate (Slovak)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Shrek3010 <martinlukac2244@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sk/
Translation: FreeTube/Translations
2026-05-08 17:11:36 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>absidue
9351cbd7e6 Bump electron from 41.3.0 to 41.5.0 (#9087)
* Bump electron from 41.3.0 to 41.5.0

Bumps [electron](https://github.com/electron/electron) from 41.3.0 to 41.5.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.3.0...v41.5.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix imagecache URL scheme

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2026-05-06 06:24:22 +08:00
pacavarnandHosted Weblate 803e504fb2 Translated using Weblate (Bosnian)
Currently translated at 54.4% (526 of 966 strings)

Co-authored-by: pacavarn <nahadster@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bs/
Translation: FreeTube/Translations
2026-05-04 21:09:53 +02:00
MichalisandHosted Weblate fadff152e5 Translated using Weblate (Greek)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Michalis <michalisntovas@yahoo.gr>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/el/
Translation: FreeTube/Translations
2026-05-03 16:09:54 +00:00
MichalisandHosted Weblate 15b6738b28 Translated using Weblate (Greek)
Currently translated at 99.5% (962 of 966 strings)

Co-authored-by: Michalis <michalisntovas@yahoo.gr>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/el/
Translation: FreeTube/Translations
2026-05-03 14:09:56 +00:00
pacavarnandHosted Weblate 46af364623 Translated using Weblate (Bosnian)
Currently translated at 52.3% (506 of 966 strings)

Co-authored-by: pacavarn <nahadster@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bs/
Translation: FreeTube/Translations
2026-05-02 22:09:57 +00:00
Mona LisaandHosted Weblate 55ee04f9a2 Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-02 22:09:53 +02:00
Mona LisaandHosted Weblate d9ce8bd414 Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-02 20:23:01 +02:00
Mona LisaandHosted Weblate 63d2b46cbe Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-02 19:59:50 +02:00
Mona LisaandHosted Weblate 20a3763ffd Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-02 19:26:09 +02:00
Mona LisaandHosted Weblate 776c1672d1 Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-02 18:41:27 +02:00
Loc HuynhandHosted Weblate bb43e2ab0c Translated using Weblate (Vietnamese)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Loc Huynh <huynhloc.contact@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/vi/
Translation: FreeTube/Translations
2026-05-02 10:09:55 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d03bf7ff74 Bump shaka-player from 5.1.1 to 5.1.2 (#9088)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.1.2/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-02 07:15:02 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
28d0ec56f8 Bump @babel/preset-env in the babel group across 1 directory (#9083)
Bumps the babel group with 1 update in the / directory: [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env).


Updates `@babel/preset-env` from 7.29.2 to 7.29.3
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.3/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-version: 7.29.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-02 07:14:43 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2f9d533768 Bump the eslint group with 2 updates (#9084)
Bumps the eslint group with 2 updates: [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) and [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml).


Updates `eslint-plugin-promise` from 7.2.1 to 7.3.0
- [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v7.2.1...v7.3.0)

Updates `eslint-plugin-yml` from 3.3.1 to 3.3.2
- [Release notes](https://github.com/ota-meshi/eslint-plugin-yml/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-yml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-yml/compare/v3.3.1...v3.3.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-promise
  dependency-version: 7.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-yml
  dependency-version: 3.3.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-01 22:08:12 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
dae3baadb8 Bump the stylelint group with 2 updates (#9085)
Bumps the stylelint group with 2 updates: [postcss](https://github.com/postcss/postcss) and [stylelint](https://github.com/stylelint/stylelint).


Updates `postcss` from 8.5.10 to 8.5.13
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.10...8.5.13)

Updates `stylelint` from 17.9.0 to 17.9.1
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.9.0...17.9.1)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
- dependency-name: stylelint
  dependency-version: 17.9.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-01 21:58:00 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
37157135b6 Bump swiper from 12.1.3 to 12.1.4 (#9086)
Bumps [swiper](https://github.com/nolimits4web/Swiper) from 12.1.3 to 12.1.4.
- [Release notes](https://github.com/nolimits4web/Swiper/releases)
- [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nolimits4web/Swiper/compare/v12.1.3...v12.1.4)

---
updated-dependencies:
- dependency-name: swiper
  dependency-version: 12.1.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-01 21:38:17 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2cfd93e96f Bump pnpm/action-setup from 6.0.3 to 6.0.4 (#9082)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 6.0.3 to 6.0.4.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/903f9c1a6ebcba6cf41d87230be49611ac97822e...26f6d4f2c533a43e6b5da0b4a5dd983f98f7b49a)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: 6.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-01 21:22:06 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f320dc2203 Bump dompurify from 3.4.1 to 3.4.2 (#9089)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.1...3.4.2)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-01 21:20:35 +02:00
Mona LisaandHosted Weblate b1b0d28966 Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <monalisa@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-05-01 20:09:54 +02:00
pacavarnandHosted Weblate 58e5d8243a Translated using Weblate (Bosnian)
Currently translated at 39.2% (379 of 966 strings)

Co-authored-by: pacavarn <nahadster@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bs/
Translation: FreeTube/Translations
2026-05-01 15:09:52 +02:00
Maksym DilanianandHosted Weblate bbfa345c81 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Maksym Dilanian <dilanyan.maxim@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/uk/
Translation: FreeTube/Translations
2026-05-01 11:10:00 +00:00
pacavarnandHosted Weblate 7357ce8a76 Translated using Weblate (Bosnian)
Currently translated at 35.1% (340 of 966 strings)

Co-authored-by: pacavarn <nahadster@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bs/
Translation: FreeTube/Translations
2026-05-01 11:09:58 +00:00
pacavarnandHosted Weblate 3a22df9a2e Translated using Weblate (Bosnian)
Currently translated at 33.5% (324 of 966 strings)

Co-authored-by: pacavarn <nahadster@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bs/
Translation: FreeTube/Translations
2026-05-01 10:09:55 +02:00
pacavarnandHosted Weblate f2e1cc04e6 Translated using Weblate (Bosnian)
Currently translated at 24.4% (236 of 966 strings)

Co-authored-by: pacavarn <nahadster@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bs/
Translation: FreeTube/Translations
2026-04-29 19:10:07 +00:00
pacavarnandHosted Weblate 1ab55af28c Translated using Weblate (Bosnian)
Currently translated at 12.7% (123 of 966 strings)

Co-authored-by: pacavarn <nahadster@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bs/
Translation: FreeTube/Translations
2026-04-28 22:10:00 +00:00
JaapandHosted Weblate 49d5079a83 Translated using Weblate (Dutch)
Currently translated at 99.3% (960 of 966 strings)

Co-authored-by: Jaap <weblate.2026@am6.nl>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nl/
Translation: FreeTube/Translations
2026-04-27 15:09:56 +00:00
Hosted Weblate a4b3a7b7cd Merge branch 'origin/development' into Weblate. 2026-04-27 04:33:21 +02:00
absidueandGitHub 89bb405d60 Fix not being able to select and copy stats in the player (#9071) 2026-04-27 10:33:14 +08:00
PixelcodeandHosted Weblate ad3740cd5e Translated using Weblate (German)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Pixelcode <pixelcode@dismail.de>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
Translation: FreeTube/Translations
2026-04-27 04:09:52 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9c2deea650 Bump the eslint group across 1 directory with 2 updates (#9055)
Bumps the eslint group with 2 updates in the / directory: [eslint](https://github.com/eslint/eslint) and [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue).


Updates `eslint` from 10.2.0 to 10.2.1
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.2.0...v10.2.1)

Updates `eslint-plugin-vue` from 10.8.0 to 10.9.0
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Changelog](https://github.com/vuejs/eslint-plugin-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v10.8.0...v10.9.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint-plugin-vue
  dependency-version: 10.9.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 23:46:52 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
63f28109d3 Bump vue-router from 5.0.4 to 5.0.6 (#9057)
Bumps [vue-router](https://github.com/vuejs/router) from 5.0.4 to 5.0.6.
- [Release notes](https://github.com/vuejs/router/releases)
- [Commits](https://github.com/vuejs/router/compare/v5.0.4...v5.0.6)

---
updated-dependencies:
- dependency-name: vue-router
  dependency-version: 5.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 19:18:58 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>efb4f5ff-1298-471a-8973-3d47447115dc
4fc006b78a Bump shaka-player from 5.1.0 to 5.1.1 (#9059)
* Bump shaka-player from 5.1.0 to 5.1.1

Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.1.1/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.1.0...v5.1.1)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update ft-shaka-video-player.js

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: efb4f5ff-1298-471a-8973-3d47447115dc <73130443+efb4f5ff-1298-471a-8973-3d47447115dc@users.noreply.github.com>
2026-04-26 12:50:27 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
71417b8ff6 Bump electron from 41.2.1 to 41.3.0 (#9063)
Bumps [electron](https://github.com/electron/electron) from 41.2.1 to 41.3.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.2.1...v41.3.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 12:46:40 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1029a7d9ec Bump vue from 3.5.32 to 3.5.33 (#9064)
Bumps [vue](https://github.com/vuejs/core) from 3.5.32 to 3.5.33.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/compare/v3.5.32...v3.5.33)

---
updated-dependencies:
- dependency-name: vue
  dependency-version: 3.5.33
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 12:45:42 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
97511fb05a Bump marked from 18.0.1 to 18.0.2 (#9058)
Bumps [marked](https://github.com/markedjs/marked) from 18.0.1 to 18.0.2.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v18.0.1...v18.0.2)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 18.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 14:42:58 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d8fecbdf69 Bump stylelint in the stylelint group across 1 directory (#9056)
Bumps the stylelint group with 1 update in the / directory: [stylelint](https://github.com/stylelint/stylelint).


Updates `stylelint` from 17.8.0 to 17.9.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.8.0...17.9.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 17.9.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 14:16:48 +02:00
pacavarnandHosted Weblate 84a81464fe Translated using Weblate (Bosnian)
Currently translated at 9.9% (96 of 966 strings)

Co-authored-by: pacavarn <nahadster@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bs/
Translation: FreeTube/Translations
2026-04-26 12:09:55 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
e39e75ff1e Bump picomatch from 2.3.1 to 2.3.2 (#9047)
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 14:09:18 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5040abae67 Bump dompurify from 3.4.0 to 3.4.1 (#9060)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.0...3.4.1)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 14:05:23 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8903483d70 Bump vue-i18n from 11.3.2 to 11.4.0 (#9061)
Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 11.3.2 to 11.4.0.
- [Release notes](https://github.com/intlify/vue-i18n/releases)
- [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/vue-i18n/commits/v11.4.0/packages/vue-i18n)

---
updated-dependencies:
- dependency-name: vue-i18n
  dependency-version: 11.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 11:59:07 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c2b411f5f9 Bump @xmldom/xmldom from 0.8.12 to 0.8.13 (#9045)
Bumps [@xmldom/xmldom](https://github.com/xmldom/xmldom) from 0.8.12 to 0.8.13.
- [Release notes](https://github.com/xmldom/xmldom/releases)
- [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/xmldom/xmldom/compare/0.8.12...0.8.13)

---
updated-dependencies:
- dependency-name: "@xmldom/xmldom"
  dependency-version: 0.8.13
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 13:53:31 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
e8a3ae7545 Bump terser from 5.46.1 to 5.46.2 (#9062)
Bumps [terser](https://github.com/terser/terser) from 5.46.1 to 5.46.2.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.46.1...v5.46.2)

---
updated-dependencies:
- dependency-name: terser
  dependency-version: 5.46.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 13:52:45 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9c50761d62 Bump actions/setup-node from 6.3.0 to 6.4.0 (#9052)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/53b83947a5a98c8d113130e565377fae1a50d02f...48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 13:52:06 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
320df47694 Bump calibreapp/image-actions (#9054)
Bumps [calibreapp/image-actions](https://github.com/calibreapp/image-actions) from 4f7260f5dbd809ec86d03721c1ad71b8a841d3e0 to e2cc8db5d49c849e00844dfebf01438318e96fa2.
- [Release notes](https://github.com/calibreapp/image-actions/releases)
- [Commits](https://github.com/calibreapp/image-actions/compare/4f7260f5dbd809ec86d03721c1ad71b8a841d3e0...e2cc8db5d49c849e00844dfebf01438318e96fa2)

---
updated-dependencies:
- dependency-name: calibreapp/image-actions
  dependency-version: e2cc8db5d49c849e00844dfebf01438318e96fa2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 13:51:23 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
697a16043f Bump pnpm/action-setup from 5.0.0 to 6.0.3 (#9053)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 5.0.0 to 6.0.3.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/fc06bc1257f339d1d5d8b3a19a8cae5388b55320...903f9c1a6ebcba6cf41d87230be49611ac97822e)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 13:51:09 +02:00
efb4f5ff-1298-471a-8973-3d47447115dcandGitHub c4acdea483 change leftover yarn mentions to pnpm (#9048) 2026-04-26 07:23:10 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
db70742e59 Bump minimatch from 3.1.2 to 3.1.5 (#9046)
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.2 to 3.1.5.
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-26 13:21:50 +02:00
bca0ef3458 Update all scripts to use pnpm instead of npm-run-all2 (#9049)
* * Update all scripts to use pnpm instead of npm-run-all2

* - Remove npm-run-all2

* ! Disable pnpm setting dedupePeers to workaround old pnpm issue in dependabot

* Apply suggestions from code review

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2026-04-26 07:05:39 -04:00
pacavarnandHosted Weblate 7a40be9398 Translated using Weblate (Bosnian)
Currently translated at 9.9% (96 of 966 strings)

Co-authored-by: pacavarn <nahadster@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bs/
Translation: FreeTube/Translations
2026-04-26 10:09:53 +00:00
Rhoslyn PrysandHosted Weblate b55e623002 Translated using Weblate (Welsh)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Rhoslyn Prys <rprys@posteo.net>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cy/
Translation: FreeTube/Translations
2026-04-24 20:09:53 +00:00
1a61293aec Switch from yarn to pnpm as package manager (#9041)
* *- pnpm import & Remove yarn.lock file

* * Enable pnpm dedupePeers

* * Update other places to replace yarn with pnpm

* ! Fix electron not installed in dev

* ! Fix directly required dependency `terser` not specified in package.json

* Update pnpm-workspace.yaml

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2026-04-23 09:21:41 +02:00
MaxandHosted Weblate 25e986f00a Translated using Weblate (Bulgarian)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Max <no_greediness@yahoo.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bg/
Translation: FreeTube/Translations
2026-04-22 15:09:52 +02:00
0e65f4cd90 Fix opening playlists in external players not working when ignore default args is enabled (#8995)
* Fix opening playlists in external players not working when ignore default args is enabled

* Add back the video ID check to improve readability

Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>

---------

Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
2026-04-22 12:35:27 +02:00
893e603508 Fix SOCKS proxies not using authentication by hiding the username and password fields (#9038)
* Fix SOCKS proxies showing credentials fields

* Fix typo

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2026-04-22 12:28:36 +02:00
MaxandHosted Weblate dd1a6703da Translated using Weblate (Bulgarian)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Max <no_greediness@yahoo.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bg/
Translation: FreeTube/Translations
2026-04-22 12:09:54 +02:00
MaxandHosted Weblate 12bf7bbd23 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Max <no_greediness@yahoo.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bg/
Translation: FreeTube/Translations
2026-04-22 06:09:55 +02:00
Mona LisaandHosted Weblate 6b503f2e15 Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <nickwick@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-04-22 06:09:54 +02:00
Mona LisaandHosted Weblate 69a18c68d4 Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <nickwick@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-04-19 22:09:52 +02:00
Mona LisaandHosted Weblate badee777fa Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <nickwick@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-04-19 19:10:25 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2010a26768 Bump html-webpack-plugin in the webpack group across 1 directory (#9036)
Bumps the webpack group with 1 update in the / directory: [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin).


Updates `html-webpack-plugin` from 5.6.6 to 5.6.7
- [Release notes](https://github.com/jantimon/html-webpack-plugin/releases)
- [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v5.6.6...v5.6.7)

---
updated-dependencies:
- dependency-name: html-webpack-plugin
  dependency-version: 5.6.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 18:20:11 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>absidue
9724521ac7 Bump shaka-player from 5.0.10 to 5.1.0 (#9030)
* Bump shaka-player from 5.0.10 to 5.1.0

Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.0.10 to 5.1.0.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/main/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.0.10...v5.1.0)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix inverted/wrong scroll direction for volume bar scrolling

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2026-04-18 09:06:12 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>absidue
7acb00ea9e Bump globals from 17.4.0 to 17.5.0 (#9034)
* Bump globals from 17.4.0 to 17.5.0

Bumps [globals](https://github.com/sindresorhus/globals) from 17.4.0 to 17.5.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.4.0...v17.5.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Remove Sanitizer global from eslint config as it is included in globals now

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2026-04-18 07:56:28 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
bbbcb9c55b Bump @fortawesome/vue-fontawesome in the fortawesome group (#9028)
Bumps the fortawesome group with 1 update: [@fortawesome/vue-fontawesome](https://github.com/FortAwesome/vue-fontawesome).


Updates `@fortawesome/vue-fontawesome` from 3.1.3 to 3.2.0
- [Release notes](https://github.com/FortAwesome/vue-fontawesome/releases)
- [Changelog](https://github.com/FortAwesome/vue-fontawesome/blob/3.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/vue-fontawesome/compare/3.1.3...3.2.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/vue-fontawesome"
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:46:43 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c36f735036 Bump webpack from 5.106.1 to 5.106.2 in the webpack group (#9029)
Bumps the webpack group with 1 update: [webpack](https://github.com/webpack/webpack).


Updates `webpack` from 5.106.1 to 5.106.2
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.106.1...v5.106.2)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.106.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:46:30 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
70fd41ff4f Bump electron from 41.2.0 to 41.2.1 (#9031)
Bumps [electron](https://github.com/electron/electron) from 41.2.0 to 41.2.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.2.0...v41.2.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:46:17 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
176293422d Bump lefthook from 2.1.5 to 2.1.6 (#9032)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 2.1.5 to 2.1.6.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v2.1.5...v2.1.6)

---
updated-dependencies:
- dependency-name: lefthook
  dependency-version: 2.1.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:46:01 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
6631f333a5 Bump marked from 18.0.0 to 18.0.1 (#9033)
Bumps [marked](https://github.com/markedjs/marked) from 18.0.0 to 18.0.1.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v18.0.0...v18.0.1)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 18.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:45:54 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
cbbf891f51 Bump actions/upload-artifact from 7.0.0 to 7.0.1 (#9026)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:45:19 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1abc92d68a Bump the stylelint group with 3 updates (#9027)
Bumps the stylelint group with 3 updates: [@double-great/stylelint-a11y](https://github.com/double-great/stylelint-a11y), [postcss](https://github.com/postcss/postcss) and [stylelint](https://github.com/stylelint/stylelint).


Updates `@double-great/stylelint-a11y` from 3.4.9 to 3.4.10
- [Release notes](https://github.com/double-great/stylelint-a11y/releases)
- [Changelog](https://github.com/double-great/stylelint-a11y/blob/main/CHANGELOG.md)
- [Commits](https://github.com/double-great/stylelint-a11y/compare/v3.4.9...v3.4.10)

Updates `postcss` from 8.5.9 to 8.5.10
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.9...8.5.10)

Updates `stylelint` from 17.6.0 to 17.8.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/17.6.0...17.8.0)

---
updated-dependencies:
- dependency-name: "@double-great/stylelint-a11y"
  dependency-version: 3.4.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
- dependency-name: postcss
  dependency-version: 8.5.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
- dependency-name: stylelint
  dependency-version: 17.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:45:16 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
cd8ef5358c Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (#9024)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 8.1.0 to 8.1.1.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/c0f553fe549906ede9cf27b5156039d195d2ece0...5f6978faf089d4d20b00c7766989d076bb2fc7f1)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: 8.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:41:01 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
e8085007c3 Bump actions/cache from 5.0.4 to 5.0.5 (#9025)
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.4 to 5.0.5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/668228422ae6a00e4ad889ee87cd7109ec5666a7...27d5ce7f107fe9357f9df03efb73ab90386fccae)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 5.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:40:50 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
e88068ac0e Bump calibreapp/image-actions (#9023)
Bumps [calibreapp/image-actions](https://github.com/calibreapp/image-actions) from 03c976c29803442fc4040a9de5509669e7759b81 to 4f7260f5dbd809ec86d03721c1ad71b8a841d3e0.
- [Release notes](https://github.com/calibreapp/image-actions/releases)
- [Commits](https://github.com/calibreapp/image-actions/compare/03c976c29803442fc4040a9de5509669e7759b81...4f7260f5dbd809ec86d03721c1ad71b8a841d3e0)

---
updated-dependencies:
- dependency-name: calibreapp/image-actions
  dependency-version: 4f7260f5dbd809ec86d03721c1ad71b8a841d3e0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:40:45 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3600bcfbf5 Bump github/codeql-action from 4.35.1 to 4.35.2 (#9022)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.35.1 to 4.35.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/c10b8064de6f491fea524254123dbe5e09572f13...95e58e9a2cdfd71adc6e0353d5c52f41a045d225)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-18 06:40:43 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
75fa0e7d76 Bump dompurify from 3.3.3 to 3.4.0 (#9017)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.3.3 to 3.4.0.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.3.3...3.4.0)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-16 18:09:10 +02:00
LaKatoandHosted Weblate a9683d5026 Translated using Weblate (Esperanto)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-16 03:09:54 +02:00
dturboandHosted Weblate 27ff0d3f97 Translated using Weblate (Filipino)
Currently translated at 11.3% (110 of 966 strings)

Co-authored-by: dturbo <dturbo@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fil/
Translation: FreeTube/Translations
2026-04-15 04:10:01 +00:00
LaKatoandHosted Weblate 84319d616e Translated using Weblate (Esperanto)
Currently translated at 97.1% (938 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-15 04:09:59 +00:00
Mona LisaandHosted Weblate a0b9a0bc40 Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <nickwick@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-04-15 04:09:58 +00:00
LaKatoandHosted Weblate 59f9a66756 Translated using Weblate (Esperanto)
Currently translated at 90.0% (870 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-15 02:10:00 +02:00
absidueandGitHub 2dc396f1eb Fix TypeScript 6 deprecations in jsconfig (#9004) 2026-04-14 08:40:18 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3ee6977e0e Bump follow-redirects from 1.15.6 to 1.16.0 (#9007)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.6 to 1.16.0.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.6...v1.16.0)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-version: 1.16.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-14 07:43:05 +02:00
LaKatoandHosted Weblate a3c75c58c0 Translated using Weblate (Esperanto)
Currently translated at 88.0% (851 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-14 05:09:52 +00:00
LaKatoandHosted Weblate ee867437e5 Translated using Weblate (Esperanto)
Currently translated at 87.6% (847 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-14 05:09:55 +02:00
LaKatoandHosted Weblate 1c7f2a219b Translated using Weblate (Esperanto)
Currently translated at 82.2% (795 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-12 23:09:57 +00:00
Michał StankiewiczandGitHub f64b77eadc Update README with additional information about RedirectTube (#8999) 2026-04-13 06:07:58 +08:00
LaKatoandHosted Weblate 8fff7f151f Translated using Weblate (Esperanto)
Currently translated at 77.9% (753 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-12 06:09:56 +02:00
LaKatoandHosted Weblate 19c8bca375 Translated using Weblate (Esperanto)
Currently translated at 75.1% (726 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-12 04:09:53 +02:00
absidueandGitHub ec850a551c Fix spacing in the window title on the playlist page (#8994)
* Fix spacing in the window title on the playlist page

* Deduplicate adding the FreeTube suffix to the window title
2026-04-12 08:28:40 +08:00
absidueandGitHub fe30cfd1be Fix playlist import object cloning error (#8993) 2026-04-12 08:25:41 +08:00
8a101b0d3e Feature: Drag and Drop (#8681)
* fix: prevent video thumbnail from being dragged

Signed-off-by: Android789515 <derflug@mailfence.com>

* feat: add drag and drop to playlist list view

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: null error for draggedVideo prop

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: prevent playlist thumbnail from being dragged

Signed-off-by: Android789515 <derflug@mailfence.com>

* refactor: move preventJankyDrag check to playlist

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: disappearing dragged videos

Signed-off-by: Android789515 <derflug@mailfence.com>

* refactor: simplify dragged video setter

Signed-off-by: Android789515 <derflug@mailfence.com>

* feat: drag and drop for grid view

Signed-off-by: Android789515 <derflug@mailfence.com>

* style: reoder modified lines

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: videos trying to drop over themselves

Signed-off-by: Android789515 <derflug@mailfence.com>

* refactor: cleanup after git rebase

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: unable to click video components after drag

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: unable to drag videos on first attempt

Signed-off-by: Android789515 <derflug@mailfence.com>

* refactor: simplify video plucking logic

Signed-off-by: Android789515 <derflug@mailfence.com>

* refactor: drag and drop module

Signed-off-by: Android789515 <derflug@mailfence.com>

* docs: clarify ft list video style rule

Signed-off-by: Android789515 <derflug@mailfence.com>

* docs: add jsdoc typings

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: range populating with NaN

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: grid drag and drop issue

Fix inability to drag grid videos to different rows.

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: video drag image rubber banding after move

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: prevent draggable channel playlist videos

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: grab icon for playlist videos in grid layout

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: grab bar positioning at different screen sizes

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: context menu items missing for video thumbnails

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: free up cursor style for draggable elements when not dragging

Signed-off-by: Android789515 <derflug@mailfence.com>

* feat: grab cursor when hovering grab bar

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: grabbing cursor being overridden

Signed-off-by: Android789515 <derflug@mailfence.com>

* refactor: use pure css for showing or hiding grab bar

Signed-off-by: Android789515 <derflug@mailfence.com>

* feat: auto scroll zones for drag and drop

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: trying to emit video drag when not dragging

Signed-off-by: Android789515 <derflug@mailfence.com>

* docs: improve js doc for drag and drop helper

Signed-off-by: Android789515 <derflug@mailfence.com>

* feat: add touch event support for drag and drop

Signed-off-by: Android789515 <derflug@mailfence.com>

* Revert "feat: add touch event support for drag and drop"

This reverts commit 71b78cea2046c3d46051115848fee1f9e9970f11.

* refactor: use vue directive for auto scroll hot zone rendering

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: undraggable video title, channel, and thumbnail

Signed-off-by: Android789515 <derflug@mailfence.com>

* refactor: move ft list video grab bar to the top

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: allow drag and drop to work on touch devices

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: grab bar showing when sort is not custom

Signed-off-by: Android789515 <derflug@mailfence.com>

* refactor: rename isUserPlaylist

Signed-off-by: Android789515 <derflug@mailfence.com>

* refactor: memoize drag handlers

Signed-off-by: Android789515 <derflug@mailfence.com>

* docs: clarify drag video handler

Signed-off-by: Android789515 <derflug@mailfence.com>

* fix: remove unused css rule

Signed-off-by: Android789515 <derflug@mailfence.com>

* docs: clarify ft list video grab bar styles

Signed-off-by: Android789515 <derflug@mailfence.com>

* docs: clarify video thumbnail style change

Signed-off-by: Android789515 <derflug@mailfence.com>

* * Apply code review changes about AutoScrollWrapper

* * Apply code review changes about unnecessary computed

* * Apply code review changes about event handler

* ! Fix style of playlist cards

* $ Call store.dispatch once per move

* $ Remove unused range function

* Fix style of playlist cards~~

* ! Fix link dragging

* ! Fix being able to drag vidoes via dragging non grab area

* $ Fix lint warnings

* ! Fix videos kept being moved when hovered over certain item

Also only save once on drag end

* * Make some code review changes

* ! Fix unable to drag item back to its original postion

* ! Fix mobile cannot drag list view items

* ! Fix mobile cannot drag list view items (missing changes) & lint warnings

* ! Fix text cannot be selected, can be grabbed via the space between thumbnail and info

* ! Fix able to drag the sole video in user playlist

* * Update list view to always show grab bar if draggable

* ! Fix items moving back and forth if video dragged to a certain position

* ! Fix incorrect behabiour when dragging playlist item with duplicate video in the same playlist

* $ Use computer ref instead of function

* ! Fix unable to drag from top/bottom areas

---------

Signed-off-by: Android789515 <derflug@mailfence.com>
Co-authored-by: Android789515 <derflug@mailfence.com>
2026-04-11 12:46:35 -04:00
LaKatoandHosted Weblate dcf0efea28 Translated using Weblate (Esperanto)
Currently translated at 65.1% (629 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-11 14:09:55 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
03243d2231 Bump webpack from 5.105.4 to 5.106.0 in the webpack group (#8984)
Bumps the webpack group with 1 update: [webpack](https://github.com/webpack/webpack).


Updates `webpack` from 5.105.4 to 5.106.0
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.105.4...v5.106.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.106.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-11 08:47:54 +08:00
Aditya MishraandGitHub e44c139473 fix: apply 'hide watched' filter before per-channel video limit (#8973)
* fix: apply 'hide watched' filter before per-channel video limit

* refactor: apply early return for isCommunity per PR feedback
2026-04-11 08:47:03 +08:00
LaKatoandHosted Weblate 0169b4d1eb Translated using Weblate (Esperanto)
Currently translated at 61.6% (596 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-11 01:09:53 +02:00
LaKatoandHosted Weblate 7f6d21e7c6 Translated using Weblate (Esperanto)
Currently translated at 58.3% (564 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-10 23:09:52 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0a7731986e Bump electron from 41.1.1 to 41.2.0 (#8987)
Bumps [electron](https://github.com/electron/electron) from 41.1.1 to 41.2.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.1.1...v41.2.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 18:06:49 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
53c514a29c Bump marked from 17.0.5 to 18.0.0 (#8986)
Bumps [marked](https://github.com/markedjs/marked) from 17.0.5 to 18.0.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Commits](https://github.com/markedjs/marked/compare/v17.0.5...v18.0.0)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 18.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 18:00:56 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8dcd5bc6a4 Bump vue-i18n from 11.3.0 to 11.3.2 (#8985)
Bumps [vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n) from 11.3.0 to 11.3.2.
- [Release notes](https://github.com/intlify/vue-i18n/releases)
- [Changelog](https://github.com/intlify/vue-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/intlify/vue-i18n/commits/v11.3.2/packages/vue-i18n)

---
updated-dependencies:
- dependency-name: vue-i18n
  dependency-version: 11.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 17:55:46 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
eaa08c2ddc Bump postcss from 8.5.8 to 8.5.9 in the stylelint group (#8983)
Bumps the stylelint group with 1 update: [postcss](https://github.com/postcss/postcss).


Updates `postcss` from 8.5.8 to 8.5.9
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.8...8.5.9)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 17:49:31 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d1d1f84ade Bump eslint from 10.1.0 to 10.2.0 in the eslint group (#8982)
Bumps the eslint group with 1 update: [eslint](https://github.com/eslint/eslint).


Updates `eslint` from 10.1.0 to 10.2.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.1.0...v10.2.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 17:45:47 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
af9bdab5ab Bump lefthook from 2.1.4 to 2.1.5 (#8988)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 2.1.4 to 2.1.5.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v2.1.4...v2.1.5)

---
updated-dependencies:
- dependency-name: lefthook
  dependency-version: 2.1.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 17:42:23 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
45151a76f6 Bump shaka-player from 5.0.9 to 5.0.10 (#8989)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.0.9 to 5.0.10.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.0.10/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.0.9...v5.0.10)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.0.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-10 17:38:58 +02:00
André JesusandGitHub 05f494b89a replace SideNav 'closed' class to 'open' (#8389)
* replace SideNav 'closed' class to 'open'

The 'open' state now becomes the default for styling. This has three
advantages:
- This makes it consistent with the rest of the application logic (isOpen)
- Simplifies styling. The open styles can now be done for desktop
  easily with a media query
- Fixes #6091 [Bug]: Theme Settings > Expand side bar by default is affecting the bottom navigation for mobile devices

* rename 'open' css class to 'opened' in SideNav

* Sidenav: removed navChannel right margin when opened

* refactor(SideNav): removed redundant margin css rules

* fix: Channels icon too big
2026-04-10 17:37:25 +02:00
LaKatoandHosted Weblate 059d5d8913 Translated using Weblate (Esperanto)
Currently translated at 56.3% (544 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-10 04:09:52 +00:00
LaKatoandHosted Weblate 90318b438a Translated using Weblate (Esperanto)
Currently translated at 52.7% (510 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-10 02:09:49 +02:00
LaKatoandHosted Weblate dc64bd062f Translated using Weblate (Esperanto)
Currently translated at 51.2% (495 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-10 00:09:55 +02:00
Andi ChandlerandHosted Weblate b5dd2847ea Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Andi Chandler <andi@gowling.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/en_GB/
Translation: FreeTube/Translations
2026-04-09 20:09:57 +00:00
Jeff HuangandHosted Weblate 2e7b0606f0 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Jeff Huang <s8321414@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hant/
Translation: FreeTube/Translations
2026-04-09 03:10:49 +00:00
LaKatoandHosted Weblate 26c843a01a Translated using Weblate (Esperanto)
Currently translated at 48.8% (472 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-09 03:10:48 +00:00
LaKatoandHosted Weblate 878096c1c3 Translated using Weblate (Esperanto)
Currently translated at 44.3% (428 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-09 01:09:51 +00:00
Sérgio MarquesandHosted Weblate 23048ac258 Translated using Weblate (Portuguese)
Currently translated at 99.4% (961 of 966 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 97.8% (945 of 966 strings)

Co-authored-by: Sérgio Marques <smarquespt@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt/
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_PT/
Translation: FreeTube/Translations
2026-04-09 01:12:25 +02:00
Mona LisaandHosted Weblate 504507d4bd Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mona Lisa <nickwick@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-04-08 12:09:53 +00:00
LaKatoandHosted Weblate 6ff632a263 Translated using Weblate (Spanish)
Currently translated at 100.0% (966 of 966 strings)

Translated using Weblate (Esperanto)

Currently translated at 39.6% (383 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/
Translation: FreeTube/Translations
2026-04-08 06:10:47 +02:00
ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)andHosted Weblate 3ca96b34f2 Translated using Weblate (Latvian)
Currently translated at 64.4% (623 of 966 strings)

Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/lv/
Translation: FreeTube/Translations
2026-04-07 16:09:53 +00:00
Emma 23eab1946a Merge branch 'development' into release
Conflicts / Check for conflicts (push) Canceled after 0s
2026-04-07 07:23:54 -04:00
Cameron RadmoreandGitHub 6fb5032f39 Update electron-builder config so alpine can drop their patch (#8915) 2026-04-07 14:12:51 +08:00
Mohamed NadyandHosted Weblate 34969c152d Translated using Weblate (Arabic)
Currently translated at 95.9% (927 of 966 strings)

Co-authored-by: Mohamed Nady <mohamed0011199@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ar/
Translation: FreeTube/Translations
2026-04-06 09:09:55 +00:00
bittin1ddc447d824349b2andHosted Weblate b52e1c8e9c Translated using Weblate (Swedish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sv/
Translation: FreeTube/Translations
2026-04-06 09:09:54 +00:00
coolvittoandHosted Weblate d5d5f86213 Translated using Weblate (Japanese)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: coolvitto <coolzdaddy55@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
Translation: FreeTube/Translations
2026-04-06 06:12:18 +00:00
Eder Etxebarria RojoandHosted Weblate 5edc9a5ac9 Translated using Weblate (Basque)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Eder Etxebarria Rojo <eder@betxepare.eus>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eu/
Translation: FreeTube/Translations
2026-04-06 06:12:16 +00:00
TelaneoandHosted Weblate 75d7775567 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Telaneo <post@telaneo.net>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nb_NO/
Translation: FreeTube/Translations
2026-04-05 16:09:54 +00:00
Priit JõerüütandHosted Weblate 74cc92767f Translated using Weblate (Estonian)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/
Translation: FreeTube/Translations
2026-04-05 14:09:52 +00:00
Aleks ANDRÉandHosted Weblate 9e61df3cd4 Translated using Weblate (French)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Aleks ANDRÉ <maths.alex.andre@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2026-04-05 13:09:54 +02:00
delvaniandHosted Weblate 6bd44f000e Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: delvani <del.cidrak@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_BR/
Translation: FreeTube/Translations
2026-04-05 13:09:52 +02:00
MilanandHosted Weblate 622e587c76 Translated using Weblate (Czech)
Currently translated at 100.0% (966 of 966 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Milan <mobrcian@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sk/
Translation: FreeTube/Translations
2026-04-05 09:09:58 +00:00
Ettore AtalanandHosted Weblate 72a6e699fd Translated using Weblate (German)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
Translation: FreeTube/Translations
2026-04-05 09:09:55 +00:00
CaetanoandGitHub f2b3c59dd9 Use the same opacity as YT for the popups (#8912) 2026-04-05 08:33:47 +01:00
Massimo PissarelloandHosted Weblate 1772dbed33 Translated using Weblate (Italian)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Massimo Pissarello <mapi68@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/it/
Translation: FreeTube/Translations
2026-04-05 07:09:55 +02:00
Sveinn í FelliandHosted Weblate bb081a4b20 Translated using Weblate (Icelandic)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/is/
Translation: FreeTube/Translations
2026-04-05 07:09:54 +02:00
大王叫我来巡山andHosted Weblate feba58f744 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/zh_Hans/
Translation: FreeTube/Translations
2026-04-05 07:09:53 +02:00
Mickaël BinosandHosted Weblate 6d7c92b5c7 Translated using Weblate (French)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mickaël Binos <mickaelbinos@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2026-04-05 01:09:52 +00:00
Grzegorz WójcickiandHosted Weblate 9452efebf1 Translated using Weblate (Polish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Grzegorz Wójcicki <terkaz@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/
Translation: FreeTube/Translations
2026-04-04 20:09:52 +00:00
Ghost of SpartaandHosted Weblate 3c3d2d85da Translated using Weblate (Hungarian)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/hu/
Translation: FreeTube/Translations
2026-04-04 19:10:04 +02:00
Miss ManteaterandGitHub caf9020ea1 Remove leftover string from blog removal (#8962) 2026-04-04 11:48:51 -04:00
Emma 920aa31796 Update node version in workflow
Conflicts / Check for conflicts (push) Canceled after 0s
2026-04-04 07:08:09 -04:00
Emma 09a3b36226 bump run number 2026-04-04 07:05:08 -04:00
Emma 16a78f7d95 Merge commit '3662c9358b8c753e041cc5205787198dbbb1357c' into release 2026-04-04 07:03:23 -04:00
Shrek3010andHosted Weblate f8e6d395fb Translated using Weblate (Slovak)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Shrek3010 <martinlukac2244@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sk/
Translation: FreeTube/Translations
2026-04-04 12:09:53 +02:00
LaKatoandHosted Weblate 7b88ad508f Translated using Weblate (Esperanto)
Currently translated at 39.4% (381 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-04 03:09:53 +00:00
Priit JõerüütandHosted Weblate 12befc1cc6 Translated using Weblate (Estonian)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/
Translation: FreeTube/Translations
2026-04-04 01:09:51 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
a800760c86 Bump lodash from 4.17.23 to 4.18.1 (#8956)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.18.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 18:37:58 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5994071644 Bump the eslint group with 2 updates (#8950)
Bumps the eslint group with 2 updates: [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) and [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn).


Updates `eslint-plugin-jsdoc` from 62.8.1 to 62.9.0
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v62.8.1...v62.9.0)

Updates `eslint-plugin-unicorn` from 63.0.0 to 64.0.0
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v63.0.0...v64.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 62.9.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-unicorn
  dependency-version: 64.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 18:10:03 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
299476a41c Bump @double-great/stylelint-a11y in the stylelint group (#8951)
Bumps the stylelint group with 1 update: [@double-great/stylelint-a11y](https://github.com/double-great/stylelint-a11y).


Updates `@double-great/stylelint-a11y` from 3.4.8 to 3.4.9
- [Release notes](https://github.com/double-great/stylelint-a11y/releases)
- [Changelog](https://github.com/double-great/stylelint-a11y/blob/main/CHANGELOG.md)
- [Commits](https://github.com/double-great/stylelint-a11y/compare/v3.4.8...v3.4.9)

---
updated-dependencies:
- dependency-name: "@double-great/stylelint-a11y"
  dependency-version: 3.4.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: stylelint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 18:09:53 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
734b992a61 Bump sass from 1.98.0 to 1.99.0 in the webpack group (#8952)
Bumps the webpack group with 1 update: [sass](https://github.com/sass/dart-sass).


Updates `sass` from 1.98.0 to 1.99.0
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.98.0...1.99.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.99.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: webpack
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 18:09:37 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
29da25b393 Bump electron from 41.1.0 to 41.1.1 (#8953)
Bumps [electron](https://github.com/electron/electron) from 41.1.0 to 41.1.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v41.1.0...v41.1.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 41.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 17:57:01 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f674581ca7 Bump vue from 3.5.31 to 3.5.32 (#8954)
Bumps [vue](https://github.com/vuejs/core) from 3.5.31 to 3.5.32.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/compare/v3.5.31...v3.5.32)

---
updated-dependencies:
- dependency-name: vue
  dependency-version: 3.5.32
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 17:56:44 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
30ef938d51 Bump shaka-player from 5.0.8 to 5.0.9 (#8955)
Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 5.0.8 to 5.0.9.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v5.0.9/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v5.0.8...v5.0.9)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 5.0.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 17:56:25 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
980c3d4d9c Bump github/codeql-action from 4.34.1 to 4.35.1 (#8949)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.34.1 to 4.35.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/38697555549f1db7851b81482ff19f1fa5c4fedc...c10b8064de6f491fea524254123dbe5e09572f13)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.35.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-03 17:56:22 +08:00
coolvittoandHosted Weblate e10fe7d29f Translated using Weblate (Japanese)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: coolvitto <coolzdaddy55@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/ja/
Translation: FreeTube/Translations
2026-04-03 03:09:52 +00:00
TelaneoandHosted Weblate 1bc0f8b234 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Telaneo <post@telaneo.net>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/nb_NO/
Translation: FreeTube/Translations
2026-04-02 21:09:52 +00:00
Grzegorz WójcickiandHosted Weblate cb9ac23eca Translated using Weblate (Polish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Grzegorz Wójcicki <terkaz@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/
Translation: FreeTube/Translations
2026-04-02 20:09:52 +02:00
David D.andHosted Weblate 7aad4f1b72 Translated using Weblate (French)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: David D. <dadu042@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2026-04-01 22:12:28 +02:00
CiclopandHosted Weblate d8dd01b439 Translated using Weblate (Spanish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Ciclop <notificaciones.doze701@slmail.me>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/
Translation: FreeTube/Translations
2026-04-01 22:12:28 +02:00
Andi ChandlerandHosted Weblate 04ca6b17e6 Translated using Weblate (English (United Kingdom))
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Andi Chandler <andi@gowling.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/en_GB/
Translation: FreeTube/Translations
2026-04-01 17:09:56 +00:00
eulalioandHosted Weblate ad6c150fd2 Translated using Weblate (Spanish)
Currently translated at 99.7% (964 of 966 strings)

Co-authored-by: eulalio <eulalio@disroot.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/es/
Translation: FreeTube/Translations
2026-04-01 17:09:54 +00:00
ColorfulRhinoandHosted Weblate 4ed8e1471e Translated using Weblate (German)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: ColorfulRhino <131405023+ColorfulRhino@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
Translation: FreeTube/Translations
2026-04-01 14:09:59 +00:00
Tinde (Joke)andHosted Weblate 68dab44ba9 Translated using Weblate (Finnish)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Tinde (Joke) <jouko.tiilikainen@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fi/
Translation: FreeTube/Translations
2026-04-01 14:09:56 +00:00
MilanandHosted Weblate e61b2c5aa1 Translated using Weblate (Czech)
Currently translated at 100.0% (966 of 966 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Milan <mobrcian@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/sk/
Translation: FreeTube/Translations
2026-04-01 06:09:54 +00:00
LaKatoandHosted Weblate 4958afdacb Translated using Weblate (Esperanto)
Currently translated at 36.2% (350 of 966 strings)

Co-authored-by: LaKato <lakato@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/eo/
Translation: FreeTube/Translations
2026-04-01 04:09:55 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
dc66aefe72 Bump @xmldom/xmldom from 0.8.10 to 0.8.12 (#8916)
Bumps [@xmldom/xmldom](https://github.com/xmldom/xmldom) from 0.8.10 to 0.8.12.
- [Release notes](https://github.com/xmldom/xmldom/releases)
- [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/xmldom/xmldom/compare/0.8.10...0.8.12)

---
updated-dependencies:
- dependency-name: "@xmldom/xmldom"
  dependency-version: 0.8.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-01 04:49:02 +02:00
Mickaël BinosandHosted Weblate 4315c95231 Translated using Weblate (French)
Currently translated at 100.0% (966 of 966 strings)

Co-authored-by: Mickaël Binos <mickaelbinos@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2026-04-01 00:09:52 +02:00
Emma bffe9620d2 bump the run number in the workflow
Conflicts / main (push) Canceled after 0s
2026-03-17 15:26:31 -04:00
Emma be0ce3e31d Merge remote-tracking branch 'john/hotfix-release-v0.23.15' into release 2026-03-17 15:19:28 -04:00
EmmaandGitHub 543a8fd8fd Update releaseCordova.yml
Conflicts / main (push) Canceled after 0s
offset build number
2026-03-05 10:10:44 -05:00
Emma f4467c45c3 Merge commit '54e85f8616bd10ea73d4e64f4d896018a7a4e2d5' into release 2026-03-05 09:58:48 -05:00
Emma fa08f633f5 Update number offset in workflow
Conflicts / main (push) Canceled after 0s
2025-10-16 09:19:47 -04:00
Emma 916f4c2d20 Destroy bg webview on every request 2025-10-16 09:18:37 -04:00
Emma b09ee28ce0 Adjust android code to account for upstream changes 2025-10-16 09:10:51 -04:00
Emma 0bb0f14c31 Merge remote-tracking branch 'upstream/master' into release 2025-10-16 09:09:12 -04:00
Emma a34a9ee2c6 Handle when decipher script throws
Conflicts / main (push) Canceled after 0s
2025-10-14 10:52:20 -04:00
Emma c0e6fbac3a Fix app icon
Conflicts / main (push) Canceled after 0s
2025-10-13 00:13:50 -04:00
Emma b8a23ea70a Increment build number 2025-10-13 00:02:25 -04:00
Emma ea075d937c refactor sig evaluator to use additional webview for android 2025-10-12 23:33:37 -04:00
Emma 76e8684c5a refactor sig evaluator to use additional webview for android 2025-10-12 23:28:11 -04:00
Emma 9908d29a12 Merge upstream release 2025-10-12 23:28:01 -04:00
Emma 7896917015 Update yarn.lock + add donation link which is in dev
Conflicts / main (push) Canceled after 0s
also bump the magic number in the build script
2025-08-23 11:18:24 -04:00
Emma b1ffdd43ee Merge commit '790062c73526ea6090b70979d76ac5eee6e62fad' into release 2025-08-23 11:10:23 -04:00
Emma 3abf9d75e5 Update build number
Conflicts / main (push) Canceled after 0s
2025-08-19 20:11:55 -04:00
Emma 6b0f1eae60 Merge commit '3826cf7b1dc5de67ce7367700c927f048703fe53' into rollback-unintended-changes 2025-08-19 20:06:48 -04:00
Emma 48876faceb Merge commit '169aafc3f5255fab6286ab9d81df126eba5e4618' into rollback-unintended-changes 2025-08-19 20:06:15 -04:00
Emma 15b3a2392b Merge remote-tracking branch 'upstream/master-v0.23.5' into release
Conflicts / main (push) Canceled after 0s
2025-05-01 07:47:52 -04:00
Emma 515621253a Merge commit 'eddaa54612d5279cef80eae616624aaa23506f20' into release
Conflicts / main (push) Canceled after 0s
2025-04-24 07:10:51 -04:00
Emma 37757ac25f Fix issue with live streams after new botguard change
Conflicts / main (push) Canceled after 0s
2025-04-06 14:25:41 -04:00
Emma ef68d342fc Cherry pick more changes required for new bg stuff
Conflicts / main (push) Canceled after 0s
(this should have been included two commits ago)
2025-03-28 09:46:43 -04:00
Emma 5b02c98115 Add missing deps after merges 2025-03-28 09:45:58 -04:00
Emma 506abc0514 Cherry pick new botguard code for android side 2025-03-28 09:45:39 -04:00
Emma ca4ed95e55 Merge commit '8db3d283c523045bf6831375b98479e3e0916339' into release 2025-03-28 09:21:40 -04:00
Emma 92fd4f4222 Bump version num
Conflicts / main (push) Canceled after 0s
2025-02-23 21:09:27 -05:00
Emma 6ca1668a42 Update yarn.lock 2025-02-23 20:51:57 -05:00
Emma 28970b8411 updateyarn 2025-02-23 20:49:57 -05:00
Emma 9791c4cbf4 **Release 0.23.1.10**
Conflicts / main (push) Canceled after 0s
This release brings the app up to date with upstream release [0.23.1](https://github.com/FreeTubeApp/FreeTube/releases/tag/v0.23.1-beta).

  ...

  **Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.23.0.9...0.23.1.10
2025-01-31 22:59:37 -05:00
Emma 092a504c76 **Release 0.23.1.10**
This release brings the app up to date with upstream release [0.23.1](https://github.com/FreeTubeApp/FreeTube/releases/tag/v0.23.1-beta).

  ...

  **Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.23.0.9...0.23.1.10
2025-01-31 22:42:11 -05:00
Emma afcb50dc35 Ignore linting results
Conflicts / main (push) Canceled after 0s
2025-01-30 23:44:06 -05:00
Emma 02aec90601 **Release 0.23.0.12**
This release brings the app up to date with upstream release [0.23.0](https://github.com/FreeTubeApp/FreeTube/releases/tag/v0.23.0-beta).

**Android specfic changes:**

 - Implement UI scale on Android [#460](https://github.com/MarmadileManteater/FreeTubeAndroid/issues/460)
 - [Fixed] Data folder can not be in subdirectory folders [#411](https://github.com/MarmadileManteater/FreeTubeAndroid/issues/411)

  ...

  **Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.22.1.127...0.23.0.128
2025-01-30 23:42:38 -05:00
Emma 9c36a67d71 merge in development 2025-01-30 23:37:47 -05:00
Emmadependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>absidue
63b8a61733 Cherry pick upstream changes
Conflicts / main (push) Canceled after 0s
Bump youtubei.js from 10.5.0 to 12.2.0 + Bump version number to from v022.0 to v0.22.1 + Fix incompatibility with upcoming YouTube.js version (#6343)

* Bump youtubei.js from 12.0.0 to 12.1.0 (#6341)

Bumps [youtubei.js](https://github.com/LuanRT/YouTube.js) from 12.0.0 to 12.1.0.
- [Release notes](https://github.com/LuanRT/YouTube.js/releases)
- [Changelog](https://github.com/LuanRT/YouTube.js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/LuanRT/YouTube.js/compare/v12.0.0...v12.1.0)

---
updated-dependencies:
- dependency-name: youtubei.js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix incompatibility with upcoming YouTube.js version (#6233)

* Bump version number to v0.22.1

* Bump youtubei.js from 12.1.0 to 12.2.0

Bumps [youtubei.js](https://github.com/LuanRT/YouTube.js) from 12.1.0 to 12.2.0.
- [Release notes](https://github.com/LuanRT/YouTube.js/releases)
- [Changelog](https://github.com/LuanRT/YouTube.js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/LuanRT/YouTube.js/compare/v12.1.0...v12.2.0)

---
updated-dependencies:
- dependency-name: youtubei.js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2024-12-30 15:46:38 -05:00
Emma fa2cbd9674 properly fix versionNumberGt function
Conflicts / main (push) Canceled after 0s
2024-10-30 13:08:23 -04:00
Emma 80c8b290ce Unreset the build number
to prevent the old update checking logic from failing. This can be set back on the next release potentially.
2024-10-30 12:31:32 -04:00
Emma f4c600ee96 quickly fix how releases are checked for
(it is broken in the draft release)
2024-10-30 12:29:09 -04:00
Emma efc9d8e037 **Release 0.22.0.2**
This release brings the app up to date with upstream release [0.22.0](https://github.com/FreeTubeApp/FreeTube/releases/tag/v0.22.0-beta).

  ...

  **Full Changelog**: https://github.com/MarmadileManteater/FreeTubeAndroid/compare/0.21.3.122...0.22.0.2
2024-10-30 11:56:00 -04:00
Emma 16d6ccc936 Cherry pick upstream hotfix + dev branch changes which add needed functions
Conflicts / main (push) Canceled after 0s
- ^Update youtubei.js
- Use streams from the iOS client to workaround playback issues (#5472)
- Allow user agent spoofing for usage of iOS client
2024-08-02 11:15:17 -04:00
Emma 8ac44bb21c Release 120
Conflicts / main (push) Canceled after 0s
This release brings the app up to date with upstream hotfix release [0.21.2](https://github.com/FreeTubeApp/FreeTube/releases/tag/v0.21.2-beta).
2024-07-25 22:21:38 -04:00
Emma 8b48c1e319 **Release 118**
Conflicts / main (push) Canceled after 0s
##### APK changes:

 - System UI and navigation UI now match current theme (6f15a5b)
 - Screen no longer stays on when app is in background (#335)

##### PWA changes:

 - PWA should now be installable again (#297)

This release includes all of the changes from upstream release [0.21.1](https://github.com/FreeTubeApp/FreeTube/releases/tag/v0.21.1-beta) as well as [0.21.0](https://github.com/FreeTubeApp/FreeTube/releases/tag/v0.21.0-beta).

  ...

  **Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.20.0.116...0.21.1.118
2024-07-11 12:25:46 -04:00
Emma c490d3b84e **Release 116**
Conflicts / main (push) Canceled after 0s
APK changes:

- Fixed locales other than `en-US` not loading (7048a90a2e)
- Fixed system UI holding onto light theme after changing from light mode to dark mode (9f0068233d)
- Added proper dark and light splashscreens (4d82e526d3)

  ...

  **Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.20.0.115...0.20.0.116
2024-04-09 06:55:39 -04:00
Emma 7890f6fbf6 **Release 115**
Conflicts / main (push) Canceled after 0s
##### ~~Cordova~~ Android specific changes:

- Switched away from Cordova [#101](https://github.com/MarmadileManteater/FreeTubeCordova/issues/101#issuecomment-1914328560)
  - Added ability to stream videos **locally** *without* proxying through invidious [#5](https://github.com/MarmadileManteater/FreeTubeCordova/issues/5) 🥂
  - Added ability to seek in the media controls notification
  - Fixed videos stopping or stuttering when the app enters the background [#10](https://github.com/MarmadileManteater/FreeTubeCordova/issues/10)
  - Fixed YT links not opening in app [#264](https://github.com/MarmadileManteater/FreeTubeCordova/issues/264)
- Added ability to change where profiles/settings/playlists/history.db are located on the filesystem [#299](https://github.com/MarmadileManteater/FreeTubeCordova/issues/299)
- Fullscreen videos now take up the entire screen instead of sharing real estate with the system UI

This release includes all of the changes from upstream release [0.20.0](https://github.com/FreeTubeApp/FreeTube/releases/tag/v0.20.0-beta).

  ...

  **Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.19.2.110...0.20.0.115
2024-04-04 01:14:37 -04:00
Emma a003d4b36a **Release 110**
Conflicts / main (push) Canceled after 0s
commit 79030b476f
Author: Emma <MarmadileManteater@proton.me>
Date:   Fri Feb 23 21:54:42 2024 -0500
    bump version number

commit 28803d1620
Author: Emma <MarmadileManteater@proton.me>
Date:   Fri Feb 23 21:45:13 2024 -0500
    Update yarn lock

commit e5170852b5
Merge: dafd7ab0 979683c4
Author: Emma <MarmadileManteater@proton.me>
Date:   Fri Feb 23 18:40:03 2024 -0500
    Merge branch 'development' of https://github.com/MarmadileManteater/FreeTubeCordova into development

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.19.1.109...0.19.2.110
2024-02-23 21:57:21 -05:00
Emma 0d8481c938 **Release 109**
Conflicts / main (push) Canceled after 0s
commit ea18d5b4fd
Author: Emma <MarmadileManteater@proton.me>
Date:   Fri Oct 20 18:33:33 2023 -0400
    Add `IS_CORDOVA` checks for new `IS_ELECTRON` checks

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.18.0.107...0.19.1.109
2023-10-20 18:37:35 -04:00
Emma d875ec1a5f **Release 108**
Conflicts / main (push) Canceled after 0s
commit 3fae2ef675
Author: Emma <MarmadileManteater@proton.me>
Date:   Fri Oct 20 17:18:17 2023 -0400
    Add script for pushing to release branch
    This was previously a python script in a separate repo. Now, it is in the `_scripts/` folder and is in javascript.

commit 4bdfe84e9f
Author: Emma <MarmadileManteater@proton.me>
Date:   Fri Oct 20 15:17:16 2023 -0400
    Increase end margin of flexBox on mobile
    in order to make the "Fetch more results" button not overflow off the bottom of the page.

commit e780abfc38
Merge: d3ad30aa b55ad5d3
Author: Emma <MarmadileManteater@proton.me>
Date:   Fri Oct 20 15:15:44 2023 -0400
    Merge remote-tracking branch 'upstream/development' into development

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.18.0.107...0.19.1.108
2023-10-20 17:27:47 -04:00
Emma 54a4035452 **Automated release 99**
Conflicts / main (push) Canceled after 0s
commit 543a7f07d6
Author: Emma <MarmadileManteater@proton.me>

🤦‍♀️ Keep the defaults the same for the PWA

commit e0e151d84b
Author: Emma <MarmadileManteater@proton.me>

Reset default `backendPreference` settings to the same as upstream

commit b4e95e2c80
Merge: bf29f7d2 e64ad26d
Author: Emma <MarmadileManteater@proton.me>

Merge remote-tracking branch 'origin/development' into development

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.18.0.98...0.18.0.99
2023-03-09 13:51:31 +00:00
Emma 58532de06a **Automated release 98**
Conflicts / main (push) Canceled after 0s
commit 42517a9fb9
Author: Emma <MarmadileManteater@proton.me>

🧹 Clean-up update checking logic

commit 8f97ec7fac
Author: Emma <MarmadileManteater@proton.me>

🔀 Reverse check in update

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.18.0.97...0.18.0.98
2023-01-23 15:41:32 +00:00
Emma 7ec73a1408 **Automated release 96**
Conflicts / main (push) Canceled after 0s
commit 9def8d2886
Author: Emma <MarmadileManteater@proton.me>

🤞 Fix version codes once an for all?

commit 98658b24e7
Author: Emma <MarmadileManteater@proton.me>

Trying to figure out what the heck is happening

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.18.0.95...0.18.0.96
2023-01-23 15:07:43 +00:00
Emma 6a99513779 **Automated release 96**
commit 6b7246155e
Author: Emma <MarmadileManteater@proton.me>

🔧 Attempt to fix version codes

commit 5a181ef495
Author: Emma <MarmadileManteater@proton.me>

🤷‍♀️

commit b20fe24af4
Author: Emma <MarmadileManteater@proton.me>

🤷‍♀️ I don't know how to replicate the version codes from before the build change

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.18.0.95...0.18.0.96
2023-01-23 14:38:37 +00:00
Emma f65bf10898 **Automated nightly release 81**
Conflicts / main (push) Canceled after 0s
commit bed24852b7
Merge: c7e7e7e7 7ccb5dd0
Author: Emma <MarmadileManteater@proton.me>

Merge remote-tracking branch 'upstream/development' into development

commit c7e7e7e783
Author: Emma <MarmadileManteater@proton.me>

Base Cordova build off of upstream web build (#84)

commit 7ccb5dd05e
Author: Emma <MarmadileManteater@proton.me>

Adjust `side-nav-more-options` to account for anchor style (#3097)

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.18.0-nightly-80...0.18.0-nightly-81
2023-01-22 03:08:05 +00:00
Emma 1ada6135ac **Automated nightly release 80**
Conflicts / main (push) Canceled after 0s
commit 5e948cf8ab
Author: Emma <MarmadileManteater@proton.me>

Slightly adjust release workflow version

commit f6ad47cad5
Author: Emma <MarmadileManteater@proton.me>

🔧Adjust build script to append environment to applicationId

commit abb4f0afa5
Author: Emma <MarmadileManteater@proton.me>

🛠 Set version code explicitly

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.18.0-nightly-79...0.18.0-nightly-80
2023-01-15 05:10:29 +00:00
Emma 9bfdfbdc2e **Automated nightly release 79**
Conflicts / main (push) Canceled after 0s
commit 1e1d004c90
Author: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>

Update ReadMe to include statuses (#81)

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.18.0-nightly-78...0.18.0-nightly-79
2023-01-14 05:10:33 +00:00
Emma f09eb400b1 **Automated nightly release 78**
Conflicts / main (push) Canceled after 0s
commit 72f2b626ba
Author: Emma <MarmadileManteater@proton.me>

🔧Modify output names in release pipeline

commit c1587b54fe
Author: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>

Documentation update (#76)

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.18.0-nightly-77...0.18.0-nightly-78
2023-01-08 05:10:41 +00:00
Emma b59acbd0fe **Automated nightly release 77**
Conflicts / main (push) Canceled after 0s
commit 3211e6f14d
Merge: b4b6a50e e990af9a
Author: Emma <MarmadileManteater@proton.me>

Merge remote-tracking branch 'upstream/development' into development

commit e990af9aa9
Author: Ihor Hordiichuk <igor_ck@outlook.com>

Translated using Weblate (Ukrainian)

commit 3db4a4d33f
Author: Fjuro <ifjuro@proton.me>

Translated using Weblate (Czech)

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-76...0.17.1-nightly-77
2022-11-28 01:16:28 +00:00
Emma c6d7ff2934 **Automated nightly release 76**
Conflicts / main (push) Canceled after 0s
commit b4b6a50e3f
Merge: 263d1585 071e01db
Author: Emma <MarmadileManteater@proton.me>

Merge branch into development

commit 071e01dbc6
Author: Emma <MarmadileManteater@proton.me>

Add simple polyfill for `at` in Cordova

commit 8618168502
Author: Emma <MarmadileManteater@proton.me>

Revert to version `3.0.5` of music controls plugin

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-75...0.17.1-nightly-76
2022-11-23 01:16:22 +00:00
Emma 6f74dd8dd5 **Automated nightly release 75**
Conflicts / main (push) Canceled after 0s
commit d6f871dae1
Merge: 4ef7b661 2f4e0a76
Author: Emma <MarmadileManteater@proton.me>

Merge branch 'development' of https://github.com/FreeTubeApp/FreeTube into development

commit 2f4e0a7635
Author: Sveinn í Felli <sv1@fellsnet.is>

Translated using Weblate (Icelandic)

commit f51725cd31
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Bump mikefarah/yq from 4.28.2 to 4.29.2 (#2791)

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-74...0.17.1-nightly-75
2022-11-01 04:15:53 +00:00
Emma 89f474636a **Automated nightly release 74**
Conflicts / main (push) Canceled after 0s
commit 4ef7b661a6
Merge: 3468d682 7970d9ea
Author: Emma <MarmadileManteater@proton.me>

Merge remote-tracking branch 'upstream/development' into development

commit 7970d9ea6e
Author: Rex_sa <rex.sa@pm.me>

Translated using Weblate (Arabic)

commit 9f0e48e486
Author: Kyotaro Iijima <kyotaro.eyes@gmail.com>

Translated using Weblate (Japanese)

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-73...0.17.1-nightly-74
2022-10-31 04:15:57 +00:00
Emma 5926a16814 **Automated nightly release 73**
Conflicts / main (push) Canceled after 0s
commit 3468d682c0
Author: Emma <MarmadileManteater@proton.me>

Replace npm-run-all with my fork

commit 579214fb7c
Merge: a3ffbda0 24e17dec
Author: Emma <MarmadileManteater@proton.me>

Merge remote-tracking branch 'upstream/development' into development

commit 24e17deccc
Author: Ivan Boychev <ivanboychev@tuta.io>

Translated using Weblate (Bulgarian)

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-72...0.17.1-nightly-73
2022-10-29 04:16:01 +00:00
Emma dcef3ca69e **Automated nightly release 72**
Conflicts / main (push) Canceled after 0s
commit a3ffbda0d2
Merge: ad945bd6 0e3d7650
Author: Emma <MarmadileManteater@proton.me>

Merge branch 'upstream_development' into development

commit 0e3d7650e1
Merge: 651fd1f7 64679ca1
Author: Emma <MarmadileManteater@proton.me>

Merge branch 'development' of https://github.com/FreeTubeApp/FreeTube into upstream_development

commit 64679ca1ce
Author: J. Lavoie <j.lavoie@net-c.ca>

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-71...0.17.1-nightly-72
2022-10-27 04:15:57 +00:00
Emma 38758eee78 **Automated nightly release 71**
Conflicts / main (push) Canceled after 0s
commit ad945bd619
Merge: d8f7893c a5bbbe70
Author: Emma <MarmadileManteater@proton.me>

Merge remote-tracking branch 'upstream/development' into development

commit a5bbbe70ba
Author: Rusi Dimitrov <astral_86@mail.bg>

Translated using Weblate (Bulgarian)

commit 308fe400ef
Author: maboroshin <trnt@ahk.jp>

Translated using Weblate (Japanese)

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-70...0.17.1-nightly-71
2022-10-24 04:16:02 +00:00
Emma 0e613d4926 **Automated nightly release 70**
Conflicts / main (push) Canceled after 0s
commit d8f7893c07
Author: Emma <MarmadileManteater@proton.me>

Copy to clipboard should be working again

commit d7bc7d76dd
Author: Emma <MarmadileManteater@proton.me>

Re-adding cordova integration for `copyToClipboard`

commit b21c5a7550
Merge: dea96fbd 7819dcd9
Author: Emma <MarmadileManteater@proton.me>

Merge branch 'upstream_development' into development

...

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-69...0.17.1-nightly-70
2022-10-20 04:16:02 +00:00
Emma e07af70c21 # Automated nightly release 69
Conflicts / main (push) Canceled after 0s
commit 9733163650
Merge: 25ff1773 b5c486bf
Author: Emma <MarmadileManteater@proton.me>

Merge branch 'FreeTubeApp:development' into development

commit b5c486bf1f
Author: Emma <MarmadileManteater@proton.me>

Fixing some leftover `showToast(obj)` (#2735)

commit 198c3fa5d2
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Bump http-proxy-agent from 4.0.1 to 5.0.0 (#2733)

commit 25ff1773b1
Merge: 980a3879 4ef63699
Author: Emma <MarmadileManteater@proton.me>

Merge branch 'upstream_development' into development

commit 4ef6369908
Author: Gediminas Murauskas <muziejusinfo@gmail.com>

Translated using Weblate (Lithuanian)

commit 4440044986
Author: Massimo Pissarello <mapi68@gmail.com>

Translated using Weblate (Italian)

commit 8209e7e422
Author: Oğuz Ersen <oguz@ersen.moe>

Translated using Weblate (Turkish)

commit 3326224079
Author: Jeff Huang <s8321414@gmail.com>

Translated using Weblate (Chinese (Traditional))

commit 546a276641
Author: Eric <hamburger1024@mailbox.org>

Translated using Weblate (Chinese (Simplified))

commit 1b68e56456
Author: Rex_sa <rex.sa@pm.me>

Translated using Weblate (Arabic)

commit 77a18e83e2
Merge: 62c70fbd eefcd363
Author: Hosted Weblate <hosted@weblate.org>

Merge branch 'origin/development' into Weblate.

commit eefcd36363
Author: Gediminas Murauskas <muziejusinfo@gmail.com>

Translated using Weblate (Lithuanian)

commit 94fb11f893
Author: Grzegorz Wójcicki <terkaz@gmx.com>

Translated using Weblate (Polish)

commit 37b3b6db74
Author: J. Lavoie <j.lavoie@net-c.ca>

Translated using Weblate (French)

commit 097c06a28c
Author: J. Lavoie <j.lavoie@net-c.ca>

Translated using Weblate (German)

commit 62c70fbdd6
Author: absidue <48293849+absidue@users.noreply.github.com>

Fix fetching the comments from invidious (#2721)

commit 077fde70f1
Author: absidue <48293849+absidue@users.noreply.github.com>

Fix CTRL+clicking on the channel name on the watch page (#2713)

commit ad01d2b37d
Author: absidue <48293849+absidue@users.noreply.github.com>

Make the safe as and open file dialogs blocking (#2712)

commit 3aa080d707
Author: absidue <48293849+absidue@users.noreply.github.com>

Make showToast a helper (#2695)

commit f94d8a9df2
Author: Emma <MarmadileManteater@proton.me>

Filtering out invidious instances that don't support the API (#2714)

commit 21a31cf6f5
Author: PikachuEXE <pikachuexe@gmail.com>

Upgrade electron from 20 > 21 (#2717)

commit c0f98eeafe
Author: absidue <48293849+absidue@users.noreply.github.com>

Use named parameters instead of $ and % in localised strings (#2685)

commit 81426ed9bf
Author: absidue <48293849+absidue@users.noreply.github.com>

Don't lint while rebasing (#2711)

commit 1695605ab5
Author: Aiz <66974576+Aiz0@users.noreply.github.com>

Remove deprecated @keypress + some accessability improvements (#2697)

commit b35d7ea5e7
Author: Sveinn í Felli <sv1@fellsnet.is>

Translated using Weblate (Icelandic)

commit 6b4727c8d1
Merge: bc8261d9 2a601295
Author: Hosted Weblate <hosted@weblate.org>

Merge branch 'origin/development' into Weblate.

commit 2a601295c9
Author: Fjuro <ifjuro@proton.me>

Translated using Weblate (Czech)

commit 5199114125
Author: ovari <ovari123@zoho.com>

Translated using Weblate (Hungarian)

commit 11b3c1973b
Author: Yaron Shahrabani <sh.yaron@gmail.com>

Translated using Weblate (Hebrew)

commit bd210ab0ff
Author: Егор Ермаков <eg.ermakov2016@yandex.ru>

Translated using Weblate (Russian)

commit bc8261d970
Author: absidue <48293849+absidue@users.noreply.github.com>

Move colours from the store to the utils helper (#2710)

commit f12b9e1dc8
Author: SC <lalocas@protonmail.com>

Translated using Weblate (Portuguese)

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-68...0.17.1-nightly-69
2022-10-18 06:16:19 +00:00
Emma c4f7f28e0b # Automated nightly release 68
Conflicts / main (push) Canceled after 0s
commit 980a387904
Author: Emma <MarmadileManteater@proton.me>

Removing unnecessary prefix

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-67...0.17.1-nightly-68
2022-10-12 06:16:19 +00:00
Emma 23a8014196 # Automated nightly release 67
Conflicts / main (push) Canceled after 0s
commit c886559e9a
Merge: f4d73ca9 09e61aea
Author: Emma <MarmadileManteater@proton.me>

Merge branch 'development' of https://github.com/MarmadileManteater/FreeTubeCordova into development

commit f4d73ca964
Merge: 0e605d96 ae9d3290
Author: Emma <MarmadileManteater@proton.me>

Merge 'upstream/development' into development

commit ae9d3290be
Author: atilluF <atilluf@outlook.com>

Translated using Weblate (Italian)

commit b2b9d97390
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Bump electron-builder from 23.3.3 to 23.6.0 (#2705)

commit 3c7b143fce
Author: Emma <MarmadileManteater@proton.me>

Improving responsiveness in Settings (#2694)

commit 3af6dd7ff5
Author: Jeff Huang <s8321414@gmail.com>

Translated using Weblate (Chinese (Traditional))

commit b127c85472
Author: Eric <hamburger1024@mailbox.org>

Translated using Weblate (Chinese (Simplified))

commit 40859b5887
Author: efb4f5ff-1298-471a-8973-3d47447115dc <73130443+efb4f5ff-1298-471a-8973-3d47447115dc@users.noreply.github.com>

Update index.js (#2706)

commit 3db62f6d81
Author: gallegonovato <fran-carro@hotmail.es>

Translated using Weblate (Spanish)

commit b4bfbdcd7c
Author: Ihor Hordiichuk <igor_ck@outlook.com>

Translated using Weblate (Ukrainian)

commit 09e61aeaa7
Merge: 0e605d96 bdb8b173
Author: Emma <MarmadileManteater@proton.me>

Merge branch 'FreeTubeApp:development' into development

commit 0e605d96c5
Author: Emma <MarmadileManteater@proton.me>

Removing custom videoJS css which is no longer necessary

commit d5bc0cda01
Merge: ec906ef4 687352f7
Author: Emma <MarmadileManteater@proton.me>

Merge remote-tracking branch 'upstream/development' into development

commit ec906ef483
Merge: e202c798 7ca6440a
Author: Emma <MarmadileManteater@proton.me>

Merge branch 'upstream_development' into development

commit bdb8b173f4
Merge: 687352f7 e64db7f4
Author: Hosted Weblate <hosted@weblate.org>

Merge branch 'origin/development' into Weblate.

commit e64db7f40a
Author: Oğuz Ersen <oguz@ersen.moe>

Translated using Weblate (Turkish)

commit 66e1ff3f66
Author: Rex_sa <rex.sa@pm.me>

Translated using Weblate (Arabic)

commit 687352f765
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Bump mikefarah/yq from 4.27.5 to 4.28.1 (#2703)

commit 1508b05909
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Bump lefthook from 1.1.1 to 1.1.2 (#2699)

commit b3e0cc3866
Author: Preston <freetubeapp@protonmail.com>

Switch token for Flathub deployment

commit c63149d301
Merge: 7fb5d477 f07aefde
Author: Hosted Weblate <hosted@weblate.org>

Merge branch 'origin/development' into Weblate.

commit f07aefdef3
Author: gallegonovato <fran-carro@hotmail.es>

Translated using Weblate (Spanish)

commit 7fb5d47712
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Bump yt-channel-info from 3.1.0 to 3.1.1 (#2702)

commit 510686812d
Author: efb4f5ff-1298-471a-8973-3d47447115dc <73130443+efb4f5ff-1298-471a-8973-3d47447115dc@users.noreply.github.com>

Update report.yml (#2704)

commit ce24739a48
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

Bump mini-css-extract-plugin from 2.6.0 to 2.6.1 (#2701)

commit 48fe90e345
Merge: 22a50623 03cb0dbc
Author: Hosted Weblate <hosted@weblate.org>

Merge branch 'origin/development' into Weblate.

commit 03cb0dbc47
Author: gallegonovato <fran-carro@hotmail.es>

Translated using Weblate (Galician)

commit eeeb903645
Author: Florin Voicu <florin.bkk@gmail.com>

Translated using Weblate (Romanian)

commit 74f57b7366
Author: HexagonCDN <ctyducliem2006@gmail.com>

Translated using Weblate (Vietnamese)

commit 22a5062334
Author: absidue <48293849+absidue@users.noreply.github.com>

Move calculateColorLuminance, calculatePublishedDate and buildVTTFileLocally out of the store (#2692)

commit 7ca6440a88
Author: Aiz <66974576+Aiz0@users.noreply.github.com>

Add shortcuts for refresh buttons on Subscription, Trending, and Popular views (#2689)

commit aa4a01b9ab
Author: absidue <48293849+absidue@users.noreply.github.com>

Cleanup the web webpack config (#2690)

commit 41fee01217
Author: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>

Improve Importing Subscriptions (#2604)

commit 2154255ec3
Author: efb4f5ff-1298-471a-8973-3d47447115dc <73130443+efb4f5ff-1298-471a-8973-3d47447115dc@users.noreply.github.com>

Advertise FT better in README (#2677)

**Full Changelog**: https://github.com/MarmadileManteater/FreeTubeCordova/compare/0.17.1-nightly-66...0.17.1-nightly-67
2022-10-11 12:16:30 +00:00
MarmadileManteater c43777545f This is an automated nightly publish.
Conflicts / main (push) Canceled after 0s
commit aa3ab5a845
Merge: eb77835b 2e84b442
Author: Emma <MarmadileManteater@proton.me>
Date: Thu Oct 6 11:19:24 2022 -0400

Merge branch 'upstream_development' into development

# Conflicts:
# package.json
# yarn.lock
2022-10-09 03:21:10 +00:00
MarmadileManteater 00498e75ee This is an automated nightly publish.
Conflicts / main (push) Canceled after 0s
commit eb77835b46
Merge: bb04e189 38134bff
Author: Emma <MarmadileManteater@proton.me>
Date: Tue Oct 4 06:05:20 2022 -0400

Merge remote-tracking branch 'upstream/development' into development
2022-10-07 03:21:01 +00:00
MarmadileManteater bc1c49828c This is an automated nightly publish.
Conflicts / main (push) Canceled after 0s
commit 18a1c1b873
Merge: ba2ffa8c 2bee33b4
Author: Emma <MarmadileManteater@proton.me>
Date: Mon Oct 3 07:52:33 2022 -0400

Merge remote-tracking branch 'upstream/development' into development
2022-10-05 03:21:22 +00:00
MarmadileManteater e3b9647bc3 This is an automated nightly publish.
Conflicts / main (push) Canceled after 0s
commit ba2ffa8c4e
Author: Emma <MarmadileManteater@proton.me>
Date: Sun Oct 2 21:10:49 2022 -0400

Correcting the logic for version comparison

This is related to MarmadileManteater#25
2022-10-04 03:20:57 +00:00
MarmadileManteater 97d7d21a9a This is an automated nightly publish.
Conflicts / main (push) Canceled after 0s
commit ccf1c1c60d
Author: Emma <MarmadileManteater@proton.me>
Date:   Thu Sep 29 07:11:49 2022 -0400

    Fixing API link to the releases

    This is related to MarmadileManteater#25.
2022-10-03 06:29:34 +00:00
MarmadileManteater f99ea68673 This is an automated nightly publish.
Conflicts / main (push) Canceled after 0s
commit b21608f6e8
Author: Emma <MarmadileManteater@proton.me>
Date:   Wed Sep 21 14:15:21 2022 -0400

    Moving the copyToClipboard cordova function

    into utils and out of that hacky regex.
2022-09-30 06:08:32 +00:00
MarmadileManteater a9da18850b This is an automated nightly publish.
Conflicts / main (push) Canceled after 0s
commit d70d580f3d
Author: Emma <MarmadileManteater@proton.me>
Date:   Wed Sep 21 08:58:03 2022 -0400

    Removing unused variable
2022-09-22 18:11:27 +00:00
MarmadileManteater aedf0ea08f Merge branch 'FreeTubeApp:development' into development
Conflicts / main (push) Canceled after 0s
This is an automated nightly publish.

This is an automated nightly publish.

This is an automated nightly publish.

This is an automated nightly publish.

This is an automated nightly publish.

This is an automated nightly publish.
2022-09-21 15:20:55 +00:00
MarmadileManteater 8edd71f412 Merge branch 'FreeTubeApp:development' into development
Conflicts / main (push) Canceled after 0s
This is an automated nightly publish.

This is an automated nightly publish.

This is an automated nightly publish.

This is an automated nightly publish.

This is an automated nightly publish.
2022-09-20 15:20:43 +00:00
MarmadileManteater 54741b2e6d Merge branch 'FreeTubeApp:development' into development
Conflicts / main (push) Canceled after 0s
This is an automated nightly publish.
2022-09-17 10:15:51 +00:00
MarmadileManteater f13942a7bb Why is it always that yarn.lock that trips me up?
Conflicts / main (push) Canceled after 0s
This is an automated nightly publish.
2022-09-17 10:05:52 +00:00
MarmadileManteater 87f2dac60a Merge remote-tracking branch 'upstream/development' into development
Conflicts / main (push) Canceled after 0s
This is an automated nightly publish.
2022-09-11 10:05:52 +00:00
MarmadileManteater dd269bcbdd I think I forgot the yarn.lock in the last commit
This is an automated nightly publish.
2022-09-11 03:31:13 +00:00
MarmadileManteater a7e29e1a1f Merge branch 'FreeTubeApp:development' into development
Conflicts / main (push) Canceled after 0s
This is an automated nightly publish.
2022-09-07 03:31:21 +00:00
MarmadileManteater 5a1dda8a26 Merge branch 'FreeTubeApp:development' into development
This is an automated nightly publish.
2022-08-27 03:31:18 +00:00
MarmadileManteater 70c1c0340b Removing the "quirks" section in favor of having everything in issues.
This is an automated nightly publish.
2022-08-22 03:31:04 +00:00
MarmadileManteater c5f2c4aad8 also pulling in upstream
This is an automated nightly publish.
2022-08-20 03:31:01 +00:00
MarmadileManteater be23fe0690 Merge branch 'FreeTubeApp:development' into development
This is an automated nightly publish.
2022-08-17 03:31:07 +00:00
MarmadileManteater 51a19d4ae7 Edited the information available in the About page
This is an automated nightly publish.
2022-08-15 03:31:12 +00:00
MarmadileManteater 9cb0970657 Edited the information available in the About page
This is an automated nightly publish.
2022-08-14 03:52:12 +00:00
MarmadileManteater 49df7f4f13 Merge branch 'development' of https://github.com/MarmadileManteater/FreeTubeCordova into development
This is an automated nightly publish.
2022-08-14 03:30:59 +00:00
268 changed files with 18447 additions and 11928 deletions
+1 -1
View File
@@ -119,5 +119,5 @@ body:
label: Nightly Build
description: Please ensure you've completed the following, if applicable.
options:
- label: I have encountered this bug in the latest [nightly build](https://docs.freetubeapp.io/development/nightly-builds).
- label: I have encountered this bug in the latest **official** [nightly build](https://docs.freetubeapp.io/development/nightly-builds), do not check this box if you are using an unofficial or custom build.
required: false
+7
View File
@@ -48,3 +48,10 @@ updates:
labels:
- "PR: waiting for review"
- "PR: dependencies"
groups:
"actions/cache":
patterns:
- "actions/cache/*"
"github/codeql-action":
patterns:
- "github/codeql-action/*"
+1 -1
View File
@@ -5,4 +5,4 @@
'PR: dependencies':
- any:
- changed-files:
- any-glob-to-any-file: ['yarn.lock', 'package.json']
- any-glob-to-any-file: ['pnpm-lock.yaml', 'package.json']
+56 -73
View File
@@ -75,43 +75,42 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: 'Use faster D: drive for yarn cache on Windows'
if: startsWith(matrix.os, 'windows')
shell: cmd
run: yarn config set cache-folder D:\ft_yarn_cache
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #v7.0.0
with:
persist-credentials: false
- name: Get yarn cache directory
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e #v6.4.0
with:
node-version: ${{ matrix.node-version }}
package-manager-cache: false
- name: Install pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 #v6.0.9
with:
version: 10
cache: false
- name: Get pnpm cache directory
id: cache_dir
shell: bash
run: |
{
echo 'cache_dir<<EOF'
yarn cache dir
pnpm store path
echo EOF
} >> "$GITHUB_OUTPUT"
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
with:
persist-credentials: false
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f #v6.3.0
with:
node-version: ${{ matrix.node-version }}
package-manager-cache: false
- name: Restore yarn cache
- name: Restore pnpm cache
id: restore_cache
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 #v5.0.4
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 #v6.1.0
with:
key: ${{ format('node-cache-{0}-{1}-yarn-{2}', runner.os, runner.arch, hashFiles('yarn.lock')) }}
key: ${{ format('node-cache-{0}-{1}-pnpm-{2}', runner.os, runner.arch, hashFiles('pnpm-lock.yaml')) }}
path: ${{ steps.cache_dir.outputs.cache_dir }}
- run: yarn run ci
- run: pnpm run ci
shell: bash
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: '1'
- run: yarn run lint
- run: pnpm run lint
shell: bash
- name: Set version number
id: versionNumber
@@ -143,120 +142,104 @@ jobs:
- name: Build x64 with Node.js ${{ matrix.node-version}}
if: contains(matrix.runtime, 'x64')
shell: bash
run: yarn run build
run: pnpm run build
- name: Build ARMv7l with Node.js ${{ matrix.node-version}}
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
shell: bash
run: yarn run build:arm32
run: pnpm run build:arm32
- name: Build ARM64 with Node.js ${{ matrix.node-version}}
if: contains(matrix.runtime, 'arm64')
shell: bash
run: yarn run build:arm64
- name: Convert X64 AppImage to static runtime
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
shell: bash
env:
VERSION: ${{ steps.versionNumber.outputs.version }}
run: |
sudo apt install desktop-file-utils
cd build
appimage="FreeTube-${VERSION}.AppImage"
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" -O ./appimagetool.AppImage
chmod +x ./"$appimage" ./appimagetool.AppImage
./"$appimage" --appimage-extract && rm -f ./"$appimage"
./appimagetool.AppImage --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 20 \
-n ./squashfs-root ./"$appimage"
rm -rf ./squashfs-root ./appimagetool.AppImage
run: pnpm run build:arm64
- name: Upload Linux .zip x64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-linux-x64-portable.zip
path: build/freetube-${{ steps.versionNumber.outputs.version }}.zip
- name: Upload Linux .7z x64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-linux-x64-portable.7z
path: build/freetube-${{ steps.versionNumber.outputs.version }}.7z
- name: Upload Linux .zip ARMv7l Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-linux-armv7l-portable.zip
path: build/freetube-${{ steps.versionNumber.outputs.version }}-armv7l.zip
- name: Upload Linux .7z ARMv7l Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-linux-armv7l-portable.7z
path: build/freetube-${{ steps.versionNumber.outputs.version }}-armv7l.7z
- name: Upload Linux .zip ARM64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-linux-arm64-portable.zip
path: build/freetube-${{ steps.versionNumber.outputs.version }}-arm64.zip
- name: Upload Linux .7z ARM64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-linux-arm64-portable.7z
path: build/freetube-${{ steps.versionNumber.outputs.version }}-arm64.7z
- name: Upload .deb x64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube_${{ steps.versionNumber.outputs.version }}_amd64.deb
path: build/freetube_${{ steps.versionNumber.outputs.version }}_amd64.deb
- name: Upload .deb ARMv7l Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
with:
name: freetube_${{ steps.versionNumber.outputs.version }}_armv7l.deb
path: build/freetube_${{ steps.versionNumber.outputs.version }}_armv7l.deb
- name: Upload .deb ARM64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube_${{ steps.versionNumber.outputs.version }}_arm64.deb
path: build/freetube_${{ steps.versionNumber.outputs.version }}_arm64.deb
- name: Upload AppImage x64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-amd64.AppImage
path: build/FreeTube-${{ steps.versionNumber.outputs.version }}.AppImage
- name: Upload AppImage ARMv7l Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-armv7l.AppImage
path: build/FreeTube-${{ steps.versionNumber.outputs.version }}-armv7l.AppImage
- name: Upload AppImage ARM64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-arm64.AppImage
path: build/FreeTube-${{ steps.versionNumber.outputs.version }}-arm64.AppImage
- name: Upload .rpm x64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}.amd64.rpm
@@ -265,119 +248,119 @@ jobs:
# rpm are not built for armv7l
- name: Upload .rpm ARM64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}.arm64.rpm
path: build/freetube-${{ steps.versionNumber.outputs.version }}.aarch64.rpm
- name: Upload Pacman .pacman x64 Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-amd64.pacman
path: build/freetube-${{ steps.versionNumber.outputs.version }}.pacman
- name: Upload Windows x64 .exe Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-setup-x64.exe
path: build/freetube Setup ${{ steps.versionNumber.outputs.version }}.exe
- name: Upload Windows x64 Portable Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-win-x64-portable.exe
path: build/freetube ${{ steps.versionNumber.outputs.version }}.exe
- name: Upload Windows x64 .zip Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-win-x64-portable.zip
path: build/freetube-${{ steps.versionNumber.outputs.version }}-win.zip
- name: Upload Windows x64 .7z Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-win-x64-portable.7z
path: build/freetube-${{ steps.versionNumber.outputs.version }}-win.7z
- name: Upload Windows arm64 .exe Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-setup-arm64.exe
path: build/freetube Setup ${{ steps.versionNumber.outputs.version }}.exe
- name: Upload Windows arm64 Portable Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-win-arm64-portable.exe
path: build/freetube ${{ steps.versionNumber.outputs.version }}.exe
- name: Upload Windows arm64 .zip Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-win-arm64-portable.zip
path: build/freetube-${{ steps.versionNumber.outputs.version }}-arm64-win.zip
- name: Upload Windows arm64 .7z Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'windows') && startsWith(matrix.runtime, 'win-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-win-arm64-portable.7z
path: build/freetube-${{ steps.versionNumber.outputs.version }}-arm64-win.7z
- name: Upload Mac x64 .dmg Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-mac-x64.dmg
path: build/freetube-${{ steps.versionNumber.outputs.version }}.dmg
- name: Upload Mac x64 .zip Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-mac-x64.zip
path: build/freetube-${{ steps.versionNumber.outputs.version }}-mac.zip
- name: Upload Mac x64 .7z Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-x64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-mac-x64.7z
path: build/freetube-${{ steps.versionNumber.outputs.version }}-mac.7z
- name: Upload Mac arm64 .dmg Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-mac-arm64.dmg
path: build/freetube-${{ steps.versionNumber.outputs.version }}-arm64.dmg
- name: Upload Mac arm64 .zip Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-mac-arm64.zip
path: build/freetube-${{ steps.versionNumber.outputs.version }}-arm64-mac.zip
- name: Upload Mac arm64 .7z Artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #v7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #v7.0.1
if: startsWith(matrix.os, 'macos') && startsWith(matrix.runtime, 'osx-arm64')
with:
name: freetube-${{ steps.versionNumber.outputs.version }}-mac-arm64.7z
path: build/freetube-${{ steps.versionNumber.outputs.version }}-arm64-mac.7z
- name: Save yarn cache
uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 #v5.0.4
- name: Save pnpm cache
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 #v6.1.0
# Only save the cache if we weren't able to restore an existing one above
if: steps.restore_cache.outputs.cache-primary-key != steps.restore_cache.outputs.cache-matched-key
with:
+13 -7
View File
@@ -19,9 +19,15 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: 22.x
cache: "yarn"
- name: 🧶 Yarn install
run: yarn ci
- name: Install pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 #v6.0.8
with:
version: 10
cache: false
- name: PNPM install
run: pnpm i
- name: Set environment icon & splash for android app
run: |
@@ -29,7 +35,7 @@ jobs:
node ./_scripts/_setAppSplashTheme.mjs --nightly
- name: 🔍Lint code
run: yarn lint
run: pnpm run lint
continue-on-error: true
- name: 📚Read package.json
@@ -73,7 +79,7 @@ jobs:
value: ${{ steps.pkg.outputs.productName }} Nightly
- name: 📦 Pack for 🕸web with Node.js
run: yarn pack:web
run: pnpm run pack:web
- name: 🐋 Build docker image
run: |
@@ -97,8 +103,8 @@ jobs:
- name: 📦 Pack for 📱Android
run: |
yarn pack:botGuardScript:android
yarn pack:android:dev
pnpm run pack:botGuardScript:android
pnpm run pack:android:dev
- name: 🦴 Fetch keystore from secrets
run: |
@@ -24,19 +24,19 @@ jobs:
steps:
- name: Checkout Repo
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #v7.0.0
with:
persist-credentials: false
- name: Compress Images
id: calibre
uses: calibreapp/image-actions@03c976c29803442fc4040a9de5509669e7759b81
uses: calibreapp/image-actions@9d037c06280028c110ff61c433ad4dc7d33c3c43
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
compressOnly: true
- name: Create New Pull Request If Needed
if: steps.calibre.outputs.markdown != ''
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 #v8.1.0
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 #v8.1.1
with:
title: Compressed Images Nightly
branch-suffix: timestamp
+3 -3
View File
@@ -38,17 +38,17 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #v7.0.0
with:
persist-credentials: false
- name: Initialize CodeQL
uses: github/codeql-action/init@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
uses: github/codeql-action/init@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
uses: github/codeql-action/analyze@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0
with:
category: "/language:${{matrix.language}}"
+1 -1
View File
@@ -24,7 +24,7 @@ jobs:
steps:
- name: check if prs are dirty
uses: eps1lon/actions-label-merge-conflict@1df065ebe6e3310545d4f4c4e862e43bdca146f0 #v3.0.3
uses: eps1lon/actions-label-merge-conflict@0273be72a0bbd58fcd71d0d6c02c209b50d1e5e1 #v3.1.0
with:
dirtyLabel: "PR: merge conflicts / rebase needed"
removeOnDirtyLabel: "PR: waiting for review"
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-slim
if: ${{ !github.event.pull_request.draft }}
steps:
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b #v6.0.1
- uses: actions/labeler@b8dd2d9be0f68b860e7dae5dae7d772984eacd6d #v6.2.0
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/pr-labeler.yml
+25 -23
View File
@@ -18,44 +18,46 @@ jobs:
contents: read
steps:
- name: Get yarn cache directory
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #v7.0.0
with:
persist-credentials: false
- name: Use Node.js 24.x
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e #v6.4.0
with:
node-version: 24.x
package-manager-cache: false
- name: Install pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 #v6.0.9
with:
version: 10
cache: false
- name: Get pnpm cache directory
id: cache_dir
shell: bash
run: |
{
echo 'cache_dir<<EOF'
yarn cache dir
pnpm store path
echo EOF
} >> "$GITHUB_OUTPUT"
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
with:
persist-credentials: false
- name: Use Node.js 24.x
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f #v6.3.0
with:
node-version: 24.x
package-manager-cache: false
# This workflow runs on pull requests which are untrusted
# so we only restore the yarn cache, we don't save it to avoid cache poisoning
- name: Restore yarn cache
- name: Restore pnpm cache
id: restore_cache
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 #v5.0.4
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 #v6.1.0
with:
key: ${{ format('node-cache-{0}-{1}-yarn-{2}', runner.os, runner.arch, hashFiles('yarn.lock')) }}
key: ${{ format('node-cache-{0}-{1}-pnpm-{2}', runner.os, runner.arch, hashFiles('pnpm-lock.yaml')) }}
path: ${{ steps.cache_dir.outputs.cache_dir }}
- run: yarn run ci
- run: pnpm run ci
shell: bash
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: '1'
- run: yarn run lint
- run: pnpm run lint
shell: bash
# let's verify that webpack is able to package the project
- run: yarn run pack
- run: pnpm run pack
shell: bash
# verify that webpack is able to package the project using the web config
- run: yarn run pack:web
- run: pnpm run pack:web
shell: bash
+28 -55
View File
@@ -35,12 +35,15 @@ jobs:
include:
- runtime: linux-x64
os: ubuntu-latest
appimage-arch: amd64
- runtime: linux-armv7l
os: ubuntu-latest
appimage-arch: armv7l
- runtime: linux-arm64
os: ubuntu-latest
appimage-arch: arm64
- runtime: osx-x64
os: macOS-latest
@@ -57,22 +60,26 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #v7.0.0
with:
persist-credentials: false
# Do not restore the yarn cache, to avoid cache poisoning affecting releases
# Do not restore the pnpm cache, to avoid cache poisoning affecting releases
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f #v6.3.0
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e #v6.4.0
with:
node-version: ${{ matrix.node-version }}
package-manager-cache: false
- run: yarn run ci
- name: Install pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 #v6.0.9
with:
version: 10
cache: false
- run: pnpm run ci
shell: bash
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: '1'
- run: yarn run lint
- run: pnpm run lint
shell: bash
- name: Get Version Number
@@ -91,70 +98,36 @@ jobs:
- name: Build x64 with Node.js ${{ matrix.node-version}}
if: contains(matrix.runtime, 'x64')
shell: bash
run: yarn run build
run: pnpm run build
- name: Build ARMv7l with Node.js ${{ matrix.node-version}}
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
shell: bash
run: yarn run build:arm32
run: pnpm run build:arm32
- name: Build ARM64 with Node.js ${{ matrix.node-version}}
if: contains(matrix.runtime, 'arm64')
shell: bash
run: yarn run build:arm64
run: pnpm run build:arm64
- name: Convert X64 AppImage to static runtime and add update information
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-x64')
- name: Add update information to AppImage
if: startsWith(matrix.os, 'ubuntu')
shell: bash
env:
VERSION: ${{ steps.getPackageInfo.outputs.version }}
APPIMAGE_ARCH: ${{ matrix.appimage-arch }}
run: |
sudo apt install desktop-file-utils
cd build
appimage="FreeTube-${VERSION}.AppImage"
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" -O ./appimagetool.AppImage
chmod +x ./"$appimage" ./appimagetool.AppImage
update_information='gh-releases-zsync|FreeTubeApp|FreeTube|latest-all|freetube-*-amd64.AppImage.zsync'
./"$appimage" --appimage-extract && rm -f ./"$appimage"
./appimagetool.AppImage --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 20 \
-u "$update_information" -n ./squashfs-root ./"$appimage"
rm -rf ./squashfs-root ./appimagetool.AppImage
update_info="gh-releases-zsync|FreeTubeApp|FreeTube|latest-all|freetube-*-${APPIMAGE_ARCH}.AppImage.zsync"
- name: Convert ARMv7l AppImage to static runtime and add update information
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-armv7l')
shell: bash
env:
VERSION: ${{ steps.getPackageInfo.outputs.version }}
run: |
sudo apt install desktop-file-utils
cd build
appimage="FreeTube-${VERSION}-armv7l.AppImage"
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" -O ./appimagetool.AppImage
wget "https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64" -O runtime
chmod +x ./"$appimage" ./appimagetool.AppImage ./runtime
update_information='gh-releases-zsync|FreeTubeApp|FreeTube|latest-all|freetube-*-armv7l.AppImage.zsync'
TARGET_APPIMAGE="$appimage" ./runtime --appimage-extract && rm -f ./"$appimage"
ARCH=armhf ./appimagetool.AppImage --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 20 \
-u "$update_information" -n ./squashfs-root ./"$appimage"
rm -rf ./squashfs-root ./appimagetool.AppImage ./runtime
- name: Convert ARM64 AppImage to static runtime and add update information
if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.runtime, 'linux-arm64')
shell: bash
env:
VERSION: ${{ steps.getPackageInfo.outputs.version }}
run: |
sudo apt install desktop-file-utils
cd build
appimage="FreeTube-${VERSION}-arm64.AppImage"
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" -O ./appimagetool.AppImage
wget "https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64" -O runtime
chmod +x ./"$appimage" ./appimagetool.AppImage ./runtime
update_information='gh-releases-zsync|FreeTubeApp|FreeTube|latest-all|freetube-*-arm64.AppImage.zsync'
TARGET_APPIMAGE="$appimage" ./runtime --appimage-extract && rm -f ./"$appimage"
ARCH=aarch64 ./appimagetool.AppImage --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 20 \
-u "$update_information" -n ./squashfs-root ./"$appimage"
rm -rf ./squashfs-root ./appimagetool.AppImage ./runtime
section_offset_hex="$(objdump --section-headers ./FreeTube-${VERSION}*.AppImage | awk '$2 == ".upd_info" { printf $6 }')"
script='const fd = fs.openSync(process.argv[3], "r+"); fs.writeSync(fd, process.argv[2], parseInt(process.argv[1], 16)); fs.closeSync(fd)'
node -e "$script" $section_offset_hex "$update_info" ./FreeTube-${VERSION}*.AppImage
zsyncmake -u "freetube-${VERSION}-beta-${APPIMAGE_ARCH}.AppImage" ./FreeTube-${VERSION}*.AppImage
- name: Upload Linux .zip x64 Release
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 #v1.0.2
+24 -10
View File
@@ -17,29 +17,43 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: "yarn"
- name: 🧶 Yarn install
run: yarn ci
node-version: 22.x
- name: Install pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 #v6.0.8
with:
version: 10
cache: false
- name: PNPM install
run: pnpm i
- name: 🔍Lint code
run: yarn lint
run: pnpm run lint
continue-on-error: true
- name: 📚Read package.json
id: pkg
uses: jaywcjlove/github-action-package@v1.3.0
- name: Generate build number for final part of version number
id: buildNumber
run: |
# to make it easier to tell which is which when multiple are installed
echo "buildNumber=$(node ./_scripts/getReleaseNumber.mjs)" >> "$GITHUB_OUTPUT"
- name: Set Version Number Variable
id: versionNumber
uses: actions/github-script@v6
with:
result-encoding: string
script: |
// TODO✏ automate this
var run_number = ${{ github.run_number }} - 121
var run_number = ${{ steps.buildNumber.outputs.buildNumber }}
var version = '${{ steps.pkg.outputs.version }}'
var version_number = version + '.' + run_number
return version_number
- name: Set App ID Variable
id: appId
uses: actions/github-script@v6
@@ -70,7 +84,7 @@ jobs:
value: ${{ steps.pkg.outputs.productName }}
- name: 📦 Pack for 🕸web with Node.js
run: yarn pack:web
run: pnpm run pack:web
- name: 🐋 Build docker image
run: |
@@ -101,8 +115,8 @@ jobs:
- name: 📦 Pack for 📱Android with Node.js & Cordova
run: |
yarn pack:botGuardScript:android
yarn pack:android
pnpm run pack:botGuardScript:android
pnpm run pack:android
- name: 🦴 Fetch keystore from secrets
run: |
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
pull-requests: write
steps:
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f #v10.2.0
- uses: actions/stale@1e223db275d687790206a7acac4d1a11bd6fe629 #v10.4.0
with:
stale-pr-message: 'This PR is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 14 days.'
close-pr-message: 'This PR was closed because it has been stalled for 14 days with no activity.'
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #v7.0.0
with:
repository: FreeTubeApp/FreeTubeApp.io
token: ${{ secrets.FLATHUB_TOKEN }}
+2 -4
View File
@@ -1,5 +1,5 @@
{
"stylelint.packageManager": "yarn",
"stylelint.packageManager": "pnpm",
"stylelint.snippet": [
"css",
"less",
@@ -13,7 +13,6 @@
"postcss",
"scss"
],
"eslint.packageManager": "yarn",
"eslint.probe": [
"javascript",
"vue",
@@ -29,6 +28,5 @@
"jsonc",
"yml",
"yaml"
],
"javascript.preferences.importModuleSpecifier": "relative"
]
}
+1 -1
View File
@@ -19,7 +19,7 @@ Please follow these guidelines before sending your pull request and making contr
* Comment your code when necessary. Follow the [JavaScript Documentation and Comments Standard](https://www.drupal.org/docs/develop/standards/javascript/javascript-api-documentation-and-comment-standards) for functions.
* Please follow proper Vue structure when creating new code / components. Use existing code as well as the [Vue.js Guide](https://vuejs.org/guide/introduction.html) for reference.
* Please test your code. Make sure new features work as well as existing core features such as watching videos or loading subscriptions. New features need to work with both the Local API as well as the Invidious API
* Please make sure your code does not violate any standards set by our linter. It's up to you to make fixes whenever necessary. You can run `yarn run lint` to check locally and `yarn run lint-fix` to automatically fix smaller issues.
* Please make sure your code does not violate any standards set by our linter. It's up to you to make fixes whenever necessary. You can run `pnpm run lint` to check locally and `pnpm run lint-fix` to automatically fix smaller issues.
* Please limit the amount of Node Modules that you introduce into the project. Only include them when **absolutely necessary** for your code to work (Ex: Using nedb for databases) or if a module provides similar functionality to what you are trying to achieve (Ex: Using autolinker to create links to outside URLs instead of writing the functionality myself).
* Please try to stay involved with the community and maintain your code. We are only a handful of developers working on FreeTube in our spare time. We do not have time to work on everything, and it would be nice if you can maintain your code when necessary.
+3 -3
View File
@@ -3,14 +3,14 @@
FROM node:22-alpine AS dep
WORKDIR /app
COPY package.json ./package.json
COPY yarn.lock ./yarn.lock
COPY pnpm-lock.yaml ./pnpm-lock.yaml
COPY _scripts ./_scripts
# copy `dist` if it exists already
COPY dis[t]/web ./dist/web
# git is needed for jinter
RUN apk add git
# don't rebuild if you don't have to
RUN if [ ! -d 'dist/web' ]; then yarn ci; fi
RUN if [ ! -d 'dist/web' ]; then pnpm i; fi
## Build Stage ##
FROM node:22-alpine AS build
@@ -19,7 +19,7 @@ COPY . .
COPY --from=dep /app/dis[t]/web ./dist/web
COPY --from=dep /app/node_module[s] ./node_modules
# don't rebuild if you don't have to
RUN if [ ! -d 'dist/web' ]; then yarn pack:web; fi
RUN if [ ! -d 'dist/web' ]; then pnpm run pack:web; fi
## App Stage ##
FROM nginx:latest as app
-7
View File
@@ -90,7 +90,6 @@ yarn pack:web
### Commands for the PWA Docker Image
```bash
# 💨 Creates and runs the image locally. Add `--platform=linux/arm64` to docker build for ARM64 devices including Apple Silicon
docker build -t freetubecordova . # Warning, might take a while on Apple Silicon
docker run --name ftcordova -d -p 8080:80 freetubecordova
@@ -99,12 +98,6 @@ docker run --name ftcordova -d -p 8080:80 freetubecordova
docker pull ghcr.io/marmadilemanteater/freetubecordova:latest
# 👟 Runs the image from ghcr.io
docker run --name ftcordova -d -p 8080:80 ghcr.io/marmadilemanteater/freetubecordova:latest
# 🏃 Runs the image from Docker Hub.
docker run --name ftcordova -d -p 8080:80 owentruong/freetubecordova:latest
# 🏃‍♂️ Runs the image from Docker Hub (ARM64)
docker run --platform=linux/arm64 --name ftcordova -d -p 8080:80 owentruong/freetubecordova:latest-arm64
```
## Contributing
+2 -5
View File
@@ -1,9 +1,7 @@
import { readFile, readdir, writeFile } from 'fs/promises'
import { join } from 'path'
import { fileURLToPath } from 'url'
// sets the splashscreen & icon to one of three predefined themes (this makes it easier to tell, at a glance, which one is open)
// - release (the default production look)
// - nightly
@@ -84,8 +82,8 @@ async function constructThemePath(isDark = false, version = 0) {
const resDirectory = join(scriptDir, '..', '..', 'android/app/src/main/res/')
const files = await readdir(resDirectory)
const versionsListed = files
.filter(file => file.startsWith(`values${isDark ? '-night-' : '-'}v`))
.map(file => parseInt(file.split('-v')[1]))
.filter(file => file.startsWith(`values${isDark ? '-night-' : '-'}v`))
.map(file => parseInt(file.split('-v')[1]))
if (versionsListed.indexOf(version) !== -1) {
return join(resDirectory, `values${isDark ? '-night-' : '-'}v${version}`, 'themes.xml')
} else {
@@ -102,7 +100,6 @@ async function setValuesForThemeFile(values, isDark = false, version = 0) {
await writeFile(themePath, themeXml)
}
await setValuesForThemeFile({
windowSplashScreenBackground: currentTheme.back,
windowSplashScreenIconBackgroundColor: currentTheme.back
+2 -3
View File
@@ -1,12 +1,11 @@
const { readFile, writeFile } = require('fs/promises')
const { join } = require('path')
;(async () => {
const manifest = (await readFile(join(__dirname, '../android/app/src/main/AndroidManifest.xml'))).toString()
const invidiousInstances = JSON.parse((await readFile(join(__dirname, '../static/invidious-instances.json'))).toString())
const supportedLinks = manifest.match(/<!-- supported links -->[\s\S]*?<!-- \/supported links -->/gm)
const instancesXml = invidiousInstances.map(({ url, cors}) => {
const supportedLinks = manifest.match(/<!-- supported links -->[\S\s]*?<!-- \/supported links -->/gm)
const instancesXml = invidiousInstances.map(({ url, cors }) => {
return `<data android:host="${url.replace('https://', '')}" />`
}).join('\n ')
const postManifest = manifest.replace(supportedLinks[0], `<!-- supported links -->\n ${instancesXml}\n <!-- \/supported links -->`)
+31 -20
View File
@@ -3,7 +3,7 @@ process.env.NODE_ENV = 'development'
const electron = require('electron')
const webpack = require('webpack')
const WebpackDevServer = require('webpack-dev-server')
const kill = require('tree-kill')
const kill = require('@magda/tree-kill')
const path = require('path')
const { spawn } = require('child_process')
@@ -168,11 +168,6 @@ function startRenderer(callback) {
const compiler = webpack(rendererConfig)
const { name } = compiler
compiler.hooks.afterEmit.tap('afterEmit', () => {
console.log(`\nCompiled ${name} script!`)
console.log(`\nWatching file changes for ${name} script...`)
})
const server = new WebpackDevServer({
client: {
overlay: {
@@ -185,7 +180,7 @@ function startRenderer(callback) {
watch: {
ignored: [
/(dashFiles|storyboards)\/*/,
'/**/.DS_Store',
'**/.DS_Store',
'**/static/locales/*'
]
},
@@ -201,14 +196,27 @@ function startRenderer(callback) {
}
],
port
}, compiler)
})
server.startCallback(err => {
server.apply(compiler)
setupNotifyLocaleUpdate(compiler, server)
let firstTime = true
compiler.watch({ aggregateTimeout: 250 }, (err, result) => {
if (err) console.error(err)
setupNotifyLocaleUpdate(compiler, server)
if (result) {
console.log('\n' + result.toString({ colors: true }))
}
callback()
console.log(`\nCompiled ${name} script!\n\nWatching file changes for ${name} script...`)
if (firstTime) {
firstTime = false
callback()
}
})
}
@@ -216,11 +224,6 @@ function startWeb () {
const compiler = webpack(webConfig)
const { name } = compiler
compiler.hooks.afterEmit.tap('afterEmit', () => {
console.log(`\nCompiled ${name} script!`)
console.log(`\nWatching file changes for ${name} script...`)
})
const server = new WebpackDevServer({
open: true,
static: {
@@ -228,18 +231,26 @@ function startWeb () {
watch: {
ignored: [
/(dashFiles|storyboards)\/*/,
'/**/.DS_Store',
'**/.DS_Store',
'**/static/locales/*'
]
}
},
port
}, compiler)
})
server.startCallback(err => {
server.apply(compiler)
setupNotifyLocaleUpdate(compiler, server)
compiler.watch({ aggregateTimeout: 250 }, (err, result) => {
if (err) console.error(err)
setupNotifyLocaleUpdate(compiler, server)
if (result) {
console.log('\n' + result.toString({ colors: true }))
}
console.log(`\nCompiled ${name} script!\n\nWatching file changes for ${name} script...`)
})
}
if (!web) {
+10 -2
View File
@@ -21,7 +21,7 @@ export default {
files: [
'_icons/iconColor.*',
'icon.svg',
'./dist/**/*',
'dist/**/*',
'!dist/web/*',
'!node_modules/**/*',
],
@@ -73,6 +73,9 @@ export default {
'libsecret-1-0'
]
},
toolsets: {
appimage: '1.0.3'
},
mac: {
category: 'public.app-category.utilities',
icon: '_icons/iconMac.icns',
@@ -93,7 +96,12 @@ export default {
NSBluetoothPeripheralUsageDescription: undefined,
NSCameraUsageDescription: undefined,
NSMicrophoneUsageDescription: undefined,
}
},
// Enable ad-hoc signing
// If we skip signing entirely, macOS says that the application is damaged, which makes users open bug reports.
// With an ad-hoc signature it still refuses to launch by default but with the reason that it cannot verify the signature
identity: '-'
},
win: {
icon: '_icons/icon.ico',
-11
View File
@@ -1,11 +0,0 @@
import preferUseI18nPolyfillRule from './prefer-use-i18n-polyfill-rule.mjs'
export default {
meta: {
name: 'eslint-plugin-freetube',
version: '1.0'
},
rules: {
'prefer-use-i18n-polyfill': preferUseI18nPolyfillRule
}
}
@@ -1,62 +0,0 @@
import { dirname, relative, resolve } from 'path'
const polyfillPath = resolve(import.meta.dirname, '../../src/renderer/composables/use-i18n-polyfill')
function getRelativePolyfillPath(filePath) {
const relativePath = relative(dirname(filePath), polyfillPath).replaceAll('\\', '/')
if (relativePath[0] !== '.') {
return `./${relativePath}`
}
return relativePath
}
/** @type {import('eslint').Rule.RuleModule} */
export default {
meta: {
type: 'problem',
fixable: 'code'
},
create(context) {
return {
'ImportDeclaration[source.value="vue-i18n"]'(node) {
const specifierIndex = node.specifiers.findIndex(specifier => specifier.type === 'ImportSpecifier' && specifier.imported.name === 'useI18n')
if (specifierIndex !== -1) {
context.report({
node: node.specifiers.length === 1 ? node : node.specifiers[specifierIndex],
message: "Please use FreeTube's useI18n polyfill, as vue-i18n's useI18n composable does not work when the vue-i18n is in legacy mode, which is needed for components using the Options API.",
fix: context.physicalFilename === '<text>'
? undefined
: (fixer) => {
const relativePath = getRelativePolyfillPath(context.physicalFilename)
// If the import only imports `useI18n`, we can just update the source/from text
// Else we need to create a new import for `useI18n` and remove useI18n from the original one
if (node.specifiers.length === 1) {
return fixer.replaceText(node.source, `'${relativePath}'`)
} else {
const specifier = node.specifiers[specifierIndex]
let specifierText = 'useI18n'
if (specifier.imported.name !== specifier.local.name) {
specifierText += ` as ${specifier.local.name}`
}
return [
fixer.removeRange([
specifierIndex === 0 ? specifier.start : node.specifiers[specifierIndex - 1].end,
specifierIndex === node.specifiers.length - 1 ? specifier.end : node.specifiers[specifierIndex + 1].start
]),
fixer.insertTextAfter(node, `\nimport { ${specifierText} } from '${relativePath}'`)
]
}
}
})
}
}
}
}
}
+2 -1
View File
@@ -12,9 +12,10 @@
*/
import { mkdirSync, readFileSync, rmSync, writeFileSync } from 'fs'
import path from 'path'
import { Innertube, Misc } from 'youtubei.js'
const STATIC_DIRECTORY = `${import.meta.dirname}/../static`
const STATIC_DIRECTORY = path.resolve(import.meta.dirname, '../static')
const activeLanguagesPath = `${STATIC_DIRECTORY}/locales/activeLocales.json`
/** @type {string[]} */
+19
View File
@@ -0,0 +1,19 @@
import { fetch } from 'undici'
import packageJSON from '../package.json' with { type: 'json' }
const latestRelease = JSON.parse(await (await fetch('https://api.github.com/repos/MarmadileManteater/FreetubeAndroid/releases?per_page=1')).text())
const code = latestRelease[0].name
const [_, latestMajor, latestMinor, latestBuild] = code.split('.')
const [__, major, minor] = packageJSON.version.split('.')
if (
latestMajor == major &&
latestMinor
) {
console.log(parseInt(latestBuild) + 1)
} else {
console.log(1)
}
-1
View File
@@ -1,4 +1,3 @@
const exec = require('child_process').exec
/**
@@ -0,0 +1,40 @@
{
"image/apng": {
"extensions": [
"apng"
]
},
"image/avif": {
"extensions": [
"avif"
]
},
"image/gif": {
"extensions": [
"gif"
]
},
"image/jpeg": {
"extensions": [
"jpg",
"jpeg",
"jpe"
]
},
"image/png": {
"extensions": [
"png"
]
},
"image/svg+xml": {
"extensions": [
"svg",
"svgz"
]
},
"image/webp": {
"extensions": [
"webp"
]
}
}
-22
View File
@@ -1,22 +0,0 @@
/**
* electron-context-menu only needs mime-db for its save as feature.
* As we only activate save image and save as image features, we can remove all other mimetypes,
* as they will never get used.
* Which results in quite a significant reduction in file size.
* @param {string} source
*/
module.exports = function (source) {
const original = JSON.parse(source)
// Only the extensions field is needed, see: https://github.com/kevva/ext-list/blob/v2.2.2/index.js
return JSON.stringify({
'image/apng': { extensions: original['image/apng'].extensions },
'image/avif': { extensions: original['image/avif'].extensions },
'image/gif': { extensions: original['image/gif'].extensions },
'image/jpeg': { extensions: original['image/jpeg'].extensions },
'image/png': { extensions: original['image/png'].extensions },
'image/svg+xml': { extensions: original['image/svg+xml'].extensions },
'image/webp': { extensions: original['image/webp'].extensions }
})
}
+16 -16
View File
@@ -10,7 +10,7 @@ const { writeFile, rm, readFile } = require('fs/promises')
// #endregion
;(async (get, exec) => {
const givenArguments = { dryRun: false }
for (let arg of process.argv) {
for (const arg of process.argv) {
if (arg.startsWith('--version-number=')) {
givenArguments.versionNumber = arg.split('--version-number=')[1]
}
@@ -32,21 +32,23 @@ const { writeFile, rm, readFile } = require('fs/promises')
const releasesJSON = await releases.json()
// #region Version Number
const latestTag = releasesJSON[0].tag_name
const [ _latestMajor, _latestMinor, _latestPatch, latestRun ] = latestTag.split('.')
const [ currentMajor, currentMinor, currentPatch ] = version.split('.')
const [_latestMajor, _latestMinor, _latestPatch, latestRun] = latestTag.split('.')
const [currentMajor, currentMinor, currentPatch] = version.split('.')
const latestRunNumber = parseInt(latestRun)
const currentRunNumber = latestRunNumber + 1
const defaultVersionNumber = `${currentMajor}.${currentMinor}.${currentPatch}.${currentRunNumber}`
// get version number from either the props or a prompt
let { versionNumber } = ('versionNumber' in givenArguments) ? givenArguments : await get({
properties: {
versionNumber: {
pattern: /[0-9]*?.[0-9]*?.[0-9]*?.[0-9]*/,
message: 'Version number to release with',
default: defaultVersionNumber
}
}
})
let { versionNumber } = ('versionNumber' in givenArguments)
? givenArguments
: await get({
properties: {
versionNumber: {
pattern: /(?:\d*?.){3}\d*/,
message: 'Version number to release with',
default: defaultVersionNumber
}
}
})
const buildNumber = versionNumber.split('.').at(-1)
if (versionNumber === 'default') {
versionNumber = defaultVersionNumber
@@ -58,12 +60,12 @@ const { writeFile, rm, readFile } = require('fs/promises')
const numberOfCommits = ('numberOfCommits' in givenArguments) ? givenArguments.numberOfCommits : 3
let accumulator = 0
let mostRecentCommits = ''
for (let line of gitDiff.split('\n')) {
for (const line of gitDiff.split('\n')) {
if (line.trim() === '') {
continue
}
if (line.startsWith('commit ')) {
mostRecentCommits += `\n`
mostRecentCommits += '\n'
accumulator++
}
if (accumulator < numberOfCommits + 1) {
@@ -100,6 +102,4 @@ const { writeFile, rm, readFile } = require('fs/promises')
console.log('nothing committed: dry run')
}
// #endregion
})(promisify(get), promisify(exec))
+3 -4
View File
@@ -133,7 +133,7 @@ const config = {
__VUE_OPTIONS_API__: 'true',
__VUE_PROD_DEVTOOLS__: 'false',
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false',
__VUE_I18N_LEGACY_API__: 'true',
__VUE_I18N_LEGACY_API__: 'false',
__VUE_I18N_FULL_INSTALL__: 'false',
__INTLIFY_PROD_DEVTOOLS__: 'false',
'process.env.SWIPER_VERSION': `'${swiperVersion}'`
@@ -148,7 +148,7 @@ const config = {
nodeModules: false,
}),
new HtmlWebpackPlugin({
filename: "decipher.html",
filename: 'decipher.html',
inject: false,
templateContent: sigViewTemplateParameters.sigViewRaw,
nodeModules: false
@@ -175,7 +175,7 @@ const config = {
alias: {
DB_HANDLERS_ELECTRON_RENDERER_OR_WEB$: path.resolve(__dirname, '../src/datastores/handlers/web.js'),
// change to "shaka-player.ui-es2021.debug.js" to get debug logs (update jsconfig to get updated types)
'shaka-player$': 'shaka-player/dist/shaka-player.ui-es2021.js',
},
@@ -229,5 +229,4 @@ config.plugins.push(
})
)
module.exports = config
+11 -4
View File
@@ -20,10 +20,6 @@ const config = {
use: 'babel-loader',
exclude: /node_modules/,
},
{
resource: path.resolve(__dirname, '../node_modules/mime-db/db.json'),
use: path.join(__dirname, 'mime-db-shrinking-loader.js')
}
],
generator: {
json: {
@@ -31,6 +27,17 @@ const config = {
}
}
},
resolve: {
alias: {
// electron-context-menu only needs mime-db for its "save as" feature.
// As we only activate the save image and save as image features,
// we can remove all other mimetypes, as they will never get used.
// Which results in quite a significant reduction in file size.
//
// Only the extensions field is needed, see: https://github.com/kevva/ext-list/blob/v2.2.2/index.js
'mime-db$': path.join(__dirname, 'image-extensions-only-mime-db.json')
}
},
// webpack defaults to only optimising the production builds, so having this here is fine
optimization: {
minimizer: [
+1 -1
View File
@@ -142,7 +142,7 @@ const config = {
__VUE_OPTIONS_API__: 'true',
__VUE_PROD_DEVTOOLS__: 'false',
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false',
__VUE_I18N_LEGACY_API__: 'true',
__VUE_I18N_LEGACY_API__: 'false',
__VUE_I18N_FULL_INSTALL__: 'false',
__INTLIFY_PROD_DEVTOOLS__: 'false',
'process.env.LOCALE_NAMES': JSON.stringify(processLocalesPlugin.localeNames),
+14 -14
View File
@@ -142,7 +142,7 @@ const config = {
__VUE_OPTIONS_API__: 'true',
__VUE_PROD_DEVTOOLS__: 'false',
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false',
__VUE_I18N_LEGACY_API__: 'true',
__VUE_I18N_LEGACY_API__: 'false',
__VUE_I18N_FULL_INSTALL__: 'false',
__INTLIFY_PROD_DEVTOOLS__: 'false',
'process.env.SWIPER_VERSION': `'${swiperVersion}'`
@@ -204,19 +204,19 @@ config.plugins.push(
'process.env.SHAKA_LOCALES_PREBUNDLED': JSON.stringify(SHAKA_LOCALES_PREBUNDLED)
}),
new CopyWebpackPlugin({
patterns: [
{
from: path.join(__dirname, '../_icons/192x192.png'),
to: path.join(__dirname, '../dist/web/static/_icons/192x192.png'),
},
{
from: path.join(__dirname, '../_icons/512x512.png'),
to: path.join(__dirname, '../dist/web/static/_icons/512x512.png'),
},
{
from: path.join(__dirname, '../static/pwabuilder-sw.js'),
to: path.join(__dirname, '../dist/web/pwabuilder-sw.js'),
},
patterns: [
{
from: path.join(__dirname, '../_icons/192x192.png'),
to: path.join(__dirname, '../dist/web/static/_icons/192x192.png'),
},
{
from: path.join(__dirname, '../_icons/512x512.png'),
to: path.join(__dirname, '../dist/web/static/_icons/512x512.png'),
},
{
from: path.join(__dirname, '../static/pwabuilder-sw.js'),
to: path.join(__dirname, '../dist/web/pwabuilder-sw.js'),
},
{
from: path.join(__dirname, '../static'),
to: path.join(__dirname, '../dist/web/static'),
-14
View File
@@ -14,8 +14,6 @@ import eslintPluginImportX from 'eslint-plugin-import-x'
import eslintPluginN from 'eslint-plugin-n'
import eslintPluginPromise from 'eslint-plugin-promise'
import freetube from './_scripts/eslint-rules/plugin.mjs'
import activeLocales from './static/locales/activeLocales.json' with { type: 'json' }
export default [
@@ -246,7 +244,6 @@ export default [
plugins: {
unicorn: eslintPluginUnicorn,
jsdoc,
freetube,
},
languageOptions: {
@@ -333,8 +330,6 @@ export default [
'jsdoc/check-types': 'error',
'jsdoc/no-bad-blocks': 'error',
'jsdoc/no-multi-asterisks': 'error',
'freetube/prefer-use-i18n-polyfill': 'error',
},
},
@@ -346,15 +341,6 @@ export default [
}
}
},
{
files: ['src/renderer/directives/vSaferHtml.js'],
languageOptions: {
globals: {
// Fix Sanitizer not being listed in `globals` yet, remove it when it gets added in the future
Sanitizer: 'readable'
}
}
},
...eslintPluginJsonc.configs.base,
{
+2 -3
View File
@@ -6,11 +6,10 @@
"module": "esnext",
"moduleResolution": "bundler",
"strictNullChecks": true,
"baseUrl": "./",
"paths": {
"DB_HANDLERS_ELECTRON_RENDERER_OR_WEB": [
"src/datastores/handlers/electron",
"src/datastores/handlers/web"
"./src/datastores/handlers/electron",
"./src/datastores/handlers/web"
],
"shaka-player": [
"./node_modules/shaka-player/dist/shaka-player.ui-es2021"
+4 -4
View File
@@ -7,12 +7,12 @@ pre-commit:
# Only runs when any file with filename
# matching the glob is being committed
glob: "*.{js,vue}"
run: yarn run eslint --no-color {staged_files}
run: pnpm exec eslint --no-color {staged_files}
skip:
- rebase
stylelint:
glob: "*.{css,scss}"
run: yarn stylelint --no-color --allow-empty-input {staged_files}
run: pnpm exec stylelint --no-color --allow-empty-input {staged_files}
skip:
- rebase
@@ -22,7 +22,7 @@ pre-commit:
# commands:
# packages-audit:
# tags: frontend security
# run: yarn audit
# run: pnpm audit
# gems-audit:
# tags: backend security
# run: bundle audit
@@ -32,7 +32,7 @@ pre-commit:
# commands:
# eslint:
# glob: "*.{js,ts}"
# run: yarn eslint {staged_files}
# run: pnpm eslint {staged_files}
# rubocop:
# tags: backend style
# glob: "*.rb"
+54 -54
View File
@@ -2,7 +2,7 @@
"name": "freetube",
"productName": "FreeTube",
"description": "A private YouTube client",
"version": "0.24.0",
"version": "0.25.1",
"license": "AGPL-3.0-or-later",
"main": "./dist/main.js",
"private": true,
@@ -19,9 +19,9 @@
"url": "https://github.com/FreeTubeApp/FreeTube/issues"
},
"scripts": {
"build": "run-s pack build-release",
"build:arm64": "run-s pack build-release:arm64",
"build:arm32": "run-s pack build-release:arm32",
"build": "pnpm run pack && pnpm run build-release",
"build:arm64": "pnpm run pack && pnpm run build-release:arm64",
"build:arm32": "pnpm run pack && pnpm run build-release:arm32",
"build-release": "node _scripts/build.mjs",
"build-release:arm64": "node _scripts/build.mjs arm64",
"build-release:arm32": "node _scripts/build.mjs arm32",
@@ -31,16 +31,16 @@
"dev:web": "node _scripts/dev-runner.js --web",
"get-instances": "node _scripts/getInstances.js",
"get-regions": "node _scripts/getRegions.mjs",
"lint-all": "run-p lint lint-json",
"lint": "run-p eslint-lint lint-style",
"lint-fix": "run-p eslint-lint-fix lint-style-fix",
"lint-all": "pnpm run \"/^(lint|lint-json)$/\"",
"lint": "pnpm run \"/^(eslint-lint|lint-style)$/\"",
"lint-fix": "pnpm run \"/^(eslint-lint|lint-style)-fix$/\"",
"eslint-lint": "eslint --config eslint.config.mjs \"src/**/*.js\" \"src/renderer/**/*.vue\" \"static/*.js\" \"_scripts/*.js\" \"_scripts/**/*.mjs\"",
"eslint-lint-fix": "eslint --config eslint.config.mjs --fix \"src/**/*.js\" \"src/renderer/**/*.vue\" \"static/*.js\" \"_scripts/*.js\" \"_scripts/**/*.mjs\"",
"lint-json": "eslint --config eslint.config.mjs \"static/**/*.json\"",
"lint-style": "stylelint \"src/**/*.{css,scss}\"",
"lint-style-fix": "stylelint --fix \"src/**/*.{css,scss}\"",
"lint-yml": "eslint --config eslint.config.mjs \"**/*.yml\" \"**/*.yaml\"",
"pack": "run-p pack:main pack:renderer pack:preload pack:botGuardScript && node _scripts/injectAllowedPaths.mjs",
"pack": "pnpm run \"/^pack:(main|renderer|preload|botGuardScript)$/\" && node _scripts/injectAllowedPaths.mjs",
"pack:main": "webpack --mode=production --config-node-env=production --config _scripts/webpack.main.config.js",
"pack:renderer": "webpack --mode=production --config-node-env=production --config _scripts/webpack.renderer.config.js",
"pack:preload": "webpack --mode=production --config-node-env=production --config _scripts/webpack.preload.config.js",
@@ -49,79 +49,79 @@
"pack:botGuardScript:android": "webpack --config _scripts/webpack.botGuardScript.android.config.js",
"pack:android:core": "webpack --mode=production --config-node-env=production --config _scripts/webpack.android.config.js",
"pack:android:dev:core": "webpack --mode=development --config-node-env=development --config _scripts/webpack.android.config.js",
"pack:android": "run-s pack:botGuardScript:android pack:android:core",
"pack:android:dev": "run-s pack:botGuardScript:android pack:android:dev:core",
"pack:android": "pnpm run \"/^pack:(botGuardScript:android|android:core)$/\"",
"pack:android:dev": "pnpm run \"/^pack:(botGuardScript:android|android:dev:core)$/\"",
"checkforbadtemplates": "node _scripts/findMissingTemplates.mjs",
"ci": "yarn install --silent --frozen-lockfile --network-concurrency 1"
"ci": "pnpm install --frozen-lockfile"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^7.2.0",
"@fortawesome/free-brands-svg-icons": "^7.2.0",
"@fortawesome/free-regular-svg-icons": "^7.2.0",
"@fortawesome/free-solid-svg-icons": "^7.2.0",
"@fortawesome/vue-fontawesome": "^3.1.3",
"@fortawesome/fontawesome-svg-core": "^7.3.0",
"@fortawesome/free-brands-svg-icons": "^7.3.0",
"@fortawesome/free-regular-svg-icons": "^7.3.0",
"@fortawesome/free-solid-svg-icons": "^7.3.0",
"@fortawesome/vue-fontawesome": "^3.3.1",
"@seald-io/nedb": "https://github.com/MarmadileManteater/nedb.git",
"autolinker": "^4.1.5",
"bgutils-js": "^3.2.0",
"core-js": "^3.41.0",
"dompurify": "^3.3.3",
"dompurify": "^3.4.11",
"electron-context-menu": "^4.1.2",
"googlevideo": "^4.0.4",
"marked": "^17.0.5",
"marked": "^18.0.6",
"process": "^0.11.10",
"shaka-player": "^5.0.8",
"swiper": "^12.1.3",
"vue": "^3.5.31",
"vue-i18n": "^11.3.0",
"shaka-player": "^5.1.12",
"swiper": "^14.0.5",
"terser": "^5.49.0",
"undici": "^8.9.0",
"vue": "^3.5.39",
"vue-i18n": "^11.4.6",
"vue-observe-visibility": "^2.0.0-alpha.1",
"vue-router": "^5.0.4",
"vue-router": "^5.1.0",
"vuex": "^4.1.0",
"youtubei.js": "^17.0.1"
"youtubei.js": "^17.2.0"
},
"devDependencies": {
"@babel/core": "^7.29.0",
"@babel/preset-env": "^7.29.2",
"@double-great/stylelint-a11y": "^3.4.8",
"@babel/core": "^8.0.1",
"@babel/preset-env": "^8.0.2",
"@double-great/stylelint-a11y": "^3.5.0",
"@eslint/js": "^10.0.1",
"@intlify/eslint-plugin-vue-i18n": "^4.3.0",
"@intlify/eslint-plugin-vue-i18n": "^4.5.1",
"@magda/tree-kill": "1.2.3",
"@stylistic/eslint-plugin": "^5.10.0",
"babel-loader": "^10.1.1",
"copy-webpack-plugin": "^14.0.0",
"css-loader": "^7.1.4",
"css-minimizer-webpack-plugin": "^8.0.0",
"electron": "^41.1.0",
"electron-builder": "^26.8.1",
"eslint": "^10.1.0",
"eslint-plugin-import-x": "^4.16.2",
"eslint-plugin-jsdoc": "^62.8.1",
"eslint-plugin-jsonc": "^3.1.2",
"eslint-plugin-n": "^17.24.0",
"eslint-plugin-promise": "^7.2.1",
"eslint-plugin-unicorn": "^63.0.0",
"eslint-plugin-vue": "^10.8.0",
"electron": "^42.5.2",
"electron-builder": "^26.15.7",
"eslint": "^10.6.0",
"eslint-plugin-import-x": "^4.17.1",
"eslint-plugin-jsdoc": "^63.0.13",
"eslint-plugin-jsonc": "^3.3.0",
"eslint-plugin-n": "^18.2.1",
"eslint-plugin-promise": "^7.3.0",
"eslint-plugin-unicorn": "^71.1.0",
"eslint-plugin-vue": "^10.9.2",
"eslint-plugin-vuejs-accessibility": "^2.5.0",
"eslint-plugin-yml": "^3.3.1",
"globals": "^17.4.0",
"html-webpack-plugin": "^5.6.6",
"js-yaml": "^4.1.1",
"eslint-plugin-yml": "^3.6.0",
"globals": "^17.7.0",
"html-webpack-plugin": "^5.6.7",
"js-yaml": "^5.2.1",
"json-minimizer-webpack-plugin": "^5.0.1",
"lefthook": "^2.1.4",
"lefthook": "^2.1.10",
"mini-css-extract-plugin": "^2.10.2",
"npm-run-all2": "^8.0.4",
"postcss": "^8.5.8",
"postcss": "^8.5.16",
"postcss-scss": "^4.0.9",
"sass": "^1.98.0",
"sass-loader": "^16.0.7",
"stylelint": "^17.6.0",
"sass": "^1.101.0",
"sass-loader": "^17.0.0",
"stylelint": "^17.14.0",
"stylelint-config-sass-guidelines": "^13.0.0",
"stylelint-config-standard": "^40.0.0",
"stylelint-high-performance-animation": "^2.0.0",
"stylelint-use-logical-spec": "^5.0.1",
"tree-kill": "1.2.2",
"vue-eslint-parser": "^10.2.0",
"vue-eslint-parser": "^10.4.1",
"vue-loader": "^17.4.2",
"webpack": "^5.105.4",
"webpack-cli": "^7.0.2",
"webpack-dev-server": "^5.2.3"
"webpack": "^5.108.4",
"webpack-cli": "^7.2.1",
"webpack-dev-server": "^6.0.0"
}
}
+10550
View File
File diff suppressed because it is too large Load Diff
+16
View File
@@ -0,0 +1,16 @@
# https://github.com/pnpm/pnpm/issues/11070
# Disable until GitHub dependabot got pnpm >= 10.33.0 installed
# dedupePeers: true
# https://pnpm.io/next/settings#allowbuilds
allowBuilds:
'@parcel/watcher': false # Only required when you want to build @parcel/watcher from source
electron-winstaller: false # We build NSIS installers on Windows, not squirrel ones
lefthook: true # Installing git hooks
unrs-resolver: false # Works around an npm specific optional dependencies bug, so we don't need it with pnpm
overrides:
uuid@<11.1.1: '>=11.1.1'
minimumReleaseAgeExclude:
- "youtubei.js"
+3
View File
@@ -4,6 +4,7 @@ const IpcChannels = {
DISABLE_PROXY: 'disable-proxy',
GET_SYSTEM_LOCALE: 'get-system-locale',
GET_NAVIGATION_HISTORY: 'get-navigation-history',
IS_WAYLAND_PLATFORM: 'is-wayland-platform',
STOP_POWER_SAVE_BLOCKER: 'stop-power-save-blocker',
START_POWER_SAVE_BLOCKER: 'start-power-save-blocker',
CREATE_NEW_WINDOW: 'create-new-window',
@@ -151,6 +152,8 @@ const KeyboardShortcuts = {
CLOSE_WINDOW: 'ctrl+W',
TOGGLE_DEVTOOLS: 'ctrl+shift+I',
FOCUS_SEARCH: 'alt+D',
FOCUS_SEARCH_ALT: 'ctrl+L',
FOCUS_SEARCH_ALT_MAC: 'cmd+L',
SEARCH_IN_NEW_WINDOW: 'shift+enter',
RESET_ZOOM: 'ctrl+0',
ZOOM_IN: 'ctrl+plus',
+9
View File
@@ -48,6 +48,15 @@ class Settings {
await db.settings.removeAsync({ _id: 'saveWatchedProgress' })
}
// In FreeTube 0.24.0, the "Screenshot Mode" setting only had two options that were represented as a toggle named "Ask path"
// This is a one time migration to preserve users' Screenshot prompt preference through this change.
const screenshotAskPath = await db.settings.findOneAsync({ _id: 'screenshotAskPath' })
if (screenshotAskPath) {
await this.upsert('screenshotMode', screenshotAskPath.value ? 'prompt_folder' : 'default_folder')
await db.settings.removeAsync({ _id: 'screenshotAskPath' })
}
return db.settings.findAsync({ _id: { $ne: 'bounds' } })
}
+7 -1
View File
@@ -90,7 +90,13 @@ export async function handleOpenInExternalPlayer(event, payload) {
}
if (ignoreDefaultArgs) {
if (hasValidVideoId) {
if (hasValidPlaylistId && !hasValidVideoId) {
if (typeof cmdArgs.playlistUrl === 'string') {
args.push(`${cmdArgs.playlistUrl}https://youtube.com/playlist?list=${payload.playlistId}`)
} else if (!ignoreWarnings) {
unsupportedActions.push(UnsupportedPlayerActions.OPENING_PLAYLISTS)
}
} else if (hasValidVideoId) {
args.push(`${cmdArgs.videoUrl}https://www.youtube.com/watch?v=${payload.videoId}`)
}
} else {
+31 -14
View File
@@ -65,16 +65,25 @@ function runApp() {
? new Set(__FREETUBE_ALLOWED_PATHS__)
: new Set()
if (process.env.NODE_ENV === 'production') {
protocol.registerSchemesAsPrivileged([{
scheme: 'app',
protocol.registerSchemesAsPrivileged([
{
scheme: 'imagecache',
privileges: {
standard: true,
secure: true,
supportFetchAPI: true
corsEnabled: true
}
}])
}
},
...(process.env.NODE_ENV === 'production'
? [{
scheme: 'app',
privileges: {
standard: true,
secure: true,
supportFetchAPI: true
}
}]
: []),
])
const ROOT_APP_URL = process.env.NODE_ENV === 'development' ? 'http://localhost:9080' : 'app://bundle/index.html'
@@ -281,6 +290,7 @@ function runApp() {
let trayOnMinimize = false
let trayWindows = []
const trayMaximizedWindows = {}
const isTrayOnMinimizeSupported = process.platform !== 'darwin' && (process.platform !== 'linux' || app.commandLine.getSwitchValue('ozone-platform') !== 'wayland')
const userDataPath = app.getPath('userData')
@@ -337,7 +347,7 @@ function runApp() {
if (!openDeepLinksInNewWindow) {
// Just focus the main window (instead of starting a new instance)
if (mainWindow.isMinimized()) {
if (process.platform !== 'darwin' && trayOnMinimize) {
if (isTrayOnMinimizeSupported && trayOnMinimize) {
trayClick(mainWindow)
} else {
mainWindow.restore()
@@ -515,7 +525,7 @@ function runApp() {
backendPreference = doc.value
break
case 'hideToTrayOnMinimize':
if (process.platform !== 'darwin') {
if (isTrayOnMinimizeSupported) {
trayOnMinimize = doc.value
}
break
@@ -1023,7 +1033,7 @@ function runApp() {
// endregion Ensure child windows use same options since electron 14
if (process.platform !== 'darwin') {
if (isTrayOnMinimizeSupported) {
function manageTray(window, removeWindow = false) {
if (tray) {
if (!removeWindow) {
@@ -1135,7 +1145,7 @@ function runApp() {
return
}
if (process.platform !== 'darwin' && trayOnMinimize && trayWindows.length > 0) {
if (isTrayOnMinimizeSupported && trayOnMinimize && trayWindows.length > 0) {
trayClick(newWindow)
} else {
newWindow.show()
@@ -1337,6 +1347,12 @@ function runApp() {
}
})
ipcMain.handle(IpcChannels.IS_WAYLAND_PLATFORM, (event) => {
if (isFreeTubeUrl(event.senderFrame.url)) {
return app.commandLine.getSwitchValue('ozone-platform') === 'wayland'
}
})
/**
* @param {import('electron').WebContents} webContents
* @param {string | undefined} [currentPath]
@@ -1430,7 +1446,8 @@ function runApp() {
const filePath = path.resolve(directory, filename)
// Ensure that we are only writing inside of the expected directory
if (path.dirname(filePath) !== directory) {
// 'path.dirname' does not return trailing slash, remove it from 'directory' path to ensure consistent comparison
if (path.dirname(filePath) !== directory.replace(/\/$/, '')) {
throw new Error('Invalid save location')
}
@@ -1647,7 +1664,7 @@ function runApp() {
await setMenu()
break
case 'hideToTrayOnMinimize':
if (process.platform !== 'darwin') {
if (isTrayOnMinimizeSupported) {
trayOnMinimize = data.value
if (!trayOnMinimize) { showHiddenWindows() }
}
@@ -2105,7 +2122,7 @@ function runApp() {
})
}
if (process.platform !== 'darwin') {
if (isTrayOnMinimizeSupported) {
app.on('before-quit', () => {
if (tray) { tray.destroy() }
})
+7
View File
@@ -30,6 +30,13 @@ export default {
return ipcRenderer.invoke(IpcChannels.GET_SYSTEM_LOCALE)
},
/**
* @returns {Promise<boolean>}
*/
isWaylandPlatform: () => {
return ipcRenderer.invoke(IpcChannels.IS_WAYLAND_PLATFORM)
},
/**
* @param {string} path
* @param {Record<string, string> | null | undefined} query
+1 -1
View File
@@ -4,7 +4,7 @@
}
.noTapHighlight {
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-tap-highlight-color: rgb(0 0 0 / 0%);
}
.app {
+10 -15
View File
@@ -110,7 +110,7 @@
<script setup>
import { marked } from 'marked'
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
import { useI18n } from './composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import { useRoute, useRouter } from 'vue-router'
import FtFlexBox from './components/ft-flex-box/ft-flex-box.vue'
@@ -135,7 +135,6 @@ import { openExternalLink, openInternalPath, showToast } from './helpers/utils'
import { translateWindowTitle } from './helpers/strings'
import { loadLocale } from './i18n/index'
import 'core-js'
import android from 'android'
import { getUpdateInfo, updateAndroidTheme } from './helpers/android/system'
@@ -180,7 +179,7 @@ onMounted(async () => {
await store.dispatch('grabUserSettings')
updateTheme()
await store.dispatch('fetchInvidiousInstancesFromFile')
if (defaultInvidiousInstance.value === '') {
await store.dispatch('setRandomCurrentInvidiousInstance')
@@ -220,7 +219,7 @@ onMounted(async () => {
}
dataReady.value = true
setTimeout(() => {
checkForNewUpdates()
}, 500)
@@ -261,7 +260,6 @@ const secColor = computed(() => store.getters.getSecColor)
watch(secColor, updateTheme)
function updateTheme() {
if (process.env.IS_ANDROID) {
const theme = {
baseTheme: baseTheme.value || 'dark',
@@ -300,11 +298,10 @@ const updateBannerMessage = computed(() => {
})
async function checkForNewUpdates() {
if (!checkForUpdates.value) {
return
}
const info = await getUpdateInfo()
if (info.updateAvailable) {
updateChangelog.value = info.changeLog.body
@@ -564,13 +561,7 @@ const windowTitle = computed(() => {
!routePath.startsWith('/playlist/') &&
!routePath.startsWith('/search/')
) {
let title = translateWindowTitle(route.meta.title)
if (!title) {
title = packageDetails.productName
} else {
title = `${title} - ${packageDetails.productName}`
}
return title
return translateWindowTitle(route.meta.title) ?? ''
} else {
return null
}
@@ -580,7 +571,11 @@ const windowTitle = computed(() => {
const appTitle = computed(() => store.getters.getAppTitle)
watch(appTitle, (value) => {
document.title = value
if (value.length > 0) {
document.title = `${value} - ${packageDetails.productName}`
} else {
document.title = packageDetails.productName
}
})
watch(windowTitle, setWindowTitle)
@@ -0,0 +1,22 @@
.hotZone {
--usable-zone-height: 50px;
--zone-height: var(--usable-zone-height);
position: fixed;
inset-inline-start: 0;
inline-size: 100%;
block-size: var(--zone-height);
z-index: 99;
}
.topZone {
/* top nav height manually inspected to be 60px */
--zone-height: calc(var(--usable-zone-height) + 60px);
inset-block-start: 0;
}
.bottomZone {
inset-block-start: calc(100% - var(--zone-height));
}
@@ -0,0 +1,95 @@
<template>
<div>
<div
v-if="hotZoneShown"
class="hotZone topZone"
@dragenter="setScrollDirection('up')"
@dragleave="clearScrollDirection"
/>
<slot />
<div
v-if="hotZoneShown"
class="hotZone bottomZone"
@dragenter="setScrollDirection('down')"
@dragleave="clearScrollDirection"
/>
</div>
</template>
<script setup>
import { ref, watch, onWatcherCleanup } from 'vue'
const props = defineProps({
hotZoneEnabled: {
type: Boolean,
default: false,
},
})
const hotZoneShown = ref(false)
watch(() => props.hotZoneEnabled, hotZoneEnabled => {
// No need to wait when disabled
if (!hotZoneEnabled) {
hotZoneShown.value = false
return
}
// Show zone later to prevent `dragend` event
setTimeout(() => {
hotZoneShown.value = true
}, 0)
})
/** @import { Ref } from 'vue' */
/** @type {Ref<'up' | 'down' | ''>} */
const scrollDirection = ref('')
/**
* @param {'up' | 'down'} direction
*/
function setScrollDirection(direction) {
const notScrolling = !scrollDirection.value
if (notScrolling) {
scrollDirection.value = direction
}
}
function clearScrollDirection() {
scrollDirection.value = ''
}
/**
* @param {'up' | 'down'} direction
*/
function scroll(direction) {
const SPEED = 6
if (direction === 'up') {
globalThis.scrollBy(0, -SPEED)
} else if (direction === 'down') {
globalThis.scrollBy(0, SPEED)
}
}
watch(scrollDirection, direction => {
let scrollInterval
if (direction) {
scrollInterval = setInterval(() => {
scroll(direction)
}, 10)
} else {
clearInterval(scrollInterval)
}
onWatcherCleanup(() => {
clearInterval(scrollInterval)
})
})
</script>
<style scoped src="./AutoScrollWrapper.css" />
@@ -117,7 +117,7 @@
<script setup>
import { computed } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtChannelBubble from '../../components/FtChannelBubble/FtChannelBubble.vue'
import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
@@ -1,4 +1,5 @@
.shelfContainer {
margin-block-start: 0.5em;
max-inline-size: 85vw;
}
@@ -44,6 +44,7 @@
:data="shelf.content"
:use-channels-hidden-preference="false"
:display="shelf.isCommunity ? 'list' : ''"
:render-all-items-lazily="index > 2"
/>
</details>
</div>
@@ -59,7 +59,8 @@
:key="comment.id"
class="comment"
>
<router-link
<component
:is="enableChannelLinks ? 'router-link' : 'div'"
:to="`/channel/${comment.authorLink}`"
tabindex="-1"
>
@@ -77,7 +78,7 @@
alt=""
class="commentThumbnail"
>
</router-link>
</component>
<p
v-if="comment.isPinned"
class="commentPinned"
@@ -90,7 +91,8 @@
<p
class="commentAuthorWrapper"
>
<router-link
<component
:is="enableChannelLinks ? 'router-link' : 'span'"
class="commentAuthor"
dir="auto"
:class="{
@@ -99,7 +101,7 @@
:to="`/channel/${comment.authorLink}`"
>
{{ comment.author }}
</router-link>
</component>
<img
v-if="comment.isMember"
:src="comment.memberIconUrl"
@@ -177,7 +179,8 @@
:key="replyIndex"
class="comment"
>
<router-link
<component
:is="enableChannelLinks ? 'router-link' : 'div'"
:to="`/channel/${reply.authorLink}`"
tabindex="-1"
>
@@ -195,9 +198,10 @@
alt=""
class="commentThumbnail"
>
</router-link>
</component>
<p class="commentAuthorWrapper">
<router-link
<component
:is="enableChannelLinks ? 'router-link' : 'span'"
class="commentAuthor"
dir="auto"
:class="{
@@ -206,7 +210,7 @@
:to="`/channel/${reply.authorLink}`"
>
{{ reply.author }}
</router-link>
</component>
<img
v-if="reply.isMember"
:src="reply.memberIconUrl"
@@ -324,7 +328,7 @@
<script setup>
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { computed, ref, shallowRef } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtCard from '../ft-card/ft-card.vue'
import FtLoader from '../FtLoader/FtLoader.vue'
@@ -472,6 +476,8 @@ function handleSortChange() {
const emit = defineEmits(['timestamp-event'])
const enableChannelLinks = computed(() => !store.getters.getDisableChannelLinks)
/**
* @param {number} timestamp
*/
@@ -95,6 +95,24 @@
@click="showExportSearchHistoryPrompt = true"
/>
</FtFlexBox>
<h4 class="groupTitle">
{{ t('Settings.Settings') }}
<FtTooltip
class="selectTooltip"
position="top"
:tooltip="t('Settings.Data Settings.Settings Tooltip')"
/>
</h4>
<FtFlexBox class="box">
<FtButton
:label="t('Settings.Data Settings.Import Settings')"
@click="importSettings"
/>
<FtButton
:label="t('Settings.Data Settings.Export Settings')"
@click="exportSettings"
/>
</FtFlexBox>
<FtPrompt
v-if="showExportSubscriptionsPrompt"
:label="$t('Settings.Data Settings.Select Export Type')"
@@ -121,7 +139,7 @@
<script setup>
import { computed, ref } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import { useRouter } from 'vue-router'
import FtButton from '../FtButton/FtButton.vue'
@@ -129,8 +147,10 @@ import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
import FtPrompt from '../FtPrompt/FtPrompt.vue'
import FtSettingsSection from '../FtSettingsSection/FtSettingsSection.vue'
import FtToggleSwitch from '../FtToggleSwitch/FtToggleSwitch.vue'
import FtTooltip from '../FtTooltip/FtTooltip.vue'
import store from '../../store/index'
import { defaultUpdaterId, NON_TRANSFERABLE_SETTINGS } from '../../store/modules/settings'
import { MAIN_PROFILE_ID } from '../../../constants'
import { calculateColorLuminance, getRandomColor } from '../../helpers/colors'
@@ -166,16 +186,28 @@ function toggleCopyDataDir() {
}
async function selectDirectory() {
const uri = await selectDataDirectory(shouldCopyDataFilesWhenMoving.value)
if (uri !== null) {
dataDirectory.value = uri
try {
const uri = await selectDataDirectory(shouldCopyDataFilesWhenMoving.value)
if (uri !== null) {
dataDirectory.value = uri
}
showToast(t('Data Settings.Your data directory has been moved successfully'))
} catch (exception){
showToast(t('Data Settings.Error moving data directory'))
console.error(exception)
}
}
async function resetDirectory() {
const uri = await selectDataDirectory(shouldCopyDataFilesWhenMoving.value, true)
if (uri !== null) {
dataDirectory.value = uri
try {
const uri = await selectDataDirectory(shouldCopyDataFilesWhenMoving.value, true)
if (uri !== null) {
dataDirectory.value = uri
}
showToast(t('Data Settings.Your data directory has been moved successfully'))
} catch (exception) {
showToast(t('Data Settings.Error moving data directory'))
console.error(exception)
}
}
@@ -883,7 +915,6 @@ async function importFreeTubeWatchHistory(textDecode) {
const requiredKeys = [
'author',
'authorId',
'description',
'isLive',
'lengthSeconds',
'published',
@@ -901,6 +932,7 @@ async function importFreeTubeWatchHistory(textDecode) {
'lastViewedPlaylistItemId',
'lastViewedPlaylistType',
'viewCount',
'description',
]
const ignoredKeys = [
@@ -933,6 +965,9 @@ async function importFreeTubeWatchHistory(textDecode) {
showToast(t('Settings.Data Settings.History object has insufficient data, skipping item'))
console.error('Missing Keys: ', missingKeys, historyData)
} else {
// FreeTube history export does not have this data if the video was marked as watched manually, setting default value
historyObject.description = historyObject.description ?? ''
historyItems.set(historyObject.videoId, historyObject)
}
})
@@ -957,17 +992,21 @@ async function importYouTubeWatchHistory(historyData) {
// remove 'Watched' and translated variants from start of title
// so we get the common string prefix for all the titles
const getCommonStart = (allTitles) => {
const watchedTitle = allTitles[0].split(' ')
allTitles.forEach((title) => {
const splitTitle = title.split(' ')
for (let wtIndex = 0; wtIndex <= watchedTitle.length; wtIndex++) {
if (!splitTitle.includes(watchedTitle[wtIndex])) {
watchedTitle.splice(wtIndex, watchedTitle.length - wtIndex)
if (allTitles.length < 2) {
return ''
}
let commonStart = allTitles[0]
for (let i = 1; i < allTitles.length; i++) {
while (!allTitles[i].startsWith(commonStart)) {
commonStart = commonStart.slice(0, -1)
if (commonStart === '') {
return ''
}
}
})
}
return watchedTitle.join(' ')
return commonStart
}
const commonStart = getCommonStart(filteredHistoryData.map(e => e.title))
@@ -1261,7 +1300,7 @@ async function importPlaylists() {
shouldAddDuplicateVideos = existingPlaylist.videos.length > existingVideoIdSet.size
}
const playlistVideos = [...existingPlaylist.videos]
const playlistVideos = deepCopy(existingPlaylist.videos)
playlistObject.videos.forEach((video) => {
let videoExists = false
@@ -1523,6 +1562,81 @@ async function exportYouTubeSearchHistory() {
}
// #endregion search history
// #region settings
async function importSettings() {
let response
try {
response = await readFileWithPicker(
t('Settings.Data Settings.Settings File'),
{
'application/x-freetube-db': '.db',
'application/json': '.json'
},
IMPORT_DIRECTORY_ID,
START_IN_DIRECTORY
)
} catch (err) {
const message = t('Settings.Data Settings.Unable to read file')
showToast(`${message}: ${err}`)
return
}
if (response === null) {
return
}
const textDecode = response.content.split('\n')
textDecode.pop()
const currentSettings = store.state.settings
textDecode.forEach((rawEntry) => {
const entry = JSON.parse(rawEntry)
if (typeof entry._id !== 'string' || !Object.hasOwn(entry, 'value')) {
showToast(t('Settings.Data Settings.Setting object has insufficient data, skipping item'))
console.error('Missing keys:', entry)
} else if (!Object.hasOwn(currentSettings, entry._id)) {
const message = t('Settings.Data Settings.Unknown setting key', { key: entry._id })
showToast(message)
} else if (NON_TRANSFERABLE_SETTINGS.has(entry._id)) {
const message = t('Settings.Data Settings.Non-transferable setting key', { key: entry._id })
showToast(message)
} else {
const currentValue = currentSettings[entry._id]
const areValuesEqual = currentValue === entry.value ||
(typeof entry.value === 'object' && JSON.stringify(currentValue) === JSON.stringify(entry.value))
if (!areValuesEqual) {
const updaterId = defaultUpdaterId(entry._id)
store.dispatch(updaterId, entry.value)
}
}
})
showToast(t('Settings.Data Settings.All settings have been successfully imported'))
}
async function exportSettings() {
const settingDb = Object.entries(store.state.settings)
.filter(([_id]) => !NON_TRANSFERABLE_SETTINGS.has(_id))
.map(([_id, value]) => JSON.stringify({ _id, value }))
.join('\n') + '\n'
const dateStr = getTodayDateStrLocalTimezone()
const exportFileName = 'freetube-settings-' + dateStr + '.db'
await promptAndWriteToFile(
exportFileName,
settingDb,
t('Settings.Data Settings.Settings File'),
'application/x-freetube-db',
'.db',
t('Settings.Data Settings.All settings have been successfully exported')
)
}
// #endregion settings
</script>
<style scoped>
.data-directory-heading {
@@ -286,7 +286,7 @@
<script setup>
import { computed, onMounted, ref } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtSettingsSection from '../FtSettingsSection/FtSettingsSection.vue'
import FtToggleSwitch from '../FtToggleSwitch/FtToggleSwitch.vue'
@@ -62,7 +62,7 @@
<script setup>
import { computed } from 'vue'
import { useI18n } from '../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtSettingsSection from './FtSettingsSection/FtSettingsSection.vue'
import FtSelect from './FtSelect/FtSelect.vue'
@@ -11,7 +11,7 @@
<script setup>
import { computed } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import { randomArrayItem } from '../../helpers/utils'
@@ -10,7 +10,8 @@
<template
v-if="authorThumbnail"
>
<router-link
<component
:is="enableChannelLinks ? 'router-link' : 'div'"
v-if="authorId"
:to="`/channel/${authorId}`"
tabindex="-1"
@@ -21,7 +22,7 @@
class="communityThumbnail"
alt=""
>
</router-link>
</component>
<img
v-else
:src="authorThumbnail"
@@ -34,7 +35,7 @@
dir="auto"
>
<router-link
v-if="authorId"
v-if="authorId && enableChannelLinks"
:to="`/channel/${authorId}`"
class="authorNameLink"
>
@@ -60,7 +61,7 @@
<swiper-container
v-if="postType === 'multiImage' && postContent.content.length > 0"
ref="swiperContainerRef"
init="false"
:init="false"
class="sliderContainer"
>
<swiper-slide
@@ -174,7 +175,7 @@ import autolinker from 'autolinker'
import { A11y, Navigation, Pagination } from 'swiper/modules'
import { computed, onMounted, useTemplateRef } from 'vue'
import FtListVideo from '../ft-list-video/ft-list-video.vue'
import FtListVideo from '../FtListVideo/FtListVideo.vue'
import FtListPlaylist from '../FtListPlaylist/FtListPlaylist.vue'
import FtCommunityPoll from '../FtCommunityPoll/FtCommunityPoll.vue'
import FtShareButton from '../FtShareButton/FtShareButton.vue'
@@ -337,6 +338,8 @@ if (postType === 'multiImage' && postContent.content.length > 0) {
swiperContainerRef.value.initialize()
})
}
const enableChannelLinks = computed(() => !store.getters.getDisableChannelLinks)
</script>
<style scoped src="./FtCommunityPost.scss" lang="scss" />
@@ -44,7 +44,7 @@
<script setup>
import { computed, nextTick, onMounted, ref, useTemplateRef } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtButton from '../FtButton/FtButton.vue'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
@@ -8,10 +8,11 @@
appearance="result"
:data="result"
:data-type="dataType || result.type"
:first-screen="index < 16"
:first-screen="!renderAllItemsLazily && index < 16"
:layout="displayValue"
:show-video-with-last-viewed-playlist="showVideoWithLastViewedPlaylist"
:use-channels-hidden-preference="useChannelsHiddenPreference"
:use-hide-upcoming-premieres-preference="useHideUpcomingPremieresPreference"
:hide-forbidden-titles="hideForbiddenTitles"
:always-show-add-to-playlist-button="alwaysShowAddToPlaylistButton"
:quick-bookmark-button-enabled="quickBookmarkButtonEnabled"
@@ -22,6 +23,12 @@
:playlist-id="playlistId"
:playlist-type="playlistType"
:playlist-item-id="result.playlistItemId"
:dragged-video="draggedVideo"
:is-sort-order-custom="isSortOrderCustom"
:is-video-dragging="isVideoDragging"
@drag-video="dragVideo"
@move-dragged-video="moveDraggedVideo"
@drag-video-end="afterDrag"
@move-video-up="moveVideoUp"
@move-video-down="moveVideoDown"
@remove-from-playlist="removeFromPlaylist"
@@ -46,6 +53,10 @@ const props = defineProps({
type: String,
default: null,
},
renderAllItemsLazily: {
type: Boolean,
default: false
},
display: {
type: String,
required: false,
@@ -59,6 +70,10 @@ const props = defineProps({
type: Boolean,
default: true,
},
useHideUpcomingPremieresPreference: {
type: Boolean,
default: true,
},
hideForbiddenTitles: {
type: Boolean,
default: true
@@ -100,9 +115,21 @@ const props = defineProps({
type: String,
default: null
},
draggedVideo: {
type: Object,
default: () => ({ videoId: null, playlistItemId: null }),
},
isSortOrderCustom: {
type: Boolean,
default: false,
},
isVideoDragging: {
type: Boolean,
default: false,
},
})
const emit = defineEmits(['move-video-down', 'move-video-up', 'remove-from-playlist'])
const emit = defineEmits(['move-dragged-video', 'move-video-down', 'move-video-up', 'remove-from-playlist', 'drag-video', 'drag-video-end'])
/** @type {import('vue').ComputedRef<'grid' | 'list'>} */
const listType = computed(() => {
@@ -137,6 +164,28 @@ function moveVideoDown(videoId, playlistItemId) {
function removeFromPlaylist(videoId, playlistItemId) {
emit('remove-from-playlist', videoId, playlistItemId)
}
/** @import { VideoData } from '../../helpers/dragAndDrop' */
/**
* @param {VideoData} video
*/
function dragVideo(video) {
emit('drag-video', video)
}
/**
* @param {VideoData} video
* @param {VideoData} draggedVideo
*/
function moveDraggedVideo(video, draggedVideo) {
emit('move-dragged-video', video, draggedVideo)
}
function afterDrag() {
emit('drag-video-end')
}
</script>
<style scoped src="./FtElementList.css" />
+2 -1
View File
@@ -119,7 +119,7 @@
<script setup>
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { computed, reactive, ref, shallowRef, useId, useTemplateRef, watch } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtTooltip from '../FtTooltip/FtTooltip.vue'
@@ -372,6 +372,7 @@ function handleOptionClick(index) {
}
searchState.showOptions = false
searchState.isPointerInList = false
inputData.value = visibleDataList.value[index]
emit('input', inputData.value)
handleClick()
@@ -28,7 +28,7 @@
float: inline-start;
}
.ft-tag-box li>span {
.ft-tag-box li > .name {
padding-block: 10px;
padding-inline: 10px;
overflow-wrap: break-word;
@@ -59,7 +59,11 @@
loading="lazy"
>
</RouterLink>
<bdi>{{ (tag.preferredName) ? tag.preferredName : tag.name }}</bdi>
<bdi
class="name"
>
{{ (tag.preferredName) ? tag.preferredName : tag.name }}
</bdi>
</template>
<bdi v-else>{{ tag }}</bdi>
<button
@@ -80,7 +84,7 @@
<script setup>
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { useId, useTemplateRef } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtInput from '../FtInput/FtInput.vue'
@@ -60,7 +60,7 @@ import { KeyboardShortcuts } from '../../../constants'
import { getLocalizedShortcut } from '../../helpers/utils'
import FtPrompt from '../FtPrompt/FtPrompt.vue'
import store from '../../store/index'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtIconButton from '../FtIconButton/FtIconButton.vue'
const { t } = useI18n()
@@ -128,7 +128,10 @@ const localizedShortcutNameToShortcutsMappings = computed(() => {
[t('KeyboardShortcutPrompt.Reset Zoom'), ['RESET_ZOOM']],
[t('KeyboardShortcutPrompt.Zoom In'), ['ZOOM_IN']],
[t('KeyboardShortcutPrompt.Zoom Out'), ['ZOOM_OUT']],
[t('KeyboardShortcutPrompt.Focus Search'), ['FOCUS_SEARCH']],
[t('KeyboardShortcutPrompt.Focus Search'), [
'FOCUS_SEARCH',
'FOCUS_SEARCH_ALT',
]],
[t('KeyboardShortcutPrompt.Search in New Window'), ['SEARCH_IN_NEW_WINDOW']],
[t('KeyboardShortcutPrompt.Refresh'), ['REFRESH']],
@@ -8,7 +8,8 @@
}"
>
<div class="channelThumbnail">
<router-link
<component
:is="enableChannelLinks ? 'router-link' : 'div'"
:to="`/channel/${id}`"
class="channelThumbnailLink"
tabindex="-1"
@@ -19,11 +20,12 @@
:class="!isGame ? 'channelImage' : 'gameImage'"
alt=""
>
</router-link>
</component>
</div>
<div class="infoAndSubscribe">
<div class="info">
<router-link
<component
:is="enableChannelLinks ? 'router-link' : 'span'"
class="title"
:to="`/channel/${id}`"
>
@@ -33,16 +35,17 @@
>
{{ name }}
</h3>
</router-link>
</component>
<div class="infoLine">
<router-link
<component
:is="enableChannelLinks ? 'router-link' : 'span'"
v-if="handle !== null"
class="handle"
dir="auto"
:to="`/channel/${id}`"
>
{{ handle }}
</router-link>
</component>
<span
v-if="subscriberCount !== null && !hideChannelSubscriptions"
class="subscriberCount"
@@ -118,6 +121,8 @@ const hideUnsubscribeButton = computed(() => {
return store.getters.getHideUnsubscribeButton
})
const enableChannelLinks = computed(() => !store.getters.getDisableChannelLinks)
let id = ''
let thumbnail = ''
let name = ''
@@ -5,3 +5,12 @@
.list {
min-block-size: 131px;
}
.draggable:active {
cursor: grabbing;
}
.draggedVideo {
opacity: 0;
transition: 0.01s;
}
@@ -6,8 +6,12 @@
}"
:class="{
grid: layout === 'grid',
list: layout === 'list'
list: layout === 'list',
draggable: isDraggable,
draggedVideo: isVideoDragging && draggedVideo.videoId === data.videoId && draggedVideo.playlistItemId === data.playlistItemId,
}"
:draggable="isDraggable"
v-on="isDraggable ? draggableEventHandlers : {}"
>
<template
v-if="visible"
@@ -25,6 +29,8 @@
:can-move-video-up="canMoveVideoUp"
:can-move-video-down="canMoveVideoDown"
:can-remove-from-playlist="canRemoveFromPlaylist"
:layout="layout"
:show-grab-bar="isDraggable && layout === 'grid'"
@move-video-up="moveVideoUp"
@move-video-down="moveVideoDown"
@remove-from-playlist="removeFromPlaylist"
@@ -58,7 +64,9 @@
<script setup>
import { computed, ref } from 'vue'
import FtListVideo from '../ft-list-video/ft-list-video.vue'
import { handleDragAndDrop } from '../../helpers/dragAndDrop'
import FtListVideo from '../FtListVideo/FtListVideo.vue'
import FtListChannel from '../FtListChannel/FtListChannel.vue'
import FtListPlaylist from '../FtListPlaylist/FtListPlaylist.vue'
import FtCommunityPost from '../FtCommunityPost/FtCommunityPost.vue'
@@ -95,6 +103,10 @@ const props = defineProps({
type: Boolean,
default: true,
},
useHideUpcomingPremieresPreference: {
type: Boolean,
default: true,
},
hideForbiddenTitles: {
type: Boolean,
default: true
@@ -136,9 +148,36 @@ const props = defineProps({
type: Boolean,
default: false,
},
draggedVideo: {
type: Object,
default: () => ({ videoId: null, playlistItemId: null }),
},
isSortOrderCustom: {
type: Boolean,
default: false,
},
isVideoDragging: {
type: Boolean,
default: false,
},
})
const emit = defineEmits(['move-video-down', 'move-video-up', 'remove-from-playlist'])
const emit = defineEmits(['move-dragged-video', 'move-video-down', 'move-video-up', 'remove-from-playlist', 'drag-video', 'drag-video-end'])
const inUserPlaylist = props.playlistType === 'user'
const isDraggable = computed(() => inUserPlaylist && props.isSortOrderCustom && (props.canMoveVideoUp || props.canMoveVideoDown))
const { dragVideo, moveDraggedVideo, afterDrag } = handleDragAndDrop(emit)
const draggableEventHandlers = {
dragstart: onDragVideo,
dragover: event => event.preventDefault(),
dragenter: () => {
if (props.isVideoDragging) {
moveDraggedVideo(videoData, props.draggedVideo)
}
},
dragend: afterDrag,
drop: event => event.preventDefault(),
}
/** @type {import('vue').ComputedRef<'video' | 'shortVideo' | 'channel' | 'playlist' | 'community'>} */
const finalDataType = computed(() => {
@@ -152,6 +191,8 @@ const hideLiveStreams = computed(() => {
/** @type {import('vue').ComputedRef<boolean>} */
const hideUpcomingPremieres = computed(() => {
if (!props.useHideUpcomingPremieresPreference) { return false }
return store.getters.getHideUpcomingPremieres
})
@@ -294,6 +335,22 @@ function moveVideoDown(videoId, playlistItemId) {
function removeFromPlaylist(videoId, playlistItemId) {
emit('remove-from-playlist', videoId, playlistItemId)
}
function onDragVideo(event) {
// Only allow dragging via the drag bar
if (!event.target.classList.contains('draggable')) { return }
dragVideo(event, videoData)
}
/** @import { VideoData } from '../../helpers/dragAndDrop' */
/** @type {VideoData} */
const videoData = {
videoId: props.data.videoId,
playlistItemId: props.playlistItemId,
}
</script>
<style scoped src="./FtListLazyWrapper.css" />
@@ -47,7 +47,7 @@
</RouterLink>
<div class="infoLine">
<RouterLink
v-if="channelId"
v-if="channelId && enableChannelLinks"
class="channelName"
dir="auto"
:to="`/channel/${channelId}`"
@@ -92,7 +92,7 @@
<script setup>
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { computed } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtIconButton from '../FtIconButton/FtIconButton.vue'
@@ -268,6 +268,8 @@ const externalPlayer = computed(() => store.getters.getExternalPlayer)
/** @type {import('vue').ComputedRef<number>} */
const defaultPlayback = computed(() => store.getters.getDefaultPlayback)
const enableChannelLinks = computed(() => !store.getters.getDisableChannelLinks)
function handleExternalPlayer() {
if (process.env.IS_ELECTRON) {
window.ftElectron.openInExternalPlayer({
@@ -4,11 +4,37 @@
outline: 3px solid var(--side-nav-hover-color);
}
.grabBar {
color: var(--tertiary-text-color);
cursor: grab;
text-align: center;
user-select: none;
// Space a bit from the thumbnail.
padding-block: 1em;
}
.draggable:not(.draggable:only-child):focus .grabBar,
.draggable:not(.draggable:only-child):hover .grabBar {
display: revert;
}
// If touch screen device, always show grab bar.
@media (hover: none) {
.draggable:not(.draggable:only-child) .grabBar {
display: revert;
}
}
.thumbnailImage {
// Makes img element sized correctly before image loading starts
aspect-ratio: 16/9 auto;
}
.blur {
filter: blur(20px);
}
.videoTagLine {
margin-block-start: 3px;
}
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -33,7 +33,7 @@
<script setup>
import { computed, ref } from 'vue'
import FtListVideo from './ft-list-video/ft-list-video.vue'
import FtListVideo from './FtListVideo/FtListVideo.vue'
import store from '../store/index'
@@ -7,9 +7,47 @@
block-size: 40px;
}
.videoIndex {
.draggable:active {
cursor: grabbing;
}
.draggedVideo {
opacity: 0;
transition: 0.01s;
}
.videoIndexArea {
color: var(--tertiary-text-color);
text-align: center;
user-select: none;
}
.grabBar {
display: none;
cursor: grab;
color: var(--tertiary-text-color);
margin: auto;
}
.draggable .videoIndexArea {
/* Make draggable area large */
margin-block: 0;
block-size: 100%;
display: flex;
flex-direction: column;
justify-content: center;
cursor: grab;
}
.draggable:not(.draggable:only-child) .videoIndexArea {
display: grid;
place-content: center;
grid-auto-rows: min-content;
}
.draggable:not(.draggable:only-child) .grabBar {
display: revert;
order: 2;
}
.videoIndexIcon {
@@ -3,23 +3,40 @@
v-observe-visibility="visible ? false : {
callback: onVisibilityChanged
}"
:class="{ placeholder: !visible }"
:class="{
placeholder: !visible,
draggable: canBecomeDraggable,
draggedVideo: isVideoDragging && draggedVideo.videoId === data.videoId && draggedVideo.playlistItemId === data.playlistItemId,
}"
:draggable="canBecomeDraggable"
v-on="canBecomeDraggable ? draggableEventHandlers : {}"
>
<template
v-if="visible"
>
<p
class="videoIndex"
class="videoIndexArea"
>
<FontAwesomeIcon
v-if="isCurrentVideo"
class="videoIndexIcon"
:icon="['fas', 'play']"
/>
<template
v-else
>
{{ videoIndex + 1 }}
<FontAwesomeIcon
v-if="canBecomeDraggable"
class="grabBar"
:icon="['fas', 'fa-bars']"
/>
<span
class="videoIndex"
>
{{ videoIndex + 1 }}
</span>
</template>
</p>
<FtListVideo
@@ -49,9 +66,11 @@
<script setup>
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { ref, watch } from 'vue'
import { computed, ref, watch } from 'vue'
import FtListVideo from '../ft-list-video/ft-list-video.vue'
import { handleDragAndDrop } from '../../helpers/dragAndDrop'
import FtListVideo from '../FtListVideo/FtListVideo.vue'
const props = defineProps({
data: {
@@ -114,6 +133,18 @@ const props = defineProps({
type: Boolean,
default: false,
},
draggedVideo: {
type: Object,
default: () => ({ videoId: null, playlistItemId: null }),
},
isSortOrderCustom: {
type: Boolean,
default: null
},
isVideoDragging: {
type: Boolean,
default: false,
},
videoIndex: {
type: Number,
default: -1
@@ -124,10 +155,24 @@ const props = defineProps({
}
})
const emit = defineEmits(['move-video-down', 'move-video-up', 'pause-player', 'remove-from-playlist'])
const emit = defineEmits(['move-dragged-video', 'move-video-down', 'move-video-up', 'pause-player', 'remove-from-playlist', 'drag-video', 'drag-video-end'])
const visible = ref(props.initialVisibleState)
const inUserPlaylist = props.playlistType === 'user'
const canBecomeDraggable = computed(() => inUserPlaylist && props.isSortOrderCustom && (props.canMoveVideoUp || props.canMoveVideoDown))
const { dragVideo, moveDraggedVideo, afterDrag } = handleDragAndDrop(emit)
const draggableEventHandlers = {
dragstart: onDragVideo,
dragover: event => event.preventDefault(),
dragenter: () => {
if (props.isVideoDragging) {
moveDraggedVideo(videoData, props.draggedVideo)
}
},
dragend: afterDrag,
drop: event => event.preventDefault(),
}
let stopWatchingInitialVisibleState = null
if (!props.initialVisibleState) {
@@ -172,6 +217,21 @@ function moveVideoDown(videoId, playlistItemId) {
emit('move-video-down', videoId, playlistItemId)
}
function onDragVideo(event) {
// Only allow dragging via the drag bar
if (!event.target.classList.contains('draggable')) { return }
dragVideo(event, videoData)
}
/** @import { VideoData } from '../../helpers/dragAndDrop' */
/** @type {VideoData} */
const videoData = {
videoId: props.data.videoId,
playlistItemId: props.playlistItemId,
}
/**
* @param {string} videoId
* @param {string} playlistItemId
@@ -103,7 +103,7 @@
<script setup>
import { computed, nextTick, onBeforeUnmount, onMounted, ref, useTemplateRef, watch } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
import FtPrompt from '../FtPrompt/FtPrompt.vue'
@@ -418,7 +418,7 @@ const updateQueryDebounce = debounce(/** @param {string} query_ */(query_) => {
onMounted(() => {
document.addEventListener('keydown', keyboardShortcutHandler)
// Don't open keyboard prompt immediately on android
// Don't open keyboard prompt immediately on android
if (!process.env.IS_ANDROID) {
// User might want to search first if they have many playlists
nextTick(() => {
@@ -55,7 +55,7 @@
<script setup>
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { computed, ref } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import store from '../../store/index'
@@ -30,7 +30,7 @@
<script setup>
import { computed, useId } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import { getFirstCharacter } from '../../helpers/strings'
@@ -4,7 +4,10 @@
<h2>
{{ $t("Profile.Subscription List") }}
</h2>
<p class="selectedCount">
<p
v-if="showUnsubscribeButton"
class="selectedCount"
>
{{ selectedText }}
</p>
<FtFlexBox>
@@ -14,12 +17,14 @@
:channel-id="channel.id"
:channel-name="channel.name"
:channel-thumbnail="channel.thumbnail"
:selectable="true"
:selectable="showUnsubscribeButton"
:selected="selected.has(channel.id)"
@change="handleChannelToggle(channel.id)"
/>
</FtFlexBox>
<FtFlexBox>
<FtFlexBox
v-if="showUnsubscribeButton"
>
<FtButton
:label="$t('Profile.Select All')"
@click="selectAll"
@@ -49,7 +54,7 @@
<script setup>
import { computed, reactive, ref, shallowRef, watch } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtCard from '../ft-card/ft-card.vue'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
@@ -102,6 +107,11 @@ const intlCollator = computed(() => {
return new Intl.Collator([locale.value, 'en'], { sensitivity: 'base' })
})
/** @type {import('vue').ComputedRef<boolean>} */
const showUnsubscribeButton = computed(() => {
return !store.getters.getHideUnsubscribeButton
})
/** @type {import('vue').ShallowRef<Profile['subscriptions']>} */
const subscriptions = shallowRef([])
@@ -110,7 +110,7 @@
<script setup>
import { computed, ref, watch } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtCard from '../ft-card/ft-card.vue'
import FtPrompt from '../FtPrompt/FtPrompt.vue'
@@ -14,7 +14,10 @@
@change="handleProfileFilterChange"
/>
</FtFlexBox>
<p class="selected">
<p
v-if="showUnsubscribeButton"
class="selected"
>
{{ selectedText }}
</p>
<FtFlexBox>
@@ -24,12 +27,14 @@
:channel-id="channel.id"
:channel-name="channel.name"
:channel-thumbnail="channel.thumbnail"
:selectable="true"
:selectable="showUnsubscribeButton"
:selected="selected.has(channel.id)"
@change="handleChannelToggle(channel.id)"
/>
</FtFlexBox>
<FtFlexBox>
<FtFlexBox
v-if="showUnsubscribeButton"
>
<FtButton
:label="$t('Profile.Select All')"
@click="selectAll"
@@ -51,7 +56,7 @@
<script setup>
import { computed, reactive, ref, shallowRef, watch } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtCard from '../ft-card/ft-card.vue'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
@@ -111,6 +116,11 @@ const intlCollator = computed(() => {
return new Intl.Collator([locale.value, 'en'], { sensitivity: 'base' })
})
/** @type {import('vue').ComputedRef<boolean>} */
const showUnsubscribeButton = computed(() => {
return !store.getters.getHideUnsubscribeButton
})
const filteredProfileIndex = ref(0)
/** @type {import('vue').ShallowRef<Profile['subscriptions']>} */
@@ -84,7 +84,7 @@
<script setup>
import { computed, nextTick, ref, useId, useTemplateRef } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import { useRouter } from 'vue-router'
import FtCard from '../ft-card/ft-card.vue'
@@ -95,7 +95,10 @@
}
@media only screen and (width <= 420px) {
.pure-checkbox input[type="checkbox"] + label, .pure-radiobutton input[type="checkbox"] + label, .pure-checkbox input[type="radio"] + label, .pure-radiobutton input[type="radio"] + label {
.pure-checkbox input[type='checkbox'] + label,
.pure-radiobutton input[type='checkbox'] + label,
.pure-checkbox input[type='radio'] + label,
.pure-radiobutton input[type='radio'] + label {
margin-block: 20px;
}
}
@@ -22,7 +22,7 @@
<script setup>
import { computed } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtIconButton from '../FtIconButton/FtIconButton.vue'
@@ -34,10 +34,10 @@
cursor: pointer;
font-size: 20px;
line-height: 1em;
padding: 0px;
padding: 0;
transition: background 0.2s ease-out;
position: relative;
top: -3px;
inset-block-start: -3px;
&.disabled {
opacity: 0.5;
@@ -74,7 +74,7 @@
@media only screen and (width <= 420px) {
.radioFlexBox {
max-block-size: calc(100vh - 8.5em);
margin-bottom: 0.75em;
margin-block-end: 0.75em;
overflow-y: scroll;
justify-content: start;
}
@@ -74,7 +74,7 @@
<script setup>
import { computed, ref, watch } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
import FtRadioButton from '../FtRadioButton/FtRadioButton.vue'
@@ -98,7 +98,7 @@
padding-inline: 10px;
}
:deep(:not(.select, .selectLabel) > .tooltip) {
:deep(:not(.select, .selectLabel, .groupTitle) > .tooltip) {
display: inline-block;
position: absolute;
inset-inline-end: -25px;
@@ -118,7 +118,7 @@
<script setup>
import { computed, ref, useTemplateRef } from 'vue'
import { copyToClipboard, openExternalLink } from '../../helpers/utils'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
import FtIconButton from '../FtIconButton/FtIconButton.vue'
@@ -31,7 +31,7 @@
<script setup>
import { computed, useId } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtSelect from '../FtSelect/FtSelect.vue'
@@ -93,7 +93,7 @@
<script setup>
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { computed, ref, shallowRef, useId, useTemplateRef } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtButton from '../FtButton/FtButton.vue'
import FtPrompt from '../FtPrompt/FtPrompt.vue'
@@ -42,7 +42,7 @@
border-block-end: 1px solid #e46962;
}
[data-theme="light"] .logs > .warning {
[data-theme='light'] .logs > .warning {
background-color: #fef6d5;
color: #3e2f00;
border-block-end: 2px solid var(--card-bg-color);
@@ -69,16 +69,17 @@
display: block;
}
.error .source, .warning .source {
.error .source,
.warning .source {
color: #fff;
}
[data-theme="light"] .source,
[data-theme="light"] .error {
[data-theme='light'] .source,
[data-theme='light'] .error {
color: #000;
}
[data-theme="light"] .logs > .error {
[data-theme='light'] .logs > .error {
background-color: #fcebeb;
color: #410e0b;
border-block-end: 2px solid var(--card-bg-color);
@@ -54,7 +54,7 @@ import FtButton from '../FtButton/FtButton.vue'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { isColourDark } from '../../helpers/android/utils'
import { getConsoleLogs } from '../../helpers/android/system'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
@@ -43,7 +43,7 @@
@change="updateOpenDeepLinksInNewWindow"
/>
<FtToggleSwitch
v-if="!IS_MAC && USING_ELECTRON"
v-if="!IS_MAC && !isLinuxWayland && USING_ELECTRON"
:label="t('Settings.General Settings.Minimize to system tray')"
:default-value="hideToTrayOnMinimize"
:compact="true"
@@ -174,8 +174,8 @@
</template>
<script setup>
import { computed, onBeforeUnmount } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { computed, onMounted, onBeforeUnmount, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { useRouter } from 'vue-router'
import FtSettingsSection from '../FtSettingsSection/FtSettingsSection.vue'
@@ -199,6 +199,15 @@ const USING_ANDROID = process.env.IS_ANDROID
const { t } = useI18n()
const router = useRouter()
// The 'minimize' event doesn't fire on wayland
// https://github.com/electron/electron/issues/51766
const isLinuxWayland = ref(false)
if (process.env.IS_ELECTRON && process.platform === 'linux') {
onMounted(async () => {
isLinuxWayland.value = await window.ftElectron.isWaylandPlatform()
})
}
/** @type {import('vue').ComputedRef<boolean>} */
const checkForUpdates = computed(() => store.getters.getCheckForUpdates)
@@ -16,6 +16,12 @@
:default-value="showFamilyFriendlyOnly"
@change="updateShowFamilyFriendlyOnly"
/>
<FtToggleSwitch
:label="$t('Settings.Parental Control Settings.Disable Channel Links')"
compact
:default-value="disableChannelLinks"
@change="updateDisableChannelLinks"
/>
</div>
<div class="switchColumn">
<FtToggleSwitch
@@ -59,6 +65,10 @@ const showFamilyFriendlyOnly = computed(() => {
return store.getters.getShowFamilyFriendlyOnly
})
const disableChannelLinks = computed(() => {
return store.getters.getDisableChannelLinks
})
/**
* @param {boolean} value
*/
@@ -86,4 +96,11 @@ function updateHideUploader(value) {
function updateShowFamilyFriendlyOnly(value) {
store.dispatch('updateShowFamilyFriendlyOnly', value)
}
/**
* @param {boolean} value
*/
function updateDisableChannelLinks(value) {
store.dispatch('updateDisableChannelLinks', value)
}
</script>
@@ -81,6 +81,7 @@
:value="defaultViewingMode"
:select-names="viewingModeNames"
:select-values="viewingModeValues"
:tooltip="t('Settings.Player Settings.Default Viewing Mode.Tooltip')"
:icon="['fas', 'expand']"
@change="updateDefaultViewingMode"
/>
@@ -176,6 +177,16 @@
</FtFlexBox>
<div v-if="enableScreenshot">
<FtFlexBox>
<FtSelect
:placeholder="t('Settings.Player Settings.Screenshot.Mode')"
:value="screenshotMode"
:select-names="screenshotModeNames"
:select-values="screenshotModeValues"
:icon="['fas', 'expand']"
@change="handleUpdateScreenshotMode"
/>
</FtFlexBox>
<FtFlexBox v-if="screenshotMode !== 'clipboard'">
<FtSelect
:placeholder="t('Settings.Player Settings.Screenshot.Format Label')"
:value="screenshotFormat"
@@ -195,15 +206,8 @@
@change="updateScreenshotQuality"
/>
</FtFlexBox>
<FtFlexBox v-if="USING_ELECTRON">
<FtToggleSwitch
:label="t('Settings.Player Settings.Screenshot.Ask Path')"
:default-value="screenshotAskPath"
@change="updateScreenshotAskPath"
/>
</FtFlexBox>
<FtFlexBox
v-if="USING_ELECTRON && !screenshotAskPath"
v-if="USING_ELECTRON && screenshotMode === 'default_folder'"
class="screenshotFolderContainer"
>
<p class="screenshotFolderLabel">
@@ -223,6 +227,7 @@
/>
</FtFlexBox>
<FtFlexBox
v-if="screenshotMode !== 'clipboard'"
class="screenshotFolderContainer"
>
<p class="screenshotFilenamePatternTitle">
@@ -256,7 +261,7 @@
<script setup>
import { computed, onMounted, ref } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtSettingsSection from '../FtSettingsSection/FtSettingsSection.vue'
import FtSelect from '../FtSelect/FtSelect.vue'
@@ -401,10 +406,12 @@ const viewingModeNames = computed(() => {
t('Settings.General Settings.Thumbnail Preference.Default'),
t('Settings.Player Settings.Default Viewing Mode.Theater'),
t('Video.Player.Full Window'),
t('Settings.Player Settings.Default Viewing Mode.Full Window (Always On)'),
...process.env.IS_ELECTRON
? [
t('Settings.Player Settings.Default Viewing Mode.Full Screen'),
t('Settings.Player Settings.Default Viewing Mode.Full Screen (Always On)'),
t('Settings.Player Settings.Default Viewing Mode.Picture in Picture')
]
: []
@@ -424,9 +431,14 @@ const viewingModeValues = computed(() => {
'default',
'theatre',
'fullwindow',
'fullwindow_always_on',
...process.env.IS_ELECTRON
? ['fullscreen', 'pip']
? [
'fullscreen',
'fullscreen_always_on',
'pip',
]
: []
]
@@ -598,6 +610,27 @@ async function handleUpdateScreenshotFormat(format) {
getScreenshotFilenameExample(screenshotFilenamePattern.value)
}
const screenshotModeNames = computed(() => [
t('Settings.Player Settings.Screenshot.Modes.Ask Path'),
...process.env.IS_ELECTRON ? [t('Settings.Player Settings.Screenshot.Modes.Save To Folder')] : [],
t('Settings.Player Settings.Screenshot.Modes.Clipboard'),
])
const screenshotModeValues = computed(() => [
'prompt_folder',
...process.env.IS_ELECTRON ? ['default_folder'] : [],
'clipboard'
])
/** @type {import('vue').ComputedRef<'prompt_folder' | 'default_folder' | 'clipboard'>} */
const screenshotMode = computed(() => store.getters.getScreenshotMode)
/**
* @param {'prompt_folder' | 'default_folder' | 'clipboard'} mode
*/
async function handleUpdateScreenshotMode(mode) {
await store.dispatch('updateScreenshotMode', mode)
}
/** @type {import('vue').ComputedRef<number>} */
const screenshotQuality = computed(() => store.getters.getScreenshotQuality)
@@ -608,16 +641,6 @@ function updateScreenshotQuality(value) {
store.dispatch('updateScreenshotQuality', value)
}
/** @type {import('vue').ComputedRef<boolean>} */
const screenshotAskPath = computed(() => store.getters.getScreenshotAskPath)
/**
* @param {boolean} value
*/
function updateScreenshotAskPath(value) {
store.dispatch('updateScreenshotAskPath', value)
}
/** @type {import('vue').ComputedRef<string>} */
const screenshotFolder = computed(() => store.getters.getScreenshotFolderPath)
@@ -79,6 +79,10 @@
grid-template-columns: auto minmax(min-content, 1fr);
}
.channelShareWrapper > :only-child {
grid-column: 1 / -1;
}
.playlistOptions {
display: grid;
grid-auto-flow: column;
@@ -108,12 +108,14 @@
<div
class="channelShareWrapper"
>
<router-link
<component
:is="enableChannelLinks ? 'router-link' : 'div'"
v-if="!isUserPlaylist && channelId"
class="playlistChannel"
:to="`/channel/${channelId}`"
>
<img
v-if="channelThumbnail"
class="channelThumbnail"
:src="channelThumbnail"
alt=""
@@ -124,18 +126,7 @@
>
{{ channelName }}
</h3>
</router-link>
<div
v-else
class="playlistChannel"
>
<h3
class="channelName"
dir="auto"
>
{{ channelName }}
</h3>
</div>
</component>
<div class="playlistOptionsAndSearch">
<div class="playlistOptions">
@@ -269,7 +260,7 @@
<script setup>
import { computed, nextTick, onBeforeUnmount, onMounted, ref, useTemplateRef, watch } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import { useRouter } from 'vue-router'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
@@ -957,6 +948,8 @@ onMounted(() => {
onBeforeUnmount(() => {
document.removeEventListener('keydown', keyboardShortcutHandler)
})
const enableChannelLinks = computed(() => !store.getters.getDisableChannelLinks)
</script>
<style scoped lang="scss" src="./PlaylistInfo.scss" />
+1 -1
View File
@@ -110,7 +110,7 @@
<script setup>
import { computed, ref } from 'vue'
import { useI18n } from '../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtButton from './FtButton/FtButton.vue'
import FtFlexBox from './ft-flex-box/ft-flex-box.vue'
@@ -52,7 +52,9 @@
@keydown.enter="testProxy"
/>
</FtFlexBox>
<FtFlexBox>
<FtFlexBox
v-if="areCredentialsSupported"
>
<FtInput
:placeholder="$t('Settings.Proxy Settings.Proxy Username')"
:show-action-button="false"
@@ -112,7 +114,7 @@
<script setup>
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { computed, onBeforeUnmount, ref } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtSettingsSection from '../FtSettingsSection/FtSettingsSection.vue'
import FtToggleSwitch from '../FtToggleSwitch/FtToggleSwitch.vue'
@@ -202,6 +204,11 @@ const proxyTestUrl = computed(() => {
return proxyTestUrl
})
/** @type {import('vue').ComputedRef<boolean>} */
const areCredentialsSupported = computed(() => {
return proxyProtocol.value === 'http' || proxyProtocol.value === 'https'
})
/**
* @param {boolean} enabled
*/
+111 -102
View File
@@ -1,7 +1,7 @@
.sideNav {
display: block;
block-size: calc(100vh - 60px);
inline-size: 200px;
inline-size: 80px;
overflow-x: hidden;
position: sticky;
inset-inline-start: 0;
@@ -17,20 +17,8 @@
.inner {
block-size: 100%;
inline-size: 200px;
overflow: hidden auto;
}
.closed .inner {
inline-size: 80px;
}
.closed .hiddenLabels {
inline-size: 60px;
}
.closed.hiddenLabels {
inline-size: 60px;
overflow: hidden auto;
}
.topNavOption {
@@ -44,28 +32,25 @@
min-block-size: 35px;
}
.navOption {
-webkit-user-drag: none;
}
.moreOption {
display: none;
}
.navOption,
.navOption {
display: block;
color: inherit;
text-decoration: inherit;
padding-block: 5px;
padding-inline: 0;
-webkit-user-drag: none;
}
.channelLink {
display: block;
color: inherit;
text-decoration: inherit;
}
.navOption .navLabel {
margin-inline-start: 40px;
overflow: hidden;
overflow-wrap: break-word;
}
.navOption:hover,
.navChannel:hover {
background-color: var(--side-nav-hover-color);
@@ -82,18 +67,27 @@
.navIcon {
block-size: 1em;
inline-size: 1.25em;
margin-inline-start: 10px;
inline-size: 100%;
display: block;
}
.navIcon.fa-user-check {
/* This icon is too big by default */
inline-size: 1em;
/* Align icon according to torso */
transform: translateX(0.2em);
}
.navLabel {
text-align: center;
inset-inline-start: 0;
font-size: 11px;
margin-block-end: 0;
}
.navOption .navLabel {
overflow: hidden;
overflow-wrap: break-word;
}
.navChannel .navLabel {
overflow: hidden;
/* stylelint-disable-next-line liberty/use-logical-spec */
@@ -111,11 +105,15 @@
.thumbnailContainer {
inline-size: 35px;
display: block;
margin: 0;
position: absolute;
inset-block-start: 50%;
transform: translateY(-50%);
position: static;
text-align: center;
transform: none;
float: none;
margin-inline: auto;
inset-block-start: 0;
margin-block: 0.3em;
}
.channelThumbnail {
@@ -128,10 +126,6 @@
font-size: 35px;
}
.closed {
inline-size: 80px;
}
.sideNav hr {
inline-size: 90%;
block-size: 1px;
@@ -140,68 +134,89 @@
}
.refreshIcon {
display: none;
position: absolute;
inset-block-start: 20px;
inset-inline-end: 20px;
}
.closed .refreshIcon {
.hiddenLabels {
inline-size: 60px;
}
.hiddenLabels .navLabel {
display: none;
}
.closed .navOption {
inline-size: 100%;
padding-block: 5px;
padding-inline: 0;
}
.closed .navIcon {
margin-inline-start: 0;
inline-size: 100%;
display: block;
margin-block-end: 0;
}
.closed .navIconExpand {
.navIconExpand {
block-size: 1.3em;
}
.closed .navIconExpand.fa-user-check {
/* This icon is too big by default */
block-size: 1.15em;
}
.closed .navLabel {
margin-inline: 0;
inline-size: 100%;
text-align: center;
inset-inline-start: 0;
font-size: 11px;
margin-block-end: 0;
}
.closed .navChannel {
inline-size: 100%;
block-size: 45px;
padding-block: 5px;
padding-inline: 0;
}
.closed .thumbnailContainer {
position: static;
display: block;
float: none;
margin-inline: auto;
inset-block-start: 0;
transform: none;
margin-block: 0.3em;
}
@media only screen and (width > 680px) {
::-webkit-scrollbar {
inline-size: 10px;
block-size: 10px;
}
.opened {
inline-size: 200px;
}
.opened .inner {
inline-size: 200px;
}
.opened .refreshIcon {
display: block;
}
.opened .navIcon {
inline-size: 1.25em;
margin-inline-start: 10px;
}
.opened .navIcon.fa-user-check {
block-size: 1em;
}
.opened .navOption {
padding-inline: 5px;
}
.opened .navLabel {
text-align: start;
margin-inline-start: 40px;
margin-block-end: 16px;
font-size: 16px;
}
.opened .channelLink {
display: flex;
align-items: center;
}
.opened .navChannel .navLabel {
font-size: 12px;
flex-grow: 1;
margin: 0;
}
.opened .thumbnailContainer {
inset-block-start: 50%;
position: absolute;
transform: translateY(-50%);
margin-block: 0;
}
.opened .navChannel .thumbnailContainer {
position: static;
transform: none;
margin: 5px;
}
.opened.hiddenLabels .navLabel {
display: block;
}
}
@media only screen and (width <= 680px) {
@@ -216,19 +231,9 @@
}
.sideNav {
position: fixed;
inset-inline-start: 0;
inset-block-end: 0;
position: fixed;
display: flex;
}
.topNavOption {
margin-block-start: 0;
padding-inline: 10px;
}
.sideNav,
.closed {
margin-block-start: 0;
block-size: 60px;
inline-size: 100%;
@@ -236,12 +241,9 @@
overflow-y: hidden;
}
.navOption,
.closed .navOption {
inline-size: 70px;
block-size: 40px;
padding: 0;
padding-block: 10px;
.topNavOption {
margin-block-start: 0;
padding-inline: 10px;
}
.navLabel {
@@ -256,7 +258,14 @@
display: block;
}
.closed.hiddenLabels {
.navOption {
inline-size: 70px;
block-size: 40px;
padding: 0;
padding-block: 10px;
}
.hiddenLabels {
inline-size: 100%;
}
}
+2 -10
View File
@@ -1,7 +1,7 @@
<template>
<FtFlexBox
class="sideNav"
:class="[{closed: !isOpen}, applyHiddenLabels]"
:class="[{opened: isOpen}, applyHiddenLabels]"
role="navigation"
>
<div
@@ -24,7 +24,6 @@
/>
</div>
<p
v-if="!hideText"
class="navLabel"
>
{{ $t("Subscriptions.Subscriptions") }}
@@ -46,7 +45,6 @@
/>
</div>
<p
v-if="!hideText"
class="navLabel"
>
{{ $t("Channels.Channels") }}
@@ -69,7 +67,6 @@
/>
</div>
<p
v-if="!hideText"
class="navLabel"
>
{{ $t("Trending.Trending") }}
@@ -92,7 +89,6 @@
/>
</div>
<p
v-if="!hideText"
class="navLabel"
>
{{ $t("Most Popular") }}
@@ -115,7 +111,6 @@
/>
</div>
<p
v-if="!hideText"
class="navLabel"
>
{{ $t("Playlists") }}
@@ -138,7 +133,6 @@
/>
</div>
<p
v-if="!hideText"
class="navLabel"
>
{{ $t("History.History") }}
@@ -161,7 +155,6 @@
/>
</div>
<p
v-if="!hideText"
class="navLabel"
>
{{ $t('Settings.Settings') }}
@@ -183,7 +176,6 @@
/>
</div>
<p
v-if="!hideText"
class="navLabel"
>
{{ $t("About.About") }}
@@ -262,7 +254,7 @@
<script setup>
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { computed } from 'vue'
import { useI18n } from '../../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import FtFlexBox from '../ft-flex-box/ft-flex-box.vue'
import SideNavMoreOptions from '../SideNavMoreOptions/SideNavMoreOptions.vue'
+23 -11
View File
@@ -12,7 +12,7 @@
<script setup>
import { computed, onMounted, ref, shallowRef, watch } from 'vue'
import { useI18n } from '../composables/use-i18n-polyfill'
import { useI18n } from 'vue-i18n'
import SubscriptionsTabUi from './SubscriptionsTabUi/SubscriptionsTabUi.vue'
@@ -185,14 +185,7 @@ async function loadVideosForSubscriptionsFromRemote() {
let channelCount = 0
isLoading.value = true
let useRss = useRssFeeds.value
if (channelsToLoadFromRemote.length >= 125 && !useRss) {
showToast(
t('Subscriptions["This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting"]'),
10000
)
useRss = true
}
const useRss = useRssFeeds.value
store.commit('setShowProgressBar', true)
store.commit('setProgressBarPercentage', 0)
@@ -200,8 +193,9 @@ async function loadVideosForSubscriptionsFromRemote() {
errorChannels.value = []
const subscriptionUpdates = []
const videoListFromRemote = []
const videoListFromRemote = (await Promise.all(channelsToLoadFromRemote.map(async (channel) => {
const processChannel = async (channel) => {
let videos, name, thumbnailUrl
if (!process.env.SUPPORTS_LOCAL_API || backendPreference.value === 'invidious') {
@@ -238,7 +232,25 @@ async function loadVideosForSubscriptionsFromRemote() {
}
return videos ?? []
}))).flat()
}
if (useRss) {
const results = await Promise.all(channelsToLoadFromRemote.map(processChannel))
videoListFromRemote.push(...results.flat())
} else {
const CHUNK_SIZE = 80
const CHUNK_DELAY_MS = 2000
for (let i = 0; i < channelsToLoadFromRemote.length; i += CHUNK_SIZE) {
if (i > 0) {
await new Promise(resolve => setTimeout(resolve, CHUNK_DELAY_MS))
}
const chunk = channelsToLoadFromRemote.slice(i, i + CHUNK_SIZE)
const chunkResults = await Promise.all(chunk.map(processChannel))
videoListFromRemote.push(...chunkResults.flat())
}
}
videoList.value = updateVideoListAfterProcessing(videoListFromRemote)
isLoading.value = false

Some files were not shown because too many files have changed in this diff Show More